blob: c8d87c8f03ad370b18b3b632d1adf0ee8429df7c [file] [log] [blame]
Justin Yun24c29f12017-06-16 18:11:35 +09001# Copyright (C) 2017 The Android Open Source Project
2#
3# Bionic loader config file.
4#
5
6# Don't change the order here. The first pattern that matches with the
Steven Morelandab338c12017-11-28 12:41:56 -08007# absolute path of an executable is selected.
Justin Yun24c29f12017-06-16 18:11:35 +09008dir.system = /system/bin/
9dir.system = /system/xbin/
Jiyong Park2498e1b2017-12-12 22:11:47 +090010
11dir.vendor = /odm/bin/
Justin Yun24c29f12017-06-16 18:11:35 +090012dir.vendor = /vendor/bin/
Jiyong Park2498e1b2017-12-12 22:11:47 +090013dir.vendor = /data/nativetest/odm
14dir.vendor = /data/nativetest64/odm
15dir.vendor = /data/benchmarktest/odm
16dir.vendor = /data/benchmarktest64/odm
Justin Yun24c29f12017-06-16 18:11:35 +090017dir.vendor = /data/nativetest/vendor
18dir.vendor = /data/nativetest64/vendor
19dir.vendor = /data/benchmarktest/vendor
20dir.vendor = /data/benchmarktest64/vendor
Jiyong Park2498e1b2017-12-12 22:11:47 +090021
Justin Yun24c29f12017-06-16 18:11:35 +090022dir.system = /data/nativetest
23dir.system = /data/nativetest64
24dir.system = /data/benchmarktest
25dir.system = /data/benchmarktest64
26
27[system]
28additional.namespaces = sphal,vndk,rs
29
30###############################################################################
31# "default" namespace
32#
Jiyong Park55f05d72017-08-28 14:42:49 +090033# Framework-side code runs in this namespace. Libs from /vendor partition
Justin Yun24c29f12017-06-16 18:11:35 +090034# can't be loaded in this namespace.
35###############################################################################
Jiyong Park55f05d72017-08-28 14:42:49 +090036namespace.default.isolated = true
Justin Yun24c29f12017-06-16 18:11:35 +090037
Jiyong Park2498e1b2017-12-12 22:11:47 +090038namespace.default.search.paths = /system/${LIB}
39
40# We can't have entire /system/${LIB} as permitted paths because doing so
41# makes it possible to load libs in /system/${LIB}/vndk* directories by
42# their absolute paths (e.g. dlopen("/system/lib/vndk/libbase.so");).
43# VNDK libs are built with previous versions of Android and thus must not be
44# loaded into this namespace where libs built with the current version of
45# Android are loaded. Mixing the two types of libs in the same namespace can
46# cause unexpected problem.
47namespace.default.permitted.paths = /system/${LIB}/drm
48namespace.default.permitted.paths += /system/${LIB}/extractors
49namespace.default.permitted.paths += /system/${LIB}/hw
50# These are where odex files are located. libart has to be able to dlopen the files
51namespace.default.permitted.paths += /system/framework
52namespace.default.permitted.paths += /system/app
53namespace.default.permitted.paths += /system/priv-app
54namespace.default.permitted.paths += /vendor/framework
55namespace.default.permitted.paths += /vendor/app
56namespace.default.permitted.paths += /vendor/priv-app
57namespace.default.permitted.paths += /oem/app
Jaekyun Seokdff165d2017-11-28 12:10:10 +090058namespace.default.permitted.paths += /product/framework
59namespace.default.permitted.paths += /product/app
60namespace.default.permitted.paths += /product/priv-app
Jiyong Park2498e1b2017-12-12 22:11:47 +090061namespace.default.permitted.paths += /data
62namespace.default.permitted.paths += /mnt/expand
63
64namespace.default.asan.search.paths = /data/asan/system/${LIB}
65namespace.default.asan.search.paths += /system/${LIB}
66
67namespace.default.asan.permitted.paths = /data
68namespace.default.asan.permitted.paths += /system/${LIB}/drm
69namespace.default.asan.permitted.paths += /system/${LIB}/extractors
70namespace.default.asan.permitted.paths += /system/${LIB}/hw
71namespace.default.asan.permitted.paths += /system/framework
72namespace.default.asan.permitted.paths += /system/app
73namespace.default.asan.permitted.paths += /system/priv-app
74namespace.default.asan.permitted.paths += /vendor/framework
75namespace.default.asan.permitted.paths += /vendor/app
76namespace.default.asan.permitted.paths += /vendor/priv-app
77namespace.default.asan.permitted.paths += /oem/app
Jaekyun Seokdff165d2017-11-28 12:10:10 +090078namespace.default.asan.permitted.paths += /product/framework
79namespace.default.asan.permitted.paths += /product/app
80namespace.default.asan.permitted.paths += /product/priv-app
Jiyong Park2498e1b2017-12-12 22:11:47 +090081namespace.default.asan.permitted.paths += /mnt/expand
Justin Yun24c29f12017-06-16 18:11:35 +090082
83###############################################################################
84# "sphal" namespace
85#
86# SP-HAL(Sameprocess-HAL)s are the only vendor libraries that are allowed to be
87# loaded inside system processes. libEGL_<chipset>.so, libGLESv2_<chipset>.so,
88# android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs.
89#
90# This namespace is exclusivly for SP-HALs. When the framework tries to dynami-
91# cally load SP-HALs, android_dlopen_ext() is used to explicitly specifying
92# that they should be searched and loaded from this namespace.
93#
94# Note that there is no link from the default namespace to this namespace.
95###############################################################################
96namespace.sphal.isolated = true
97namespace.sphal.visible = true
Justin Yun24c29f12017-06-16 18:11:35 +090098
Jiyong Park2498e1b2017-12-12 22:11:47 +090099namespace.sphal.search.paths = /odm/${LIB}
100namespace.sphal.search.paths += /vendor/${LIB}
101
102namespace.sphal.permitted.paths = /odm/${LIB}
103namespace.sphal.permitted.paths += /vendor/${LIB}
104
105namespace.sphal.asan.search.paths = /data/asan/odm/${LIB}
106namespace.sphal.asan.search.paths += /odm/${LIB}
107namespace.sphal.asan.search.paths += /data/asan/vendor/${LIB}
108namespace.sphal.asan.search.paths += /vendor/${LIB}
109
110namespace.sphal.asan.permitted.paths = /data/asan/odm/${LIB}
111namespace.sphal.asan.permitted.paths += /odm/${LIB}
112namespace.sphal.asan.permitted.paths += /data/asan/vendor/${LIB}
113namespace.sphal.asan.permitted.paths += /vendor/${LIB}
Justin Yun24c29f12017-06-16 18:11:35 +0900114
115# Once in this namespace, access to libraries in /system/lib is restricted. Only
116# libs listed here can be used.
117namespace.sphal.links = default,vndk,rs
118
Jiyong Park2498e1b2017-12-12 22:11:47 +0900119namespace.sphal.link.default.shared_libs = %LLNDK_LIBRARIES%
120namespace.sphal.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
Justin Yun24c29f12017-06-16 18:11:35 +0900121
Jiyong Park36798462017-08-04 19:08:06 +0900122namespace.sphal.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES%
Justin Yun24c29f12017-06-16 18:11:35 +0900123
124# Renderscript gets separate namespace
125namespace.sphal.link.rs.shared_libs = libRS_internal.so
126
127###############################################################################
128# "rs" namespace
129#
130# This namespace is exclusively for Renderscript internal libraries.
131# This namespace has slightly looser restriction than the vndk namespace because
132# of the genuine characteristics of Renderscript; /data is in the permitted path
133# to load the compiled *.so file and libmediandk.so can be used here.
134###############################################################################
135namespace.rs.isolated = true
136namespace.rs.visible = true
Justin Yun24c29f12017-06-16 18:11:35 +0900137
Jiyong Park60a29662017-12-13 16:59:21 +0900138namespace.rs.search.paths = /odm/${LIB}/vndk-sp
139namespace.rs.search.paths += /vendor/${LIB}/vndk-sp
Justin Yuncbbf1952018-01-16 11:46:21 +0900140namespace.rs.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
Jiyong Park2498e1b2017-12-12 22:11:47 +0900141namespace.rs.search.paths += /odm/${LIB}
142namespace.rs.search.paths += /vendor/${LIB}
143
144namespace.rs.permitted.paths = /odm/${LIB}
145namespace.rs.permitted.paths += /vendor/${LIB}
146namespace.rs.permitted.paths += /data
147
Jiyong Park60a29662017-12-13 16:59:21 +0900148namespace.rs.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp
149namespace.rs.asan.search.paths += /odm/${LIB}/vndk-sp
150namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
151namespace.rs.asan.search.paths += /vendor/${LIB}/vndk-sp
Justin Yuncbbf1952018-01-16 11:46:21 +0900152namespace.rs.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%
153namespace.rs.asan.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
Jiyong Park2498e1b2017-12-12 22:11:47 +0900154namespace.rs.asan.search.paths += /data/asan/odm/${LIB}
155namespace.rs.asan.search.paths += /odm/${LIB}
156namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}
157namespace.rs.asan.search.paths += /vendor/${LIB}
158
159namespace.rs.asan.permitted.paths = /data/asan/odm/${LIB}
160namespace.rs.asan.permitted.paths += /odm/${LIB}
161namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB}
162namespace.rs.asan.permitted.paths += /vendor/${LIB}
163namespace.rs.asan.permitted.paths += /data
Justin Yun24c29f12017-06-16 18:11:35 +0900164
165namespace.rs.links = default,vndk
Jiyong Park2498e1b2017-12-12 22:11:47 +0900166
167namespace.rs.link.default.shared_libs = %LLNDK_LIBRARIES%
168namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
Jiyong Parkad7ddd52017-12-07 09:59:48 +0900169# Private LLNDK libs (e.g. libft2.so) are exceptionally allowed to this
170# namespace because RS framework libs are using them.
171namespace.rs.link.default.shared_libs += %PRIVATE_LLNDK_LIBRARIES%
Jiyong Park2498e1b2017-12-12 22:11:47 +0900172
Jiyong Park36798462017-08-04 19:08:06 +0900173namespace.rs.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES%
Justin Yun24c29f12017-06-16 18:11:35 +0900174
175###############################################################################
176# "vndk" namespace
177#
178# This namespace is exclusively for vndk-sp libs.
179###############################################################################
180namespace.vndk.isolated = true
Jiyong Parka07f3052017-08-22 10:26:10 +0900181namespace.vndk.visible = true
Justin Yun24c29f12017-06-16 18:11:35 +0900182
Jiyong Park60a29662017-12-13 16:59:21 +0900183namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
184namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
Justin Yuncbbf1952018-01-16 11:46:21 +0900185namespace.vndk.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
Jiyong Park2498e1b2017-12-12 22:11:47 +0900186
187namespace.vndk.permitted.paths = /odm/${LIB}/hw
188namespace.vndk.permitted.paths += /odm/${LIB}/egl
189namespace.vndk.permitted.paths += /vendor/${LIB}/hw
190namespace.vndk.permitted.paths += /vendor/${LIB}/egl
191# This is exceptionally required since android.hidl.memory@1.0-impl.so is here
Justin Yuncbbf1952018-01-16 11:46:21 +0900192namespace.vndk.permitted.paths += /system/${LIB}/vndk-sp%VNDK_VER%/hw
Jiyong Park2498e1b2017-12-12 22:11:47 +0900193
Jiyong Park60a29662017-12-13 16:59:21 +0900194namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp
195namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp
196namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
197namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
Justin Yuncbbf1952018-01-16 11:46:21 +0900198namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%
199namespace.vndk.asan.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
Jiyong Park2498e1b2017-12-12 22:11:47 +0900200
201namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
202namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
203namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
204namespace.vndk.asan.permitted.paths += /odm/${LIB}/egl
205namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/hw
206namespace.vndk.asan.permitted.paths += /vendor/${LIB}/hw
207namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/egl
208namespace.vndk.asan.permitted.paths += /vendor/${LIB}/egl
209
Justin Yuncbbf1952018-01-16 11:46:21 +0900210namespace.vndk.asan.permitted.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%/hw
211namespace.vndk.asan.permitted.paths += /system/${LIB}/vndk-sp%VNDK_VER%/hw
Justin Yun24c29f12017-06-16 18:11:35 +0900212
213# When these NDK libs are required inside this namespace, then it is redirected
214# to the default namespace. This is possible since their ABI is stable across
215# Android releases.
216namespace.vndk.links = default
Jiyong Park2498e1b2017-12-12 22:11:47 +0900217namespace.vndk.link.default.shared_libs = %LLNDK_LIBRARIES%
218namespace.vndk.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
Justin Yun24c29f12017-06-16 18:11:35 +0900219
220###############################################################################
221# Namespace config for vendor processes. In O, no restriction is enforced for
222# them. However, in O-MR1, access to /system/${LIB} will not be allowed to
223# the default namespace. 'system' namespace will be added to give limited
224# (LL-NDK only) access.
225###############################################################################
226[vendor]
Logan Chien225b71d2017-12-15 22:19:57 +0800227additional.namespaces = system,vndk
Justin Yun24c29f12017-06-16 18:11:35 +0900228
229###############################################################################
230# "default" namespace
231#
Jiyong Parkad7ddd52017-12-07 09:59:48 +0900232# This is the default linker namespace for a vendor process (a process started
233# from /vendor/bin/*). The main executable and the libs under /vendor/lib[64]
234# are loaded directly into this namespace. However, other libs under the system
235# partition (VNDK and LLNDK libraries) are not loaded here but from the
236# separate namespace 'system'. The delegation to the system namespace is done
237# via the 'namespace.default.link.system.shared_libs' property below.
Justin Yun24c29f12017-06-16 18:11:35 +0900238###############################################################################
239namespace.default.isolated = true
240namespace.default.visible = true
241
Jiyong Park2498e1b2017-12-12 22:11:47 +0900242namespace.default.search.paths = /odm/${LIB}
Jiyong Park2498e1b2017-12-12 22:11:47 +0900243namespace.default.search.paths += /vendor/${LIB}
Justin Yun24c29f12017-06-16 18:11:35 +0900244
Jiyong Park2498e1b2017-12-12 22:11:47 +0900245namespace.default.permitted.paths = /odm
246namespace.default.permitted.paths += /vendor
247
248namespace.default.asan.search.paths = /data/asan/odm/${LIB}
249namespace.default.asan.search.paths += /odm/${LIB}
Jiyong Park2498e1b2017-12-12 22:11:47 +0900250namespace.default.asan.search.paths += /data/asan/vendor/${LIB}
251namespace.default.asan.search.paths += /vendor/${LIB}
Jiyong Park2498e1b2017-12-12 22:11:47 +0900252
Jiyong Park2498e1b2017-12-12 22:11:47 +0900253namespace.default.asan.permitted.paths = /data/asan/odm
254namespace.default.asan.permitted.paths += /odm
255namespace.default.asan.permitted.paths += /data/asan/vendor
256namespace.default.asan.permitted.paths += /vendor
Justin Yun24c29f12017-06-16 18:11:35 +0900257
Logan Chien225b71d2017-12-15 22:19:57 +0800258namespace.default.links = system,vndk
259namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES%
260namespace.default.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES%
261namespace.default.link.vndk.shared_libs += %VNDK_CORE_LIBRARIES%
262
263###############################################################################
264# "vndk" namespace
265#
266# This namespace is where VNDK and VNDK-SP libraries are loaded for
267# a vendor process.
268###############################################################################
269namespace.vndk.isolated = false
270
Logan Chien91b3fb42018-01-11 20:00:37 +0800271namespace.vndk.search.paths = /odm/${LIB}/vndk
272namespace.vndk.search.paths += /odm/${LIB}/vndk-sp
273namespace.vndk.search.paths += /vendor/${LIB}/vndk
274namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
275namespace.vndk.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
Justin Yuncbbf1952018-01-16 11:46:21 +0900276namespace.vndk.search.paths += /system/${LIB}/vndk%VNDK_VER%
Logan Chien225b71d2017-12-15 22:19:57 +0800277
Logan Chien91b3fb42018-01-11 20:00:37 +0800278namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk
279namespace.vndk.asan.search.paths += /odm/${LIB}/vndk
280namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}/vndk-sp
281namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp
282namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk
283namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk
284namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
285namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
286namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%
Justin Yuncbbf1952018-01-16 11:46:21 +0900287namespace.vndk.asan.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
288namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk%VNDK_VER%
289namespace.vndk.asan.search.paths += /system/${LIB}/vndk%VNDK_VER%
Logan Chien225b71d2017-12-15 22:19:57 +0800290
291# When these NDK libs are required inside this namespace, then it is redirected
292# to the system namespace. This is possible since their ABI is stable across
293# Android releases.
Logan Chienea4a2bd2018-01-18 12:06:14 +0800294namespace.vndk.links = system,default
Logan Chien225b71d2017-12-15 22:19:57 +0800295namespace.vndk.link.system.shared_libs = %LLNDK_LIBRARIES%
296namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
Justin Yun24c29f12017-06-16 18:11:35 +0900297
Logan Chienea4a2bd2018-01-18 12:06:14 +0800298namespace.vndk.link.default.allow_all_shared_libs = true
299
Justin Yun24c29f12017-06-16 18:11:35 +0900300###############################################################################
301# "system" namespace
302#
Jiyong Parkad7ddd52017-12-07 09:59:48 +0900303# This namespace is where system libs (VNDK and LLNDK libs) are loaded for
304# a vendor process.
Justin Yun24c29f12017-06-16 18:11:35 +0900305###############################################################################
306namespace.system.isolated = false
Justin Yun24c29f12017-06-16 18:11:35 +0900307
Logan Chien225b71d2017-12-15 22:19:57 +0800308namespace.system.search.paths = /system/${LIB}
Jiyong Park2498e1b2017-12-12 22:11:47 +0900309
Logan Chien225b71d2017-12-15 22:19:57 +0800310namespace.system.asan.search.paths = /data/asan/system/${LIB}
Jiyong Park2498e1b2017-12-12 22:11:47 +0900311namespace.system.asan.search.paths += /system/${LIB}