Merge "vndk-def: Merge SP-NDK into LL-NDK"
diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv
index 460bf5c..93c3ede 100644
--- a/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv
+++ b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv
@@ -80,12 +80,12 @@
 /system/${LIB}/hw/bluetooth.default.so,FWK-ONLY,
 /system/${LIB}/hw/keystore.default.so,FWK-ONLY,
 /system/${LIB}/ld-android.so,LL-NDK-Indirect,
-/system/${LIB}/libEGL.so,SP-NDK,
+/system/${LIB}/libEGL.so,LL-NDK,
 /system/${LIB}/libETC1.so,FWK-ONLY,
 /system/${LIB}/libFFTEm.so,FWK-ONLY,
-/system/${LIB}/libGLESv1_CM.so,SP-NDK,
-/system/${LIB}/libGLESv2.so,SP-NDK,
-/system/${LIB}/libGLESv3.so,SP-NDK,
+/system/${LIB}/libGLESv1_CM.so,LL-NDK,
+/system/${LIB}/libGLESv2.so,LL-NDK,
+/system/${LIB}/libGLESv3.so,LL-NDK,
 /system/${LIB}/libLLVM.so,FWK-ONLY,
 /system/${LIB}/libOpenMAXAL.so,FWK-ONLY,
 /system/${LIB}/libOpenSLES.so,FWK-ONLY,
@@ -248,7 +248,7 @@
 /system/${LIB}/libnativebridge.so,FWK-ONLY,
 /system/${LIB}/libnativehelper.so,FWK-ONLY,
 /system/${LIB}/libnativeloader.so,FWK-ONLY,
-/system/${LIB}/libnativewindow.so,SP-NDK,
+/system/${LIB}/libnativewindow.so,LL-NDK,
 /system/${LIB}/libnbaio.so,FWK-ONLY,"Vendor module should link libnbaio_mono.so"
 /system/${LIB}/libnetd_client.so,LL-NDK-Indirect,
 /system/${LIB}/libnetdaidl.so,FWK-ONLY,
@@ -333,7 +333,7 @@
 /system/${LIB}/libsurfaceflinger.so,FWK-ONLY,
 /system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY,
 /system/${LIB}/libsuspend.so,VNDK,
-/system/${LIB}/libsync.so,SP-NDK,
+/system/${LIB}/libsync.so,LL-NDK,
 /system/${LIB}/libsysutils.so,VNDK,
 /system/${LIB}/libtextclassifier.so,FWK-ONLY,
 /system/${LIB}/libtinyalsa.so,VNDK,
@@ -348,7 +348,7 @@
 /system/${LIB}/libvixl-arm64.so,VNDK,
 /system/${LIB}/libvndksupport.so,LL-NDK,
 /system/${LIB}/libvorbisidec.so,VNDK,
-/system/${LIB}/libvulkan.so,SP-NDK,
+/system/${LIB}/libvulkan.so,LL-NDK,
 /system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY,
 /system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY,
 /system/${LIB}/libwfds.so,FWK-ONLY,
diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv
index a7cf2f6..b1099b2 100644
--- a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv
+++ b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv
@@ -68,12 +68,12 @@
 /system/${LIB}/hw/bluetooth.default.so,FWK-ONLY,
 /system/${LIB}/hw/keystore.default.so,FWK-ONLY,
 /system/${LIB}/ld-android.so,LL-NDK-Indirect,
-/system/${LIB}/libEGL.so,SP-NDK,
+/system/${LIB}/libEGL.so,LL-NDK,
 /system/${LIB}/libETC1.so,FWK-ONLY,
 /system/${LIB}/libFFTEm.so,FWK-ONLY,
-/system/${LIB}/libGLESv1_CM.so,SP-NDK,
-/system/${LIB}/libGLESv2.so,SP-NDK,
-/system/${LIB}/libGLESv3.so,SP-NDK,
+/system/${LIB}/libGLESv1_CM.so,LL-NDK,
+/system/${LIB}/libGLESv2.so,LL-NDK,
+/system/${LIB}/libGLESv3.so,LL-NDK,
 /system/${LIB}/libLLVM.so,FWK-ONLY,
 /system/${LIB}/libOpenMAXAL.so,FWK-ONLY,
 /system/${LIB}/libOpenSLES.so,FWK-ONLY,
@@ -233,7 +233,7 @@
 /system/${LIB}/libnativebridge.so,FWK-ONLY,
 /system/${LIB}/libnativehelper.so,FWK-ONLY,
 /system/${LIB}/libnativeloader.so,FWK-ONLY,
-/system/${LIB}/libnativewindow.so,SP-NDK,
+/system/${LIB}/libnativewindow.so,LL-NDK,
 /system/${LIB}/libnbaio.so,VNDK,"Vendor modules should use libnbaio_mono.so (with less APIs) in the future"
 /system/${LIB}/libnetd_client.so,LL-NDK-Indirect,
 /system/${LIB}/libnetdaidl.so,FWK-ONLY,
@@ -317,7 +317,7 @@
 /system/${LIB}/libsurfaceflinger.so,FWK-ONLY,
 /system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY,
 /system/${LIB}/libsuspend.so,VNDK,
-/system/${LIB}/libsync.so,SP-NDK,
+/system/${LIB}/libsync.so,LL-NDK,
 /system/${LIB}/libsysutils.so,VNDK,
 /system/${LIB}/libtextclassifier.so,FWK-ONLY,
 /system/${LIB}/libtinyalsa.so,VNDK,
