Home | History | Annotate | Download | only in libs
      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 
     17 cc_defaults {
     18     name: "bionic_testlib_defaults",
     19     host_supported: true,
     20     cflags: [
     21         "-Wall",
     22         "-Werror",
     23     ],
     24     ldflags: [
     25         "-Wl,--rpath,${ORIGIN}",
     26         "-Wl,--enable-new-dtags",
     27     ],
     28     relative_install_path: "bionic-loader-test-libs",
     29     gtest: false,
     30     sanitize: {
     31         address: false,
     32         coverage: false,
     33     },
     34     stl: "libc++_static",
     35     target: {
     36         darwin: {
     37             enabled: false,
     38         },
     39     },
     40 }
     41 
     42 // -----------------------------------------------------------------------------
     43 // Libraries and helper binaries for ELF TLS
     44 // -----------------------------------------------------------------------------
     45 cc_test_library {
     46     name: "libtest_elftls_shared_var",
     47     defaults: ["bionic_testlib_defaults"],
     48     srcs: ["elftls_shared_var.cpp"],
     49     cflags: ["-fno-emulated-tls"],
     50 }
     51 
     52 cc_test_library {
     53     name: "libtest_elftls_shared_var_ie",
     54     defaults: ["bionic_testlib_defaults"],
     55     srcs: ["elftls_shared_var_ie.cpp"],
     56     cflags: ["-fno-emulated-tls"],
     57     shared_libs: ["libtest_elftls_shared_var"],
     58 }
     59 
     60 cc_test_library {
     61     name: "libtest_elftls_tprel",
     62     defaults: ["bionic_testlib_defaults"],
     63     srcs: ["elftls_tprel.cpp"],
     64     cflags: ["-fno-emulated-tls"],
     65 }
     66 
     67 cc_test {
     68     name: "elftls_dlopen_ie_error_helper",
     69     defaults: ["bionic_testlib_defaults"],
     70     srcs: ["elftls_dlopen_ie_error_helper.cpp"],
     71     ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
     72 }
     73 
     74 cc_test_library {
     75     name: "libtest_elftls_dynamic",
     76     defaults: ["bionic_testlib_defaults"],
     77     srcs: ["elftls_dynamic.cpp"],
     78     cflags: ["-fno-emulated-tls"],
     79     shared_libs: ["libtest_elftls_shared_var"],
     80 }
     81 
     82 cc_test_library {
     83     name: "libtest_elftls_dynamic_filler_1",
     84     defaults: ["bionic_testlib_defaults"],
     85     srcs: ["elftls_dynamic_filler.cpp"],
     86     cflags: ["-fno-emulated-tls", "-DTLS_FILLER=100"],
     87 }
     88 
     89 cc_test_library {
     90     name: "libtest_elftls_dynamic_filler_2",
     91     defaults: ["bionic_testlib_defaults"],
     92     srcs: ["elftls_dynamic_filler.cpp"],
     93     cflags: ["-fno-emulated-tls", "-DTLS_FILLER=200"],
     94 }
     95 
     96 cc_test_library {
     97     name: "libtest_elftls_dynamic_filler_3",
     98     defaults: ["bionic_testlib_defaults"],
     99     srcs: ["elftls_dynamic_filler.cpp"],
    100     cflags: ["-fno-emulated-tls", "-DTLS_FILLER=300"],
    101 }
    102 
    103 // -----------------------------------------------------------------------------
    104 // Library to test gnu-styled hash
    105 // -----------------------------------------------------------------------------
    106 cc_test_library {
    107     name: "libgnu-hash-table-library",
    108     defaults: ["bionic_testlib_defaults"],
    109     srcs: ["dlext_test_library.cpp"],
    110     ldflags: ["-Wl,--hash-style=gnu"],
    111     arch: {
    112         mips: {
    113             enabled: false,
    114         },
    115         mips64: {
    116             enabled: false,
    117         },
    118     },
    119 }
    120 
    121 // -----------------------------------------------------------------------------
    122 // Library to test sysv-styled hash
    123 // -----------------------------------------------------------------------------
    124 cc_test_library {
    125     name: "libsysv-hash-table-library",
    126     defaults: ["bionic_testlib_defaults"],
    127     srcs: ["dlext_test_library.cpp"],
    128     ldflags: ["-Wl,--hash-style=sysv"],
    129 }
    130 
    131 // -----------------------------------------------------------------------------
    132 // Library used by dlext tests - with GNU RELRO program header
    133 // -----------------------------------------------------------------------------
    134 // In Android.mk to support creating symlinks
    135 
    136 // -----------------------------------------------------------------------------
    137 // Library used by dlext tests - without GNU RELRO program header
    138 // -----------------------------------------------------------------------------
    139 cc_test_library {
    140     name: "libdlext_test_norelro",
    141     defaults: ["bionic_testlib_defaults"],
    142     srcs: ["dlext_test_library.cpp"],
    143     ldflags: ["-Wl,-z,norelro"],
    144     shared_libs: ["libtest_simple"],
    145 }
    146 
    147 // -----------------------------------------------------------------------------
    148 // Library used by dlext tests - different name non-default location
    149 // -----------------------------------------------------------------------------
    150 // In Android.mk to support installing to /data
    151 
    152 // -----------------------------------------------------------------------------
    153 // Libraries used by dlext tests for open from a zip-file
    154 // -----------------------------------------------------------------------------
    155 // In Android.mk to support installing to /data
    156 
    157 // ----------------------------------------------------------------------------
    158 // Library with soname which does not match filename
    159 // ----------------------------------------------------------------------------
    160 // In Android.mk to support zipped and aligned tests
    161 
    162 // -----------------------------------------------------------------------------
    163 // Library used by dlext tests - zipped and aligned
    164 // -----------------------------------------------------------------------------
    165 // In Android.mk to support zipped and aligned tests
    166 
    167 // -----------------------------------------------------------------------------
    168 // Library used by dlfcn tests
    169 // -----------------------------------------------------------------------------
    170 cc_test_library {
    171     name: "libtest_simple",
    172     defaults: ["bionic_testlib_defaults"],
    173     srcs: ["dlopen_testlib_simple.cpp"],
    174 }
    175 
    176 // -----------------------------------------------------------------------------
    177 // Library used by dlext direct unload on the namespace boundary tests
    178 // -----------------------------------------------------------------------------
    179 cc_test_library {
    180     name: "libtest_missing_symbol",
    181     defaults: ["bionic_testlib_defaults"],
    182     srcs: ["dlopen_testlib_missing_symbol.cpp"],
    183     allow_undefined_symbols: true,
    184     relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
    185 }
    186 
    187 // -----------------------------------------------------------------------------
    188 // Library used by dlext indirect unload on the namespace boundary tests
    189 //
    190 // These libraries produce following dependency graph:
    191 // libtest_missing_symbol_root (private ns)
    192 // +-> libbnstest_public (public ns)
    193 // +-> libtest_missing_symbol_child_public (public ns)
    194 //     +-> libnstest_public (public ns)
    195 // +-> libtest_missing_symbol_child_private (private_ns)
    196 //     +-> libnstest_public (public_ns)
    197 //
    198 // All libraries except libtest_missing_symbol are located in
    199 // private_namespace_libs/
    200 // -----------------------------------------------------------------------------
    201 cc_test_library {
    202     name: "libtest_missing_symbol_child_public",
    203     defaults: ["bionic_testlib_defaults"],
    204     srcs: ["empty.cpp"],
    205     relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
    206     shared_libs: ["libnstest_public"],
    207 }
    208 
    209 cc_test_library {
    210     name: "libtest_missing_symbol_child_private",
    211     defaults: ["bionic_testlib_defaults"],
    212     srcs: ["empty.cpp"],
    213     relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
    214     shared_libs: ["libnstest_public"],
    215 }
    216 
    217 cc_test_library {
    218     name: "libtest_missing_symbol_root",
    219     defaults: ["bionic_testlib_defaults"],
    220     srcs: ["dlopen_testlib_missing_symbol.cpp"],
    221     relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
    222     allow_undefined_symbols: true,
    223     shared_libs: [
    224         "libnstest_public",
    225         "libtest_missing_symbol_child_public",
    226         "libtest_missing_symbol_child_private",
    227     ],
    228 }
    229 
    230 // -----------------------------------------------------------------------------
    231 // -----------------------------------------------------------------------------
    232 // Library used by dlfcn nodelete tests
    233 // -----------------------------------------------------------------------------
    234 cc_test_library {
    235     name: "libtest_nodelete_1",
    236     defaults: ["bionic_testlib_defaults"],
    237     srcs: ["dlopen_nodelete_1.cpp"],
    238 }
    239 
    240 // -----------------------------------------------------------------------------
    241 // Library used by dlfcn nodelete tests
    242 // -----------------------------------------------------------------------------
    243 cc_test_library {
    244     name: "libtest_nodelete_2",
    245     defaults: ["bionic_testlib_defaults"],
    246     srcs: ["dlopen_nodelete_2.cpp"],
    247 }
    248 
    249 // -----------------------------------------------------------------------------
    250 // Library used by dlfcn nodelete tests
    251 // -----------------------------------------------------------------------------
    252 cc_test_library {
    253     name: "libtest_nodelete_dt_flags_1",
    254     defaults: ["bionic_testlib_defaults"],
    255     srcs: ["dlopen_nodelete_dt_flags_1.cpp"],
    256     ldflags: ["-Wl,-z,nodelete"],
    257 }
    258 
    259 // -----------------------------------------------------------------------------
    260 // Build test helper libraries for linker namespaces
    261 //
    262 // This set of libraries is used to verify linker namespaces.
    263 //
    264 // Test cases
    265 // 1. Check that private libraries loaded in different namespaces are
    266 //    different. Check that dlsym does not confuse them.
    267 // 2. Check that public libraries loaded in different namespaces are shared
    268 //    between them.
    269 // 3. Check that namespace sticks on dlopen
    270 // 4. Check that having access to shared library (libnstest_public.so)
    271 //    does not expose symbols from dependent library (libnstest_public_internal.so)
    272 //
    273 // Dependency tree (visibility)
    274 // libnstest_root.so (this should be local to the namespace)
    275 // +-> libnstest_public.so
    276 //     +-> libnstest_public_internal.so
    277 // +-> libnstest_private.so
    278 //
    279 // libnstest_dlopened.so (library in private namespace dlopened from libnstest_root.so)
    280 // -----------------------------------------------------------------------------
    281 cc_test_library {
    282     name: "libnstest_root",
    283     defaults: ["bionic_testlib_defaults"],
    284     srcs: ["namespaces_root.cpp"],
    285     relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
    286     shared_libs: [
    287         "libnstest_public",
    288         "libnstest_private",
    289     ],
    290     // The dlext.ns_anonymous test copies the loaded segments of this shared
    291     // object into a new mapping, so every segment must be readable. Turn off
    292     // eXecute-Only-Memory. See http://b/123034666.
    293     xom: false,
    294 }
    295 
    296 cc_test_library {
    297     name: "libnstest_public_internal",
    298     defaults: ["bionic_testlib_defaults"],
    299     srcs: ["namespaces_public_internal.cpp"],
    300     relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
    301 }
    302 
    303 cc_test_library {
    304     name: "libnstest_public",
    305     defaults: ["bionic_testlib_defaults"],
    306     srcs: ["namespaces_public.cpp"],
    307     relative_install_path: "bionic-loader-test-libs/public_namespace_libs",
    308     shared_libs: ["libnstest_public_internal"],
    309 }
    310 
    311 cc_test_library {
    312     name: "libnstest_private",
    313     defaults: ["bionic_testlib_defaults"],
    314     srcs: ["namespaces_private.cpp"],
    315     relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
    316 }
    317 
    318 cc_test_library {
    319     name: "libnstest_dlopened",
    320     defaults: ["bionic_testlib_defaults"],
    321     srcs: ["namespaces_dlopened.cpp"],
    322     relative_install_path: "bionic-loader-test-libs/private_namespace_libs",
    323 }
    324 
    325 // -----------------------------------------------------------------------------
    326 // Build test helper libraries for linker namespaces for allow all shared libs
    327 //
    328 // This set of libraries is used to verify linker namespaces for allow all
    329 // shared libs.
    330 //
    331 // Test cases
    332 // 1. Check that namespace a exposes libnstest_ns_a_public1 to
    333 //    namespace b while keeping libnstest_ns_a_public1_internal as an
    334 //    internal lib.
    335 // 2. Check that namespace b exposes all libraries to namespace a.
    336 //
    337 // Dependency tree (visibility)
    338 // libnstest_ns_b_public2.so  (ns:b)
    339 // +-> libnstest_ns_a_public1.so  (ns:a)
    340 //     +-> libnstest_ns_a_public2_internal.so  (ns:a)
    341 //     +-> libnstest_ns_b_public3.so  (ns:b)
    342 //
    343 // -----------------------------------------------------------------------------
    344 cc_test_library {
    345     name: "libnstest_ns_a_public1",
    346     defaults: ["bionic_testlib_defaults"],
    347     srcs: ["libnstest_ns_a_public1.cpp"],
    348     relative_install_path: "bionic-loader-test-libs/ns_a",
    349     shared_libs: [
    350         "libnstest_ns_a_public1_internal",
    351         "libnstest_ns_b_public3",
    352     ],
    353 }
    354 
    355 cc_test_library {
    356     name: "libnstest_ns_a_public1_internal",
    357     defaults: ["bionic_testlib_defaults"],
    358     srcs: ["libnstest_ns_a_public1_internal.cpp"],
    359     relative_install_path: "bionic-loader-test-libs/ns_a",
    360 }
    361 
    362 cc_test_library {
    363     name: "libnstest_ns_b_public2",
    364     defaults: ["bionic_testlib_defaults"],
    365     srcs: ["libnstest_ns_b_public2.cpp"],
    366     relative_install_path: "bionic-loader-test-libs/ns_b",
    367     shared_libs: ["libnstest_ns_a_public1"],
    368 }
    369 
    370 cc_test_library {
    371     name: "libnstest_ns_b_public3",
    372     defaults: ["bionic_testlib_defaults"],
    373     srcs: ["libnstest_ns_b_public3.cpp"],
    374     relative_install_path: "bionic-loader-test-libs/ns_b",
    375 }
    376 
    377 // -----------------------------------------------------------------------------
    378 // Build DT_RUNPATH test helper libraries
    379 // -----------------------------------------------------------------------------
    380 // include $(LOCAL_PATH)/Android.build.dt_runpath.mk
    381 
    382 // -----------------------------------------------------------------------------
    383 // Build library with two parents
    384 // -----------------------------------------------------------------------------
    385 // include $(LOCAL_PATH)/Android.build.dlopen_2_parents_reloc.mk
    386 
    387 // -----------------------------------------------------------------------------
    388 // Build libtest_check_order_dlsym.so with its dependencies.
    389 // -----------------------------------------------------------------------------
    390 // include $(LOCAL_PATH)/Android.build.dlopen_check_order_dlsym.mk
    391 
    392 // -----------------------------------------------------------------------------
    393 // Build libtest_check_order_siblings.so with its dependencies.
    394 // -----------------------------------------------------------------------------
    395 // include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_siblings.mk
    396 
    397 // -----------------------------------------------------------------------------
    398 // Build libtest_check_order_root.so with its dependencies.
    399 // -----------------------------------------------------------------------------
    400 // include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_main_executable.mk
    401 
    402 // -----------------------------------------------------------------------------
    403 // Build libtest_versioned_lib.so with its dependencies.
    404 // -----------------------------------------------------------------------------
    405 // include $(LOCAL_PATH)/Android.build.versioned_lib.mk
    406 
    407 // -----------------------------------------------------------------------------
    408 // Build libraries needed by pthread_atfork tests
    409 // -----------------------------------------------------------------------------
    410 // include $(LOCAL_PATH)/Android.build.pthread_atfork.mk
    411 
    412 // -----------------------------------------------------------------------------
    413 // Library with dependency loop used by dlfcn tests
    414 //
    415 // libtest_with_dependency_loop -> a -> b -> c -> a
    416 // -----------------------------------------------------------------------------
    417 cc_test_library {
    418     name: "libtest_with_dependency_loop",
    419     defaults: ["bionic_testlib_defaults"],
    420     srcs: ["dlopen_testlib_loopy_root.cpp"],
    421     shared_libs: ["libtest_with_dependency_loop_a"],
    422 }
    423 
    424 // -----------------------------------------------------------------------------
    425 // libtest_with_dependency_loop_a.so
    426 // -----------------------------------------------------------------------------
    427 cc_test_library {
    428     name: "libtest_with_dependency_loop_a",
    429     defaults: ["bionic_testlib_defaults"],
    430     srcs: ["dlopen_testlib_loopy_a.cpp"],
    431     shared_libs: ["libtest_with_dependency_loop_b_tmp"],
    432 }
    433 
    434 // -----------------------------------------------------------------------------
    435 // libtest_with_dependency_loop_b.so
    436 //
    437 // this is temporary placeholder - will be removed
    438 // -----------------------------------------------------------------------------
    439 cc_test_library {
    440     name: "libtest_with_dependency_loop_b_tmp",
    441     defaults: ["bionic_testlib_defaults"],
    442     srcs: ["dlopen_testlib_loopy_invalid.cpp"],
    443     ldflags: ["-Wl,-soname=libtest_with_dependency_loop_b.so"],
    444 }
    445 
    446 // -----------------------------------------------------------------------------
    447 // libtest_with_dependency_loop_b.so
    448 // -----------------------------------------------------------------------------
    449 cc_test_library {
    450     name: "libtest_with_dependency_loop_b",
    451     defaults: ["bionic_testlib_defaults"],
    452     srcs: ["dlopen_testlib_loopy_b.cpp"],
    453     shared_libs: ["libtest_with_dependency_loop_c"],
    454 }
    455 
    456 // -----------------------------------------------------------------------------
    457 // libtest_with_dependency_loop_c.so
    458 // -----------------------------------------------------------------------------
    459 cc_test_library {
    460     name: "libtest_with_dependency_loop_c",
    461     defaults: ["bionic_testlib_defaults"],
    462     srcs: ["dlopen_testlib_loopy_c.cpp"],
    463     shared_libs: ["libtest_with_dependency_loop_a"],
    464 }
    465 
    466 // -----------------------------------------------------------------------------
    467 // libtest_relo_check_dt_needed_order.so
    468 // |
    469 // +-> libtest_relo_check_dt_needed_order_1.so
    470 // |
    471 // +-> libtest_relo_check_dt_needed_order_2.so
    472 // -----------------------------------------------------------------------------
    473 
    474 cc_test_library {
    475     name: "libtest_relo_check_dt_needed_order",
    476     defaults: ["bionic_testlib_defaults"],
    477     srcs: ["dlopen_testlib_relo_check_dt_needed_order.cpp"],
    478     shared_libs: [
    479         "libtest_relo_check_dt_needed_order_1",
    480         "libtest_relo_check_dt_needed_order_2",
    481     ],
    482 }
    483 
    484 cc_test_library {
    485     name: "libtest_relo_check_dt_needed_order_1",
    486     defaults: ["bionic_testlib_defaults"],
    487     srcs: ["dlopen_testlib_relo_check_dt_needed_order_1.cpp"],
    488 }
    489 
    490 cc_test_library {
    491     name: "libtest_relo_check_dt_needed_order_2",
    492     defaults: ["bionic_testlib_defaults"],
    493     srcs: ["dlopen_testlib_relo_check_dt_needed_order_2.cpp"],
    494 }
    495 
    496 // -----------------------------------------------------------------------------
    497 // Library with dependency used by dlfcn tests
    498 // -----------------------------------------------------------------------------
    499 // In Android.mk to support dependency on libdlext_test
    500 
    501 // -----------------------------------------------------------------------------
    502 // Library used by ifunc tests
    503 // -----------------------------------------------------------------------------
    504 cc_test_library {
    505     name: "libtest_ifunc",
    506     defaults: ["bionic_testlib_defaults"],
    507     srcs: ["dlopen_testlib_ifunc.cpp"],
    508 
    509     arch: {
    510         mips: {
    511             enabled: false,
    512         },
    513         mips64: {
    514             enabled: false,
    515         },
    516     },
    517 }
    518 
    519 cc_test_library {
    520     name: "libtest_ifunc_variable",
    521     defaults: ["bionic_testlib_defaults"],
    522     srcs: ["dlopen_testlib_ifunc_variable.cpp"],
    523     shared_libs: ["libtest_ifunc_variable_impl"],
    524 
    525     arch: {
    526         mips: {
    527             enabled: false,
    528         },
    529         mips64: {
    530             enabled: false,
    531         },
    532     },
    533 }
    534 
    535 cc_test_library {
    536     name: "libtest_ifunc_variable_impl",
    537     defaults: ["bionic_testlib_defaults"],
    538     srcs: ["dlopen_testlib_ifunc_variable_impl.cpp"],
    539 
    540     arch: {
    541         mips: {
    542             enabled: false,
    543         },
    544         mips64: {
    545             enabled: false,
    546         },
    547     },
    548 }
    549 
    550 // -----------------------------------------------------------------------------
    551 // Library used by atexit tests
    552 // -----------------------------------------------------------------------------
    553 
    554 cc_test_library {
    555     name: "libtest_atexit",
    556     defaults: ["bionic_testlib_defaults"],
    557     srcs: ["atexit_testlib.cpp"],
    558 }
    559 
    560 // -----------------------------------------------------------------------------
    561 // This library is used by dl_load test to check symbol preempting
    562 // by main executable
    563 // -----------------------------------------------------------------------------
    564 cc_test_library {
    565     name: "libdl_preempt_test_1",
    566     defaults: ["bionic_testlib_defaults"],
    567     srcs: ["dl_preempt_library_1.cpp"],
    568 }
    569 
    570 // -----------------------------------------------------------------------------
    571 // This library is used by dl_load test to check symbol preempting
    572 // by libdl_preempt_test_1.so
    573 // -----------------------------------------------------------------------------
    574 cc_test_library {
    575     name: "libdl_preempt_test_2",
    576     defaults: ["bionic_testlib_defaults"],
    577     srcs: ["dl_preempt_library_2.cpp"],
    578 }
    579 
    580 // -----------------------------------------------------------------------------
    581 // Library with DF_1_GLOBAL
    582 // -----------------------------------------------------------------------------
    583 cc_test_library {
    584     name: "libdl_test_df_1_global",
    585     defaults: ["bionic_testlib_defaults"],
    586     srcs: ["dl_df_1_global.cpp"],
    587     ldflags: ["-Wl,-z,global"],
    588 
    589     target: {
    590         host: {
    591             // TODO (dimitry): host ld.gold does not yet support -z global
    592             // remove this line once it is updated.
    593             ldflags: ["-fuse-ld=bfd"],
    594         },
    595     },
    596 }
    597 
    598 // -----------------------------------------------------------------------------
    599 // Library using symbol from libdl_test_df_1_global
    600 // -----------------------------------------------------------------------------
    601 cc_test_library {
    602     name: "libtest_dlsym_df_1_global",
    603     defaults: ["bionic_testlib_defaults"],
    604     srcs: ["dl_df_1_use_global.cpp"],
    605 }
    606 
    607 // -----------------------------------------------------------------------------
    608 // Library with DF_1_GLOBAL which will be dlopened
    609 // (note: libdl_test_df_1_global above will be included in DT_NEEDED)
    610 // -----------------------------------------------------------------------------
    611 cc_test_library {
    612     name: "libtest_dlopen_df_1_global",
    613     defaults: ["bionic_testlib_defaults"],
    614     srcs: ["dl_df_1_global_dummy.cpp"],
    615     ldflags: ["-Wl,-z,global"],
    616 
    617     target: {
    618         host: {
    619             // TODO (dimitry): host ld.gold does not yet support -z global
    620             // remove this line once it is updated.
    621             ldflags: ["-fuse-ld=bfd"],
    622         },
    623     },
    624 }
    625 
    626 // -----------------------------------------------------------------------------
    627 // Library with weak function
    628 // -----------------------------------------------------------------------------
    629 cc_test_library {
    630     name: "libtest_dlsym_weak_func",
    631     defaults: ["bionic_testlib_defaults"],
    632     srcs: ["dlsym_weak_function.cpp"],
    633 }
    634 
    635 // -----------------------------------------------------------------------------
    636 // Library to check RTLD_LOCAL with dlsym in 'this'
    637 // -----------------------------------------------------------------------------
    638 cc_test_library {
    639     name: "libtest_dlsym_from_this",
    640     defaults: ["bionic_testlib_defaults"],
    641     srcs: ["dlsym_from_this_symbol.cpp"],
    642     shared_libs: ["libtest_dlsym_from_this_child"],
    643 }
    644 
    645 // -----------------------------------------------------------------------------
    646 cc_test_library {
    647     name: "libtest_dlsym_from_this_child",
    648     defaults: ["bionic_testlib_defaults"],
    649     srcs: ["dlsym_from_this_functions.cpp"],
    650     shared_libs: ["libtest_dlsym_from_this_grandchild"],
    651 }
    652 
    653 // -----------------------------------------------------------------------------
    654 cc_test_library {
    655     name: "libtest_dlsym_from_this_grandchild",
    656     defaults: ["bionic_testlib_defaults"],
    657     srcs: ["dlsym_from_this_symbol2.cpp"],
    658 }
    659 
    660 // -----------------------------------------------------------------------------
    661 // Empty library
    662 // -----------------------------------------------------------------------------
    663 cc_test_library {
    664     name: "libtest_empty",
    665     defaults: ["bionic_testlib_defaults"],
    666     srcs: ["empty.cpp"],
    667 }
    668 
    669 // -----------------------------------------------------------------------------
    670 // Library for inaccessible shared library test
    671 // -----------------------------------------------------------------------------
    672 cc_test_library {
    673     name: "libtestshared",
    674     defaults: ["bionic_testlib_defaults"],
    675     srcs: ["empty.cpp"],
    676     relative_install_path: "bionic-loader-test-libs/inaccessible_libs",
    677 }
    678 
    679 // -----------------------------------------------------------------------------
    680 // Library with weak undefined function
    681 // -----------------------------------------------------------------------------
    682 cc_test_library {
    683     name: "libtest_dlopen_weak_undefined_func",
    684     defaults: ["bionic_testlib_defaults"],
    685     srcs: ["dlopen_weak_undefined.cpp"],
    686 }
    687 
    688 // -----------------------------------------------------------------------------
    689 // Check that RTLD_NEXT of a libc symbol works in dlopened library
    690 // -----------------------------------------------------------------------------
    691 cc_test_library {
    692     name: "libtest_check_rtld_next_from_library",
    693     defaults: ["bionic_testlib_defaults"],
    694     srcs: ["check_rtld_next_from_library.cpp"],
    695 }
    696 
    697 // -----------------------------------------------------------------------------
    698 // Library with constructor that calls dlopen() b/7941716
    699 // -----------------------------------------------------------------------------
    700 cc_test_library {
    701     name: "libtest_dlopen_from_ctor",
    702     defaults: ["bionic_testlib_defaults"],
    703     srcs: ["dlopen_testlib_dlopen_from_ctor.cpp"],
    704 }
    705 
    706 // -----------------------------------------------------------------------------
    707 // Libraries used to check init/fini call order
    708 // -----------------------------------------------------------------------------
    709 cc_test_library {
    710     name: "libtest_init_fini_order_root",
    711     defaults: ["bionic_testlib_defaults"],
    712     srcs: ["dlopen_check_init_fini_root.cpp"],
    713     shared_libs: [
    714         "libtest_init_fini_order_child",
    715         "libtest_init_fini_order_grand_child",
    716     ],
    717 }
    718 
    719 cc_test_library {
    720     name: "libtest_init_fini_order_root2",
    721     defaults: ["bionic_testlib_defaults"],
    722     srcs: ["dlopen_check_init_fini_root.cpp"],
    723     shared_libs: [
    724         "libtest_init_fini_order_grand_child",
    725         "libtest_init_fini_order_child",
    726     ],
    727 }
    728 
    729 cc_test_library {
    730     name: "libtest_init_fini_order_child",
    731     defaults: ["bionic_testlib_defaults"],
    732     srcs: ["dlopen_check_init_fini_child.cpp"],
    733     shared_libs: ["libtest_init_fini_order_grand_child"],
    734 }
    735 
    736 cc_test_library {
    737     name: "libtest_init_fini_order_grand_child",
    738     defaults: ["bionic_testlib_defaults"],
    739     srcs: ["dlopen_check_init_fini_grand_child.cpp"],
    740 }
    741 
    742 // -----------------------------------------------------------------------------
    743 // Library that depends on the library with constructor that calls dlopen() b/7941716
    744 // -----------------------------------------------------------------------------
    745 cc_test_library {
    746     name: "libtest_dlopen_from_ctor_main",
    747     defaults: ["bionic_testlib_defaults"],
    748     srcs: ["empty.cpp"],
    749     shared_libs: ["libtest_dlopen_from_ctor"],
    750 }
    751 
    752 // -----------------------------------------------------------------------------
    753 // Libraries with non-trivial thread_local variable to test dlclose()
    754 // -----------------------------------------------------------------------------
    755 cc_test_library {
    756     name: "libtest_thread_local_dtor",
    757     defaults: ["bionic_testlib_defaults"],
    758     srcs: ["thread_local_dtor.cpp"],
    759 }
    760 
    761 cc_test_library {
    762     name: "libtest_thread_local_dtor2",
    763     defaults: ["bionic_testlib_defaults"],
    764     srcs: ["thread_local_dtor2.cpp"],
    765 }
    766 
    767 // -----------------------------------------------------------------------------
    768 // Library dt_needs libtest_thread_local_dtor/2 (to check no-unload on load_group)
    769 // -----------------------------------------------------------------------------
    770 cc_test_library {
    771     name: "libtest_indirect_thread_local_dtor",
    772     defaults: ["bionic_testlib_defaults"],
    773     srcs: ["empty.cpp"],
    774     shared_libs: [
    775         "libtest_thread_local_dtor",
    776         "libtest_thread_local_dtor2",
    777     ],
    778 }
    779 
    780 
    781 // -----------------------------------------------------------------------------
    782 // Tool to use to align the shared libraries in a zip file.
    783 // -----------------------------------------------------------------------------
    784 cc_binary_host {
    785     name: "bionic_tests_zipalign",
    786     srcs: ["bionic_tests_zipalign.cpp"],
    787     cflags: [
    788         "-Wall",
    789         "-Werror",
    790     ],
    791 
    792     static_libs: [
    793         "libziparchive",
    794         "liblog",
    795         "libbase",
    796         "libz",
    797         "libutils",
    798     ],
    799 }
    800 
    801 cc_test_library {
    802     name: "libcfi-test",
    803     defaults: ["bionic_testlib_defaults"],
    804     srcs: ["cfi_test_lib.cpp"],
    805     sanitize: {
    806         cfi: false,
    807     },
    808 }
    809 
    810 cc_test_library {
    811     name: "libcfi-test-bad",
    812     defaults: ["bionic_testlib_defaults"],
    813     srcs: ["cfi_test_bad_lib.cpp"],
    814     sanitize: {
    815         cfi: false,
    816     },
    817 }
    818 
    819 cc_test {
    820     name: "cfi_test_helper",
    821     host_supported: false,
    822     defaults: ["bionic_testlib_defaults"],
    823     srcs: ["cfi_test_helper.cpp"],
    824     ldflags: ["-rdynamic"],
    825 }
    826 
    827 cc_test {
    828     name: "cfi_test_helper2",
    829     host_supported: false,
    830     defaults: ["bionic_testlib_defaults"],
    831     srcs: ["cfi_test_helper2.cpp"],
    832     shared_libs: ["libcfi-test"],
    833     ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
    834 }
    835 
    836 cc_test {
    837     name: "preinit_getauxval_test_helper",
    838     host_supported: false,
    839     defaults: ["bionic_testlib_defaults"],
    840     srcs: ["preinit_getauxval_test_helper.cpp"],
    841 }
    842 
    843 cc_test {
    844     name: "preinit_syscall_test_helper",
    845     host_supported: false,
    846     defaults: ["bionic_testlib_defaults"],
    847     srcs: ["preinit_syscall_test_helper.cpp"],
    848 }
    849 
    850 cc_test {
    851     name: "ld_preload_test_helper",
    852     host_supported: false,
    853     defaults: ["bionic_testlib_defaults"],
    854     srcs: ["ld_preload_test_helper.cpp"],
    855     shared_libs: ["ld_preload_test_helper_lib1"],
    856     ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
    857 }
    858 
    859 cc_test_library {
    860     name: "ld_preload_test_helper_lib1",
    861     host_supported: false,
    862     defaults: ["bionic_testlib_defaults"],
    863     srcs: ["ld_preload_test_helper_lib1.cpp"],
    864 }
    865 
    866 cc_test_library {
    867     name: "ld_preload_test_helper_lib2",
    868     host_supported: false,
    869     defaults: ["bionic_testlib_defaults"],
    870     srcs: ["ld_preload_test_helper_lib2.cpp"],
    871 }
    872 
    873 cc_test {
    874     name: "ld_config_test_helper",
    875     host_supported: false,
    876     defaults: ["bionic_testlib_defaults"],
    877     srcs: ["ld_config_test_helper.cpp"],
    878     shared_libs: ["ld_config_test_helper_lib1"],
    879     ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
    880 }
    881 
    882 cc_test_library {
    883     name: "ld_config_test_helper_lib1",
    884     host_supported: false,
    885     defaults: ["bionic_testlib_defaults"],
    886     srcs: ["ld_config_test_helper_lib1.cpp"],
    887     shared_libs: ["ld_config_test_helper_lib2"],
    888     relative_install_path: "bionic-loader-test-libs/ns2",
    889 }
    890 
    891 cc_test_library {
    892     name: "ld_config_test_helper_lib2",
    893     host_supported: false,
    894     defaults: ["bionic_testlib_defaults"],
    895     srcs: ["ld_config_test_helper_lib2.cpp"],
    896     relative_install_path: "bionic-loader-test-libs/ns2",
    897 }
    898 
    899 cc_test_library {
    900     name: "ld_config_test_helper_lib3",
    901     host_supported: false,
    902     defaults: ["bionic_testlib_defaults"],
    903     srcs: ["ld_config_test_helper_lib3.cpp"],
    904 }
    905 
    906 cc_test {
    907     name: "exec_linker_helper",
    908     host_supported: false,
    909     defaults: ["bionic_testlib_defaults"],
    910     srcs: ["exec_linker_helper.cpp"],
    911     shared_libs: ["exec_linker_helper_lib"],
    912     ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
    913 }
    914 
    915 cc_test_library {
    916     name: "exec_linker_helper_lib",
    917     host_supported: false,
    918     defaults: ["bionic_testlib_defaults"],
    919     srcs: ["exec_linker_helper_lib.cpp"],
    920 }
    921 
    922 cc_test_library {
    923     name: "libsegment_gap_outer",
    924     host_supported: false,
    925     defaults: ["bionic_testlib_defaults"],
    926     srcs: ["segment_gap_outer.cpp"],
    927     ldflags: ["-Wl,-T,bionic/tests/libs/segment_gap_outer.lds"],
    928 }
    929 
    930 cc_test_library {
    931     name: "libsegment_gap_inner",
    932     host_supported: false,
    933     defaults: ["bionic_testlib_defaults"],
    934     srcs: ["segment_gap_inner.cpp"],
    935 }
    936