From 225b71d8c58a85994d074f077493b1b32d07d3b5 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Fri, 15 Dec 2017 22:19:57 +0800 Subject: [PATCH] Separate VNDK libs into another linker namespace This commit extracts /system/lib[64]/vndk and /system/lib[64]/vndk-sp into another namespace in the vendor section. This commit is necessary because LLNDK libraries (e.g. libc or libnativewindow) may otherwise link to the shared libraries in /system/lib[64]/vndk-sp, which may be older than the one LLNDK libraries built with. Test: aosp_walleye boots Bug: 70816018 Change-Id: I6fceb0da92c978ad940af91f5efe84e673c9247e --- rootdir/etc/ld.config.txt.in | 49 ++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/rootdir/etc/ld.config.txt.in b/rootdir/etc/ld.config.txt.in index 77c206256..0ad1f5b78 100644 --- a/rootdir/etc/ld.config.txt.in +++ b/rootdir/etc/ld.config.txt.in @@ -218,7 +218,7 @@ namespace.vndk.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% # (LL-NDK only) access. ############################################################################### [vendor] -additional.namespaces = system +additional.namespaces = system,vndk ############################################################################### # "default" namespace @@ -268,10 +268,39 @@ namespace.default.asan.permitted.paths += /odm namespace.default.asan.permitted.paths += /data/asan/vendor namespace.default.asan.permitted.paths += /vendor -namespace.default.links = system -namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES% -namespace.default.link.system.shared_libs += %VNDK_SAMEPROCESS_LIBRARIES% -namespace.default.link.system.shared_libs += %VNDK_CORE_LIBRARIES% +namespace.default.links = system,vndk +namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES% +namespace.default.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% +namespace.default.link.vndk.shared_libs += %VNDK_CORE_LIBRARIES% + +############################################################################### +# "vndk" namespace +# +# This namespace is where VNDK and VNDK-SP libraries are loaded for +# a vendor process. +############################################################################### +namespace.vndk.isolated = false + +namespace.vndk.search.paths = /system/${LIB}/vndk-sp${VNDK_VER} +namespace.vndk.search.paths += /system/${LIB}/vndk${VNDK_VER} + +# This is exceptionally required since android.hidl.memory@1.0-impl.so is here +namespace.vndk.permitted.paths = /system/${LIB}/vndk-sp${VNDK_VER}/hw + +namespace.vndk.asan.permitted.paths += /data/asan/system/${LIB}/vndk-sp${VNDK_VER}/hw +namespace.vndk.asan.permitted.paths += /system/${LIB}/vndk-sp${VNDK_VER}/hw + +namespace.vndk.asan.search.paths = /data/asan/system/${LIB}/vndk-sp${VNDK_VER} +namespace.vndk.asan.search.paths += /system/${LIB}/vndk-sp${VNDK_VER} +namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk${VNDK_VER} +namespace.vndk.asan.search.paths += /system/${LIB}/vndk${VNDK_VER} + +# When these NDK libs are required inside this namespace, then it is redirected +# to the system namespace. This is possible since their ABI is stable across +# Android releases. +namespace.vndk.links = system +namespace.vndk.link.system.shared_libs = %LLNDK_LIBRARIES% +namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% ############################################################################### # "system" namespace @@ -281,13 +310,7 @@ namespace.default.link.system.shared_libs += %VNDK_CORE_LIBRARIES% ############################################################################### namespace.system.isolated = false -namespace.system.search.paths = /system/${LIB}/vndk-sp${VNDK_VER} -namespace.system.search.paths += /system/${LIB}/vndk${VNDK_VER} -namespace.system.search.paths += /system/${LIB} +namespace.system.search.paths = /system/${LIB} -namespace.system.asan.search.paths = /data/asan/system/${LIB}/vndk-sp${VNDK_VER} -namespace.system.asan.search.paths += /system/${LIB}/vndk-sp${VNDK_VER} -namespace.system.asan.search.paths += /data/asan/system/${LIB}/vndk${VNDK_VER} -namespace.system.asan.search.paths += /system/${LIB}/vndk${VNDK_VER} -namespace.system.asan.search.paths += /data/asan/system/${LIB} +namespace.system.asan.search.paths = /data/asan/system/${LIB} namespace.system.asan.search.paths += /system/${LIB}