public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH 0/4] libsanitizer: Merge with upstream commit 1c2e5fd66ea
@ 2021-10-01 15:36 H.J. Lu
  2021-10-01 15:36 ` [PATCH 1/4] libsanitizer: Merge with upstream H.J. Lu
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: H.J. Lu @ 2021-10-01 15:36 UTC (permalink / raw)
  To: gcc-patches

Merge with upstream commit:

commit 1c2e5fd66ea27d0c51360ba4e22099124a915562
Author: peter klausler <pklausler@nvidia.com>
Date:   Wed Sep 15 08:28:48 2021 -0700

    [flang] Enforce constraint: defined ass't in WHERE must be elemental

    A defined assignment subroutine invoked in the context of a WHERE
    statement or construct must necessarily be elemental (C1032).

    Differential Revision: https://reviews.llvm.org/D109932

H.J. Lu (4):
  libsanitizer: Merge with upstream
  libsanitizer: Apply local patches
  libsanitizer: Bump asan/tsan versions
  Update c-c++-common/tsan/atomic_stack.c

 .../c-c++-common/tsan/atomic_stack.c          |    3 +-
 libsanitizer/MERGE                            |    2 +-
 libsanitizer/asan/asan_fuchsia.cpp            |   35 +-
 libsanitizer/asan/asan_globals.cpp            |   14 +-
 libsanitizer/asan/asan_interceptors.cpp       |   18 +-
 libsanitizer/asan/asan_interceptors.h         |   45 +-
 libsanitizer/asan/asan_report.cpp             |   10 +-
 libsanitizer/asan/asan_rtl.cpp                |   18 +-
 libsanitizer/asan/asan_stats.cpp              |   10 +-
 libsanitizer/asan/asan_thread.cpp             |    4 +-
 libsanitizer/asan/libtool-version             |    2 +-
 libsanitizer/hwasan/Makefile.am               |    3 +-
 libsanitizer/hwasan/Makefile.in               |   12 +-
 libsanitizer/hwasan/hwasan.cpp                |    3 +-
 libsanitizer/hwasan/hwasan.h                  |   25 +-
 .../hwasan/hwasan_allocation_functions.cpp    |   24 +
 libsanitizer/hwasan/hwasan_allocator.cpp      |   58 +-
 libsanitizer/hwasan/hwasan_dynamic_shadow.cpp |    9 +
 libsanitizer/hwasan/hwasan_fuchsia.cpp        |   23 +
 libsanitizer/hwasan/hwasan_interceptors.cpp   |   70 +-
 .../hwasan/hwasan_interface_internal.h        |   48 -
 libsanitizer/hwasan/hwasan_linux.cpp          |  147 +-
 libsanitizer/hwasan/hwasan_report.cpp         |   82 +-
 ...wasan_setjmp.S => hwasan_setjmp_aarch64.S} |   21 +-
 libsanitizer/hwasan/hwasan_setjmp_x86_64.S    |   80 +
 libsanitizer/hwasan/hwasan_thread.cpp         |    2 +-
 libsanitizer/hwasan/hwasan_type_test.cpp      |    2 +-
 .../include/sanitizer/asan_interface.h        |    2 +-
 .../include/sanitizer/common_interface_defs.h |    2 +-
 .../include/sanitizer/dfsan_interface.h       |    3 +-
 .../include/sanitizer/linux_syscall_hooks.h   | 2120 +++++++++--------
 .../include/sanitizer/tsan_interface.h        |    3 +
 .../interception/interception_win.cpp         |   48 +-
 libsanitizer/lsan/lsan_allocator.h            |    2 +-
 libsanitizer/lsan/lsan_common.cpp             |   12 +-
 .../sanitizer_common/sancov_flags.inc         |    2 +-
 .../sanitizer_common/sanitizer_addrhashmap.h  |    2 +-
 .../sanitizer_allocator_primary64.h           |   14 +-
 .../sanitizer_allocator_size_class_map.h      |    8 +-
 libsanitizer/sanitizer_common/sanitizer_asm.h |    4 +-
 .../sanitizer_atomic_clang_mips.h             |    2 +-
 .../sanitizer_common/sanitizer_common.h       |   20 +-
 .../sanitizer_common_interceptors.inc         |  652 ++---
 .../sanitizer_common_interceptors_format.inc  |   10 +-
 ...izer_common_interceptors_netbsd_compat.inc |    4 +-
 .../sanitizer_common_nolibc.cpp               |    1 +
 .../sanitizer_common_syscalls.inc             | 1559 +++++++-----
 .../sanitizer_coverage_fuchsia.cpp            |    8 +-
 .../sanitizer_coverage_libcdep_new.cpp        |   65 +-
 .../sanitizer_common/sanitizer_file.cpp       |   15 +
 .../sanitizer_common/sanitizer_file.h         |    2 +
 .../sanitizer_common/sanitizer_flag_parser.h  |    2 +-
 .../sanitizer_common/sanitizer_flags.inc      |    4 +
 .../sanitizer_common/sanitizer_fuchsia.cpp    |   41 -
 .../sanitizer_interceptors_ioctl_netbsd.inc   |    2 +-
 .../sanitizer_interface_internal.h            |    7 +-
 .../sanitizer_internal_defs.h                 |   46 +-
 .../sanitizer_common/sanitizer_libc.cpp       |   12 +
 .../sanitizer_common/sanitizer_libc.h         |    5 +-
 .../sanitizer_common/sanitizer_libignore.cpp  |   33 +-
 .../sanitizer_common/sanitizer_libignore.h    |   37 +-
 .../sanitizer_common/sanitizer_linux.cpp      |   83 +-
 .../sanitizer_local_address_space_view.h      |    2 +-
 .../sanitizer_common/sanitizer_mac.cpp        |   29 +-
 .../sanitizer_common/sanitizer_mutex.cpp      |  186 ++
 .../sanitizer_common/sanitizer_mutex.h        |  325 +--
 .../sanitizer_common/sanitizer_platform.h     |   25 +-
 .../sanitizer_platform_interceptors.h         |   27 +-
 .../sanitizer_platform_limits_freebsd.cpp     |    4 +
 .../sanitizer_platform_limits_freebsd.h       |  164 +-
 .../sanitizer_platform_limits_linux.cpp       |   56 +-
 .../sanitizer_platform_limits_netbsd.cpp      |    1 +
 .../sanitizer_platform_limits_netbsd.h        |    1 +
 .../sanitizer_platform_limits_posix.cpp       |   25 +-
 .../sanitizer_platform_limits_posix.h         |   30 +-
 .../sanitizer_platform_limits_solaris.cpp     |    1 +
 .../sanitizer_platform_limits_solaris.h       |    1 +
 .../sanitizer_common/sanitizer_posix.h        |    7 +-
 .../sanitizer_posix_libcdep.cpp               |    2 +
 .../sanitizer_common/sanitizer_printf.cpp     |   37 +-
 .../sanitizer_signal_interceptors.inc         |   12 +-
 .../sanitizer_common/sanitizer_solaris.cpp    |   22 -
 .../sanitizer_common/sanitizer_stacktrace.cpp |    5 +-
 .../sanitizer_stacktrace_libcdep.cpp          |    2 +-
 .../sanitizer_stacktrace_printer.cpp          |   11 +-
 .../sanitizer_stacktrace_sparc.cpp            |    2 +-
 .../sanitizer_stoptheworld_linux_libcdep.cpp  |    2 +-
 .../sanitizer_stoptheworld_netbsd_libcdep.cpp |    2 +-
 .../sanitizer_common/sanitizer_symbolizer.h   |    6 +-
 .../sanitizer_symbolizer_internal.h           |    2 +-
 .../sanitizer_symbolizer_libcdep.cpp          |   12 +-
 .../sanitizer_syscall_linux_hexagon.inc       |  131 +
 .../sanitizer_thread_registry.cpp             |   22 +-
 .../sanitizer_thread_registry.h               |    2 +-
 .../sanitizer_tls_get_addr.cpp                |   19 +-
 .../sanitizer_common/sanitizer_win.cpp        |   24 +-
 libsanitizer/tsan/Makefile.am                 |    4 +-
 libsanitizer/tsan/Makefile.in                 |   13 +-
 libsanitizer/tsan/libtool-version             |    2 +-
 libsanitizer/tsan/tsan_clock.cpp              |   10 +-
 libsanitizer/tsan/tsan_clock.h                |    2 +-
 libsanitizer/tsan/tsan_debugging.cpp          |   10 +-
 libsanitizer/tsan/tsan_defs.h                 |   66 +-
 libsanitizer/tsan/tsan_dense_alloc.h          |   35 +-
 libsanitizer/tsan/tsan_external.cpp           |   19 +-
 libsanitizer/tsan/tsan_fd.cpp                 |   24 +-
 libsanitizer/tsan/tsan_fd.h                   |    2 +-
 libsanitizer/tsan/tsan_flags.cpp              |    1 +
 libsanitizer/tsan/tsan_flags.inc              |    1 -
 libsanitizer/tsan/tsan_ignoreset.cpp          |   12 +-
 libsanitizer/tsan/tsan_ignoreset.h            |   13 +-
 libsanitizer/tsan/tsan_ilist.h                |  189 ++
 libsanitizer/tsan/tsan_interceptors.h         |   35 +-
 libsanitizer/tsan/tsan_interceptors_mac.cpp   |    6 +-
 libsanitizer/tsan/tsan_interceptors_posix.cpp |  417 ++--
 libsanitizer/tsan/tsan_interface.cpp          |   96 +-
 libsanitizer/tsan/tsan_interface.h            |   10 +-
 libsanitizer/tsan/tsan_interface.inc          |  182 ++
 libsanitizer/tsan/tsan_interface_ann.cpp      |  172 +-
 libsanitizer/tsan/tsan_interface_atomic.cpp   |  323 ++-
 libsanitizer/tsan/tsan_interface_inl.h        |  133 --
 libsanitizer/tsan/tsan_interface_java.cpp     |  291 ++-
 libsanitizer/tsan/tsan_mman.cpp               |   10 +-
 libsanitizer/tsan/tsan_mman.h                 |   49 +-
 libsanitizer/tsan/tsan_mutex.cpp              |  280 ---
 libsanitizer/tsan/tsan_mutex.h                |   87 -
 libsanitizer/tsan/tsan_mutexset.cpp           |   47 +-
 libsanitizer/tsan/tsan_mutexset.h             |   29 +-
 libsanitizer/tsan/tsan_platform.h             | 1089 ++++-----
 libsanitizer/tsan/tsan_platform_linux.cpp     |  109 +-
 libsanitizer/tsan/tsan_platform_mac.cpp       |   22 +-
 libsanitizer/tsan/tsan_platform_posix.cpp     |   37 +-
 libsanitizer/tsan/tsan_platform_windows.cpp   |    3 +-
 libsanitizer/tsan/tsan_report.cpp             |   77 +-
 libsanitizer/tsan/tsan_report.h               |   36 +-
 libsanitizer/tsan/tsan_rtl.cpp                |  477 ++--
 libsanitizer/tsan/tsan_rtl.h                  |  499 ++--
 libsanitizer/tsan/tsan_rtl_mutex.cpp          |  419 ++--
 libsanitizer/tsan/tsan_rtl_report.cpp         |  328 ++-
 libsanitizer/tsan/tsan_rtl_thread.cpp         |  306 ++-
 libsanitizer/tsan/tsan_shadow.h               |  233 ++
 libsanitizer/tsan/tsan_stack_trace.cpp        |   12 +-
 libsanitizer/tsan/tsan_symbolize.cpp          |    3 +-
 libsanitizer/tsan/tsan_sync.cpp               |   58 +-
 libsanitizer/tsan/tsan_sync.h                 |   36 +-
 libsanitizer/tsan/tsan_trace.h                |  153 +-
 ...word_inl.h => tsan_update_shadow_word.inc} |    2 +-
 libsanitizer/tsan/tsan_vector_clock.cpp       |  126 +
 libsanitizer/tsan/tsan_vector_clock.h         |   51 +
 libsanitizer/ubsan/ubsan_diag.cpp             |    8 +-
 150 files changed, 7427 insertions(+), 6028 deletions(-)
 rename libsanitizer/hwasan/{hwasan_setjmp.S => hwasan_setjmp_aarch64.S} (87%)
 create mode 100644 libsanitizer/hwasan/hwasan_setjmp_x86_64.S
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
 create mode 100644 libsanitizer/tsan/tsan_ilist.h
 create mode 100644 libsanitizer/tsan/tsan_interface.inc
 delete mode 100644 libsanitizer/tsan/tsan_interface_inl.h
 delete mode 100644 libsanitizer/tsan/tsan_mutex.cpp
 delete mode 100644 libsanitizer/tsan/tsan_mutex.h
 create mode 100644 libsanitizer/tsan/tsan_shadow.h
 rename libsanitizer/tsan/{tsan_update_shadow_word_inl.h => tsan_update_shadow_word.inc} (96%)
 create mode 100644 libsanitizer/tsan/tsan_vector_clock.cpp
 create mode 100644 libsanitizer/tsan/tsan_vector_clock.h

-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/4] libsanitizer: Merge with upstream
  2021-10-01 15:36 [PATCH 0/4] libsanitizer: Merge with upstream commit 1c2e5fd66ea H.J. Lu
@ 2021-10-01 15:36 ` H.J. Lu
  2021-10-01 15:36 ` [PATCH 2/4] libsanitizer: Apply local patches H.J. Lu
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: H.J. Lu @ 2021-10-01 15:36 UTC (permalink / raw)
  To: gcc-patches

Merged revision: 1c2e5fd66ea27d0c51360ba4e22099124a915562
---
 libsanitizer/MERGE                            |    2 +-
 libsanitizer/asan/asan_fuchsia.cpp            |   35 +-
 libsanitizer/asan/asan_globals.cpp            |   33 +-
 libsanitizer/asan/asan_interceptors.cpp       |   18 +-
 libsanitizer/asan/asan_interceptors.h         |   52 +-
 libsanitizer/asan/asan_mapping.h              |    2 +-
 libsanitizer/asan/asan_report.cpp             |   10 +-
 libsanitizer/asan/asan_rtl.cpp                |   18 +-
 libsanitizer/asan/asan_stats.cpp              |   10 +-
 libsanitizer/asan/asan_thread.cpp             |    4 +-
 libsanitizer/hwasan/Makefile.am               |    3 +-
 libsanitizer/hwasan/Makefile.in               |   12 +-
 libsanitizer/hwasan/hwasan.cpp                |    3 +-
 libsanitizer/hwasan/hwasan.h                  |   25 +-
 .../hwasan/hwasan_allocation_functions.cpp    |   24 +
 libsanitizer/hwasan/hwasan_allocator.cpp      |   58 +-
 libsanitizer/hwasan/hwasan_dynamic_shadow.cpp |    9 +
 libsanitizer/hwasan/hwasan_fuchsia.cpp        |   23 +
 libsanitizer/hwasan/hwasan_interceptors.cpp   |   70 +-
 .../hwasan/hwasan_interface_internal.h        |   48 -
 libsanitizer/hwasan/hwasan_linux.cpp          |  147 +-
 libsanitizer/hwasan/hwasan_report.cpp         |   82 +-
 ...wasan_setjmp.S => hwasan_setjmp_aarch64.S} |   21 +-
 libsanitizer/hwasan/hwasan_setjmp_x86_64.S    |   80 +
 libsanitizer/hwasan/hwasan_thread.cpp         |    2 +-
 libsanitizer/hwasan/hwasan_type_test.cpp      |    2 +-
 .../include/sanitizer/asan_interface.h        |    2 +-
 .../include/sanitizer/common_interface_defs.h |    2 +-
 .../include/sanitizer/dfsan_interface.h       |    3 +-
 .../include/sanitizer/linux_syscall_hooks.h   | 2120 +++++++++--------
 .../include/sanitizer/tsan_interface.h        |    3 +
 .../interception/interception_win.cpp         |   48 +-
 libsanitizer/lsan/lsan_allocator.h            |    2 +-
 libsanitizer/lsan/lsan_common.cpp             |   12 +-
 .../sanitizer_common/sancov_flags.inc         |    2 +-
 .../sanitizer_common/sanitizer_addrhashmap.h  |    2 +-
 .../sanitizer_allocator_primary64.h           |   14 +-
 .../sanitizer_allocator_size_class_map.h      |    8 +-
 libsanitizer/sanitizer_common/sanitizer_asm.h |    4 +-
 .../sanitizer_atomic_clang_mips.h             |    2 +-
 .../sanitizer_common/sanitizer_common.h       |   20 +-
 .../sanitizer_common_interceptors.inc         |  652 ++---
 .../sanitizer_common_interceptors_format.inc  |   10 +-
 ...izer_common_interceptors_netbsd_compat.inc |    4 +-
 .../sanitizer_common_nolibc.cpp               |    1 +
 .../sanitizer_common_syscalls.inc             | 1559 +++++++-----
 .../sanitizer_coverage_fuchsia.cpp            |    8 +-
 .../sanitizer_coverage_libcdep_new.cpp        |   65 +-
 .../sanitizer_common/sanitizer_file.cpp       |   15 +
 .../sanitizer_common/sanitizer_file.h         |    2 +
 .../sanitizer_common/sanitizer_flag_parser.h  |    2 +-
 .../sanitizer_common/sanitizer_flags.inc      |    4 +
 .../sanitizer_common/sanitizer_fuchsia.cpp    |   41 -
 .../sanitizer_interceptors_ioctl_netbsd.inc   |    2 +-
 .../sanitizer_interface_internal.h            |    7 +-
 .../sanitizer_internal_defs.h                 |   46 +-
 .../sanitizer_common/sanitizer_libc.cpp       |   12 +
 .../sanitizer_common/sanitizer_libc.h         |    5 +-
 .../sanitizer_common/sanitizer_libignore.cpp  |   33 +-
 .../sanitizer_common/sanitizer_libignore.h    |   37 +-
 .../sanitizer_common/sanitizer_linux.cpp      |   83 +-
 .../sanitizer_linux_libcdep.cpp               |    4 -
 .../sanitizer_local_address_space_view.h      |    2 +-
 .../sanitizer_common/sanitizer_mac.cpp        |   41 +-
 libsanitizer/sanitizer_common/sanitizer_mac.h |   20 -
 .../sanitizer_common/sanitizer_mutex.cpp      |  186 ++
 .../sanitizer_common/sanitizer_mutex.h        |  325 +--
 .../sanitizer_common/sanitizer_platform.h     |   25 +-
 .../sanitizer_platform_interceptors.h         |   27 +-
 .../sanitizer_platform_limits_freebsd.cpp     |    4 +
 .../sanitizer_platform_limits_freebsd.h       |  164 +-
 .../sanitizer_platform_limits_linux.cpp       |   61 +-
 .../sanitizer_platform_limits_netbsd.cpp      |    1 +
 .../sanitizer_platform_limits_netbsd.h        |    1 +
 .../sanitizer_platform_limits_posix.cpp       |   25 +-
 .../sanitizer_platform_limits_posix.h         |   32 +-
 .../sanitizer_platform_limits_solaris.cpp     |    1 +
 .../sanitizer_platform_limits_solaris.h       |    1 +
 .../sanitizer_common/sanitizer_posix.h        |    7 +-
 .../sanitizer_posix_libcdep.cpp               |    2 +
 .../sanitizer_common/sanitizer_printf.cpp     |   37 +-
 .../sanitizer_signal_interceptors.inc         |   12 +-
 .../sanitizer_common/sanitizer_solaris.cpp    |   22 -
 .../sanitizer_common/sanitizer_stacktrace.cpp |   22 +-
 .../sanitizer_stacktrace_libcdep.cpp          |    2 +-
 .../sanitizer_stacktrace_printer.cpp          |   11 +-
 .../sanitizer_stacktrace_sparc.cpp            |    2 +-
 .../sanitizer_stoptheworld_linux_libcdep.cpp  |    2 +-
 .../sanitizer_stoptheworld_netbsd_libcdep.cpp |    2 +-
 .../sanitizer_common/sanitizer_symbolizer.h   |    6 +-
 .../sanitizer_symbolizer_internal.h           |    2 +-
 .../sanitizer_symbolizer_libcdep.cpp          |   12 +-
 .../sanitizer_syscall_linux_hexagon.inc       |  131 +
 .../sanitizer_thread_registry.cpp             |   22 +-
 .../sanitizer_thread_registry.h               |    2 +-
 .../sanitizer_tls_get_addr.cpp                |   19 +-
 .../sanitizer_common/sanitizer_win.cpp        |   24 +-
 libsanitizer/tsan/Makefile.am                 |    4 +-
 libsanitizer/tsan/Makefile.in                 |   13 +-
 libsanitizer/tsan/tsan_clock.cpp              |   10 +-
 libsanitizer/tsan/tsan_clock.h                |    2 +-
 libsanitizer/tsan/tsan_debugging.cpp          |   10 +-
 libsanitizer/tsan/tsan_defs.h                 |   66 +-
 libsanitizer/tsan/tsan_dense_alloc.h          |   35 +-
 libsanitizer/tsan/tsan_external.cpp           |   19 +-
 libsanitizer/tsan/tsan_fd.cpp                 |   24 +-
 libsanitizer/tsan/tsan_fd.h                   |    2 +-
 libsanitizer/tsan/tsan_flags.cpp              |    1 +
 libsanitizer/tsan/tsan_flags.inc              |    1 -
 libsanitizer/tsan/tsan_ignoreset.cpp          |   12 +-
 libsanitizer/tsan/tsan_ignoreset.h            |   13 +-
 libsanitizer/tsan/tsan_ilist.h                |  189 ++
 libsanitizer/tsan/tsan_interceptors.h         |   35 +-
 libsanitizer/tsan/tsan_interceptors_mac.cpp   |    6 +-
 libsanitizer/tsan/tsan_interceptors_posix.cpp |  417 ++--
 libsanitizer/tsan/tsan_interface.cpp          |   96 +-
 libsanitizer/tsan/tsan_interface.h            |   10 +-
 libsanitizer/tsan/tsan_interface.inc          |  182 ++
 libsanitizer/tsan/tsan_interface_ann.cpp      |  172 +-
 libsanitizer/tsan/tsan_interface_atomic.cpp   |  323 ++-
 libsanitizer/tsan/tsan_interface_inl.h        |  133 --
 libsanitizer/tsan/tsan_interface_java.cpp     |  291 ++-
 libsanitizer/tsan/tsan_mman.cpp               |   10 +-
 libsanitizer/tsan/tsan_mman.h                 |   49 +-
 libsanitizer/tsan/tsan_mutex.cpp              |  280 ---
 libsanitizer/tsan/tsan_mutex.h                |   87 -
 libsanitizer/tsan/tsan_mutexset.cpp           |   47 +-
 libsanitizer/tsan/tsan_mutexset.h             |   29 +-
 libsanitizer/tsan/tsan_platform.h             | 1089 ++++-----
 libsanitizer/tsan/tsan_platform_linux.cpp     |  109 +-
 libsanitizer/tsan/tsan_platform_mac.cpp       |   22 +-
 libsanitizer/tsan/tsan_platform_posix.cpp     |   37 +-
 libsanitizer/tsan/tsan_platform_windows.cpp   |    3 +-
 libsanitizer/tsan/tsan_report.cpp             |   77 +-
 libsanitizer/tsan/tsan_report.h               |   36 +-
 libsanitizer/tsan/tsan_rtl.cpp                |  477 ++--
 libsanitizer/tsan/tsan_rtl.h                  |  499 ++--
 libsanitizer/tsan/tsan_rtl_mutex.cpp          |  419 ++--
 libsanitizer/tsan/tsan_rtl_ppc64.S            |    1 -
 libsanitizer/tsan/tsan_rtl_report.cpp         |  328 ++-
 libsanitizer/tsan/tsan_rtl_thread.cpp         |  306 ++-
 libsanitizer/tsan/tsan_shadow.h               |  233 ++
 libsanitizer/tsan/tsan_stack_trace.cpp        |   12 +-
 libsanitizer/tsan/tsan_symbolize.cpp          |    3 +-
 libsanitizer/tsan/tsan_sync.cpp               |   58 +-
 libsanitizer/tsan/tsan_sync.h                 |   36 +-
 libsanitizer/tsan/tsan_trace.h                |  153 +-
 ...word_inl.h => tsan_update_shadow_word.inc} |    2 +-
 libsanitizer/tsan/tsan_vector_clock.cpp       |  126 +
 libsanitizer/tsan/tsan_vector_clock.h         |   51 +
 libsanitizer/ubsan/ubsan_diag.cpp             |    8 +-
 libsanitizer/ubsan/ubsan_flags.cpp            |    1 -
 libsanitizer/ubsan/ubsan_handlers.cpp         |   15 -
 libsanitizer/ubsan/ubsan_handlers.h           |    8 -
 libsanitizer/ubsan/ubsan_platform.h           |    2 -
 155 files changed, 7454 insertions(+), 6109 deletions(-)
 rename libsanitizer/hwasan/{hwasan_setjmp.S => hwasan_setjmp_aarch64.S} (87%)
 create mode 100644 libsanitizer/hwasan/hwasan_setjmp_x86_64.S
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
 create mode 100644 libsanitizer/tsan/tsan_ilist.h
 create mode 100644 libsanitizer/tsan/tsan_interface.inc
 delete mode 100644 libsanitizer/tsan/tsan_interface_inl.h
 delete mode 100644 libsanitizer/tsan/tsan_mutex.cpp
 delete mode 100644 libsanitizer/tsan/tsan_mutex.h
 create mode 100644 libsanitizer/tsan/tsan_shadow.h
 rename libsanitizer/tsan/{tsan_update_shadow_word_inl.h => tsan_update_shadow_word.inc} (96%)
 create mode 100644 libsanitizer/tsan/tsan_vector_clock.cpp
 create mode 100644 libsanitizer/tsan/tsan_vector_clock.h

The patch is too big:

https://gitlab.com/x86-gcc/gcc/-/commit/08221880c762b6731a537b174ca70b483b94eb0b

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/4] libsanitizer: Apply local patches
  2021-10-01 15:36 [PATCH 0/4] libsanitizer: Merge with upstream commit 1c2e5fd66ea H.J. Lu
  2021-10-01 15:36 ` [PATCH 1/4] libsanitizer: Merge with upstream H.J. Lu
