xref: /aosp_15_r20/bionic/tests/libs/Android.bp (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker//
2*8d67ca89SAndroid Build Coastguard Worker// Copyright (C) 2012 The Android Open Source Project
3*8d67ca89SAndroid Build Coastguard Worker//
4*8d67ca89SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
5*8d67ca89SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
6*8d67ca89SAndroid Build Coastguard Worker// You may obtain a copy of the License at
7*8d67ca89SAndroid Build Coastguard Worker//
8*8d67ca89SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
9*8d67ca89SAndroid Build Coastguard Worker//
10*8d67ca89SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
11*8d67ca89SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
12*8d67ca89SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*8d67ca89SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
14*8d67ca89SAndroid Build Coastguard Worker// limitations under the License.
15*8d67ca89SAndroid Build Coastguard Worker//
16*8d67ca89SAndroid Build Coastguard Worker
17*8d67ca89SAndroid Build Coastguard Workerpackage {
18*8d67ca89SAndroid Build Coastguard Worker    default_team: "trendy_team_native_tools_libraries",
19*8d67ca89SAndroid Build Coastguard Worker    default_applicable_licenses: ["bionic_tests_license"],
20*8d67ca89SAndroid Build Coastguard Worker}
21*8d67ca89SAndroid Build Coastguard Worker
22*8d67ca89SAndroid Build Coastguard Workercc_defaults {
23*8d67ca89SAndroid Build Coastguard Worker    name: "bionic_testlib_defaults",
24*8d67ca89SAndroid Build Coastguard Worker    host_supported: true,
25*8d67ca89SAndroid Build Coastguard Worker    cflags: [
26*8d67ca89SAndroid Build Coastguard Worker        "-Wall",
27*8d67ca89SAndroid Build Coastguard Worker        "-Werror",
28*8d67ca89SAndroid Build Coastguard Worker    ],
29*8d67ca89SAndroid Build Coastguard Worker    ldflags: [
30*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--rpath,${ORIGIN}",
31*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--enable-new-dtags",
32*8d67ca89SAndroid Build Coastguard Worker    ],
33*8d67ca89SAndroid Build Coastguard Worker    static_libs: ["libbase"],
34*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs",
35*8d67ca89SAndroid Build Coastguard Worker    gtest: false,
36*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
37*8d67ca89SAndroid Build Coastguard Worker        address: false,
38*8d67ca89SAndroid Build Coastguard Worker    },
39*8d67ca89SAndroid Build Coastguard Worker    stl: "libc++_static",
40*8d67ca89SAndroid Build Coastguard Worker    target: {
41*8d67ca89SAndroid Build Coastguard Worker        darwin: {
42*8d67ca89SAndroid Build Coastguard Worker            enabled: false,
43*8d67ca89SAndroid Build Coastguard Worker        },
44*8d67ca89SAndroid Build Coastguard Worker    },
45*8d67ca89SAndroid Build Coastguard Worker    strip: {
46*8d67ca89SAndroid Build Coastguard Worker        none: true,
47*8d67ca89SAndroid Build Coastguard Worker    },
48*8d67ca89SAndroid Build Coastguard Worker}
49*8d67ca89SAndroid Build Coastguard Worker
50*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
51*8d67ca89SAndroid Build Coastguard Worker// Test library ELFs for linker page size related tests
52*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
53*8d67ca89SAndroid Build Coastguard Workercc_test_library {
54*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elf_max_page_size_4kib",
55*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
56*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elf_max_page_size.c"],
57*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-z max-page-size=0x1000"],
58*8d67ca89SAndroid Build Coastguard Worker}
59*8d67ca89SAndroid Build Coastguard Worker
60*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
61*8d67ca89SAndroid Build Coastguard Worker// Libraries and helper binaries for ELF TLS
62*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
63*8d67ca89SAndroid Build Coastguard Workercc_test_library {
64*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_shared_var",
65*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
66*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_shared_var.cpp"],
67*8d67ca89SAndroid Build Coastguard Worker}
68*8d67ca89SAndroid Build Coastguard Worker
69*8d67ca89SAndroid Build Coastguard Workercc_test_library {
70*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_shared_var_ie",
71*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
72*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_shared_var_ie.cpp"],
73*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_elftls_shared_var"],
74*8d67ca89SAndroid Build Coastguard Worker}
75*8d67ca89SAndroid Build Coastguard Worker
76*8d67ca89SAndroid Build Coastguard Workercc_test_library {
77*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_tprel",
78*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
79*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_tprel.cpp"],
80*8d67ca89SAndroid Build Coastguard Worker}
81*8d67ca89SAndroid Build Coastguard Worker
82*8d67ca89SAndroid Build Coastguard Workercc_test {
83*8d67ca89SAndroid Build Coastguard Worker    name: "elftls_dlopen_ie_error_helper",
84*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
85*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_dlopen_ie_error_helper.cpp"],
86*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
87*8d67ca89SAndroid Build Coastguard Worker}
88*8d67ca89SAndroid Build Coastguard Worker
89*8d67ca89SAndroid Build Coastguard Workercc_test_library {
90*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_dynamic",
91*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
92*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_dynamic.cpp"],
93*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_elftls_shared_var"],
94*8d67ca89SAndroid Build Coastguard Worker}
95*8d67ca89SAndroid Build Coastguard Worker
96*8d67ca89SAndroid Build Coastguard Workercc_test {
97*8d67ca89SAndroid Build Coastguard Worker    name: "thread_exit_cb_helper",
98*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
99*8d67ca89SAndroid Build Coastguard Worker    srcs: ["thread_exit_cb_helper.cpp"],
100*8d67ca89SAndroid Build Coastguard Worker}
101*8d67ca89SAndroid Build Coastguard Worker
102*8d67ca89SAndroid Build Coastguard Workercc_test {
103*8d67ca89SAndroid Build Coastguard Worker    name: "tls_properties_helper",
104*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
105*8d67ca89SAndroid Build Coastguard Worker    srcs: ["tls_properties_helper.cpp"],
106*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_elftls_shared_var"],
107*8d67ca89SAndroid Build Coastguard Worker}
108*8d67ca89SAndroid Build Coastguard Worker
109*8d67ca89SAndroid Build Coastguard Workercc_test_library {
110*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_dynamic_filler_1",
111*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
112*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_dynamic_filler.cpp"],
113*8d67ca89SAndroid Build Coastguard Worker    cflags: [
114*8d67ca89SAndroid Build Coastguard Worker        "-DTLS_FILLER=100",
115*8d67ca89SAndroid Build Coastguard Worker    ],
116*8d67ca89SAndroid Build Coastguard Worker}
117*8d67ca89SAndroid Build Coastguard Worker
118*8d67ca89SAndroid Build Coastguard Workercc_test_library {
119*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_dynamic_filler_2",
120*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
121*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_dynamic_filler.cpp"],
122*8d67ca89SAndroid Build Coastguard Worker    cflags: [
123*8d67ca89SAndroid Build Coastguard Worker        "-DTLS_FILLER=200",
124*8d67ca89SAndroid Build Coastguard Worker    ],
125*8d67ca89SAndroid Build Coastguard Worker}
126*8d67ca89SAndroid Build Coastguard Worker
127*8d67ca89SAndroid Build Coastguard Workercc_test_library {
128*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_dynamic_filler_3",
129*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
130*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_dynamic_filler.cpp"],
131*8d67ca89SAndroid Build Coastguard Worker    cflags: [
132*8d67ca89SAndroid Build Coastguard Worker        "-DTLS_FILLER=300",
133*8d67ca89SAndroid Build Coastguard Worker    ],
134*8d67ca89SAndroid Build Coastguard Worker}
135*8d67ca89SAndroid Build Coastguard Worker
136*8d67ca89SAndroid Build Coastguard Workercc_test_library {
137*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_dynamic_filler_4",
138*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
139*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_dynamic_filler.cpp"],
140*8d67ca89SAndroid Build Coastguard Worker    cflags: [
141*8d67ca89SAndroid Build Coastguard Worker        "-DTLS_FILLER=400",
142*8d67ca89SAndroid Build Coastguard Worker    ],
143*8d67ca89SAndroid Build Coastguard Worker}
144*8d67ca89SAndroid Build Coastguard Worker
145*8d67ca89SAndroid Build Coastguard Workercc_test_library {
146*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_elftls_dynamic_filler_5",
147*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
148*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_dynamic_filler.cpp"],
149*8d67ca89SAndroid Build Coastguard Worker    cflags: [
150*8d67ca89SAndroid Build Coastguard Worker        "-DTLS_FILLER=500",
151*8d67ca89SAndroid Build Coastguard Worker    ],
152*8d67ca89SAndroid Build Coastguard Worker}
153*8d67ca89SAndroid Build Coastguard Worker
154*8d67ca89SAndroid Build Coastguard Workercc_test {
155*8d67ca89SAndroid Build Coastguard Worker    name: "elftls_dtv_resize_helper",
156*8d67ca89SAndroid Build Coastguard Worker    defaults: [
157*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
158*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
159*8d67ca89SAndroid Build Coastguard Worker    ],
160*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_dtv_resize_helper.cpp"],
161*8d67ca89SAndroid Build Coastguard Worker    include_dirs: [
162*8d67ca89SAndroid Build Coastguard Worker        "bionic/libc",
163*8d67ca89SAndroid Build Coastguard Worker    ],
164*8d67ca89SAndroid Build Coastguard Worker    static_libs: [
165*8d67ca89SAndroid Build Coastguard Worker        "libbase",
166*8d67ca89SAndroid Build Coastguard Worker    ],
167*8d67ca89SAndroid Build Coastguard Worker}
168*8d67ca89SAndroid Build Coastguard Worker
169*8d67ca89SAndroid Build Coastguard Workercc_test {
170*8d67ca89SAndroid Build Coastguard Worker    name: "elftls_align_test_helper",
171*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
172*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_align_test_helper.cpp"],
173*8d67ca89SAndroid Build Coastguard Worker    stl: "none", // avoid including extra TLS variables in the executable
174*8d67ca89SAndroid Build Coastguard Worker}
175*8d67ca89SAndroid Build Coastguard Worker
176*8d67ca89SAndroid Build Coastguard Workercc_test {
177*8d67ca89SAndroid Build Coastguard Worker    name: "elftls_skew_align_test_helper",
178*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
179*8d67ca89SAndroid Build Coastguard Worker    srcs: ["elftls_skew_align_test_helper.cpp"],
180*8d67ca89SAndroid Build Coastguard Worker    stl: "none", // avoid including extra TLS variables in the executable
181*8d67ca89SAndroid Build Coastguard Worker}
182*8d67ca89SAndroid Build Coastguard Worker
183*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
184*8d67ca89SAndroid Build Coastguard Worker// Library to test gnu-styled hash
185*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
186*8d67ca89SAndroid Build Coastguard Workercc_test_library {
187*8d67ca89SAndroid Build Coastguard Worker    name: "libgnu-hash-table-library",
188*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
189*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlext_test_library.cpp"],
190*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--hash-style=gnu"],
191*8d67ca89SAndroid Build Coastguard Worker}
192*8d67ca89SAndroid Build Coastguard Worker
193*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
194*8d67ca89SAndroid Build Coastguard Worker// Library to test sysv-styled hash
195*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
196*8d67ca89SAndroid Build Coastguard Workercc_test_library {
197*8d67ca89SAndroid Build Coastguard Worker    name: "libsysv-hash-table-library",
198*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
199*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlext_test_library.cpp"],
200*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--hash-style=sysv"],
201*8d67ca89SAndroid Build Coastguard Worker}
202*8d67ca89SAndroid Build Coastguard Worker
203*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
204*8d67ca89SAndroid Build Coastguard Worker// Library used by dlext tests - with GNU RELRO program header
205*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
206*8d67ca89SAndroid Build Coastguard Workercc_test_library {
207*8d67ca89SAndroid Build Coastguard Worker    name: "libdlext_test",
208*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
209*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlext_test_library.cpp"],
210*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-z,relro"],
211*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_simple"],
212*8d67ca89SAndroid Build Coastguard Worker}
213*8d67ca89SAndroid Build Coastguard Worker
214*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
215*8d67ca89SAndroid Build Coastguard Worker// Library used by dlext tests - without GNU RELRO program header
216*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
217*8d67ca89SAndroid Build Coastguard Workercc_test_library {
218*8d67ca89SAndroid Build Coastguard Worker    name: "libdlext_test_norelro",
219*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
220*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlext_test_library.cpp"],
221*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-z,norelro"],
222*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_simple"],
223*8d67ca89SAndroid Build Coastguard Worker}
224*8d67ca89SAndroid Build Coastguard Worker
225*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
226*8d67ca89SAndroid Build Coastguard Worker// Library used by dlext tests - recursive use of RELRO sharing
227*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
228*8d67ca89SAndroid Build Coastguard Workercc_test_library {
229*8d67ca89SAndroid Build Coastguard Worker    name: "libdlext_test_recursive",
230*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
231*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlext_test_recursive_library.cpp"],
232*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-z,relro"],
233*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libdlext_test"],
234*8d67ca89SAndroid Build Coastguard Worker}
235*8d67ca89SAndroid Build Coastguard Worker
236*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
237*8d67ca89SAndroid Build Coastguard Worker// Library used by dlext tests - different name non-default location
238*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
239*8d67ca89SAndroid Build Coastguard Workercc_test_library {
240*8d67ca89SAndroid Build Coastguard Worker    name: "libdlext_test_fd",
241*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
242*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
243*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlext_test_library.cpp"],
244*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
245*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/libdlext_test_fd",
246*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_simple"],
247*8d67ca89SAndroid Build Coastguard Worker}
248*8d67ca89SAndroid Build Coastguard Worker
249*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
250*8d67ca89SAndroid Build Coastguard Worker// Libraries used by dlext tests for open from a zip-file
251*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
252*8d67ca89SAndroid Build Coastguard Workercc_test_library {
253*8d67ca89SAndroid Build Coastguard Worker    name: "libdlext_test_zip",
254*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
255*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
256*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlext_test_library.cpp"],
257*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libatest_simple_zip"],
258*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/libdlext_test_zip",
259*8d67ca89SAndroid Build Coastguard Worker}
260*8d67ca89SAndroid Build Coastguard Worker
261*8d67ca89SAndroid Build Coastguard Workercc_test_library {
262*8d67ca89SAndroid Build Coastguard Worker    name: "libatest_simple_zip",
263*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
264*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
265*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_simple.cpp"],
266*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/libatest_simple_zip",
267*8d67ca89SAndroid Build Coastguard Worker}
268*8d67ca89SAndroid Build Coastguard Worker
269*8d67ca89SAndroid Build Coastguard Worker// ----------------------------------------------------------------------------
270*8d67ca89SAndroid Build Coastguard Worker// Library with soname which does not match filename
271*8d67ca89SAndroid Build Coastguard Worker// ----------------------------------------------------------------------------
272*8d67ca89SAndroid Build Coastguard Workercc_test_library {
273*8d67ca89SAndroid Build Coastguard Worker    name: "libdlext_test_different_soname",
274*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
275*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlext_test_library.cpp"],
276*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-soname=libdlext_test_soname.so"],
277*8d67ca89SAndroid Build Coastguard Worker}
278*8d67ca89SAndroid Build Coastguard Worker
279*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
280*8d67ca89SAndroid Build Coastguard Worker// Library used by dlext tests - zipped and aligned
281*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
282*8d67ca89SAndroid Build Coastguard Worker// In Android.mk to support zipped and aligned tests
283*8d67ca89SAndroid Build Coastguard Worker
284*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
285*8d67ca89SAndroid Build Coastguard Worker// Library used by dlfcn tests
286*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
287*8d67ca89SAndroid Build Coastguard Workercc_test_library {
288*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_simple",
289*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
290*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_simple.cpp"],
291*8d67ca89SAndroid Build Coastguard Worker}
292*8d67ca89SAndroid Build Coastguard Worker
293*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
294*8d67ca89SAndroid Build Coastguard Worker// Libraries and binaries used by memtag_stack_dlopen_test tests
295*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
296*8d67ca89SAndroid Build Coastguard Workercc_test_library {
297*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_simple_memtag_stack",
298*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
299*8d67ca89SAndroid Build Coastguard Worker        memtag_stack: true,
300*8d67ca89SAndroid Build Coastguard Worker    },
301*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_simple.cpp"],
302*8d67ca89SAndroid Build Coastguard Worker}
303*8d67ca89SAndroid Build Coastguard Worker
304*8d67ca89SAndroid Build Coastguard Workercc_test_library {
305*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_depends_on_simple_memtag_stack",
306*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
307*8d67ca89SAndroid Build Coastguard Worker        memtag_stack: false,
308*8d67ca89SAndroid Build Coastguard Worker    },
309*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
310*8d67ca89SAndroid Build Coastguard Worker        "libtest_simple_memtag_stack",
311*8d67ca89SAndroid Build Coastguard Worker    ],
312*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_depends_on_simple.cpp"],
313*8d67ca89SAndroid Build Coastguard Worker}
314*8d67ca89SAndroid Build Coastguard Worker
315*8d67ca89SAndroid Build Coastguard Workercc_binary {
316*8d67ca89SAndroid Build Coastguard Worker    name: "testbinary_is_stack_mte_after_dlopen",
317*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
318*8d67ca89SAndroid Build Coastguard Worker        memtag_stack: false,
319*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
320*8d67ca89SAndroid Build Coastguard Worker    },
321*8d67ca89SAndroid Build Coastguard Worker    srcs: ["testbinary_is_stack_mte_after_dlopen.cpp"],
322*8d67ca89SAndroid Build Coastguard Worker}
323*8d67ca89SAndroid Build Coastguard Worker
324*8d67ca89SAndroid Build Coastguard Workercc_binary {
325*8d67ca89SAndroid Build Coastguard Worker    name: "testbinary_depends_on_simple_memtag_stack",
326*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
327*8d67ca89SAndroid Build Coastguard Worker        memtag_stack: false,
328*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
329*8d67ca89SAndroid Build Coastguard Worker    },
330*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
331*8d67ca89SAndroid Build Coastguard Worker        "libtest_simple_memtag_stack",
332*8d67ca89SAndroid Build Coastguard Worker    ],
333*8d67ca89SAndroid Build Coastguard Worker    srcs: ["testbinary_is_stack_mte.cpp"],
334*8d67ca89SAndroid Build Coastguard Worker}
335*8d67ca89SAndroid Build Coastguard Worker
336*8d67ca89SAndroid Build Coastguard Workercc_binary {
337*8d67ca89SAndroid Build Coastguard Worker    name: "testbinary_depends_on_depends_on_simple_memtag_stack",
338*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
339*8d67ca89SAndroid Build Coastguard Worker        memtag_stack: false,
340*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
341*8d67ca89SAndroid Build Coastguard Worker    },
342*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
343*8d67ca89SAndroid Build Coastguard Worker        "libtest_depends_on_simple_memtag_stack",
344*8d67ca89SAndroid Build Coastguard Worker    ],
345*8d67ca89SAndroid Build Coastguard Worker    srcs: ["testbinary_is_stack_mte.cpp"],
346*8d67ca89SAndroid Build Coastguard Worker}
347*8d67ca89SAndroid Build Coastguard Worker
348*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
349*8d67ca89SAndroid Build Coastguard Worker// Libraries used by hwasan_test
350*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
351*8d67ca89SAndroid Build Coastguard Workercc_test_library {
352*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_simple_hwasan",
353*8d67ca89SAndroid Build Coastguard Worker    arch: {
354*8d67ca89SAndroid Build Coastguard Worker        arm64: {
355*8d67ca89SAndroid Build Coastguard Worker            enabled: true,
356*8d67ca89SAndroid Build Coastguard Worker        },
357*8d67ca89SAndroid Build Coastguard Worker    },
358*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
359*8d67ca89SAndroid Build Coastguard Worker        hwaddress: true,
360*8d67ca89SAndroid Build Coastguard Worker    },
361*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "hwasan",
362*8d67ca89SAndroid Build Coastguard Worker    enabled: false,
363*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_simple_hwasan.cpp"],
364*8d67ca89SAndroid Build Coastguard Worker}
365*8d67ca89SAndroid Build Coastguard Worker
366*8d67ca89SAndroid Build Coastguard Workercc_test_library {
367*8d67ca89SAndroid Build Coastguard Worker    // A weird name. This is the vanilla (non-HWASan) copy of the library that
368*8d67ca89SAndroid Build Coastguard Worker    // is used for the hwasan test.
369*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_simple_hwasan_nohwasan",
370*8d67ca89SAndroid Build Coastguard Worker    arch: {
371*8d67ca89SAndroid Build Coastguard Worker        arm64: {
372*8d67ca89SAndroid Build Coastguard Worker            enabled: true,
373*8d67ca89SAndroid Build Coastguard Worker        },
374*8d67ca89SAndroid Build Coastguard Worker    },
375*8d67ca89SAndroid Build Coastguard Worker    stem: "libtest_simple_hwasan",
376*8d67ca89SAndroid Build Coastguard Worker    enabled: false,
377*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_simple_hwasan.cpp"],
378*8d67ca89SAndroid Build Coastguard Worker}
379*8d67ca89SAndroid Build Coastguard Worker
380*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
381*8d67ca89SAndroid Build Coastguard Worker// Library used by dlext direct unload on the namespace boundary tests
382*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
383*8d67ca89SAndroid Build Coastguard Workercc_test_library {
384*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_missing_symbol",
385*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
386*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_missing_symbol.cpp"],
387*8d67ca89SAndroid Build Coastguard Worker    allow_undefined_symbols: true,
388*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
389*8d67ca89SAndroid Build Coastguard Worker}
390*8d67ca89SAndroid Build Coastguard Worker
391*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
392*8d67ca89SAndroid Build Coastguard Worker// Library used by dlext indirect unload on the namespace boundary tests
393*8d67ca89SAndroid Build Coastguard Worker//
394*8d67ca89SAndroid Build Coastguard Worker// These libraries produce following dependency graph:
395*8d67ca89SAndroid Build Coastguard Worker// libtest_missing_symbol_root (private ns)
396*8d67ca89SAndroid Build Coastguard Worker// +-> libbnstest_public (public ns)
397*8d67ca89SAndroid Build Coastguard Worker// +-> libtest_missing_symbol_child_public (public ns)
398*8d67ca89SAndroid Build Coastguard Worker//     +-> libnstest_public (public ns)
399*8d67ca89SAndroid Build Coastguard Worker// +-> libtest_missing_symbol_child_private (private_ns)
400*8d67ca89SAndroid Build Coastguard Worker//     +-> libnstest_public (public_ns)
401*8d67ca89SAndroid Build Coastguard Worker//
402*8d67ca89SAndroid Build Coastguard Worker// All libraries except libtest_missing_symbol are located in
403*8d67ca89SAndroid Build Coastguard Worker// private_namespace_libs/
404*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
405*8d67ca89SAndroid Build Coastguard Workercc_test_library {
406*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_missing_symbol_child_public",
407*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
408*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
409*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
410*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libnstest_public"],
411*8d67ca89SAndroid Build Coastguard Worker}
412*8d67ca89SAndroid Build Coastguard Worker
413*8d67ca89SAndroid Build Coastguard Workercc_test_library {
414*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_missing_symbol_child_private",
415*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
416*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
417*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
418*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libnstest_public"],
419*8d67ca89SAndroid Build Coastguard Worker}
420*8d67ca89SAndroid Build Coastguard Worker
421*8d67ca89SAndroid Build Coastguard Workercc_test_library {
422*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_missing_symbol_root",
423*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
424*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_missing_symbol.cpp"],
425*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
426*8d67ca89SAndroid Build Coastguard Worker    allow_undefined_symbols: true,
427*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
428*8d67ca89SAndroid Build Coastguard Worker        "libnstest_public",
429*8d67ca89SAndroid Build Coastguard Worker        "libtest_missing_symbol_child_public",
430*8d67ca89SAndroid Build Coastguard Worker        "libtest_missing_symbol_child_private",
431*8d67ca89SAndroid Build Coastguard Worker    ],
432*8d67ca89SAndroid Build Coastguard Worker}
433*8d67ca89SAndroid Build Coastguard Worker
434*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
435*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
436*8d67ca89SAndroid Build Coastguard Worker// Library used by dlfcn nodelete tests
437*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
438*8d67ca89SAndroid Build Coastguard Workercc_test_library {
439*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_nodelete_1",
440*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
441*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_nodelete_1.cpp"],
442*8d67ca89SAndroid Build Coastguard Worker}
443*8d67ca89SAndroid Build Coastguard Worker
444*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
445*8d67ca89SAndroid Build Coastguard Worker// Library used by dlfcn nodelete tests
446*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
447*8d67ca89SAndroid Build Coastguard Workercc_test_library {
448*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_nodelete_2",
449*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
450*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_nodelete_2.cpp"],
451*8d67ca89SAndroid Build Coastguard Worker}
452*8d67ca89SAndroid Build Coastguard Worker
453*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
454*8d67ca89SAndroid Build Coastguard Worker// Library used by dlfcn nodelete tests
455*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
456*8d67ca89SAndroid Build Coastguard Workercc_test_library {
457*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_nodelete_dt_flags_1",
458*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
459*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_nodelete_dt_flags_1.cpp"],
460*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-z,nodelete"],
461*8d67ca89SAndroid Build Coastguard Worker}
462*8d67ca89SAndroid Build Coastguard Worker
463*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
464*8d67ca89SAndroid Build Coastguard Worker// Build test helper libraries for linker namespaces
465*8d67ca89SAndroid Build Coastguard Worker//
466*8d67ca89SAndroid Build Coastguard Worker// This set of libraries is used to verify linker namespaces.
467*8d67ca89SAndroid Build Coastguard Worker//
468*8d67ca89SAndroid Build Coastguard Worker// Test cases
469*8d67ca89SAndroid Build Coastguard Worker// 1. Check that private libraries loaded in different namespaces are
470*8d67ca89SAndroid Build Coastguard Worker//    different. Check that dlsym does not confuse them.
471*8d67ca89SAndroid Build Coastguard Worker// 2. Check that public libraries loaded in different namespaces are shared
472*8d67ca89SAndroid Build Coastguard Worker//    between them.
473*8d67ca89SAndroid Build Coastguard Worker// 3. Check that namespace sticks on dlopen
474*8d67ca89SAndroid Build Coastguard Worker// 4. Check that having access to shared library (libnstest_public.so)
475*8d67ca89SAndroid Build Coastguard Worker//    does not expose symbols from dependent library (libnstest_public_internal.so)
476*8d67ca89SAndroid Build Coastguard Worker//
477*8d67ca89SAndroid Build Coastguard Worker// Dependency tree (visibility)
478*8d67ca89SAndroid Build Coastguard Worker// libnstest_root.so (this should be local to the namespace)
479*8d67ca89SAndroid Build Coastguard Worker// +-> libnstest_public.so
480*8d67ca89SAndroid Build Coastguard Worker//     +-> libnstest_public_internal.so
481*8d67ca89SAndroid Build Coastguard Worker// +-> libnstest_private.so
482*8d67ca89SAndroid Build Coastguard Worker//
483*8d67ca89SAndroid Build Coastguard Worker// libnstest_dlopened.so (library in private namespace dlopened from libnstest_root.so)
484*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
485*8d67ca89SAndroid Build Coastguard Workercc_test_library {
486*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_root",
487*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
488*8d67ca89SAndroid Build Coastguard Worker    srcs: ["namespaces_root.cpp"],
489*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
490*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
491*8d67ca89SAndroid Build Coastguard Worker        "libnstest_public",
492*8d67ca89SAndroid Build Coastguard Worker        "libnstest_private",
493*8d67ca89SAndroid Build Coastguard Worker    ],
494*8d67ca89SAndroid Build Coastguard Worker}
495*8d67ca89SAndroid Build Coastguard Worker
496*8d67ca89SAndroid Build Coastguard Workercc_test_library {
497*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_public_internal",
498*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
499*8d67ca89SAndroid Build Coastguard Worker    srcs: ["namespaces_public_internal.cpp"],
500*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
501*8d67ca89SAndroid Build Coastguard Worker}
502*8d67ca89SAndroid Build Coastguard Worker
503*8d67ca89SAndroid Build Coastguard Workercc_test_library {
504*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_public",
505*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
506*8d67ca89SAndroid Build Coastguard Worker    srcs: ["namespaces_public.cpp"],
507*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
508*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libnstest_public_internal"],
509*8d67ca89SAndroid Build Coastguard Worker}
510*8d67ca89SAndroid Build Coastguard Worker
511*8d67ca89SAndroid Build Coastguard Workercc_test_library {
512*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_private",
513*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
514*8d67ca89SAndroid Build Coastguard Worker    srcs: ["namespaces_private.cpp"],
515*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
516*8d67ca89SAndroid Build Coastguard Worker}
517*8d67ca89SAndroid Build Coastguard Worker
518*8d67ca89SAndroid Build Coastguard Workercc_test_library {
519*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_dlopened",
520*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
521*8d67ca89SAndroid Build Coastguard Worker    srcs: ["namespaces_dlopened.cpp"],
522*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
523*8d67ca89SAndroid Build Coastguard Worker}
524*8d67ca89SAndroid Build Coastguard Worker
525*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
526*8d67ca89SAndroid Build Coastguard Worker// Build test helper libraries for linker namespaces for allow all shared libs
527*8d67ca89SAndroid Build Coastguard Worker//
528*8d67ca89SAndroid Build Coastguard Worker// This set of libraries is used to verify linker namespaces for allow all
529*8d67ca89SAndroid Build Coastguard Worker// shared libs.
530*8d67ca89SAndroid Build Coastguard Worker//
531*8d67ca89SAndroid Build Coastguard Worker// Test cases
532*8d67ca89SAndroid Build Coastguard Worker// 1. Check that namespace a exposes libnstest_ns_a_public1 to
533*8d67ca89SAndroid Build Coastguard Worker//    namespace b while keeping libnstest_ns_a_public1_internal as an
534*8d67ca89SAndroid Build Coastguard Worker//    internal lib.
535*8d67ca89SAndroid Build Coastguard Worker// 2. Check that namespace b exposes all libraries to namespace a.
536*8d67ca89SAndroid Build Coastguard Worker//
537*8d67ca89SAndroid Build Coastguard Worker// Dependency tree (visibility)
538*8d67ca89SAndroid Build Coastguard Worker// libnstest_ns_b_public2.so  (ns:b)
539*8d67ca89SAndroid Build Coastguard Worker// +-> libnstest_ns_a_public1.so  (ns:a)
540*8d67ca89SAndroid Build Coastguard Worker//     +-> libnstest_ns_a_public2_internal.so  (ns:a)
541*8d67ca89SAndroid Build Coastguard Worker//     +-> libnstest_ns_b_public3.so  (ns:b)
542*8d67ca89SAndroid Build Coastguard Worker//
543*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
544*8d67ca89SAndroid Build Coastguard Workercc_test_library {
545*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_ns_a_public1",
546*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
547*8d67ca89SAndroid Build Coastguard Worker    srcs: ["libnstest_ns_a_public1.cpp"],
548*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/ns_a",
549*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
550*8d67ca89SAndroid Build Coastguard Worker        "libnstest_ns_a_public1_internal",
551*8d67ca89SAndroid Build Coastguard Worker        "libnstest_ns_b_public3",
552*8d67ca89SAndroid Build Coastguard Worker    ],
553*8d67ca89SAndroid Build Coastguard Worker}
554*8d67ca89SAndroid Build Coastguard Worker
555*8d67ca89SAndroid Build Coastguard Workercc_test_library {
556*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_ns_a_public1_internal",
557*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
558*8d67ca89SAndroid Build Coastguard Worker    srcs: ["libnstest_ns_a_public1_internal.cpp"],
559*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/ns_a",
560*8d67ca89SAndroid Build Coastguard Worker}
561*8d67ca89SAndroid Build Coastguard Worker
562*8d67ca89SAndroid Build Coastguard Workercc_test_library {
563*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_ns_b_public2",
564*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
565*8d67ca89SAndroid Build Coastguard Worker    srcs: ["libnstest_ns_b_public2.cpp"],
566*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/ns_b",
567*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libnstest_ns_a_public1"],
568*8d67ca89SAndroid Build Coastguard Worker}
569*8d67ca89SAndroid Build Coastguard Worker
570*8d67ca89SAndroid Build Coastguard Workercc_test_library {
571*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_ns_b_public3",
572*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
573*8d67ca89SAndroid Build Coastguard Worker    srcs: ["libnstest_ns_b_public3.cpp"],
574*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/ns_b",
575*8d67ca89SAndroid Build Coastguard Worker}
576*8d67ca89SAndroid Build Coastguard Worker
577*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
578*8d67ca89SAndroid Build Coastguard Worker// Build test helper libraries for linker namespaces
579*8d67ca89SAndroid Build Coastguard Worker//
580*8d67ca89SAndroid Build Coastguard Worker// This set of libraries is to test isolated namespaces
581*8d67ca89SAndroid Build Coastguard Worker//
582*8d67ca89SAndroid Build Coastguard Worker// Isolated namespaces do not allow loading of the library outside of
583*8d67ca89SAndroid Build Coastguard Worker// the search paths.
584*8d67ca89SAndroid Build Coastguard Worker//
585*8d67ca89SAndroid Build Coastguard Worker// This library cannot be loaded in isolated namespace because one of DT_NEEDED
586*8d67ca89SAndroid Build Coastguard Worker// libraries is outside of the search paths.
587*8d67ca89SAndroid Build Coastguard Worker//
588*8d67ca89SAndroid Build Coastguard Worker// libnstest_root_not_isolated.so (DT_RUNPATH = $ORIGIN/../private_namespace_libs_external/)
589*8d67ca89SAndroid Build Coastguard Worker// +-> libnstest_public.so
590*8d67ca89SAndroid Build Coastguard Worker// +-> libnstest_private_external.so (located in $ORIGIN/../private_namespace_libs_external/)
591*8d67ca89SAndroid Build Coastguard Worker//
592*8d67ca89SAndroid Build Coastguard Worker// Search path: $NATIVE_TESTS/private_namespace_libs/
593*8d67ca89SAndroid Build Coastguard Worker//
594*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
595*8d67ca89SAndroid Build Coastguard Worker
596*8d67ca89SAndroid Build Coastguard Workercc_test_library {
597*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_root_not_isolated",
598*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
599*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
600*8d67ca89SAndroid Build Coastguard Worker    srcs: ["namespaces_root.cpp"],
601*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
602*8d67ca89SAndroid Build Coastguard Worker        "libnstest_public",
603*8d67ca89SAndroid Build Coastguard Worker        "libnstest_private_external",
604*8d67ca89SAndroid Build Coastguard Worker    ],
605*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
606*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,$ORIGIN/../private_namespace_libs_external"],
607*8d67ca89SAndroid Build Coastguard Worker}
608*8d67ca89SAndroid Build Coastguard Worker
609*8d67ca89SAndroid Build Coastguard Workercc_test_library {
610*8d67ca89SAndroid Build Coastguard Worker    name: "libnstest_private_external",
611*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
612*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
613*8d67ca89SAndroid Build Coastguard Worker    srcs: ["namespaces_private.cpp"],
614*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/private_namespace_libs_external",
615*8d67ca89SAndroid Build Coastguard Worker}
616*8d67ca89SAndroid Build Coastguard Worker
617*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
618*8d67ca89SAndroid Build Coastguard Worker// ns_hidden_child linker namespace test
619*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
620*8d67ca89SAndroid Build Coastguard Worker
621*8d67ca89SAndroid Build Coastguard Workercc_test {
622*8d67ca89SAndroid Build Coastguard Worker    name: "ns_hidden_child_helper",
623*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
624*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
625*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ns_hidden_child_helper.cpp"],
626*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
627*8d67ca89SAndroid Build Coastguard Worker        "libns_hidden_child_internal",
628*8d67ca89SAndroid Build Coastguard Worker        "libns_hidden_child_global",
629*8d67ca89SAndroid Build Coastguard Worker        "libdl_android",
630*8d67ca89SAndroid Build Coastguard Worker    ],
631*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
632*8d67ca89SAndroid Build Coastguard Worker}
633*8d67ca89SAndroid Build Coastguard Worker
634*8d67ca89SAndroid Build Coastguard Workercc_test_library {
635*8d67ca89SAndroid Build Coastguard Worker    name: "libns_hidden_child_global",
636*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
637*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
638*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ns_hidden_child_global.cpp"],
639*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libns_hidden_child_internal"],
640*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-z,global"],
641*8d67ca89SAndroid Build Coastguard Worker}
642*8d67ca89SAndroid Build Coastguard Worker
643*8d67ca89SAndroid Build Coastguard Workercc_test_library {
644*8d67ca89SAndroid Build Coastguard Worker    name: "libns_hidden_child_internal",
645*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
646*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
647*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ns_hidden_child_internal.cpp"],
648*8d67ca89SAndroid Build Coastguard Worker}
649*8d67ca89SAndroid Build Coastguard Worker
650*8d67ca89SAndroid Build Coastguard Workercc_test_library {
651*8d67ca89SAndroid Build Coastguard Worker    name: "libns_hidden_child_public",
652*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
653*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
654*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ns_hidden_child_public.cpp"],
655*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libns_hidden_child_internal"],
656*8d67ca89SAndroid Build Coastguard Worker}
657*8d67ca89SAndroid Build Coastguard Worker
658*8d67ca89SAndroid Build Coastguard Workercc_test_library {
659*8d67ca89SAndroid Build Coastguard Worker    name: "libns_hidden_child_app",
660*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
661*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
662*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ns_hidden_child_app.cpp"],
663*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libns_hidden_child_public"],
664*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/ns_hidden_child_app",
665*8d67ca89SAndroid Build Coastguard Worker}
666*8d67ca89SAndroid Build Coastguard Worker
667*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
668*8d67ca89SAndroid Build Coastguard Worker// Build DT_RUNPATH test helper libraries
669*8d67ca89SAndroid Build Coastguard Worker//
670*8d67ca89SAndroid Build Coastguard Worker// Dependencies
671*8d67ca89SAndroid Build Coastguard Worker//
672*8d67ca89SAndroid Build Coastguard Worker// libtest_dt_runpath_d.so                       runpath: ${ORIGIN}/dt_runpath_b_c_x, ${ORIGIN}/dt_runpath_y/${LIB}
673*8d67ca89SAndroid Build Coastguard Worker// |-> dt_runpath_b_c_x/libtest_dt_runpath_b.so  runpath: ${ORIGIN}/../dt_runpath_a
674*8d67ca89SAndroid Build Coastguard Worker// |   |-> dt_runpath_a/libtest_dt_runpath_a.so
675*8d67ca89SAndroid Build Coastguard Worker// |-> dt_runpath_b_c_x/libtest_dt_runpath_c.so  runpath: ${ORIGIN}/invalid_dt_runpath
676*8d67ca89SAndroid Build Coastguard Worker// |   |-> libtest_dt_runpath_a.so (soname)
677*8d67ca89SAndroid Build Coastguard Worker// |-> dt_runpath_y/lib[64]/libtest_dt_runpath_y.so
678*8d67ca89SAndroid Build Coastguard Worker//
679*8d67ca89SAndroid Build Coastguard Worker// This one is used to test dlopen
680*8d67ca89SAndroid Build Coastguard Worker// dt_runpath_b_c_x/libtest_dt_runpath_x.so
681*8d67ca89SAndroid Build Coastguard Worker//
682*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
683*8d67ca89SAndroid Build Coastguard Worker
684*8d67ca89SAndroid Build Coastguard Worker// A leaf library in a non-standard directory.
685*8d67ca89SAndroid Build Coastguard Workercc_test_library {
686*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dt_runpath_a",
687*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
688*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
689*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/dt_runpath_a",
690*8d67ca89SAndroid Build Coastguard Worker}
691*8d67ca89SAndroid Build Coastguard Worker
692*8d67ca89SAndroid Build Coastguard Worker// Depends on library A with a DT_RUNPATH
693*8d67ca89SAndroid Build Coastguard Workercc_test_library {
694*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dt_runpath_b",
695*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
696*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
697*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_dt_runpath_a"],
698*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/dt_runpath_b_c_x",
699*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/../dt_runpath_a"],
700*8d67ca89SAndroid Build Coastguard Worker}
701*8d67ca89SAndroid Build Coastguard Worker
702*8d67ca89SAndroid Build Coastguard Worker// Depends on library A with an incorrect DT_RUNPATH. This does not matter
703*8d67ca89SAndroid Build Coastguard Worker// because B is the first in the D (below) dependency order, and library A
704*8d67ca89SAndroid Build Coastguard Worker// is already loaded using the correct DT_RUNPATH from library B.
705*8d67ca89SAndroid Build Coastguard Workercc_test_library {
706*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dt_runpath_c",
707*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
708*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
709*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_dt_runpath_a"],
710*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/dt_runpath_b_c_x",
711*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/invalid_dt_runpath"],
712*8d67ca89SAndroid Build Coastguard Worker}
713*8d67ca89SAndroid Build Coastguard Worker
714*8d67ca89SAndroid Build Coastguard Worker// D depends on B, C, and Y with DT_RUNPATH.
715*8d67ca89SAndroid Build Coastguard Workercc_test_library {
716*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dt_runpath_d",
717*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
718*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_b.cpp"],
719*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
720*8d67ca89SAndroid Build Coastguard Worker        "libtest_dt_runpath_b",
721*8d67ca89SAndroid Build Coastguard Worker        "libtest_dt_runpath_c",
722*8d67ca89SAndroid Build Coastguard Worker        "libtest_dt_runpath_y",
723*8d67ca89SAndroid Build Coastguard Worker    ],
724*8d67ca89SAndroid Build Coastguard Worker    ldflags: [
725*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--rpath,${ORIGIN}/dt_runpath_b_c_x",
726*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--rpath,${ORIGIN}/dt_runpath_y/${LIB}",
727*8d67ca89SAndroid Build Coastguard Worker    ],
728*8d67ca89SAndroid Build Coastguard Worker}
729*8d67ca89SAndroid Build Coastguard Worker
730*8d67ca89SAndroid Build Coastguard Worker// D version for open-from-zip test with runpath
731*8d67ca89SAndroid Build Coastguard Workercc_test_library {
732*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dt_runpath_d_zip",
733*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_b.cpp"],
734*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
735*8d67ca89SAndroid Build Coastguard Worker        "libtest_dt_runpath_b",
736*8d67ca89SAndroid Build Coastguard Worker        "libtest_dt_runpath_c",
737*8d67ca89SAndroid Build Coastguard Worker        "libtest_dt_runpath_y",
738*8d67ca89SAndroid Build Coastguard Worker    ],
739*8d67ca89SAndroid Build Coastguard Worker    cflags: [
740*8d67ca89SAndroid Build Coastguard Worker        "-Wall",
741*8d67ca89SAndroid Build Coastguard Worker        "-Werror",
742*8d67ca89SAndroid Build Coastguard Worker    ],
743*8d67ca89SAndroid Build Coastguard Worker    gtest: false,
744*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "libtest_dt_runpath_d_zip",
745*8d67ca89SAndroid Build Coastguard Worker    ldflags: [
746*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--rpath,${ORIGIN}/dt_runpath_b_c_x",
747*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--rpath,${ORIGIN}/dt_runpath_y/${LIB}",
748*8d67ca89SAndroid Build Coastguard Worker    ],
749*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
750*8d67ca89SAndroid Build Coastguard Worker        address: false,
751*8d67ca89SAndroid Build Coastguard Worker    },
752*8d67ca89SAndroid Build Coastguard Worker    stl: "libc++_static",
753*8d67ca89SAndroid Build Coastguard Worker    target: {
754*8d67ca89SAndroid Build Coastguard Worker        darwin: {
755*8d67ca89SAndroid Build Coastguard Worker            enabled: false,
756*8d67ca89SAndroid Build Coastguard Worker        },
757*8d67ca89SAndroid Build Coastguard Worker    },
758*8d67ca89SAndroid Build Coastguard Worker}
759*8d67ca89SAndroid Build Coastguard Worker
760*8d67ca89SAndroid Build Coastguard Worker// A leaf library in a directory library D has DT_RUNPATH for.
761*8d67ca89SAndroid Build Coastguard Workercc_test_library {
762*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dt_runpath_x",
763*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
764*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
765*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/dt_runpath_b_c_x",
766*8d67ca89SAndroid Build Coastguard Worker}
767*8d67ca89SAndroid Build Coastguard Worker
768*8d67ca89SAndroid Build Coastguard Worker// A leaf library in lib or lib64 directory
769*8d67ca89SAndroid Build Coastguard Workercc_test_library {
770*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dt_runpath_y",
771*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
772*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
773*8d67ca89SAndroid Build Coastguard Worker
774*8d67ca89SAndroid Build Coastguard Worker    multilib: {
775*8d67ca89SAndroid Build Coastguard Worker        lib32: {
776*8d67ca89SAndroid Build Coastguard Worker            relative_install_path: "bionic-loader-test-libs/dt_runpath_y/lib",
777*8d67ca89SAndroid Build Coastguard Worker        },
778*8d67ca89SAndroid Build Coastguard Worker        lib64: {
779*8d67ca89SAndroid Build Coastguard Worker            relative_install_path: "bionic-loader-test-libs/dt_runpath_y/lib64",
780*8d67ca89SAndroid Build Coastguard Worker        },
781*8d67ca89SAndroid Build Coastguard Worker    },
782*8d67ca89SAndroid Build Coastguard Worker}
783*8d67ca89SAndroid Build Coastguard Worker
784*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
785*8d67ca89SAndroid Build Coastguard Worker// Build library with two parents
786*8d67ca89SAndroid Build Coastguard Worker//
787*8d67ca89SAndroid Build Coastguard Worker// Libraries used by dlfcn tests to verify local group ref_counting
788*8d67ca89SAndroid Build Coastguard Worker// libtest_two_parents*.so
789*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
790*8d67ca89SAndroid Build Coastguard Worker
791*8d67ca89SAndroid Build Coastguard Worker// ..._child.so - correct answer
792*8d67ca89SAndroid Build Coastguard Workercc_test_library {
793*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_two_parents_child",
794*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
795*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_2_parents_reloc_answer.cpp"],
796*8d67ca89SAndroid Build Coastguard Worker}
797*8d67ca89SAndroid Build Coastguard Worker
798*8d67ca89SAndroid Build Coastguard Worker// ..._parent1.so - correct answer
799*8d67ca89SAndroid Build Coastguard Workercc_test_library {
800*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_two_parents_parent1",
801*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
802*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_reloc_answer_impl.cpp"],
803*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_two_parents_child"],
804*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=42"],
805*8d67ca89SAndroid Build Coastguard Worker}
806*8d67ca89SAndroid Build Coastguard Worker
807*8d67ca89SAndroid Build Coastguard Worker// ..._parent2.so - incorrect answer
808*8d67ca89SAndroid Build Coastguard Workercc_test_library {
809*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_two_parents_parent2",
810*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
811*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_reloc_answer_impl.cpp"],
812*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_two_parents_child"],
813*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=1"],
814*8d67ca89SAndroid Build Coastguard Worker}
815*8d67ca89SAndroid Build Coastguard Worker
816*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
817*8d67ca89SAndroid Build Coastguard Worker// Build libtest_check_order_dlsym.so with its dependencies.
818*8d67ca89SAndroid Build Coastguard Worker//
819*8d67ca89SAndroid Build Coastguard Worker// Libraries used by dlfcn tests to verify correct load order:
820*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
821*8d67ca89SAndroid Build Coastguard Worker
822*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_2_right.so
823*8d67ca89SAndroid Build Coastguard Workercc_test_library {
824*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_dlsym_2_right",
825*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
826*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_dlsym_answer.cpp"],
827*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=42"],
828*8d67ca89SAndroid Build Coastguard Worker}
829*8d67ca89SAndroid Build Coastguard Worker
830*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_a.so
831*8d67ca89SAndroid Build Coastguard Workercc_test_library {
832*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_dlsym_a",
833*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
834*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_dlsym_answer.cpp"],
835*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=1"],
836*8d67ca89SAndroid Build Coastguard Worker}
837*8d67ca89SAndroid Build Coastguard Worker
838*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_b.so
839*8d67ca89SAndroid Build Coastguard Workercc_test_library {
840*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_dlsym_b",
841*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
842*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_dlsym_answer.cpp"],
843*8d67ca89SAndroid Build Coastguard Worker    cflags: [
844*8d67ca89SAndroid Build Coastguard Worker        "-D__ANSWER=2",
845*8d67ca89SAndroid Build Coastguard Worker        "-D__ANSWER2=43",
846*8d67ca89SAndroid Build Coastguard Worker    ],
847*8d67ca89SAndroid Build Coastguard Worker}
848*8d67ca89SAndroid Build Coastguard Worker
849*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_c.so
850*8d67ca89SAndroid Build Coastguard Workercc_test_library {
851*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_dlsym_3_c",
852*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
853*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_dlsym_answer.cpp"],
854*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=3"],
855*8d67ca89SAndroid Build Coastguard Worker}
856*8d67ca89SAndroid Build Coastguard Worker
857*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_d.so
858*8d67ca89SAndroid Build Coastguard Workercc_test_library {
859*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_dlsym_d",
860*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
861*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_check_order_dlsym_b"],
862*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_dlsym_answer.cpp"],
863*8d67ca89SAndroid Build Coastguard Worker    cflags: [
864*8d67ca89SAndroid Build Coastguard Worker        "-D__ANSWER=4",
865*8d67ca89SAndroid Build Coastguard Worker        "-D__ANSWER2=4",
866*8d67ca89SAndroid Build Coastguard Worker    ],
867*8d67ca89SAndroid Build Coastguard Worker}
868*8d67ca89SAndroid Build Coastguard Worker
869*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_left.so
870*8d67ca89SAndroid Build Coastguard Workercc_test_library {
871*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_dlsym_1_left",
872*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
873*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
874*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_dlsym_a",
875*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_dlsym_b",
876*8d67ca89SAndroid Build Coastguard Worker    ],
877*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
878*8d67ca89SAndroid Build Coastguard Worker}
879*8d67ca89SAndroid Build Coastguard Worker
880*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order.so
881*8d67ca89SAndroid Build Coastguard Workercc_test_library {
882*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_dlsym",
883*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
884*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
885*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_dlsym_1_left",
886*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_dlsym_2_right",
887*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_dlsym_3_c",
888*8d67ca89SAndroid Build Coastguard Worker    ],
889*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
890*8d67ca89SAndroid Build Coastguard Worker}
891*8d67ca89SAndroid Build Coastguard Worker
892*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
893*8d67ca89SAndroid Build Coastguard Worker// Build libtest_check_order_siblings.so with its dependencies.
894*8d67ca89SAndroid Build Coastguard Worker//
895*8d67ca89SAndroid Build Coastguard Worker// Libraries used by dlfcn tests to verify correct relocation order:
896*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_reloc_siblings*.so
897*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
898*8d67ca89SAndroid Build Coastguard Worker
899*8d67ca89SAndroid Build Coastguard Worker// ..._1.so - empty
900*8d67ca89SAndroid Build Coastguard Workercc_test_library {
901*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_1",
902*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
903*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
904*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_a",
905*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_b",
906*8d67ca89SAndroid Build Coastguard Worker    ],
907*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
908*8d67ca89SAndroid Build Coastguard Worker}
909*8d67ca89SAndroid Build Coastguard Worker
910*8d67ca89SAndroid Build Coastguard Worker// ..._2.so - empty
911*8d67ca89SAndroid Build Coastguard Workercc_test_library {
912*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_2",
913*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
914*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
915*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_c",
916*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_d",
917*8d67ca89SAndroid Build Coastguard Worker    ],
918*8d67ca89SAndroid Build Coastguard Worker    srcs: [
919*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_grandchild_answer.cpp",
920*8d67ca89SAndroid Build Coastguard Worker    ],
921*8d67ca89SAndroid Build Coastguard Worker    allow_undefined_symbols: true,
922*8d67ca89SAndroid Build Coastguard Worker}
923*8d67ca89SAndroid Build Coastguard Worker
924*8d67ca89SAndroid Build Coastguard Worker// ..._3.so - get_answer2();
925*8d67ca89SAndroid Build Coastguard Workercc_test_library {
926*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_3",
927*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
928*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
929*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_e",
930*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_f",
931*8d67ca89SAndroid Build Coastguard Worker    ],
932*8d67ca89SAndroid Build Coastguard Worker    srcs: [
933*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_nephew_answer.cpp",
934*8d67ca89SAndroid Build Coastguard Worker    ],
935*8d67ca89SAndroid Build Coastguard Worker}
936*8d67ca89SAndroid Build Coastguard Worker
937*8d67ca89SAndroid Build Coastguard Worker// ..._a.so <- correct impl
938*8d67ca89SAndroid Build Coastguard Workercc_test_library {
939*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_a",
940*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
941*8d67ca89SAndroid Build Coastguard Worker    srcs: [
942*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_answer_impl.cpp",
943*8d67ca89SAndroid Build Coastguard Worker    ],
944*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=42"],
945*8d67ca89SAndroid Build Coastguard Worker}
946*8d67ca89SAndroid Build Coastguard Worker
947*8d67ca89SAndroid Build Coastguard Worker// ..._b.so
948*8d67ca89SAndroid Build Coastguard Workercc_test_library {
949*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_b",
950*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
951*8d67ca89SAndroid Build Coastguard Worker    srcs: [
952*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_answer_impl.cpp",
953*8d67ca89SAndroid Build Coastguard Worker    ],
954*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=1"],
955*8d67ca89SAndroid Build Coastguard Worker}
956*8d67ca89SAndroid Build Coastguard Worker
957*8d67ca89SAndroid Build Coastguard Worker// ..._c.so
958*8d67ca89SAndroid Build Coastguard Workercc_test_library {
959*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_c",
960*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
961*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
962*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_c_1",
963*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_c_2",
964*8d67ca89SAndroid Build Coastguard Worker    ],
965*8d67ca89SAndroid Build Coastguard Worker    srcs: [
966*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_answer_impl.cpp",
967*8d67ca89SAndroid Build Coastguard Worker    ],
968*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=2"],
969*8d67ca89SAndroid Build Coastguard Worker}
970*8d67ca89SAndroid Build Coastguard Worker
971*8d67ca89SAndroid Build Coastguard Worker// ..._d.so
972*8d67ca89SAndroid Build Coastguard Workercc_test_library {
973*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_d",
974*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
975*8d67ca89SAndroid Build Coastguard Worker    srcs: [
976*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_answer_impl.cpp",
977*8d67ca89SAndroid Build Coastguard Worker    ],
978*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=3"],
979*8d67ca89SAndroid Build Coastguard Worker}
980*8d67ca89SAndroid Build Coastguard Worker
981*8d67ca89SAndroid Build Coastguard Worker// ..._e.so
982*8d67ca89SAndroid Build Coastguard Workercc_test_library {
983*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_e",
984*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
985*8d67ca89SAndroid Build Coastguard Worker    srcs: [
986*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_answer_impl.cpp",
987*8d67ca89SAndroid Build Coastguard Worker    ],
988*8d67ca89SAndroid Build Coastguard Worker    cflags: [
989*8d67ca89SAndroid Build Coastguard Worker        "-D__ANSWER=4",
990*8d67ca89SAndroid Build Coastguard Worker    ],
991*8d67ca89SAndroid Build Coastguard Worker}
992*8d67ca89SAndroid Build Coastguard Worker
993*8d67ca89SAndroid Build Coastguard Worker// ..._f.so <- get_answer()
994*8d67ca89SAndroid Build Coastguard Workercc_test_library {
995*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_f",
996*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
997*8d67ca89SAndroid Build Coastguard Worker    srcs: [
998*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_answer.cpp",
999*8d67ca89SAndroid Build Coastguard Worker    ],
1000*8d67ca89SAndroid Build Coastguard Worker}
1001*8d67ca89SAndroid Build Coastguard Worker
1002*8d67ca89SAndroid Build Coastguard Worker// ..._c_1.so
1003*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1004*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_c_1",
1005*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1006*8d67ca89SAndroid Build Coastguard Worker    srcs: [
1007*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_grandchild_answer_impl.cpp",
1008*8d67ca89SAndroid Build Coastguard Worker    ],
1009*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=42"],
1010*8d67ca89SAndroid Build Coastguard Worker}
1011*8d67ca89SAndroid Build Coastguard Worker
1012*8d67ca89SAndroid Build Coastguard Worker// ..._c_2.so
1013*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1014*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings_c_2",
1015*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1016*8d67ca89SAndroid Build Coastguard Worker    srcs: [
1017*8d67ca89SAndroid Build Coastguard Worker        "dlopen_check_order_reloc_grandchild_answer_impl.cpp",
1018*8d67ca89SAndroid Build Coastguard Worker    ],
1019*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=0"],
1020*8d67ca89SAndroid Build Coastguard Worker}
1021*8d67ca89SAndroid Build Coastguard Worker
1022*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_reloc_siblings.so
1023*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1024*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_siblings",
1025*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1026*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
1027*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_1",
1028*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_2",
1029*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_siblings_3",
1030*8d67ca89SAndroid Build Coastguard Worker    ],
1031*8d67ca89SAndroid Build Coastguard Worker    srcs: [
1032*8d67ca89SAndroid Build Coastguard Worker        "empty.cpp",
1033*8d67ca89SAndroid Build Coastguard Worker    ],
1034*8d67ca89SAndroid Build Coastguard Worker}
1035*8d67ca89SAndroid Build Coastguard Worker
1036*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1037*8d67ca89SAndroid Build Coastguard Worker// Build libtest_check_order_root.so with its dependencies.
1038*8d67ca89SAndroid Build Coastguard Worker//
1039*8d67ca89SAndroid Build Coastguard Worker// Libraries used by dlfcn tests to verify correct relocation order:
1040*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_reloc_root*.so
1041*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1042*8d67ca89SAndroid Build Coastguard Worker
1043*8d67ca89SAndroid Build Coastguard Worker// ..._1.so - empty
1044*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1045*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_root_1",
1046*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1047*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
1048*8d67ca89SAndroid Build Coastguard Worker}
1049*8d67ca89SAndroid Build Coastguard Worker
1050*8d67ca89SAndroid Build Coastguard Worker// ..._2.so - this one has the incorrect answer
1051*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1052*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_root_2",
1053*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1054*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_reloc_root_answer_impl.cpp"],
1055*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-D__ANSWER=2"],
1056*8d67ca89SAndroid Build Coastguard Worker}
1057*8d67ca89SAndroid Build Coastguard Worker
1058*8d67ca89SAndroid Build Coastguard Worker// libtest_check_order_reloc_root.so <- implements get_answer3()
1059*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1060*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_order_reloc_root",
1061*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1062*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_order_reloc_root_answer.cpp"],
1063*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
1064*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_root_1",
1065*8d67ca89SAndroid Build Coastguard Worker        "libtest_check_order_reloc_root_2",
1066*8d67ca89SAndroid Build Coastguard Worker    ],
1067*8d67ca89SAndroid Build Coastguard Worker}
1068*8d67ca89SAndroid Build Coastguard Worker
1069*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1070*8d67ca89SAndroid Build Coastguard Worker// Build libtest_versioned_lib.so with its dependencies.
1071*8d67ca89SAndroid Build Coastguard Worker//
1072*8d67ca89SAndroid Build Coastguard Worker// Libraries used to test versioned symbols
1073*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1074*8d67ca89SAndroid Build Coastguard Worker
1075*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1076*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_uselibv1",
1077*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1078*8d67ca89SAndroid Build Coastguard Worker    srcs: ["versioned_uselib.cpp"],
1079*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_versioned_libv1"],
1080*8d67ca89SAndroid Build Coastguard Worker}
1081*8d67ca89SAndroid Build Coastguard Worker
1082*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1083*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_uselibv2",
1084*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1085*8d67ca89SAndroid Build Coastguard Worker    srcs: ["versioned_uselib.cpp"],
1086*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_versioned_libv2"],
1087*8d67ca89SAndroid Build Coastguard Worker    version_script: "versioned_uselib.map",
1088*8d67ca89SAndroid Build Coastguard Worker}
1089*8d67ca89SAndroid Build Coastguard Worker
1090*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1091*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_uselibv2_other",
1092*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1093*8d67ca89SAndroid Build Coastguard Worker    srcs: ["versioned_uselib.cpp"],
1094*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
1095*8d67ca89SAndroid Build Coastguard Worker        "libtest_versioned_otherlib_empty",
1096*8d67ca89SAndroid Build Coastguard Worker        "libtest_versioned_libv2",
1097*8d67ca89SAndroid Build Coastguard Worker    ],
1098*8d67ca89SAndroid Build Coastguard Worker}
1099*8d67ca89SAndroid Build Coastguard Worker
1100*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1101*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_uselibv3_other",
1102*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1103*8d67ca89SAndroid Build Coastguard Worker    srcs: ["versioned_uselib.cpp"],
1104*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
1105*8d67ca89SAndroid Build Coastguard Worker        "libtest_versioned_otherlib_empty",
1106*8d67ca89SAndroid Build Coastguard Worker        "libtest_versioned_lib",
1107*8d67ca89SAndroid Build Coastguard Worker    ],
1108*8d67ca89SAndroid Build Coastguard Worker}
1109*8d67ca89SAndroid Build Coastguard Worker
1110*8d67ca89SAndroid Build Coastguard Worker// lib v1 - this one used during static linking but never used at runtime
1111*8d67ca89SAndroid Build Coastguard Worker// which forces libtest_versioned_uselibv1 to use function v1 from
1112*8d67ca89SAndroid Build Coastguard Worker// libtest_versioned_lib.so
1113*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1114*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_libv1",
1115*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1116*8d67ca89SAndroid Build Coastguard Worker    srcs: ["versioned_lib_v1.cpp"],
1117*8d67ca89SAndroid Build Coastguard Worker    version_script: "versioned_lib_v1.map",
1118*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-soname,libtest_versioned_lib.so"],
1119*8d67ca89SAndroid Build Coastguard Worker}
1120*8d67ca89SAndroid Build Coastguard Worker
1121*8d67ca89SAndroid Build Coastguard Worker// lib v2 - to make libtest_versioned_uselibv2.so use version 2 of versioned_function()
1122*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1123*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_libv2",
1124*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1125*8d67ca89SAndroid Build Coastguard Worker    srcs: ["versioned_lib_v2.cpp"],
1126*8d67ca89SAndroid Build Coastguard Worker    version_script: "versioned_lib_v2.map",
1127*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-soname,libtest_versioned_lib.so"],
1128*8d67ca89SAndroid Build Coastguard Worker}
1129*8d67ca89SAndroid Build Coastguard Worker
1130*8d67ca89SAndroid Build Coastguard Worker// last version - this one is used at the runtime and exports 3 versions
1131*8d67ca89SAndroid Build Coastguard Worker// of versioned_symbol().
1132*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1133*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_lib",
1134*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1135*8d67ca89SAndroid Build Coastguard Worker    srcs: ["versioned_lib_v3.cpp"],
1136*8d67ca89SAndroid Build Coastguard Worker    version_script: "versioned_lib_v3.map",
1137*8d67ca89SAndroid Build Coastguard Worker}
1138*8d67ca89SAndroid Build Coastguard Worker
1139*8d67ca89SAndroid Build Coastguard Worker// This library is empty, the actual implementation will provide an unversioned
1140*8d67ca89SAndroid Build Coastguard Worker// symbol for versioned_function().
1141*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1142*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_otherlib_empty",
1143*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1144*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
1145*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-soname,libtest_versioned_otherlib.so"],
1146*8d67ca89SAndroid Build Coastguard Worker}
1147*8d67ca89SAndroid Build Coastguard Worker
1148*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1149*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_versioned_otherlib",
1150*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1151*8d67ca89SAndroid Build Coastguard Worker    srcs: ["versioned_lib_other.cpp"],
1152*8d67ca89SAndroid Build Coastguard Worker    version_script: "versioned_lib_other.map",
1153*8d67ca89SAndroid Build Coastguard Worker}
1154*8d67ca89SAndroid Build Coastguard Worker
1155*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1156*8d67ca89SAndroid Build Coastguard Worker// Build libraries needed by pthread_atfork tests
1157*8d67ca89SAndroid Build Coastguard Worker
1158*8d67ca89SAndroid Build Coastguard Worker// This library used to test phtread_atfork handler behaviour
1159*8d67ca89SAndroid Build Coastguard Worker// during/after dlclose.
1160*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1161*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1162*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_pthread_atfork",
1163*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1164*8d67ca89SAndroid Build Coastguard Worker    srcs: ["pthread_atfork.cpp"],
1165*8d67ca89SAndroid Build Coastguard Worker}
1166*8d67ca89SAndroid Build Coastguard Worker
1167*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1168*8d67ca89SAndroid Build Coastguard Worker// Library with dependency loop used by dlfcn tests
1169*8d67ca89SAndroid Build Coastguard Worker//
1170*8d67ca89SAndroid Build Coastguard Worker// libtest_with_dependency_loop -> a -> b -> c -> a
1171*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1172*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1173*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_with_dependency_loop",
1174*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1175*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_loopy_root.cpp"],
1176*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_with_dependency_loop_a"],
1177*8d67ca89SAndroid Build Coastguard Worker}
1178*8d67ca89SAndroid Build Coastguard Worker
1179*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1180*8d67ca89SAndroid Build Coastguard Worker// libtest_with_dependency_loop_a.so
1181*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1182*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1183*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_with_dependency_loop_a",
1184*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1185*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_loopy_a.cpp"],
1186*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_with_dependency_loop_b_tmp"],
1187*8d67ca89SAndroid Build Coastguard Worker}
1188*8d67ca89SAndroid Build Coastguard Worker
1189*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1190*8d67ca89SAndroid Build Coastguard Worker// libtest_with_dependency_loop_b.so
1191*8d67ca89SAndroid Build Coastguard Worker//
1192*8d67ca89SAndroid Build Coastguard Worker// this is temporary placeholder - will be removed
1193*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1194*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1195*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_with_dependency_loop_b_tmp",
1196*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1197*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_loopy_invalid.cpp"],
1198*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-soname=libtest_with_dependency_loop_b.so"],
1199*8d67ca89SAndroid Build Coastguard Worker}
1200*8d67ca89SAndroid Build Coastguard Worker
1201*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1202*8d67ca89SAndroid Build Coastguard Worker// libtest_with_dependency_loop_b.so
1203*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1204*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1205*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_with_dependency_loop_b",
1206*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1207*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_loopy_b.cpp"],
1208*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_with_dependency_loop_c"],
1209*8d67ca89SAndroid Build Coastguard Worker}
1210*8d67ca89SAndroid Build Coastguard Worker
1211*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1212*8d67ca89SAndroid Build Coastguard Worker// libtest_with_dependency_loop_c.so
1213*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1214*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1215*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_with_dependency_loop_c",
1216*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1217*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_loopy_c.cpp"],
1218*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_with_dependency_loop_a"],
1219*8d67ca89SAndroid Build Coastguard Worker}
1220*8d67ca89SAndroid Build Coastguard Worker
1221*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1222*8d67ca89SAndroid Build Coastguard Worker// libtest_relo_check_dt_needed_order.so
1223*8d67ca89SAndroid Build Coastguard Worker// |
1224*8d67ca89SAndroid Build Coastguard Worker// +-> libtest_relo_check_dt_needed_order_1.so
1225*8d67ca89SAndroid Build Coastguard Worker// |
1226*8d67ca89SAndroid Build Coastguard Worker// +-> libtest_relo_check_dt_needed_order_2.so
1227*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1228*8d67ca89SAndroid Build Coastguard Worker
1229*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1230*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_relo_check_dt_needed_order",
1231*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1232*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_relo_check_dt_needed_order.cpp"],
1233*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
1234*8d67ca89SAndroid Build Coastguard Worker        "libtest_relo_check_dt_needed_order_1",
1235*8d67ca89SAndroid Build Coastguard Worker        "libtest_relo_check_dt_needed_order_2",
1236*8d67ca89SAndroid Build Coastguard Worker    ],
1237*8d67ca89SAndroid Build Coastguard Worker}
1238*8d67ca89SAndroid Build Coastguard Worker
1239*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1240*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_relo_check_dt_needed_order_1",
1241*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1242*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_relo_check_dt_needed_order_1.cpp"],
1243*8d67ca89SAndroid Build Coastguard Worker}
1244*8d67ca89SAndroid Build Coastguard Worker
1245*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1246*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_relo_check_dt_needed_order_2",
1247*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1248*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_relo_check_dt_needed_order_2.cpp"],
1249*8d67ca89SAndroid Build Coastguard Worker}
1250*8d67ca89SAndroid Build Coastguard Worker
1251*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1252*8d67ca89SAndroid Build Coastguard Worker// Library with dependency used by dlfcn tests
1253*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1254*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1255*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_with_dependency",
1256*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1257*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_simple.cpp"],
1258*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libdlext_test"],
1259*8d67ca89SAndroid Build Coastguard Worker}
1260*8d67ca89SAndroid Build Coastguard Worker
1261*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1262*8d67ca89SAndroid Build Coastguard Worker// Library used by ifunc tests
1263*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1264*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1265*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_ifunc",
1266*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1267*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_ifunc.cpp"],
1268*8d67ca89SAndroid Build Coastguard Worker}
1269*8d67ca89SAndroid Build Coastguard Worker
1270*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1271*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_ifunc_variable",
1272*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1273*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_ifunc_variable.cpp"],
1274*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_ifunc_variable_impl"],
1275*8d67ca89SAndroid Build Coastguard Worker}
1276*8d67ca89SAndroid Build Coastguard Worker
1277*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1278*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_ifunc_variable_impl",
1279*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1280*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_ifunc_variable_impl.cpp"],
1281*8d67ca89SAndroid Build Coastguard Worker}
1282*8d67ca89SAndroid Build Coastguard Worker
1283*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1284*8d67ca89SAndroid Build Coastguard Worker// Library used by atexit tests
1285*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1286*8d67ca89SAndroid Build Coastguard Worker
1287*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1288*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_atexit",
1289*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1290*8d67ca89SAndroid Build Coastguard Worker    srcs: ["atexit_testlib.cpp"],
1291*8d67ca89SAndroid Build Coastguard Worker}
1292*8d67ca89SAndroid Build Coastguard Worker
1293*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1294*8d67ca89SAndroid Build Coastguard Worker// This library is used by dl_load test to check symbol preempting
1295*8d67ca89SAndroid Build Coastguard Worker// by main executable
1296*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1297*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1298*8d67ca89SAndroid Build Coastguard Worker    name: "libdl_preempt_test_1",
1299*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1300*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dl_preempt_library_1.cpp"],
1301*8d67ca89SAndroid Build Coastguard Worker}
1302*8d67ca89SAndroid Build Coastguard Worker
1303*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1304*8d67ca89SAndroid Build Coastguard Worker// This library is used by dl_load test to check symbol preempting
1305*8d67ca89SAndroid Build Coastguard Worker// by libdl_preempt_test_1.so
1306*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1307*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1308*8d67ca89SAndroid Build Coastguard Worker    name: "libdl_preempt_test_2",
1309*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1310*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dl_preempt_library_2.cpp"],
1311*8d67ca89SAndroid Build Coastguard Worker}
1312*8d67ca89SAndroid Build Coastguard Worker
1313*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1314*8d67ca89SAndroid Build Coastguard Worker// Library with DF_1_GLOBAL
1315*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1316*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1317*8d67ca89SAndroid Build Coastguard Worker    name: "libdl_test_df_1_global",
1318*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1319*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dl_df_1_global.cpp"],
1320*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-z,global"],
1321*8d67ca89SAndroid Build Coastguard Worker}
1322*8d67ca89SAndroid Build Coastguard Worker
1323*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1324*8d67ca89SAndroid Build Coastguard Worker// Library using symbol from libdl_test_df_1_global
1325*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1326*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1327*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlsym_df_1_global",
1328*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1329*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dl_df_1_use_global.cpp"],
1330*8d67ca89SAndroid Build Coastguard Worker}
1331*8d67ca89SAndroid Build Coastguard Worker
1332*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1333*8d67ca89SAndroid Build Coastguard Worker// Library with DF_1_GLOBAL which will be dlopened
1334*8d67ca89SAndroid Build Coastguard Worker// (note: libdl_test_df_1_global above will be included in DT_NEEDED)
1335*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1336*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1337*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlopen_df_1_global",
1338*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1339*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dl_df_1_global_dummy.cpp"],
1340*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-z,global"],
1341*8d67ca89SAndroid Build Coastguard Worker}
1342*8d67ca89SAndroid Build Coastguard Worker
1343*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1344*8d67ca89SAndroid Build Coastguard Worker// Library with weak function
1345*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1346*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1347*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlsym_weak_func",
1348*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1349*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlsym_weak_function.cpp"],
1350*8d67ca89SAndroid Build Coastguard Worker}
1351*8d67ca89SAndroid Build Coastguard Worker
1352*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1353*8d67ca89SAndroid Build Coastguard Worker// Library to check RTLD_LOCAL with dlsym in 'this'
1354*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1355*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1356*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlsym_from_this",
1357*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1358*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlsym_from_this_symbol.cpp"],
1359*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_dlsym_from_this_child"],
1360*8d67ca89SAndroid Build Coastguard Worker}
1361*8d67ca89SAndroid Build Coastguard Worker
1362*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1363*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1364*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlsym_from_this_child",
1365*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1366*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlsym_from_this_functions.cpp"],
1367*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_dlsym_from_this_grandchild"],
1368*8d67ca89SAndroid Build Coastguard Worker}
1369*8d67ca89SAndroid Build Coastguard Worker
1370*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1371*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1372*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlsym_from_this_grandchild",
1373*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1374*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlsym_from_this_symbol2.cpp"],
1375*8d67ca89SAndroid Build Coastguard Worker}
1376*8d67ca89SAndroid Build Coastguard Worker
1377*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1378*8d67ca89SAndroid Build Coastguard Worker// Empty library
1379*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1380*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1381*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_empty",
1382*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1383*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
1384*8d67ca89SAndroid Build Coastguard Worker}
1385*8d67ca89SAndroid Build Coastguard Worker
1386*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1387*8d67ca89SAndroid Build Coastguard Worker// Library for inaccessible shared library test
1388*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1389*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1390*8d67ca89SAndroid Build Coastguard Worker    name: "libtestshared",
1391*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1392*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
1393*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/inaccessible_libs",
1394*8d67ca89SAndroid Build Coastguard Worker}
1395*8d67ca89SAndroid Build Coastguard Worker
1396*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1397*8d67ca89SAndroid Build Coastguard Worker// Library with weak undefined function
1398*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1399*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1400*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlopen_weak_undefined_func",
1401*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1402*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_weak_undefined.cpp"],
1403*8d67ca89SAndroid Build Coastguard Worker}
1404*8d67ca89SAndroid Build Coastguard Worker
1405*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1406*8d67ca89SAndroid Build Coastguard Worker// Check that RTLD_NEXT of a libc symbol works in dlopened library
1407*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1408*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1409*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_check_rtld_next_from_library",
1410*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1411*8d67ca89SAndroid Build Coastguard Worker    srcs: ["check_rtld_next_from_library.cpp"],
1412*8d67ca89SAndroid Build Coastguard Worker    native_coverage: false,
1413*8d67ca89SAndroid Build Coastguard Worker}
1414*8d67ca89SAndroid Build Coastguard Worker
1415*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1416*8d67ca89SAndroid Build Coastguard Worker// Library with constructor that calls dlopen() b/7941716
1417*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1418*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1419*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlopen_from_ctor",
1420*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1421*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_testlib_dlopen_from_ctor.cpp"],
1422*8d67ca89SAndroid Build Coastguard Worker}
1423*8d67ca89SAndroid Build Coastguard Worker
1424*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1425*8d67ca89SAndroid Build Coastguard Worker// Libraries used to check init/fini call order
1426*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1427*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1428*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_init_fini_order_root",
1429*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1430*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_init_fini_root.cpp"],
1431*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
1432*8d67ca89SAndroid Build Coastguard Worker        "libtest_init_fini_order_child",
1433*8d67ca89SAndroid Build Coastguard Worker        "libtest_init_fini_order_grand_child",
1434*8d67ca89SAndroid Build Coastguard Worker    ],
1435*8d67ca89SAndroid Build Coastguard Worker}
1436*8d67ca89SAndroid Build Coastguard Worker
1437*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1438*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_init_fini_order_root2",
1439*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1440*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_init_fini_root.cpp"],
1441*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
1442*8d67ca89SAndroid Build Coastguard Worker        "libtest_init_fini_order_grand_child",
1443*8d67ca89SAndroid Build Coastguard Worker        "libtest_init_fini_order_child",
1444*8d67ca89SAndroid Build Coastguard Worker    ],
1445*8d67ca89SAndroid Build Coastguard Worker}
1446*8d67ca89SAndroid Build Coastguard Worker
1447*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1448*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_init_fini_order_child",
1449*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1450*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_init_fini_child.cpp"],
1451*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_init_fini_order_grand_child"],
1452*8d67ca89SAndroid Build Coastguard Worker}
1453*8d67ca89SAndroid Build Coastguard Worker
1454*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1455*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_init_fini_order_grand_child",
1456*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1457*8d67ca89SAndroid Build Coastguard Worker    srcs: ["dlopen_check_init_fini_grand_child.cpp"],
1458*8d67ca89SAndroid Build Coastguard Worker}
1459*8d67ca89SAndroid Build Coastguard Worker
1460*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1461*8d67ca89SAndroid Build Coastguard Worker// Library that depends on the library with constructor that calls dlopen() b/7941716
1462*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1463*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1464*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_dlopen_from_ctor_main",
1465*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1466*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
1467*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libtest_dlopen_from_ctor"],
1468*8d67ca89SAndroid Build Coastguard Worker}
1469*8d67ca89SAndroid Build Coastguard Worker
1470*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1471*8d67ca89SAndroid Build Coastguard Worker// Libraries with non-trivial thread_local variable to test dlclose()
1472*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1473*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1474*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_thread_local_dtor",
1475*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1476*8d67ca89SAndroid Build Coastguard Worker    srcs: ["thread_local_dtor.cpp"],
1477*8d67ca89SAndroid Build Coastguard Worker}
1478*8d67ca89SAndroid Build Coastguard Worker
1479*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1480*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_thread_local_dtor2",
1481*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1482*8d67ca89SAndroid Build Coastguard Worker    srcs: ["thread_local_dtor2.cpp"],
1483*8d67ca89SAndroid Build Coastguard Worker}
1484*8d67ca89SAndroid Build Coastguard Worker
1485*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1486*8d67ca89SAndroid Build Coastguard Worker// Library dt_needs libtest_thread_local_dtor/2 (to check no-unload on load_group)
1487*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1488*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1489*8d67ca89SAndroid Build Coastguard Worker    name: "libtest_indirect_thread_local_dtor",
1490*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1491*8d67ca89SAndroid Build Coastguard Worker    srcs: ["empty.cpp"],
1492*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [
1493*8d67ca89SAndroid Build Coastguard Worker        "libtest_thread_local_dtor",
1494*8d67ca89SAndroid Build Coastguard Worker        "libtest_thread_local_dtor2",
1495*8d67ca89SAndroid Build Coastguard Worker    ],
1496*8d67ca89SAndroid Build Coastguard Worker}
1497*8d67ca89SAndroid Build Coastguard Worker
1498*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1499*8d67ca89SAndroid Build Coastguard Worker// Tool to use to align the shared libraries in a zip file.
1500*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1501*8d67ca89SAndroid Build Coastguard Workercc_binary_host {
1502*8d67ca89SAndroid Build Coastguard Worker    name: "bionic_tests_zipalign",
1503*8d67ca89SAndroid Build Coastguard Worker    srcs: ["bionic_tests_zipalign.cpp"],
1504*8d67ca89SAndroid Build Coastguard Worker    cflags: [
1505*8d67ca89SAndroid Build Coastguard Worker        "-Wall",
1506*8d67ca89SAndroid Build Coastguard Worker        "-Werror",
1507*8d67ca89SAndroid Build Coastguard Worker    ],
1508*8d67ca89SAndroid Build Coastguard Worker
1509*8d67ca89SAndroid Build Coastguard Worker    static_libs: [
1510*8d67ca89SAndroid Build Coastguard Worker        "libziparchive",
1511*8d67ca89SAndroid Build Coastguard Worker        "liblog",
1512*8d67ca89SAndroid Build Coastguard Worker        "libbase",
1513*8d67ca89SAndroid Build Coastguard Worker        "libz",
1514*8d67ca89SAndroid Build Coastguard Worker        "libutils",
1515*8d67ca89SAndroid Build Coastguard Worker    ],
1516*8d67ca89SAndroid Build Coastguard Worker}
1517*8d67ca89SAndroid Build Coastguard Worker
1518*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1519*8d67ca89SAndroid Build Coastguard Worker    name: "libcfi-test",
1520*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1521*8d67ca89SAndroid Build Coastguard Worker    srcs: ["cfi_test_lib.cpp"],
1522*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1523*8d67ca89SAndroid Build Coastguard Worker        cfi: false,
1524*8d67ca89SAndroid Build Coastguard Worker    },
1525*8d67ca89SAndroid Build Coastguard Worker}
1526*8d67ca89SAndroid Build Coastguard Worker
1527*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1528*8d67ca89SAndroid Build Coastguard Worker    name: "libcfi-test-bad",
1529*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1530*8d67ca89SAndroid Build Coastguard Worker    srcs: ["cfi_test_bad_lib.cpp"],
1531*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1532*8d67ca89SAndroid Build Coastguard Worker        cfi: false,
1533*8d67ca89SAndroid Build Coastguard Worker    },
1534*8d67ca89SAndroid Build Coastguard Worker}
1535*8d67ca89SAndroid Build Coastguard Worker
1536*8d67ca89SAndroid Build Coastguard Workercc_test {
1537*8d67ca89SAndroid Build Coastguard Worker    name: "cfi_test_helper",
1538*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1539*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1540*8d67ca89SAndroid Build Coastguard Worker    srcs: ["cfi_test_helper.cpp"],
1541*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-rdynamic"],
1542*8d67ca89SAndroid Build Coastguard Worker}
1543*8d67ca89SAndroid Build Coastguard Worker
1544*8d67ca89SAndroid Build Coastguard Workercc_test {
1545*8d67ca89SAndroid Build Coastguard Worker    name: "cfi_test_helper2",
1546*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1547*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1548*8d67ca89SAndroid Build Coastguard Worker    srcs: ["cfi_test_helper2.cpp"],
1549*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["libcfi-test"],
1550*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
1551*8d67ca89SAndroid Build Coastguard Worker}
1552*8d67ca89SAndroid Build Coastguard Worker
1553*8d67ca89SAndroid Build Coastguard Workercc_test {
1554*8d67ca89SAndroid Build Coastguard Worker    name: "preinit_getauxval_test_helper",
1555*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1556*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1557*8d67ca89SAndroid Build Coastguard Worker    srcs: ["preinit_getauxval_test_helper.cpp"],
1558*8d67ca89SAndroid Build Coastguard Worker}
1559*8d67ca89SAndroid Build Coastguard Worker
1560*8d67ca89SAndroid Build Coastguard Workercc_test {
1561*8d67ca89SAndroid Build Coastguard Worker    name: "preinit_syscall_test_helper",
1562*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1563*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1564*8d67ca89SAndroid Build Coastguard Worker    srcs: ["preinit_syscall_test_helper.cpp"],
1565*8d67ca89SAndroid Build Coastguard Worker}
1566*8d67ca89SAndroid Build Coastguard Worker
1567*8d67ca89SAndroid Build Coastguard Workercc_test {
1568*8d67ca89SAndroid Build Coastguard Worker    name: "ld_preload_test_helper",
1569*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1570*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1571*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ld_preload_test_helper.cpp"],
1572*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["ld_preload_test_helper_lib1"],
1573*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
1574*8d67ca89SAndroid Build Coastguard Worker}
1575*8d67ca89SAndroid Build Coastguard Worker
1576*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1577*8d67ca89SAndroid Build Coastguard Worker    name: "ld_preload_test_helper_lib1",
1578*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1579*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1580*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ld_preload_test_helper_lib1.cpp"],
1581*8d67ca89SAndroid Build Coastguard Worker}
1582*8d67ca89SAndroid Build Coastguard Worker
1583*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1584*8d67ca89SAndroid Build Coastguard Worker    name: "ld_preload_test_helper_lib2",
1585*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1586*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1587*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ld_preload_test_helper_lib2.cpp"],
1588*8d67ca89SAndroid Build Coastguard Worker}
1589*8d67ca89SAndroid Build Coastguard Worker
1590*8d67ca89SAndroid Build Coastguard Workercc_test {
1591*8d67ca89SAndroid Build Coastguard Worker    name: "ld_config_test_helper",
1592*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1593*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1594*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ld_config_test_helper.cpp"],
1595*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["ld_config_test_helper_lib1"],
1596*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
1597*8d67ca89SAndroid Build Coastguard Worker}
1598*8d67ca89SAndroid Build Coastguard Worker
1599*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1600*8d67ca89SAndroid Build Coastguard Worker    name: "ld_config_test_helper_lib1",
1601*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1602*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1603*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ld_config_test_helper_lib1.cpp"],
1604*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["ld_config_test_helper_lib2"],
1605*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/ns2",
1606*8d67ca89SAndroid Build Coastguard Worker    // Mark the library DF_1_GLOBAL so it is added to every linker namespace.
1607*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-z,global"],
1608*8d67ca89SAndroid Build Coastguard Worker}
1609*8d67ca89SAndroid Build Coastguard Worker
1610*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1611*8d67ca89SAndroid Build Coastguard Worker    name: "ld_config_test_helper_lib2",
1612*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1613*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1614*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ld_config_test_helper_lib2.cpp"],
1615*8d67ca89SAndroid Build Coastguard Worker    relative_install_path: "bionic-loader-test-libs/ns2",
1616*8d67ca89SAndroid Build Coastguard Worker}
1617*8d67ca89SAndroid Build Coastguard Worker
1618*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1619*8d67ca89SAndroid Build Coastguard Worker    name: "ld_config_test_helper_lib3",
1620*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1621*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1622*8d67ca89SAndroid Build Coastguard Worker    srcs: ["ld_config_test_helper_lib3.cpp"],
1623*8d67ca89SAndroid Build Coastguard Worker}
1624*8d67ca89SAndroid Build Coastguard Worker
1625*8d67ca89SAndroid Build Coastguard Workercc_test {
1626*8d67ca89SAndroid Build Coastguard Worker    name: "exec_linker_helper",
1627*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1628*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1629*8d67ca89SAndroid Build Coastguard Worker    srcs: ["exec_linker_helper.cpp"],
1630*8d67ca89SAndroid Build Coastguard Worker    shared_libs: ["exec_linker_helper_lib"],
1631*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
1632*8d67ca89SAndroid Build Coastguard Worker}
1633*8d67ca89SAndroid Build Coastguard Worker
1634*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1635*8d67ca89SAndroid Build Coastguard Worker    name: "exec_linker_helper_lib",
1636*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1637*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1638*8d67ca89SAndroid Build Coastguard Worker    srcs: ["exec_linker_helper_lib.cpp"],
1639*8d67ca89SAndroid Build Coastguard Worker}
1640*8d67ca89SAndroid Build Coastguard Worker
1641*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1642*8d67ca89SAndroid Build Coastguard Worker    name: "libsegment_gap_outer",
1643*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1644*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1645*8d67ca89SAndroid Build Coastguard Worker    srcs: ["segment_gap_outer.cpp"],
1646*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,-T,bionic/tests/libs/segment_gap_outer.lds"],
1647*8d67ca89SAndroid Build Coastguard Worker}
1648*8d67ca89SAndroid Build Coastguard Worker
1649*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1650*8d67ca89SAndroid Build Coastguard Worker    name: "libsegment_gap_inner",
1651*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1652*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1653*8d67ca89SAndroid Build Coastguard Worker    srcs: ["segment_gap_inner.cpp"],
1654*8d67ca89SAndroid Build Coastguard Worker}
1655*8d67ca89SAndroid Build Coastguard Worker
1656*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1657*8d67ca89SAndroid Build Coastguard Worker// Check that we support all kinds of relocations: regular, "relocation packer",
1658*8d67ca89SAndroid Build Coastguard Worker// and both the old and new SHT_RELR constants.
1659*8d67ca89SAndroid Build Coastguard Worker// -----------------------------------------------------------------------------
1660*8d67ca89SAndroid Build Coastguard Worker
1661*8d67ca89SAndroid Build Coastguard Worker// This is what got standardized for SHT_RELR.
1662*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1663*8d67ca89SAndroid Build Coastguard Worker    name: "librelocations-RELR",
1664*8d67ca89SAndroid Build Coastguard Worker    ldflags: [
1665*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--pack-dyn-relocs=relr",
1666*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--no-use-android-relr-tags",
1667*8d67ca89SAndroid Build Coastguard Worker    ],
1668*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1669*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1670*8d67ca89SAndroid Build Coastguard Worker    srcs: ["relocations.cpp"],
1671*8d67ca89SAndroid Build Coastguard Worker}
1672*8d67ca89SAndroid Build Coastguard Worker
1673*8d67ca89SAndroid Build Coastguard Worker// This is the same encoding as SHT_RELR, but using OS-specific constants.
1674*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1675*8d67ca89SAndroid Build Coastguard Worker    name: "librelocations-ANDROID_RELR",
1676*8d67ca89SAndroid Build Coastguard Worker    ldflags: [
1677*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--pack-dyn-relocs=relr",
1678*8d67ca89SAndroid Build Coastguard Worker        "-Wl,--use-android-relr-tags",
1679*8d67ca89SAndroid Build Coastguard Worker    ],
1680*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1681*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1682*8d67ca89SAndroid Build Coastguard Worker    srcs: ["relocations.cpp"],
1683*8d67ca89SAndroid Build Coastguard Worker}
1684*8d67ca89SAndroid Build Coastguard Worker
1685*8d67ca89SAndroid Build Coastguard Worker// This is the old relocation packer encoding (DT_ANDROID_REL/DT_ANDROID_RELA).
1686*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1687*8d67ca89SAndroid Build Coastguard Worker    name: "librelocations-ANDROID_REL",
1688*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--pack-dyn-relocs=android"],
1689*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1690*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1691*8d67ca89SAndroid Build Coastguard Worker    srcs: ["relocations.cpp"],
1692*8d67ca89SAndroid Build Coastguard Worker}
1693*8d67ca89SAndroid Build Coastguard Worker
1694*8d67ca89SAndroid Build Coastguard Worker// This is not packed at all.
1695*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1696*8d67ca89SAndroid Build Coastguard Worker    name: "librelocations-fat",
1697*8d67ca89SAndroid Build Coastguard Worker    ldflags: ["-Wl,--pack-dyn-relocs=none"],
1698*8d67ca89SAndroid Build Coastguard Worker    host_supported: false,
1699*8d67ca89SAndroid Build Coastguard Worker    defaults: ["bionic_testlib_defaults"],
1700*8d67ca89SAndroid Build Coastguard Worker    srcs: ["relocations.cpp"],
1701*8d67ca89SAndroid Build Coastguard Worker}
1702*8d67ca89SAndroid Build Coastguard Worker
1703*8d67ca89SAndroid Build Coastguard Workercc_defaults {
1704*8d67ca89SAndroid Build Coastguard Worker    name: "bionic_targets_only",
1705*8d67ca89SAndroid Build Coastguard Worker    enabled: false,
1706*8d67ca89SAndroid Build Coastguard Worker    target: {
1707*8d67ca89SAndroid Build Coastguard Worker        android: {
1708*8d67ca89SAndroid Build Coastguard Worker            enabled: true,
1709*8d67ca89SAndroid Build Coastguard Worker        },
1710*8d67ca89SAndroid Build Coastguard Worker        linux_bionic: {
1711*8d67ca89SAndroid Build Coastguard Worker            enabled: true,
1712*8d67ca89SAndroid Build Coastguard Worker        },
1713*8d67ca89SAndroid Build Coastguard Worker    },
1714*8d67ca89SAndroid Build Coastguard Worker}
1715*8d67ca89SAndroid Build Coastguard Worker
1716*8d67ca89SAndroid Build Coastguard Workercc_test {
1717*8d67ca89SAndroid Build Coastguard Worker    name: "heap_tagging_sync_helper",
1718*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1719*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1720*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
1721*8d67ca89SAndroid Build Coastguard Worker    ],
1722*8d67ca89SAndroid Build Coastguard Worker    srcs: ["heap_tagging_helper.cpp"],
1723*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1724*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
1725*8d67ca89SAndroid Build Coastguard Worker        diag: {
1726*8d67ca89SAndroid Build Coastguard Worker            memtag_heap: true,
1727*8d67ca89SAndroid Build Coastguard Worker        },
1728*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1729*8d67ca89SAndroid Build Coastguard Worker    },
1730*8d67ca89SAndroid Build Coastguard Worker}
1731*8d67ca89SAndroid Build Coastguard Worker
1732*8d67ca89SAndroid Build Coastguard Workercc_test {
1733*8d67ca89SAndroid Build Coastguard Worker    name: "heap_tagging_async_helper",
1734*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1735*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1736*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
1737*8d67ca89SAndroid Build Coastguard Worker    ],
1738*8d67ca89SAndroid Build Coastguard Worker    srcs: ["heap_tagging_helper.cpp"],
1739*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1740*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
1741*8d67ca89SAndroid Build Coastguard Worker        diag: {
1742*8d67ca89SAndroid Build Coastguard Worker            memtag_heap: false,
1743*8d67ca89SAndroid Build Coastguard Worker        },
1744*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1745*8d67ca89SAndroid Build Coastguard Worker    },
1746*8d67ca89SAndroid Build Coastguard Worker}
1747*8d67ca89SAndroid Build Coastguard Worker
1748*8d67ca89SAndroid Build Coastguard Workercc_test {
1749*8d67ca89SAndroid Build Coastguard Worker    name: "heap_tagging_disabled_helper",
1750*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1751*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1752*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
1753*8d67ca89SAndroid Build Coastguard Worker    ],
1754*8d67ca89SAndroid Build Coastguard Worker    srcs: ["heap_tagging_helper.cpp"],
1755*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1756*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: false,
1757*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1758*8d67ca89SAndroid Build Coastguard Worker    },
1759*8d67ca89SAndroid Build Coastguard Worker}
1760*8d67ca89SAndroid Build Coastguard Worker
1761*8d67ca89SAndroid Build Coastguard Workercc_test {
1762*8d67ca89SAndroid Build Coastguard Worker    name: "heap_tagging_static_sync_helper",
1763*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1764*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1765*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
1766*8d67ca89SAndroid Build Coastguard Worker    ],
1767*8d67ca89SAndroid Build Coastguard Worker    srcs: ["heap_tagging_helper.cpp"],
1768*8d67ca89SAndroid Build Coastguard Worker    static_executable: true,
1769*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1770*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
1771*8d67ca89SAndroid Build Coastguard Worker        diag: {
1772*8d67ca89SAndroid Build Coastguard Worker            memtag_heap: true,
1773*8d67ca89SAndroid Build Coastguard Worker        },
1774*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1775*8d67ca89SAndroid Build Coastguard Worker    },
1776*8d67ca89SAndroid Build Coastguard Worker}
1777*8d67ca89SAndroid Build Coastguard Worker
1778*8d67ca89SAndroid Build Coastguard Workercc_test {
1779*8d67ca89SAndroid Build Coastguard Worker    name: "heap_tagging_static_async_helper",
1780*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1781*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1782*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
1783*8d67ca89SAndroid Build Coastguard Worker    ],
1784*8d67ca89SAndroid Build Coastguard Worker    srcs: ["heap_tagging_helper.cpp"],
1785*8d67ca89SAndroid Build Coastguard Worker    static_executable: true,
1786*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1787*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
1788*8d67ca89SAndroid Build Coastguard Worker        diag: {
1789*8d67ca89SAndroid Build Coastguard Worker            memtag_heap: false,
1790*8d67ca89SAndroid Build Coastguard Worker        },
1791*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1792*8d67ca89SAndroid Build Coastguard Worker    },
1793*8d67ca89SAndroid Build Coastguard Worker}
1794*8d67ca89SAndroid Build Coastguard Worker
1795*8d67ca89SAndroid Build Coastguard Workercc_test {
1796*8d67ca89SAndroid Build Coastguard Worker    name: "heap_tagging_static_disabled_helper",
1797*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1798*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1799*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
1800*8d67ca89SAndroid Build Coastguard Worker    ],
1801*8d67ca89SAndroid Build Coastguard Worker    srcs: ["heap_tagging_helper.cpp"],
1802*8d67ca89SAndroid Build Coastguard Worker    static_executable: true,
1803*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1804*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: false,
1805*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1806*8d67ca89SAndroid Build Coastguard Worker    },
1807*8d67ca89SAndroid Build Coastguard Worker}
1808*8d67ca89SAndroid Build Coastguard Worker
1809*8d67ca89SAndroid Build Coastguard Workercc_test {
1810*8d67ca89SAndroid Build Coastguard Worker    name: "stack_tagging_helper",
1811*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1812*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1813*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
1814*8d67ca89SAndroid Build Coastguard Worker    ],
1815*8d67ca89SAndroid Build Coastguard Worker    srcs: ["stack_tagging_helper.cpp"],
1816*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1817*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
1818*8d67ca89SAndroid Build Coastguard Worker        memtag_stack: true,
1819*8d67ca89SAndroid Build Coastguard Worker        diag: {
1820*8d67ca89SAndroid Build Coastguard Worker            memtag_heap: true,
1821*8d67ca89SAndroid Build Coastguard Worker        },
1822*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1823*8d67ca89SAndroid Build Coastguard Worker    },
1824*8d67ca89SAndroid Build Coastguard Worker    header_libs: ["bionic_libc_platform_headers"],
1825*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-fexceptions"],
1826*8d67ca89SAndroid Build Coastguard Worker}
1827*8d67ca89SAndroid Build Coastguard Worker
1828*8d67ca89SAndroid Build Coastguard Workercc_test {
1829*8d67ca89SAndroid Build Coastguard Worker    name: "stack_tagging_static_helper",
1830*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1831*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1832*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only",
1833*8d67ca89SAndroid Build Coastguard Worker    ],
1834*8d67ca89SAndroid Build Coastguard Worker    srcs: ["stack_tagging_helper.cpp"],
1835*8d67ca89SAndroid Build Coastguard Worker    static_executable: true,
1836*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1837*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
1838*8d67ca89SAndroid Build Coastguard Worker        memtag_stack: true,
1839*8d67ca89SAndroid Build Coastguard Worker        diag: {
1840*8d67ca89SAndroid Build Coastguard Worker            memtag_heap: true,
1841*8d67ca89SAndroid Build Coastguard Worker        },
1842*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1843*8d67ca89SAndroid Build Coastguard Worker    },
1844*8d67ca89SAndroid Build Coastguard Worker    header_libs: ["bionic_libc_platform_headers"],
1845*8d67ca89SAndroid Build Coastguard Worker    cflags: ["-fexceptions"],
1846*8d67ca89SAndroid Build Coastguard Worker}
1847*8d67ca89SAndroid Build Coastguard Worker
1848*8d67ca89SAndroid Build Coastguard Workercc_genrule {
1849*8d67ca89SAndroid Build Coastguard Worker    name: "libdlext_test_zip_zipaligned",
1850*8d67ca89SAndroid Build Coastguard Worker    out: ["bionic-loader-test-libs/libdlext_test_zip/libdlext_test_zip_zipaligned.zip"],
1851*8d67ca89SAndroid Build Coastguard Worker    tools: [
1852*8d67ca89SAndroid Build Coastguard Worker        "soong_zip",
1853*8d67ca89SAndroid Build Coastguard Worker        "bionic_tests_zipalign",
1854*8d67ca89SAndroid Build Coastguard Worker    ],
1855*8d67ca89SAndroid Build Coastguard Worker    srcs: [
1856*8d67ca89SAndroid Build Coastguard Worker        ":libdlext_test_zip",
1857*8d67ca89SAndroid Build Coastguard Worker        ":libatest_simple_zip",
1858*8d67ca89SAndroid Build Coastguard Worker        ":exec_linker_helper",
1859*8d67ca89SAndroid Build Coastguard Worker        ":exec_linker_helper_lib",
1860*8d67ca89SAndroid Build Coastguard Worker    ],
1861*8d67ca89SAndroid Build Coastguard Worker    cmd: "mkdir -p $(genDir)/zipdir/libdir &&" +
1862*8d67ca89SAndroid Build Coastguard Worker        " cp $(in) $(genDir)/zipdir/libdir/ &&" +
1863*8d67ca89SAndroid Build Coastguard Worker        " touch $(genDir)/zipdir/empty_file.txt &&" +
1864*8d67ca89SAndroid Build Coastguard Worker        " $(location soong_zip) -o $(out).unaligned -L 0 -C $(genDir)/zipdir -D $(genDir)/zipdir &&" +
1865*8d67ca89SAndroid Build Coastguard Worker        " $(location bionic_tests_zipalign) 16384 $(out).unaligned $(out)",
1866*8d67ca89SAndroid Build Coastguard Worker
1867*8d67ca89SAndroid Build Coastguard Worker}
1868*8d67ca89SAndroid Build Coastguard Worker
1869*8d67ca89SAndroid Build Coastguard Workercc_genrule {
1870*8d67ca89SAndroid Build Coastguard Worker    name: "libdlext_test_runpath_zip_zipaligned",
1871*8d67ca89SAndroid Build Coastguard Worker    out: ["bionic-loader-test-libs/libdlext_test_runpath_zip/libdlext_test_runpath_zip_zipaligned.zip"],
1872*8d67ca89SAndroid Build Coastguard Worker    tools: [
1873*8d67ca89SAndroid Build Coastguard Worker        "soong_zip",
1874*8d67ca89SAndroid Build Coastguard Worker        "bionic_tests_zipalign",
1875*8d67ca89SAndroid Build Coastguard Worker    ],
1876*8d67ca89SAndroid Build Coastguard Worker    srcs: [
1877*8d67ca89SAndroid Build Coastguard Worker        ":libtest_dt_runpath_d_zip",
1878*8d67ca89SAndroid Build Coastguard Worker        ":libtest_dt_runpath_a",
1879*8d67ca89SAndroid Build Coastguard Worker        ":libtest_dt_runpath_b",
1880*8d67ca89SAndroid Build Coastguard Worker        ":libtest_dt_runpath_c",
1881*8d67ca89SAndroid Build Coastguard Worker        ":libtest_dt_runpath_x",
1882*8d67ca89SAndroid Build Coastguard Worker        ":libtest_dt_runpath_y",
1883*8d67ca89SAndroid Build Coastguard Worker    ],
1884*8d67ca89SAndroid Build Coastguard Worker    cmd: "mkdir -p $(genDir)/zipdir/libdir &&" +
1885*8d67ca89SAndroid Build Coastguard Worker        " if [[ \"$$CC_MULTILIB\" = lib32 ]]; then" +
1886*8d67ca89SAndroid Build Coastguard Worker        "  PRIVATE_LIB_OR_LIB64=lib;" +
1887*8d67ca89SAndroid Build Coastguard Worker        " else" +
1888*8d67ca89SAndroid Build Coastguard Worker        "  PRIVATE_LIB_OR_LIB64=lib64;" +
1889*8d67ca89SAndroid Build Coastguard Worker        " fi &&" +
1890*8d67ca89SAndroid Build Coastguard Worker        " if [[ -n \"$$CC_NATIVE_BRIDGE\" ]]; then" +
1891*8d67ca89SAndroid Build Coastguard Worker        "  PRIVATE_LIB_OR_LIB64=$$PRIVATE_LIB_OR_LIB64/$$CC_NATIVE_BRIDGE;" +
1892*8d67ca89SAndroid Build Coastguard Worker        " fi &&" +
1893*8d67ca89SAndroid Build Coastguard Worker        " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_a &&" +
1894*8d67ca89SAndroid Build Coastguard Worker        " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
1895*8d67ca89SAndroid Build Coastguard Worker        " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_y/$$PRIVATE_LIB_OR_LIB64 &&" +
1896*8d67ca89SAndroid Build Coastguard Worker        " cp $(location :libtest_dt_runpath_d_zip) $(genDir)/zipdir/libdir &&" +
1897*8d67ca89SAndroid Build Coastguard Worker        " cp $(location :libtest_dt_runpath_a) $(genDir)/zipdir/libdir/dt_runpath_a &&" +
1898*8d67ca89SAndroid Build Coastguard Worker        " cp $(location :libtest_dt_runpath_b) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
1899*8d67ca89SAndroid Build Coastguard Worker        " cp $(location :libtest_dt_runpath_c) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
1900*8d67ca89SAndroid Build Coastguard Worker        " cp $(location :libtest_dt_runpath_x) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
1901*8d67ca89SAndroid Build Coastguard Worker        " cp $(location :libtest_dt_runpath_y) $(genDir)/zipdir/libdir/dt_runpath_y/$$PRIVATE_LIB_OR_LIB64 &&" +
1902*8d67ca89SAndroid Build Coastguard Worker        " touch $(genDir)/zipdir/empty_file.txt &&" +
1903*8d67ca89SAndroid Build Coastguard Worker        " $(location soong_zip) -o $(out).unaligned -L 0 -C $(genDir)/zipdir -D $(genDir)/zipdir &&" +
1904*8d67ca89SAndroid Build Coastguard Worker        " $(location bionic_tests_zipalign) 16384 $(out).unaligned $(out)",
1905*8d67ca89SAndroid Build Coastguard Worker}
1906*8d67ca89SAndroid Build Coastguard Worker
1907*8d67ca89SAndroid Build Coastguard Workercc_defaults {
1908*8d67ca89SAndroid Build Coastguard Worker    name: "memtag_globals_defaults",
1909*8d67ca89SAndroid Build Coastguard Worker    defaults: [
1910*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1911*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only"
1912*8d67ca89SAndroid Build Coastguard Worker    ],
1913*8d67ca89SAndroid Build Coastguard Worker    cflags: [
1914*8d67ca89SAndroid Build Coastguard Worker        "-Wno-array-bounds",
1915*8d67ca89SAndroid Build Coastguard Worker        "-Wno-unused-variable",
1916*8d67ca89SAndroid Build Coastguard Worker    ],
1917*8d67ca89SAndroid Build Coastguard Worker    header_libs: ["bionic_libc_platform_headers"],
1918*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1919*8d67ca89SAndroid Build Coastguard Worker        hwaddress: false,
1920*8d67ca89SAndroid Build Coastguard Worker        memtag_heap: true,
1921*8d67ca89SAndroid Build Coastguard Worker        memtag_globals: true,
1922*8d67ca89SAndroid Build Coastguard Worker        diag: {
1923*8d67ca89SAndroid Build Coastguard Worker            memtag_heap: true,
1924*8d67ca89SAndroid Build Coastguard Worker        }
1925*8d67ca89SAndroid Build Coastguard Worker    },
1926*8d67ca89SAndroid Build Coastguard Worker}
1927*8d67ca89SAndroid Build Coastguard Worker
1928*8d67ca89SAndroid Build Coastguard Workercc_test_library {
1929*8d67ca89SAndroid Build Coastguard Worker    name: "memtag_globals_dso",
1930*8d67ca89SAndroid Build Coastguard Worker    defaults: [ "memtag_globals_defaults" ],
1931*8d67ca89SAndroid Build Coastguard Worker    srcs: ["memtag_globals_dso.cpp"],
1932*8d67ca89SAndroid Build Coastguard Worker}
1933*8d67ca89SAndroid Build Coastguard Worker
1934*8d67ca89SAndroid Build Coastguard Workercc_test {
1935*8d67ca89SAndroid Build Coastguard Worker    name: "memtag_globals_binary",
1936*8d67ca89SAndroid Build Coastguard Worker    defaults: [ "memtag_globals_defaults" ],
1937*8d67ca89SAndroid Build Coastguard Worker    srcs: ["memtag_globals_binary.cpp"],
1938*8d67ca89SAndroid Build Coastguard Worker    shared_libs: [ "memtag_globals_dso" ],
1939*8d67ca89SAndroid Build Coastguard Worker    // This binary is used in the bionic-unit-tests as a data dependency, and is
1940*8d67ca89SAndroid Build Coastguard Worker    // in the same folder as memtag_globals_dso. But, the default cc_test rules
1941*8d67ca89SAndroid Build Coastguard Worker    // make this binary (when just explicitly built and shoved in
1942*8d67ca89SAndroid Build Coastguard Worker    // /data/nativetest64/) end up in a subfolder called
1943*8d67ca89SAndroid Build Coastguard Worker    // 'memtag_globals_binary'. When this happens, the explicit build fails to
1944*8d67ca89SAndroid Build Coastguard Worker    // find the DSO because the default rpath is just ${ORIGIN}, and because we
1945*8d67ca89SAndroid Build Coastguard Worker    // want this to be usable both from bionic-unit-tests and explicit builds,
1946*8d67ca89SAndroid Build Coastguard Worker    // let's just not put it in a subdirectory.
1947*8d67ca89SAndroid Build Coastguard Worker    no_named_install_directory: true,
1948*8d67ca89SAndroid Build Coastguard Worker}
1949*8d67ca89SAndroid Build Coastguard Worker
1950*8d67ca89SAndroid Build Coastguard Workercc_test {
1951*8d67ca89SAndroid Build Coastguard Worker    name: "memtag_globals_binary_static",
1952*8d67ca89SAndroid Build Coastguard Worker    defaults: [ "memtag_globals_defaults" ],
1953*8d67ca89SAndroid Build Coastguard Worker    srcs: ["memtag_globals_binary.cpp"],
1954*8d67ca89SAndroid Build Coastguard Worker    static_libs: [ "memtag_globals_dso" ],
1955*8d67ca89SAndroid Build Coastguard Worker    no_named_install_directory: true,
1956*8d67ca89SAndroid Build Coastguard Worker    static_executable: true,
1957*8d67ca89SAndroid Build Coastguard Worker}
1958*8d67ca89SAndroid Build Coastguard Worker
1959*8d67ca89SAndroid Build Coastguard Worker// This is a regression test for b/314038442, where binaries built *without* MTE
1960*8d67ca89SAndroid Build Coastguard Worker// globals would have out-of-bounds RELR relocations, which where then `ldg`'d,
1961*8d67ca89SAndroid Build Coastguard Worker// which resulted in linker crashes.
1962*8d67ca89SAndroid Build Coastguard Workercc_test {
1963*8d67ca89SAndroid Build Coastguard Worker  name: "mte_globals_relr_regression_test_b_314038442",
1964*8d67ca89SAndroid Build Coastguard Worker  defaults: [
1965*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1966*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only"
1967*8d67ca89SAndroid Build Coastguard Worker    ],
1968*8d67ca89SAndroid Build Coastguard Worker    cflags: [ "-Wno-array-bounds" ],
1969*8d67ca89SAndroid Build Coastguard Worker    ldflags: [ "-Wl,--pack-dyn-relocs=relr" ],
1970*8d67ca89SAndroid Build Coastguard Worker    srcs: ["mte_globals_relr_regression_test_b_314038442.cpp"],
1971*8d67ca89SAndroid Build Coastguard Worker    no_named_install_directory: true,
1972*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1973*8d67ca89SAndroid Build Coastguard Worker        memtag_globals: false,
1974*8d67ca89SAndroid Build Coastguard Worker    },
1975*8d67ca89SAndroid Build Coastguard Worker}
1976*8d67ca89SAndroid Build Coastguard Worker
1977*8d67ca89SAndroid Build Coastguard Worker// Same test as above, but also for MTE globals, just for the sake of it.
1978*8d67ca89SAndroid Build Coastguard Workercc_test {
1979*8d67ca89SAndroid Build Coastguard Worker  name: "mte_globals_relr_regression_test_b_314038442_mte",
1980*8d67ca89SAndroid Build Coastguard Worker  defaults: [
1981*8d67ca89SAndroid Build Coastguard Worker        "bionic_testlib_defaults",
1982*8d67ca89SAndroid Build Coastguard Worker        "bionic_targets_only"
1983*8d67ca89SAndroid Build Coastguard Worker    ],
1984*8d67ca89SAndroid Build Coastguard Worker    cflags: [ "-Wno-array-bounds" ],
1985*8d67ca89SAndroid Build Coastguard Worker    ldflags: [ "-Wl,--pack-dyn-relocs=relr" ],
1986*8d67ca89SAndroid Build Coastguard Worker    srcs: ["mte_globals_relr_regression_test_b_314038442.cpp"],
1987*8d67ca89SAndroid Build Coastguard Worker    no_named_install_directory: true,
1988*8d67ca89SAndroid Build Coastguard Worker    sanitize: {
1989*8d67ca89SAndroid Build Coastguard Worker      memtag_globals: true,
1990*8d67ca89SAndroid Build Coastguard Worker    },
1991*8d67ca89SAndroid Build Coastguard Worker}
1992