Hi. I've just finished my first merge from libsanitizer mainline. Overall it looks fine, apparently ABI hasn't changed and so that SONAME bump is not needed.
I tested ubsan and asan bootstrap on x86_64-linux-gnu and run regression tests and bootstraped on aarch64-linux-gnu, ppc64le-linux-gnu and also on x86_64-linux-gnu. I run abidiff comparison for GCC 8.2: $ abidiff /usr/lib64/libtsan.so.0.0.0 ./x86_64-pc-linux-gnu/libsanitizer/tsan/.libs/libtsan.so --stat Functions changes summary: 0 Removed, 0 Changed, 38 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable Function symbols changes summary: 1 Removed, 0 Added function symbol not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info $ abidiff /usr/lib64/libasan.so.5.0.0 ./x86_64-pc-linux-gnu/libsanitizer/asan/.libs/libasan.so --stat Functions changes summary: 0 Removed, 0 Changed, 30 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable Function symbols changes summary: 3 Removed, 0 Added function symbols not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info $ abidiff /usr/lib64/libubsan.so.1.0.0 ./x86_64-pc-linux-gnu/libsanitizer/ubsan/.libs/libubsan.so.1.0.0 --stat Functions changes summary: 0 Removed, 0 Changed, 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable Function symbols changes summary: 1 Removed, 0 Added function symbol not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info And for libasan with current LLVM top: $ abidiff /home/marxin/BIG/Programming/llvm/objdir/lib/clang/7.0.0/lib/linux/libclang_rt.asan-x86_64.so ./x86_64-pc-linux-gnu/libsanitizer/ubsan/.libs/libubsan.so --stat ELF SONAME changed Functions changes summary: 763 Removed, 0 Changed, 43 Added functions Variables changes summary: 4 Removed, 0 Changed, 2 Added variables Function symbols changes summary: 518 Removed, 4 Added function symbols not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info I'll briefly comment what each patch in the series does: marxin (7): Update merge script and HOWTO_MERGE documentation. I tweaked documentation a bit and added support for git to be used. Merge from upstream 345033. Result of the merge.sh script file as is without any additional adjustment. Update build system: include new files and run autoheader, autoconf, automake Apply LOCAL_PATCHES and remove not used ones. New local GCC patch for CAN_SANITIZE_UB ifdef. Application of local patches, on of them was just partially applied. Adjust asan_shadow_offset for powerpc64 targets. Sync about shodow memory offset that was changes in libsanitizer. Update test-suite expected output after rewording in libsanitizer. Change in wording that was changed. gcc/config/powerpcspe/powerpcspe.c | 2 +- gcc/config/rs6000/rs6000.c | 2 +- gcc/testsuite/c-c++-common/ubsan/pr63839.c | 2 +- .../c-c++-common/ubsan/unreachable-1.c | 2 +- .../c-c++-common/ubsan/unreachable-2.c | 2 +- .../c-c++-common/ubsan/unreachable-4.c | 2 +- libsanitizer/HOWTO_MERGE | 9 +- libsanitizer/LOCAL_PATCHES | 2 - libsanitizer/MERGE | 2 +- libsanitizer/asan/asan_activation.cc | 7 +- libsanitizer/asan/asan_allocator.cc | 166 +- libsanitizer/asan/asan_allocator.h | 9 +- libsanitizer/asan/asan_debugging.cc | 3 +- libsanitizer/asan/asan_descriptions.cc | 71 +- libsanitizer/asan/asan_descriptions.h | 18 +- libsanitizer/asan/asan_errors.cc | 204 +- libsanitizer/asan/asan_errors.h | 281 +- libsanitizer/asan/asan_fake_stack.cc | 4 +- libsanitizer/asan/asan_flags.cc | 12 +- libsanitizer/asan/asan_flags.inc | 3 +- libsanitizer/asan/asan_fuchsia.cc | 2 +- libsanitizer/asan/asan_globals.cc | 11 +- libsanitizer/asan/asan_globals_win.cc | 6 +- libsanitizer/asan/asan_init_version.h | 7 + libsanitizer/asan/asan_interceptors.cc | 59 +- libsanitizer/asan/asan_interceptors.h | 28 +- .../asan/asan_interceptors_memintrinsics.cc | 16 +- .../asan/asan_interceptors_memintrinsics.h | 25 +- libsanitizer/asan/asan_internal.h | 7 +- libsanitizer/asan/asan_linux.cc | 73 +- libsanitizer/asan/asan_lock.h | 1 - libsanitizer/asan/asan_mac.cc | 28 +- libsanitizer/asan/asan_malloc_linux.cc | 81 +- libsanitizer/asan/asan_malloc_local.h | 42 + libsanitizer/asan/asan_malloc_mac.cc | 3 + libsanitizer/asan/asan_malloc_win.cc | 15 +- libsanitizer/asan/asan_mapping.h | 142 +- libsanitizer/asan/asan_mapping_myriad.h | 84 + libsanitizer/asan/asan_memory_profile.cc | 12 +- libsanitizer/asan/asan_new_delete.cc | 128 +- libsanitizer/asan/asan_poisoning.cc | 13 +- libsanitizer/asan/asan_poisoning.h | 5 +- libsanitizer/asan/asan_posix.cc | 1 - libsanitizer/asan/asan_premap_shadow.cc | 77 + libsanitizer/asan/asan_premap_shadow.h | 28 + libsanitizer/asan/asan_report.cc | 73 +- libsanitizer/asan/asan_report.h | 19 +- libsanitizer/asan/asan_rtems.cc | 251 + libsanitizer/asan/asan_rtl.cc | 45 +- libsanitizer/asan/asan_shadow_setup.cc | 18 +- libsanitizer/asan/asan_stack.h | 48 +- libsanitizer/asan/asan_thread.cc | 30 +- libsanitizer/asan/asan_win.cc | 17 +- libsanitizer/asan/asan_win_dll_thunk.cc | 2 +- libsanitizer/config.h.in | 6 +- libsanitizer/configure | 8 +- .../include/sanitizer/allocator_interface.h | 14 +- .../include/sanitizer/asan_interface.h | 24 +- .../include/sanitizer/common_interface_defs.h | 13 +- .../include/sanitizer/coverage_interface.h | 4 +- .../include/sanitizer/esan_interface.h | 4 +- .../include/sanitizer/hwasan_interface.h | 82 + .../include/sanitizer/lsan_interface.h | 14 +- .../include/sanitizer/msan_interface.h | 16 +- .../include/sanitizer/netbsd_syscall_hooks.h | 4732 +++++++++++++++++ .../include/sanitizer/scudo_interface.h | 37 + .../include/sanitizer/tsan_interface.h | 6 + libsanitizer/interception/interception.h | 57 +- .../interception/interception_linux.cc | 24 +- .../interception/interception_linux.h | 13 +- libsanitizer/interception/interception_mac.cc | 5 +- libsanitizer/interception/interception_mac.h | 4 +- .../interception/interception_type_test.cc | 9 +- libsanitizer/interception/interception_win.cc | 19 +- libsanitizer/interception/interception_win.h | 4 +- libsanitizer/lsan/lsan.cc | 9 +- libsanitizer/lsan/lsan.h | 12 +- libsanitizer/lsan/lsan_allocator.cc | 74 +- libsanitizer/lsan/lsan_allocator.h | 15 +- libsanitizer/lsan/lsan_common.cc | 48 +- libsanitizer/lsan/lsan_common.h | 13 +- libsanitizer/lsan/lsan_common_linux.cc | 20 +- libsanitizer/lsan/lsan_common_mac.cc | 11 +- libsanitizer/lsan/lsan_interceptors.cc | 70 +- libsanitizer/lsan/lsan_malloc_mac.cc | 3 + libsanitizer/lsan/lsan_thread.cc | 5 + libsanitizer/merge.sh | 6 +- libsanitizer/sanitizer_common/Makefile.am | 4 +- libsanitizer/sanitizer_common/Makefile.in | 17 +- libsanitizer/sanitizer_common/sancov_begin.S | 5 + libsanitizer/sanitizer_common/sancov_end.S | 5 + .../sanitizer_common/sanitizer_allocator.cc | 73 +- .../sanitizer_common/sanitizer_allocator.h | 38 +- .../sanitizer_allocator_bytemap.h | 4 +- .../sanitizer_allocator_checks.h | 8 +- .../sanitizer_allocator_combined.h | 16 +- .../sanitizer_allocator_interface.h | 3 + .../sanitizer_allocator_internal.h | 16 +- .../sanitizer_allocator_local_cache.h | 93 +- .../sanitizer_allocator_primary32.h | 120 +- .../sanitizer_allocator_primary64.h | 197 +- .../sanitizer_allocator_report.cc | 123 + .../sanitizer_allocator_report.h | 36 + .../sanitizer_allocator_secondary.h | 84 +- .../sanitizer_allocator_size_class_map.h | 36 +- .../sanitizer_allocator_stats.h | 2 +- libsanitizer/sanitizer_common/sanitizer_asm.h | 8 +- .../sanitizer_common/sanitizer_atomic_clang.h | 17 +- .../sanitizer_atomic_clang_mips.h | 115 + .../sanitizer_atomic_clang_other.h | 65 +- .../sanitizer_atomic_clang_x86.h | 6 +- .../sanitizer_common/sanitizer_bitvector.h | 4 +- .../sanitizer_common/sanitizer_bvgraph.h | 2 +- .../sanitizer_common/sanitizer_common.cc | 43 +- .../sanitizer_common/sanitizer_common.h | 248 +- .../sanitizer_common_interceptors.inc | 1086 +++- .../sanitizer_common_interceptors_ioctl.inc | 8 +- .../sanitizer_common_interface.inc | 2 + .../sanitizer_common_libcdep.cc | 274 +- .../sanitizer_common_nolibc.cc | 1 - .../sanitizer_coverage_fuchsia.cc | 20 +- .../sanitizer_coverage_libcdep_new.cc | 3 +- .../sanitizer_coverage_win_sections.cc | 53 +- .../sanitizer_deadlock_detector2.cc | 8 +- .../sanitizer_common/sanitizer_errno.h | 5 +- .../sanitizer_common/sanitizer_file.cc | 59 +- .../sanitizer_common/sanitizer_flag_parser.h | 4 +- .../sanitizer_common/sanitizer_flags.cc | 8 - .../sanitizer_common/sanitizer_flags.inc | 23 +- .../sanitizer_common/sanitizer_fuchsia.cc | 276 +- .../sanitizer_common/sanitizer_getauxval.h | 46 + .../sanitizer_interceptors_ioctl_netbsd.inc | 1487 ++++++ .../sanitizer_interface_internal.h | 6 + .../sanitizer_internal_defs.h | 48 +- .../sanitizer_common/sanitizer_libc.cc | 39 +- .../sanitizer_common/sanitizer_libc.h | 7 +- .../sanitizer_common/sanitizer_libignore.cc | 7 +- .../sanitizer_common/sanitizer_libignore.h | 8 +- .../sanitizer_common/sanitizer_linux.cc | 684 ++- .../sanitizer_common/sanitizer_linux.h | 36 +- .../sanitizer_linux_libcdep.cc | 489 +- .../sanitizer_common/sanitizer_linux_s390.cc | 2 +- .../sanitizer_common/sanitizer_linux_x86_64.S | 2 - .../sanitizer_common/sanitizer_mac.cc | 122 +- libsanitizer/sanitizer_common/sanitizer_mac.h | 6 +- .../sanitizer_common/sanitizer_mac_libcdep.cc | 2 +- .../sanitizer_common/sanitizer_malloc_mac.inc | 35 +- .../sanitizer_common/sanitizer_mutex.h | 11 +- .../sanitizer_common/sanitizer_netbsd.cc | 328 ++ .../sanitizer_common/sanitizer_openbsd.cc | 108 + .../sanitizer_common/sanitizer_platform.h | 67 +- .../sanitizer_platform_interceptors.h | 307 +- .../sanitizer_platform_limits_linux.cc | 7 +- .../sanitizer_platform_limits_netbsd.cc | 1952 ++++++- .../sanitizer_platform_limits_netbsd.h | 2000 ++++++- .../sanitizer_platform_limits_openbsd.cc | 277 + .../sanitizer_platform_limits_openbsd.h | 380 ++ .../sanitizer_platform_limits_posix.cc | 23 +- .../sanitizer_platform_limits_posix.h | 74 +- .../sanitizer_platform_limits_solaris.cc | 364 ++ .../sanitizer_platform_limits_solaris.h | 495 ++ .../sanitizer_common/sanitizer_posix.cc | 7 +- .../sanitizer_common/sanitizer_posix.h | 7 + .../sanitizer_posix_libcdep.cc | 83 +- .../sanitizer_common/sanitizer_printf.cc | 38 +- .../sanitizer_common/sanitizer_procmaps.h | 6 +- ...s_freebsd.cc => sanitizer_procmaps_bsd.cc} | 70 +- .../sanitizer_procmaps_common.cc | 55 +- .../sanitizer_procmaps_linux.cc | 8 +- .../sanitizer_procmaps_mac.cc | 19 +- .../sanitizer_procmaps_solaris.cc | 57 + .../sanitizer_common/sanitizer_quarantine.h | 40 +- .../sanitizer_report_decorator.h | 5 +- .../sanitizer_common/sanitizer_ring_buffer.h | 160 + .../sanitizer_common/sanitizer_rtems.cc | 280 + .../sanitizer_common/sanitizer_rtems.h | 19 + .../sanitizer_signal_interceptors.inc | 46 +- .../sanitizer_common/sanitizer_solaris.cc | 219 + .../sanitizer_common/sanitizer_stackdepot.cc | 6 +- .../sanitizer_common/sanitizer_stacktrace.cc | 21 +- .../sanitizer_common/sanitizer_stacktrace.h | 13 +- .../sanitizer_stacktrace_libcdep.cc | 24 +- .../sanitizer_stacktrace_printer.cc | 87 +- .../sanitizer_stacktrace_sparc.cc | 56 + .../sanitizer_stoptheworld_linux_libcdep.cc | 55 +- .../sanitizer_suppressions.cc | 2 +- .../sanitizer_common/sanitizer_symbolizer.h | 7 +- .../sanitizer_symbolizer_fuchsia.h | 38 + .../sanitizer_symbolizer_libcdep.cc | 11 +- ...hsia.cc => sanitizer_symbolizer_markup.cc} | 78 +- .../sanitizer_symbolizer_posix_libcdep.cc | 8 +- .../sanitizer_symbolizer_report.cc | 280 + .../sanitizer_symbolizer_rtems.h | 39 + .../sanitizer_symbolizer_win.cc | 4 - .../sanitizer_syscall_generic.inc | 33 +- .../sanitizer_syscall_linux_arm.inc | 136 + .../sanitizer_syscalls_netbsd.inc | 3784 +++++++++++++ .../sanitizer_common/sanitizer_termination.cc | 9 + .../sanitizer_thread_registry.cc | 40 +- .../sanitizer_thread_registry.h | 5 + .../sanitizer_tls_get_addr.cc | 3 +- .../sanitizer_unwind_linux_libcdep.cc | 10 +- .../sanitizer_common/sanitizer_unwind_win.cc | 73 + .../sanitizer_vector.h} | 36 +- .../sanitizer_common/sanitizer_win.cc | 178 +- .../sanitizer_common/sanitizer_win_defs.h | 20 +- .../sanitizer_win_weak_interception.cc | 2 +- libsanitizer/tsan/tsan_debugging.cc | 7 + libsanitizer/tsan/tsan_interceptors.cc | 605 ++- libsanitizer/tsan/tsan_interceptors.h | 12 + libsanitizer/tsan/tsan_interceptors_mac.cc | 57 +- libsanitizer/tsan/tsan_interface.h | 13 + libsanitizer/tsan/tsan_interface_ann.cc | 6 +- libsanitizer/tsan/tsan_libdispatch_mac.cc | 14 +- libsanitizer/tsan/tsan_malloc_mac.cc | 10 + libsanitizer/tsan/tsan_mman.cc | 50 +- libsanitizer/tsan/tsan_new_delete.cc | 107 +- libsanitizer/tsan/tsan_platform.h | 171 +- libsanitizer/tsan/tsan_platform_linux.cc | 34 +- libsanitizer/tsan/tsan_platform_mac.cc | 10 +- libsanitizer/tsan/tsan_platform_posix.cc | 59 +- libsanitizer/tsan/tsan_report.cc | 14 +- libsanitizer/tsan/tsan_report.h | 2 +- libsanitizer/tsan/tsan_rtl.cc | 77 +- libsanitizer/tsan/tsan_rtl.h | 32 +- libsanitizer/tsan/tsan_rtl_aarch64.S | 62 +- libsanitizer/tsan/tsan_rtl_amd64.S | 114 +- libsanitizer/tsan/tsan_rtl_mutex.cc | 10 +- libsanitizer/tsan/tsan_rtl_report.cc | 49 +- libsanitizer/tsan/tsan_rtl_thread.cc | 2 +- libsanitizer/tsan/tsan_stack_trace.cc | 5 + libsanitizer/tsan/tsan_stack_trace.h | 4 + libsanitizer/tsan/tsan_suppressions.cc | 2 +- libsanitizer/tsan/tsan_symbolize.cc | 41 + libsanitizer/tsan/tsan_sync.cc | 3 +- libsanitizer/tsan/tsan_sync.h | 4 +- libsanitizer/ubsan/Makefile.am | 1 + libsanitizer/ubsan/Makefile.in | 8 +- libsanitizer/ubsan/ubsan_checks.inc | 6 + libsanitizer/ubsan/ubsan_diag.cc | 17 +- libsanitizer/ubsan/ubsan_diag.h | 27 +- libsanitizer/ubsan/ubsan_flags.cc | 15 +- libsanitizer/ubsan/ubsan_flags.inc | 3 + libsanitizer/ubsan/ubsan_handlers.cc | 200 +- libsanitizer/ubsan/ubsan_handlers.h | 29 + libsanitizer/ubsan/ubsan_handlers_cxx.cc | 48 +- .../ubsan/ubsan_init_standalone_preinit.cc | 3 +- libsanitizer/ubsan/ubsan_interface.inc | 4 + libsanitizer/ubsan/ubsan_monitor.cc | 74 + libsanitizer/ubsan/ubsan_monitor.h | 47 + libsanitizer/ubsan/ubsan_platform.h | 11 +- .../ubsan/ubsan_signals_standalone.cc | 30 +- libsanitizer/ubsan/ubsan_signals_standalone.h | 2 + .../ubsan/ubsan_win_weak_interception.cc | 1 + 254 files changed, 25081 insertions(+), 3416 deletions(-) create mode 100644 libsanitizer/asan/asan_malloc_local.h create mode 100644 libsanitizer/asan/asan_mapping_myriad.h create mode 100644 libsanitizer/asan/asan_premap_shadow.cc create mode 100644 libsanitizer/asan/asan_premap_shadow.h create mode 100644 libsanitizer/asan/asan_rtems.cc create mode 100644 libsanitizer/include/sanitizer/hwasan_interface.h create mode 100644 libsanitizer/include/sanitizer/netbsd_syscall_hooks.h create mode 100644 libsanitizer/include/sanitizer/scudo_interface.h create mode 100644 libsanitizer/sanitizer_common/sancov_begin.S create mode 100644 libsanitizer/sanitizer_common/sancov_end.S create mode 100644 libsanitizer/sanitizer_common/sanitizer_allocator_report.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_allocator_report.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_atomic_clang_mips.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_getauxval.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc create mode 100644 libsanitizer/sanitizer_common/sanitizer_netbsd.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_openbsd.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h rename libsanitizer/sanitizer_common/{sanitizer_procmaps_freebsd.cc => sanitizer_procmaps_bsd.cc} (57%) create mode 100644 libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_ring_buffer.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_rtems.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_rtems.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_solaris.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_stacktrace_sparc.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_fuchsia.h rename libsanitizer/sanitizer_common/{sanitizer_symbolizer_fuchsia.cc => sanitizer_symbolizer_markup.cc} (61%) create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_report.cc create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_rtems.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_syscall_linux_arm.inc create mode 100644 libsanitizer/sanitizer_common/sanitizer_syscalls_netbsd.inc create mode 100644 libsanitizer/sanitizer_common/sanitizer_unwind_win.cc rename libsanitizer/{tsan/tsan_vector.h => sanitizer_common/sanitizer_vector.h} (75%) create mode 100644 libsanitizer/ubsan/ubsan_monitor.cc create mode 100644 libsanitizer/ubsan/ubsan_monitor.h -- 2.19.0