|  | // | 
|  | // 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, | 
|  | 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", | 
|  | ], | 
|  | stl: "libc++", | 
|  | sanitize: { | 
|  | never: true, | 
|  | }, | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------------- | 
|  | // All standard tests. | 
|  | // ----------------------------------------------------------------------------- | 
|  |  | 
|  | cc_test_library { | 
|  | name: "libBionicStandardTests", | 
|  | defaults: ["bionic_tests_defaults"], | 
|  | srcs: [ | 
|  | "arpa_inet_test.cpp", | 
|  | "assert_test.cpp", | 
|  | "buffer_tests.cpp", | 
|  | "bug_26110743_test.cpp", | 
|  | "complex_test.cpp", | 
|  | "ctype_test.cpp", | 
|  | "dirent_test.cpp", | 
|  | "error_test.cpp", | 
|  | "eventfd_test.cpp", | 
|  | "fcntl_test.cpp", | 
|  | "fenv_test.cpp", | 
|  | "ftw_test.cpp", | 
|  | "getauxval_test.cpp", | 
|  | "getcwd_test.cpp", | 
|  | "grp_pwd_test.cpp", | 
|  | "ifaddrs_test.cpp", | 
|  | "inttypes_test.cpp", | 
|  | "libc_logging_test.cpp", | 
|  | "libgen_basename_test.cpp", | 
|  | "libgen_test.cpp", | 
|  | "locale_test.cpp", | 
|  | "malloc_test.cpp", | 
|  | "math_test.cpp", | 
|  | "mntent_test.cpp", | 
|  | "netdb_test.cpp", | 
|  | "net_if_test.cpp", | 
|  | "netinet_ether_test.cpp", | 
|  | "netinet_in_test.cpp", | 
|  | "netinet_udp_test.cpp", | 
|  | "nl_types_test.cpp", | 
|  | "pthread_test.cpp", | 
|  | "pty_test.cpp", | 
|  | "regex_test.cpp", | 
|  | "resolv_test.cpp", | 
|  | "sched_test.cpp", | 
|  | "search_test.cpp", | 
|  | "semaphore_test.cpp", | 
|  | "setjmp_test.cpp", | 
|  | "signal_test.cpp", | 
|  | "stack_protector_test.cpp", | 
|  | "stack_protector_test_helper.cpp", | 
|  | "stack_unwinding_test.cpp", | 
|  | "stdatomic_test.cpp", | 
|  | "stdint_test.cpp", | 
|  | "stdio_nofortify_test.cpp", | 
|  | "stdio_test.cpp", | 
|  | "stdio_ext_test.cpp", | 
|  | "stdlib_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_personality_test.cpp", | 
|  | "sys_prctl_test.cpp", | 
|  | "sys_procfs_test.cpp", | 
|  | "sys_ptrace_test.cpp", | 
|  | "sys_quota_test.cpp", | 
|  | "sys_resource_test.cpp", | 
|  | "sys_select_test.cpp", | 
|  | "sys_sem_test.cpp", | 
|  | "sys_sendfile_test.cpp", | 
|  | "sys_shm_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_types_test.cpp", | 
|  | "sys_uio_test.cpp", | 
|  | "sys_vfs_test.cpp", | 
|  | "sys_xattr_test.cpp", | 
|  | "system_properties_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", | 
|  | "external/tinyxml2", | 
|  | ], | 
|  |  | 
|  | static_libs: [ | 
|  | "libtinyxml2", | 
|  | "liblog", | 
|  | "libbase", | 
|  | ], | 
|  | host_ldlibs: ["-lrt"], | 
|  | shared: { | 
|  | enabled: false, | 
|  | }, | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------------- | 
|  | // Fortify tests. | 
|  | // ----------------------------------------------------------------------------- | 
|  |  | 
|  | cc_defaults { | 
|  | name: "bionic_fortify_tests_defaults", | 
|  | cflags: [ | 
|  | "-Wno-error", | 
|  | "-U_FORTIFY_SOURCE", | 
|  | ], | 
|  | srcs: ["fortify_test_main.cpp"], | 
|  | target: { | 
|  | host: { | 
|  | clang_cflags: ["-D__clang__"], | 
|  | }, | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_test_library { | 
|  | name: "libfortify1-tests-gcc", | 
|  | defaults: ["bionic_fortify_tests_defaults", "bionic_tests_defaults"], | 
|  | clang: false, | 
|  | cflags: [ | 
|  | "-D_FORTIFY_SOURCE=1", | 
|  | "-DTEST_NAME=Fortify1_gcc" | 
|  | ], | 
|  | shared: { | 
|  | enabled: false, | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_test_library { | 
|  | name: "libfortify2-tests-gcc", | 
|  | defaults: ["bionic_fortify_tests_defaults", "bionic_tests_defaults"], | 
|  | clang: false, | 
|  | cflags: [ | 
|  | "-D_FORTIFY_SOURCE=2", | 
|  | "-DTEST_NAME=Fortify2_gcc" | 
|  | ], | 
|  | shared: { | 
|  | enabled: false, | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_test_library { | 
|  | name: "libfortify1-tests-clang", | 
|  | defaults: ["bionic_fortify_tests_defaults", "bionic_tests_defaults"], | 
|  | clang: true, | 
|  | 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"], | 
|  | clang: true, | 
|  | cflags: [ | 
|  | "-D_FORTIFY_SOURCE=2", | 
|  | "-DTEST_NAME=Fortify2_clang" | 
|  | ], | 
|  | 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", | 
|  | "libfortify1-tests-gcc", | 
|  | "libfortify2-tests-gcc", | 
|  | "libfortify1-tests-clang", | 
|  | "libfortify2-tests-clang", | 
|  | ], | 
|  | shared: { | 
|  | enabled: false, | 
|  | }, | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------------- | 
|  | // Library of bionic customized gtest main function, with simplified output format. | 
|  | // ----------------------------------------------------------------------------- | 
|  | cc_test_library { | 
|  | name: "libBionicGtestMain", | 
|  | defaults: ["bionic_tests_defaults"], | 
|  | srcs: [ | 
|  | "gtest_main.cpp", | 
|  | "gtest_globals.cpp", | 
|  | ], | 
|  | static_libs: [ | 
|  | "libbase", | 
|  | ], | 
|  | include_dirs: [ | 
|  | "bionic/libc", | 
|  | ], | 
|  | target: { | 
|  | darwin: { | 
|  | enabled: true, | 
|  | }, | 
|  | }, | 
|  | 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", | 
|  | "pthread_dlfcn_test.cpp", | 
|  | ], | 
|  | static_libs: [ | 
|  | "libbase", | 
|  | ], | 
|  | include_dirs: [ | 
|  | "bionic/libc", | 
|  | ], | 
|  | shared: { | 
|  | enabled: false, | 
|  | }, | 
|  | target: { | 
|  | android: { | 
|  | srcs: [ | 
|  | "dlext_test.cpp", | 
|  | "libdl_test.cpp", | 
|  | ], | 
|  | static_libs: [ | 
|  | "libpagemap", | 
|  | ], | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------------- | 
|  | // 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_main.cpp", | 
|  | "gtest_globals_cts.cpp", | 
|  | ], | 
|  | cppflags: ["-DUSING_GTEST_OUTPUT_FORMAT"], | 
|  | shared: { | 
|  | enabled: false, | 
|  | }, | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------------- | 
|  | // Tests for the device using bionic's .so. Run with: | 
|  | //   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests32 | 
|  | //   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests64 | 
|  | //   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests-gcc32 | 
|  | //   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests-gcc64 | 
|  | // ----------------------------------------------------------------------------- | 
|  | cc_defaults { | 
|  | name: "bionic_unit_tests_defaults", | 
|  | host_supported: false, | 
|  |  | 
|  | whole_static_libs: [ | 
|  | "libBionicTests", | 
|  | "libBionicLoaderTests", | 
|  | "libBionicGtestMain", | 
|  | ], | 
|  |  | 
|  | static_libs: [ | 
|  | "libtinyxml2", | 
|  | "liblog", | 
|  | "libbase", | 
|  | ], | 
|  |  | 
|  | srcs: [ | 
|  | // TODO: Include __cxa_thread_atexit_test.cpp to glibc tests once it is upgraded (glibc 2.18+) | 
|  | "__cxa_thread_atexit_test.cpp", | 
|  | "thread_local_test.cpp", | 
|  | ], | 
|  |  | 
|  | conlyflags: [ | 
|  | "-fexceptions", | 
|  | "-fnon-call-exceptions", | 
|  | ], | 
|  |  | 
|  | ldflags: ["-Wl,--export-dynamic"], | 
|  |  | 
|  | include_dirs: ["bionic/libc"], | 
|  |  | 
|  | target: { | 
|  | android: { | 
|  | shared_libs: [ | 
|  | "libdl", | 
|  | "libdl_preempt_test_1", | 
|  | "libdl_preempt_test_2", | 
|  | "libdl_test_df_1_global", | 
|  | ], | 
|  | static_libs: [ | 
|  | // The order of these libraries matters, do not shuffle them. | 
|  | "libbase", | 
|  | "libpagemap", | 
|  | "libziparchive", | 
|  | "libz", | 
|  | "libutils", | 
|  | ], | 
|  | ldflags: [ | 
|  | "-Wl,--rpath,${ORIGIN}/../bionic-loader-test-libs", | 
|  | "-Wl,--enable-new-dtags", | 
|  | ], | 
|  | }, | 
|  | } | 
|  | } | 
|  |  | 
|  | cc_test { | 
|  | name: "bionic-unit-tests", | 
|  | defaults: ["bionic_unit_tests_defaults", "bionic_tests_defaults"], | 
|  | clang: true, | 
|  | } | 
|  |  | 
|  | cc_test { | 
|  | name: "bionic-unit-tests-gcc", | 
|  | defaults: ["bionic_unit_tests_defaults", "bionic_tests_defaults"], | 
|  | clang: false, | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------------- | 
|  | // Tests for the device linked against bionic's static library. Run with: | 
|  | //   adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static32 | 
|  | //   adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static64 | 
|  | // ----------------------------------------------------------------------------- | 
|  | cc_test { | 
|  | name: "bionic-unit-tests-static", | 
|  | defaults: ["bionic_tests_defaults"], | 
|  | host_supported: false, | 
|  |  | 
|  | whole_static_libs: [ | 
|  | "libBionicTests", | 
|  | "libBionicGtestMain", | 
|  | ], | 
|  |  | 
|  | static_libs: [ | 
|  | "libm", | 
|  | "libc", | 
|  | "libc++_static", | 
|  | "libdl", | 
|  | "libtinyxml2", | 
|  | "liblog", | 
|  | "libbase", | 
|  | ], | 
|  |  | 
|  | static_executable: true, | 
|  | stl: "libc++_static", | 
|  |  | 
|  | // libc and libc++ both define std::nothrow. libc's is a private symbol, but this | 
|  | // still causes issues when linking libc.a and libc++.a, since private isn't | 
|  | // effective until it has been linked. To fix this, just allow multiple symbol | 
|  | // definitions for the static tests. | 
|  | ldflags: ["-Wl,--allow-multiple-definition"], | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------------- | 
|  | // 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", | 
|  | defaults: ["bionic_tests_defaults"], | 
|  |  | 
|  | srcs: [ | 
|  | "atexit_test.cpp", | 
|  | "dlfcn_symlink_support.cpp", | 
|  | "dlfcn_test.cpp", | 
|  | "dl_test.cpp", | 
|  | "pthread_dlfcn_test.cpp", | 
|  | ], | 
|  |  | 
|  | shared_libs: [ | 
|  | "libdl_preempt_test_1", | 
|  | "libdl_preempt_test_2", | 
|  |  | 
|  | "libdl_test_df_1_global", | 
|  | ], | 
|  |  | 
|  | whole_static_libs: [ | 
|  | "libBionicStandardTests", | 
|  | "libBionicGtestMain", | 
|  | "libfortify1-tests-gcc", | 
|  | "libfortify2-tests-gcc", | 
|  | "libfortify1-tests-clang", | 
|  | "libfortify2-tests-clang", | 
|  | ], | 
|  |  | 
|  | static_libs: [ | 
|  | "libbase", | 
|  | "liblog", | 
|  | "libcutils", | 
|  | ], | 
|  |  | 
|  | host_ldlibs: [ | 
|  | "-lresolv", | 
|  | "-lrt", | 
|  | "-ldl", | 
|  | "-lutil", | 
|  | ], | 
|  |  | 
|  | include_dirs: ["bionic/libc"], | 
|  |  | 
|  | ldflags: ["-Wl,--export-dynamic"], | 
|  |  | 
|  | sanitize: { | 
|  | never: false, | 
|  | }, | 
|  | } | 
|  |  | 
|  | subdirs = ["libs"] |