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