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