@@ -332,7 +332,7 @@
 /system/${LIB}/libvixl-arm64.so,VNDK,
 /system/${LIB}/libvndksupport.so,LL-NDK,
 /system/${LIB}/libvorbisidec.so,FWK-ONLY,
-/system/${LIB}/libvulkan.so,SP-NDK,
+/system/${LIB}/libvulkan.so,LL-NDK,
 /system/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,This will be moved to vendor partition
 /system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY,
 /system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY,
diff --git a/vndk/tools/definition-tool/datasets/minimum_tag_file.csv b/vndk/tools/definition-tool/datasets/minimum_tag_file.csv
index 2fa6ad8..a892fe0 100644
--- a/vndk/tools/definition-tool/datasets/minimum_tag_file.csv
+++ b/vndk/tools/definition-tool/datasets/minimum_tag_file.csv
@@ -1,8 +1,8 @@
 Path,Tag,Comments
-/system/${LIB}/libEGL.so,SP-NDK,
-/system/${LIB}/libGLESv1_CM.so,SP-NDK,
-/system/${LIB}/libGLESv2.so,SP-NDK,
-/system/${LIB}/libGLESv3.so,SP-NDK,
+/system/${LIB}/libEGL.so,LL-NDK,
+/system/${LIB}/libGLESv1_CM.so,LL-NDK,
+/system/${LIB}/libGLESv2.so,LL-NDK,
+/system/${LIB}/libGLESv3.so,LL-NDK,
 /system/${LIB}/libandroid_net.so,LL-NDK,
 /system/${LIB}/libc.so,LL-NDK,
 /system/${LIB}/libdl.so,LL-NDK,
@@ -10,11 +10,11 @@
 /system/${LIB}/liblog.so,LL-NDK,
 /system/${LIB}/libm.so,LL-NDK,
 /system/${LIB}/libmediandk.so,FWK-ONLY-RS,
-/system/${LIB}/libnativewindow.so,SP-NDK,
+/system/${LIB}/libnativewindow.so,LL-NDK,
 /system/${LIB}/libstdc++.so,LL-NDK,
-/system/${LIB}/libsync.so,SP-NDK,
+/system/${LIB}/libsync.so,LL-NDK,
 /system/${LIB}/libvndksupport.so,LL-NDK,
-/system/${LIB}/libvulkan.so,SP-NDK,
+/system/${LIB}/libvulkan.so,LL-NDK,
 /system/${LIB}/libz.so,LL-NDK,
 /system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
 /system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP,
diff --git a/vndk/tools/definition-tool/tests/test_elf_linker.py b/vndk/tools/definition-tool/tests/test_elf_linker.py
index cb7a249..01038a0 100755
--- a/vndk/tools/definition-tool/tests/test_elf_linker.py
+++ b/vndk/tools/definition-tool/tests/test_elf_linker.py
@@ -282,34 +282,33 @@
         # LL-NDK (should be excluded from result)
         gb.add_multilib(PT_SYSTEM, 'libc')
 
-        # SP-Both VNDK-SP
+        libEGL_32, libEGL_64 = \
+                gb.add_multilib(PT_SYSTEM, 'libEGL',
+                                dt_needed=['libc.so', 'libutils.so'])
+
+        # LL-NDK dependencies
+        gb.add_multilib(PT_SYSTEM, 'libutils',
+                        dt_needed=['libc.so', 'libcutils.so'])
+
+        # VNDK-SP used by both LL-NDK and SP-HAL
         gb.add_multilib(PT_SYSTEM, 'libsp_both_vs')
 
-        # SP-NDK VNDK-SP
+        # VNDK-SP used by LL-NDK
         gb.add_multilib(PT_SYSTEM, 'libcutils_dep', dt_needed=['libc.so'])
         gb.add_multilib(PT_SYSTEM, 'libcutils',
                         dt_needed=['libc.so', 'libcutils_dep.so',
                                    'libsp_both_vs.so'])
 
-        # SP-NDK dependencies
-        gb.add_multilib(PT_SYSTEM, 'libutils',
-                        dt_needed=['libc.so', 'libcutils.so'])
-
-        # SP-NDK
-        libEGL_32, libEGL_64 = \
-                gb.add_multilib(PT_SYSTEM, 'libEGL',
-                                dt_needed=['libc.so', 'libutils.so'])
+        # VNDK-SP used by SP-HAL
+        gb.add_multilib(PT_SYSTEM, 'libhidlbase')
+        gb.add_multilib(PT_SYSTEM, 'libhidlmemory',
+                        dt_needed=['libhidlbase.so', 'libsp_both_vs.so'])
 
         # SP-HAL dependencies
         gb.add_multilib(PT_VENDOR, 'libllvm_vendor_dep')
         gb.add_multilib(PT_VENDOR, 'libllvm_vendor',
                         dt_needed=['libc.so', 'libllvm_vendor_dep.so'])
 
