450cff4b68
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
15 lines
486 B
Text
15 lines
486 B
Text
# Copyright (C) 2017 The Android Open Source Project
|
|
#
|
|
# Bionic loader config file.
|
|
# This gives the exactly the same namespace setup in pre-O.
|
|
#
|
|
|
|
# All binaries gets the same configuration 'legacy'
|
|
dir.legacy = /system
|
|
dir.legacy = /vendor
|
|
dir.legacy = /sbin
|
|
|
|
[legacy]
|
|
namespace.default.isolated = false
|
|
namespace.default.search.paths = /system/${LIB}:/vendor/${LIB}
|
|
namespace.default.asan.search.paths = /data/asan/system/${LIB}:/system/${LIB}:/data/asan/vendor/${LIB}:/vendor/${LIB}
|