@ 2021-10-01 15:36 ` H.J. Lu
  2021-10-01 15:36 ` [PATCH 3/4] libsanitizer: Bump asan/tsan versions H.J. Lu
  2021-10-01 15:36 ` [PATCH 4/4] Update c-c++-common/tsan/atomic_stack.c H.J. Lu
  3 siblings, 0 replies; 5+ messages in thread
From: H.J. Lu @ 2021-10-01 15:36 UTC (permalink / raw)
  To: gcc-patches

---
 libsanitizer/asan/asan_globals.cpp            | 19 ------------------
 libsanitizer/asan/asan_interceptors.h         |  7 ++++++-
 libsanitizer/asan/asan_mapping.h              |  2 +-
 .../sanitizer_linux_libcdep.cpp               |  4 ++++
 .../sanitizer_common/sanitizer_mac.cpp        | 12 +++++++++--
 libsanitizer/sanitizer_common/sanitizer_mac.h | 20 +++++++++++++++++++
 .../sanitizer_platform_limits_linux.cpp       |  5 ++++-
 .../sanitizer_platform_limits_posix.h         |  2 +-
 .../sanitizer_common/sanitizer_stacktrace.cpp | 17 +++++++++++-----
 libsanitizer/tsan/tsan_rtl_ppc64.S            |  1 +
 libsanitizer/ubsan/ubsan_flags.cpp            |  1 +
 libsanitizer/ubsan/ubsan_handlers.cpp         | 15 ++++++++++++++
 libsanitizer/ubsan/ubsan_handlers.h           |  8 ++++++++
 libsanitizer/ubsan/ubsan_platform.h           |  2 ++
 14 files changed, 85 insertions(+), 30 deletions(-)

diff --git a/libsanitizer/asan/asan_globals.cpp b/libsanitizer/asan/asan_globals.cpp
index 9bf378f6207..763d3c6d2c0 100644
--- a/libsanitizer/asan/asan_globals.cpp
+++ b/libsanitizer/asan/asan_globals.cpp
@@ -154,23 +154,6 @@ static void CheckODRViolationViaIndicator(const Global *g) {
   }
 }
 
-// Check ODR violation for given global G by checking if it's already poisoned.
-// We use this method in case compiler doesn't use private aliases for global
-// variables.
-static void CheckODRViolationViaPoisoning(const Global *g) {
-  if (__asan_region_is_poisoned(g->beg, g->size_with_redzone)) {
-    // This check may not be enough: if the first global is much larger
-    // the entire redzone of the second global may be within the first global.
-    for (ListOfGlobals *l = list_of_all_globals; l; l = l->next) {
-      if (g->beg == l->g->beg &&
-          (flags()->detect_odr_violation >= 2 || g->size != l->g->size) &&
-          !IsODRViolationSuppressed(g->name))
-        ReportODRViolation(g, FindRegistrationSite(g),
-                           l->g, FindRegistrationSite(l->g));
-    }
-  }
-}
-
 // Clang provides two different ways for global variables protection:
 // it can poison the global itself or its private alias. In former
 // case we may poison same symbol multiple times, that can help us to
@@ -216,8 +199,6 @@ static void RegisterGlobal(const Global *g) {
     // where two globals with the same name are defined in different modules.
     if (UseODRIndicator(g))
       CheckODRViolationViaIndicator(g);
-    else
-      CheckODRViolationViaPoisoning(g);
   }
   if (CanPoisonMemory())
     PoisonRedZones(*g);
diff --git a/libsanitizer/asan/asan_interceptors.h b/libsanitizer/asan/asan_interceptors.h
index 047b044c8bf..105c672cc24 100644
--- a/libsanitizer/asan/asan_interceptors.h
+++ b/libsanitizer/asan/asan_interceptors.h
@@ -81,7 +81,12 @@ void InitializePlatformInterceptors();
 #if ASAN_HAS_EXCEPTIONS && !SANITIZER_WINDOWS && !SANITIZER_SOLARIS && \
     !SANITIZER_NETBSD
 # define ASAN_INTERCEPT___CXA_THROW 1
-# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1
+# if ! defined(ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION) \
+     || ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION
+#   define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1
+# else
+#   define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 0
+# endif
 # if defined(_GLIBCXX_SJLJ_EXCEPTIONS) || (SANITIZER_IOS && defined(__arm__))
 #  define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION 1
 # else
diff --git a/libsanitizer/asan/asan_mapping.h b/libsanitizer/asan/asan_mapping.h
index e5a7f2007ae..4b0037fced3 100644
--- a/libsanitizer/asan/asan_mapping.h
+++ b/libsanitizer/asan/asan_mapping.h
@@ -165,7 +165,7 @@ static const u64 kAArch64_ShadowOffset64 = 1ULL << 36;
 static const u64 kRiscv64_ShadowOffset64 = 0xd55550000;
 static const u64 kMIPS32_ShadowOffset32 = 0x0aaa0000;
 static const u64 kMIPS64_ShadowOffset64 = 1ULL << 37;
-static const u64 kPPC64_ShadowOffset64 = 1ULL << 44;
+static const u64 kPPC64_ShadowOffset64 = 1ULL << 41;
 static const u64 kSystemZ_ShadowOffset64 = 1ULL << 52;
 static const u64 kSPARC64_ShadowOffset64 = 1ULL << 43;  // 0x80000000000
 static const u64 kFreeBSD_ShadowOffset32 = 1ULL << 30;  // 0x40000000
diff --git a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
index 7ce9e25da34..fc5619e4b37 100644
--- a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
@@ -759,9 +759,13 @@ u32 GetNumberOfCPUs() {
 #elif SANITIZER_SOLARIS
   return sysconf(_SC_NPROCESSORS_ONLN);
 #else
+#if defined(CPU_COUNT)
   cpu_set_t CPUs;
   CHECK_EQ(sched_getaffinity(0, sizeof(cpu_set_t), &CPUs), 0);
   return CPU_COUNT(&CPUs);
+#else
+  return 1;
+#endif
 #endif
 }
 
diff --git a/libsanitizer/sanitizer_common/sanitizer_mac.cpp b/libsanitizer/sanitizer_common/sanitizer_mac.cpp
index b8839f197d2..fa077a129c2 100644
--- a/libsanitizer/sanitizer_common/sanitizer_mac.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_mac.cpp
@@ -37,7 +37,7 @@
 extern char **environ;
 #endif
 
-#if defined(__has_include) && __has_include(<os/trace.h>)
+#if defined(__has_include) && __has_include(<os/trace.h>) && defined(__BLOCKS__)
 #define SANITIZER_OS_TRACE 1
 #include <os/trace.h>
 #else
@@ -70,7 +70,15 @@ extern "C" {
 #include <mach/mach_time.h>
 #include <mach/vm_statistics.h>
 #include <malloc/malloc.h>
-#include <os/log.h>
+#if defined(__has_builtin) && __has_builtin(__builtin_os_log_format)
+# include <os/log.h>
+#else
+   /* Without support for __builtin_os_log_format, fall back to the older
+      method.  */
+# define OS_LOG_DEFAULT 0
+# define os_log_error(A,B,C) \
+  asl_log(nullptr, nullptr, ASL_LEVEL_ERR, "%s", (C));
+#endif
 #include <pthread.h>
 #include <sched.h>
 #include <signal.h>
diff --git a/libsanitizer/sanitizer_common/sanitizer_mac.h b/libsanitizer/sanitizer_common/sanitizer_mac.h
index 0b6af5a3c0e..96a5986a47a 100644
--- a/libsanitizer/sanitizer_common/sanitizer_mac.h
+++ b/libsanitizer/sanitizer_common/sanitizer_mac.h
@@ -14,6 +14,26 @@
 
 #include "sanitizer_common.h"
 #include "sanitizer_platform.h"
+
+/* TARGET_OS_OSX is not present in SDKs before Darwin16 (macOS 10.12) use
+   TARGET_OS_MAC (we have no support for iOS in any form for these versions,
+   so there's no ambiguity).  */
+#if !defined(TARGET_OS_OSX) && TARGET_OS_MAC
+# define TARGET_OS_OSX 1
+#endif
+
+/* Other TARGET_OS_xxx are not present on earlier versions, define them to
+   0 (we have no support for them; they are not valid targets anyway).  */
+#ifndef TARGET_OS_IOS
+#define TARGET_OS_IOS 0
+#endif
+#ifndef TARGET_OS_TV
+#define TARGET_OS_TV 0
+#endif
+#ifndef TARGET_OS_WATCH
+#define TARGET_OS_WATCH 0
+#endif
+
 #if SANITIZER_MAC
 #include "sanitizer_posix.h"
 
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
index 9d577570ea1..2b1a2f7932c 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
@@ -26,7 +26,10 @@
 
 // With old kernels (and even new kernels on powerpc) asm/stat.h uses types that
 // are not defined anywhere in userspace headers. Fake them. This seems to work
-// fine with newer headers, too.
+// fine with newer headers, too.  Beware that with <sys/stat.h>, struct stat
+// takes the form of struct stat64 on 32-bit platforms if _FILE_OFFSET_BITS=64.
+// Also, for some platforms (e.g. mips) there are additional members in the
+// <sys/stat.h> struct stat:s.
 #include <linux/posix_types.h>
 #  if defined(__x86_64__) || defined(__mips__) || defined(__hexagon__)
 #    include <sys/stat.h>
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
index d69b344dd61..da53b5abef2 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -83,7 +83,7 @@ const unsigned struct_kernel_stat64_sz = 104;
 #elif defined(__mips__)
 const unsigned struct_kernel_stat_sz = SANITIZER_ANDROID
                                            ? FIRST_32_SECOND_64(104, 128)
-                                           : FIRST_32_SECOND_64(160, 216);
+                                           : FIRST_32_SECOND_64(144, 216);
 const unsigned struct_kernel_stat64_sz = 104;
 #elif defined(__s390__) && !defined(__s390x__)
 const unsigned struct_kernel_stat_sz = 64;
diff --git a/libsanitizer/sanitizer_common/sanitizer_stacktrace.cpp b/libsanitizer/sanitizer_common/sanitizer_stacktrace.cpp
index 4707c6c5d00..15ea4954aa4 100644
--- a/libsanitizer/sanitizer_common/sanitizer_stacktrace.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_stacktrace.cpp
@@ -86,8 +86,8 @@ static inline uhwptr *GetCanonicFrame(uptr bp,
   // Nope, this does not look right either. This means the frame after next does
   // not have a valid frame pointer, but we can still extract the caller PC.
   // Unfortunately, there is no way to decide between GCC and LLVM frame
-  // layouts. Assume LLVM.
-  return bp_prev;
+  // layouts. Assume GCC.
+  return bp_prev - 1;
 #else
   return (uhwptr*)bp;
 #endif
@@ -110,14 +110,21 @@ void BufferedStackTrace::UnwindFast(uptr pc, uptr bp, uptr stack_top,
          IsAligned((uptr)frame, sizeof(*frame)) &&
          size < max_depth) {
 #ifdef __powerpc__
-    // PowerPC ABIs specify that the return address is saved at offset
-    // 16 of the *caller's* stack frame.  Thus we must dereference the
-    // back chain to find the caller frame before extracting it.
+    // PowerPC ABIs specify that the return address is saved on the
+    // *caller's* stack frame.  Thus we must dereference the back chain
+    // to find the caller frame before extracting it.
     uhwptr *caller_frame = (uhwptr*)frame[0];
     if (!IsValidFrame((uptr)caller_frame, stack_top, bottom) ||
         !IsAligned((uptr)caller_frame, sizeof(uhwptr)))
       break;
+    // For most ABIs the offset where the return address is saved is two
+    // register sizes.  The exception is the SVR4 ABI, which uses an
+    // offset of only one register size.
+#ifdef _CALL_SYSV
+    uhwptr pc1 = caller_frame[1];
+#else
     uhwptr pc1 = caller_frame[2];
+#endif
 #elif defined(__s390__)
     uhwptr pc1 = frame[14];
 #elif defined(__riscv)
diff --git a/libsanitizer/tsan/tsan_rtl_ppc64.S b/libsanitizer/tsan/tsan_rtl_ppc64.S
index 8285e21aa1e..9e533a71a9c 100644
--- a/libsanitizer/tsan/tsan_rtl_ppc64.S
+++ b/libsanitizer/tsan/tsan_rtl_ppc64.S
@@ -1,5 +1,6 @@
 #include "tsan_ppc_regs.h"
 
+        .machine altivec
         .section .text
         .hidden __tsan_setjmp
         .globl _setjmp
diff --git a/libsanitizer/ubsan/ubsan_flags.cpp b/libsanitizer/ubsan/ubsan_flags.cpp
index 25cefd46ce2..9a66bd37518 100644
--- a/libsanitizer/ubsan/ubsan_flags.cpp
+++ b/libsanitizer/ubsan/ubsan_flags.cpp
@@ -50,6 +50,7 @@ void InitializeFlags() {
   {
     CommonFlags cf;
     cf.CopyFrom(*common_flags());
+    cf.print_summary = false;
     cf.external_symbolizer_path = GetFlag("UBSAN_SYMBOLIZER_PATH");
     OverrideCommonFlags(cf);
   }
diff --git a/libsanitizer/ubsan/ubsan_handlers.cpp b/libsanitizer/ubsan/ubsan_handlers.cpp
index e201e6bba22..2184625aa6e 100644
--- a/libsanitizer/ubsan/ubsan_handlers.cpp
+++ b/libsanitizer/ubsan/ubsan_handlers.cpp
@@ -894,6 +894,21 @@ void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
 
 }  // namespace __ubsan
 
+void __ubsan::__ubsan_handle_cfi_bad_icall(CFIBadIcallData *CallData,
+                                           ValueHandle Function) {
+  GET_REPORT_OPTIONS(false);
+  CFICheckFailData Data = {CFITCK_ICall, CallData->Loc, CallData->Type};
+  handleCFIBadIcall(&Data, Function, Opts);
+}
+
+void __ubsan::__ubsan_handle_cfi_bad_icall_abort(CFIBadIcallData *CallData,
+                                                 ValueHandle Function) {
+  GET_REPORT_OPTIONS(true);
+  CFICheckFailData Data = {CFITCK_ICall, CallData->Loc, CallData->Type};
+  handleCFIBadIcall(&Data, Function, Opts);
+  Die();
+}
+
 void __ubsan::__ubsan_handle_cfi_check_fail(CFICheckFailData *Data,
                                             ValueHandle Value,
                                             uptr ValidVtable) {
diff --git a/libsanitizer/ubsan/ubsan_handlers.h b/libsanitizer/ubsan/ubsan_handlers.h
index 219fb15de55..9f412353fc0 100644
--- a/libsanitizer/ubsan/ubsan_handlers.h
+++ b/libsanitizer/ubsan/ubsan_handlers.h
@@ -215,12 +215,20 @@ enum CFITypeCheckKind : unsigned char {
   CFITCK_VMFCall,
 };
 
+struct CFIBadIcallData {
+  SourceLocation Loc;
+  const TypeDescriptor &Type;
+};
+
 struct CFICheckFailData {
   CFITypeCheckKind CheckKind;
   SourceLocation Loc;
   const TypeDescriptor &Type;
 };
 
+/// \brief Handle control flow integrity failure for indirect function calls.
+RECOVERABLE(cfi_bad_icall, CFIBadIcallData *Data, ValueHandle Function)
+
 /// \brief Handle control flow integrity failures.
 RECOVERABLE(cfi_check_fail, CFICheckFailData *Data, ValueHandle Function,
             uptr VtableIsValid)
diff --git a/libsanitizer/ubsan/ubsan_platform.h b/libsanitizer/ubsan/ubsan_platform.h
index d2cc2e10bd2..ad3e883f0f3 100644
--- a/libsanitizer/ubsan/ubsan_platform.h
+++ b/libsanitizer/ubsan/ubsan_platform.h
@@ -12,6 +12,7 @@
 #ifndef UBSAN_PLATFORM_H
 #define UBSAN_PLATFORM_H
 
+#ifndef CAN_SANITIZE_UB
 // Other platforms should be easy to add, and probably work as-is.
 #if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) ||        \
     defined(__NetBSD__) || defined(__DragonFly__) ||                           \
@@ -21,5 +22,6 @@
 #else
 # define CAN_SANITIZE_UB 0
 #endif
+#endif //CAN_SANITIZE_UB
 
 #endif
-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/4] libsanitizer: Bump asan/tsan versions
  2021-10-01 15:36 [PATCH 0/4] libsanitizer: Merge with upstream commit 1c2e5fd66ea H.J. Lu
  2021-10-01 15:36 ` [PATCH 1/4] libsanitizer: Merge with upstream H.J. Lu
  2021-10-01 15:36 ` [PATCH 2/4] libsanitizer: Apply local patches H.J. Lu
@ 2021-10-01 15:36 ` H.J. Lu
  2021-10-01 15:36 ` [PATCH 4/4] Update c-c++-common/tsan/atomic_stack.c H.J. Lu
  3 siblings, 0 replies; 5+ messages in thread
From: H.J. Lu @ 2021-10-01 15:36 UTC (permalink / raw)
  To: gcc-patches

Bump asan/tsan versions for upstream commits:

commit f1bb30a4956f83e46406d6082e5d376ce65391e0
Author: Vitaly Buka <vitalybuka@google.com>
Date:   Thu Aug 26 10:25:09 2021 -0700

    [sanitizer] No THREADLOCAL in qsort and bsearch

    qsort can reuse qsort_r if available.
    bsearch always passes key as the first comparator argument, so we
    can use it to wrap the original comparator.

    Differential Revision: https://reviews.llvm.org/D108751

commit d77b476c1953bcb0a608b2d6a4f2dd9fe0b43967
Author: Dmitry Vyukov <dvyukov@google.com>
Date:   Mon Aug 2 16:52:53 2021 +0200

    tsan: avoid extra call indirection in unaligned access functions

    Currently unaligned access functions are defined in tsan_interface.cpp
    and do a real call to MemoryAccess. This means we have a real call
    and no read/write constant propagation.

    Unaligned memory access can be quite hot for some programs
    (observed on some compression algorithms with ~90% of unaligned accesses).

    Move them to tsan_interface_inl.h to avoid the additional call
    and enable constant propagation.
    Also reorder the actual store and memory access handling for
    __sanitizer_unaligned_store callbacks to enable tail calling
    in MemoryAccess.

    Depends on D107282.

    Reviewed By: vitalybuka, melver

commit 97795be22f634667ce7a022398c59ccc9f7440eb
Author: Dmitry Vyukov <dvyukov@google.com>
Date:   Fri Jul 30 08:35:11 2021 +0200

    tsan: optimize test-only barrier

    The updated lots_of_threads.c test with 300 threads
    started running for too long on machines with low
    hardware parallelism (e.g. taskset -c 0-1).
    On lots of CPUs it finishes in ~2 secs. But with
    taskset -c 0-1 it runs for hundreds of seconds
    effectively spinning in the barrier in the sleep loop.

    We now have the handy futex API in sanitizer_common.
    Use it instead of the passive spin loop.
    It makes the test run only faster with taskset -c 0-1,
    it runs for ~1.5 secs, while with full parallelism
    it still runs for ~2 secs (but consumes less CPU time).

    Depends on D107131.

    Reviewed By: vitalybuka
---
 libsanitizer/asan/libtool-version | 2 +-
 libsanitizer/tsan/libtool-version | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libsanitizer/asan/libtool-version b/libsanitizer/asan/libtool-version
index 2cd4546d1b9..7a2a23f2b56 100644
--- a/libsanitizer/asan/libtool-version
+++ b/libsanitizer/asan/libtool-version
@@ -3,4 +3,4 @@
 # a separate file so that version updates don't involve re-running
 # automake.
 # CURRENT:REVISION:AGE
-7:0:0
+8:0:0
diff --git a/libsanitizer/tsan/libtool-version b/libsanitizer/tsan/libtool-version
index 79dfeeea15f..6fa8162dd20 100644
--- a/libsanitizer/tsan/libtool-version
+++ b/libsanitizer/tsan/libtool-version
@@ -3,4 +3,4 @@
 # a separate file so that version updates don't involve re-running
 # automake.
 # CURRENT:REVISION:AGE
-1:0:0
+2:0:0
-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 4/4] Update c-c++-common/tsan/atomic_stack.c
  2021-10-01 15:36 [PATCH 0/4] libsanitizer: Merge with upstream commit 1c2e5fd66ea H.J. Lu
                   ` (2 preceding siblings ...)
  2021-10-01 15:36 ` [PATCH 3/4] libsanitizer: Bump asan/tsan versions H.J. Lu
@ 2021-10-01 15:36 ` H.J. Lu
  3 siblings, 0 replies; 5+ messages in thread