-        # SP-HAL VNDK-SP
-        gb.add_multilib(PT_SYSTEM, 'libhidlbase')
-        gb.add_multilib(PT_SYSTEM, 'libhidlmemory',
-                        dt_needed=['libhidlbase.so', 'libsp_both_vs.so'])
-
         # SP-HAL
         libEGL_chipset_32, libEGL_chipset_64 = \
                 gb.add_multilib(PT_VENDOR, 'libEGL_chipset', extra_dir='egl',
@@ -334,34 +333,37 @@
         self.assertEqual(2 * 1, len(sp_lib.sp_hal))
         self.assertEqual(2 * 2, len(sp_lib.sp_hal_dep))
         self.assertEqual(2 * 2, len(sp_lib.vndk_sp_hal))
-        self.assertEqual(2 * 1, len(sp_lib.sp_ndk))
-        self.assertEqual(2 * 3, len(sp_lib.sp_ndk_indirect))
+        self.assertEqual(2 * 2, len(sp_lib.ll_ndk))
+        self.assertEqual(2 * 3, len(sp_lib.ll_ndk_indirect))
         self.assertEqual(2 * 1, len(sp_lib.vndk_sp_both))
 
         sp_hal = self._get_paths_from_nodes(sp_lib.sp_hal)
         sp_hal_dep = self._get_paths_from_nodes(sp_lib.sp_hal_dep)
         vndk_sp_hal = self._get_paths_from_nodes(sp_lib.vndk_sp_hal)
 
-        sp_ndk = self._get_paths_from_nodes(sp_lib.sp_ndk)
-        sp_ndk_indirect = self._get_paths_from_nodes(sp_lib.sp_ndk_indirect)
+        ll_ndk = self._get_paths_from_nodes(sp_lib.ll_ndk)
+        ll_ndk_indirect = self._get_paths_from_nodes(sp_lib.ll_ndk_indirect)
 
         vndk_sp_both = self._get_paths_from_nodes(sp_lib.vndk_sp_both)
 
         for lib_dir in ('lib', 'lib64'):
-            # SP-Both
+            # VNDK-SP used by both LL-NDK and SP-HAL
             self.assertIn('/system/{}/libsp_both_vs.so'.format(lib_dir),
                           vndk_sp_both)
 
-            # SP-NDK dependencies
+            # VNDK-SP used by LL-NDK
             self.assertIn('/system/{}/libcutils.so'.format(lib_dir),
-                          sp_ndk_indirect)
+                          ll_ndk_indirect)
             self.assertIn('/system/{}/libcutils_dep.so'.format(lib_dir),
-                          sp_ndk_indirect)
+                          ll_ndk_indirect)
             self.assertIn('/system/{}/libutils.so'.format(lib_dir),
-                          sp_ndk_indirect)
+                          ll_ndk_indirect)
 
