9634c36565
Adds persistent sysprops for test infra usage, and adds the tests for the sysprops. The test does some fancy flocking in order to restore any existing GWP-ASan sysprop usage in the test cleanup. Bug: 236738714 Test: atest bionic-unit-tests Change-Id: I8956296d39c98ce8c7dd0a703b240530d8ad48db
1243 lines
34 KiB
Text
1243 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",
|
|
"gwp_asan_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",
|
|
"android_set_abort_message_test.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",
|
|
"utils.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: {
|
|
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: {
|
|
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",
|
|
"gwp_asan_test.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 = ["*"]
|