Module Name: src
Committed By: rin
Date: Tue Jul 2 02:36:22 UTC 2024
Modified Files:
src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common:
sanitizer_atomic_clang.h
src/external/gpl3/gcc/lib: Makefile.sanitizer
Log Message:
gcc: lib*san: Enable built-in 64-bit atomic ops for !__HAVE_ATOMIC64_OPS
as already done for some mips platforms by upstream.
Now, libubsan (as well as libasan if platform itself is supported)
work on some ILP32 platforms.
Fix PR port-sparc/58352.
This may be slower than another possible fix where all 64-bit atomic
variables are replaced by 32-bit ones. But, it should still be better
than having relatively large diffs to upstream; sanitizers are not
enabled for normal use, anyway.
XXX
Note that filename confusion in upstream codes:
- "sanitizer_atomic_clang.h" is used also for GCC.
- "sanitizer_atomic_clang_mips.h" has no mips specific codes.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
cvs rdiff -u -r1.18 -r1.19 src/external/gpl3/gcc/lib/Makefile.sanitizer
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h:1.4 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h:1.5
--- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h:1.4 Mon Jul 31 01:44:56 2023
+++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h Tue Jul 2 02:36:22 2024
@@ -94,11 +94,17 @@ inline bool atomic_compare_exchange_weak
} // namespace __sanitizer
// This include provides explicit template instantiations for atomic_uint64_t
-// on MIPS32, which does not directly support 8 byte atomics. It has to
+// on platforms, which do not directly support 8 byte atomics. It has to
// proceed the template definitions above.
#if defined(_MIPS_SIM) && defined(_ABIO32) && _MIPS_SIM == _ABIO32
# include "sanitizer_atomic_clang_mips.h"
#endif
+#if SANITIZER_NETBSD
+# include <machine/types.h>
+# ifndef __HAVE_ATOMIC64_OPS
+# include "sanitizer_atomic_clang_mips.h"
+# endif
+#endif
#undef ATOMIC_ORDER
Index: src/external/gpl3/gcc/lib/Makefile.sanitizer
diff -u src/external/gpl3/gcc/lib/Makefile.sanitizer:1.18 src/external/gpl3/gcc/lib/Makefile.sanitizer:1.19
--- src/external/gpl3/gcc/lib/Makefile.sanitizer:1.18 Sun Feb 25 06:07:28 2024
+++ src/external/gpl3/gcc/lib/Makefile.sanitizer Tue Jul 2 02:36:22 2024
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.sanitizer,v 1.18 2024/02/25 06:07:28 mrg Exp $
+# $NetBSD: Makefile.sanitizer,v 1.19 2024/07/02 02:36:22 rin Exp $
SANITIZER=${GCCDIST}/libsanitizer
.PATH: ${SANITIZER}/interception ${SANITIZER}/sanitizer_common
@@ -123,13 +123,3 @@ COPTS.sanitizer_symbolizer_report.cc +=
COPTS.ubsan_diag.cc += -O1
COPTS.ubsan_init.cc += -O1
.endif
-
-# XXX GCC 12 sanitizers has higher minimal requirements upon some CPUs.
-# - 32-bit SPARC needs v8 to supply eg __sync_add_and_fetch_4
-# - i386 needs i586 for __sync_val_compare_and_swap_8.
-.if ${MACHINE_ARCH} == "sparc"
-COPTS+= -mcpu=v8
-.endif
-.if ${MACHINE_ARCH} == "i386"
-COPTS+= -march=i586
-.endif