-            # SP-NDK
-            self.assertIn('/system/{}/libEGL.so'.format(lib_dir), sp_ndk)
+            # VNDK-SP used by SP-HAL
+            self.assertIn('/system/{}/libhidlbase.so'.format(lib_dir),
+                          vndk_sp_hal)
+            self.assertIn('/system/{}/libhidlmemory.so'.format(lib_dir),
+                          vndk_sp_hal)
 
             # SP-HAL dependencies
             self.assertIn('/vendor/{}/libllvm_vendor.so'.format(lib_dir),
@@ -369,23 +371,20 @@
             self.assertIn('/vendor/{}/libllvm_vendor_dep.so'.format(lib_dir),
                           sp_hal_dep)
 
-            # SP-HAL VNDK-SP
-            self.assertIn('/system/{}/libhidlbase.so'.format(lib_dir),
-                          vndk_sp_hal)
-            self.assertIn('/system/{}/libhidlmemory.so'.format(lib_dir),
-                          vndk_sp_hal)
-
             # SP-HAL
             self.assertIn('/vendor/{}/egl/libEGL_chipset.so'.format(lib_dir),
                           sp_hal)
 
-            # LL-NDK must be excluded.
+            # LL-NDK
+            self.assertIn('/system/{}/libEGL.so'.format(lib_dir), ll_ndk)
+            self.assertIn('/system/{}/libc.so'.format(lib_dir), ll_ndk)
+
+            # LL-NDK must not in sp_hal, sp_hal_dep, and vndk_sp_hal.
             libc_path = '/system/{}/libc.so'.format(lib_dir)
             self.assertNotIn(libc_path, sp_hal)
             self.assertNotIn(libc_path, sp_hal_dep)
             self.assertNotIn(libc_path, vndk_sp_hal)
-            self.assertNotIn(libc_path, sp_ndk)
-            self.assertNotIn(libc_path, sp_ndk_indirect)
+            self.assertNotIn(libc_path, ll_ndk_indirect)
 
 
     def test_link_vndk_ver_dirs(self):
diff --git a/vndk/tools/definition-tool/tests/test_tagged_dict.py b/vndk/tools/definition-tool/tests/test_tagged_dict.py
index 59a7c00..58ec396 100755
--- a/vndk/tools/definition-tool/tests/test_tagged_dict.py
+++ b/vndk/tools/definition-tool/tests/test_tagged_dict.py
@@ -17,8 +17,6 @@
 _TEST_DATA = '''Path,Tag
 /system/lib/lib_ll_ndk.so,ll-ndk
 /system/lib/lib_ll_ndk_indirect.so,ll-ndk-indirect
-/system/lib/lib_sp_ndk.so,sp-ndk
-/system/lib/lib_sp_ndk_indirect.so,sp-ndk-indirect
 /system/lib/lib_vndk_sp.so,vndk-sp
 /system/lib/lib_vndk_sp_indirect.so,vndk-sp-indirect
 /system/lib/lib_vndk_sp_indirect_private.so,vndk-sp-indirect-private
@@ -66,39 +64,33 @@
         self._check_tag_visibility(d, 'll_ndk', visible_tags)
         self._check_tag_visibility(d, 'll_ndk_indirect', visible_tags)
 
-        # SP-NDK
-        visible_tags = {'ll_ndk', 'll_ndk_indirect',
-                        'sp_ndk', 'sp_ndk_indirect'}
-        self._check_tag_visibility(d, 'sp_ndk', visible_tags)
-        self._check_tag_visibility(d, 'sp_ndk_indirect', visible_tags)
-
         # VNDK-SP
-        visible_tags = {'ll_ndk', 'sp_ndk', 'vndk_sp', 'vndk_sp_indirect',
+        visible_tags = {'ll_ndk', 'vndk_sp', 'vndk_sp_indirect',
                         'vndk_sp_indirect_private', 'fwk_only_rs'}
         self._check_tag_visibility(d, 'vndk_sp', visible_tags)
         self._check_tag_visibility(d, 'vndk_sp_indirect', visible_tags)
         self._check_tag_visibility(d, 'vndk_sp_indirect_private', visible_tags)
 
         # VNDK
-        visible_tags = {'ll_ndk', 'sp_ndk', 'vndk_sp', 'vndk_sp_indirect',
+        visible_tags = {'ll_ndk', 'vndk_sp', 'vndk_sp_indirect',
                         'vndk'}
         self._check_tag_visibility(d, 'vndk', visible_tags)
 
         # FWK-ONLY
-        visible_tags = {'ll_ndk', 'll_ndk_indirect', 'sp_ndk',
-                        'sp_ndk_indirect', 'vndk_sp', 'vndk_sp_indirect',
+        visible_tags = {'ll_ndk', 'll_ndk_indirect',
+                        'vndk_sp', 'vndk_sp_indirect',
                         'vndk_sp_indirect_private', 'vndk', 'fwk_only',
                         'fwk_only_rs', 'sp_hal'}
         self._check_tag_visibility(d, 'fwk_only', visible_tags)
         self._check_tag_visibility(d, 'fwk_only_rs', visible_tags)
 
         # SP-HAL
-        visible_tags = {'ll_ndk', 'sp_ndk', 'vndk_sp', 'sp_hal', 'sp_hal_dep'}
+        visible_tags = {'ll_ndk', 'vndk_sp', 'sp_hal', 'sp_hal_dep'}
         self._check_tag_visibility(d, 'sp_hal', visible_tags)
         self._check_tag_visibility(d, 'sp_hal_dep', visible_tags)
 
         # VND-ONLY
-        visible_tags = {'ll_ndk', 'sp_ndk', 'vndk_sp', 'vndk_sp_indirect',
+        visible_tags = {'ll_ndk', 'vndk_sp', 'vndk_sp_indirect',
                         'vndk', 'sp_hal', 'sp_hal_dep', 'vnd_only'}
         self._check_tag_visibility(d, 'vnd_only', visible_tags)
 
@@ -173,8 +165,6 @@
         # Paths
         self.assertIn('/system/lib/lib_ll_ndk.so', d.ll_ndk)
         self.assertIn('/system/lib/lib_ll_ndk_indirect.so', d.ll_ndk_indirect)
-        self.assertIn('/system/lib/lib_sp_ndk.so', d.sp_ndk)
-        self.assertIn('/system/lib/lib_sp_ndk_indirect.so', d.sp_ndk_indirect)
         self.assertIn('/system/lib/lib_vndk_sp.so', d.vndk_sp)
         self.assertIn('/system/lib/lib_vndk_sp_indirect.so', d.vndk_sp_indirect)
         self.assertIn('/system/lib/lib_vndk_sp_indirect_private.so',
@@ -223,9 +213,6 @@
         self.assertEqual('ll_ndk', d.get_path_tag('/system/lib/lib_ll_ndk.so'))
         self.assertEqual('ll_ndk_indirect',
                          d.get_path_tag('/system/lib/lib_ll_ndk_indirect.so'))
-        self.assertEqual('sp_ndk', d.get_path_tag('/system/lib/lib_sp_ndk.so'))
-        self.assertEqual('sp_ndk_indirect',
-                         d.get_path_tag('/system/lib/lib_sp_ndk_indirect.so'))
         self.assertEqual('vndk_sp',
                          d.get_path_tag('/system/lib/lib_vndk_sp.so'))
         self.assertEqual('vndk_sp_indirect',
@@ -292,19 +279,6 @@
         }
         self._check_path_visibility(d, all_paths, from_paths, visible_paths)
 
-        # SP-NDK
-        from_paths = {
-            '/system/lib/lib_sp_ndk.so',
-            '/system/lib/lib_sp_ndk_indirect.so',
-        }
-        visible_paths = {
-            '/system/lib/lib_ll_ndk.so',
-            '/system/lib/lib_ll_ndk_indirect.so',
-            '/system/lib/lib_sp_ndk.so',
-            '/system/lib/lib_sp_ndk_indirect.so',
-        }
-        self._check_path_visibility(d, all_paths, from_paths, visible_paths)
-
         # VNDK-SP
         from_paths = {
             '/system/lib/lib_vndk_sp.so',
@@ -313,7 +287,6 @@
         }
         visible_paths = {
             '/system/lib/lib_ll_ndk.so',
-            '/system/lib/lib_sp_ndk.so',
             '/system/lib/lib_vndk_sp.so',
             '/system/lib/lib_vndk_sp_indirect.so',
             '/system/lib/lib_vndk_sp_indirect_private.so',
@@ -327,7 +300,6 @@
         }
         visible_paths = {
             '/system/lib/lib_ll_ndk.so',
-            '/system/lib/lib_sp_ndk.so',
             '/system/lib/lib_vndk_sp.so',
             '/system/lib/lib_vndk_sp_indirect.so',
             '/system/lib/lib_vndk.so',
@@ -342,8 +314,6 @@
         visible_paths = {
             '/system/lib/lib_ll_ndk.so',
             '/system/lib/lib_ll_ndk_indirect.so',
-            '/system/lib/lib_sp_ndk.so',
-            '/system/lib/lib_sp_ndk_indirect.so',
             '/system/lib/lib_vndk_sp.so',
             '/system/lib/lib_vndk_sp_indirect.so',
             '/system/lib/lib_vndk_sp_indirect_private.so',
@@ -361,7 +331,6 @@
         }
         visible_paths = {
             '/system/lib/lib_ll_ndk.so',
-            '/system/lib/lib_sp_ndk.so',
             '/system/lib/lib_vndk_sp.so',
             '/vendor/lib/lib_sp_hal.so',
             '/vendor/lib/lib_sp_hal_dep.so',
@@ -374,7 +343,6 @@
         }
         visible_paths = {
             '/system/lib/lib_ll_ndk.so',
-            '/system/lib/lib_sp_ndk.so',
             '/system/lib/lib_vndk_sp.so',
             '/system/lib/lib_vndk_sp_indirect.so',
             '/system/lib/lib_vndk.so',
@@ -423,10 +391,6 @@
         self.lib_ll_ndk_indirect = \
                 self.graph.add('/system/lib/lib_ll_ndk_indirect.so')
 
-        self.lib_sp_ndk = self.graph.add('/system/lib/lib_sp_ndk.so')
-        self.lib_sp_ndk_indirect = \
-                self.graph.add('/system/lib/lib_sp_ndk_indirect.so')
-
         self.lib_vndk_sp = self.graph.add('/system/lib/lib_vndk_sp.so')
         self.lib_vndk_sp_indirect = \
                 self.graph.add('/system/lib/lib_vndk_sp_indirect.so')
@@ -451,10 +415,6 @@
         self.assertIn(self.lib_ll_ndk, self.tagged_libs.ll_ndk)
         self.assertIn(self.lib_ll_ndk_indirect,
                       self.tagged_libs.ll_ndk_indirect)
-        self.assertIn(self.lib_sp_ndk, self.tagged_libs.sp_ndk)
-        self.assertIn(self.lib_sp_ndk_indirect,
-                      self.tagged_libs.sp_ndk_indirect)
-
         self.assertIn(self.lib_vndk_sp, self.tagged_libs.vndk_sp)
         self.assertIn(self.lib_vndk_sp_indirect,
                       self.tagged_libs.vndk_sp_indirect)
@@ -477,9 +437,6 @@
         self.assertEqual('ll_ndk', d.get_path_tag(self.lib_ll_ndk))
         self.assertEqual('ll_ndk_indirect',
                          d.get_path_tag(self.lib_ll_ndk_indirect))
-        self.assertEqual('sp_ndk', d.get_path_tag(self.lib_sp_ndk))
-        self.assertEqual('sp_ndk_indirect',
-                         d.get_path_tag(self.lib_sp_ndk_indirect))
         self.assertEqual('vndk_sp', d.get_path_tag(self.lib_vndk_sp))
         self.assertEqual('vndk_sp_indirect',
                          d.get_path_tag(self.lib_vndk_sp_indirect))
diff --git a/vndk/tools/definition-tool/tests/test_vndk.py b/vndk/tools/definition-tool/tests/test_vndk.py
index 7f62ab8..196a15b 100755
--- a/vndk/tools/definition-tool/tests/test_vndk.py
+++ b/vndk/tools/definition-tool/tests/test_vndk.py
@@ -115,8 +115,8 @@
         self.assertNotIn(libvnd_bad, vndk_sets.vndk_sp)
 
 
-    def test_sp_ndk_indirect_without_sp_hal(self):
-        """Check the computation of sp_ndk_indirect excludes sp_hal."""
+    def test_ll_ndk_indirect_without_sp_hal(self):
+        """Check the computation of ll_ndk_indirect excludes sp_hal."""
 
         gb = GraphBuilder()
         libEGL = gb.add_lib32(PT_SYSTEM, 'libEGL',
@@ -131,11 +131,11 @@
 
         vndk_sets = gb.graph.compute_degenerated_vndk(None)
 
-        self.assertIn(libEGL, vndk_sets.sp_ndk)
-        self.assertIn(libEGL_dep, vndk_sets.sp_ndk_indirect)
+        self.assertIn(libEGL, vndk_sets.ll_ndk)
+        self.assertIn(libEGL_dep, vndk_sets.ll_ndk_indirect)
         self.assertIn(libEGL_chipset, vndk_sets.sp_hal)
 
-        self.assertNotIn(libEGL_chipset, vndk_sets.sp_ndk_indirect)
+        self.assertNotIn(libEGL_chipset, vndk_sets.ll_ndk_indirect)
 
 
 if __name__ == '__main__':
diff --git a/vndk/tools/definition-tool/tools/update_dataset.py b/vndk/tools/definition-tool/tools/update_dataset.py
index a764655..82e107a 100755
--- a/vndk/tools/definition-tool/tools/update_dataset.py
+++ b/vndk/tools/definition-tool/tools/update_dataset.py
@@ -148,19 +148,6 @@
         update_tag(prefix_core + name, 'VNDK')
         update_tag(prefix_vendor + name, 'VNDK')
 
-    # Workaround for SP-NDK
-    libs = [
-        'libEGL',
-        'libGLESv1_CM',
-        'libGLESv2',
-        'libGLESv3',
-        'libnativewindow',
-        'libsync',
-        'libvulkan',
-    ]
-    for name in libs:
-        update_tag('/system/${LIB}/' + name + '.so', 'SP-NDK')
-
     # Workaround for FWK-ONLY-RS
     libs = [
         'libft2',
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py
index 1702956..12d9324 100755
--- a/vndk/tools/definition-tool/vndk_definition_tool.py
+++ b/vndk/tools/definition-tool/vndk_definition_tool.py
@@ -906,7 +906,7 @@
 class TaggedDict(object):
     def _define_tag_constants(local_ns):
         tag_list = [
-            'll_ndk', 'll_ndk_indirect', 'sp_ndk', 'sp_ndk_indirect',
+            'll_ndk', 'll_ndk_indirect',
             'vndk_sp', 'vndk_sp_indirect', 'vndk_sp_indirect_private',
             'vndk',
             'fwk_only', 'fwk_only_rs',
@@ -926,10 +926,10 @@
     _define_tag_constants(locals())
     del _define_tag_constants
 
-    NDK = LL_NDK | SP_NDK
-
     _TAG_ALIASES = {
         'hl_ndk': 'fwk_only',  # Treat HL-NDK as FWK-ONLY.
+        'sp_ndk': 'll_ndk',
+        'sp_ndk_indirect': 'll_ndk_indirect',
         'vndk_indirect': 'vndk',  # Legacy
         'vndk_sp_hal': 'vndk_sp',  # Legacy
         'vndk_sp_both': 'vndk_sp',  # Legacy
@@ -944,25 +944,22 @@
         return tag
 
     _LL_NDK_VIS = {'ll_ndk', 'll_ndk_indirect'}
-    _SP_NDK_VIS = {'ll_ndk', 'll_ndk_indirect', 'sp_ndk', 'sp_ndk_indirect'}
-    _VNDK_SP_VIS = {'ll_ndk', 'sp_ndk', 'vndk_sp', 'vndk_sp_indirect',
+    _VNDK_SP_VIS = {'ll_ndk', 'vndk_sp', 'vndk_sp_indirect',
                     'vndk_sp_indirect_private', 'fwk_only_rs'}
-    _FWK_ONLY_VIS = {'ll_ndk', 'll_ndk_indirect', 'sp_ndk', 'sp_ndk_indirect',
+    _FWK_ONLY_VIS = {'ll_ndk', 'll_ndk_indirect',
                      'vndk_sp', 'vndk_sp_indirect', 'vndk_sp_indirect_private',
                      'vndk', 'fwk_only', 'fwk_only_rs', 'sp_hal'}
-    _SP_HAL_VIS = {'ll_ndk', 'sp_ndk', 'vndk_sp', 'sp_hal', 'sp_hal_dep'}
+    _SP_HAL_VIS = {'ll_ndk', 'vndk_sp', 'sp_hal', 'sp_hal_dep'}
 
     _TAG_VISIBILITY = {
         'll_ndk': _LL_NDK_VIS,
         'll_ndk_indirect': _LL_NDK_VIS,
-        'sp_ndk': _SP_NDK_VIS,
-        'sp_ndk_indirect': _SP_NDK_VIS,
 
         'vndk_sp': _VNDK_SP_VIS,
         'vndk_sp_indirect': _VNDK_SP_VIS,
         'vndk_sp_indirect_private': _VNDK_SP_VIS,
 
-        'vndk': {'ll_ndk', 'sp_ndk', 'vndk_sp', 'vndk_sp_indirect', 'vndk'},
+        'vndk': {'ll_ndk', 'vndk_sp', 'vndk_sp_indirect', 'vndk'},
 
         'fwk_only': _FWK_ONLY_VIS,
         'fwk_only_rs': _FWK_ONLY_VIS,
@@ -970,13 +967,13 @@
         'sp_hal': _SP_HAL_VIS,
         'sp_hal_dep': _SP_HAL_VIS,
 
-        'vnd_only': {'ll_ndk', 'sp_ndk', 'vndk_sp', 'vndk_sp_indirect',
+        'vnd_only': {'ll_ndk', 'vndk_sp', 'vndk_sp_indirect',
                      'vndk', 'sp_hal', 'sp_hal_dep', 'vnd_only'},
 
         'remove': set(),
     }
 
-    del _LL_NDK_VIS, _SP_NDK_VIS, _VNDK_SP_VIS, _FWK_ONLY_VIS, _SP_HAL_VIS
+    del _LL_NDK_VIS, _VNDK_SP_VIS, _FWK_ONLY_VIS, _SP_HAL_VIS
 
     @classmethod
     def is_tag_visible(cls, from_tag, to_tag):
@@ -1025,18 +1022,10 @@
                                    self.get_path_tag(to_lib))
 
     @staticmethod
-    def is_ndk(tag_bit):
-        return bool(tag_bit & TaggedDict.NDK)
-
-    @staticmethod
     def is_ll_ndk(tag_bit):
         return bool(tag_bit & TaggedDict.LL_NDK)
 
     @staticmethod
-    def is_sp_ndk(tag_bit):
-        return bool(tag_bit & TaggedDict.SP_NDK)
-
-    @staticmethod
     def is_vndk_sp(tag_bit):
         return bool(tag_bit & TaggedDict.VNDK_SP)
 
@@ -1198,7 +1187,7 @@
 
 SPLibResult = collections.namedtuple(
         'SPLibResult',
-        'sp_hal sp_hal_dep vndk_sp_hal sp_ndk sp_ndk_indirect '
+        'sp_hal sp_hal_dep vndk_sp_hal ll_ndk ll_ndk_indirect '
         'vndk_sp_both')
 
 
@@ -1483,18 +1472,10 @@
         self.linked_symbols = dict()
 
     @property
-    def is_ndk(self):
-        return TaggedDict.is_ndk(self._tag_bit)
-
-    @property
     def is_ll_ndk(self):
         return TaggedDict.is_ll_ndk(self._tag_bit)
 
     @property
-    def is_sp_ndk(self):
-        return TaggedDict.is_sp_ndk(self._tag_bit)
-
-    @property
     def is_vndk_sp(self):
         return TaggedDict.is_vndk_sp(self._tag_bit)
 
@@ -1614,7 +1595,7 @@
     return libs
 
 _VNDK_RESULT_FIELD_NAMES = (
-        'll_ndk', 'll_ndk_indirect', 'sp_ndk', 'sp_ndk_indirect',
+        'll_ndk', 'll_ndk_indirect',
         'vndk_sp', 'vndk_sp_unused', 'vndk_sp_indirect',
         'vndk_sp_indirect_unused', 'vndk_sp_indirect_private', 'vndk',
         'vndk_indirect', 'fwk_only', 'fwk_only_rs', 'sp_hal', 'sp_hal_dep',
@@ -1947,28 +1928,25 @@
         """Find all same-process HALs."""
         return set(lib for lib in self.all_libs() if lib.is_sp_hal)
 
-    def compute_sp_ndk(self):
-        """Find all SP-NDK libraries."""
-        return set(lib for lib in self.all_libs() if lib.is_sp_ndk)
 
     def compute_sp_lib(self, generic_refs, ignore_hidden_deps=False):
-        def is_ndk_or_sp_hal(lib):
-            return lib.is_ndk or lib.is_sp_hal
+        def is_ll_ndk_or_sp_hal(lib):
+            return lib.is_ll_ndk or lib.is_sp_hal
 
-        sp_ndk = self.compute_sp_ndk()
-        sp_ndk_closure = self.compute_deps_closure(
-                sp_ndk, is_ndk_or_sp_hal, ignore_hidden_deps)
-        sp_ndk_indirect = sp_ndk_closure - sp_ndk
+        ll_ndk = set(lib for lib in self.all_libs() if lib.is_ll_ndk)
+        ll_ndk_closure = self.compute_deps_closure(
+                ll_ndk, is_ll_ndk_or_sp_hal, ignore_hidden_deps)
+        ll_ndk_indirect = ll_ndk_closure - ll_ndk
 
-        def is_ndk(lib):
-            return lib.is_ndk
+        def is_ll_ndk(lib):
+            return lib.is_ll_ndk
 
         sp_hal = self.compute_predefined_sp_hal()
         sp_hal_closure = self.compute_deps_closure(
-                sp_hal, is_ndk, ignore_hidden_deps)
+                sp_hal, is_ll_ndk, ignore_hidden_deps)
 
         def is_aosp_lib(lib):
-            return (not generic_refs or \
+            return (not generic_refs or
                     generic_refs.classify_lib(lib) != GenericRefs.NEW_LIB)
 
         vndk_sp_hal = set()
@@ -1979,12 +1957,12 @@
             else:
                 sp_hal_dep.add(lib)
 
-        vndk_sp_both = sp_ndk_indirect & vndk_sp_hal
-        sp_ndk_indirect -= vndk_sp_both
+        vndk_sp_both = ll_ndk_indirect & vndk_sp_hal
+        ll_ndk_indirect -= vndk_sp_both
         vndk_sp_hal -= vndk_sp_both
 
-        return SPLibResult(sp_hal, sp_hal_dep, vndk_sp_hal, sp_ndk,
-                           sp_ndk_indirect, vndk_sp_both)
+        return SPLibResult(sp_hal, sp_hal_dep, vndk_sp_hal, ll_ndk,
+                           ll_ndk_indirect, vndk_sp_both)
 
     def normalize_partition_tags(self, sp_hals, generic_refs):
         def is_system_lib_or_sp_hal(lib):
@@ -2029,9 +2007,8 @@
     def compute_degenerated_vndk(self, generic_refs, tagged_paths=None,
                                  action_ineligible_vndk_sp='warn',
                                  action_ineligible_vndk='warn'):
-        # Find LL-NDK and SP-NDK libs.
+        # Find LL-NDK libs.
         ll_ndk = set(lib for lib in self.all_libs() if lib.is_ll_ndk)
-        sp_ndk = set(lib for lib in self.all_libs() if lib.is_sp_ndk)
 
         # Find pre-defined libs.
         fwk_only_rs = set(lib for lib in self.all_libs() if lib.is_fwk_only_rs)
@@ -2063,7 +2040,7 @@
             return generic_refs.has_same_name_lib(lib)
 
         def is_not_sp_hal_dep(lib):
-            if lib.is_ll_ndk or lib.is_sp_ndk or lib in sp_hal:
+            if lib.is_ll_ndk or lib in sp_hal:
                 return True
             return is_aosp_lib(lib)
 
@@ -2072,8 +2049,7 @@
 
         # Find VNDK-SP libs.
         def is_not_vndk_sp(lib):
-            return lib.is_ll_ndk or lib.is_sp_ndk or lib in sp_hal or \
-                   lib in sp_hal_dep
+            return lib.is_ll_ndk or lib in sp_hal or lib in sp_hal_dep
 
         follow_ineligible_vndk_sp, warn_ineligible_vndk_sp = \
                 self._parse_action_on_ineligible_lib(action_ineligible_vndk_sp)
@@ -2094,8 +2070,7 @@
 
         # Find VNDK-SP-Indirect libs.
         def is_not_vndk_sp_indirect(lib):
-            return lib.is_ll_ndk or lib.is_sp_ndk or lib in vndk_sp or \
-                   lib in fwk_only_rs
+            return lib.is_ll_ndk or lib in vndk_sp or lib in fwk_only_rs
 
         vndk_sp_indirect = self.compute_deps_closure(
                 vndk_sp, is_not_vndk_sp_indirect, True)
@@ -2195,8 +2170,7 @@
             return result
 
         def is_not_vndk_sp_indirect(lib):
-            return lib.is_ll_ndk or lib.is_sp_ndk or lib in vndk_sp or \
-                   lib in fwk_only_rs
+            return lib.is_ll_ndk or lib in vndk_sp or lib in fwk_only_rs
 
         candidates = collect_vndk_sp_indirect_ext(vndk_sp_ext)
         while candidates:
@@ -2206,8 +2180,7 @@
         # Find VNDK libs (a.k.a. system shared libs directly used by vendor
         # partition.)
         def is_not_vndk(lib):
-            if lib.is_ll_ndk or lib.is_sp_ndk or is_vndk_sp_public(lib) or \
-               lib in fwk_only_rs:
+            if lib.is_ll_ndk or is_vndk_sp_public(lib) or lib in fwk_only_rs:
                 return True
             return lib.partition != PT_SYSTEM
 
@@ -2278,28 +2251,19 @@
             vndk_ext |= candidates
             candidates = collect_vndk_ext(candidates)
 
-        # Compute LL-NDK-Indirect and SP-NDK-Indirect.
+        # Compute LL-NDK-Indirect.
         def is_not_ll_ndk_indirect(lib):
-            return lib.is_ll_ndk or is_vndk_sp(lib) or is_vndk(lib)
+            return lib.is_ll_ndk or lib.is_sp_hal or is_vndk_sp(lib) or \
+                   is_vndk_sp(lib) or is_vndk(lib)
 
         ll_ndk_indirect = self.compute_deps_closure(
                 ll_ndk, is_not_ll_ndk_indirect, True)
         ll_ndk_indirect -= ll_ndk
 
-        def is_not_sp_ndk_indirect(lib):
-            return lib.is_ll_ndk or lib.is_sp_ndk or lib.is_sp_hal or \
-                   lib in ll_ndk_indirect or is_vndk_sp(lib) or is_vndk(lib)
-
-        sp_ndk_indirect = self.compute_deps_closure(
-                sp_ndk, is_not_sp_ndk_indirect, True)
-        sp_ndk_indirect -= sp_ndk
-
         # Return the VNDK classifications.
         return VNDKResult(
                 ll_ndk=ll_ndk,
                 ll_ndk_indirect=ll_ndk_indirect,
-                sp_ndk=sp_ndk,
-                sp_ndk_indirect=sp_ndk_indirect,
                 vndk_sp=vndk_sp,
                 vndk_sp_indirect=vndk_sp_indirect,
                 # vndk_sp_indirect_private=vndk_sp_indirect_private,
@@ -3004,7 +2968,7 @@
         parser.add_argument('--module-info')
 
     def main(self, args):
-        generic_refs, graph, tagged_paths, vndk_lib_dirs  = \
+        generic_refs, graph, tagged_paths, vndk_lib_dirs = \
                 self.create_from_args(args)
 
         module_info = ModuleInfo.load_from_path_or_default(args.module_info)
@@ -3100,7 +3064,7 @@
         # Define the exclusion filter.
         if args.exclude_ndk:
             def is_excluded_libs(lib):
-                return lib.is_ndk or lib in excluded_libs
+                return lib.is_ll_ndk or lib in excluded_libs
         else:
             def is_excluded_libs(lib):
                 return lib in excluded_libs
@@ -3217,7 +3181,7 @@
                     print('\t' + path)
 
     def main(self, args):
-        generic_refs, graph, tagged_paths, vndk_lib_dirs  = \
+        generic_refs, graph, tagged_paths, vndk_lib_dirs = \
                 self.create_from_args(args)
 
         libnames = self.build_lib_names_dict(graph)
@@ -3257,9 +3221,8 @@
 
         vendor_libs = set(graph.lib_pt[PT_VENDOR].values())
 
-        eligible_libs = (tagged_libs.ll_ndk | tagged_libs.sp_ndk | \
-                         tagged_libs.vndk_sp | tagged_libs.vndk_sp_indirect | \
-                         tagged_libs.vndk)
+        eligible_libs = (tagged_libs.ll_ndk | tagged_libs.vndk_sp |
+                         tagged_libs.vndk_sp_indirect | tagged_libs.vndk)
 
         delimiter = ''
         for lib in sorted(vendor_libs):
@@ -3267,7 +3230,7 @@
 
             # Check whether vendor modules depend on extended NDK symbols.
             for dep, symbols in lib.imported_ext_symbols.items():
-                if dep.is_ndk:
+                if dep.is_ll_ndk:
                     num_errors += 1
                     bad_deps.add(dep)
                     for symbol in symbols:
@@ -3316,14 +3279,12 @@
         """Check whether eligible sets are self-contained."""
         num_errors = 0
 
-        indirect_libs = (tagged_libs.ll_ndk_indirect | \
-                         tagged_libs.sp_ndk_indirect | \
-                         tagged_libs.vndk_sp_indirect_private | \
+        indirect_libs = (tagged_libs.ll_ndk_indirect |
+                         tagged_libs.vndk_sp_indirect_private |
                          tagged_libs.fwk_only_rs)
 
-        eligible_libs = (tagged_libs.ll_ndk | tagged_libs.sp_ndk | \
-                         tagged_libs.vndk_sp | tagged_libs.vndk_sp_indirect | \
-                         tagged_libs.vndk)
+        eligible_libs = (tagged_libs.ll_ndk | tagged_libs.vndk_sp |
+                         tagged_libs.vndk_sp_indirect | tagged_libs.vndk)
 
         # Check eligible vndk is self-contained.
         delimiter = ''