platform_bionic/tests/Android.bp
Ryan Prichard 8ea6af53e2 Always process TLS relocs using general code path
This is important for enabling the error about unsupported TLS
relocations to local symbols. The fast path tends to skip this error,
because it fails during lookup_symbol(). Add a test for this error.

I didn't see a performance regression in the linker_relocation
benchmark.

Bug: http://b/226978634
Test: m bionic-unit-tests
Change-Id: Ibef9bde2973cf8c2d420ecc9e8fe2c69a5097ce2
2022-03-25 15:51:11 -07:00

1241 lines
34 KiB
Text

//
// 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.
//
package {
default_applicable_licenses: ["bionic_tests_license"],
}
license {
name: "bionic_tests_license",
visibility: [":__subpackages__"],
license_kinds: [
"SPDX-license-identifier-Apache-2.0",
"SPDX-license-identifier-BSD",
],
license_text: [
"NOTICE",
],
}
cc_defaults {
name: "bionic_tests_defaults",
host_supported: true,
target: {
darwin: {
enabled: false,
},
android: {
header_libs: ["bionic_libc_platform_headers"],
},
linux_bionic: {
header_libs: ["bionic_libc_platform_headers"],
},
},
cflags: [
"-fstack-protector-all",
"-g",
"-Wall",
"-Wextra",
"-Wunused",
"-Werror",
"-fno-builtin",
// We want to test deprecated API too.
"-Wno-deprecated-declarations",
// Needed to test pthread_internal_t layout.
"-Wno-invalid-offsetof",
// For glibc.
"-D__STDC_LIMIT_MACROS",
],
header_libs: ["libcutils_headers"],
// Ensure that the tests exercise shadow call stack support and
// the hint space PAC/BTI instructions.
arch: {
arm64: {
cflags: [
"-fsanitize=shadow-call-stack",
// Disable this option for now: see b/151372823
//"-mbranch-protection=standard",
],
},
},
stl: "libc++",
sanitize: {
address: false,
},
// Use the bootstrap version of bionic because some tests call private APIs
// that aren't exposed by the APEX bionic stubs.
bootstrap: true,
}
// -----------------------------------------------------------------------------
// Prebuilt shared libraries for use in tests.
// -----------------------------------------------------------------------------
cc_prebuilt_test_library_shared {
name: "libtest_invalid-rw_load_segment",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-rw_load_segment.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-rw_load_segment.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-rw_load_segment.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-rw_load_segment.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-unaligned_shdr_offset",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-unaligned_shdr_offset.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-unaligned_shdr_offset.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-unaligned_shdr_offset.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-unaligned_shdr_offset.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-zero_shentsize",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-zero_shentsize.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shentsize.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shentsize.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-zero_shentsize.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-zero_shstrndx",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-zero_shstrndx.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shstrndx.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shstrndx.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-zero_shstrndx.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-empty_shdr_table",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-empty_shdr_table.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-empty_shdr_table.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-empty_shdr_table.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-empty_shdr_table.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-zero_shdr_table_offset",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-zero_shdr_table_offset.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_offset.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_offset.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-zero_shdr_table_offset.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-zero_shdr_table_content",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-zero_shdr_table_content.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_content.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_content.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-zero_shdr_table_content.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-textrels",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-textrels.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-textrels.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-textrels2",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-textrels2.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels2.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels2.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-textrels2.so"],
},
},
}
cc_prebuilt_test_library_shared {
name: "libtest_invalid-local-tls",
strip: {
none: true,
},
check_elf_files: false,
relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files",
arch: {
arm: {
srcs: ["prebuilt-elf-files/arm/libtest_invalid-local-tls.so"],
},
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-local-tls.so"],
},
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-local-tls.so"],
},
x86_64: {
srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-local-tls.so"],
},
},
}
// -----------------------------------------------------------------------------
// 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",
"__cxa_demangle_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",
"fnmatch_test.cpp",
"ftw_test.cpp",
"getauxval_test.cpp",
"getcwd_test.cpp",
"glob_test.cpp",
"grp_pwd_test.cpp",
"grp_pwd_file_test.cpp",
"heap_tagging_level_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",
"pidfd_test.cpp",
"poll_test.cpp",
"prio_ctor_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",
"string_posix_strerror_r_wrapper.cpp",
"strings_nofortify_test.cpp",
"strings_test.cpp",
"struct_layout_test.cpp",
"sstream_test.cpp",
"sys_auxv_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_wait_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",
],
},
musl: {
exclude_srcs: [
// musl doesn't have error.h
"error_test.cpp",
// musl doesn't define noreturn for C++
"stdnoreturn_test.cpp",
// unsupported relocation type 37
"ifunc_test.cpp",
],
},
},
static_libs: [
"libtinyxml2",
"liblog",
"libbase",
],
shared: {
enabled: false,
},
generated_headers: ["generated_android_ids"],
// Bug: http://b/218788252 IR verifier too strict for ifunc resolver that
// accept parameters.
lto: {
never: true,
},
}
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",
],
static_libs: [
"libbase",
],
}
cc_defaults {
name: "bionic_fortify_tests_defaults",
cflags: [
"-U_FORTIFY_SOURCE",
],
srcs: ["fortify_test_main.cpp"],
static_libs: [
"libbase",
],
tidy: false,
target: {
host: {
clang_cflags: ["-D__clang__"],
},
musl: {
// Musl doesn't have fortify
enabled: false,
},
},
}
// 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"],
tidy: false,
}
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"],
tidy: false,
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"],
host_supported: false,
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",
],
srcs: [
"atexit_test.cpp",
"dl_test.cpp",
"dlfcn_symlink_support.cpp",
"dlfcn_test.cpp",
"execinfo_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",
],
},
},
}
// -----------------------------------------------------------------------------
// 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.cpp",
"gtest_main.cpp",
],
shared: {
enabled: false,
},
whole_static_libs: [
"libbase",
"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.
"libmeminfo",
"libziparchive",
"libz",
"libutils",
],
ldflags: [
"-Wl,--rpath,${ORIGIN}/bionic-loader-test-libs",
"-Wl,--enable-new-dtags",
],
},
},
data_bins: [
"cfi_test_helper",
"cfi_test_helper2",
"elftls_dlopen_ie_error_helper",
"exec_linker_helper",
"exec_linker_helper_lib",
"heap_tagging_async_helper",
"heap_tagging_disabled_helper",
"heap_tagging_static_async_helper",
"heap_tagging_static_disabled_helper",
"heap_tagging_static_sync_helper",
"heap_tagging_sync_helper",
"ld_config_test_helper",
"ld_config_test_helper_lib1",
"ld_config_test_helper_lib2",
"ld_config_test_helper_lib3",
"ld_preload_test_helper",
"ld_preload_test_helper_lib1",
"ld_preload_test_helper_lib2",
"ns_hidden_child_helper",
"preinit_getauxval_test_helper",
"preinit_syscall_test_helper",
"thread_exit_cb_helper",
"tls_properties_helper",
],
data_libs: [
"libatest_simple_zip",
"libcfi-test",
"libcfi-test-bad",
"libdl_preempt_test_1",
"libdl_preempt_test_2",
"libdl_test_df_1_global",
"libdlext_test",
"libdlext_test_different_soname",
"libdlext_test_fd",
"libdlext_test_norelro",
"libdlext_test_recursive",
"libdlext_test_zip",
"libgnu-hash-table-library",
"libns_hidden_child_app",
"libns_hidden_child_global",
"libns_hidden_child_internal",
"libns_hidden_child_public",
"libnstest_dlopened",
"libnstest_ns_a_public1",
"libnstest_ns_a_public1_internal",
"libnstest_ns_b_public2",
"libnstest_ns_b_public3",
"libnstest_private",
"libnstest_private_external",
"libnstest_public",
"libnstest_public_internal",
"libnstest_root",
"libnstest_root_not_isolated",
"librelocations-ANDROID_REL",
"librelocations-ANDROID_RELR",
"librelocations-RELR",
"librelocations-fat",
"libsegment_gap_inner",
"libsegment_gap_outer",
"libsysv-hash-table-library",
"libtest_atexit",
"libtest_check_order_dlsym",
"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_reloc_root",
"libtest_check_order_reloc_root_1",
"libtest_check_order_reloc_root_2",
"libtest_check_order_reloc_siblings",
"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",
"libtest_check_order_reloc_siblings_c_1",
"libtest_check_order_reloc_siblings_c_2",
"libtest_check_order_reloc_siblings_d",
"libtest_check_order_reloc_siblings_e",
"libtest_check_order_reloc_siblings_f",
"libtest_check_rtld_next_from_library",
"libtest_dlopen_df_1_global",
"libtest_dlopen_from_ctor",
"libtest_dlopen_from_ctor_main",
"libtest_dlopen_weak_undefined_func",
"libtest_dlsym_df_1_global",
"libtest_dlsym_from_this",
"libtest_dlsym_from_this_child",
"libtest_dlsym_from_this_grandchild",
"libtest_dlsym_weak_func",
"libtest_dt_runpath_a",
"libtest_dt_runpath_b",
"libtest_dt_runpath_c",
"libtest_dt_runpath_d",
"libtest_dt_runpath_x",
"libtest_dt_runpath_y",
"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",
"libtest_ifunc_variable",
"libtest_ifunc_variable_impl",
"libtest_indirect_thread_local_dtor",
"libtest_init_fini_order_child",
"libtest_init_fini_order_grand_child",
"libtest_init_fini_order_root",
"libtest_init_fini_order_root2",
"libtest_invalid-empty_shdr_table",
"libtest_invalid-local-tls",
"libtest_invalid-rw_load_segment",
"libtest_invalid-textrels",
"libtest_invalid-textrels2",
"libtest_invalid-unaligned_shdr_offset",
"libtest_invalid-zero_shdr_table_content",
"libtest_invalid-zero_shdr_table_offset",
"libtest_invalid-zero_shentsize",
"libtest_invalid-zero_shstrndx",
"libtest_missing_symbol",
"libtest_missing_symbol_child_private",
"libtest_missing_symbol_child_public",
"libtest_missing_symbol_root",
"libtest_nodelete_1",
"libtest_nodelete_2",
"libtest_nodelete_dt_flags_1",
"libtest_pthread_atfork",
"libtest_relo_check_dt_needed_order",
"libtest_relo_check_dt_needed_order_1",
"libtest_relo_check_dt_needed_order_2",
"libtest_simple",
"libtest_thread_local_dtor",
"libtest_thread_local_dtor2",
"libtest_two_parents_child",
"libtest_two_parents_parent1",
"libtest_two_parents_parent2",
"libtest_versioned_lib",
"libtest_versioned_libv1",
"libtest_versioned_libv2",
"libtest_versioned_otherlib",
"libtest_versioned_otherlib_empty",
"libtest_versioned_uselibv1",
"libtest_versioned_uselibv2",
"libtest_versioned_uselibv2_other",
"libtest_versioned_uselibv3_other",
"libtest_with_dependency",
"libtest_with_dependency_loop",
"libtest_with_dependency_loop_a",
"libtest_with_dependency_loop_b",
"libtest_with_dependency_loop_c",
"libtestshared",
],
}
cc_test {
name: "bionic-unit-tests",
defaults: [
"bionic_unit_tests_defaults",
],
test_suites: ["device-tests"],
data: [
":libdlext_test_runpath_zip_zipaligned",
":libdlext_test_zip_zipaligned",
],
}
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,
// Running forever, do not consider unit test.
test_options: {
unit_test: 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"],
test_suites: ["device-tests"],
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",
// Clang cannot build ifunc with LTO.
// http://b/203737712
lto: {
never: true,
},
data_bins: [
"heap_tagging_async_helper",
"heap_tagging_disabled_helper",
"heap_tagging_static_async_helper",
"heap_tagging_static_disabled_helper",
"heap_tagging_static_sync_helper",
"heap_tagging_sync_helper",
],
}
// -----------------------------------------------------------------------------
// 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",
"execinfo_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,
},
musl: {
exclude_static_libs: [
// Musl doesn't have fortify
"libfortify1-tests-clang",
"libfortify2-tests-clang",
],
},
},
}
subdirs = ["*"]