From: H.J. Lu @ 2021-10-01 15:36 UTC (permalink / raw)
  To: gcc-patches

Print out from __tsan_atomic32_fetch_add was removed by

commit da7a5c09c86c3f639c63ce8843d6f21c915ae1c6
Author: Dmitry Vyukov <dvyukov@google.com>
Date:   Wed Jul 28 16:57:39 2021 +0200

    tsan: don't print __tsan_atomic* functions in report stacks

    Currently __tsan_atomic* functions do FuncEntry/Exit using caller PC
    and then use current PC (pointing to __tsan_atomic* itself) during
    memory access handling. As the result the top function in reports
    involving atomics is __tsan_atomic* and the next frame points to user code.

    Remove FuncEntry/Exit in atomic functions and use caller PC
    during memory access handling. This removes __tsan_atomic*
    from the top of report stacks, so that they point right to user code.

    The motivation for this is performance.
    Some atomic operations are very hot (mostly loads),
    so removing FuncEntry/Exit is beneficial.
    This also reduces thread trace consumption (1 event instead of 3).

    __tsan_atomic* at the top of the stack is not necessary
    and does not add any new information. We already say
    "atomic write of size 4", "__tsan_atomic32_store" does not add
    anything new.

    It also makes reports consistent between atomic and non-atomic
    accesses. For normal accesses we say "previous write" and point
    to user code; for atomics we say "previous atomic write" and now
    also point to user code.

    Reviewed By: vitalybuka

    Differential Revision: https://reviews.llvm.org/D106966

	* c-c++-common/tsan/atomic_stack.c: Don't expect print out from
	__tsan_atomic32_fetch_add.
