vndk: add vendor/lib or product/lib to search_path
"vndk" namespace have vendor/lib/vndk first in search paths so that VNDK
extension libraries have higher proiorty than normal VNDK libs.
However, VNDK extensions are allowed to use vendor libraries
(/vendor/lib). This was enabled by linking "sphal" namespace.
It was a bit weird because sphal namespace links vndk and vndk links
sphal again.
Moreover, "vndk_product" namespace can't link to /product/lib. We could
have "product" namespace and link it from vndk_product.
But instead, we add /vendor/lib to the search paths of "vndk" namespace
and /product/lib to "vndk_product" namespace so that VNDK extensions use
libs from there.
Now we don't need to link sphal from vndk.
Bug: 162462078
Test: HelloActivityProduct loads libjni_product successfully.
Merged-In: I6c5d47239dae427194345e03522a726997389167
Change-Id: I6c5d47239dae427194345e03522a726997389167
(cherry picked from commit 87122ca998fdc6f6d404fbe0539221eb9d242ca2)
diff --git a/contents/namespace/vndk.cc b/contents/namespace/vndk.cc
index 8c11678..12981ea 100644
--- a/contents/namespace/vndk.cc
+++ b/contents/namespace/vndk.cc
@@ -53,20 +53,28 @@
std::vector<std::string> vndk_paths;
std::string vndk_version;
if (vndk_user == VndkUserPartition::Product) {
- lib_paths = {"/product/${LIB}/"};
+ lib_paths = {Var("PRODUCT") + "/${LIB}"};
vndk_version = Var("PRODUCT_VNDK_VERSION");
} else {
// default for vendor
- lib_paths = {"/odm/${LIB}/", "/vendor/${LIB}/"};
+ lib_paths = {"/odm/${LIB}", "/vendor/${LIB}"};
vndk_version = Var("VENDOR_VNDK_VERSION");
}
+ // Search order:
+ // 1. VNDK Extensions
+ // 2. VNDK APEX
+ // 3. vendor/lib or product/lib to allow extensions to use them
+
+ // 1. VNDK Extensions
for (const auto& lib_path : lib_paths) {
- ns.AddSearchPath(lib_path + "vndk-sp");
+ ns.AddSearchPath(lib_path + "/vndk-sp");
if (!is_system_or_unrestricted_section) {
- ns.AddSearchPath(lib_path + "vndk");
+ ns.AddSearchPath(lib_path + "/vndk");
}
}
+
+ // 2. VNDK APEX
ns.AddSearchPath("/apex/com.android.vndk.v" + vndk_version + "/${LIB}");
if (is_system_or_unrestricted_section &&
@@ -84,6 +92,11 @@
Var("VENDOR_VNDK_VERSION") + "/${LIB}/hw");
}
+ // 3. vendor/lib or product/lib
+ for (const auto& lib_path : lib_paths) {
+ ns.AddSearchPath(lib_path);
+ }
+
// For the non-system section, the links should be identical to that of the
// 'vndk_in_system' namespace, except the links to 'default' and 'vndk_in_system'.
if (vndk_user == VndkUserPartition::Product) {
@@ -94,17 +107,7 @@
.AddSharedLib({Var("LLNDK_LIBRARIES_VENDOR")});
}
- if (is_system_or_unrestricted_section) {
- if (vndk_user == VndkUserPartition::Vendor) {
- // The "vndk" namespace links to the system namespace for LLNDK libs above
- // and links to "sphal" namespace for vendor libs. The ordering matters;
- // the system namespace has higher priority than the "sphal" namespace.
- ns.GetLink("sphal").AllowAllSharedLibs();
- }
- } else {
- // [vendor] or [product] section
- ns.GetLink("default").AllowAllSharedLibs();
-
+ if (ctx.IsProductSection() || ctx.IsVendorSection()) {
if (android::linkerconfig::modules::IsVndkInSystemNamespace()) {
ns.GetLink("vndk_in_system")
.AddSharedLib(Var("VNDK_USING_CORE_VARIANT_LIBRARIES"));
diff --git a/testdata/golden_output/product-enabled/com.android.media.swcodec/ld.config.txt b/testdata/golden_output/product-enabled/com.android.media.swcodec/ld.config.txt
index 41b4378..b59b46e 100644
--- a/testdata/golden_output/product-enabled/com.android.media.swcodec/ld.config.txt
+++ b/testdata/golden_output/product-enabled/com.android.media.swcodec/ld.config.txt
@@ -182,6 +182,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -194,6 +196,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -207,12 +213,11 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = system,sphal,com_android_neuralnetworks
+namespace.vndk.links = system,com_android_neuralnetworks
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.system.shared_libs += libc.so
namespace.vndk.link.system.shared_libs += libdl.so
namespace.vndk.link.system.shared_libs += libdl_android.so
namespace.vndk.link.system.shared_libs += libm.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
diff --git a/testdata/golden_output/product-enabled/com.vendor.service1/ld.config.txt b/testdata/golden_output/product-enabled/com.vendor.service1/ld.config.txt
index f909a5b..a19cedc 100644
--- a/testdata/golden_output/product-enabled/com.vendor.service1/ld.config.txt
+++ b/testdata/golden_output/product-enabled/com.vendor.service1/ld.config.txt
@@ -152,6 +152,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -164,6 +166,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -177,12 +183,11 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = system,sphal,com_android_neuralnetworks
+namespace.vndk.links = system,com_android_neuralnetworks
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.system.shared_libs += libc.so
namespace.vndk.link.system.shared_libs += libdl.so
namespace.vndk.link.system.shared_libs += libdl_android.so
namespace.vndk.link.system.shared_libs += libm.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
diff --git a/testdata/golden_output/product-enabled/ld.config.txt b/testdata/golden_output/product-enabled/ld.config.txt
index ae4ec07..9b89096 100644
--- a/testdata/golden_output/product-enabled/ld.config.txt
+++ b/testdata/golden_output/product-enabled/ld.config.txt
@@ -393,6 +393,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -405,6 +407,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -418,22 +424,24 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = default,sphal,com_android_neuralnetworks
+namespace.vndk.links = default,com_android_neuralnetworks
namespace.vndk.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.default.shared_libs += libc.so
namespace.vndk.link.default.shared_libs += libdl.so
namespace.vndk.link.default.shared_libs += libdl_android.so
namespace.vndk.link.default.shared_libs += libm.so
namespace.vndk.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
namespace.vndk_product.isolated = true
namespace.vndk_product.visible = true
namespace.vndk_product.search.paths = /product/${LIB}/vndk-sp
namespace.vndk_product.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk_product.search.paths += /product/${LIB}
namespace.vndk_product.asan.search.paths = /data/asan/product/${LIB}/vndk-sp
namespace.vndk_product.asan.search.paths += /product/${LIB}/vndk-sp
namespace.vndk_product.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk_product.asan.search.paths += /data/asan/product/${LIB}
+namespace.vndk_product.asan.search.paths += /product/${LIB}
namespace.vndk_product.links = default,com_android_neuralnetworks
namespace.vndk_product.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk_product.link.default.shared_libs += libc.so
@@ -587,6 +595,8 @@
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}/vndk
@@ -596,14 +606,17 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
-namespace.vndk.links = system,default,com_android_neuralnetworks
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
+namespace.vndk.links = system,com_android_neuralnetworks
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.system.shared_libs += libc.so
namespace.vndk.link.system.shared_libs += libdl.so
namespace.vndk.link.system.shared_libs += libdl_android.so
namespace.vndk.link.system.shared_libs += libm.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.default.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
[product]
additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_neuralnetworks,com_android_runtime,system,vndk
@@ -740,19 +753,21 @@
namespace.vndk.search.paths = /product/${LIB}/vndk-sp
namespace.vndk.search.paths += /product/${LIB}/vndk
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /product/${LIB}
namespace.vndk.asan.search.paths = /data/asan/product/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /product/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /data/asan/product/${LIB}/vndk
namespace.vndk.asan.search.paths += /product/${LIB}/vndk
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
-namespace.vndk.links = system,default,com_android_neuralnetworks
+namespace.vndk.asan.search.paths += /data/asan/product/${LIB}
+namespace.vndk.asan.search.paths += /product/${LIB}
+namespace.vndk.links = system,com_android_neuralnetworks
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.system.shared_libs += libc.so
namespace.vndk.link.system.shared_libs += libdl.so
namespace.vndk.link.system.shared_libs += libdl_android.so
namespace.vndk.link.system.shared_libs += libm.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.default.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
[unrestricted]
additional.namespaces = com_android_adbd,com_android_art,com_android_conscrypt,com_android_cronet,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,rs,sphal,vndk
@@ -1058,6 +1073,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -1070,6 +1087,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -1083,14 +1104,13 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = default,sphal,com_android_neuralnetworks
+namespace.vndk.links = default,com_android_neuralnetworks
namespace.vndk.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.default.shared_libs += libc.so
namespace.vndk.link.default.shared_libs += libdl.so
namespace.vndk.link.default.shared_libs += libdl_android.so
namespace.vndk.link.default.shared_libs += libm.so
namespace.vndk.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
[postinstall]
namespace.default.isolated = false
diff --git a/testdata/golden_output/stage1/ld.config.txt b/testdata/golden_output/stage1/ld.config.txt
index 5a3d7a9..d2ee8d3 100644
--- a/testdata/golden_output/stage1/ld.config.txt
+++ b/testdata/golden_output/stage1/ld.config.txt
@@ -246,6 +246,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -258,6 +260,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -271,14 +277,13 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = default,sphal
+namespace.vndk.links = default
namespace.vndk.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.default.shared_libs += libc.so
namespace.vndk.link.default.shared_libs += libdl.so
namespace.vndk.link.default.shared_libs += libdl_android.so
namespace.vndk.link.default.shared_libs += libm.so
namespace.vndk.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
[vendor]
additional.namespaces = com_android_art,com_android_i18n,com_android_runtime,system,vndk
namespace.default.isolated = true
@@ -382,6 +387,8 @@
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}/vndk
@@ -391,14 +398,17 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
-namespace.vndk.links = system,default
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
+namespace.vndk.links = system
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.system.shared_libs += libc.so
namespace.vndk.link.system.shared_libs += libdl.so
namespace.vndk.link.system.shared_libs += libdl_android.so
namespace.vndk.link.system.shared_libs += libm.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.default.allow_all_shared_libs = true
[unrestricted]
additional.namespaces = com_android_art,com_android_i18n,com_android_runtime,rs,sphal,vndk
namespace.default.isolated = false
@@ -550,6 +560,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -562,6 +574,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -575,14 +591,13 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = default,sphal
+namespace.vndk.links = default
namespace.vndk.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.default.shared_libs += libc.so
namespace.vndk.link.default.shared_libs += libdl.so
namespace.vndk.link.default.shared_libs += libdl_android.so
namespace.vndk.link.default.shared_libs += libm.so
namespace.vndk.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
[postinstall]
namespace.default.isolated = false
namespace.default.search.paths = /system/${LIB}
diff --git a/testdata/golden_output/stage2/com.android.media.swcodec/ld.config.txt b/testdata/golden_output/stage2/com.android.media.swcodec/ld.config.txt
index 463a289..a719bca 100644
--- a/testdata/golden_output/stage2/com.android.media.swcodec/ld.config.txt
+++ b/testdata/golden_output/stage2/com.android.media.swcodec/ld.config.txt
@@ -185,6 +185,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -197,6 +199,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -210,12 +216,11 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = system,sphal,com_android_neuralnetworks
+namespace.vndk.links = system,com_android_neuralnetworks
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.system.shared_libs += libc.so
namespace.vndk.link.system.shared_libs += libdl.so
namespace.vndk.link.system.shared_libs += libdl_android.so
namespace.vndk.link.system.shared_libs += libm.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
diff --git a/testdata/golden_output/stage2/com.vendor.service1/ld.config.txt b/testdata/golden_output/stage2/com.vendor.service1/ld.config.txt
index 241edc5..c74d2b5 100644
--- a/testdata/golden_output/stage2/com.vendor.service1/ld.config.txt
+++ b/testdata/golden_output/stage2/com.vendor.service1/ld.config.txt
@@ -155,6 +155,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -167,6 +169,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -180,12 +186,11 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = system,sphal,com_android_neuralnetworks
+namespace.vndk.links = system,com_android_neuralnetworks
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.system.shared_libs += libc.so
namespace.vndk.link.system.shared_libs += libdl.so
namespace.vndk.link.system.shared_libs += libdl_android.so
namespace.vndk.link.system.shared_libs += libm.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
diff --git a/testdata/golden_output/stage2/ld.config.txt b/testdata/golden_output/stage2/ld.config.txt
index be2d831..0b3c8b1 100644
--- a/testdata/golden_output/stage2/ld.config.txt
+++ b/testdata/golden_output/stage2/ld.config.txt
@@ -399,6 +399,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -411,6 +413,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -424,14 +430,13 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = default,sphal,com_android_neuralnetworks
+namespace.vndk.links = default,com_android_neuralnetworks
namespace.vndk.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.default.shared_libs += libc.so
namespace.vndk.link.default.shared_libs += libdl.so
namespace.vndk.link.default.shared_libs += libdl_android.so
namespace.vndk.link.default.shared_libs += libm.so
namespace.vndk.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
[vendor]
additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_neuralnetworks,com_android_runtime,system,vndk
@@ -581,6 +586,8 @@
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}/vndk
@@ -590,14 +597,17 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
-namespace.vndk.links = system,default,com_android_neuralnetworks
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
+namespace.vndk.links = system,com_android_neuralnetworks
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.system.shared_libs += libc.so
namespace.vndk.link.system.shared_libs += libdl.so
namespace.vndk.link.system.shared_libs += libdl_android.so
namespace.vndk.link.system.shared_libs += libm.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.default.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
[unrestricted]
additional.namespaces = com_android_adbd,com_android_art,com_android_conscrypt,com_android_cronet,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,rs,sphal,vndk
@@ -903,6 +913,8 @@
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.search.paths += /odm/${LIB}
+namespace.vndk.search.paths += /vendor/${LIB}
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
@@ -915,6 +927,10 @@
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /apex/com.android.vndk.vR/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}
+namespace.vndk.asan.search.paths += /odm/${LIB}
+namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}
+namespace.vndk.asan.search.paths += /vendor/${LIB}
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
@@ -928,14 +944,13 @@
namespace.vndk.asan.permitted.paths += /data/asan/system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /system/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /apex/com.android.vndk.vR/${LIB}/hw
-namespace.vndk.links = default,sphal,com_android_neuralnetworks
+namespace.vndk.links = default,com_android_neuralnetworks
namespace.vndk.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libbinder_ndk.so:libc.so:libcgrouprc.so:libclang_rt.asan-i686-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
namespace.vndk.link.default.shared_libs += libc.so
namespace.vndk.link.default.shared_libs += libdl.so
namespace.vndk.link.default.shared_libs += libdl_android.so
namespace.vndk.link.default.shared_libs += libm.so
namespace.vndk.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
-namespace.vndk.link.sphal.allow_all_shared_libs = true
namespace.vndk.link.com_android_neuralnetworks.shared_libs = libneuralnetworks.so
[postinstall]
namespace.default.isolated = false
diff --git a/testmodules/Android.bp b/testmodules/Android.bp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testmodules/Android.bp
diff --git a/testmodules/vndkext/Android.bp b/testmodules/vndkext/Android.bp
new file mode 100644
index 0000000..da6f628
--- /dev/null
+++ b/testmodules/vndkext/Android.bp
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+cc_library_shared {
+ name: "libutils_vendor",
+ whole_static_libs: ["libutils"],
+ vendor: true,
+ vndk: {
+ enabled: true,
+ support_system_process: true,
+ extends: "libutils",
+ },
+ shared_libs: [
+ "libcutils",
+ "libprocessgroup",
+ "libvndksupport",
+ "liblog",
+ // vendor-only lib
+ "libvendor",
+ ],
+}
+
+cc_library_shared {
+ name: "libutils_product",
+ whole_static_libs: ["libutils"],
+ product_specific: true,
+ vndk: {
+ enabled: true,
+ support_system_process: true,
+ extends: "libutils",
+ },
+ shared_libs: [
+ "libcutils",
+ "libprocessgroup",
+ "libvndksupport",
+ "liblog",
+ // product-only libs
+ "libproduct",
+ ],
+}
+
+cc_library_shared {
+ name: "libvendor",
+ vendor: true,
+}
+
+cc_library_shared {
+ name: "libproduct",
+ product_specific: true,
+}
+
+cc_binary {
+ name: "binvendor",
+ vendor: true,
+ srcs: ["hello.cpp"],
+ shared_libs: ["libutils_vendor"],
+}
+
+cc_binary {
+ name: "binproduct",
+ product_specific: true,
+ srcs: ["hello.cpp"],
+ shared_libs: ["libutils_product"],
+}
diff --git a/testmodules/vndkext/HelloActivityProduct/Android.bp b/testmodules/vndkext/HelloActivityProduct/Android.bp
new file mode 100644
index 0000000..8d9b012
--- /dev/null
+++ b/testmodules/vndkext/HelloActivityProduct/Android.bp
@@ -0,0 +1,16 @@
+
+android_app {
+ name: "HelloActivityProduct",
+ srcs: ["src/**/*.java"],
+ product_specific: true,
+ sdk_version: "current",
+
+ jni_libs: ["libjni_product"],
+ jni_uses_platform_apis: true,
+}
+
+cc_library {
+ name: "libjni_product",
+ product_specific: true,
+ shared_libs: ["libutils_product"],
+}
\ No newline at end of file
diff --git a/testmodules/vndkext/HelloActivityProduct/AndroidManifest.xml b/testmodules/vndkext/HelloActivityProduct/AndroidManifest.xml
new file mode 100644
index 0000000..a58cb58
--- /dev/null
+++ b/testmodules/vndkext/HelloActivityProduct/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- Declare the contents of this Android application. The namespace
+ attribute brings in the Android platform namespace, and the package
+ supplies a unique name for the application. When writing your
+ own application, the package name must be changed from "com.example.*"
+ to come from a domain that you own or have control over. -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.android.helloactivity">
+ <application android:label="Hello, Activity!">
+ <activity android:name=".HelloActivity"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ </activity>
+ </application>
+</manifest>
diff --git a/testmodules/vndkext/HelloActivityProduct/res/layout/hello_activity.xml b/testmodules/vndkext/HelloActivityProduct/res/layout/hello_activity.xml
new file mode 100644
index 0000000..bab9c9c
--- /dev/null
+++ b/testmodules/vndkext/HelloActivityProduct/res/layout/hello_activity.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<EditText xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:textSize="18sp"
+ android:autoText="true"
+ android:capitalize="sentences"
+ android:text="@string/hello_activity_text_text" />
+
diff --git a/testmodules/vndkext/HelloActivityProduct/res/values/strings.xml b/testmodules/vndkext/HelloActivityProduct/res/values/strings.xml
new file mode 100644
index 0000000..7eab42c
--- /dev/null
+++ b/testmodules/vndkext/HelloActivityProduct/res/values/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+
+ <string name="hello_activity_text_text">Hello, World!</string>
+
+</resources>
diff --git a/testmodules/vndkext/HelloActivityProduct/src/com/example/android/helloactivity/HelloActivity.java b/testmodules/vndkext/HelloActivityProduct/src/com/example/android/helloactivity/HelloActivity.java
new file mode 100644
index 0000000..0fdf3a3
--- /dev/null
+++ b/testmodules/vndkext/HelloActivityProduct/src/com/example/android/helloactivity/HelloActivity.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.helloactivity;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.view.WindowManager;
+
+
+/**
+ * A minimal "Hello, World!" application.
+ */
+public class HelloActivity extends Activity {
+ /**
+ * Called with the activity is first created.
+ */
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Set the layout for this activity. You can find it
+ // in res/layout/hello_activity.xml
+ View view = getLayoutInflater().inflate(R.layout.hello_activity, null);
+ setContentView(view);
+ }
+
+ static {
+ System.loadLibrary("jni_product");
+ }
+}
diff --git a/testmodules/vndkext/hello.cpp b/testmodules/vndkext/hello.cpp
new file mode 100644
index 0000000..071da07
--- /dev/null
+++ b/testmodules/vndkext/hello.cpp
@@ -0,0 +1,6 @@
+#include <iostream>
+
+int main() {
+ std::cout << "hello\n";
+ return 0;
+}
\ No newline at end of file