ld.config.txt revision cbbf195e46fcd1ea0ec6449739608b41c9a242be
1# 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
7# absolute path of an executable is selected.
8dir.system = /system/bin/
9dir.system = /system/xbin/
10
11dir.vendor = /odm/bin/
12dir.vendor = /vendor/bin/
13dir.vendor = /data/nativetest/odm
14dir.vendor = /data/nativetest64/odm
15dir.vendor = /data/benchmarktest/odm
16dir.vendor = /data/benchmarktest64/odm
17dir.vendor = /data/nativetest/vendor
18dir.vendor = /data/nativetest64/vendor
19dir.vendor = /data/benchmarktest/vendor
20dir.vendor = /data/benchmarktest64/vendor
21
22dir.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#
33# Framework-side code runs in this namespace. However, libs from other
34# partitions are also allowed temporarily.
35###############################################################################
36namespace.default.isolated = false
37
38namespace.default.search.paths  = /system/${LIB}
39namespace.default.search.paths += /odm/${LIB}
40namespace.default.search.paths += /vendor/${LIB}
41
42namespace.default.asan.search.paths  = /data/asan/system/${LIB}
43namespace.default.asan.search.paths +=           /system/${LIB}
44namespace.default.asan.search.paths += /data/asan/odm/${LIB}
45namespace.default.asan.search.paths +=           /odm/${LIB}
46namespace.default.asan.search.paths += /data/asan/vendor/${LIB}
47namespace.default.asan.search.paths +=           /vendor/${LIB}
48
49###############################################################################
50# "sphal" namespace
51#
52# SP-HAL(Sameprocess-HAL)s are the only vendor libraries that are allowed to be
53# loaded inside system processes. libEGL_<chipset>.so, libGLESv2_<chipset>.so,
54# android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs.
55#
56# This namespace is exclusivly for SP-HALs. When the framework tries to dynami-
57# cally load SP-HALs, android_dlopen_ext() is used to explicitly specifying
58# that they should be searched and loaded from this namespace.
59#
60# Note that there is no link from the default namespace to this namespace.
61###############################################################################
62namespace.sphal.isolated = true
63namespace.sphal.visible = true
64
65namespace.sphal.search.paths  = /odm/${LIB}
66namespace.sphal.search.paths += /vendor/${LIB}
67
68namespace.sphal.permitted.paths  = /odm/${LIB}
69namespace.sphal.permitted.paths += /vendor/${LIB}
70
71namespace.sphal.asan.search.paths  = /data/asan/odm/${LIB}
72namespace.sphal.asan.search.paths +=           /odm/${LIB}
73namespace.sphal.asan.search.paths += /data/asan/vendor/${LIB}
74namespace.sphal.asan.search.paths +=           /vendor/${LIB}
75
76namespace.sphal.asan.permitted.paths  = /data/asan/odm/${LIB}
77namespace.sphal.asan.permitted.paths +=           /odm/${LIB}
78namespace.sphal.asan.permitted.paths += /data/asan/vendor/${LIB}
79namespace.sphal.asan.permitted.paths +=           /vendor/${LIB}
80
81# Once in this namespace, access to libraries in /system/lib is restricted. Only
82# libs listed here can be used.
83namespace.sphal.links = default,vndk,rs
84
85# WARNING: only NDK libs can be listed here.
86namespace.sphal.link.default.shared_libs  = libc.so
87namespace.sphal.link.default.shared_libs += libEGL.so
88namespace.sphal.link.default.shared_libs += libGLESv1_CM.so
89namespace.sphal.link.default.shared_libs += libGLESv2.so
90namespace.sphal.link.default.shared_libs += libdl.so
91namespace.sphal.link.default.shared_libs += liblog.so
92namespace.sphal.link.default.shared_libs += libm.so
93namespace.sphal.link.default.shared_libs += libnativewindow.so
94namespace.sphal.link.default.shared_libs += libstdc++.so
95namespace.sphal.link.default.shared_libs += libsync.so
96namespace.sphal.link.default.shared_libs += libvndksupport.so
97namespace.sphal.link.default.shared_libs += libz.so
98
99# WARNING: only VNDK-SP libs can be listed here. DO NOT EDIT this line.
100namespace.sphal.link.vndk.shared_libs  = android.hardware.renderscript@1.0.so
101namespace.sphal.link.vndk.shared_libs += android.hardware.graphics.common@1.0.so
102namespace.sphal.link.vndk.shared_libs += android.hardware.graphics.mapper@2.0.so
103namespace.sphal.link.vndk.shared_libs += android.hidl.memory@1.0.so
104namespace.sphal.link.vndk.shared_libs += libbase.so
105namespace.sphal.link.vndk.shared_libs += libc++.so
106namespace.sphal.link.vndk.shared_libs += libcutils.so
107namespace.sphal.link.vndk.shared_libs += libhardware.so
108namespace.sphal.link.vndk.shared_libs += libhidlbase.so
109namespace.sphal.link.vndk.shared_libs += libhidlmemory.so
110namespace.sphal.link.vndk.shared_libs += libhidltransport.so
111namespace.sphal.link.vndk.shared_libs += libhwbinder.so
112namespace.sphal.link.vndk.shared_libs += libion.so
113namespace.sphal.link.vndk.shared_libs += libutils.so
114
115# Renderscript gets separate namespace
116namespace.sphal.link.rs.shared_libs = libRS_internal.so
117
118###############################################################################
119# "rs" namespace
120#
121# This namespace is exclusively for Renderscript internal libraries.
122# This namespace has slightly looser restriction than the vndk namespace because
123# of the genuine characteristics of Renderscript; /data is in the permitted path
124# to load the compiled *.so file and libmediandk.so can be used here.
125###############################################################################
126namespace.rs.isolated = true
127namespace.rs.visible = true
128
129namespace.rs.search.paths  = /odm/${LIB}/vndk-sp
130namespace.rs.search.paths += /vendor/${LIB}/vndk-sp
131namespace.rs.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
132namespace.rs.search.paths += /odm/${LIB}
133namespace.rs.search.paths += /vendor/${LIB}
134
135namespace.rs.permitted.paths  = /odm/${LIB}
136namespace.rs.permitted.paths += /vendor/${LIB}
137namespace.rs.permitted.paths += /data
138
139namespace.rs.asan.search.paths  = /data/asan/odm/${LIB}/vndk-sp
140namespace.rs.asan.search.paths +=           /odm/${LIB}/vndk-sp
141namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
142namespace.rs.asan.search.paths +=           /vendor/${LIB}/vndk-sp
143namespace.rs.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%
144namespace.rs.asan.search.paths +=           /system/${LIB}/vndk-sp%VNDK_VER%
145namespace.rs.asan.search.paths += /data/asan/odm/${LIB}
146namespace.rs.asan.search.paths +=           /odm/${LIB}
147namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}
148namespace.rs.asan.search.paths +=           /vendor/${LIB}
149
150namespace.rs.asan.permitted.paths  = /data/asan/odm/${LIB}
151namespace.rs.asan.permitted.paths +=           /odm/${LIB}
152namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB}
153namespace.rs.asan.permitted.paths +=           /vendor/${LIB}
154namespace.rs.asan.permitted.paths += /data
155
156namespace.rs.links = default,vndk
157
158namespace.rs.link.default.shared_libs  = libc.so
159namespace.rs.link.default.shared_libs += libEGL.so
160namespace.rs.link.default.shared_libs += libGLESv1_CM.so
161namespace.rs.link.default.shared_libs += libGLESv2.so
162namespace.rs.link.default.shared_libs += libdl.so
163namespace.rs.link.default.shared_libs += liblog.so
164namespace.rs.link.default.shared_libs += libm.so
165namespace.rs.link.default.shared_libs += libnativewindow.so
166namespace.rs.link.default.shared_libs += libstdc++.so
167namespace.rs.link.default.shared_libs += libsync.so
168namespace.rs.link.default.shared_libs += libvndksupport.so
169namespace.rs.link.default.shared_libs += libz.so
170# These two libs are private LLNDK libs but are exceptionally visible
171# in this 'rs' namespace because RenderScript framework libraries
172# which are loaded into this namespace are using them.
173namespace.rs.link.default.shared_libs += libft2.so
174namespace.rs.link.default.shared_libs += libmediandk.so
175
176namespace.rs.link.vndk.shared_libs  = android.hardware.renderscript@1.0.so
177namespace.rs.link.vndk.shared_libs += android.hardware.graphics.common@1.0.so
178namespace.rs.link.vndk.shared_libs += android.hardware.graphics.mapper@2.0.so
179namespace.rs.link.vndk.shared_libs += android.hidl.memory@1.0.so
180namespace.rs.link.vndk.shared_libs += libbase.so
181namespace.rs.link.vndk.shared_libs += libc++.so
182namespace.rs.link.vndk.shared_libs += libcutils.so
183namespace.rs.link.vndk.shared_libs += libhardware.so
184namespace.rs.link.vndk.shared_libs += libhidlbase.so
185namespace.rs.link.vndk.shared_libs += libhidlmemory.so
186namespace.rs.link.vndk.shared_libs += libhidltransport.so
187namespace.rs.link.vndk.shared_libs += libhwbinder.so
188namespace.rs.link.vndk.shared_libs += libion.so
189namespace.rs.link.vndk.shared_libs += libutils.so
190
191###############################################################################
192# "vndk" namespace
193#
194# This namespace is exclusively for vndk-sp libs.
195###############################################################################
196namespace.vndk.isolated = true
197namespace.vndk.visible = true
198
199namespace.vndk.search.paths  = /odm/${LIB}/vndk-sp
200namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
201namespace.vndk.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
202
203namespace.vndk.permitted.paths  = /odm/${LIB}/hw
204namespace.vndk.permitted.paths += /odm/${LIB}/egl
205namespace.vndk.permitted.paths += /vendor/${LIB}/hw
206namespace.vndk.permitted.paths += /vendor/${LIB}/egl
207
208namespace.vndk.asan.search.paths  = /data/asan/odm/${LIB}/vndk-sp
209namespace.vndk.asan.search.paths +=           /odm/${LIB}/vndk-sp
210namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
211namespace.vndk.asan.search.paths +=           /vendor/${LIB}/vndk-sp
212namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%
213namespace.vndk.asan.search.paths +=           /system/${LIB}/vndk-sp%VNDK_VER%
214
215namespace.vndk.asan.permitted.paths  = /data/asan/odm/${LIB}/hw
216namespace.vndk.asan.permitted.paths +=           /odm/${LIB}/hw
217namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
218namespace.vndk.asan.permitted.paths +=           /odm/${LIB}/egl
219namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/hw
220namespace.vndk.asan.permitted.paths +=           /vendor/${LIB}/hw
221namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/egl
222namespace.vndk.asan.permitted.paths +=           /vendor/${LIB}/egl
223
224# When these NDK libs are required inside this namespace, then it is redirected
225# to the default namespace. This is possible since their ABI is stable across
226# Android releases.
227namespace.vndk.links = default
228namespace.vndk.link.default.shared_libs  = android.hidl.memory@1.0-impl.so
229namespace.vndk.link.default.shared_libs += libEGL.so
230namespace.vndk.link.default.shared_libs += libc.so
231namespace.vndk.link.default.shared_libs += libdl.so
232namespace.vndk.link.default.shared_libs += liblog.so
233namespace.vndk.link.default.shared_libs += libm.so
234namespace.vndk.link.default.shared_libs += libnativewindow.so
235namespace.vndk.link.default.shared_libs += libstdc++.so
236namespace.vndk.link.default.shared_libs += libsync.so
237namespace.vndk.link.default.shared_libs += libvndksupport.so
238namespace.vndk.link.default.shared_libs += libz.so
239
240###############################################################################
241# Namespace config for vendor processes. In O, no restriction is enforced for
242# them. However, in O-MR1, access to /system/${LIB} will not be allowed to
243# the default namespace. 'system' namespace will be added to give limited
244# (LL-NDK only) access.
245###############################################################################
246[vendor]
247namespace.default.isolated = false
248
249namespace.default.search.paths  = /odm/${LIB}
250namespace.default.search.paths += /odm/${LIB}/vndk
251namespace.default.search.paths += /odm/${LIB}/vndk-sp
252namespace.default.search.paths += /vendor/${LIB}
253namespace.default.search.paths += /vendor/${LIB}/vndk
254namespace.default.search.paths += /vendor/${LIB}/vndk-sp
255
256# Access to system libraries are allowed
257namespace.default.search.paths += /system/${LIB}/vndk%VNDK_VER%
258namespace.default.search.paths += /system/${LIB}/vndk-sp%VNDK_VER%
259namespace.default.search.paths += /system/${LIB}
260
261namespace.default.asan.search.paths  = /data/asan/odm/${LIB}
262namespace.default.asan.search.paths +=           /odm/${LIB}
263namespace.default.asan.search.paths += /data/asan/odm/${LIB}/vndk
264namespace.default.asan.search.paths +=           /odm/${LIB}/vndk
265namespace.default.asan.search.paths += /data/asan/odm/${LIB}/vndk-sp
266namespace.default.asan.search.paths +=           /odm/${LIB}/vndk-sp
267namespace.default.asan.search.paths += /data/asan/vendor/${LIB}
268namespace.default.asan.search.paths +=           /vendor/${LIB}
269namespace.default.asan.search.paths += /data/asan/vendor/${LIB}/vndk
270namespace.default.asan.search.paths +=           /vendor/${LIB}/vndk
271namespace.default.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
272namespace.default.asan.search.paths +=           /vendor/${LIB}/vndk-sp
273namespace.default.asan.search.paths += /data/asan/system/${LIB}/vndk%VNDK_VER%
274namespace.default.asan.search.paths +=           /system/${LIB}/vndk%VNDK_VER%
275namespace.default.asan.search.paths += /data/asan/system/${LIB}/vndk-sp%VNDK_VER%
276namespace.default.asan.search.paths +=           /system/${LIB}/vndk-sp%VNDK_VER%
277namespace.default.asan.search.paths += /data/asan/system/${LIB}
278namespace.default.asan.search.paths +=           /system/${LIB}
279