blob: 3afda6709c659d16e01849365465351e8ec6d917 [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
17cc_defaults {
18 name: "bionic_testlib_defaults",
19 host_supported: true,
Chih-Hung Hsieh84f0dcd2017-10-02 11:47:31 -070020 cflags: [
21 "-Wall",
22 "-Werror",
23 ],
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070024 ldflags: [
Dimitry Ivanovd11d1e42016-10-05 02:51:17 -070025 "-Wl,--rpath,${ORIGIN}",
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070026 "-Wl,--enable-new-dtags",
27 ],
28 relative_install_path: "bionic-loader-test-libs",
29 gtest: false,
Colin Cross2722ebb2016-07-11 16:20:06 -070030 sanitize: {
Evgenii Stepanov0a3637d2016-07-06 13:20:59 -070031 address: false,
32 coverage: false,
Colin Cross2722ebb2016-07-11 16:20:06 -070033 },
Yabin Cui1f553ea2017-01-13 12:31:59 -080034 stl: "libc++_static",
Colin Cross2722ebb2016-07-11 16:20:06 -070035 target: {
36 darwin: {
37 enabled: false,
38 },
39 },
40}
41
42// -----------------------------------------------------------------------------
43// Library to test gnu-styled hash
44// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070045cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -070046 name: "libgnu-hash-table-library",
47 defaults: ["bionic_testlib_defaults"],
48 srcs: ["dlext_test_library.cpp"],
49 ldflags: ["-Wl,--hash-style=gnu"],
50 arch: {
51 mips: {
52 enabled: false,
53 },
54 mips64: {
55 enabled: false,
56 },
57 },
58}
59
60// -----------------------------------------------------------------------------
61// Library to test sysv-styled hash
62// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070063cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -070064 name: "libsysv-hash-table-library",
65 defaults: ["bionic_testlib_defaults"],
66 srcs: ["dlext_test_library.cpp"],
67 ldflags: ["-Wl,--hash-style=sysv"],
68}
69
70// -----------------------------------------------------------------------------
71// Library used by dlext tests - with GNU RELRO program header
72// -----------------------------------------------------------------------------
73// In Android.mk to support creating symlinks
74
75// -----------------------------------------------------------------------------
76// Library used by dlext tests - without GNU RELRO program header
77// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070078cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -070079 name: "libdlext_test_norelro",
Dimitry Ivanova36e59b2016-09-01 11:37:39 -070080 defaults: ["bionic_testlib_defaults"],
Colin Cross2722ebb2016-07-11 16:20:06 -070081 srcs: ["dlext_test_library.cpp"],
82 ldflags: ["-Wl,-z,norelro"],
Elliott Hughesd50a1de2018-02-05 17:30:57 -080083 shared_libs: ["libtest_simple"],
Colin Cross2722ebb2016-07-11 16:20:06 -070084}
85
86// -----------------------------------------------------------------------------
87// Library used by dlext tests - different name non-default location
88// -----------------------------------------------------------------------------
89// In Android.mk to support installing to /data
90
91// -----------------------------------------------------------------------------
92// Libraries used by dlext tests for open from a zip-file
93// -----------------------------------------------------------------------------
94// In Android.mk to support installing to /data
95
96// ----------------------------------------------------------------------------
97// Library with soname which does not match filename
98// ----------------------------------------------------------------------------
99// In Android.mk to support zipped and aligned tests
100
101// -----------------------------------------------------------------------------
102// Library used by dlext tests - zipped and aligned
103// -----------------------------------------------------------------------------
104// In Android.mk to support zipped and aligned tests
105
106// -----------------------------------------------------------------------------
107// Library used by dlfcn tests
108// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700109cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700110 name: "libtest_simple",
111 defaults: ["bionic_testlib_defaults"],
112 srcs: ["dlopen_testlib_simple.cpp"],
113}
114
115// -----------------------------------------------------------------------------
dimitry965d06d2017-11-28 16:03:07 +0100116// Library used by dlext direct unload on the namespace boundary tests
117// -----------------------------------------------------------------------------
118cc_test_library {
119 name: "libtest_missing_symbol",
120 defaults: ["bionic_testlib_defaults"],
121 srcs: ["dlopen_testlib_missing_symbol.cpp"],
122 allow_undefined_symbols: true,
123 relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
124}
125
dimitry965d06d2017-11-28 16:03:07 +0100126// -----------------------------------------------------------------------------
127// Library used by dlext indirect unload on the namespace boundary tests
128//
129// These libraries produce following dependency graph:
130// libtest_missing_symbol_root (private ns)
131// +-> libbnstest_public (public ns)
132// +-> libtest_missing_symbol_child_public (public ns)
133// +-> libnstest_public (public ns)
134// +-> libtest_missing_symbol_child_private (private_ns)
135// +-> libnstest_public (public_ns)
136//
137// All libraries except libtest_missing_symbol are located in
138// private_namespace_libs/
139// -----------------------------------------------------------------------------
140cc_test_library {
141 name: "libtest_missing_symbol_child_public",
142 defaults: ["bionic_testlib_defaults"],
143 srcs: ["empty.cpp"],
144 relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
145 shared_libs: ["libnstest_public"],
146}
147
148cc_test_library {
149 name: "libtest_missing_symbol_child_private",
150 defaults: ["bionic_testlib_defaults"],
151 srcs: ["empty.cpp"],
152 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
153 shared_libs: ["libnstest_public"],
154}
155
156cc_test_library {
157 name: "libtest_missing_symbol_root",
158 defaults: ["bionic_testlib_defaults"],
159 srcs: ["dlopen_testlib_missing_symbol.cpp"],
160 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
161 allow_undefined_symbols: true,
162 shared_libs: [
163 "libnstest_public",
164 "libtest_missing_symbol_child_public",
165 "libtest_missing_symbol_child_private",
166 ],
167}
168
169// -----------------------------------------------------------------------------
170// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700171// Library used by dlfcn nodelete tests
172// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700173cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700174 name: "libtest_nodelete_1",
175 defaults: ["bionic_testlib_defaults"],
176 srcs: ["dlopen_nodelete_1.cpp"],
177}
178
179// -----------------------------------------------------------------------------
180// Library used by dlfcn nodelete tests
181// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700182cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700183 name: "libtest_nodelete_2",
184 defaults: ["bionic_testlib_defaults"],
185 srcs: ["dlopen_nodelete_2.cpp"],
186}
187
188// -----------------------------------------------------------------------------
189// Library used by dlfcn nodelete tests
190// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700191cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700192 name: "libtest_nodelete_dt_flags_1",
193 defaults: ["bionic_testlib_defaults"],
194 srcs: ["dlopen_nodelete_dt_flags_1.cpp"],
195 ldflags: ["-Wl,-z,nodelete"],
196}
197
198// -----------------------------------------------------------------------------
199// Build test helper libraries for linker namespaces
dimitry965d06d2017-11-28 16:03:07 +0100200//
201// This set of libraries is used to verify linker namespaces.
202//
203// Test cases
204// 1. Check that private libraries loaded in different namespaces are
205// different. Check that dlsym does not confuse them.
206// 2. Check that public libraries loaded in different namespaces are shared
207// between them.
208// 3. Check that namespace sticks on dlopen
209// 4. Check that having access to shared library (libnstest_public.so)
210// does not expose symbols from dependent library (libnstest_public_internal.so)
211//
212// Dependency tree (visibility)
213// libnstest_root.so (this should be local to the namespace)
214// +-> libnstest_public.so
215// +-> libnstest_public_internal.so
216// +-> libnstest_private.so
217//
218// libnstest_dlopened.so (library in private namespace dlopened from libnstest_root.so)
Colin Cross2722ebb2016-07-11 16:20:06 -0700219// -----------------------------------------------------------------------------
dimitry965d06d2017-11-28 16:03:07 +0100220cc_test_library {
221 name: "libnstest_root",
222 defaults: ["bionic_testlib_defaults"],
223 srcs: ["namespaces_root.cpp"],
224 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
225 shared_libs: [
226 "libnstest_public",
227 "libnstest_private",
228 ],
229}
230
231cc_test_library {
232 name: "libnstest_public_internal",
233 defaults: ["bionic_testlib_defaults"],
234 srcs: ["namespaces_public_internal.cpp"],
235 relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
236}
237
238cc_test_library {
239 name: "libnstest_public",
240 defaults: ["bionic_testlib_defaults"],
241 srcs: ["namespaces_public.cpp"],
242 relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
243 shared_libs: ["libnstest_public_internal"],
244}
245
246cc_test_library {
247 name: "libnstest_private",
248 defaults: ["bionic_testlib_defaults"],
249 srcs: ["namespaces_private.cpp"],
250 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
251}
252
253cc_test_library {
254 name: "libnstest_dlopened",
255 defaults: ["bionic_testlib_defaults"],
256 srcs: ["namespaces_dlopened.cpp"],
257 relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
258}
Colin Cross2722ebb2016-07-11 16:20:06 -0700259
260// -----------------------------------------------------------------------------
Logan Chien9ee45912018-01-18 12:05:09 +0800261// Build test helper libraries for linker namespaces for allow all shared libs
262//
263// This set of libraries is used to verify linker namespaces for allow all
264// shared libs.
265//
266// Test cases
267// 1. Check that namespace a exposes libnstest_ns_a_public1 to
268// namespace b while keeping libnstest_ns_a_public1_internal as an
269// internal lib.
270// 2. Check that namespace b exposes all libraries to namespace a.
271//
272// Dependency tree (visibility)
273// libnstest_ns_b_public2.so (ns:b)
274// +-> libnstest_ns_a_public1.so (ns:a)
275// +-> libnstest_ns_a_public2_internal.so (ns:a)
276// +-> libnstest_ns_b_public3.so (ns:b)
277//
278// -----------------------------------------------------------------------------
279cc_test_library {
280 name: "libnstest_ns_a_public1",
281 defaults: ["bionic_testlib_defaults"],
282 srcs: ["libnstest_ns_a_public1.cpp"],
283 relative_install_path: "bionic-loader-test-libs/ns_a",
284 shared_libs: [
285 "libnstest_ns_a_public1_internal",
286 "libnstest_ns_b_public3",
287 ],
288}
289
290cc_test_library {
291 name: "libnstest_ns_a_public1_internal",
292 defaults: ["bionic_testlib_defaults"],
293 srcs: ["libnstest_ns_a_public1_internal.cpp"],
294 relative_install_path: "bionic-loader-test-libs/ns_a",
295}
296
297cc_test_library {
298 name: "libnstest_ns_b_public2",
299 defaults: ["bionic_testlib_defaults"],
300 srcs: ["libnstest_ns_b_public2.cpp"],
301 relative_install_path: "bionic-loader-test-libs/ns_b",
302 shared_libs: ["libnstest_ns_a_public1"],
303}
304
305cc_test_library {
306 name: "libnstest_ns_b_public3",
307 defaults: ["bionic_testlib_defaults"],
308 srcs: ["libnstest_ns_b_public3.cpp"],
309 relative_install_path: "bionic-loader-test-libs/ns_b",
310}
311
312// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700313// Build DT_RUNPATH test helper libraries
314// -----------------------------------------------------------------------------
315// include $(LOCAL_PATH)/Android.build.dt_runpath.mk
316
317// -----------------------------------------------------------------------------
318// Build library with two parents
319// -----------------------------------------------------------------------------
320// include $(LOCAL_PATH)/Android.build.dlopen_2_parents_reloc.mk
321
322// -----------------------------------------------------------------------------
323// Build libtest_check_order_dlsym.so with its dependencies.
324// -----------------------------------------------------------------------------
325// include $(LOCAL_PATH)/Android.build.dlopen_check_order_dlsym.mk
326
327// -----------------------------------------------------------------------------
328// Build libtest_check_order_siblings.so with its dependencies.
329// -----------------------------------------------------------------------------
330// include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_siblings.mk
331
332// -----------------------------------------------------------------------------
333// Build libtest_check_order_root.so with its dependencies.
334// -----------------------------------------------------------------------------
335// include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_main_executable.mk
336
337// -----------------------------------------------------------------------------
338// Build libtest_versioned_lib.so with its dependencies.
339// -----------------------------------------------------------------------------
340// include $(LOCAL_PATH)/Android.build.versioned_lib.mk
341
342// -----------------------------------------------------------------------------
343// Build libraries needed by pthread_atfork tests
344// -----------------------------------------------------------------------------
345// include $(LOCAL_PATH)/Android.build.pthread_atfork.mk
346
347// -----------------------------------------------------------------------------
348// Library with dependency loop used by dlfcn tests
349//
350// libtest_with_dependency_loop -> a -> b -> c -> a
351// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700352cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700353 name: "libtest_with_dependency_loop",
354 defaults: ["bionic_testlib_defaults"],
355 srcs: ["dlopen_testlib_loopy_root.cpp"],
356 shared_libs: ["libtest_with_dependency_loop_a"],
357}
358
359// -----------------------------------------------------------------------------
360// libtest_with_dependency_loop_a.so
361// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700362cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700363 name: "libtest_with_dependency_loop_a",
364 defaults: ["bionic_testlib_defaults"],
365 srcs: ["dlopen_testlib_loopy_a.cpp"],
366 shared_libs: ["libtest_with_dependency_loop_b_tmp"],
367}
368
369// -----------------------------------------------------------------------------
370// libtest_with_dependency_loop_b.so
371//
372// this is temporary placeholder - will be removed
373// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700374cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700375 name: "libtest_with_dependency_loop_b_tmp",
376 defaults: ["bionic_testlib_defaults"],
377 srcs: ["dlopen_testlib_loopy_invalid.cpp"],
378 ldflags: ["-Wl,-soname=libtest_with_dependency_loop_b.so"],
379}
380
381// -----------------------------------------------------------------------------
382// libtest_with_dependency_loop_b.so
383// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700384cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700385 name: "libtest_with_dependency_loop_b",
386 defaults: ["bionic_testlib_defaults"],
387 srcs: ["dlopen_testlib_loopy_b.cpp"],
388 shared_libs: ["libtest_with_dependency_loop_c"],
389}
390
391// -----------------------------------------------------------------------------
392// libtest_with_dependency_loop_c.so
393// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700394cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700395 name: "libtest_with_dependency_loop_c",
396 defaults: ["bionic_testlib_defaults"],
397 srcs: ["dlopen_testlib_loopy_c.cpp"],
398 shared_libs: ["libtest_with_dependency_loop_a"],
399}
400
401// -----------------------------------------------------------------------------
402// libtest_relo_check_dt_needed_order.so
403// |
404// +-> libtest_relo_check_dt_needed_order_1.so
405// |
406// +-> libtest_relo_check_dt_needed_order_2.so
407// -----------------------------------------------------------------------------
408
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700409cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700410 name: "libtest_relo_check_dt_needed_order",
411 defaults: ["bionic_testlib_defaults"],
412 srcs: ["dlopen_testlib_relo_check_dt_needed_order.cpp"],
413 shared_libs: [
414 "libtest_relo_check_dt_needed_order_1",
415 "libtest_relo_check_dt_needed_order_2",
416 ],
417}
418
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700419cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700420 name: "libtest_relo_check_dt_needed_order_1",
421 defaults: ["bionic_testlib_defaults"],
422 srcs: ["dlopen_testlib_relo_check_dt_needed_order_1.cpp"],
423}
424
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700425cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700426 name: "libtest_relo_check_dt_needed_order_2",
427 defaults: ["bionic_testlib_defaults"],
428 srcs: ["dlopen_testlib_relo_check_dt_needed_order_2.cpp"],
429}
430
431// -----------------------------------------------------------------------------
432// Library with dependency used by dlfcn tests
433// -----------------------------------------------------------------------------
434// In Android.mk to support dependency on libdlext_test
435
436// -----------------------------------------------------------------------------
437// Library used by ifunc tests
438// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700439cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700440 name: "libtest_ifunc",
441 defaults: ["bionic_testlib_defaults"],
Dimitry Ivanov21975b22017-05-02 16:31:56 -0700442 srcs: ["dlopen_testlib_ifunc.cpp"],
Colin Cross2722ebb2016-07-11 16:20:06 -0700443
Colin Cross2722ebb2016-07-11 16:20:06 -0700444 arch: {
445 mips: {
446 enabled: false,
447 },
448 mips64: {
449 enabled: false,
450 },
451 },
Dimitry Ivanov21975b22017-05-02 16:31:56 -0700452}
453
454cc_test_library {
455 name: "libtest_ifunc_variable",
456 defaults: ["bionic_testlib_defaults"],
457 srcs: ["dlopen_testlib_ifunc_variable.cpp"],
Elliott Hughesd50a1de2018-02-05 17:30:57 -0800458 shared_libs: ["libtest_ifunc_variable_impl"],
Dimitry Ivanov21975b22017-05-02 16:31:56 -0700459
460 arch: {
461 mips: {
462 enabled: false,
463 },
464 mips64: {
465 enabled: false,
466 },
467 },
Dimitry Ivanov21975b22017-05-02 16:31:56 -0700468}
469
470cc_test_library {
471 name: "libtest_ifunc_variable_impl",
472 defaults: ["bionic_testlib_defaults"],
473 srcs: ["dlopen_testlib_ifunc_variable_impl.cpp"],
474
475 arch: {
476 mips: {
477 enabled: false,
478 },
479 mips64: {
480 enabled: false,
481 },
482 },
Colin Cross2722ebb2016-07-11 16:20:06 -0700483}
484
485// -----------------------------------------------------------------------------
486// Library used by atexit tests
487// -----------------------------------------------------------------------------
488
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700489cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700490 name: "libtest_atexit",
491 defaults: ["bionic_testlib_defaults"],
492 srcs: ["atexit_testlib.cpp"],
493}
494
495// -----------------------------------------------------------------------------
496// This library is used by dl_load test to check symbol preempting
497// by main executable
498// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700499cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700500 name: "libdl_preempt_test_1",
501 defaults: ["bionic_testlib_defaults"],
502 srcs: ["dl_preempt_library_1.cpp"],
503}
504
505// -----------------------------------------------------------------------------
506// This library is used by dl_load test to check symbol preempting
507// by libdl_preempt_test_1.so
508// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700509cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700510 name: "libdl_preempt_test_2",
511 defaults: ["bionic_testlib_defaults"],
512 srcs: ["dl_preempt_library_2.cpp"],
513}
514
515// -----------------------------------------------------------------------------
516// Library with DF_1_GLOBAL
517// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700518cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700519 name: "libdl_test_df_1_global",
520 defaults: ["bionic_testlib_defaults"],
521 srcs: ["dl_df_1_global.cpp"],
522 ldflags: ["-Wl,-z,global"],
523
524 target: {
525 host: {
526 // TODO (dimitry): host ld.gold does not yet support -z global
527 // remove this line once it is updated.
528 ldflags: ["-fuse-ld=bfd"],
529 },
530 },
531}
532
533// -----------------------------------------------------------------------------
534// Library using symbol from libdl_test_df_1_global
535// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700536cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700537 name: "libtest_dlsym_df_1_global",
538 defaults: ["bionic_testlib_defaults"],
539 srcs: ["dl_df_1_use_global.cpp"],
540}
541
542// -----------------------------------------------------------------------------
Jiyong Park01162f22017-10-16 15:31:09 +0900543// Library with DF_1_GLOBAL which will be dlopened
544// (note: libdl_test_df_1_global above will be included in DT_NEEDED)
545// -----------------------------------------------------------------------------
546cc_test_library {
547 name: "libtest_dlopen_df_1_global",
548 defaults: ["bionic_testlib_defaults"],
549 srcs: ["dl_df_1_global_dummy.cpp"],
550 ldflags: ["-Wl,-z,global"],
551
552 target: {
553 host: {
554 // TODO (dimitry): host ld.gold does not yet support -z global
555 // remove this line once it is updated.
556 ldflags: ["-fuse-ld=bfd"],
557 },
558 },
559}
560
Jiyong Park01162f22017-10-16 15:31:09 +0900561// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700562// Library with weak function
563// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700564cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700565 name: "libtest_dlsym_weak_func",
566 defaults: ["bionic_testlib_defaults"],
567 srcs: ["dlsym_weak_function.cpp"],
568}
569
570// -----------------------------------------------------------------------------
571// Library to check RTLD_LOCAL with dlsym in 'this'
572// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700573cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700574 name: "libtest_dlsym_from_this",
575 defaults: ["bionic_testlib_defaults"],
576 srcs: ["dlsym_from_this_symbol.cpp"],
577 shared_libs: ["libtest_dlsym_from_this_child"],
Colin Cross2722ebb2016-07-11 16:20:06 -0700578}
579
580// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700581cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700582 name: "libtest_dlsym_from_this_child",
583 defaults: ["bionic_testlib_defaults"],
584 srcs: ["dlsym_from_this_functions.cpp"],
585 shared_libs: ["libtest_dlsym_from_this_grandchild"],
586}
587
588// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700589cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700590 name: "libtest_dlsym_from_this_grandchild",
591 defaults: ["bionic_testlib_defaults"],
592 srcs: ["dlsym_from_this_symbol2.cpp"],
593}
594
595// -----------------------------------------------------------------------------
596// Empty library
597// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700598cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700599 name: "libtest_empty",
600 defaults: ["bionic_testlib_defaults"],
601 srcs: ["empty.cpp"],
602}
603
604// -----------------------------------------------------------------------------
dimitry8db36a52017-10-23 15:10:10 +0200605// Library for inaccessible shared library test
606// -----------------------------------------------------------------------------
607cc_test_library {
608 name: "libtestshared",
609 defaults: ["bionic_testlib_defaults"],
610 srcs: ["empty.cpp"],
Nan Zhangdab0fd52017-11-07 11:05:24 -0800611 relative_install_path: "bionic-loader-test-libs/inaccessible_libs",
dimitry8db36a52017-10-23 15:10:10 +0200612}
613
614// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700615// Library with weak undefined function
616// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700617cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700618 name: "libtest_dlopen_weak_undefined_func",
619 defaults: ["bionic_testlib_defaults"],
620 srcs: ["dlopen_weak_undefined.cpp"],
621}
622
623// -----------------------------------------------------------------------------
Dimitry Ivanovd0b5c3a2016-11-25 12:23:11 -0800624// Check that RTLD_NEXT of a libc symbol works in dlopened library
625// -----------------------------------------------------------------------------
626cc_test_library {
627 name: "libtest_check_rtld_next_from_library",
628 defaults: ["bionic_testlib_defaults"],
629 srcs: ["check_rtld_next_from_library.cpp"],
Dimitry Ivanovd0b5c3a2016-11-25 12:23:11 -0800630}
631
632// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700633// Library with constructor that calls dlopen() b/7941716
634// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700635cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700636 name: "libtest_dlopen_from_ctor",
637 defaults: ["bionic_testlib_defaults"],
638 srcs: ["dlopen_testlib_dlopen_from_ctor.cpp"],
Colin Cross2722ebb2016-07-11 16:20:06 -0700639}
640
641// -----------------------------------------------------------------------------
Dimitry Ivanovec90e242017-02-10 11:04:20 -0800642// Libraries used to check init/fini call order
Dimitry Ivanovea8f3962017-02-09 13:31:57 -0800643// -----------------------------------------------------------------------------
644cc_test_library {
645 name: "libtest_init_fini_order_root",
646 defaults: ["bionic_testlib_defaults"],
647 srcs: ["dlopen_check_init_fini_root.cpp"],
Dimitry Ivanovec90e242017-02-10 11:04:20 -0800648 shared_libs: [
649 "libtest_init_fini_order_child",
650 "libtest_init_fini_order_grand_child",
651 ],
652}
653
654cc_test_library {
655 name: "libtest_init_fini_order_root2",
656 defaults: ["bionic_testlib_defaults"],
657 srcs: ["dlopen_check_init_fini_root.cpp"],
658 shared_libs: [
659 "libtest_init_fini_order_grand_child",
660 "libtest_init_fini_order_child",
661 ],
Dimitry Ivanovea8f3962017-02-09 13:31:57 -0800662}
663
664cc_test_library {
665 name: "libtest_init_fini_order_child",
666 defaults: ["bionic_testlib_defaults"],
667 srcs: ["dlopen_check_init_fini_child.cpp"],
668 shared_libs: ["libtest_init_fini_order_grand_child"],
669}
670
671cc_test_library {
672 name: "libtest_init_fini_order_grand_child",
673 defaults: ["bionic_testlib_defaults"],
674 srcs: ["dlopen_check_init_fini_grand_child.cpp"],
675}
676
677// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700678// Library that depends on the library with constructor that calls dlopen() b/7941716
679// -----------------------------------------------------------------------------
Dimitry Ivanova36e59b2016-09-01 11:37:39 -0700680cc_test_library {
Colin Cross2722ebb2016-07-11 16:20:06 -0700681 name: "libtest_dlopen_from_ctor_main",
682 defaults: ["bionic_testlib_defaults"],
683 srcs: ["empty.cpp"],
684 shared_libs: ["libtest_dlopen_from_ctor"],
685}
686
687// -----------------------------------------------------------------------------
dimitry06016f22018-01-05 11:39:28 +0100688// Library with non-trivial thread_local variable to test dlclose()
689// -----------------------------------------------------------------------------
690cc_test_library {
691 name: "libtest_thread_local_dtor",
692 defaults: ["bionic_testlib_defaults"],
693 srcs: ["thread_local_dtor.cpp"],
694}
695
dimitry06016f22018-01-05 11:39:28 +0100696// -----------------------------------------------------------------------------
Colin Cross2722ebb2016-07-11 16:20:06 -0700697// Tool to use to align the shared libraries in a zip file.
698// -----------------------------------------------------------------------------
699cc_binary_host {
700 name: "bionic_tests_zipalign",
701 srcs: ["bionic_tests_zipalign.cpp"],
702 cflags: [
703 "-Wall",
704 "-Werror",
705 ],
706
707 static_libs: [
708 "libziparchive",
709 "liblog",
710 "libbase",
711 "libz",
712 "libutils",
713 ],
Colin Cross2722ebb2016-07-11 16:20:06 -0700714}
Evgenii Stepanov0a3637d2016-07-06 13:20:59 -0700715
716cc_test_library {
717 name: "libcfi-test",
718 defaults: ["bionic_testlib_defaults"],
719 srcs: ["cfi_test_lib.cpp"],
720 sanitize: {
721 cfi: false,
722 },
723}
724
725cc_test_library {
726 name: "libcfi-test-bad",
727 defaults: ["bionic_testlib_defaults"],
728 srcs: ["cfi_test_bad_lib.cpp"],
729 sanitize: {
730 cfi: false,
731 },
732}
Evgenii Stepanov68ecec12017-01-31 13:19:30 -0800733
734cc_test {
735 name: "cfi_test_helper",
736 host_supported: false,
737 defaults: ["bionic_testlib_defaults"],
738 srcs: ["cfi_test_helper.cpp"],
739 ldflags: ["-rdynamic"],
740}
741
742cc_test {
743 name: "cfi_test_helper2",
744 host_supported: false,
745 defaults: ["bionic_testlib_defaults"],
746 srcs: ["cfi_test_helper2.cpp"],
747 shared_libs: ["libcfi-test"],
748 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
749}
Elliott Hugheseb04ed52017-03-29 13:48:02 -0700750
751cc_test {
752 name: "preinit_getauxval_test_helper",
753 host_supported: false,
754 defaults: ["bionic_testlib_defaults"],
755 srcs: ["preinit_getauxval_test_helper.cpp"],
756}
757
758cc_test {
759 name: "preinit_syscall_test_helper",
760 host_supported: false,
761 defaults: ["bionic_testlib_defaults"],
762 srcs: ["preinit_syscall_test_helper.cpp"],
763}
Jiyong Park02586a22017-05-20 01:01:24 +0900764
765cc_test {
766 name: "ld_preload_test_helper",
767 host_supported: false,
768 defaults: ["bionic_testlib_defaults"],
769 srcs: ["ld_preload_test_helper.cpp"],
770 shared_libs: ["ld_preload_test_helper_lib1"],
771 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
772}
773
774cc_test_library {
775 name: "ld_preload_test_helper_lib1",
776 host_supported: false,
777 defaults: ["bionic_testlib_defaults"],
778 srcs: ["ld_preload_test_helper_lib1.cpp"],
779}
780
781cc_test_library {
782 name: "ld_preload_test_helper_lib2",
783 host_supported: false,
784 defaults: ["bionic_testlib_defaults"],
785 srcs: ["ld_preload_test_helper_lib2.cpp"],
786}
787
788cc_test {
789 name: "ld_config_test_helper",
790 host_supported: false,
791 defaults: ["bionic_testlib_defaults"],
792 srcs: ["ld_config_test_helper.cpp"],
793 shared_libs: ["ld_config_test_helper_lib1"],
794 ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
795}
796
797cc_test_library {
798 name: "ld_config_test_helper_lib1",
799 host_supported: false,
800 defaults: ["bionic_testlib_defaults"],
801 srcs: ["ld_config_test_helper_lib1.cpp"],
802 shared_libs: ["ld_config_test_helper_lib2"],
Nan Zhangdab0fd52017-11-07 11:05:24 -0800803 relative_install_path: "bionic-loader-test-libs/ns2",
Jiyong Park02586a22017-05-20 01:01:24 +0900804}
805
806cc_test_library {
807 name: "ld_config_test_helper_lib2",
808 host_supported: false,
809 defaults: ["bionic_testlib_defaults"],
810 srcs: ["ld_config_test_helper_lib2.cpp"],
Nan Zhangdab0fd52017-11-07 11:05:24 -0800811 relative_install_path: "bionic-loader-test-libs/ns2",
Jiyong Park02586a22017-05-20 01:01:24 +0900812}
813
814cc_test_library {
815 name: "ld_config_test_helper_lib3",
816 host_supported: false,
817 defaults: ["bionic_testlib_defaults"],
818 srcs: ["ld_config_test_helper_lib3.cpp"],
819}