blob: 5d143f8fc9c801bd44b47b225f348b1f6c58a23e [file] [log] [blame]
Colin Cross2722ebb2016-07-11 16:20:06 -07001//
2// Copyright (C) 2012 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
Bob Badouraa7d8352021-02-19 13:06:22 -080017package {
18 default_applicable_licenses: ["bionic_tests_license"],
19}
20
Colin Cross2722ebb2016-07-11 16:20:06 -070021cc_defaults {
22 name: "bionic_testlib_defaults",
23 host_supported: true,
Chih-Hung Hsieh84f0dcd2017-10-02 11:47:31 -070024 cflags: [
25 "-Wall",
26 "-Werror",
27 ],
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070028 ldflags: [
Dimitry Ivanovd11d1e42016-10-05 02:51:17 -070029 "-Wl,--rpath,${ORIGIN}",
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070030 "-Wl,--enable-new-dtags",
31 ],
Evgenii Stepanovd957e962023-11-28 15:14:39 -080032 static_libs: ["libbase"],
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070033 relative_install_path: "bionic-loader-test-libs",
34 gtest: false,
Colin Cross2722ebb2016-07-11 16:20:06 -070035 sanitize: {
Evgenii Stepanov0a3637d2016-07-06 13:20:59 -070036 address: false,
Mitch Phillipsdfde0ee2019-05-01 14:26:13 -070037 fuzzer: false,
Colin Cross2722ebb2016-07-11 16:20:06 -070038 },
Yabin Cui1f553ea2017-01-13 12:31:59 -080039 stl: "libc++_static",
Colin Cross2722ebb2016-07-11 16:20:06 -070040 target: {
41 darwin: {
42 enabled: false,
43 },
44 },
Florian Mayer37b4a152022-10-03 14:29:16 -070045 strip: {
46 none: true,
47 },
Colin Cross2722ebb2016-07-11 16:20:06 -070048}
49
50// -----------------------------------------------------------------------------
Ryan Pricharde4ee12f2019-01-15 20:35:00 -080051// Libraries and helper binaries for ELF TLS
Elliott Hughes9724e932018-03-23 18:46:07 -070052// -----------------------------------------------------------------------------
53cc_test_library {
Ryan Pricharde4ee12f2019-01-15 20:35:00 -080054 name: "libtest_elftls_shared_var",
55 defaults: ["bionic_testlib_defaults"],
56 srcs: ["elftls_shared_var.cpp"],
57 cflags: ["-fno-emulated-tls"],
58}
59
60cc_test_library {
61 name: "libtest_elftls_shared_var_ie",
62 defaults: ["bionic_testlib_defaults"],
63 srcs: ["elftls_shared_var_ie.cpp"],
64 cflags: ["-fno-emulated-tls"],
65 shared_libs: ["libtest_elftls_shared_var"],
66}
67
68cc_test_library {
69 name: "libtest_elftls_tprel",
70 defaults: ["bionic_testlib_defaults"],
71 srcs: ["elftls_tprel.cpp"],
72 cflags: ["-fno-emulated-tls"],
73}
74
75cc_test {
76 name: "elftls_dlopen_ie_error_helper",
77 defaults: ["bionic_testlib_defaults"],
78 srcs: ["elftls_dlopen_ie_error_helper.cpp"],
79 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
80}
81
Ryan Prichard06d2d792019-01-23 23:19:19 -080082cc_test_library {
83 name: "libtest_elftls_dynamic",
84 defaults: ["bionic_testlib_defaults"],
85 srcs: ["elftls_dynamic.cpp"],
86 cflags: ["-fno-emulated-tls"],
87 shared_libs: ["libtest_elftls_shared_var"],
88}
89
Vy Nguyend5007512020-07-14 17:37:04 -040090cc_test {
Vy Nguyen19f84862020-09-23 21:43:31 -040091 name: "thread_exit_cb_helper",
Vy Nguyend5007512020-07-14 17:37:04 -040092 defaults: ["bionic_testlib_defaults"],
93 srcs: ["thread_exit_cb_helper.cpp"],
94 cflags: ["-fno-emulated-tls"],
95}
96
97cc_test {
98 name: "tls_properties_helper",
99 defaults: ["bionic_testlib_defaults"],
100 srcs: ["tls_properties_helper.cpp"],
101 cflags: ["-fno-emulated-tls"],
102 shared_libs: ["libtest_elftls_shared_var"],
103}
104
105
Ryan Prichard06d2d792019-01-23 23:19:19 -0800106cc_test_library {
107 name: "libtest_elftls_dynamic_filler_1",
108 defaults: ["bionic_testlib_defaults"],
109 srcs: ["elftls_dynamic_filler.cpp"],
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700110 cflags: [
111 "-fno-emulated-tls",
112 "-DTLS_FILLER=100",
113 ],
Ryan Prichard06d2d792019-01-23 23:19:19 -0800114}
115
116cc_test_library {
117 name: "libtest_elftls_dynamic_filler_2",
118 defaults: ["bionic_testlib_defaults"],
119 srcs: ["elftls_dynamic_filler.cpp"],
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700120 cflags: [
121 "-fno-emulated-tls",
122 "-DTLS_FILLER=200",
123 ],
Ryan Prichard06d2d792019-01-23 23:19:19 -0800124}
125
126cc_test_library {
127 name: "libtest_elftls_dynamic_filler_3",
128 defaults: ["bionic_testlib_defaults"],
129 srcs: ["elftls_dynamic_filler.cpp"],
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700130 cflags: [
131 "-fno-emulated-tls",
132 "-DTLS_FILLER=300",
133 ],
Ryan Prichard06d2d792019-01-23 23:19:19 -0800134}
135
Elliott Hughes9724e932018-03-23 18:46:07 -0700136// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700137// Library to test gnu-styled hash
138// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700139cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700140 name: "libgnu-hash-table-library",
141 defaults: ["bionic_testlib_defaults"],
142 srcs: ["dlext_test_library.cpp"],
143 ldflags: ["-Wl,--hash-style=gnu"],
Colin Cross2722ebb2016-07-11 16:20:06 -0700144}
145
146// -----------------------------------------------------------------------------
147// Library to test sysv-styled hash
148// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700149cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700150 name: "libsysv-hash-table-library",
151 defaults: ["bionic_testlib_defaults"],
152 srcs: ["dlext_test_library.cpp"],
153 ldflags: ["-Wl,--hash-style=sysv"],
154}
155
156// -----------------------------------------------------------------------------
157// Library used by dlext tests - with GNU RELRO program header
158// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700159cc_test_library {
160 name: "libdlext_test",
161 defaults: ["bionic_testlib_defaults"],
162 srcs: ["dlext_test_library.cpp"],
163 ldflags: ["-Wl,-z,relro"],
164 shared_libs: ["libtest_simple"],
165}
Colin Cross2722ebb2016-07-11 16:20:06 -0700166
167// -----------------------------------------------------------------------------
168// Library used by dlext tests - without GNU RELRO program header
169// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700170cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700171 name: "libdlext_test_norelro",
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700172 defaults: ["bionic_testlib_defaults"],
Colin Cross2722ebb2016-07-11 16:20:06 -0700173 srcs: ["dlext_test_library.cpp"],
174 ldflags: ["-Wl,-z,norelro"],
Elliott Hughesd50a1de2018-02-05 17:30:57 -0800175 shared_libs: ["libtest_simple"],
Colin Cross2722ebb2016-07-11 16:20:06 -0700176}
177
178// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700179// Library used by dlext tests - recursive use of RELRO sharing
180// -----------------------------------------------------------------------------
181cc_test_library {
182 name: "libdlext_test_recursive",
183 defaults: ["bionic_testlib_defaults"],
184 srcs: ["dlext_test_recursive_library.cpp"],
185 ldflags: ["-Wl,-z,relro"],
186 shared_libs: ["libdlext_test"],
187}
188
189// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700190// Library used by dlext tests - different name non-default location
191// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700192cc_test_library {
193 name: "libdlext_test_fd",
194 defaults: ["bionic_testlib_defaults"],
195 host_supported: false,
196 srcs: ["dlext_test_library.cpp"],
197 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
198 relative_install_path: "bionic-loader-test-libs/libdlext_test_fd",
199 shared_libs: ["libtest_simple"],
200}
Colin Cross2722ebb2016-07-11 16:20:06 -0700201
202// -----------------------------------------------------------------------------
203// Libraries used by dlext tests for open from a zip-file
204// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700205cc_test_library {
206 name: "libdlext_test_zip",
207 defaults: ["bionic_testlib_defaults"],
208 host_supported: false,
209 srcs: ["dlext_test_library.cpp"],
210 shared_libs: ["libatest_simple_zip"],
211 relative_install_path: "bionic-loader-test-libs/libdlext_test_zip",
212}
213
214cc_test_library {
215 name: "libatest_simple_zip",
216 defaults: ["bionic_testlib_defaults"],
217 host_supported: false,
218 srcs: ["dlopen_testlib_simple.cpp"],
219 relative_install_path: "bionic-loader-test-libs/libatest_simple_zip",
220}
Colin Cross2722ebb2016-07-11 16:20:06 -0700221
222// ----------------------------------------------------------------------------
223// Library with soname which does not match filename
224// ----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700225cc_test_library {
226 name: "libdlext_test_different_soname",
227 defaults: ["bionic_testlib_defaults"],
228 srcs: ["dlext_test_library.cpp"],
229 ldflags: ["-Wl,-soname=libdlext_test_soname.so"],
230}
Colin Cross2722ebb2016-07-11 16:20:06 -0700231
232// -----------------------------------------------------------------------------
233// Library used by dlext tests - zipped and aligned
234// -----------------------------------------------------------------------------
235// In Android.mk to support zipped and aligned tests
236
237// -----------------------------------------------------------------------------
238// Library used by dlfcn tests
239// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700240cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700241 name: "libtest_simple",
242 defaults: ["bionic_testlib_defaults"],
243 srcs: ["dlopen_testlib_simple.cpp"],
244}
245
246// -----------------------------------------------------------------------------
Florian Mayerc10d0642023-03-22 16:12:49 -0700247// Libraries used by hwasan_test
248// -----------------------------------------------------------------------------
249cc_test_library {
250 name: "libtest_simple_hwasan",
251 arch: {
252 arm64: {
253 enabled: true,
254 },
255 },
256 sanitize: {
257 hwaddress: true,
258 },
259 relative_install_path: "hwasan",
260 enabled: false,
261 srcs: ["dlopen_testlib_simple_hwasan.cpp"],
262}
263
264cc_test_library {
265 // A weird name. This is the vanilla (non-HWASan) copy of the library that
266 // is used for the hwasan test.
267 name: "libtest_simple_hwasan_nohwasan",
268 arch: {
269 arm64: {
270 enabled: true,
271 },
272 },
273 stem: "libtest_simple_hwasan",
274 enabled: false,
275 srcs: ["dlopen_testlib_simple_hwasan.cpp"],
276}
277
278// -----------------------------------------------------------------------------
dimitry965d06d2017-11-28 16:03:07 +0100279// Library used by dlext direct unload on the namespace boundary tests
280// -----------------------------------------------------------------------------
281cc_test_library {
282 name: "libtest_missing_symbol",
283 defaults: ["bionic_testlib_defaults"],
284 srcs: ["dlopen_testlib_missing_symbol.cpp"],
285 allow_undefined_symbols: true,
286 relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
287}
288
dimitry965d06d2017-11-28 16:03:07 +0100289// -----------------------------------------------------------------------------
290// Library used by dlext indirect unload on the namespace boundary tests
291//
292// These libraries produce following dependency graph:
293// libtest_missing_symbol_root (private ns)
294// +-> libbnstest_public (public ns)
295// +-> libtest_missing_symbol_child_public (public ns)
296// +-> libnstest_public (public ns)
297// +-> libtest_missing_symbol_child_private (private_ns)
298// +-> libnstest_public (public_ns)
299//
300// All libraries except libtest_missing_symbol are located in
301// private_namespace_libs/
302// -----------------------------------------------------------------------------
303cc_test_library {
304 name: "libtest_missing_symbol_child_public",
305 defaults: ["bionic_testlib_defaults"],
306 srcs: ["empty.cpp"],
307 relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
308 shared_libs: ["libnstest_public"],
309}
310
311cc_test_library {
312 name: "libtest_missing_symbol_child_private",
313 defaults: ["bionic_testlib_defaults"],
314 srcs: ["empty.cpp"],
315 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
316 shared_libs: ["libnstest_public"],
317}
318
319cc_test_library {
320 name: "libtest_missing_symbol_root",
321 defaults: ["bionic_testlib_defaults"],
322 srcs: ["dlopen_testlib_missing_symbol.cpp"],
323 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
324 allow_undefined_symbols: true,
325 shared_libs: [
326 "libnstest_public",
327 "libtest_missing_symbol_child_public",
328 "libtest_missing_symbol_child_private",
329 ],
330}
331
332// -----------------------------------------------------------------------------
333// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700334// Library used by dlfcn nodelete tests
335// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700336cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700337 name: "libtest_nodelete_1",
338 defaults: ["bionic_testlib_defaults"],
339 srcs: ["dlopen_nodelete_1.cpp"],
340}
341
342// -----------------------------------------------------------------------------
343// Library used by dlfcn nodelete tests
344// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700345cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700346 name: "libtest_nodelete_2",
347 defaults: ["bionic_testlib_defaults"],
348 srcs: ["dlopen_nodelete_2.cpp"],
349}
350
351// -----------------------------------------------------------------------------
352// Library used by dlfcn nodelete tests
353// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700354cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700355 name: "libtest_nodelete_dt_flags_1",
356 defaults: ["bionic_testlib_defaults"],
357 srcs: ["dlopen_nodelete_dt_flags_1.cpp"],
358 ldflags: ["-Wl,-z,nodelete"],
359}
360
361// -----------------------------------------------------------------------------
362// Build test helper libraries for linker namespaces
dimitry965d06d2017-11-28 16:03:07 +0100363//
364// This set of libraries is used to verify linker namespaces.
365//
366// Test cases
367// 1. Check that private libraries loaded in different namespaces are
368// different. Check that dlsym does not confuse them.
369// 2. Check that public libraries loaded in different namespaces are shared
370// between them.
371// 3. Check that namespace sticks on dlopen
372// 4. Check that having access to shared library (libnstest_public.so)
373// does not expose symbols from dependent library (libnstest_public_internal.so)
374//
375// Dependency tree (visibility)
376// libnstest_root.so (this should be local to the namespace)
377// +-> libnstest_public.so
378// +-> libnstest_public_internal.so
379// +-> libnstest_private.so
380//
381// libnstest_dlopened.so (library in private namespace dlopened from libnstest_root.so)
Colin Cross2722ebb2016-07-11 16:20:06 -0700382// -----------------------------------------------------------------------------
dimitry965d06d2017-11-28 16:03:07 +0100383cc_test_library {
384 name: "libnstest_root",
385 defaults: ["bionic_testlib_defaults"],
386 srcs: ["namespaces_root.cpp"],
387 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
388 shared_libs: [
389 "libnstest_public",
390 "libnstest_private",
391 ],
392}
393
394cc_test_library {
395 name: "libnstest_public_internal",
396 defaults: ["bionic_testlib_defaults"],
397 srcs: ["namespaces_public_internal.cpp"],
398 relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
399}
400
401cc_test_library {
402 name: "libnstest_public",
403 defaults: ["bionic_testlib_defaults"],
404 srcs: ["namespaces_public.cpp"],
405 relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
406 shared_libs: ["libnstest_public_internal"],
407}
408
409cc_test_library {
410 name: "libnstest_private",
411 defaults: ["bionic_testlib_defaults"],
412 srcs: ["namespaces_private.cpp"],
413 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
414}
415
416cc_test_library {
417 name: "libnstest_dlopened",
418 defaults: ["bionic_testlib_defaults"],
419 srcs: ["namespaces_dlopened.cpp"],
420 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
421}
Colin Cross2722ebb2016-07-11 16:20:06 -0700422
423// -----------------------------------------------------------------------------
Logan Chien9ee45912018-01-18 12:05:09 +0800424// Build test helper libraries for linker namespaces for allow all shared libs
425//
426// This set of libraries is used to verify linker namespaces for allow all
427// shared libs.
428//
429// Test cases
430// 1. Check that namespace a exposes libnstest_ns_a_public1 to
431// namespace b while keeping libnstest_ns_a_public1_internal as an
432// internal lib.
433// 2. Check that namespace b exposes all libraries to namespace a.
434//
435// Dependency tree (visibility)
436// libnstest_ns_b_public2.so (ns:b)
437// +-> libnstest_ns_a_public1.so (ns:a)
438// +-> libnstest_ns_a_public2_internal.so (ns:a)
439// +-> libnstest_ns_b_public3.so (ns:b)
440//
441// -----------------------------------------------------------------------------
442cc_test_library {
443 name: "libnstest_ns_a_public1",
444 defaults: ["bionic_testlib_defaults"],
445 srcs: ["libnstest_ns_a_public1.cpp"],
446 relative_install_path: "bionic-loader-test-libs/ns_a",
447 shared_libs: [
448 "libnstest_ns_a_public1_internal",
449 "libnstest_ns_b_public3",
450 ],
451}
452
453cc_test_library {
454 name: "libnstest_ns_a_public1_internal",
455 defaults: ["bionic_testlib_defaults"],
456 srcs: ["libnstest_ns_a_public1_internal.cpp"],
457 relative_install_path: "bionic-loader-test-libs/ns_a",
458}
459
460cc_test_library {
461 name: "libnstest_ns_b_public2",
462 defaults: ["bionic_testlib_defaults"],
463 srcs: ["libnstest_ns_b_public2.cpp"],
464 relative_install_path: "bionic-loader-test-libs/ns_b",
465 shared_libs: ["libnstest_ns_a_public1"],
466}
467
468cc_test_library {
469 name: "libnstest_ns_b_public3",
470 defaults: ["bionic_testlib_defaults"],
471 srcs: ["libnstest_ns_b_public3.cpp"],
472 relative_install_path: "bionic-loader-test-libs/ns_b",
473}
474
475// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700476// Build test helper libraries for linker namespaces
477//
478// This set of libraries is to test isolated namespaces
479//
480// Isolated namespaces do not allow loading of the library outside of
481// the search paths.
482//
483// This library cannot be loaded in isolated namespace because one of DT_NEEDED
484// libraries is outside of the search paths.
485//
486// libnstest_root_not_isolated.so (DT_RUNPATH = $ORIGIN/../private_namespace_libs_external/)
487// +-> libnstest_public.so
488// +-> libnstest_private_external.so (located in $ORIGIN/../private_namespace_libs_external/)
489//
490// Search path: $NATIVE_TESTS/private_namespace_libs/
491//
Colin Cross2722ebb2016-07-11 16:20:06 -0700492// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700493
494cc_test_library {
495 name: "libnstest_root_not_isolated",
496 defaults: ["bionic_testlib_defaults"],
497 host_supported: false,
498 srcs: ["namespaces_root.cpp"],
499 shared_libs: [
500 "libnstest_public",
501 "libnstest_private_external",
502 ],
503 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
504 ldflags: ["-Wl,--rpath,$ORIGIN/../private_namespace_libs_external"],
505}
506
507cc_test_library {
508 name: "libnstest_private_external",
509 defaults: ["bionic_testlib_defaults"],
510 host_supported: false,
511 srcs: ["namespaces_private.cpp"],
512 relative_install_path: "bionic-loader-test-libs/private_namespace_libs_external",
513}
514
515// -----------------------------------------------------------------------------
Ryan Prichard22fa3dd2020-01-31 14:47:48 -0800516// ns_hidden_child linker namespace test
517// -----------------------------------------------------------------------------
518
519cc_test {
520 name: "ns_hidden_child_helper",
521 host_supported: false,
522 defaults: ["bionic_testlib_defaults"],
523 srcs: ["ns_hidden_child_helper.cpp"],
524 shared_libs: [
525 "libns_hidden_child_internal",
526 "libns_hidden_child_global",
527 "libdl_android",
528 ],
529 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
530}
531
532cc_test_library {
533 name: "libns_hidden_child_global",
534 defaults: ["bionic_testlib_defaults"],
535 host_supported: false,
536 srcs: ["ns_hidden_child_global.cpp"],
537 shared_libs: ["libns_hidden_child_internal"],
538 ldflags: ["-Wl,-z,global"],
539}
540
541cc_test_library {
542 name: "libns_hidden_child_internal",
543 defaults: ["bionic_testlib_defaults"],
544 host_supported: false,
545 srcs: ["ns_hidden_child_internal.cpp"],
546}
547
548cc_test_library {
549 name: "libns_hidden_child_public",
550 defaults: ["bionic_testlib_defaults"],
551 host_supported: false,
552 srcs: ["ns_hidden_child_public.cpp"],
553 shared_libs: ["libns_hidden_child_internal"],
554}
555
556cc_test_library {
557 name: "libns_hidden_child_app",
558 defaults: ["bionic_testlib_defaults"],
559 host_supported: false,
560 srcs: ["ns_hidden_child_app.cpp"],
561 shared_libs: ["libns_hidden_child_public"],
562 relative_install_path: "bionic-loader-test-libs/ns_hidden_child_app",
563}
564
565// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700566// Build DT_RUNPATH test helper libraries
567//
568// Dependencies
569//
570// libtest_dt_runpath_d.so runpath: ${ORIGIN}/dt_runpath_b_c_x, ${ORIGIN}/dt_runpath_y/${LIB}
571// |-> dt_runpath_b_c_x/libtest_dt_runpath_b.so runpath: ${ORIGIN}/../dt_runpath_a
572// | |-> dt_runpath_a/libtest_dt_runpath_a.so
573// |-> dt_runpath_b_c_x/libtest_dt_runpath_c.so runpath: ${ORIGIN}/invalid_dt_runpath
574// | |-> libtest_dt_runpath_a.so (soname)
575// |-> dt_runpath_y/lib[64]/libtest_dt_runpath_y.so
576//
577// This one is used to test dlopen
578// dt_runpath_b_c_x/libtest_dt_runpath_x.so
579//
580// -----------------------------------------------------------------------------
581
582// A leaf library in a non-standard directory.
583cc_test_library {
584 name: "libtest_dt_runpath_a",
585 defaults: ["bionic_testlib_defaults"],
586 srcs: ["empty.cpp"],
587 relative_install_path: "bionic-loader-test-libs/dt_runpath_a",
588}
589
590// Depends on library A with a DT_RUNPATH
591cc_test_library {
592 name: "libtest_dt_runpath_b",
593 defaults: ["bionic_testlib_defaults"],
594 srcs: ["empty.cpp"],
595 shared_libs: ["libtest_dt_runpath_a"],
596 relative_install_path: "bionic-loader-test-libs/dt_runpath_b_c_x",
597 ldflags: ["-Wl,--rpath,${ORIGIN}/../dt_runpath_a"],
598}
599
600// Depends on library A with an incorrect DT_RUNPATH. This does not matter
601// because B is the first in the D (below) dependency order, and library A
602// is already loaded using the correct DT_RUNPATH from library B.
603cc_test_library {
604 name: "libtest_dt_runpath_c",
605 defaults: ["bionic_testlib_defaults"],
606 srcs: ["empty.cpp"],
607 shared_libs: ["libtest_dt_runpath_a"],
608 relative_install_path: "bionic-loader-test-libs/dt_runpath_b_c_x",
609 ldflags: ["-Wl,--rpath,${ORIGIN}/invalid_dt_runpath"],
610}
611
612// D depends on B, C, and Y with DT_RUNPATH.
613cc_test_library {
614 name: "libtest_dt_runpath_d",
615 defaults: ["bionic_testlib_defaults"],
616 srcs: ["dlopen_b.cpp"],
617 shared_libs: [
618 "libtest_dt_runpath_b",
619 "libtest_dt_runpath_c",
620 "libtest_dt_runpath_y",
621 ],
622 ldflags: [
623 "-Wl,--rpath,${ORIGIN}/dt_runpath_b_c_x",
624 "-Wl,--rpath,${ORIGIN}/dt_runpath_y/${LIB}",
625 ],
626}
627
628// D version for open-from-zip test with runpath
629cc_test_library {
630 name: "libtest_dt_runpath_d_zip",
631 srcs: ["dlopen_b.cpp"],
632 shared_libs: [
633 "libtest_dt_runpath_b",
634 "libtest_dt_runpath_c",
635 "libtest_dt_runpath_y",
636 ],
637 cflags: [
638 "-Wall",
639 "-Werror",
640 ],
641 gtest: false,
642 relative_install_path: "libtest_dt_runpath_d_zip",
643 ldflags: [
644 "-Wl,--rpath,${ORIGIN}/dt_runpath_b_c_x",
645 "-Wl,--rpath,${ORIGIN}/dt_runpath_y/${LIB}",
646 ],
647 sanitize: {
648 address: false,
649 fuzzer: false,
650 },
651 stl: "libc++_static",
652 target: {
653 darwin: {
654 enabled: false,
655 },
656 },
657}
658
659// A leaf library in a directory library D has DT_RUNPATH for.
660cc_test_library {
661 name: "libtest_dt_runpath_x",
662 defaults: ["bionic_testlib_defaults"],
663 srcs: ["empty.cpp"],
664 relative_install_path: "bionic-loader-test-libs/dt_runpath_b_c_x",
665}
666
667// A leaf library in lib or lib64 directory
668cc_test_library {
669 name: "libtest_dt_runpath_y",
670 defaults: ["bionic_testlib_defaults"],
671 srcs: ["empty.cpp"],
672
673 multilib: {
674 lib32: {
675 relative_install_path: "bionic-loader-test-libs/dt_runpath_y/lib",
676 },
677 lib64: {
678 relative_install_path: "bionic-loader-test-libs/dt_runpath_y/lib64",
679 },
680 },
681}
Colin Cross2722ebb2016-07-11 16:20:06 -0700682
683// -----------------------------------------------------------------------------
684// Build library with two parents
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700685//
686// Libraries used by dlfcn tests to verify local group ref_counting
687// libtest_two_parents*.so
Colin Cross2722ebb2016-07-11 16:20:06 -0700688// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700689
690// ..._child.so - correct answer
691cc_test_library {
692 name: "libtest_two_parents_child",
693 defaults: ["bionic_testlib_defaults"],
694 srcs: ["dlopen_2_parents_reloc_answer.cpp"],
695}
696
697// ..._parent1.so - correct answer
698cc_test_library {
699 name: "libtest_two_parents_parent1",
700 defaults: ["bionic_testlib_defaults"],
701 srcs: ["dlopen_check_order_reloc_answer_impl.cpp"],
702 shared_libs: ["libtest_two_parents_child"],
703 cflags: ["-D__ANSWER=42"],
704}
705
706// ..._parent2.so - incorrect answer
707cc_test_library {
708 name: "libtest_two_parents_parent2",
709 defaults: ["bionic_testlib_defaults"],
710 srcs: ["dlopen_check_order_reloc_answer_impl.cpp"],
711 shared_libs: ["libtest_two_parents_child"],
712 cflags: ["-D__ANSWER=1"],
713}
Colin Cross2722ebb2016-07-11 16:20:06 -0700714
715// -----------------------------------------------------------------------------
716// Build libtest_check_order_dlsym.so with its dependencies.
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700717//
718// Libraries used by dlfcn tests to verify correct load order:
Colin Cross2722ebb2016-07-11 16:20:06 -0700719// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700720
721// libtest_check_order_2_right.so
722cc_test_library {
723 name: "libtest_check_order_dlsym_2_right",
724 defaults: ["bionic_testlib_defaults"],
725 srcs: ["dlopen_check_order_dlsym_answer.cpp"],
726 cflags: ["-D__ANSWER=42"],
727}
728
729// libtest_check_order_a.so
730cc_test_library {
731 name: "libtest_check_order_dlsym_a",
732 defaults: ["bionic_testlib_defaults"],
733 srcs: ["dlopen_check_order_dlsym_answer.cpp"],
734 cflags: ["-D__ANSWER=1"],
735}
736
737// libtest_check_order_b.so
738cc_test_library {
739 name: "libtest_check_order_dlsym_b",
740 defaults: ["bionic_testlib_defaults"],
741 srcs: ["dlopen_check_order_dlsym_answer.cpp"],
742 cflags: [
743 "-D__ANSWER=2",
744 "-D__ANSWER2=43",
745 ],
746}
747
748// libtest_check_order_c.so
749cc_test_library {
750 name: "libtest_check_order_dlsym_3_c",
751 defaults: ["bionic_testlib_defaults"],
752 srcs: ["dlopen_check_order_dlsym_answer.cpp"],
753 cflags: ["-D__ANSWER=3"],
754}
755
756// libtest_check_order_d.so
757cc_test_library {
758 name: "libtest_check_order_dlsym_d",
759 defaults: ["bionic_testlib_defaults"],
760 shared_libs: ["libtest_check_order_dlsym_b"],
761 srcs: ["dlopen_check_order_dlsym_answer.cpp"],
762 cflags: [
763 "-D__ANSWER=4",
764 "-D__ANSWER2=4",
765 ],
766}
767
768// libtest_check_order_left.so
769cc_test_library {
770 name: "libtest_check_order_dlsym_1_left",
771 defaults: ["bionic_testlib_defaults"],
772 shared_libs: [
773 "libtest_check_order_dlsym_a",
774 "libtest_check_order_dlsym_b",
775 ],
776 srcs: ["empty.cpp"],
777}
778
779// libtest_check_order.so
780cc_test_library {
781 name: "libtest_check_order_dlsym",
782 defaults: ["bionic_testlib_defaults"],
783 shared_libs: [
784 "libtest_check_order_dlsym_1_left",
785 "libtest_check_order_dlsym_2_right",
786 "libtest_check_order_dlsym_3_c",
787 ],
788 srcs: ["empty.cpp"],
789}
Colin Cross2722ebb2016-07-11 16:20:06 -0700790
791// -----------------------------------------------------------------------------
792// Build libtest_check_order_siblings.so with its dependencies.
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700793//
794// Libraries used by dlfcn tests to verify correct relocation order:
795// libtest_check_order_reloc_siblings*.so
Colin Cross2722ebb2016-07-11 16:20:06 -0700796// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700797
798// ..._1.so - empty
799cc_test_library {
800 name: "libtest_check_order_reloc_siblings_1",
801 defaults: ["bionic_testlib_defaults"],
802 shared_libs: [
803 "libtest_check_order_reloc_siblings_a",
804 "libtest_check_order_reloc_siblings_b",
805 ],
806 srcs: ["empty.cpp"],
807}
808
809// ..._2.so - empty
810cc_test_library {
811 name: "libtest_check_order_reloc_siblings_2",
812 defaults: ["bionic_testlib_defaults"],
813 shared_libs: [
814 "libtest_check_order_reloc_siblings_c",
815 "libtest_check_order_reloc_siblings_d",
816 ],
817 srcs: [
818 "dlopen_check_order_reloc_grandchild_answer.cpp",
819 ],
820 allow_undefined_symbols: true,
821}
822
823// ..._3.so - get_answer2();
824cc_test_library {
825 name: "libtest_check_order_reloc_siblings_3",
826 defaults: ["bionic_testlib_defaults"],
827 shared_libs: [
828 "libtest_check_order_reloc_siblings_e",
829 "libtest_check_order_reloc_siblings_f",
830 ],
831 srcs: [
832 "dlopen_check_order_reloc_nephew_answer.cpp",
833 ],
834}
835
836// ..._a.so <- correct impl
837cc_test_library {
838 name: "libtest_check_order_reloc_siblings_a",
839 defaults: ["bionic_testlib_defaults"],
840 srcs: [
841 "dlopen_check_order_reloc_answer_impl.cpp",
842 ],
843 cflags: ["-D__ANSWER=42"],
844}
845
846// ..._b.so
847cc_test_library {
848 name: "libtest_check_order_reloc_siblings_b",
849 defaults: ["bionic_testlib_defaults"],
850 srcs: [
851 "dlopen_check_order_reloc_answer_impl.cpp",
852 ],
853 cflags: ["-D__ANSWER=1"],
854}
855
856// ..._c.so
857cc_test_library {
858 name: "libtest_check_order_reloc_siblings_c",
859 defaults: ["bionic_testlib_defaults"],
860 shared_libs: [
861 "libtest_check_order_reloc_siblings_c_1",
862 "libtest_check_order_reloc_siblings_c_2",
863 ],
864 srcs: [
865 "dlopen_check_order_reloc_answer_impl.cpp",
866 ],
867 cflags: ["-D__ANSWER=2"],
868}
869
870// ..._d.so
871cc_test_library {
872 name: "libtest_check_order_reloc_siblings_d",
873 defaults: ["bionic_testlib_defaults"],
874 srcs: [
875 "dlopen_check_order_reloc_answer_impl.cpp",
876 ],
877 cflags: ["-D__ANSWER=3"],
878}
879
880// ..._e.so
881cc_test_library {
882 name: "libtest_check_order_reloc_siblings_e",
883 defaults: ["bionic_testlib_defaults"],
884 srcs: [
885 "dlopen_check_order_reloc_answer_impl.cpp",
886 ],
887 cflags: [
888 "-D__ANSWER=4",
889 ],
890}
891
892// ..._f.so <- get_answer()
893cc_test_library {
894 name: "libtest_check_order_reloc_siblings_f",
895 defaults: ["bionic_testlib_defaults"],
896 srcs: [
897 "dlopen_check_order_reloc_answer.cpp",
898 ],
899}
900
901// ..._c_1.so
902cc_test_library {
903 name: "libtest_check_order_reloc_siblings_c_1",
904 defaults: ["bionic_testlib_defaults"],
905 srcs: [
906 "dlopen_check_order_reloc_grandchild_answer_impl.cpp",
907 ],
908 cflags: ["-D__ANSWER=42"],
909}
910
911// ..._c_2.so
912cc_test_library {
913 name: "libtest_check_order_reloc_siblings_c_2",
914 defaults: ["bionic_testlib_defaults"],
915 srcs: [
916 "dlopen_check_order_reloc_grandchild_answer_impl.cpp",
917 ],
918 cflags: ["-D__ANSWER=0"],
919}
920
921// libtest_check_order_reloc_siblings.so
922cc_test_library {
923 name: "libtest_check_order_reloc_siblings",
924 defaults: ["bionic_testlib_defaults"],
925 shared_libs: [
926 "libtest_check_order_reloc_siblings_1",
927 "libtest_check_order_reloc_siblings_2",
928 "libtest_check_order_reloc_siblings_3",
929 ],
930 srcs: [
931 "empty.cpp",
932 ],
933}
Colin Cross2722ebb2016-07-11 16:20:06 -0700934
935// -----------------------------------------------------------------------------
936// Build libtest_check_order_root.so with its dependencies.
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700937//
938// Libraries used by dlfcn tests to verify correct relocation order:
939// libtest_check_order_reloc_root*.so
Colin Cross2722ebb2016-07-11 16:20:06 -0700940// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700941
942// ..._1.so - empty
943cc_test_library {
944 name: "libtest_check_order_reloc_root_1",
945 defaults: ["bionic_testlib_defaults"],
946 srcs: ["empty.cpp"],
947}
948
949// ..._2.so - this one has the incorrect answer
950cc_test_library {
951 name: "libtest_check_order_reloc_root_2",
952 defaults: ["bionic_testlib_defaults"],
953 srcs: ["dlopen_check_order_reloc_root_answer_impl.cpp"],
954 cflags: ["-D__ANSWER=2"],
955}
956
957// libtest_check_order_reloc_root.so <- implements get_answer3()
958cc_test_library {
959 name: "libtest_check_order_reloc_root",
960 defaults: ["bionic_testlib_defaults"],
961 srcs: ["dlopen_check_order_reloc_root_answer.cpp"],
962 shared_libs: [
963 "libtest_check_order_reloc_root_1",
964 "libtest_check_order_reloc_root_2",
965 ],
966}
Colin Cross2722ebb2016-07-11 16:20:06 -0700967
968// -----------------------------------------------------------------------------
969// Build libtest_versioned_lib.so with its dependencies.
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700970//
971// Libraries used to test versioned symbols
Colin Cross2722ebb2016-07-11 16:20:06 -0700972// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -0700973
974cc_test_library {
975 name: "libtest_versioned_uselibv1",
976 defaults: ["bionic_testlib_defaults"],
977 srcs: ["versioned_uselib.cpp"],
978 shared_libs: ["libtest_versioned_libv1"],
979}
980
981cc_test_library {
982 name: "libtest_versioned_uselibv2",
983 defaults: ["bionic_testlib_defaults"],
984 srcs: ["versioned_uselib.cpp"],
985 shared_libs: ["libtest_versioned_libv2"],
986 version_script: "versioned_uselib.map",
987}
988
989cc_test_library {
990 name: "libtest_versioned_uselibv2_other",
991 defaults: ["bionic_testlib_defaults"],
992 srcs: ["versioned_uselib.cpp"],
993 shared_libs: [
994 "libtest_versioned_otherlib_empty",
995 "libtest_versioned_libv2",
996 ],
997}
998
999cc_test_library {
1000 name: "libtest_versioned_uselibv3_other",
1001 defaults: ["bionic_testlib_defaults"],
1002 srcs: ["versioned_uselib.cpp"],
1003 shared_libs: [
1004 "libtest_versioned_otherlib_empty",
1005 "libtest_versioned_lib",
1006 ],
1007}
1008
1009// lib v1 - this one used during static linking but never used at runtime
1010// which forces libtest_versioned_uselibv1 to use function v1 from
1011// libtest_versioned_lib.so
1012cc_test_library {
1013 name: "libtest_versioned_libv1",
1014 defaults: ["bionic_testlib_defaults"],
1015 srcs: ["versioned_lib_v1.cpp"],
1016 version_script: "versioned_lib_v1.map",
1017 ldflags: ["-Wl,-soname,libtest_versioned_lib.so"],
1018}
1019
1020// lib v2 - to make libtest_versioned_uselibv2.so use version 2 of versioned_function()
1021cc_test_library {
1022 name: "libtest_versioned_libv2",
1023 defaults: ["bionic_testlib_defaults"],
1024 srcs: ["versioned_lib_v2.cpp"],
1025 version_script: "versioned_lib_v2.map",
1026 ldflags: ["-Wl,-soname,libtest_versioned_lib.so"],
1027}
1028
1029// last version - this one is used at the runtime and exports 3 versions
1030// of versioned_symbol().
1031cc_test_library {
1032 name: "libtest_versioned_lib",
1033 defaults: ["bionic_testlib_defaults"],
1034 srcs: ["versioned_lib_v3.cpp"],
1035 version_script: "versioned_lib_v3.map",
1036}
1037
1038// This library is empty, the actual implementation will provide an unversioned
1039// symbol for versioned_function().
1040cc_test_library {
1041 name: "libtest_versioned_otherlib_empty",
1042 defaults: ["bionic_testlib_defaults"],
1043 srcs: ["empty.cpp"],
1044 ldflags: ["-Wl,-soname,libtest_versioned_otherlib.so"],
1045}
1046
1047cc_test_library {
1048 name: "libtest_versioned_otherlib",
1049 defaults: ["bionic_testlib_defaults"],
1050 srcs: ["versioned_lib_other.cpp"],
1051 version_script: "versioned_lib_other.map",
1052}
Colin Cross2722ebb2016-07-11 16:20:06 -07001053
1054// -----------------------------------------------------------------------------
1055// Build libraries needed by pthread_atfork tests
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -07001056
1057// This library used to test phtread_atfork handler behaviour
1058// during/after dlclose.
Colin Cross2722ebb2016-07-11 16:20:06 -07001059// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -07001060cc_test_library {
1061 name: "libtest_pthread_atfork",
1062 defaults: ["bionic_testlib_defaults"],
1063 srcs: ["pthread_atfork.cpp"],
1064}
Colin Cross2722ebb2016-07-11 16:20:06 -07001065
1066// -----------------------------------------------------------------------------
1067// Library with dependency loop used by dlfcn tests
1068//
1069// libtest_with_dependency_loop -> a -> b -> c -> a
1070// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001071cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001072 name: "libtest_with_dependency_loop",
1073 defaults: ["bionic_testlib_defaults"],
1074 srcs: ["dlopen_testlib_loopy_root.cpp"],
1075 shared_libs: ["libtest_with_dependency_loop_a"],
1076}
1077
1078// -----------------------------------------------------------------------------
1079// libtest_with_dependency_loop_a.so
1080// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001081cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001082 name: "libtest_with_dependency_loop_a",
1083 defaults: ["bionic_testlib_defaults"],
1084 srcs: ["dlopen_testlib_loopy_a.cpp"],
1085 shared_libs: ["libtest_with_dependency_loop_b_tmp"],
1086}
1087
1088// -----------------------------------------------------------------------------
1089// libtest_with_dependency_loop_b.so
1090//
1091// this is temporary placeholder - will be removed
1092// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001093cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001094 name: "libtest_with_dependency_loop_b_tmp",
1095 defaults: ["bionic_testlib_defaults"],
1096 srcs: ["dlopen_testlib_loopy_invalid.cpp"],
1097 ldflags: ["-Wl,-soname=libtest_with_dependency_loop_b.so"],
1098}
1099
1100// -----------------------------------------------------------------------------
1101// libtest_with_dependency_loop_b.so
1102// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001103cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001104 name: "libtest_with_dependency_loop_b",
1105 defaults: ["bionic_testlib_defaults"],
1106 srcs: ["dlopen_testlib_loopy_b.cpp"],
1107 shared_libs: ["libtest_with_dependency_loop_c"],
1108}
1109
1110// -----------------------------------------------------------------------------
1111// libtest_with_dependency_loop_c.so
1112// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001113cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001114 name: "libtest_with_dependency_loop_c",
1115 defaults: ["bionic_testlib_defaults"],
1116 srcs: ["dlopen_testlib_loopy_c.cpp"],
1117 shared_libs: ["libtest_with_dependency_loop_a"],
1118}
1119
1120// -----------------------------------------------------------------------------
1121// libtest_relo_check_dt_needed_order.so
1122// |
1123// +-> libtest_relo_check_dt_needed_order_1.so
1124// |
1125// +-> libtest_relo_check_dt_needed_order_2.so
1126// -----------------------------------------------------------------------------
1127
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001128cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001129 name: "libtest_relo_check_dt_needed_order",
1130 defaults: ["bionic_testlib_defaults"],
1131 srcs: ["dlopen_testlib_relo_check_dt_needed_order.cpp"],
1132 shared_libs: [
1133 "libtest_relo_check_dt_needed_order_1",
1134 "libtest_relo_check_dt_needed_order_2",
1135 ],
1136}
1137
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001138cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001139 name: "libtest_relo_check_dt_needed_order_1",
1140 defaults: ["bionic_testlib_defaults"],
1141 srcs: ["dlopen_testlib_relo_check_dt_needed_order_1.cpp"],
1142}
1143
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001144cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001145 name: "libtest_relo_check_dt_needed_order_2",
1146 defaults: ["bionic_testlib_defaults"],
1147 srcs: ["dlopen_testlib_relo_check_dt_needed_order_2.cpp"],
1148}
1149
1150// -----------------------------------------------------------------------------
1151// Library with dependency used by dlfcn tests
1152// -----------------------------------------------------------------------------
Dan Willemsen4bcfe3c2019-04-19 14:55:34 -07001153cc_test_library {
1154 name: "libtest_with_dependency",
1155 defaults: ["bionic_testlib_defaults"],
1156 srcs: ["dlopen_testlib_simple.cpp"],
1157 shared_libs: ["libdlext_test"],
1158}
Colin Cross2722ebb2016-07-11 16:20:06 -07001159
1160// -----------------------------------------------------------------------------
1161// Library used by ifunc tests
1162// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001163cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001164 name: "libtest_ifunc",
1165 defaults: ["bionic_testlib_defaults"],
Dimitry Ivanov21975b22017-05-02 16:31:56 -07001166 srcs: ["dlopen_testlib_ifunc.cpp"],
Dimitry Ivanov21975b22017-05-02 16:31:56 -07001167}
1168
1169cc_test_library {
1170 name: "libtest_ifunc_variable",
1171 defaults: ["bionic_testlib_defaults"],
1172 srcs: ["dlopen_testlib_ifunc_variable.cpp"],
Elliott Hughesd50a1de2018-02-05 17:30:57 -08001173 shared_libs: ["libtest_ifunc_variable_impl"],
Dimitry Ivanov21975b22017-05-02 16:31:56 -07001174}
1175
1176cc_test_library {
1177 name: "libtest_ifunc_variable_impl",
1178 defaults: ["bionic_testlib_defaults"],
1179 srcs: ["dlopen_testlib_ifunc_variable_impl.cpp"],
Colin Cross2722ebb2016-07-11 16:20:06 -07001180}
1181
1182// -----------------------------------------------------------------------------
1183// Library used by atexit tests
1184// -----------------------------------------------------------------------------
1185
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001186cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001187 name: "libtest_atexit",
1188 defaults: ["bionic_testlib_defaults"],
1189 srcs: ["atexit_testlib.cpp"],
1190}
1191
1192// -----------------------------------------------------------------------------
1193// This library is used by dl_load test to check symbol preempting
1194// by main executable
1195// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001196cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001197 name: "libdl_preempt_test_1",
1198 defaults: ["bionic_testlib_defaults"],
1199 srcs: ["dl_preempt_library_1.cpp"],
1200}
1201
1202// -----------------------------------------------------------------------------
1203// This library is used by dl_load test to check symbol preempting
1204// by libdl_preempt_test_1.so
1205// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001206cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001207 name: "libdl_preempt_test_2",
1208 defaults: ["bionic_testlib_defaults"],
1209 srcs: ["dl_preempt_library_2.cpp"],
1210}
1211
1212// -----------------------------------------------------------------------------
1213// Library with DF_1_GLOBAL
1214// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001215cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001216 name: "libdl_test_df_1_global",
1217 defaults: ["bionic_testlib_defaults"],
1218 srcs: ["dl_df_1_global.cpp"],
1219 ldflags: ["-Wl,-z,global"],
Colin Cross2722ebb2016-07-11 16:20:06 -07001220}
1221
1222// -----------------------------------------------------------------------------
1223// Library using symbol from libdl_test_df_1_global
1224// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001225cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001226 name: "libtest_dlsym_df_1_global",
1227 defaults: ["bionic_testlib_defaults"],
1228 srcs: ["dl_df_1_use_global.cpp"],
1229}
1230
1231// -----------------------------------------------------------------------------
Jiyong Park01162f22017-10-16 15:31:09 +09001232// Library with DF_1_GLOBAL which will be dlopened
1233// (note: libdl_test_df_1_global above will be included in DT_NEEDED)
1234// -----------------------------------------------------------------------------
1235cc_test_library {
1236 name: "libtest_dlopen_df_1_global",
1237 defaults: ["bionic_testlib_defaults"],
1238 srcs: ["dl_df_1_global_dummy.cpp"],
1239 ldflags: ["-Wl,-z,global"],
Jiyong Park01162f22017-10-16 15:31:09 +09001240}
1241
Jiyong Park01162f22017-10-16 15:31:09 +09001242// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -07001243// Library with weak function
1244// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001245cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001246 name: "libtest_dlsym_weak_func",
1247 defaults: ["bionic_testlib_defaults"],
1248 srcs: ["dlsym_weak_function.cpp"],
1249}
1250
1251// -----------------------------------------------------------------------------
1252// Library to check RTLD_LOCAL with dlsym in 'this'
1253// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001254cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001255 name: "libtest_dlsym_from_this",
1256 defaults: ["bionic_testlib_defaults"],
1257 srcs: ["dlsym_from_this_symbol.cpp"],
1258 shared_libs: ["libtest_dlsym_from_this_child"],
Colin Cross2722ebb2016-07-11 16:20:06 -07001259}
1260
1261// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001262cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001263 name: "libtest_dlsym_from_this_child",
1264 defaults: ["bionic_testlib_defaults"],
1265 srcs: ["dlsym_from_this_functions.cpp"],
1266 shared_libs: ["libtest_dlsym_from_this_grandchild"],
1267}
1268
1269// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001270cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001271 name: "libtest_dlsym_from_this_grandchild",
1272 defaults: ["bionic_testlib_defaults"],
1273 srcs: ["dlsym_from_this_symbol2.cpp"],
1274}
1275
1276// -----------------------------------------------------------------------------
1277// Empty library
1278// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001279cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001280 name: "libtest_empty",
1281 defaults: ["bionic_testlib_defaults"],
1282 srcs: ["empty.cpp"],
1283}
1284
1285// -----------------------------------------------------------------------------
dimitry8db36a52017-10-23 15:10:10 +02001286// Library for inaccessible shared library test
1287// -----------------------------------------------------------------------------
1288cc_test_library {
1289 name: "libtestshared",
1290 defaults: ["bionic_testlib_defaults"],
1291 srcs: ["empty.cpp"],
Nan Zhangdab0fd52017-11-07 11:05:24 -08001292 relative_install_path: "bionic-loader-test-libs/inaccessible_libs",
dimitry8db36a52017-10-23 15:10:10 +02001293}
1294
1295// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -07001296// Library with weak undefined function
1297// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001298cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001299 name: "libtest_dlopen_weak_undefined_func",
1300 defaults: ["bionic_testlib_defaults"],
1301 srcs: ["dlopen_weak_undefined.cpp"],
1302}
1303
1304// -----------------------------------------------------------------------------
Dimitry Ivanovd0b5c3a2016-11-25 12:23:11 -08001305// Check that RTLD_NEXT of a libc symbol works in dlopened library
1306// -----------------------------------------------------------------------------
1307cc_test_library {
1308 name: "libtest_check_rtld_next_from_library",
1309 defaults: ["bionic_testlib_defaults"],
1310 srcs: ["check_rtld_next_from_library.cpp"],
Pirama Arumuga Nainar8035caa2020-06-09 12:48:10 -07001311 native_coverage: false,
Dimitry Ivanovd0b5c3a2016-11-25 12:23:11 -08001312}
1313
1314// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -07001315// Library with constructor that calls dlopen() b/7941716
1316// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001317cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001318 name: "libtest_dlopen_from_ctor",
1319 defaults: ["bionic_testlib_defaults"],
1320 srcs: ["dlopen_testlib_dlopen_from_ctor.cpp"],
Colin Cross2722ebb2016-07-11 16:20:06 -07001321}
1322
1323// -----------------------------------------------------------------------------
Dimitry Ivanovec90e242017-02-10 11:04:20 -08001324// Libraries used to check init/fini call order
Dimitry Ivanovea8f3962017-02-09 13:31:57 -08001325// -----------------------------------------------------------------------------
1326cc_test_library {
1327 name: "libtest_init_fini_order_root",
1328 defaults: ["bionic_testlib_defaults"],
1329 srcs: ["dlopen_check_init_fini_root.cpp"],
Dimitry Ivanovec90e242017-02-10 11:04:20 -08001330 shared_libs: [
1331 "libtest_init_fini_order_child",
1332 "libtest_init_fini_order_grand_child",
1333 ],
1334}
1335
1336cc_test_library {
1337 name: "libtest_init_fini_order_root2",
1338 defaults: ["bionic_testlib_defaults"],
1339 srcs: ["dlopen_check_init_fini_root.cpp"],
1340 shared_libs: [
1341 "libtest_init_fini_order_grand_child",
1342 "libtest_init_fini_order_child",
1343 ],
Dimitry Ivanovea8f3962017-02-09 13:31:57 -08001344}
1345
1346cc_test_library {
1347 name: "libtest_init_fini_order_child",
1348 defaults: ["bionic_testlib_defaults"],
1349 srcs: ["dlopen_check_init_fini_child.cpp"],
1350 shared_libs: ["libtest_init_fini_order_grand_child"],
1351}
1352
1353cc_test_library {
1354 name: "libtest_init_fini_order_grand_child",
1355 defaults: ["bionic_testlib_defaults"],
1356 srcs: ["dlopen_check_init_fini_grand_child.cpp"],
1357}
1358
1359// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -07001360// Library that depends on the library with constructor that calls dlopen() b/7941716
1361// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -07001362cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -07001363 name: "libtest_dlopen_from_ctor_main",
1364 defaults: ["bionic_testlib_defaults"],
1365 srcs: ["empty.cpp"],
1366 shared_libs: ["libtest_dlopen_from_ctor"],
1367}
1368
1369// -----------------------------------------------------------------------------
dimitry55547db2018-05-25 14:17:37 +02001370// Libraries with non-trivial thread_local variable to test dlclose()
dimitry06016f22018-01-05 11:39:28 +01001371// -----------------------------------------------------------------------------
1372cc_test_library {
1373 name: "libtest_thread_local_dtor",
1374 defaults: ["bionic_testlib_defaults"],
1375 srcs: ["thread_local_dtor.cpp"],
1376}
1377
dimitry55547db2018-05-25 14:17:37 +02001378cc_test_library {
1379 name: "libtest_thread_local_dtor2",
1380 defaults: ["bionic_testlib_defaults"],
1381 srcs: ["thread_local_dtor2.cpp"],
1382}
1383
1384// -----------------------------------------------------------------------------
1385// Library dt_needs libtest_thread_local_dtor/2 (to check no-unload on load_group)
1386// -----------------------------------------------------------------------------
1387cc_test_library {
1388 name: "libtest_indirect_thread_local_dtor",
1389 defaults: ["bionic_testlib_defaults"],
1390 srcs: ["empty.cpp"],
1391 shared_libs: [
1392 "libtest_thread_local_dtor",
1393 "libtest_thread_local_dtor2",
1394 ],
1395}
1396
dimitry06016f22018-01-05 11:39:28 +01001397// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -07001398// Tool to use to align the shared libraries in a zip file.
1399// -----------------------------------------------------------------------------
1400cc_binary_host {
1401 name: "bionic_tests_zipalign",
1402 srcs: ["bionic_tests_zipalign.cpp"],
1403 cflags: [
1404 "-Wall",
1405 "-Werror",
1406 ],
1407
1408 static_libs: [
1409 "libziparchive",
1410 "liblog",
1411 "libbase",
1412 "libz",
1413 "libutils",
1414 ],
Colin Cross2722ebb2016-07-11 16:20:06 -07001415}
Evgenii Stepanov0a3637d2016-07-06 13:20:59 -07001416
1417cc_test_library {
1418 name: "libcfi-test",
1419 defaults: ["bionic_testlib_defaults"],
1420 srcs: ["cfi_test_lib.cpp"],
1421 sanitize: {
1422 cfi: false,
1423 },
1424}
1425
1426cc_test_library {
1427 name: "libcfi-test-bad",
1428 defaults: ["bionic_testlib_defaults"],
1429 srcs: ["cfi_test_bad_lib.cpp"],
1430 sanitize: {
1431 cfi: false,
1432 },
1433}
Evgenii Stepanov68ecec12017-01-31 13:19:30 -08001434
1435cc_test {
1436 name: "cfi_test_helper",
1437 host_supported: false,
1438 defaults: ["bionic_testlib_defaults"],
1439 srcs: ["cfi_test_helper.cpp"],
1440 ldflags: ["-rdynamic"],
1441}
1442
1443cc_test {
1444 name: "cfi_test_helper2",
1445 host_supported: false,
1446 defaults: ["bionic_testlib_defaults"],
1447 srcs: ["cfi_test_helper2.cpp"],
1448 shared_libs: ["libcfi-test"],
1449 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
1450}
Elliott Hugheseb04ed52017-03-29 13:48:02 -07001451
1452cc_test {
1453 name: "preinit_getauxval_test_helper",
1454 host_supported: false,
1455 defaults: ["bionic_testlib_defaults"],
1456 srcs: ["preinit_getauxval_test_helper.cpp"],
1457}
1458
1459cc_test {
1460 name: "preinit_syscall_test_helper",
1461 host_supported: false,
1462 defaults: ["bionic_testlib_defaults"],
1463 srcs: ["preinit_syscall_test_helper.cpp"],
1464}
Jiyong Park02586a22017-05-20 01:01:24 +09001465
1466cc_test {
1467 name: "ld_preload_test_helper",
1468 host_supported: false,
1469 defaults: ["bionic_testlib_defaults"],
1470 srcs: ["ld_preload_test_helper.cpp"],
1471 shared_libs: ["ld_preload_test_helper_lib1"],
1472 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
1473}
1474
1475cc_test_library {
1476 name: "ld_preload_test_helper_lib1",
1477 host_supported: false,
1478 defaults: ["bionic_testlib_defaults"],
1479 srcs: ["ld_preload_test_helper_lib1.cpp"],
1480}
1481
1482cc_test_library {
1483 name: "ld_preload_test_helper_lib2",
1484 host_supported: false,
1485 defaults: ["bionic_testlib_defaults"],
1486 srcs: ["ld_preload_test_helper_lib2.cpp"],
1487}
1488
1489cc_test {
1490 name: "ld_config_test_helper",
1491 host_supported: false,
1492 defaults: ["bionic_testlib_defaults"],
1493 srcs: ["ld_config_test_helper.cpp"],
1494 shared_libs: ["ld_config_test_helper_lib1"],
1495 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
1496}
1497
1498cc_test_library {
1499 name: "ld_config_test_helper_lib1",
1500 host_supported: false,
1501 defaults: ["bionic_testlib_defaults"],
1502 srcs: ["ld_config_test_helper_lib1.cpp"],
1503 shared_libs: ["ld_config_test_helper_lib2"],
Nan Zhangdab0fd52017-11-07 11:05:24 -08001504 relative_install_path: "bionic-loader-test-libs/ns2",
Ryan Prichard058eb8f2020-12-17 22:59:04 -08001505 // Mark the library DF_1_GLOBAL so it is added to every linker namespace.
1506 ldflags: ["-Wl,-z,global"]
Jiyong Park02586a22017-05-20 01:01:24 +09001507}
1508
1509cc_test_library {
1510 name: "ld_config_test_helper_lib2",
1511 host_supported: false,
1512 defaults: ["bionic_testlib_defaults"],
1513 srcs: ["ld_config_test_helper_lib2.cpp"],
Nan Zhangdab0fd52017-11-07 11:05:24 -08001514 relative_install_path: "bionic-loader-test-libs/ns2",
Jiyong Park02586a22017-05-20 01:01:24 +09001515}
1516
1517cc_test_library {
1518 name: "ld_config_test_helper_lib3",
1519 host_supported: false,
1520 defaults: ["bionic_testlib_defaults"],
1521 srcs: ["ld_config_test_helper_lib3.cpp"],
1522}
Ryan Prichard8f639a42018-10-01 23:10:05 -07001523
1524cc_test {
1525 name: "exec_linker_helper",
1526 host_supported: false,
1527 defaults: ["bionic_testlib_defaults"],
1528 srcs: ["exec_linker_helper.cpp"],
1529 shared_libs: ["exec_linker_helper_lib"],
1530 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
1531}
1532
1533cc_test_library {
1534 name: "exec_linker_helper_lib",
1535 host_supported: false,
1536 defaults: ["bionic_testlib_defaults"],
1537 srcs: ["exec_linker_helper_lib.cpp"],
1538}
Peter Collingbourneb39cb3c2019-03-01 13:12:49 -08001539
1540cc_test_library {
1541 name: "libsegment_gap_outer",
1542 host_supported: false,
1543 defaults: ["bionic_testlib_defaults"],
1544 srcs: ["segment_gap_outer.cpp"],
1545 ldflags: ["-Wl,-T,bionic/tests/libs/segment_gap_outer.lds"],
1546}
1547
1548cc_test_library {
1549 name: "libsegment_gap_inner",
1550 host_supported: false,
1551 defaults: ["bionic_testlib_defaults"],
1552 srcs: ["segment_gap_inner.cpp"],
1553}
Elliott Hughes6663f552020-01-24 14:36:10 -08001554
1555
1556// -----------------------------------------------------------------------------
Elliott Hughes6dd1f582020-01-28 12:18:35 -08001557// Check that we support all kinds of relocations: regular, "relocation packer",
1558// and both the old and new SHT_RELR constants.
Elliott Hughes6663f552020-01-24 14:36:10 -08001559// -----------------------------------------------------------------------------
1560
Elliott Hughes6dd1f582020-01-28 12:18:35 -08001561// This is what got standardized for SHT_RELR.
Elliott Hughes6663f552020-01-24 14:36:10 -08001562cc_test_library {
Elliott Hughes6dd1f582020-01-28 12:18:35 -08001563 name: "librelocations-RELR",
1564 ldflags: [
1565 "-Wl,--pack-dyn-relocs=relr",
1566 "-Wl,--no-use-android-relr-tags",
1567 ],
Elliott Hughes6663f552020-01-24 14:36:10 -08001568 host_supported: false,
1569 defaults: ["bionic_testlib_defaults"],
Elliott Hughes6dd1f582020-01-28 12:18:35 -08001570 srcs: ["relocations.cpp"],
Elliott Hughes6663f552020-01-24 14:36:10 -08001571}
1572
Elliott Hughes6dd1f582020-01-28 12:18:35 -08001573// This is the same encoding as SHT_RELR, but using OS-specific constants.
Elliott Hughes6663f552020-01-24 14:36:10 -08001574cc_test_library {
Elliott Hughes6dd1f582020-01-28 12:18:35 -08001575 name: "librelocations-ANDROID_RELR",
1576 ldflags: [
1577 "-Wl,--pack-dyn-relocs=relr",
1578 "-Wl,--use-android-relr-tags",
1579 ],
Elliott Hughes6663f552020-01-24 14:36:10 -08001580 host_supported: false,
1581 defaults: ["bionic_testlib_defaults"],
Elliott Hughes6dd1f582020-01-28 12:18:35 -08001582 srcs: ["relocations.cpp"],
1583}
1584
1585// This is the old relocation packer encoding (DT_ANDROID_REL/DT_ANDROID_RELA).
1586cc_test_library {
1587 name: "librelocations-ANDROID_REL",
1588 ldflags: ["-Wl,--pack-dyn-relocs=android"],
1589 host_supported: false,
1590 defaults: ["bionic_testlib_defaults"],
1591 srcs: ["relocations.cpp"],
1592}
1593
1594// This is not packed at all.
1595cc_test_library {
1596 name: "librelocations-fat",
1597 ldflags: ["-Wl,--pack-dyn-relocs=none"],
1598 host_supported: false,
1599 defaults: ["bionic_testlib_defaults"],
1600 srcs: ["relocations.cpp"],
Elliott Hughes6663f552020-01-24 14:36:10 -08001601}
Evgenii Stepanov51741fb2021-01-06 16:03:15 -08001602
1603cc_defaults {
1604 name: "bionic_targets_only",
1605 enabled: false,
1606 target: {
1607 android: {
1608 enabled: true,
1609 },
1610 linux_bionic: {
1611 enabled: true,
1612 },
1613 },
1614}
1615
1616cc_test {
1617 name: "heap_tagging_sync_helper",
1618 defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
1619 srcs: ["heap_tagging_helper.cpp"],
1620 sanitize: {
1621 memtag_heap: true,
1622 diag: {
1623 memtag_heap: true,
1624 },
Florian Mayerbdc192c2023-06-22 16:39:47 -07001625 hwaddress: false,
Evgenii Stepanov51741fb2021-01-06 16:03:15 -08001626 },
1627}
1628
1629cc_test {
1630 name: "heap_tagging_async_helper",
1631 defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
1632 srcs: ["heap_tagging_helper.cpp"],
1633 sanitize: {
1634 memtag_heap: true,
1635 diag: {
1636 memtag_heap: false,
1637 },
Florian Mayerbdc192c2023-06-22 16:39:47 -07001638 hwaddress: false,
Evgenii Stepanov51741fb2021-01-06 16:03:15 -08001639 },
1640}
1641
1642cc_test {
1643 name: "heap_tagging_disabled_helper",
1644 defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
1645 srcs: ["heap_tagging_helper.cpp"],
1646 sanitize: {
1647 memtag_heap: false,
Florian Mayerbdc192c2023-06-22 16:39:47 -07001648 hwaddress: false,
Evgenii Stepanov51741fb2021-01-06 16:03:15 -08001649 },
1650}
1651
1652cc_test {
1653 name: "heap_tagging_static_sync_helper",
1654 defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
1655 srcs: ["heap_tagging_helper.cpp"],
1656 static_executable: true,
1657 sanitize: {
1658 memtag_heap: true,
1659 diag: {
1660 memtag_heap: true,
1661 },
Florian Mayerbdc192c2023-06-22 16:39:47 -07001662 hwaddress: false,
Evgenii Stepanov51741fb2021-01-06 16:03:15 -08001663 },
1664}
1665
1666cc_test {
1667 name: "heap_tagging_static_async_helper",
1668 defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
1669 srcs: ["heap_tagging_helper.cpp"],
1670 static_executable: true,
1671 sanitize: {
1672 memtag_heap: true,
1673 diag: {
1674 memtag_heap: false,
1675 },
Florian Mayerbdc192c2023-06-22 16:39:47 -07001676 hwaddress: false,
Evgenii Stepanov51741fb2021-01-06 16:03:15 -08001677 },
1678}
1679
1680cc_test {
1681 name: "heap_tagging_static_disabled_helper",
1682 defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
1683 srcs: ["heap_tagging_helper.cpp"],
1684 static_executable: true,
1685 sanitize: {
1686 memtag_heap: false,
Florian Mayerbdc192c2023-06-22 16:39:47 -07001687 hwaddress: false,
Evgenii Stepanov51741fb2021-01-06 16:03:15 -08001688 },
1689}
Colin Crossbadcb382021-09-24 17:49:58 -07001690
Florian Mayerc82d7fc2022-08-31 20:57:03 +00001691cc_test {
1692 name: "stack_tagging_helper",
1693 defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
1694 srcs: ["stack_tagging_helper.cpp"],
1695 sanitize: {
1696 memtag_heap: true,
1697 memtag_stack: true,
1698 diag: {
1699 memtag_heap: true,
1700 },
Florian Mayerbdc192c2023-06-22 16:39:47 -07001701 hwaddress: false,
Florian Mayerc82d7fc2022-08-31 20:57:03 +00001702 },
Florian Mayercc61ad82022-08-31 11:43:30 -07001703 header_libs: ["bionic_libc_platform_headers"],
Florian Mayerf5f41122022-08-05 15:21:07 -07001704 cflags: ["-fexceptions"],
Florian Mayerc82d7fc2022-08-31 20:57:03 +00001705}
1706
1707cc_test {
1708 name: "stack_tagging_static_helper",
1709 defaults: ["bionic_testlib_defaults", "bionic_targets_only"],
1710 srcs: ["stack_tagging_helper.cpp"],
1711 static_executable: true,
1712 sanitize: {
1713 memtag_heap: true,
1714 memtag_stack: true,
1715 diag: {
1716 memtag_heap: true,
1717 },
Florian Mayerbdc192c2023-06-22 16:39:47 -07001718 hwaddress: false,
Florian Mayerc82d7fc2022-08-31 20:57:03 +00001719 },
Florian Mayercc61ad82022-08-31 11:43:30 -07001720 header_libs: ["bionic_libc_platform_headers"],
Florian Mayerf5f41122022-08-05 15:21:07 -07001721 cflags: ["-fexceptions"],
Florian Mayerc82d7fc2022-08-31 20:57:03 +00001722}
1723
Colin Crossbadcb382021-09-24 17:49:58 -07001724cc_genrule {
1725 name: "libdlext_test_zip_zipaligned",
1726 out: ["bionic-loader-test-libs/libdlext_test_zip/libdlext_test_zip_zipaligned.zip"],
1727 tools: [
1728 "soong_zip",
1729 "bionic_tests_zipalign",
1730 ],
1731 srcs: [
1732 ":libdlext_test_zip",
1733 ":libatest_simple_zip",
1734 ":exec_linker_helper",
1735 ":exec_linker_helper_lib",
1736 ],
1737 cmd: "mkdir -p $(genDir)/zipdir/libdir &&" +
1738 " cp $(in) $(genDir)/zipdir/libdir/ &&" +
1739 " touch $(genDir)/zipdir/empty_file.txt &&" +
1740 " $(location soong_zip) -o $(out).unaligned -L 0 -C $(genDir)/zipdir -D $(genDir)/zipdir &&" +
1741 " $(location bionic_tests_zipalign) 4096 $(out).unaligned $(out)",
1742
1743 bazel_module: {
1744 // Depends on soong_zip, which is not available yet.
1745 bp2build_available: false
1746 },
1747}
1748
1749cc_genrule {
1750 name: "libdlext_test_runpath_zip_zipaligned",
1751 out: ["bionic-loader-test-libs/libdlext_test_runpath_zip/libdlext_test_runpath_zip_zipaligned.zip"],
1752 tools: [
1753 "soong_zip",
1754 "bionic_tests_zipalign",
1755 ],
1756 srcs: [
1757 ":libtest_dt_runpath_d_zip",
1758 ":libtest_dt_runpath_a",
1759 ":libtest_dt_runpath_b",
1760 ":libtest_dt_runpath_c",
1761 ":libtest_dt_runpath_x",
1762 ":libtest_dt_runpath_y",
1763 ],
1764 cmd: "mkdir -p $(genDir)/zipdir/libdir &&" +
1765 " if [[ \"$$CC_MULTILIB\" = lib32 ]]; then" +
1766 " PRIVATE_LIB_OR_LIB64=lib;" +
1767 " else" +
1768 " PRIVATE_LIB_OR_LIB64=lib64;" +
1769 " fi &&" +
1770 " if [[ -n \"$$CC_NATIVE_BRIDGE\" ]]; then" +
1771 " PRIVATE_LIB_OR_LIB64=$$PRIVATE_LIB_OR_LIB64/$$CC_NATIVE_BRIDGE;" +
1772 " fi &&" +
1773 " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_a &&" +
1774 " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
1775 " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_y/$$PRIVATE_LIB_OR_LIB64 &&" +
1776 " cp $(location :libtest_dt_runpath_d_zip) $(genDir)/zipdir/libdir &&" +
1777 " cp $(location :libtest_dt_runpath_a) $(genDir)/zipdir/libdir/dt_runpath_a &&" +
1778 " cp $(location :libtest_dt_runpath_b) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
1779 " cp $(location :libtest_dt_runpath_c) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
1780 " cp $(location :libtest_dt_runpath_x) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
1781 " cp $(location :libtest_dt_runpath_y) $(genDir)/zipdir/libdir/dt_runpath_y/$$PRIVATE_LIB_OR_LIB64 &&" +
1782 " touch $(genDir)/zipdir/empty_file.txt &&" +
1783 " $(location soong_zip) -o $(out).unaligned -L 0 -C $(genDir)/zipdir -D $(genDir)/zipdir &&" +
1784 " $(location bionic_tests_zipalign) 4096 $(out).unaligned $(out)",
1785
1786 bazel_module: {
1787 // Depends on soong_zip, which is not available yet.
1788 bp2build_available: false
1789 },
1790}