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     ldflags: [
     21         "-Wl,--rpath,${ORIGIN}",
     22         "-Wl,--enable-new-dtags",
     23     ],
     24     relative_install_path: "bionic-loader-test-libs",
     25     gtest: false,
     26     sanitize: {
     27         address: false,
     28         coverage: false,
     29     },
     30     stl: "libc++_static",
     31     target: {
     32         darwin: {
     33             enabled: false,
     34         },
     35     },
     36 }
     37 
     38 // -----------------------------------------------------------------------------
     39 // Library to test gnu-styled hash
     40 // -----------------------------------------------------------------------------
     41 cc_test_library {
     42     name: "libgnu-hash-table-library",
     43     defaults: ["bionic_testlib_defaults"],
     44     srcs: ["dlext_test_library.cpp"],
     45     ldflags: ["-Wl,--hash-style=gnu"],
     46     arch: {
     47         mips: {
     48             enabled: false,
     49         },
     50         mips64: {
     51             enabled: false,
     52         },
     53     },
     54 }
     55 
     56 // -----------------------------------------------------------------------------
     57 // Library to test sysv-styled hash
     58 // -----------------------------------------------------------------------------
     59 cc_test_library {
     60     name: "libsysv-hash-table-library",
     61     defaults: ["bionic_testlib_defaults"],
     62     srcs: ["dlext_test_library.cpp"],
     63     ldflags: ["-Wl,--hash-style=sysv"],
     64 }
     65 
     66 // -----------------------------------------------------------------------------
     67 // Library used by dlext tests - with GNU RELRO program header
     68 // -----------------------------------------------------------------------------
     69 // In Android.mk to support creating symlinks
     70 
     71 // -----------------------------------------------------------------------------
     72 // Library used by dlext tests - without GNU RELRO program header
     73 // -----------------------------------------------------------------------------
     74 cc_test_library {
     75     name: "libdlext_test_norelro",
     76     defaults: ["bionic_testlib_defaults"],
     77     srcs: ["dlext_test_library.cpp"],
     78     ldflags: ["-Wl,-z,norelro"],
     79     shared_libs = ["libtest_simple"],
     80 }
     81 
     82 // -----------------------------------------------------------------------------
     83 // Library used by dlext tests - different name non-default location
     84 // -----------------------------------------------------------------------------
     85 // In Android.mk to support installing to /data
     86 
     87 // -----------------------------------------------------------------------------
     88 // Libraries used by dlext tests for open from a zip-file
     89 // -----------------------------------------------------------------------------
     90 // In Android.mk to support installing to /data
     91 
     92 // ----------------------------------------------------------------------------
     93 // Library with soname which does not match filename
     94 // ----------------------------------------------------------------------------
     95 // In Android.mk to support zipped and aligned tests
     96 
     97 // -----------------------------------------------------------------------------
     98 // Library used by dlext tests - zipped and aligned
     99 // -----------------------------------------------------------------------------
    100 // In Android.mk to support zipped and aligned tests
    101 
    102 // -----------------------------------------------------------------------------
    103 // Library used by dlfcn tests
    104 // -----------------------------------------------------------------------------
    105 cc_test_library {
    106     name: "libtest_simple",
    107     defaults: ["bionic_testlib_defaults"],
    108     srcs: ["dlopen_testlib_simple.cpp"],
    109 }
    110 
    111 // -----------------------------------------------------------------------------
    112 // Library used by dlfcn nodelete tests
    113 // -----------------------------------------------------------------------------
    114 cc_test_library {
    115     name: "libtest_nodelete_1",
    116     defaults: ["bionic_testlib_defaults"],
    117     srcs: ["dlopen_nodelete_1.cpp"],
    118 }
    119 
    120 // -----------------------------------------------------------------------------
    121 // Library used by dlfcn nodelete tests
    122 // -----------------------------------------------------------------------------
    123 cc_test_library {
    124     name: "libtest_nodelete_2",
    125     defaults: ["bionic_testlib_defaults"],
    126     srcs: ["dlopen_nodelete_2.cpp"],
    127 }
    128 
    129 // -----------------------------------------------------------------------------
    130 // Library used by dlfcn nodelete tests
    131 // -----------------------------------------------------------------------------
    132 cc_test_library {
    133     name: "libtest_nodelete_dt_flags_1",
    134     defaults: ["bionic_testlib_defaults"],
    135     srcs: ["dlopen_nodelete_dt_flags_1.cpp"],
    136     ldflags: ["-Wl,-z,nodelete"],
    137 }
    138 
    139 // -----------------------------------------------------------------------------
    140 // Build test helper libraries for linker namespaces
    141 // -----------------------------------------------------------------------------
    142 // include $(LOCAL_PATH)/Android.build.linker_namespaces.mk
    143 
    144 // -----------------------------------------------------------------------------
    145 // Build DT_RUNPATH test helper libraries
    146 // -----------------------------------------------------------------------------
    147 // include $(LOCAL_PATH)/Android.build.dt_runpath.mk
    148 
    149 // -----------------------------------------------------------------------------
    150 // Build library with two parents
    151 // -----------------------------------------------------------------------------
    152 // include $(LOCAL_PATH)/Android.build.dlopen_2_parents_reloc.mk
    153 
    154 // -----------------------------------------------------------------------------
    155 // Build libtest_check_order_dlsym.so with its dependencies.
    156 // -----------------------------------------------------------------------------
    157 // include $(LOCAL_PATH)/Android.build.dlopen_check_order_dlsym.mk
    158 
    159 // -----------------------------------------------------------------------------
    160 // Build libtest_check_order_siblings.so with its dependencies.
    161 // -----------------------------------------------------------------------------
    162 // include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_siblings.mk
    163 
    164 // -----------------------------------------------------------------------------
    165 // Build libtest_check_order_root.so with its dependencies.
    166 // -----------------------------------------------------------------------------
    167 // include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_main_executable.mk
    168 
    169 // -----------------------------------------------------------------------------
    170 // Build libtest_versioned_lib.so with its dependencies.
    171 // -----------------------------------------------------------------------------
    172 // include $(LOCAL_PATH)/Android.build.versioned_lib.mk
    173 
    174 // -----------------------------------------------------------------------------
    175 // Build libraries needed by pthread_atfork tests
    176 // -----------------------------------------------------------------------------
    177 // include $(LOCAL_PATH)/Android.build.pthread_atfork.mk
    178 
    179 // -----------------------------------------------------------------------------
    180 // Library with dependency loop used by dlfcn tests
    181 //
    182 // libtest_with_dependency_loop -> a -> b -> c -> a
    183 // -----------------------------------------------------------------------------
    184 cc_test_library {
    185     name: "libtest_with_dependency_loop",
    186     defaults: ["bionic_testlib_defaults"],
    187     srcs: ["dlopen_testlib_loopy_root.cpp"],
    188     shared_libs: ["libtest_with_dependency_loop_a"],
    189 }
    190 
    191 // -----------------------------------------------------------------------------
    192 // libtest_with_dependency_loop_a.so
    193 // -----------------------------------------------------------------------------
    194 cc_test_library {
    195     name: "libtest_with_dependency_loop_a",
    196     defaults: ["bionic_testlib_defaults"],
    197     srcs: ["dlopen_testlib_loopy_a.cpp"],
    198     shared_libs: ["libtest_with_dependency_loop_b_tmp"],
    199 }
    200 
    201 // -----------------------------------------------------------------------------
    202 // libtest_with_dependency_loop_b.so
    203 //
    204 // this is temporary placeholder - will be removed
    205 // -----------------------------------------------------------------------------
    206 cc_test_library {
    207     name: "libtest_with_dependency_loop_b_tmp",
    208     defaults: ["bionic_testlib_defaults"],
    209     srcs: ["dlopen_testlib_loopy_invalid.cpp"],
    210     ldflags: ["-Wl,-soname=libtest_with_dependency_loop_b.so"],
    211 }
    212 
    213 // -----------------------------------------------------------------------------
    214 // libtest_with_dependency_loop_b.so
    215 // -----------------------------------------------------------------------------
    216 cc_test_library {
    217     name: "libtest_with_dependency_loop_b",
    218     defaults: ["bionic_testlib_defaults"],
    219     srcs: ["dlopen_testlib_loopy_b.cpp"],
    220     shared_libs: ["libtest_with_dependency_loop_c"],
    221 }
    222 
    223 // -----------------------------------------------------------------------------
    224 // libtest_with_dependency_loop_c.so
    225 // -----------------------------------------------------------------------------
    226 cc_test_library {
    227     name: "libtest_with_dependency_loop_c",
    228     defaults: ["bionic_testlib_defaults"],
    229     srcs: ["dlopen_testlib_loopy_c.cpp"],
    230     shared_libs: ["libtest_with_dependency_loop_a"],
    231 }
    232 
    233 // -----------------------------------------------------------------------------
    234 // libtest_relo_check_dt_needed_order.so
    235 // |
    236 // +-> libtest_relo_check_dt_needed_order_1.so
    237 // |
    238 // +-> libtest_relo_check_dt_needed_order_2.so
    239 // -----------------------------------------------------------------------------
    240 
    241 
    242 cc_test_library {
    243     name: "libtest_relo_check_dt_needed_order",
    244     defaults: ["bionic_testlib_defaults"],
    245     srcs: ["dlopen_testlib_relo_check_dt_needed_order.cpp"],
    246     shared_libs: [
    247         "libtest_relo_check_dt_needed_order_1",
    248         "libtest_relo_check_dt_needed_order_2",
    249     ],
    250 }
    251 
    252 cc_test_library {
    253     name: "libtest_relo_check_dt_needed_order_1",
    254     defaults: ["bionic_testlib_defaults"],
    255     srcs: ["dlopen_testlib_relo_check_dt_needed_order_1.cpp"],
    256 }
    257 
    258 cc_test_library {
    259     name: "libtest_relo_check_dt_needed_order_2",
    260     defaults: ["bionic_testlib_defaults"],
    261     srcs: ["dlopen_testlib_relo_check_dt_needed_order_2.cpp"],
    262 }
    263 
    264 // -----------------------------------------------------------------------------
    265 // Library with dependency used by dlfcn tests
    266 // -----------------------------------------------------------------------------
    267 // In Android.mk to support dependency on libdlext_test
    268 
    269 // -----------------------------------------------------------------------------
    270 // Library used by ifunc tests
    271 // -----------------------------------------------------------------------------
    272 cc_test_library {
    273     name: "libtest_ifunc",
    274     defaults: ["bionic_testlib_defaults"],
    275     srcs: ["dlopen_testlib_ifunc.c"],
    276 
    277     // TODO(dimitry): clang does not support ifunc attribute
    278     clang: false,
    279     arch: {
    280         mips: {
    281             enabled: false,
    282         },
    283         mips64: {
    284             enabled: false,
    285         },
    286     },
    287 }
    288 
    289 // -----------------------------------------------------------------------------
    290 // Library used by atexit tests
    291 // -----------------------------------------------------------------------------
    292 
    293 cc_test_library {
    294     name: "libtest_atexit",
    295     defaults: ["bionic_testlib_defaults"],
    296     srcs: ["atexit_testlib.cpp"],
    297 }
    298 
    299 // -----------------------------------------------------------------------------
    300 // This library is used by dl_load test to check symbol preempting
    301 // by main executable
    302 // -----------------------------------------------------------------------------
    303 cc_test_library {
    304     name: "libdl_preempt_test_1",
    305     defaults: ["bionic_testlib_defaults"],
    306     srcs: ["dl_preempt_library_1.cpp"],
    307 }
    308 
    309 // -----------------------------------------------------------------------------
    310 // This library is used by dl_load test to check symbol preempting
    311 // by libdl_preempt_test_1.so
    312 // -----------------------------------------------------------------------------
    313 cc_test_library {
    314     name: "libdl_preempt_test_2",
    315     defaults: ["bionic_testlib_defaults"],
    316     srcs: ["dl_preempt_library_2.cpp"],
    317 }
    318 
    319 // -----------------------------------------------------------------------------
    320 // Library with DF_1_GLOBAL
    321 // -----------------------------------------------------------------------------
    322 cc_test_library {
    323     name: "libdl_test_df_1_global",
    324     defaults: ["bionic_testlib_defaults"],
    325     srcs: ["dl_df_1_global.cpp"],
    326     ldflags: ["-Wl,-z,global"],
    327 
    328     target: {
    329         host: {
    330             // TODO (dimitry): host ld.gold does not yet support -z global
    331             // remove this line once it is updated.
    332             ldflags: ["-fuse-ld=bfd"],
    333         },
    334     },
    335 }
    336 
    337 // -----------------------------------------------------------------------------
    338 // Library using symbol from libdl_test_df_1_global
    339 // -----------------------------------------------------------------------------
    340 cc_test_library {
    341     name: "libtest_dlsym_df_1_global",
    342     defaults: ["bionic_testlib_defaults"],
    343     srcs: ["dl_df_1_use_global.cpp"],
    344 }
    345 
    346 // -----------------------------------------------------------------------------
    347 // Library with weak function
    348 // -----------------------------------------------------------------------------
    349 cc_test_library {
    350     name: "libtest_dlsym_weak_func",
    351     defaults: ["bionic_testlib_defaults"],
    352     srcs: ["dlsym_weak_function.cpp"],
    353 }
    354 
    355 // -----------------------------------------------------------------------------
    356 // Library to check RTLD_LOCAL with dlsym in 'this'
    357 // -----------------------------------------------------------------------------
    358 cc_test_library {
    359     name: "libtest_dlsym_from_this",
    360     defaults: ["bionic_testlib_defaults"],
    361     srcs: ["dlsym_from_this_symbol.cpp"],
    362     shared_libs: ["libtest_dlsym_from_this_child"],
    363 
    364     target: {
    365         android: {
    366             shared_libs: ["libdl"],
    367         },
    368         host: {
    369             host_ldlibs: ["-ldl"],
    370         },
    371     },
    372 }
    373 
    374 // -----------------------------------------------------------------------------
    375 cc_test_library {
    376     name: "libtest_dlsym_from_this_child",
    377     defaults: ["bionic_testlib_defaults"],
    378     srcs: ["dlsym_from_this_functions.cpp"],
    379     shared_libs: ["libtest_dlsym_from_this_grandchild"],
    380     target: {
    381         android: {
    382             shared_libs: ["libdl"],
    383         },
    384         host: {
    385             host_ldlibs: ["-ldl"],
    386         },
    387     },
    388 }
    389 
    390 // -----------------------------------------------------------------------------
    391 cc_test_library {
    392     name: "libtest_dlsym_from_this_grandchild",
    393     defaults: ["bionic_testlib_defaults"],
    394     srcs: ["dlsym_from_this_symbol2.cpp"],
    395 }
    396 
    397 // -----------------------------------------------------------------------------
    398 // Empty library
    399 // -----------------------------------------------------------------------------
    400 cc_test_library {
    401     name: "libtest_empty",
    402     defaults: ["bionic_testlib_defaults"],
    403     srcs: ["empty.cpp"],
    404 }
    405 
    406 // -----------------------------------------------------------------------------
    407 // Library with weak undefined function
    408 // -----------------------------------------------------------------------------
    409 cc_test_library {
    410     name: "libtest_dlopen_weak_undefined_func",
    411     defaults: ["bionic_testlib_defaults"],
    412     srcs: ["dlopen_weak_undefined.cpp"],
    413 }
    414 
    415 // -----------------------------------------------------------------------------
    416 // Check that RTLD_NEXT of a libc symbol works in dlopened library
    417 // -----------------------------------------------------------------------------
    418 cc_test_library {
    419     name: "libtest_check_rtld_next_from_library",
    420     defaults: ["bionic_testlib_defaults"],
    421     srcs: ["check_rtld_next_from_library.cpp"],
    422 
    423     target: {
    424         android: {
    425             shared_libs: ["libdl"],
    426         },
    427         host: {
    428             host_ldlibs: ["-ldl"],
    429         },
    430     },
    431 }
    432 
    433 // -----------------------------------------------------------------------------
    434 // Library with constructor that calls dlopen() b/7941716
    435 // -----------------------------------------------------------------------------
    436 cc_test_library {
    437     name: "libtest_dlopen_from_ctor",
    438     defaults: ["bionic_testlib_defaults"],
    439     srcs: ["dlopen_testlib_dlopen_from_ctor.cpp"],
    440     target: {
    441         android: {
    442             shared_libs: ["libdl"],
    443         },
    444         host: {
    445             host_ldlibs: ["-ldl"],
    446         },
    447     },
    448 }
    449 
    450 // -----------------------------------------------------------------------------
    451 // Libraries used to check init/fini call order
    452 // -----------------------------------------------------------------------------
    453 cc_test_library {
    454     name: "libtest_init_fini_order_root",
    455     defaults: ["bionic_testlib_defaults"],
    456     srcs: ["dlopen_check_init_fini_root.cpp"],
    457     shared_libs: [
    458         "libtest_init_fini_order_child",
    459         "libtest_init_fini_order_grand_child",
    460     ],
    461 }
    462 
    463 cc_test_library {
    464     name: "libtest_init_fini_order_root2",
    465     defaults: ["bionic_testlib_defaults"],
    466     srcs: ["dlopen_check_init_fini_root.cpp"],
    467     shared_libs: [
    468         "libtest_init_fini_order_grand_child",
    469         "libtest_init_fini_order_child",
    470     ],
    471 }
    472 
    473 cc_test_library {
    474     name: "libtest_init_fini_order_child",
    475     defaults: ["bionic_testlib_defaults"],
    476     srcs: ["dlopen_check_init_fini_child.cpp"],
    477     shared_libs: ["libtest_init_fini_order_grand_child"],
    478 }
    479 
    480 cc_test_library {
    481     name: "libtest_init_fini_order_grand_child",
    482     defaults: ["bionic_testlib_defaults"],
    483     srcs: ["dlopen_check_init_fini_grand_child.cpp"],
    484 }
    485 
    486 // -----------------------------------------------------------------------------
    487 // Library that depends on the library with constructor that calls dlopen() b/7941716
    488 // -----------------------------------------------------------------------------
    489 cc_test_library {
    490     name: "libtest_dlopen_from_ctor_main",
    491     defaults: ["bionic_testlib_defaults"],
    492     srcs: ["empty.cpp"],
    493     shared_libs: ["libtest_dlopen_from_ctor"],
    494 }
    495 
    496 // -----------------------------------------------------------------------------
    497 // Tool to use to align the shared libraries in a zip file.
    498 // -----------------------------------------------------------------------------
    499 cc_binary_host {
    500     name: "bionic_tests_zipalign",
    501     srcs: ["bionic_tests_zipalign.cpp"],
    502     cflags: [
    503         "-Wall",
    504         "-Werror",
    505     ],
    506 
    507     static_libs: [
    508         "libziparchive",
    509         "liblog",
    510         "libbase",
    511         "libz",
    512         "libutils",
    513     ],
    514 }
    515 
    516 cc_test_library {
    517     name: "libcfi-test",
    518     defaults: ["bionic_testlib_defaults"],
    519     srcs: ["cfi_test_lib.cpp"],
    520     sanitize: {
    521         cfi: false,
    522     },
    523 }
    524 
    525 cc_test_library {
    526     name: "libcfi-test-bad",
    527     defaults: ["bionic_testlib_defaults"],
    528     srcs: ["cfi_test_bad_lib.cpp"],
    529     sanitize: {
    530         cfi: false,
    531     },
    532 }
    533 
    534 cc_test {
    535     name: "cfi_test_helper",
    536     host_supported: false,
    537     defaults: ["bionic_testlib_defaults"],
    538     srcs: ["cfi_test_helper.cpp"],
    539     ldflags: ["-rdynamic"],
    540 }
    541 
    542 cc_test {
    543     name: "cfi_test_helper2",
    544     host_supported: false,
    545     defaults: ["bionic_testlib_defaults"],
    546     srcs: ["cfi_test_helper2.cpp"],
    547     shared_libs: ["libcfi-test"],
    548     ldflags: ["-Wl,--rpath,${ORIGIN}/.."],
    549 }
    550 
    551 cc_test {
    552     name: "preinit_getauxval_test_helper",
    553     host_supported: false,
    554     defaults: ["bionic_testlib_defaults"],
    555     srcs: ["preinit_getauxval_test_helper.cpp"],
    556 }
    557 
    558 cc_test {
    559     name: "preinit_syscall_test_helper",
    560     host_supported: false,
    561     defaults: ["bionic_testlib_defaults"],
    562     srcs: ["preinit_syscall_test_helper.cpp"],
    563 }
    564