---
 gcc/testsuite/c-c++-common/tsan/atomic_stack.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/gcc/testsuite/c-c++-common/tsan/atomic_stack.c b/gcc/testsuite/c-c++-common/tsan/atomic_stack.c
index 746afa7b466..09ac7c72245 100644
--- a/gcc/testsuite/c-c++-common/tsan/atomic_stack.c
+++ b/gcc/testsuite/c-c++-common/tsan/atomic_stack.c
@@ -31,5 +31,4 @@ int main() {
 
 /* { dg-output "WARNING: ThreadSanitizer: data race.*(\n|\r\n|\r)" } */
 /* { dg-output "  Atomic write of size 4.*" } */
-/* { dg-output "    #0 __tsan_atomic32_fetch_add.*" } */
-/* { dg-output "    #1 Thread1.*" } */
+/* { dg-output "    #0 Thread1.*" } */
-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-10-01 15:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-01 15:36 [PATCH 0/4] libsanitizer: Merge with upstream commit 1c2e5fd66ea H.J. Lu
2021-10-01 15:36 ` [PATCH 1/4] libsanitizer: Merge with upstream H.J. Lu
2021-10-01 15:36 ` [PATCH 2/4] libsanitizer: Apply local patches H.J. Lu
2021-10-01 15:36 ` [PATCH 3/4] libsanitizer: Bump asan/tsan versions H.J. Lu
2021-10-01 15:36 ` [PATCH 4/4] Update c-c++-common/tsan/atomic_stack.c H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).