diff --git a/rootdir/Android.mk b/rootdir/Android.mk index d8163abd3..f4509a42d 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -192,11 +192,12 @@ endef # update_and_install_ld_config # ld.config.txt # # For VNDK enforced devices that have defined BOARD_VNDK_VERSION, use -# "ld.config.txt.in" as a source file. This configuration includes strict VNDK +# "ld.config.txt" as a source file. This configuration includes strict VNDK # run-time restrictions for vendor process. # Other treblized devices, that have not defined BOARD_VNDK_VERSION or that -# have set BOARD_VNDK_RUNTIME_DISABLE to true, use "ld.config.txt" as a source -# file. This configuration does not have strict VNDK run-time restrictions. +# have set BOARD_VNDK_RUNTIME_DISABLE to true, use "ld.config.vndk_lite.txt" +# as a source file. This configuration does not have strict VNDK run-time +# restrictions. # If the device is not treblized, use "ld.config.legacy.txt" for legacy # namespace configuration. include $(CLEAR_VARS) @@ -216,7 +217,7 @@ ifeq ($(_enforce_vndk_at_runtime),true) LOCAL_MODULE_STEM := $(call append_vndk_version,$(LOCAL_MODULE)) include $(BUILD_SYSTEM)/base_rules.mk $(eval $(call update_and_install_ld_config,\ - $(LOCAL_PATH)/etc/ld.config.txt.in,\ + $(LOCAL_PATH)/etc/ld.config.txt,\ $(LOCAL_BUILT_MODULE),\ $(PLATFORM_VNDK_VERSION))) @@ -225,7 +226,7 @@ else ifeq ($(PRODUCT_TREBLE_LINKER_NAMESPACES)|$(SANITIZE_TARGET),true|) LOCAL_MODULE_STEM := $(call append_vndk_version,$(LOCAL_MODULE)) include $(BUILD_SYSTEM)/base_rules.mk $(eval $(call update_and_install_ld_config,\ - $(LOCAL_PATH)/etc/ld.config.txt,\ + $(LOCAL_PATH)/etc/ld.config.vndk_lite.txt,\ $(LOCAL_BUILT_MODULE),\ $(if $(BOARD_VNDK_VERSION),$(PLATFORM_VNDK_VERSION)))) @@ -244,9 +245,9 @@ _enforce_vndk_at_runtime := # # This file is a temporary configuration file only for GSI. Originally GSI has # BOARD_VNDK_VERSION defined and has strict VNDK enforcing rule based on -# "ld.config.txt.in". However for the devices, that have not defined +# "ld.config.txt". However for the devices, that have not defined # BOARD_VNDK_VERSION, GSI provides this configuration file which is based on -# "ld.config.txt". +# "ld.config.vndk_lite.txt". # Do not install this file for the devices other than GSI. include $(CLEAR_VARS) LOCAL_MODULE := ld.config.noenforce.txt @@ -255,7 +256,7 @@ LOCAL_MODULE_PATH := $(TARGET_OUT_ETC) LOCAL_MODULE_STEM := $(LOCAL_MODULE) include $(BUILD_SYSTEM)/base_rules.mk $(eval $(call update_and_install_ld_config,\ - $(LOCAL_PATH)/etc/ld.config.txt,\ + $(LOCAL_PATH)/etc/ld.config.vndk_lite.txt,\ $(LOCAL_BUILT_MODULE),\ $(PLATFORM_VNDK_VERSION))) diff --git a/rootdir/etc/ld.config.txt b/rootdir/etc/ld.config.txt index 5d97a73fd..c8d87c8f0 100644 --- a/rootdir/etc/ld.config.txt +++ b/rootdir/etc/ld.config.txt @@ -30,21 +30,55 @@ additional.namespaces = sphal,vndk,rs ############################################################################### # "default" namespace # -# Framework-side code runs in this namespace. However, libs from other -# partitions are also allowed temporarily. +# Framework-side code runs in this namespace. Libs from /vendor partition +# can't be loaded in this namespace. ############################################################################### -namespace.default.isolated = false +namespace.default.isolated = true -namespace.default.search.paths = /system/${LIB} -namespace.default.search.paths += /odm/${LIB} -namespace.default.search.paths += /vendor/${LIB} +namespace.default.search.paths = /system/${LIB} + +# We can't have entire /system/${LIB} as permitted paths because doing so +# makes it possible to load libs in /system/${LIB}/vndk* directories by +# their absolute paths (e.g. dlopen("/system/lib/vndk/libbase.so");). +# VNDK libs are built with previous versions of Android and thus must not be +# loaded into this namespace where libs built with the current version of +# Android are loaded. Mixing the two types of libs in the same namespace can +# cause unexpected problem. +namespace.default.permitted.paths = /system/${LIB}/drm +namespace.default.permitted.paths += /system/${LIB}/extractors +namespace.default.permitted.paths += /system/${LIB}/hw +# These are where odex files are located. libart has to be able to dlopen the files +namespace.default.permitted.paths += /system/framework +namespace.default.permitted.paths += /system/app +namespace.default.permitted.paths += /system/priv-app +namespace.default.permitted.paths += /vendor/framework +namespace.default.permitted.paths += /vendor/app +namespace.default.permitted.paths += /vendor/priv-app +namespace.default.permitted.paths += /oem/app +namespace.default.permitted.paths += /product/framework +namespace.default.permitted.paths += /product/app +namespace.default.permitted.paths += /product/priv-app +namespace.default.permitted.paths += /data +namespace.default.permitted.paths += /mnt/expand namespace.default.asan.search.paths = /data/asan/system/${LIB} namespace.default.asan.search.paths += /system/${LIB} -namespace.default.asan.search.paths += /data/asan/odm/${LIB} -namespace.default.asan.search.paths += /odm/${LIB} -namespace.default.asan.search.paths += /data/asan/vendor/${LIB} -namespace.default.asan.search.paths += /vendor/${LIB} + +namespace.default.asan.permitted.paths = /data +namespace.default.asan.permitted.paths += /system/${LIB}/drm +namespace.default.asan.permitted.paths += /system/${LIB}/extractors +namespace.default.asan.permitted.paths += /system/${LIB}/hw +namespace.default.asan.permitted.paths += /system/framework +namespace.default.asan.permitted.paths += /system/app +namespace.default.asan.permitted.paths += /system/priv-app +namespace.default.asan.permitted.paths += /vendor/framework +namespace.default.asan.permitted.paths += /vendor/app +namespace.default.asan.permitted.paths += /vendor/priv-app +namespace.default.asan.permitted.paths += /oem/app +namespace.default.asan.permitted.paths += /product/framework +namespace.default.asan.permitted.paths += /product/app +namespace.default.asan.permitted.paths += /product/priv-app +namespace.default.asan.permitted.paths += /mnt/expand ############################################################################### # "sphal" namespace @@ -82,35 +116,10 @@ namespace.sphal.asan.permitted.paths += /vendor/${LIB} # libs listed here can be used. namespace.sphal.links = default,vndk,rs -# WARNING: only NDK libs can be listed here. -namespace.sphal.link.default.shared_libs = libc.so -namespace.sphal.link.default.shared_libs += libEGL.so -namespace.sphal.link.default.shared_libs += libGLESv1_CM.so -namespace.sphal.link.default.shared_libs += libGLESv2.so -namespace.sphal.link.default.shared_libs += libdl.so -namespace.sphal.link.default.shared_libs += liblog.so -namespace.sphal.link.default.shared_libs += libm.so -namespace.sphal.link.default.shared_libs += libnativewindow.so -namespace.sphal.link.default.shared_libs += libstdc++.so -namespace.sphal.link.default.shared_libs += libsync.so -namespace.sphal.link.default.shared_libs += libvndksupport.so -namespace.sphal.link.default.shared_libs += libz.so +namespace.sphal.link.default.shared_libs = %LLNDK_LIBRARIES% +namespace.sphal.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% -# WARNING: only VNDK-SP libs can be listed here. DO NOT EDIT this line. -namespace.sphal.link.vndk.shared_libs = android.hardware.renderscript@1.0.so -namespace.sphal.link.vndk.shared_libs += android.hardware.graphics.common@1.0.so -namespace.sphal.link.vndk.shared_libs += android.hardware.graphics.mapper@2.0.so -namespace.sphal.link.vndk.shared_libs += android.hidl.memory@1.0.so -namespace.sphal.link.vndk.shared_libs += libbase.so -namespace.sphal.link.vndk.shared_libs += libc++.so -namespace.sphal.link.vndk.shared_libs += libcutils.so -namespace.sphal.link.vndk.shared_libs += libhardware.so -namespace.sphal.link.vndk.shared_libs += libhidlbase.so -namespace.sphal.link.vndk.shared_libs += libhidlmemory.so -namespace.sphal.link.vndk.shared_libs += libhidltransport.so -namespace.sphal.link.vndk.shared_libs += libhwbinder.so -namespace.sphal.link.vndk.shared_libs += libion.so -namespace.sphal.link.vndk.shared_libs += libutils.so +namespace.sphal.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% # Renderscript gets separate namespace namespace.sphal.link.rs.shared_libs = libRS_internal.so @@ -155,38 +164,13 @@ namespace.rs.asan.permitted.paths += /data namespace.rs.links = default,vndk -namespace.rs.link.default.shared_libs = libc.so -namespace.rs.link.default.shared_libs += libEGL.so -namespace.rs.link.default.shared_libs += libGLESv1_CM.so -namespace.rs.link.default.shared_libs += libGLESv2.so -namespace.rs.link.default.shared_libs += libdl.so -namespace.rs.link.default.shared_libs += liblog.so -namespace.rs.link.default.shared_libs += libm.so -namespace.rs.link.default.shared_libs += libnativewindow.so -namespace.rs.link.default.shared_libs += libstdc++.so -namespace.rs.link.default.shared_libs += libsync.so -namespace.rs.link.default.shared_libs += libvndksupport.so -namespace.rs.link.default.shared_libs += libz.so -# These two libs are private LLNDK libs but are exceptionally visible -# in this 'rs' namespace because RenderScript framework libraries -# which are loaded into this namespace are using them. -namespace.rs.link.default.shared_libs += libft2.so -namespace.rs.link.default.shared_libs += libmediandk.so +namespace.rs.link.default.shared_libs = %LLNDK_LIBRARIES% +namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% +# Private LLNDK libs (e.g. libft2.so) are exceptionally allowed to this +# namespace because RS framework libs are using them. +namespace.rs.link.default.shared_libs += %PRIVATE_LLNDK_LIBRARIES% -namespace.rs.link.vndk.shared_libs = android.hardware.renderscript@1.0.so -namespace.rs.link.vndk.shared_libs += android.hardware.graphics.common@1.0.so -namespace.rs.link.vndk.shared_libs += android.hardware.graphics.mapper@2.0.so -namespace.rs.link.vndk.shared_libs += android.hidl.memory@1.0.so -namespace.rs.link.vndk.shared_libs += libbase.so -namespace.rs.link.vndk.shared_libs += libc++.so -namespace.rs.link.vndk.shared_libs += libcutils.so -namespace.rs.link.vndk.shared_libs += libhardware.so -namespace.rs.link.vndk.shared_libs += libhidlbase.so -namespace.rs.link.vndk.shared_libs += libhidlmemory.so -namespace.rs.link.vndk.shared_libs += libhidltransport.so -namespace.rs.link.vndk.shared_libs += libhwbinder.so -namespace.rs.link.vndk.shared_libs += libion.so -namespace.rs.link.vndk.shared_libs += libutils.so +namespace.rs.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% ############################################################################### # "vndk" namespace @@ -204,6 +188,8 @@ namespace.vndk.permitted.paths = /odm/${LIB}/hw namespace.vndk.permitted.paths += /odm/${LIB}/egl namespace.vndk.permitted.paths += /vendor/${LIB}/hw namespace.vndk.permitted.paths += /vendor/${LIB}/egl +# 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.search.paths = /data/asan/odm/${LIB}/vndk-sp namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp @@ -221,21 +207,15 @@ namespace.vndk.asan.permitted.paths += /vendor/${LIB}/hw namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/egl namespace.vndk.asan.permitted.paths += /vendor/${LIB}/egl +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 + # When these NDK libs are required inside this namespace, then it is redirected # to the default namespace. This is possible since their ABI is stable across # Android releases. namespace.vndk.links = default -namespace.vndk.link.default.shared_libs = android.hidl.memory@1.0-impl.so -namespace.vndk.link.default.shared_libs += libEGL.so -namespace.vndk.link.default.shared_libs += libc.so -namespace.vndk.link.default.shared_libs += libdl.so -namespace.vndk.link.default.shared_libs += liblog.so -namespace.vndk.link.default.shared_libs += libm.so -namespace.vndk.link.default.shared_libs += libnativewindow.so -namespace.vndk.link.default.shared_libs += libstdc++.so -namespace.vndk.link.default.shared_libs += libsync.so -namespace.vndk.link.default.shared_libs += libvndksupport.so -namespace.vndk.link.default.shared_libs += libz.so +namespace.vndk.link.default.shared_libs = %LLNDK_LIBRARIES% +namespace.vndk.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% ############################################################################### # Namespace config for vendor processes. In O, no restriction is enforced for @@ -244,35 +224,88 @@ namespace.vndk.link.default.shared_libs += libz.so # (LL-NDK only) access. ############################################################################### [vendor] -namespace.default.isolated = false +additional.namespaces = system,vndk + +############################################################################### +# "default" namespace +# +# This is the default linker namespace for a vendor process (a process started +# from /vendor/bin/*). The main executable and the libs under /vendor/lib[64] +# are loaded directly into this namespace. However, other libs under the system +# partition (VNDK and LLNDK libraries) are not loaded here but from the +# separate namespace 'system'. The delegation to the system namespace is done +# via the 'namespace.default.link.system.shared_libs' property below. +############################################################################### +namespace.default.isolated = true +namespace.default.visible = true namespace.default.search.paths = /odm/${LIB} -namespace.default.search.paths += /odm/${LIB}/vndk -namespace.default.search.paths += /odm/${LIB}/vndk-sp namespace.default.search.paths += /vendor/${LIB} -namespace.default.search.paths += /vendor/${LIB}/vndk -namespace.default.search.paths += /vendor/${LIB}/vndk-sp -# Access to system libraries are allowed -namespace.default.search.paths += /system/${LIB}/vndk%VNDK_VER% -namespace.default.search.paths += /system/${LIB}/vndk-sp%VNDK_VER% -namespace.default.search.paths += /system/${LIB} +namespace.default.permitted.paths = /odm +namespace.default.permitted.paths += /vendor namespace.default.asan.search.paths = /data/asan/odm/${LIB} namespace.default.asan.search.paths += /odm/${LIB} -namespace.default.asan.search.paths += /data/asan/odm/${LIB}/vndk -namespace.default.asan.search.paths += /odm/${LIB}/vndk -namespace.default.asan.search.paths += /data/asan/odm/${LIB}/vndk-sp -namespace.default.asan.search.paths += /odm/${LIB}/vndk-sp namespace.default.asan.search.paths += /data/asan/vendor/${LIB} namespace.default.asan.search.paths += /vendor/${LIB} -namespace.default.asan.search.paths += /data/asan/vendor/${LIB}/vndk -namespace.default.asan.search.paths += /vendor/${LIB}/vndk -namespace.default.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp -namespace.default.asan.search.paths += /vendor/${LIB}/vndk-sp -namespace.default.asan.search.paths += /data/asan/system/${LIB}/vndk%VNDK_VER% -namespace.default.asan.search.paths += /system/${LIB}/vndk%VNDK_VER% -namespace.default.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER% -namespace.default.asan.search.paths += /system/${LIB}/vndk-sp%VNDK_VER% -namespace.default.asan.search.paths += /data/asan/system/${LIB} -namespace.default.asan.search.paths += /system/${LIB} + +namespace.default.asan.permitted.paths = /data/asan/odm +namespace.default.asan.permitted.paths += /odm +namespace.default.asan.permitted.paths += /data/asan/vendor +namespace.default.asan.permitted.paths += /vendor + +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 = /odm/${LIB}/vndk +namespace.vndk.search.paths += /odm/${LIB}/vndk-sp +namespace.vndk.search.paths += /vendor/${LIB}/vndk +namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp +namespace.vndk.search.paths += /system/${LIB}/vndk-sp%VNDK_VER% +namespace.vndk.search.paths += /system/${LIB}/vndk%VNDK_VER% + +namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk +namespace.vndk.asan.search.paths += /odm/${LIB}/vndk +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/vendor/${LIB}/vndk +namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk +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 += /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,default +namespace.vndk.link.system.shared_libs = %LLNDK_LIBRARIES% +namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% + +namespace.vndk.link.default.allow_all_shared_libs = true + +############################################################################### +# "system" namespace +# +# This namespace is where system libs (VNDK and LLNDK libs) are loaded for +# a vendor process. +############################################################################### +namespace.system.isolated = false + +namespace.system.search.paths = /system/${LIB} + +namespace.system.asan.search.paths = /data/asan/system/${LIB} +namespace.system.asan.search.paths += /system/${LIB} diff --git a/rootdir/etc/ld.config.txt.in b/rootdir/etc/ld.config.vndk_lite.txt similarity index 57% rename from rootdir/etc/ld.config.txt.in rename to rootdir/etc/ld.config.vndk_lite.txt index c8d87c8f0..5256cb153 100644 --- a/rootdir/etc/ld.config.txt.in +++ b/rootdir/etc/ld.config.vndk_lite.txt @@ -30,55 +30,21 @@ additional.namespaces = sphal,vndk,rs ############################################################################### # "default" namespace # -# Framework-side code runs in this namespace. Libs from /vendor partition -# can't be loaded in this namespace. +# Framework-side code runs in this namespace. However, libs from other +# partitions are also allowed temporarily. ############################################################################### -namespace.default.isolated = true +namespace.default.isolated = false -namespace.default.search.paths = /system/${LIB} - -# We can't have entire /system/${LIB} as permitted paths because doing so -# makes it possible to load libs in /system/${LIB}/vndk* directories by -# their absolute paths (e.g. dlopen("/system/lib/vndk/libbase.so");). -# VNDK libs are built with previous versions of Android and thus must not be -# loaded into this namespace where libs built with the current version of -# Android are loaded. Mixing the two types of libs in the same namespace can -# cause unexpected problem. -namespace.default.permitted.paths = /system/${LIB}/drm -namespace.default.permitted.paths += /system/${LIB}/extractors -namespace.default.permitted.paths += /system/${LIB}/hw -# These are where odex files are located. libart has to be able to dlopen the files -namespace.default.permitted.paths += /system/framework -namespace.default.permitted.paths += /system/app -namespace.default.permitted.paths += /system/priv-app -namespace.default.permitted.paths += /vendor/framework -namespace.default.permitted.paths += /vendor/app -namespace.default.permitted.paths += /vendor/priv-app -namespace.default.permitted.paths += /oem/app -namespace.default.permitted.paths += /product/framework -namespace.default.permitted.paths += /product/app -namespace.default.permitted.paths += /product/priv-app -namespace.default.permitted.paths += /data -namespace.default.permitted.paths += /mnt/expand +namespace.default.search.paths = /system/${LIB} +namespace.default.search.paths += /odm/${LIB} +namespace.default.search.paths += /vendor/${LIB} namespace.default.asan.search.paths = /data/asan/system/${LIB} namespace.default.asan.search.paths += /system/${LIB} - -namespace.default.asan.permitted.paths = /data -namespace.default.asan.permitted.paths += /system/${LIB}/drm -namespace.default.asan.permitted.paths += /system/${LIB}/extractors -namespace.default.asan.permitted.paths += /system/${LIB}/hw -namespace.default.asan.permitted.paths += /system/framework -namespace.default.asan.permitted.paths += /system/app -namespace.default.asan.permitted.paths += /system/priv-app -namespace.default.asan.permitted.paths += /vendor/framework -namespace.default.asan.permitted.paths += /vendor/app -namespace.default.asan.permitted.paths += /vendor/priv-app -namespace.default.asan.permitted.paths += /oem/app -namespace.default.asan.permitted.paths += /product/framework -namespace.default.asan.permitted.paths += /product/app -namespace.default.asan.permitted.paths += /product/priv-app -namespace.default.asan.permitted.paths += /mnt/expand +namespace.default.asan.search.paths += /data/asan/odm/${LIB} +namespace.default.asan.search.paths += /odm/${LIB} +namespace.default.asan.search.paths += /data/asan/vendor/${LIB} +namespace.default.asan.search.paths += /vendor/${LIB} ############################################################################### # "sphal" namespace @@ -224,88 +190,35 @@ namespace.vndk.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% # (LL-NDK only) access. ############################################################################### [vendor] -additional.namespaces = system,vndk - -############################################################################### -# "default" namespace -# -# This is the default linker namespace for a vendor process (a process started -# from /vendor/bin/*). The main executable and the libs under /vendor/lib[64] -# are loaded directly into this namespace. However, other libs under the system -# partition (VNDK and LLNDK libraries) are not loaded here but from the -# separate namespace 'system'. The delegation to the system namespace is done -# via the 'namespace.default.link.system.shared_libs' property below. -############################################################################### -namespace.default.isolated = true -namespace.default.visible = true +namespace.default.isolated = false namespace.default.search.paths = /odm/${LIB} +namespace.default.search.paths += /odm/${LIB}/vndk +namespace.default.search.paths += /odm/${LIB}/vndk-sp namespace.default.search.paths += /vendor/${LIB} +namespace.default.search.paths += /vendor/${LIB}/vndk +namespace.default.search.paths += /vendor/${LIB}/vndk-sp -namespace.default.permitted.paths = /odm -namespace.default.permitted.paths += /vendor +# Access to system libraries are allowed +namespace.default.search.paths += /system/${LIB}/vndk%VNDK_VER% +namespace.default.search.paths += /system/${LIB}/vndk-sp%VNDK_VER% +namespace.default.search.paths += /system/${LIB} namespace.default.asan.search.paths = /data/asan/odm/${LIB} namespace.default.asan.search.paths += /odm/${LIB} +namespace.default.asan.search.paths += /data/asan/odm/${LIB}/vndk +namespace.default.asan.search.paths += /odm/${LIB}/vndk +namespace.default.asan.search.paths += /data/asan/odm/${LIB}/vndk-sp +namespace.default.asan.search.paths += /odm/${LIB}/vndk-sp namespace.default.asan.search.paths += /data/asan/vendor/${LIB} namespace.default.asan.search.paths += /vendor/${LIB} - -namespace.default.asan.permitted.paths = /data/asan/odm -namespace.default.asan.permitted.paths += /odm -namespace.default.asan.permitted.paths += /data/asan/vendor -namespace.default.asan.permitted.paths += /vendor - -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 = /odm/${LIB}/vndk -namespace.vndk.search.paths += /odm/${LIB}/vndk-sp -namespace.vndk.search.paths += /vendor/${LIB}/vndk -namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp -namespace.vndk.search.paths += /system/${LIB}/vndk-sp%VNDK_VER% -namespace.vndk.search.paths += /system/${LIB}/vndk%VNDK_VER% - -namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk -namespace.vndk.asan.search.paths += /odm/${LIB}/vndk -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/vendor/${LIB}/vndk -namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk -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 += /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,default -namespace.vndk.link.system.shared_libs = %LLNDK_LIBRARIES% -namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% - -namespace.vndk.link.default.allow_all_shared_libs = true - -############################################################################### -# "system" namespace -# -# This namespace is where system libs (VNDK and LLNDK libs) are loaded for -# a vendor process. -############################################################################### -namespace.system.isolated = false - -namespace.system.search.paths = /system/${LIB} - -namespace.system.asan.search.paths = /data/asan/system/${LIB} -namespace.system.asan.search.paths += /system/${LIB} +namespace.default.asan.search.paths += /data/asan/vendor/${LIB}/vndk +namespace.default.asan.search.paths += /vendor/${LIB}/vndk +namespace.default.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp +namespace.default.asan.search.paths += /vendor/${LIB}/vndk-sp +namespace.default.asan.search.paths += /data/asan/system/${LIB}/vndk%VNDK_VER% +namespace.default.asan.search.paths += /system/${LIB}/vndk%VNDK_VER% +namespace.default.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER% +namespace.default.asan.search.paths += /system/${LIB}/vndk-sp%VNDK_VER% +namespace.default.asan.search.paths += /data/asan/system/${LIB} +namespace.default.asan.search.paths += /system/${LIB}