Module Name: src
Committed By: christos
Date: Sat Mar 22 17:05:48 UTC 2025
Modified Files:
src/external/gpl3/gcc/dist/gcc/config: netbsd.h
src/external/gpl3/gcc/lib/libasan: Makefile
src/external/gpl3/gcc/lib/liblsan: Makefile
src/external/gpl3/gcc/lib/libtsan: Makefile
Added Files:
src/external/gpl3/gcc/lib: preinit.mk
Log Message:
PR/59189: RVP: Like Linux and FreeBSD use .preinit_array to initialize the
sanitizers.
To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/external/gpl3/gcc/dist/gcc/config/netbsd.h
cvs rdiff -u -r0 -r1.1 src/external/gpl3/gcc/lib/preinit.mk
cvs rdiff -u -r1.37 -r1.38 src/external/gpl3/gcc/lib/libasan/Makefile
cvs rdiff -u -r1.10 -r1.11 src/external/gpl3/gcc/lib/liblsan/Makefile
cvs rdiff -u -r1.17 -r1.18 src/external/gpl3/gcc/lib/libtsan/Makefile
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/gcc/config/netbsd.h
diff -u src/external/gpl3/gcc/dist/gcc/config/netbsd.h:1.40 src/external/gpl3/gcc/dist/gcc/config/netbsd.h:1.41
--- src/external/gpl3/gcc/dist/gcc/config/netbsd.h:1.40 Sun Jul 30 21:46:31 2023
+++ src/external/gpl3/gcc/dist/gcc/config/netbsd.h Sat Mar 22 13:05:48 2025
@@ -203,9 +203,29 @@ along with GCC; see the file COPYING3.
do { \
netbsd_patch_builtins (); \
} while(0)
-
+/* Link -lasan early on the command line. For -static-libasan, don't link
+ it for -shared link, the executable should be compiled with -static-libasan
+ in that case, and for executable link with --{,no-}whole-archive around
+ it to force everything into the executable. And similarly for -ltsan,
+ -lhwasan, and -llsan. */
#if defined(HAVE_LD_STATIC_DYNAMIC)
+#undef LIBASAN_EARLY_SPEC
+#define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \
+ "%{static-libasan:%{!shared:" \
+ LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
+ LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
+#undef LIBHWASAN_EARLY_SPEC
+#define LIBHWASAN_EARLY_SPEC "%{static-libhwasan:%{!shared:" \
+ LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \
+ LD_DYNAMIC_OPTION "}}%{!static-libhwasan:-lhwasan}"
#undef LIBTSAN_EARLY_SPEC
-#define LIBTSAN_EARLY_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \
- " -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "} -lpthread"
+#define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \
+ "%{static-libtsan:%{!shared:" \
+ LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
+ LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}"
+#undef LIBLSAN_EARLY_SPEC
+#define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \
+ "%{static-liblsan:%{!shared:" \
+ LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \
+ LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan}"
#endif
Index: src/external/gpl3/gcc/lib/libasan/Makefile
diff -u src/external/gpl3/gcc/lib/libasan/Makefile:1.37 src/external/gpl3/gcc/lib/libasan/Makefile:1.38
--- src/external/gpl3/gcc/lib/libasan/Makefile:1.37 Sun Sep 29 20:32:12 2024
+++ src/external/gpl3/gcc/lib/libasan/Makefile Sat Mar 22 13:05:48 2025
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.37 2024/09/30 00:32:12 kalvisd Exp $
+# $NetBSD: Makefile,v 1.38 2025/03/22 17:05:48 christos Exp $
UNSUPPORTED_COMPILER.clang= # defined
NOSANITIZER= # defined
@@ -61,4 +61,6 @@ COPTS.asan_interceptors.cpp += -fno-jump
COPTS.asan_interceptors.cpp += -mlong-jump-table-offsets -Os
.endif
+.include "../preinit.mk"
+
.include <bsd.lib.mk>
Index: src/external/gpl3/gcc/lib/liblsan/Makefile
diff -u src/external/gpl3/gcc/lib/liblsan/Makefile:1.10 src/external/gpl3/gcc/lib/liblsan/Makefile:1.11
--- src/external/gpl3/gcc/lib/liblsan/Makefile:1.10 Sun Sep 29 20:32:12 2024
+++ src/external/gpl3/gcc/lib/liblsan/Makefile Sat Mar 22 13:05:48 2025
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.10 2024/09/30 00:32:12 kalvisd Exp $
+# $NetBSD: Makefile,v 1.11 2025/03/22 17:05:48 christos Exp $
.include <bsd.own.mk>
@@ -28,4 +28,6 @@ LIBDPLIBS+= pthread ${NETBSDSRCDIR}/lib/
CWARNFLAGS.clang+= -Wno-error=unused-private-field
+.include "../preinit.mk"
+
.include <bsd.lib.mk>
Index: src/external/gpl3/gcc/lib/libtsan/Makefile
diff -u src/external/gpl3/gcc/lib/libtsan/Makefile:1.17 src/external/gpl3/gcc/lib/libtsan/Makefile:1.18
--- src/external/gpl3/gcc/lib/libtsan/Makefile:1.17 Wed Aug 2 21:36:55 2023
+++ src/external/gpl3/gcc/lib/libtsan/Makefile Sat Mar 22 13:05:48 2025
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.17 2023/08/03 01:36:55 mrg Exp $
+# $NetBSD: Makefile,v 1.18 2025/03/22 17:05:48 christos Exp $
UNSUPPORTED_COMPILER.clang= # defined
NOSANITIZER= # defined
@@ -67,4 +67,6 @@ LIBDPLIBS+= pthread ${NETBSDSRCDIR}/lib/
CPPFLAGS+=-DCAN_SANITIZE_UB=0
COPTS.tsan_interceptors.cpp += -Wno-unused-function
+.include "../preinit.mk"
+
.include <bsd.lib.mk>
Added files:
Index: src/external/gpl3/gcc/lib/preinit.mk
diff -u /dev/null src/external/gpl3/gcc/lib/preinit.mk:1.1
--- /dev/null Sat Mar 22 13:05:48 2025
+++ src/external/gpl3/gcc/lib/preinit.mk Sat Mar 22 13:05:48 2025
@@ -0,0 +1,12 @@
+# $NetBSD: preinit.mk,v 1.1 2025/03/22 17:05:48 christos Exp $
+
+FILE=lib${LIB}_preinit.o
+FILES+=${FILE}
+FILESDIR=/usr/lib
+CLEANFILES+=${FILE} ${LIB}_preinit.o
+
+${FILE}: ${LIB}_preinit.o
+ ${_MKTARGET_CREATE}
+ cp ${.ALLSRC} ${.TARGET}
+
+.include <bsd.files.mk>