| // | 
 | // Copyright (C) 2012 The Android Open Source Project | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //      http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 | // | 
 |  | 
 | cc_defaults { | 
 |     name: "bionic_tests_defaults", | 
 |     host_supported: true, | 
 |     cpp_std: "experimental", | 
 |     target: { | 
 |         darwin: { | 
 |             enabled: false, | 
 |         }, | 
 |     }, | 
 |     cflags: [ | 
 |         "-fstack-protector-all", | 
 |         "-g", | 
 |         "-Wall", | 
 |         "-Wextra", | 
 |         "-Wunused", | 
 |         "-Werror", | 
 |         "-fno-builtin", | 
 |  | 
 |         // We want to test deprecated API too. | 
 |         "-Wno-deprecated-declarations", | 
 |  | 
 |         // For glibc. | 
 |         "-D__STDC_LIMIT_MACROS", | 
 |     ], | 
 |     header_libs: ["bionic_libc_platform_headers"], | 
 |     // Make the bionic tests implicitly test bionic's shadow call stack support. | 
 |     arch: { | 
 |         arm64: { | 
 |            cflags: ["-fsanitize=shadow-call-stack"], | 
 |         }, | 
 |     }, | 
 |     stl: "libc++", | 
 |     sanitize: { | 
 |         address: false, | 
 |     }, | 
 |     bootstrap: true, | 
 |  | 
 |     product_variables: { | 
 |         experimental_mte: { | 
 |             cflags: ["-DANDROID_EXPERIMENTAL_MTE"], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------------- | 
 | // All standard tests. | 
 | // ----------------------------------------------------------------------------- | 
 |  | 
 | // Test diagnostics emitted by clang. The library that results is useless; we | 
 | // just want to run '-Xclang -verify', which will fail if the diagnostics don't | 
 | // match up with what the source file says they should be. | 
 | cc_test_library { | 
 |     name: "clang_diagnostic_tests", | 
 |     cflags: [ | 
 |       "-Xclang", | 
 |       "-verify", | 
 |     ], | 
 |     srcs: ["sys_ioctl_diag_test.cpp"], | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libBionicStandardTests", | 
 |     defaults: ["bionic_tests_defaults"], | 
 |     srcs: [ | 
 |         "__aeabi_read_tp_test.cpp", | 
 |         "__cxa_atexit_test.cpp", | 
 |         "alloca_test.cpp", | 
 |         "android_get_device_api_level.cpp", | 
 |         "arpa_inet_test.cpp", | 
 |         "async_safe_test.cpp", | 
 |         "assert_test.cpp", | 
 |         "buffer_tests.cpp", | 
 |         "bug_26110743_test.cpp", | 
 |         "byteswap_test.cpp", | 
 |         "complex_test.cpp", | 
 |         "complex_force_long_double_test.cpp", | 
 |         "ctype_test.cpp", | 
 |         "dirent_test.cpp", | 
 |         "elf_test.cpp", | 
 |         "endian_test.cpp", | 
 |         "errno_test.cpp", | 
 |         "error_test.cpp", | 
 |         "eventfd_test.cpp", | 
 |         "fcntl_test.cpp", | 
 |         "fdsan_test.cpp", | 
 |         "fdtrack_test.cpp", | 
 |         "fenv_test.cpp", | 
 |         "_FILE_OFFSET_BITS_test.cpp", | 
 |         "float_test.cpp", | 
 |         "ftw_test.cpp", | 
 |         "getauxval_test.cpp", | 
 |         "getcwd_test.cpp", | 
 |         "glob_test.cpp", | 
 |         "grp_pwd_test.cpp", | 
 |         "grp_pwd_file_test.cpp", | 
 |         "iconv_test.cpp", | 
 |         "ifaddrs_test.cpp", | 
 |         "ifunc_test.cpp", | 
 |         "inttypes_test.cpp", | 
 |         "iso646_test.c", | 
 |         "langinfo_test.cpp", | 
 |         "leak_test.cpp", | 
 |         "libgen_basename_test.cpp", | 
 |         "libgen_test.cpp", | 
 |         "limits_test.cpp", | 
 |         "linux_swab_test.cpp", | 
 |         "locale_test.cpp", | 
 |         "malloc_iterate_test.cpp", | 
 |         "malloc_test.cpp", | 
 |         "math_test.cpp", | 
 |         "math_force_long_double_test.cpp", | 
 |         "membarrier_test.cpp", | 
 |         "mntent_test.cpp", | 
 |         "mte_test.cpp", | 
 |         "netdb_test.cpp", | 
 |         "net_if_test.cpp", | 
 |         "netinet_ether_test.cpp", | 
 |         "netinet_in_test.cpp", | 
 |         "netinet_ip_icmp_test.cpp", | 
 |         "netinet_udp_test.cpp", | 
 |         "nl_types_test.cpp", | 
 |         "poll_test.cpp", | 
 |         "pthread_test.cpp", | 
 |         "pty_test.cpp", | 
 |         "regex_test.cpp", | 
 |         "resolv_test.cpp", | 
 |         "sched_test.cpp", | 
 |         "scs_test.cpp", | 
 |         "scsi_sg_test.cpp", | 
 |         "search_test.cpp", | 
 |         "semaphore_test.cpp", | 
 |         "setjmp_test.cpp", | 
 |         "signal_test.cpp", | 
 |         "spawn_test.cpp", | 
 |         "stack_protector_test.cpp", | 
 |         "stack_protector_test_helper.cpp", | 
 |         "stack_unwinding_test.cpp", | 
 |         "stdalign_test.cpp", | 
 |         "stdarg_test.cpp", | 
 |         "stdatomic_test.cpp", | 
 |         "stdbool_test.c", | 
 |         "stdint_test.cpp", | 
 |         "stdio_nofortify_test.cpp", | 
 |         "stdio_test.cpp", | 
 |         "stdio_ext_test.cpp", | 
 |         "stdlib_test.cpp", | 
 |         "stdnoreturn_test.cpp", | 
 |         "string_nofortify_test.cpp", | 
 |         "string_test.cpp", | 
 |         "string_posix_strerror_r_test.cpp", | 
 |         "strings_nofortify_test.cpp", | 
 |         "strings_test.cpp", | 
 |         "sstream_test.cpp", | 
 |         "sys_epoll_test.cpp", | 
 |         "sys_mman_test.cpp", | 
 |         "sys_msg_test.cpp", | 
 |         "sys_param_test.cpp", | 
 |         "sys_personality_test.cpp", | 
 |         "sys_prctl_test.cpp", | 
 |         "sys_procfs_test.cpp", | 
 |         "sys_ptrace_test.cpp", | 
 |         "sys_quota_test.cpp", | 
 |         "sys_random_test.cpp", | 
 |         "sys_resource_test.cpp", | 
 |         "sys_select_test.cpp", | 
 |         "sys_sem_test.cpp", | 
 |         "sys_sendfile_test.cpp", | 
 |         "sys_shm_test.cpp", | 
 |         "sys_signalfd_test.cpp", | 
 |         "sys_socket_test.cpp", | 
 |         "sys_stat_test.cpp", | 
 |         "sys_statvfs_test.cpp", | 
 |         "sys_syscall_test.cpp", | 
 |         "sys_sysinfo_test.cpp", | 
 |         "sys_sysmacros_test.cpp", | 
 |         "sys_time_test.cpp", | 
 |         "sys_timex_test.cpp", | 
 |         "sys_ttydefaults_test.cpp", | 
 |         "sys_types_test.cpp", | 
 |         "sys_uio_test.cpp", | 
 |         "sys_un_test.cpp", | 
 |         "sys_vfs_test.cpp", | 
 |         "sys_xattr_test.cpp", | 
 |         "system_properties_test.cpp", | 
 |         "system_properties_test2.cpp", | 
 |         "termios_test.cpp", | 
 |         "tgmath_test.c", | 
 |         "threads_test.cpp", | 
 |         "time_test.cpp", | 
 |         "uchar_test.cpp", | 
 |         "unistd_nofortify_test.cpp", | 
 |         "unistd_test.cpp", | 
 |         "utmp_test.cpp", | 
 |         "wchar_test.cpp", | 
 |         "wctype_test.cpp", | 
 |     ], | 
 |  | 
 |     include_dirs: [ | 
 |         "bionic/libc", | 
 |     ], | 
 |  | 
 |     target: { | 
 |         bionic: { | 
 |             whole_static_libs: [ | 
 |                 "libasync_safe", | 
 |                 "libprocinfo", | 
 |                 "libsystemproperties", | 
 |             ], | 
 |             srcs: [ | 
 |                 "tagged_pointers_test.cpp", | 
 |             ], | 
 |         }, | 
 |     }, | 
 |  | 
 |     static_libs: [ | 
 |         "libtinyxml2", | 
 |         "liblog", | 
 |         "libbase", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 |  | 
 |     generated_headers: ["generated_android_ids"], | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libBionicElfTlsTests", | 
 |     defaults: ["bionic_tests_defaults"], | 
 |     srcs: [ | 
 |         "elftls_test.cpp", | 
 |     ], | 
 |     include_dirs: [ | 
 |         "bionic/libc", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 |     cflags: [ | 
 |         "-fno-emulated-tls", | 
 |     ], | 
 |     // With fuzzer builds, compiler instrumentation generates a reference to the | 
 |     // __sancov_lowest_stack variable, which (for now) is defined by the fuzzer | 
 |     // library as an emutls symbol. The -fno-emulated-tls flag above configures | 
 |     // the compiler to reference an ordinary ELF TLS __sancov_lowest_stack | 
 |     // symbol instead, which isn't defined. Disable the fuzzer for this test | 
 |     // until the platform is switched to ELF TLS. | 
 |     sanitize: { | 
 |         fuzzer: false, | 
 |     }, | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libBionicElfTlsLoaderTests", | 
 |     defaults: ["bionic_tests_defaults"], | 
 |     srcs: [ | 
 |         "elftls_dl_test.cpp", | 
 |     ], | 
 |     include_dirs: [ | 
 |         "bionic/libc", | 
 |     ], | 
 |     static_libs: [ | 
 |         "liblog", | 
 |         "libbase", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 |     cflags: [ | 
 |         "-fno-emulated-tls", | 
 |     ], | 
 |     // With fuzzer builds, compiler instrumentation generates a reference to the | 
 |     // __sancov_lowest_stack variable, which (for now) is defined by the fuzzer | 
 |     // library as an emutls symbol. The -fno-emulated-tls flag above configures | 
 |     // the compiler to reference an ordinary ELF TLS __sancov_lowest_stack | 
 |     // symbol instead, which isn't defined. Disable the fuzzer for this test | 
 |     // until the platform is switched to ELF TLS. | 
 |     sanitize: { | 
 |         fuzzer: false, | 
 |     }, | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libBionicFramePointerTests", | 
 |     defaults: ["bionic_tests_defaults"], | 
 |     srcs: [ | 
 |         "android_unsafe_frame_pointer_chase_test.cpp", | 
 |     ], | 
 |     include_dirs: [ | 
 |         "bionic/libc", | 
 |     ], | 
 |     cflags: [ | 
 |         "-fno-omit-frame-pointer", | 
 |     ], | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------------- | 
 | // Fortify tests. | 
 | // ----------------------------------------------------------------------------- | 
 |  | 
 | cc_defaults { | 
 |     name: "bionic_clang_fortify_tests_w_flags", | 
 |     cflags: [ | 
 |         "-Wno-builtin-memcpy-chk-size", | 
 |         "-Wno-format-security", | 
 |         "-Wno-format-zero-length", | 
 |         "-Wno-fortify-source", | 
 |         "-Wno-memset-transposed-args", | 
 |         "-Wno-strlcpy-strlcat-size", | 
 |         "-Wno-strncat-size", | 
 |     ], | 
 | } | 
 |  | 
 | cc_defaults { | 
 |     name: "bionic_fortify_tests_defaults", | 
 |     cflags: [ | 
 |         "-U_FORTIFY_SOURCE", | 
 |     ], | 
 |     srcs: ["fortify_test_main.cpp"], | 
 |     target: { | 
 |         host: { | 
 |             clang_cflags: ["-D__clang__"], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | // Ensures that FORTIFY checks aren't run when ASAN is on. | 
 | cc_test { | 
 |     name: "bionic-fortify-runtime-asan-test", | 
 |     defaults: [ | 
 |         "bionic_clang_fortify_tests_w_flags", | 
 |     ], | 
 |     cflags: [ | 
 |         "-Werror", | 
 |         "-D_FORTIFY_SOURCE=2", | 
 |     ], | 
 |     sanitize: { | 
 |         address: true, | 
 |     }, | 
 |     srcs: ["clang_fortify_asan.cpp"], | 
 | } | 
 |  | 
 | // Ensure we don't use FORTIFY'ed functions with the static analyzer/clang-tidy: | 
 | // it can confuse these tools pretty easily. If this builds successfully, then | 
 | // __clang_analyzer__ overrode FORTIFY. Otherwise, FORTIFY was incorrectly | 
 | // enabled. The library that results from building this is meant to be unused. | 
 | cc_test_library { | 
 |     name: "fortify_disabled_for_tidy", | 
 |     defaults: [ | 
 |         "bionic_clang_fortify_tests_w_flags", | 
 |     ], | 
 |     cflags: [ | 
 |         "-Werror", | 
 |         "-D_FORTIFY_SOURCE=2", | 
 |         "-D__clang_analyzer__", | 
 |     ], | 
 |     srcs: ["clang_fortify_tests.cpp"], | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libfortify1-tests-clang", | 
 |     defaults: [ | 
 |         "bionic_fortify_tests_defaults", | 
 |         "bionic_tests_defaults", | 
 |     ], | 
 |     cflags: [ | 
 |         "-D_FORTIFY_SOURCE=1", | 
 |         "-DTEST_NAME=Fortify1_clang", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libfortify2-tests-clang", | 
 |     defaults: [ | 
 |         "bionic_fortify_tests_defaults", | 
 |         "bionic_tests_defaults", | 
 |     ], | 
 |     cflags: [ | 
 |         "-D_FORTIFY_SOURCE=2", | 
 |         "-DTEST_NAME=Fortify2_clang", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 | } | 
 |  | 
 | cc_defaults { | 
 |     name: "bionic_new_fortify_tests_defaults", | 
 |     defaults: [ | 
 |         "bionic_clang_fortify_tests_w_flags", | 
 |     ], | 
 |     cflags: [ | 
 |         "-U_FORTIFY_SOURCE", | 
 |     ], | 
 |     srcs: ["clang_fortify_tests.cpp"], | 
 |     target: { | 
 |         host: { | 
 |             clang_cflags: ["-D__clang__"], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libfortify1-new-tests-clang", | 
 |     defaults: [ | 
 |         "bionic_new_fortify_tests_defaults", | 
 |         "bionic_tests_defaults", | 
 |     ], | 
 |     cflags: [ | 
 |         "-D_FORTIFY_SOURCE=1", | 
 |         "-DTEST_NAME=Fortify1_clang_new", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libfortify2-new-tests-clang", | 
 |     defaults: [ | 
 |         "bionic_new_fortify_tests_defaults", | 
 |         "bionic_tests_defaults", | 
 |     ], | 
 |     cflags: [ | 
 |         "-D_FORTIFY_SOURCE=2", | 
 |         "-DTEST_NAME=Fortify2_clang_new", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 | } | 
 |  | 
 |  | 
 | // ----------------------------------------------------------------------------- | 
 | // Library of all tests (excluding the dynamic linker tests). | 
 | // ----------------------------------------------------------------------------- | 
 | cc_test_library { | 
 |     name: "libBionicTests", | 
 |     defaults: ["bionic_tests_defaults"], | 
 |     whole_static_libs: [ | 
 |         "libBionicStandardTests", | 
 |         "libBionicElfTlsTests", | 
 |         "libBionicFramePointerTests", | 
 |         "libfortify1-tests-clang", | 
 |         "libfortify1-new-tests-clang", | 
 |         "libfortify2-tests-clang", | 
 |         "libfortify2-new-tests-clang", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 | } | 
 |  | 
 | cc_test_library { | 
 |     name: "libBionicLoaderTests", | 
 |     defaults: [ | 
 |         "bionic_tests_defaults", | 
 |         "llvm-defaults", | 
 |     ], | 
 |     srcs: [ | 
 |         "atexit_test.cpp", | 
 |         "dl_test.cpp", | 
 |         "dlfcn_symlink_support.cpp", | 
 |         "dlfcn_test.cpp", | 
 |         "link_test.cpp", | 
 |         "pthread_dlfcn_test.cpp", | 
 |     ], | 
 |     static_libs: [ | 
 |         "libbase", | 
 |     ], | 
 |     include_dirs: [ | 
 |         "bionic/libc", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 |     target: { | 
 |         android: { | 
 |             srcs: [ | 
 |                 "cfi_test.cpp", | 
 |                 "dlext_test.cpp", | 
 |                 "libdl_test.cpp", | 
 |             ], | 
 |             static_libs: [ | 
 |                 "libmeminfo", | 
 |                 "libprocinfo", | 
 |                 "libziparchive", | 
 |                 "libLLVMObject", | 
 |                 "libLLVMBitReader", | 
 |                 "libLLVMMC", | 
 |                 "libLLVMMCParser", | 
 |                 "libLLVMCore", | 
 |                 "libLLVMSupport", | 
 |             ], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------------- | 
 | // Library of bionic customized gtest main function, with normal gtest output format, | 
 | // which is needed by bionic cts test. | 
 | // ----------------------------------------------------------------------------- | 
 | cc_test_library { | 
 |     name: "libBionicCtsGtestMain", | 
 |     defaults: ["bionic_tests_defaults"], | 
 |     srcs: [ | 
 |         "gtest_globals_cts.cpp", | 
 |         "gtest_main.cpp", | 
 |     ], | 
 |     shared: { | 
 |         enabled: false, | 
 |     }, | 
 |     whole_static_libs: [ | 
 |         "libgtest_isolated", | 
 |     ], | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------------- | 
 | // Tests for the device using bionic's .so. Run with: | 
 | //   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests | 
 | //   adb shell /data/nativetest64/bionic-unit-tests/bionic-unit-tests | 
 | // ----------------------------------------------------------------------------- | 
 | cc_defaults { | 
 |     name: "bionic_unit_tests_defaults", | 
 |     host_supported: false, | 
 |     gtest: false, | 
 |  | 
 |     defaults: [ | 
 |         "bionic_tests_defaults", | 
 |     ], | 
 |  | 
 |     whole_static_libs: [ | 
 |         "libBionicTests", | 
 |         "libBionicLoaderTests", | 
 |         "libBionicElfTlsLoaderTests", | 
 |     ], | 
 |  | 
 |     static_libs: [ | 
 |         "libtinyxml2", | 
 |         "liblog", | 
 |         "libbase", | 
 |         "libgtest_isolated", | 
 |     ], | 
 |  | 
 |     srcs: [ | 
 |         // TODO: Include __cxa_thread_atexit_test.cpp to glibc tests once it is upgraded (glibc 2.18+) | 
 |         "__cxa_thread_atexit_test.cpp", | 
 |         "gtest_globals.cpp", | 
 |         "gtest_main.cpp", | 
 |         "thread_local_test.cpp", | 
 |     ], | 
 |  | 
 |     conlyflags: [ | 
 |         "-fexceptions", | 
 |         "-fnon-call-exceptions", | 
 |     ], | 
 |  | 
 |     ldflags: ["-Wl,--export-dynamic"], | 
 |  | 
 |     include_dirs: ["bionic/libc"], | 
 |  | 
 |     stl: "libc++_static", | 
 |  | 
 |     target: { | 
 |         android: { | 
 |             shared_libs: [ | 
 |                 "ld-android", | 
 |                 "libdl", | 
 |                 "libdl_android", | 
 |                 "libdl_preempt_test_1", | 
 |                 "libdl_preempt_test_2", | 
 |                 "libdl_test_df_1_global", | 
 |                 "libtest_elftls_shared_var", | 
 |                 "libtest_elftls_tprel", | 
 |             ], | 
 |             static_libs: [ | 
 |                 // The order of these libraries matters, do not shuffle them. | 
 |                 "libbase", | 
 |                 "libmeminfo", | 
 |                 "libziparchive", | 
 |                 "libz", | 
 |                 "libutils", | 
 |                 "libLLVMObject", | 
 |                 "libLLVMBitReader", | 
 |                 "libLLVMMC", | 
 |                 "libLLVMMCParser", | 
 |                 "libLLVMCore", | 
 |                 "libLLVMSupport", | 
 |             ], | 
 |             ldflags: [ | 
 |                 "-Wl,--rpath,${ORIGIN}/../bionic-loader-test-libs", | 
 |                 "-Wl,--enable-new-dtags", | 
 |             ], | 
 |         }, | 
 |     }, | 
 |  | 
 |     required: [ | 
 |         "cfi_test_helper", | 
 |         "cfi_test_helper2", | 
 |         "elftls_dlopen_ie_error_helper", | 
 |         "exec_linker_helper", | 
 |         "exec_linker_helper_lib", | 
 |         "libtest_dt_runpath_a", | 
 |         "libtest_dt_runpath_b", | 
 |         "libtest_dt_runpath_c", | 
 |         "libtest_dt_runpath_x", | 
 |         "libtest_dt_runpath_y", | 
 |         "libatest_simple_zip", | 
 |         "libcfi-test", | 
 |         "libcfi-test-bad", | 
 |         "libdlext_test_different_soname", | 
 |         "libdlext_test_fd", | 
 |         "libdlext_test_norelro", | 
 |         "libdlext_test_recursive", | 
 |         "libdlext_test_runpath_zip_zipaligned", | 
 |         "libdlext_test", | 
 |         "libdlext_test_zip", | 
 |         "libdlext_test_zip_zipaligned", | 
 |         "libdl_preempt_test_1", | 
 |         "libdl_preempt_test_2", | 
 |         "libdl_test_df_1_global", | 
 |         "libgnu-hash-table-library", | 
 |         "librelocations-ANDROID_RELR", | 
 |         "librelocations-ANDROID_REL", | 
 |         "librelocations-RELR", | 
 |         "librelocations-fat", | 
 |         "libsysv-hash-table-library", | 
 |         "libtestshared", | 
 |         "libtest_atexit", | 
 |         "libtest_check_order_dlsym_1_left", | 
 |         "libtest_check_order_dlsym_2_right", | 
 |         "libtest_check_order_dlsym_3_c", | 
 |         "libtest_check_order_dlsym_a", | 
 |         "libtest_check_order_dlsym_b", | 
 |         "libtest_check_order_dlsym_d", | 
 |         "libtest_check_order_dlsym", | 
 |         "libtest_check_order_reloc_root_1", | 
 |         "libtest_check_order_reloc_root_2", | 
 |         "libtest_check_order_reloc_root", | 
 |         "libtest_check_order_reloc_siblings_1", | 
 |         "libtest_check_order_reloc_siblings_2", | 
 |         "libtest_check_order_reloc_siblings_3", | 
 |         "libtest_check_order_reloc_siblings_a", | 
 |         "libtest_check_order_reloc_siblings_b", | 
 |         "libtest_check_order_reloc_siblings_c_1", | 
 |         "libtest_check_order_reloc_siblings_c_2", | 
 |         "libtest_check_order_reloc_siblings_c", | 
 |         "libtest_check_order_reloc_siblings_d", | 
 |         "libtest_check_order_reloc_siblings_e", | 
 |         "libtest_check_order_reloc_siblings_f", | 
 |         "libtest_check_order_reloc_siblings", | 
 |         "libtest_check_rtld_next_from_library", | 
 |         "libtest_dlopen_df_1_global", | 
 |         "libtest_dlopen_from_ctor_main", | 
 |         "libtest_dlopen_from_ctor", | 
 |         "libtest_dlopen_weak_undefined_func", | 
 |         "libtest_dlsym_df_1_global", | 
 |         "libtest_dlsym_from_this_child", | 
 |         "libtest_dlsym_from_this_grandchild", | 
 |         "libtest_dlsym_from_this", | 
 |         "libtest_dlsym_weak_func", | 
 |         "libtest_dt_runpath_d", | 
 |         "libtest_elftls_dynamic", | 
 |         "libtest_elftls_dynamic_filler_1", | 
 |         "libtest_elftls_dynamic_filler_2", | 
 |         "libtest_elftls_dynamic_filler_3", | 
 |         "libtest_elftls_shared_var", | 
 |         "libtest_elftls_shared_var_ie", | 
 |         "libtest_elftls_tprel", | 
 |         "libtest_empty", | 
 |         "libtest_ifunc_variable_impl", | 
 |         "libtest_ifunc_variable", | 
 |         "libtest_ifunc", | 
 |         "libtest_init_fini_order_child", | 
 |         "libtest_init_fini_order_grand_child", | 
 |         "libtest_init_fini_order_root2", | 
 |         "libtest_init_fini_order_root", | 
 |         "libtest_missing_symbol_child_public", | 
 |         "libtest_missing_symbol_child_private", | 
 |         "libtest_missing_symbol_root", | 
 |         "libtest_missing_symbol", | 
 |         "libtest_nodelete_1", | 
 |         "libtest_nodelete_2", | 
 |         "libtest_nodelete_dt_flags_1", | 
 |         "libtest_pthread_atfork", | 
 |         "libtest_relo_check_dt_needed_order_1", | 
 |         "libtest_relo_check_dt_needed_order_2", | 
 |         "libtest_relo_check_dt_needed_order", | 
 |         "libtest_simple", | 
 |         "libtest_two_parents_child", | 
 |         "libtest_two_parents_parent1", | 
 |         "libtest_two_parents_parent2", | 
 |         "libtest_versioned_lib", | 
 |         "libtest_versioned_libv1", | 
 |         "libtest_versioned_libv2", | 
 |         "libtest_versioned_otherlib_empty", | 
 |         "libtest_versioned_otherlib", | 
 |         "libtest_versioned_uselibv1", | 
 |         "libtest_versioned_uselibv2_other", | 
 |         "libtest_versioned_uselibv2", | 
 |         "libtest_versioned_uselibv3_other", | 
 |         "libtest_with_dependency_loop_a", | 
 |         "libtest_with_dependency_loop_b", | 
 |         "libtest_with_dependency_loop_c", | 
 |         "libtest_with_dependency_loop", | 
 |         "libtest_with_dependency", | 
 |         "libtest_indirect_thread_local_dtor", | 
 |         "libtest_invalid-empty_shdr_table.so", | 
 |         "libtest_invalid-rw_load_segment.so", | 
 |         "libtest_invalid-unaligned_shdr_offset.so", | 
 |         "libtest_invalid-zero_shdr_table_content.so", | 
 |         "libtest_invalid-zero_shdr_table_offset.so", | 
 |         "libtest_invalid-zero_shentsize.so", | 
 |         "libtest_invalid-zero_shstrndx.so", | 
 |         "libtest_invalid-textrels.so", | 
 |         "libtest_invalid-textrels2.so", | 
 |         "libtest_thread_local_dtor", | 
 |         "libtest_thread_local_dtor2", | 
 |         "preinit_getauxval_test_helper", | 
 |         "preinit_syscall_test_helper", | 
 |         "libnstest_private_external", | 
 |         "libnstest_dlopened", | 
 |         "libnstest_private", | 
 |         "libnstest_root_not_isolated", | 
 |         "libnstest_root", | 
 |         "libnstest_public", | 
 |         "libnstest_public_internal", | 
 |         "libnstest_ns_a_public1", | 
 |         "libnstest_ns_a_public1_internal", | 
 |         "libnstest_ns_b_public2", | 
 |         "libnstest_ns_b_public3", | 
 |         "ns_hidden_child_helper", | 
 |         "libns_hidden_child_global", | 
 |         "libns_hidden_child_internal", | 
 |         "libns_hidden_child_public", | 
 |         "libns_hidden_child_app", | 
 |         "libsegment_gap_inner", | 
 |         "libsegment_gap_outer", | 
 |         "ld_preload_test_helper", | 
 |         "ld_preload_test_helper_lib1", | 
 |         "ld_preload_test_helper_lib2", | 
 |         "ld_config_test_helper", | 
 |         "ld_config_test_helper_lib1", | 
 |         "ld_config_test_helper_lib2", | 
 |         "ld_config_test_helper_lib3", | 
 |     ], | 
 | } | 
 |  | 
 | cc_test { | 
 |     name: "bionic-unit-tests", | 
 |     defaults: [ | 
 |         "bionic_unit_tests_defaults", | 
 |     ], | 
 | } | 
 |  | 
 | cc_test { | 
 |     name: "bionic-unit-tests-scudo", | 
 |     defaults: [ | 
 |         "bionic_unit_tests_defaults", | 
 |     ], | 
 |  | 
 |     shared_libs: [ | 
 |         "libc_scudo", | 
 |     ], | 
 | } | 
 |  | 
 | cc_test { | 
 |     name: "bionic-stress-tests", | 
 |     defaults: [ | 
 |         "bionic_tests_defaults", | 
 |     ], | 
 |  | 
 |     // For now, these tests run forever, so do not use the isolation framework. | 
 |     isolated: false, | 
 |  | 
 |     srcs: [ | 
 |         "malloc_stress_test.cpp", | 
 |     ], | 
 |  | 
 |     shared_libs: [ | 
 |         "libbase", | 
 |     ], | 
 |  | 
 |     target: { | 
 |         android: { | 
 |             static_libs: [ | 
 |                 "libmeminfo", | 
 |                 "libprocinfo", | 
 |             ], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------------- | 
 | // Tests for the device linked against bionic's static library. Run with: | 
 | //   adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static | 
 | //   adb shell /data/nativetest64/bionic-unit-tests-static/bionic-unit-tests-static | 
 | // ----------------------------------------------------------------------------- | 
 | cc_test { | 
 |     name: "bionic-unit-tests-static", | 
 |     gtest: false, | 
 |     defaults: ["bionic_tests_defaults"], | 
 |     host_supported: false, | 
 |  | 
 |     srcs: [ | 
 |         "gtest_preinit_debuggerd.cpp", | 
 |         "gtest_globals.cpp", | 
 |         "gtest_main.cpp", | 
 |  | 
 |         // The Bionic allocator has its own C++ API. It isn't packaged into its | 
 |         // own library, so it can only be tested when it's part of libc.a. | 
 |         "bionic_allocator_test.cpp", | 
 |     ], | 
 |     include_dirs: [ | 
 |         "bionic/libc", | 
 |     ], | 
 |     whole_static_libs: [ | 
 |         "libBionicTests", | 
 |     ], | 
 |  | 
 |     static_libs: [ | 
 |         "libm", | 
 |         "libc", | 
 |         "libdl", | 
 |         "libtinyxml2", | 
 |         "liblog", | 
 |         "libbase", | 
 |         "libdebuggerd_handler", | 
 |         "libgtest_isolated", | 
 |         "libtest_elftls_shared_var", | 
 |         "libtest_elftls_tprel", | 
 |     ], | 
 |  | 
 |     static_executable: true, | 
 |     stl: "libc++_static", | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------------- | 
 | // Tests to run on the host and linked against glibc. Run with: | 
 | //   cd bionic/tests; mm bionic-unit-tests-glibc-run | 
 | // ----------------------------------------------------------------------------- | 
 |  | 
 | cc_test_host { | 
 |     name: "bionic-unit-tests-glibc", | 
 |     gtest: false, | 
 |     defaults: ["bionic_tests_defaults"], | 
 |  | 
 |     srcs: [ | 
 |         "atexit_test.cpp", | 
 |         "dlfcn_symlink_support.cpp", | 
 |         "dlfcn_test.cpp", | 
 |         "dl_test.cpp", | 
 |         "gtest_globals.cpp", | 
 |         "gtest_main.cpp", | 
 |         "pthread_dlfcn_test.cpp", | 
 |     ], | 
 |  | 
 |     shared_libs: [ | 
 |         "libdl_preempt_test_1", | 
 |         "libdl_preempt_test_2", | 
 |         "libdl_test_df_1_global", | 
 |         "libtest_elftls_shared_var", | 
 |         "libtest_elftls_tprel", | 
 |     ], | 
 |  | 
 |     whole_static_libs: [ | 
 |         "libBionicStandardTests", | 
 |         "libBionicElfTlsTests", | 
 |         "libBionicElfTlsLoaderTests", | 
 |         "libfortify1-tests-clang", | 
 |         "libfortify2-tests-clang", | 
 |     ], | 
 |  | 
 |     static_libs: [ | 
 |         "libbase", | 
 |         "liblog", | 
 |         "libcutils", | 
 |         "libgtest_isolated", | 
 |     ], | 
 |  | 
 |     host_ldlibs: [ | 
 |         "-lresolv", | 
 |         "-lutil", | 
 |     ], | 
 |  | 
 |     include_dirs: [ | 
 |         "bionic/libc", | 
 |     ], | 
 |  | 
 |     ldflags: [ | 
 |         "-Wl,--rpath,${ORIGIN}/../bionic-loader-test-libs", | 
 |         "-Wl,--export-dynamic", | 
 |     ], | 
 |  | 
 |     sanitize: { | 
 |         never: false, | 
 |     }, | 
 |  | 
 |     target: { | 
 |         linux_bionic: { | 
 |             enabled: false, | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | subdirs = ["*"] |