android_system_core/rootdir/etc/ld.config.vndk_lite.txt

225 lines
10 KiB
Plaintext
Raw Normal View History

# Copyright (C) 2017 The Android Open Source Project
#
# Bionic loader config file.
#
# Don't change the order here. The first pattern that matches with the
# absolute path of an executable is selected.
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
dir.system = /system/bin/
dir.system = /system/xbin/
dir.vendor = /odm/bin/
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
dir.vendor = /vendor/bin/
dir.vendor = /data/nativetest/odm
dir.vendor = /data/nativetest64/odm
dir.vendor = /data/benchmarktest/odm
dir.vendor = /data/benchmarktest64/odm
dir.vendor = /data/nativetest/vendor
dir.vendor = /data/nativetest64/vendor
dir.vendor = /data/benchmarktest/vendor
dir.vendor = /data/benchmarktest64/vendor
dir.system = /data/nativetest
dir.system = /data/nativetest64
dir.system = /data/benchmarktest
dir.system = /data/benchmarktest64
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
[system]
additional.namespaces = sphal,vndk,rs
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
###############################################################################
# "default" namespace
#
# Framework-side code runs in this namespace. However, libs from other
# partitions are also allowed temporarily.
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
###############################################################################
namespace.default.isolated = false
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.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}
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
###############################################################################
# "sphal" namespace
#
# SP-HAL(Sameprocess-HAL)s are the only vendor libraries that are allowed to be
# loaded inside system processes. libEGL_<chipset>.so, libGLESv2_<chipset>.so,
# android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs.
#
# This namespace is exclusivly for SP-HALs. When the framework tries to dynami-
# cally load SP-HALs, android_dlopen_ext() is used to explicitly specifying
# that they should be searched and loaded from this namespace.
#
# Note that there is no link from the default namespace to this namespace.
###############################################################################
namespace.sphal.isolated = true
namespace.sphal.visible = true
namespace.sphal.search.paths = /odm/${LIB}
namespace.sphal.search.paths += /vendor/${LIB}
namespace.sphal.permitted.paths = /odm/${LIB}
namespace.sphal.permitted.paths += /vendor/${LIB}
namespace.sphal.asan.search.paths = /data/asan/odm/${LIB}
namespace.sphal.asan.search.paths += /odm/${LIB}
namespace.sphal.asan.search.paths += /data/asan/vendor/${LIB}
namespace.sphal.asan.search.paths += /vendor/${LIB}
namespace.sphal.asan.permitted.paths = /data/asan/odm/${LIB}
namespace.sphal.asan.permitted.paths += /odm/${LIB}
namespace.sphal.asan.permitted.paths += /data/asan/vendor/${LIB}
namespace.sphal.asan.permitted.paths += /vendor/${LIB}
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
# Once in this namespace, access to libraries in /system/lib is restricted. Only
# libs listed here can be used.
namespace.sphal.links = default,vndk,rs
namespace.sphal.link.default.shared_libs = %LLNDK_LIBRARIES%
namespace.sphal.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
namespace.sphal.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES%
# Renderscript gets separate namespace
namespace.sphal.link.rs.shared_libs = libRS_internal.so
###############################################################################
# "rs" namespace
#
# This namespace is exclusively for Renderscript internal libraries.
# This namespace has slightly looser restriction than the vndk namespace because
# of the genuine characteristics of Renderscript; /data is in the permitted path
# to load the compiled *.so file and libmediandk.so can be used here.
###############################################################################
namespace.rs.isolated = true
namespace.rs.visible = true
namespace.rs.search.paths = /odm/${LIB}/vndk-sp
namespace.rs.search.paths += /vendor/${LIB}/vndk-sp
namespace.rs.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
namespace.rs.search.paths += /odm/${LIB}
namespace.rs.search.paths += /vendor/${LIB}
namespace.rs.permitted.paths = /odm/${LIB}
namespace.rs.permitted.paths += /vendor/${LIB}
namespace.rs.permitted.paths += /data
namespace.rs.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp
namespace.rs.asan.search.paths += /odm/${LIB}/vndk-sp
namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.rs.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.rs.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%
namespace.rs.asan.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
namespace.rs.asan.search.paths += /data/asan/odm/${LIB}
namespace.rs.asan.search.paths += /odm/${LIB}
namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}
namespace.rs.asan.search.paths += /vendor/${LIB}
namespace.rs.asan.permitted.paths = /data/asan/odm/${LIB}
namespace.rs.asan.permitted.paths += /odm/${LIB}
namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB}
namespace.rs.asan.permitted.paths += /vendor/${LIB}
namespace.rs.asan.permitted.paths += /data
namespace.rs.links = default,vndk
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 = %VNDK_SAMEPROCESS_LIBRARIES%
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
###############################################################################
# "vndk" namespace
#
# This namespace is exclusively for vndk-sp libs.
###############################################################################
namespace.vndk.isolated = true
namespace.vndk.visible = true
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
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
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.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
namespace.vndk.asan.permitted.paths += /odm/${LIB}/egl
namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/hw
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
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
# 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 = %LLNDK_LIBRARIES%
namespace.vndk.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
###############################################################################
# Namespace config for vendor processes. In O, no restriction is enforced for
# them. However, in O-MR1, access to /system/${LIB} will not be allowed to
# the default namespace. 'system' namespace will be added to give limited
# (LL-NDK only) access.
###############################################################################
Configure ld.config.txt for SP-HALs Now, framework process (any process that is executing /system/bin/* or /system/xbin/*) are started with three namespaces; default, sphal and vndk. default namespace is the namespace that is responsible for loading libs from /system/lib. It can't load libs from other places such as /vendor/lib. (However, we temporarily open the path since we haven't finished the system partition cleanup, but will do eventually). sphal namespace is the namespace where SP-HAL (Same-process HAL) is loaded. SP-HAL are the only vendor libraries that are allowed to be loaded inside framework processes. libEGL_<chipset>.so and android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. When framework needs to load those SP-HALs, it explicitly loads it from this namespace using android_get_exported_namespace() and android_dlopen_ext(). vndk namespace is the namespace for loading vndk-sp (Vendor-NDK for Same-Process) libs, which is a small set of framework libraries that SP-HALs can link against. These libraries are compiled for the same version of Android that the vendor partition is compiled against. SP-HALs can not use libraries other than vndk-sp and ndk libs. Membership to vndk-sp and ndk are strictly closed. Note that in a system, there are two copies of vndk-sp libs. One at /system/lib and the other at /vendor/lib/vndk-sp. As a result, there can be two instances of a same library in a process. Also adds ld.config.legacy.txt which is used on non-Treble devices where PRODUCT_FULL_TREBLE is not set to true. Note, this split can be cleaned up further after b/37139976 is solved. Bug: 34407260 Test: git diff HEAD:rootdir/etc/ld.config.legacy.txt HEAD^:rootdir/etc/ld.config.txt => 0 Test: sailfish boots (because BOARD_VNDK_VERSION is not set to 'current') Change-Id: I8331d94edc38f22c4f8abc66cdf2050af9d0605b
2017-04-05 05:24:14 +00:00
[vendor]
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
# 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.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}