1// 2// Copyright (C) 2012 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17package { 18 default_team: "trendy_team_native_tools_libraries", 19 default_applicable_licenses: ["bionic_tests_license"], 20} 21 22license { 23 name: "bionic_tests_license", 24 visibility: [":__subpackages__"], 25 license_kinds: [ 26 "SPDX-license-identifier-Apache-2.0", 27 "SPDX-license-identifier-BSD", 28 ], 29 license_text: [ 30 "NOTICE", 31 ], 32} 33 34cc_defaults { 35 name: "bionic_tests_defaults", 36 host_supported: true, 37 target: { 38 darwin: { 39 enabled: false, 40 }, 41 android: { 42 header_libs: ["bionic_libc_platform_headers"], 43 }, 44 linux_bionic: { 45 header_libs: ["bionic_libc_platform_headers"], 46 }, 47 }, 48 cflags: [ 49 "-fstack-protector-all", 50 "-g", 51 "-Wall", 52 "-Wextra", 53 "-Wunused", 54 "-Werror", 55 "-fno-builtin", 56 57 // We want to test deprecated API too. 58 "-Wno-deprecated-declarations", 59 60 // Needed to test pthread_internal_t layout. 61 "-Wno-invalid-offsetof", 62 63 // This warning does not provide any benefit to the tests. 64 "-Wno-reorder-init-list", 65 ], 66 header_libs: [ 67 "libcutils_headers", 68 "gwp_asan_headers", 69 ], 70 stl: "libc++", 71 72 // Ensure that the tests exercise shadow call stack support. 73 // We don't use `scs: true` here because that would give us a second 74 // variant of this library where we actually just want to say "this 75 // library should always be built this way". 76 arch: { 77 arm64: { 78 cflags: ["-fsanitize=shadow-call-stack"], 79 }, 80 riscv64: { 81 cflags: ["-fsanitize=shadow-call-stack"], 82 }, 83 }, 84 sanitize: { 85 address: false, 86 }, 87 88 // Use the bootstrap version of bionic because some tests call private APIs 89 // that aren't exposed by the APEX bionic stubs. 90 bootstrap: true, 91} 92 93// ----------------------------------------------------------------------------- 94// Prebuilt shared libraries for use in tests. 95// ----------------------------------------------------------------------------- 96 97cc_prebuilt_test_library_shared { 98 name: "libtest_invalid-rw_load_segment", 99 strip: { 100 none: true, 101 }, 102 check_elf_files: false, 103 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 104 arch: { 105 arm: { 106 srcs: ["prebuilt-elf-files/arm/libtest_invalid-rw_load_segment.so"], 107 }, 108 arm64: { 109 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-rw_load_segment.so"], 110 }, 111 riscv64: { 112 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so"], 113 }, 114 x86: { 115 srcs: ["prebuilt-elf-files/x86/libtest_invalid-rw_load_segment.so"], 116 }, 117 x86_64: { 118 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-rw_load_segment.so"], 119 }, 120 }, 121} 122 123cc_prebuilt_test_library_shared { 124 name: "libtest_invalid-unaligned_shdr_offset", 125 strip: { 126 none: true, 127 }, 128 check_elf_files: false, 129 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 130 arch: { 131 arm: { 132 srcs: ["prebuilt-elf-files/arm/libtest_invalid-unaligned_shdr_offset.so"], 133 }, 134 arm64: { 135 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-unaligned_shdr_offset.so"], 136 }, 137 riscv64: { 138 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so"], 139 }, 140 x86: { 141 srcs: ["prebuilt-elf-files/x86/libtest_invalid-unaligned_shdr_offset.so"], 142 }, 143 x86_64: { 144 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-unaligned_shdr_offset.so"], 145 }, 146 }, 147} 148 149cc_prebuilt_test_library_shared { 150 name: "libtest_invalid-zero_shentsize", 151 strip: { 152 none: true, 153 }, 154 check_elf_files: false, 155 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 156 arch: { 157 arm: { 158 srcs: ["prebuilt-elf-files/arm/libtest_invalid-zero_shentsize.so"], 159 }, 160 arm64: { 161 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shentsize.so"], 162 }, 163 riscv64: { 164 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so"], 165 }, 166 x86: { 167 srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shentsize.so"], 168 }, 169 x86_64: { 170 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-zero_shentsize.so"], 171 }, 172 }, 173} 174 175cc_prebuilt_test_library_shared { 176 name: "libtest_invalid-zero_shstrndx", 177 strip: { 178 none: true, 179 }, 180 check_elf_files: false, 181 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 182 arch: { 183 arm: { 184 srcs: ["prebuilt-elf-files/arm/libtest_invalid-zero_shstrndx.so"], 185 }, 186 arm64: { 187 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shstrndx.so"], 188 }, 189 riscv64: { 190 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so"], 191 }, 192 x86: { 193 srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shstrndx.so"], 194 }, 195 x86_64: { 196 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-zero_shstrndx.so"], 197 }, 198 }, 199} 200 201cc_prebuilt_test_library_shared { 202 name: "libtest_invalid-empty_shdr_table", 203 strip: { 204 none: true, 205 }, 206 check_elf_files: false, 207 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 208 arch: { 209 arm: { 210 srcs: ["prebuilt-elf-files/arm/libtest_invalid-empty_shdr_table.so"], 211 }, 212 arm64: { 213 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-empty_shdr_table.so"], 214 }, 215 riscv64: { 216 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so"], 217 }, 218 x86: { 219 srcs: ["prebuilt-elf-files/x86/libtest_invalid-empty_shdr_table.so"], 220 }, 221 x86_64: { 222 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-empty_shdr_table.so"], 223 }, 224 }, 225} 226 227cc_prebuilt_test_library_shared { 228 name: "libtest_invalid-zero_shdr_table_offset", 229 strip: { 230 none: true, 231 }, 232 check_elf_files: false, 233 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 234 arch: { 235 arm: { 236 srcs: ["prebuilt-elf-files/arm/libtest_invalid-zero_shdr_table_offset.so"], 237 }, 238 arm64: { 239 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_offset.so"], 240 }, 241 riscv64: { 242 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so"], 243 }, 244 x86: { 245 srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_offset.so"], 246 }, 247 x86_64: { 248 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-zero_shdr_table_offset.so"], 249 }, 250 }, 251} 252 253cc_prebuilt_test_library_shared { 254 name: "libtest_invalid-zero_shdr_table_content", 255 strip: { 256 none: true, 257 }, 258 check_elf_files: false, 259 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 260 arch: { 261 arm: { 262 srcs: ["prebuilt-elf-files/arm/libtest_invalid-zero_shdr_table_content.so"], 263 }, 264 arm64: { 265 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_content.so"], 266 }, 267 riscv64: { 268 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so"], 269 }, 270 x86: { 271 srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_content.so"], 272 }, 273 x86_64: { 274 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-zero_shdr_table_content.so"], 275 }, 276 }, 277} 278 279cc_prebuilt_test_library_shared { 280 name: "libtest_invalid-textrels", 281 strip: { 282 none: true, 283 }, 284 check_elf_files: false, 285 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 286 arch: { 287 arm: { 288 srcs: ["prebuilt-elf-files/arm/libtest_invalid-textrels.so"], 289 }, 290 arm64: { 291 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels.so"], 292 }, 293 riscv64: { 294 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels.so"], 295 }, 296 x86: { 297 srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels.so"], 298 }, 299 x86_64: { 300 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-textrels.so"], 301 }, 302 }, 303} 304 305cc_prebuilt_test_library_shared { 306 name: "libtest_invalid-textrels2", 307 strip: { 308 none: true, 309 }, 310 check_elf_files: false, 311 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 312 arch: { 313 arm: { 314 srcs: ["prebuilt-elf-files/arm/libtest_invalid-textrels2.so"], 315 }, 316 arm64: { 317 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels2.so"], 318 }, 319 riscv64: { 320 srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so"], 321 }, 322 x86: { 323 srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels2.so"], 324 }, 325 x86_64: { 326 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-textrels2.so"], 327 }, 328 }, 329} 330 331cc_prebuilt_test_library_shared { 332 name: "libtest_invalid-local-tls", 333 strip: { 334 none: true, 335 }, 336 check_elf_files: false, 337 relative_install_path: "bionic-loader-test-libs/prebuilt-elf-files", 338 arch: { 339 arm: { 340 srcs: ["prebuilt-elf-files/arm/libtest_invalid-local-tls.so"], 341 }, 342 arm64: { 343 srcs: ["prebuilt-elf-files/arm64/libtest_invalid-local-tls.so"], 344 }, 345 x86: { 346 srcs: ["prebuilt-elf-files/x86/libtest_invalid-local-tls.so"], 347 }, 348 x86_64: { 349 srcs: ["prebuilt-elf-files/x86_64/libtest_invalid-local-tls.so"], 350 }, 351 }, 352} 353 354// ----------------------------------------------------------------------------- 355// All standard tests. 356// ----------------------------------------------------------------------------- 357 358// Test diagnostics emitted by clang. The library that results is useless; we 359// just want to run '-Xclang -verify', which will fail if the diagnostics don't 360// match up with what the source file says they should be. 361cc_test_library { 362 name: "clang_diagnostic_tests", 363 cflags: [ 364 "-Xclang -verify", 365 ], 366 srcs: ["sys_ioctl_diag_test.cpp"], 367} 368 369cc_test_library { 370 name: "libBionicStandardTests", 371 defaults: [ 372 "bionic_tests_defaults", 373 "large_system_property_node_defaults", 374 ], 375 tidy_disabled_srcs: [ 376 "malloc_test.cpp", // timed out with clang-tidy, and too many warnings 377 ], 378 srcs: [ 379 "__aeabi_read_tp_test.cpp", 380 "__cxa_atexit_test.cpp", 381 "__cxa_demangle_test.cpp", 382 "alloca_test.cpp", 383 "android_get_device_api_level.cpp", 384 "android_set_abort_message_test.cpp", 385 "arpa_inet_test.cpp", 386 "async_safe_test.cpp", 387 "assert_test.cpp", 388 "buffer_tests.cpp", 389 "bug_26110743_test.cpp", 390 "byteswap_test.cpp", 391 "complex_test.cpp", 392 // Disabled while investigating 393 // b/378304366, b/375525252 394 // "cpu_target_features_test.cpp", 395 "ctype_test.cpp", 396 "dirent_test.cpp", 397 "elf_test.cpp", 398 "endian_test.cpp", 399 "errno_test.cpp", 400 "error_test.cpp", 401 "eventfd_test.cpp", 402 "fcntl_test.cpp", 403 "fdsan_test.cpp", 404 "fdtrack_test.cpp", 405 "fenv_test.cpp", 406 "_FILE_OFFSET_BITS_test.cpp", 407 "float_test.cpp", 408 "fnmatch_test.cpp", 409 "fts_test.cpp", 410 "ftw_test.cpp", 411 "getauxval_test.cpp", 412 "getcwd_test.cpp", 413 "glob_test.cpp", 414 "grp_pwd_test.cpp", 415 "grp_pwd_file_test.cpp", 416 "heap_tagging_level_test.cpp", 417 "iconv_test.cpp", 418 "ifaddrs_test.cpp", 419 "ifunc_test.cpp", 420 "inttypes_test.cpp", 421 "iso646_test.c", 422 "langinfo_test.cpp", 423 "leak_test.cpp", 424 "libgen_basename_test.cpp", 425 "libgen_test.cpp", 426 "limits_test.cpp", 427 "linux_swab_test.cpp", 428 "locale_test.cpp", 429 "malloc_iterate_test.cpp", 430 "malloc_test.cpp", 431 "math_test.cpp", 432 "membarrier_test.cpp", 433 "memtag_globals_test.cpp", 434 "memtag_stack_test.cpp", 435 "mntent_test.cpp", 436 "mte_test.cpp", 437 "netdb_test.cpp", 438 "net_if_test.cpp", 439 "netinet_ether_test.cpp", 440 "netinet_igmp_test.cpp", 441 "netinet_in_test.cpp", 442 "netinet_ip_icmp_test.cpp", 443 "netinet_udp_test.cpp", 444 "nl_types_test.cpp", 445 "pidfd_test.cpp", 446 "poll_test.cpp", 447 "prio_ctor_test.cpp", 448 "pthread_test.cpp", 449 "pty_test.cpp", 450 "regex_test.cpp", 451 "resolv_test.cpp", 452 "sched_test.cpp", 453 "scs_test.cpp", 454 "scsi_sg_test.cpp", 455 "search_test.cpp", 456 "semaphore_test.cpp", 457 "setjmp_test.cpp", 458 "signal_test.cpp", 459 "spawn_test.cpp", 460 "stack_protector_test.cpp", 461 "stack_protector_test_helper.cpp", 462 "stack_unwinding_test.cpp", 463 "stdalign_test.cpp", 464 "stdarg_test.cpp", 465 "stdatomic_test.cpp", 466 "stdbool_test.c", 467 "stdint_test.cpp", 468 "stdio_nofortify_test.cpp", 469 "stdio_test.cpp", 470 "stdio_ext_test.cpp", 471 "stdlib_test.cpp", 472 "stdnoreturn_test.cpp", 473 "string_nofortify_test.cpp", 474 "string_test.cpp", 475 "string_posix_strerror_r_test.cpp", 476 "string_posix_strerror_r_wrapper.cpp", 477 "strings_nofortify_test.cpp", 478 "strings_test.cpp", 479 "struct_layout_test.cpp", 480 "sstream_test.cpp", 481 "sys_auxv_test.cpp", 482 "sys_cachectl_test.cpp", 483 "sys_epoll_test.cpp", 484 "sys_hwprobe_test.cpp", 485 "sys_io_test.cpp", 486 "sys_mman_test.cpp", 487 "sys_msg_test.cpp", 488 "sys_param_test.cpp", 489 "sys_personality_test.cpp", 490 "sys_prctl_test.cpp", 491 "sys_procfs_test.cpp", 492 "sys_ptrace_test.cpp", 493 "sys_quota_test.cpp", 494 "sys_random_test.cpp", 495 "sys_resource_test.cpp", 496 "sys_select_test.cpp", 497 "sys_sem_test.cpp", 498 "sys_sendfile_test.cpp", 499 "sys_shm_test.cpp", 500 "sys_signalfd_test.cpp", 501 "sys_socket_test.cpp", 502 "sys_stat_test.cpp", 503 "sys_statvfs_test.cpp", 504 "sys_syscall_test.cpp", 505 "sys_sysinfo_test.cpp", 506 "sys_sysmacros_test.cpp", 507 "sys_time_test.cpp", 508 "sys_timex_test.cpp", 509 "sys_ttydefaults_test.cpp", 510 "sys_types_test.cpp", 511 "sys_uio_test.cpp", 512 "sys_un_test.cpp", 513 "sys_vfs_test.cpp", 514 "sys_wait_test.cpp", 515 "sys_xattr_test.cpp", 516 "syslog_test.cpp", 517 "system_properties_test.cpp", 518 "system_properties_test2.cpp", 519 "termios_test.cpp", 520 "tgmath_test.c", 521 "threads_test.cpp", 522 "time_test.cpp", 523 "uchar_test.cpp", 524 "unistd_nofortify_test.cpp", 525 "unistd_test.cpp", 526 "utils.cpp", 527 "utmp_test.cpp", 528 "utmpx_test.cpp", 529 "wchar_test.cpp", 530 "wctype_test.cpp", 531 ], 532 533 include_dirs: [ 534 "bionic/libc", 535 ], 536 537 target: { 538 bionic: { 539 whole_static_libs: [ 540 "libasync_safe", 541 "libprocinfo", 542 "libsystemproperties", 543 ], 544 }, 545 musl: { 546 exclude_srcs: [ 547 // musl doesn't have error.h 548 "error_test.cpp", 549 550 // musl doesn't define noreturn for C++ 551 "stdnoreturn_test.cpp", 552 553 // unsupported relocation type 37 554 "ifunc_test.cpp", 555 556 // musl #defines utmp to utmpx, causing a collision with 557 // utmpx_test.cpp 558 "utmp_test.cpp", 559 ], 560 }, 561 }, 562 563 static_libs: [ 564 "libtinyxml2", 565 "liblog", 566 "libbase", 567 ], 568 shared: { 569 enabled: false, 570 }, 571 572 generated_headers: ["generated_android_ids"], 573} 574 575cc_test_library { 576 name: "libBionicElfTlsTests", 577 defaults: ["bionic_tests_defaults"], 578 srcs: [ 579 "elftls_test.cpp", 580 ], 581 include_dirs: [ 582 "bionic/libc", 583 ], 584 static_libs: [ 585 "libbase", 586 ], 587 shared: { 588 enabled: false, 589 }, 590} 591 592cc_test_library { 593 name: "libBionicElfTlsLoaderTests", 594 defaults: ["bionic_tests_defaults"], 595 srcs: [ 596 "elftls_dl_test.cpp", 597 ], 598 include_dirs: [ 599 "bionic/libc", 600 ], 601 static_libs: [ 602 "liblog", 603 "libbase", 604 ], 605 shared: { 606 enabled: false, 607 }, 608} 609 610cc_test_library { 611 name: "libBionicFramePointerTests", 612 defaults: ["bionic_tests_defaults"], 613 srcs: [ 614 "android_unsafe_frame_pointer_chase_test.cpp", 615 ], 616 include_dirs: [ 617 "bionic/libc", 618 ], 619 cflags: [ 620 "-fno-omit-frame-pointer", 621 ], 622} 623 624// ----------------------------------------------------------------------------- 625// Fortify tests. 626// ----------------------------------------------------------------------------- 627 628cc_defaults { 629 name: "bionic_clang_fortify_tests_w_flags", 630 cflags: [ 631 "-Wno-builtin-memcpy-chk-size", 632 "-Wno-format-security", 633 "-Wno-format-zero-length", 634 "-Wno-fortify-source", 635 "-Wno-memset-transposed-args", 636 "-Wno-strlcpy-strlcat-size", 637 "-Wno-strncat-size", 638 ], 639 static_libs: [ 640 "libbase", 641 ], 642} 643 644cc_defaults { 645 name: "bionic_fortify_tests_defaults", 646 cflags: [ 647 "-U_FORTIFY_SOURCE", 648 ], 649 srcs: ["fortify_test_main.cpp"], 650 static_libs: [ 651 "libbase", 652 ], 653 tidy: false, 654 target: { 655 musl: { 656 // Musl doesn't have fortify 657 enabled: false, 658 }, 659 }, 660} 661 662// Ensure we don't use FORTIFY'ed functions with the static analyzer/clang-tidy: 663// it can confuse these tools pretty easily. If this builds successfully, then 664// __clang_analyzer__ overrode FORTIFY. Otherwise, FORTIFY was incorrectly 665// enabled. The library that results from building this is meant to be unused. 666cc_test_library { 667 name: "fortify_disabled_for_tidy", 668 defaults: [ 669 "bionic_clang_fortify_tests_w_flags", 670 ], 671 cflags: [ 672 "-Werror", 673 "-D_FORTIFY_SOURCE=2", 674 "-D__clang_analyzer__", 675 ], 676 srcs: ["clang_fortify_tests.cpp"], 677 tidy: false, 678} 679 680cc_test_library { 681 name: "libfortify1-tests-clang", 682 defaults: [ 683 "bionic_fortify_tests_defaults", 684 "bionic_tests_defaults", 685 ], 686 cflags: [ 687 "-D_FORTIFY_SOURCE=1", 688 "-DTEST_NAME=Fortify1_clang", 689 ], 690 shared: { 691 enabled: false, 692 }, 693} 694 695cc_test_library { 696 name: "libfortify2-tests-clang", 697 defaults: [ 698 "bionic_fortify_tests_defaults", 699 "bionic_tests_defaults", 700 ], 701 cflags: [ 702 "-D_FORTIFY_SOURCE=2", 703 "-DTEST_NAME=Fortify2_clang", 704 ], 705 shared: { 706 enabled: false, 707 }, 708} 709 710cc_defaults { 711 name: "bionic_new_fortify_tests_defaults", 712 defaults: [ 713 "bionic_clang_fortify_tests_w_flags", 714 ], 715 cflags: [ 716 "-U_FORTIFY_SOURCE", 717 ], 718 srcs: ["clang_fortify_tests.cpp"], 719 tidy: false, 720} 721 722cc_test_library { 723 name: "libfortify1-new-tests-clang", 724 defaults: [ 725 "bionic_new_fortify_tests_defaults", 726 "bionic_tests_defaults", 727 ], 728 cflags: [ 729 "-D_FORTIFY_SOURCE=1", 730 "-DTEST_NAME=Fortify1_clang_new", 731 ], 732 shared: { 733 enabled: false, 734 }, 735} 736 737cc_test_library { 738 name: "libfortify2-new-tests-clang", 739 defaults: [ 740 "bionic_new_fortify_tests_defaults", 741 "bionic_tests_defaults", 742 ], 743 cflags: [ 744 "-D_FORTIFY_SOURCE=2", 745 "-DTEST_NAME=Fortify2_clang_new", 746 ], 747 shared: { 748 enabled: false, 749 }, 750} 751 752cc_defaults { 753 name: "bionic_fortify_c_tests_defaults", 754 defaults: [ 755 "bionic_clang_fortify_tests_w_flags", 756 "bionic_tests_defaults", 757 ], 758 cflags: [ 759 "-U_FORTIFY_SOURCE", 760 // -fbuiltin is required here to counteract -fno-builtin from 761 // `bionic_tests_defaults`. With `-fno-builtin`, Clang won't 762 // const-evaluate calls to `strlen`, which is tested for here. 763 "-fbuiltin", 764 ], 765 srcs: [ 766 "clang_fortify_c_only_tests.c", 767 ], 768 tidy: false, 769 shared: { 770 enabled: false, 771 }, 772} 773 774cc_test_library { 775 name: "libfortify1-c-tests-clang", 776 defaults: ["bionic_fortify_c_tests_defaults"], 777 cflags: ["-D_FORTIFY_SOURCE=1"], 778} 779 780cc_test_library { 781 name: "libfortify2-c-tests-clang", 782 defaults: ["bionic_fortify_c_tests_defaults"], 783 cflags: ["-D_FORTIFY_SOURCE=2"], 784} 785 786// ----------------------------------------------------------------------------- 787// Library of all tests (excluding the dynamic linker tests). 788// ----------------------------------------------------------------------------- 789cc_test_library { 790 name: "libBionicTests", 791 defaults: ["bionic_tests_defaults"], 792 host_supported: false, 793 whole_static_libs: [ 794 "libBionicStandardTests", 795 "libBionicElfTlsTests", 796 "libBionicFramePointerTests", 797 "libfortify1-c-tests-clang", 798 "libfortify1-tests-clang", 799 "libfortify1-new-tests-clang", 800 "libfortify2-c-tests-clang", 801 "libfortify2-tests-clang", 802 "libfortify2-new-tests-clang", 803 ], 804 shared: { 805 enabled: false, 806 }, 807} 808 809cc_test_library { 810 name: "libBionicLoaderTests", 811 defaults: [ 812 "bionic_tests_defaults", 813 ], 814 srcs: [ 815 "atexit_test.cpp", 816 "dl_test.cpp", 817 "dlfcn_symlink_support.cpp", 818 "dlfcn_test.cpp", 819 "execinfo_test.cpp", 820 "link_test.cpp", 821 "page_size_16kib_compat_test.cpp", 822 "pthread_dlfcn_test.cpp", 823 ], 824 static_libs: [ 825 "libbase", 826 "libprocinfo", 827 ], 828 include_dirs: [ 829 "bionic/libc", 830 "bionic/tests/libs", 831 ], 832 shared: { 833 enabled: false, 834 }, 835 target: { 836 android: { 837 srcs: [ 838 "cfi_test.cpp", 839 "dlext_test.cpp", 840 "libdl_test.cpp", 841 ], 842 static_libs: [ 843 "libmeminfo", 844 "libprocinfo", 845 "libziparchive", 846 ], 847 }, 848 }, 849} 850 851// ----------------------------------------------------------------------------- 852// Library of bionic customized gtest main function, with normal gtest output format, 853// which is needed by bionic cts test. 854// ----------------------------------------------------------------------------- 855cc_test_library { 856 name: "libBionicCtsGtestMain", 857 defaults: ["bionic_tests_defaults"], 858 srcs: [ 859 "gtest_globals.cpp", 860 "gtest_main.cpp", 861 ], 862 shared: { 863 enabled: false, 864 }, 865 whole_static_libs: [ 866 "libbase", 867 "libgtest_isolated", 868 ], 869} 870 871cc_defaults { 872 name: "bionic_unit_tests_data", 873 data_bins: [ 874 "cfi_test_helper", 875 "cfi_test_helper2", 876 "elftls_align_test_helper", 877 "elftls_dlopen_ie_error_helper", 878 "elftls_dtv_resize_helper", 879 "elftls_skew_align_test_helper", 880 "exec_linker_helper", 881 "exec_linker_helper_lib", 882 "heap_tagging_async_helper", 883 "heap_tagging_disabled_helper", 884 "heap_tagging_static_async_helper", 885 "heap_tagging_static_disabled_helper", 886 "heap_tagging_static_sync_helper", 887 "heap_tagging_sync_helper", 888 "stack_tagging_helper", 889 "stack_tagging_static_helper", 890 "ld_config_test_helper", 891 "ld_config_test_helper_lib1", 892 "ld_config_test_helper_lib2", 893 "ld_config_test_helper_lib3", 894 "ld_preload_test_helper", 895 "ld_preload_test_helper_lib1", 896 "ld_preload_test_helper_lib2", 897 "memtag_globals_binary", 898 "memtag_globals_binary_static", 899 "memtag_globals_dso", 900 "mte_globals_relr_regression_test_b_314038442", 901 "mte_globals_relr_regression_test_b_314038442_mte", 902 "ns_hidden_child_helper", 903 "preinit_getauxval_test_helper", 904 "preinit_syscall_test_helper", 905 "thread_exit_cb_helper", 906 "tls_properties_helper", 907 ], 908 data_libs: [ 909 "libatest_simple_zip", 910 "libcfi-test", 911 "libcfi-test-bad", 912 "libdl_preempt_test_1", 913 "libdl_preempt_test_2", 914 "libdl_test_df_1_global", 915 "libdlext_test", 916 "libdlext_test_different_soname", 917 "libdlext_test_fd", 918 "libdlext_test_norelro", 919 "libdlext_test_recursive", 920 "libdlext_test_zip", 921 "libgnu-hash-table-library", 922 "libns_hidden_child_app", 923 "libns_hidden_child_global", 924 "libns_hidden_child_internal", 925 "libns_hidden_child_public", 926 "libnstest_dlopened", 927 "libnstest_ns_a_public1", 928 "libnstest_ns_a_public1_internal", 929 "libnstest_ns_b_public2", 930 "libnstest_ns_b_public3", 931 "libnstest_private", 932 "libnstest_private_external", 933 "libnstest_public", 934 "libnstest_public_internal", 935 "libnstest_root", 936 "libnstest_root_not_isolated", 937 "librelocations-ANDROID_REL", 938 "librelocations-ANDROID_RELR", 939 "librelocations-RELR", 940 "librelocations-fat", 941 "libsegment_gap_inner", 942 "libsegment_gap_outer", 943 "libsysv-hash-table-library", 944 "libtest_atexit", 945 "libtest_check_order_dlsym", 946 "libtest_check_order_dlsym_1_left", 947 "libtest_check_order_dlsym_2_right", 948 "libtest_check_order_dlsym_3_c", 949 "libtest_check_order_dlsym_a", 950 "libtest_check_order_dlsym_b", 951 "libtest_check_order_dlsym_d", 952 "libtest_check_order_reloc_root", 953 "libtest_check_order_reloc_root_1", 954 "libtest_check_order_reloc_root_2", 955 "libtest_check_order_reloc_siblings", 956 "libtest_check_order_reloc_siblings_1", 957 "libtest_check_order_reloc_siblings_2", 958 "libtest_check_order_reloc_siblings_3", 959 "libtest_check_order_reloc_siblings_a", 960 "libtest_check_order_reloc_siblings_b", 961 "libtest_check_order_reloc_siblings_c", 962 "libtest_check_order_reloc_siblings_c_1", 963 "libtest_check_order_reloc_siblings_c_2", 964 "libtest_check_order_reloc_siblings_d", 965 "libtest_check_order_reloc_siblings_e", 966 "libtest_check_order_reloc_siblings_f", 967 "libtest_check_rtld_next_from_library", 968 "libtest_dlopen_df_1_global", 969 "libtest_dlopen_from_ctor", 970 "libtest_dlopen_from_ctor_main", 971 "libtest_dlopen_weak_undefined_func", 972 "libtest_dlsym_df_1_global", 973 "libtest_dlsym_from_this", 974 "libtest_dlsym_from_this_child", 975 "libtest_dlsym_from_this_grandchild", 976 "libtest_dlsym_weak_func", 977 "libtest_dt_runpath_a", 978 "libtest_dt_runpath_b", 979 "libtest_dt_runpath_c", 980 "libtest_dt_runpath_d", 981 "libtest_dt_runpath_x", 982 "libtest_dt_runpath_y", 983 "libtest_elf_max_page_size_4kib", 984 "libtest_elftls_dynamic", 985 "libtest_elftls_dynamic_filler_1", 986 "libtest_elftls_dynamic_filler_2", 987 "libtest_elftls_dynamic_filler_3", 988 "libtest_elftls_dynamic_filler_4", 989 "libtest_elftls_dynamic_filler_5", 990 "libtest_elftls_shared_var", 991 "libtest_elftls_shared_var_ie", 992 "libtest_elftls_tprel", 993 "libtest_empty", 994 "libtest_ifunc", 995 "libtest_ifunc_variable", 996 "libtest_ifunc_variable_impl", 997 "libtest_indirect_thread_local_dtor", 998 "libtest_init_fini_order_child", 999 "libtest_init_fini_order_grand_child", 1000 "libtest_init_fini_order_root", 1001 "libtest_init_fini_order_root2", 1002 "libtest_invalid-empty_shdr_table", 1003 "libtest_invalid-local-tls", 1004 "libtest_invalid-rw_load_segment", 1005 "libtest_invalid-textrels", 1006 "libtest_invalid-textrels2", 1007 "libtest_invalid-unaligned_shdr_offset", 1008 "libtest_invalid-zero_shdr_table_content", 1009 "libtest_invalid-zero_shdr_table_offset", 1010 "libtest_invalid-zero_shentsize", 1011 "libtest_invalid-zero_shstrndx", 1012 "libtest_missing_symbol", 1013 "libtest_missing_symbol_child_private", 1014 "libtest_missing_symbol_child_public", 1015 "libtest_missing_symbol_root", 1016 "libtest_nodelete_1", 1017 "libtest_nodelete_2", 1018 "libtest_nodelete_dt_flags_1", 1019 "libtest_pthread_atfork", 1020 "libtest_relo_check_dt_needed_order", 1021 "libtest_relo_check_dt_needed_order_1", 1022 "libtest_relo_check_dt_needed_order_2", 1023 "libtest_simple", 1024 "libtest_thread_local_dtor", 1025 "libtest_thread_local_dtor2", 1026 "libtest_two_parents_child", 1027 "libtest_two_parents_parent1", 1028 "libtest_two_parents_parent2", 1029 "libtest_versioned_lib", 1030 "libtest_versioned_libv1", 1031 "libtest_versioned_libv2", 1032 "libtest_versioned_otherlib", 1033 "libtest_versioned_otherlib_empty", 1034 "libtest_versioned_uselibv1", 1035 "libtest_versioned_uselibv2", 1036 "libtest_versioned_uselibv2_other", 1037 "libtest_versioned_uselibv3_other", 1038 "libtest_with_dependency", 1039 "libtest_with_dependency_loop", 1040 "libtest_with_dependency_loop_a", 1041 "libtest_with_dependency_loop_b", 1042 "libtest_with_dependency_loop_c", 1043 "libtestshared", 1044 ], 1045} 1046 1047// ----------------------------------------------------------------------------- 1048// Tests for the device using bionic's .so. Run with: 1049// adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests 1050// adb shell /data/nativetest64/bionic-unit-tests/bionic-unit-tests 1051// ----------------------------------------------------------------------------- 1052cc_defaults { 1053 name: "bionic_unit_tests_defaults", 1054 host_supported: false, 1055 gtest: false, 1056 1057 defaults: [ 1058 "bionic_tests_defaults", 1059 "bionic_unit_tests_data", 1060 ], 1061 1062 whole_static_libs: [ 1063 "libBionicTests", 1064 "libBionicLoaderTests", 1065 "libBionicElfTlsLoaderTests", 1066 ], 1067 1068 static_libs: [ 1069 "libtinyxml2", 1070 "liblog", 1071 "libbase", 1072 "libgtest_isolated", 1073 ], 1074 1075 srcs: [ 1076 // TODO: Include __cxa_thread_atexit_test.cpp to glibc tests once it is upgraded (glibc 2.18+) 1077 "__cxa_thread_atexit_test.cpp", 1078 "gtest_globals.cpp", 1079 "gtest_main.cpp", 1080 "gwp_asan_test.cpp", 1081 "thread_local_test.cpp", 1082 ], 1083 1084 conlyflags: [ 1085 "-fexceptions", 1086 "-fnon-call-exceptions", 1087 ], 1088 1089 ldflags: ["-Wl,--export-dynamic"], 1090 1091 include_dirs: ["bionic/libc"], 1092 1093 stl: "libc++_static", 1094 1095 target: { 1096 android: { 1097 shared_libs: [ 1098 "ld-android", 1099 "libdl", 1100 "libdl_android", 1101 "libdl_preempt_test_1", 1102 "libdl_preempt_test_2", 1103 "libdl_test_df_1_global", 1104 "libtest_elftls_shared_var", 1105 "libtest_elftls_tprel", 1106 ], 1107 static_libs: [ 1108 // The order of these libraries matters, do not shuffle them. 1109 "libmeminfo", 1110 "libziparchive", 1111 "libz", 1112 "libutils", 1113 ], 1114 ldflags: [ 1115 "-Wl,--rpath,${ORIGIN}/bionic-loader-test-libs", 1116 "-Wl,--enable-new-dtags", 1117 ], 1118 }, 1119 }, 1120} 1121 1122cc_test { 1123 name: "bionic-unit-tests", 1124 defaults: [ 1125 "bionic_unit_tests_defaults", 1126 ], 1127 test_suites: ["device-tests"], 1128 data: [ 1129 ":libdlext_test_runpath_zip_zipaligned", 1130 ":libdlext_test_zip_zipaligned", 1131 ], 1132} 1133 1134cc_defaults { 1135 name: "hwasan_test_defaults", 1136 enabled: false, 1137 // This does not use bionic_tests_defaults because it is not supported on 1138 // host. 1139 arch: { 1140 arm64: { 1141 enabled: true, 1142 }, 1143 }, 1144 sanitize: { 1145 hwaddress: true, 1146 }, 1147 srcs: [ 1148 "hwasan_test.cpp", 1149 ], 1150 data_libs: [ 1151 "libtest_simple_hwasan", 1152 "libtest_simple_hwasan_nohwasan", 1153 ], 1154 header_libs: ["bionic_libc_platform_headers"], 1155 test_suites: ["device-tests"], 1156} 1157 1158cc_test { 1159 name: "hwasan_test", 1160 defaults: ["hwasan_test_defaults"], 1161 shared_libs: [ 1162 "libbase", 1163 ], 1164} 1165 1166cc_test { 1167 name: "hwasan_test_static", 1168 defaults: ["hwasan_test_defaults"], 1169 static_libs: [ 1170 "libbase", 1171 ], 1172 static_executable: true, 1173 cflags: ["-DHWASAN_TEST_STATIC"], 1174} 1175 1176cc_test { 1177 name: "memtag_stack_dlopen_test", 1178 enabled: false, 1179 // This does not use bionic_tests_defaults because it is not supported on 1180 // host. 1181 arch: { 1182 arm64: { 1183 enabled: true, 1184 }, 1185 }, 1186 sanitize: { 1187 memtag_heap: true, 1188 memtag_stack: false, 1189 }, 1190 srcs: [ 1191 "memtag_stack_dlopen_test.cpp", 1192 ], 1193 shared_libs: [ 1194 "libbase", 1195 ], 1196 data_libs: [ 1197 "libtest_simple_memtag_stack", 1198 "libtest_depends_on_simple_memtag_stack", 1199 ], 1200 data_bins: [ 1201 "testbinary_depends_on_simple_memtag_stack", 1202 "testbinary_depends_on_depends_on_simple_memtag_stack", 1203 "testbinary_is_stack_mte_after_dlopen", 1204 ], 1205 header_libs: ["bionic_libc_platform_headers"], 1206 test_suites: ["device-tests"], 1207} 1208 1209cc_test { 1210 name: "memtag_stack_abi_test", 1211 enabled: false, 1212 // This does not use bionic_tests_defaults because it is not supported on 1213 // host. 1214 arch: { 1215 arm64: { 1216 enabled: true, 1217 }, 1218 }, 1219 // We don't use `sanitize:` so we generate the appropriate ELF note, but 1220 // still support non-MTE devices. 1221 // TODO(fmayer): also add a test that enables stack MTE for MTE devices, 1222 // which would test for more bugs. 1223 ldflags: ["-fsanitize=memtag-stack"], 1224 // Turn off all other sanitizers from SANITIZE_TARGET. 1225 sanitize: { 1226 never: true, 1227 }, 1228 shared_libs: [ 1229 "libbase", 1230 ], 1231 srcs: [ 1232 "memtag_stack_abi_test.cpp", 1233 ], 1234 header_libs: ["bionic_libc_platform_headers"], 1235 test_suites: ["device-tests"], 1236} 1237 1238cc_test { 1239 name: "bionic-stress-tests", 1240 defaults: [ 1241 "bionic_tests_defaults", 1242 ], 1243 1244 // For now, these tests run forever, so do not use the isolation framework. 1245 isolated: false, 1246 // Running forever, do not consider unit test. 1247 test_options: { 1248 unit_test: false, 1249 }, 1250 1251 srcs: [ 1252 "malloc_stress_test.cpp", 1253 ], 1254 1255 shared_libs: [ 1256 "libbase", 1257 "liblog", 1258 ], 1259 1260 target: { 1261 android: { 1262 static_libs: [ 1263 "libmeminfo", 1264 "libprocinfo", 1265 ], 1266 }, 1267 }, 1268} 1269 1270// ----------------------------------------------------------------------------- 1271// Tests for the device linked against bionic's static library. Run with: 1272// adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static 1273// adb shell /data/nativetest64/bionic-unit-tests-static/bionic-unit-tests-static 1274// ----------------------------------------------------------------------------- 1275cc_test { 1276 name: "bionic-unit-tests-static", 1277 gtest: false, 1278 defaults: ["bionic_tests_defaults"], 1279 test_suites: ["device-tests"], 1280 host_supported: false, 1281 1282 srcs: [ 1283 "gtest_preinit_debuggerd.cpp", 1284 "gtest_globals.cpp", 1285 "gtest_main.cpp", 1286 1287 // Test internal parts of Bionic that aren't exposed via libc.so. 1288 "bionic_allocator_test.cpp", 1289 "static_tls_layout_test.cpp", 1290 ], 1291 include_dirs: [ 1292 "bionic/libc", 1293 ], 1294 whole_static_libs: [ 1295 "libBionicTests", 1296 ], 1297 1298 static_libs: [ 1299 "libm", 1300 "libc", 1301 "libdl", 1302 "libtinyxml2", 1303 "liblog", 1304 "libbase", 1305 "libdebuggerd_handler", 1306 "libgtest_isolated", 1307 "libtest_elftls_shared_var", 1308 "libtest_elftls_tprel", 1309 ], 1310 1311 static_executable: true, 1312 stl: "libc++_static", 1313 // Clang cannot build ifunc with LTO. 1314 // http://b/203737712 1315 lto: { 1316 never: true, 1317 }, 1318 data_bins: [ 1319 "elftls_align_test_helper", 1320 "elftls_skew_align_test_helper", 1321 "heap_tagging_async_helper", 1322 "heap_tagging_disabled_helper", 1323 "heap_tagging_static_async_helper", 1324 "heap_tagging_static_disabled_helper", 1325 "heap_tagging_static_sync_helper", 1326 "heap_tagging_sync_helper", 1327 "memtag_globals_binary", 1328 "memtag_globals_binary_static", 1329 "memtag_globals_dso", 1330 "mte_globals_relr_regression_test_b_314038442", 1331 "mte_globals_relr_regression_test_b_314038442_mte", 1332 "stack_tagging_helper", 1333 "stack_tagging_static_helper", 1334 ], 1335} 1336 1337// ----------------------------------------------------------------------------- 1338// Tests to run on the host and linked against glibc. Run with: 1339// cd bionic/tests; mm bionic-unit-tests-glibc-run 1340// ----------------------------------------------------------------------------- 1341 1342cc_test_host { 1343 name: "bionic-unit-tests-glibc", 1344 gtest: false, 1345 defaults: ["bionic_tests_defaults"], 1346 1347 srcs: [ 1348 "atexit_test.cpp", 1349 "dlfcn_symlink_support.cpp", 1350 "dlfcn_test.cpp", 1351 "dl_test.cpp", 1352 "execinfo_test.cpp", 1353 "gtest_globals.cpp", 1354 "gtest_main.cpp", 1355 "pthread_dlfcn_test.cpp", 1356 ], 1357 1358 shared_libs: [ 1359 "libdl_preempt_test_1", 1360 "libdl_preempt_test_2", 1361 "libdl_test_df_1_global", 1362 "libtest_elftls_shared_var", 1363 "libtest_elftls_tprel", 1364 ], 1365 1366 whole_static_libs: [ 1367 "libBionicStandardTests", 1368 "libBionicElfTlsTests", 1369 "libBionicElfTlsLoaderTests", 1370 "libfortify1-tests-clang", 1371 "libfortify2-tests-clang", 1372 ], 1373 1374 static_libs: [ 1375 "libbase", 1376 "liblog", 1377 "libcutils", 1378 "libgtest_isolated", 1379 ], 1380 1381 host_ldlibs: [ 1382 "-lresolv", 1383 "-lutil", 1384 ], 1385 1386 include_dirs: [ 1387 "bionic/libc", 1388 ], 1389 1390 ldflags: [ 1391 "-Wl,--rpath,${ORIGIN}/../bionic-loader-test-libs", 1392 "-Wl,--export-dynamic", 1393 ], 1394 1395 sanitize: { 1396 never: false, 1397 }, 1398 1399 target: { 1400 linux_bionic: { 1401 enabled: false, 1402 }, 1403 musl: { 1404 exclude_static_libs: [ 1405 // Musl doesn't have fortify 1406 "libfortify1-tests-clang", 1407 "libfortify2-tests-clang", 1408 ], 1409 }, 1410 }, 1411} 1412 1413cc_defaults { 1414 name: "bionic_compile_time_tests_defaults", 1415 enabled: false, 1416 target: { 1417 linux_x86: { 1418 enabled: true, 1419 }, 1420 linux_x86_64: { 1421 enabled: true, 1422 }, 1423 }, 1424 tidy: false, 1425 clang_verify: true, 1426 cflags: [ 1427 "-Wall", 1428 "-Wno-error", 1429 "-fno-color-diagnostics", 1430 "-ferror-limit=10000", 1431 "-DCOMPILATION_TESTS=1", 1432 "-Wformat-nonliteral", 1433 "-U_FORTIFY_SOURCE", 1434 ], 1435 srcs: ["clang_fortify_tests.cpp"], 1436} 1437 1438cc_library_static { 1439 name: "bionic-compile-time-tests1-clang++", 1440 defaults: [ 1441 "bionic_compile_time_tests_defaults", 1442 ], 1443 cppflags: [ 1444 "-D_FORTIFY_SOURCE=1", 1445 ], 1446} 1447 1448cc_library_static { 1449 name: "bionic-compile-time-tests2-clang++", 1450 defaults: [ 1451 "bionic_compile_time_tests_defaults", 1452 ], 1453 cppflags: [ 1454 "-D_FORTIFY_SOURCE=2", 1455 ], 1456} 1457