xref: /netbsd-src/external/gpl3/gcc/lib/Makefile.sanitizer (revision e9d2e9484a67dec0737b15427004fe0b82519a2d)
1#	$NetBSD: Makefile.sanitizer,v 1.19 2024/07/02 02:36:22 rin Exp $
2
3SANITIZER=${GCCDIST}/libsanitizer
4.PATH: ${SANITIZER}/interception ${SANITIZER}/sanitizer_common
5
6INTERCEPTION_SRCS= \
7	interception_linux.cpp \
8	interception_mac.cpp \
9	interception_win.cpp \
10	interception_type_test.cpp
11
12# XXXmknative
13SANITIZER_SRCS+= \
14	sancov_flags.cpp \
15	sanitizer_allocator.cpp \
16	sanitizer_allocator_checks.cpp \
17	sanitizer_allocator_report.cpp \
18	sanitizer_common.cpp \
19	sanitizer_common_libcdep.cpp \
20	sanitizer_coverage_libcdep_new.cpp \
21	sanitizer_deadlock_detector1.cpp \
22	sanitizer_deadlock_detector2.cpp \
23	sanitizer_errno.cpp \
24	sanitizer_file.cpp \
25	sanitizer_flags.cpp \
26	sanitizer_flag_parser.cpp \
27	sanitizer_libc.cpp \
28	sanitizer_libignore.cpp \
29	sanitizer_linux.cpp \
30	sanitizer_linux_libcdep.cpp \
31	sanitizer_linux_s390.cpp \
32	sanitizer_mac.cpp \
33	sanitizer_mac_libcdep.cpp \
34	sanitizer_mutex.cpp \
35	sanitizer_netbsd.cpp \
36	sanitizer_openbsd.cpp \
37	sanitizer_platform_limits_freebsd.cpp \
38	sanitizer_platform_limits_linux.cpp \
39	sanitizer_platform_limits_netbsd.cpp \
40	sanitizer_platform_limits_openbsd.cpp \
41	sanitizer_platform_limits_posix.cpp \
42	sanitizer_platform_limits_solaris.cpp \
43	sanitizer_posix.cpp \
44	sanitizer_posix_libcdep.cpp \
45	sanitizer_printf.cpp \
46	sanitizer_procmaps_bsd.cpp \
47	sanitizer_procmaps_common.cpp \
48	sanitizer_procmaps_linux.cpp \
49	sanitizer_procmaps_mac.cpp \
50	sanitizer_procmaps_solaris.cpp \
51	sanitizer_solaris.cpp \
52	sanitizer_stackdepot.cpp \
53	sanitizer_stacktrace.cpp \
54	sanitizer_stacktrace_libcdep.cpp \
55	sanitizer_stacktrace_sparc.cpp \
56	sanitizer_symbolizer_mac.cpp \
57	sanitizer_symbolizer_report.cpp \
58	sanitizer_stacktrace_printer.cpp \
59	sanitizer_stoptheworld_linux_libcdep.cpp \
60	sanitizer_stoptheworld_netbsd_libcdep.cpp \
61	sanitizer_stoptheworld_mac.cpp \
62	sanitizer_suppressions.cpp \
63	sanitizer_symbolizer.cpp \
64	sanitizer_symbolizer_libbacktrace.cpp \
65	sanitizer_symbolizer_libcdep.cpp \
66	sanitizer_symbolizer_posix_libcdep.cpp \
67	sanitizer_symbolizer_win.cpp \
68	sanitizer_termination.cpp \
69	sanitizer_thread_registry.cpp \
70	sanitizer_tls_get_addr.cpp \
71	sanitizer_unwind_linux_libcdep.cpp \
72	sanitizer_unwind_win.cpp \
73	sanitizer_win.cpp
74
75# The linux build does this to avoid preinit sections on shared libraries
76CSHLIBFLAGS+= -DPIC
77
78#SRCS+=	${INTERCEPTION_SRCS} ${SANITIZER_SRCS} ${UBSAN_SRCS}
79SRCS+=	${INTERCEPTION_SRCS} ${SANITIZER_SRCS}
80CPPFLAGS+=-I${SANITIZER}/include -I${SANITIZER}
81CPPFLAGS.sanitizer_netbsd.cc+=-I${GCCDIST}/gcc/ginclude
82CPPFLAGS+=-D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
83CPPFLAGS+=-D__STDC_LIMIT_MACROS
84CPPFLAGS+=-DASAN_NEEDS_SEGV=1
85CPPFLAGS+=-DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0
86#CPPFLAGS+=-DCAN_SANITIZE_UB=0
87
88
89LIBDPLIBS+=    pthread ${.CURDIR}/../../../../../lib/libpthread
90COPTS+=-fPIC -fno-builtin -fno-exceptions -fno-rtti
91COPTS+=-funwind-tables -fvisibility=hidden -fno-ipa-icf
92#COPTS+=-fsized-deallocation
93COPTS+=-std=gnu++14
94
95# XXX is this mis-compiled, and supposed to be some weak-symbol override thing?
96.for _f in asan_suppressions.cpp sancov_flags.cpp
97#COPTS.${_f}+=-Wno-error=address
98COPTS.${_f}+=-Wno-address
99.endfor
100# XXX
101COPTS.sanitizer_posix.cpp+=-Wno-error=maybe-uninitialized
102COPTS.tsan_rtl_access.cpp+=-Wno-error=maybe-uninitialized
103COPTS.ubsan_handlers_cxx.cpp+=-Wno-error=maybe-uninitialized
104
105# Can't profile without it
106#-fomit-frame-pointer
107
108.if ${MACHINE_ARCH} == "vax"
109COPTS.sanitizer_allocator.cc += -O1
110COPTS.sanitizer_common.cc += -O1
111COPTS.sanitizer_common_libcdep.cc += -O1
112COPTS.sanitizer_coverage_libcdep.cc += -O1
113COPTS.sanitizer_coverage_mapping_libcdep.cc += -O1
114COPTS.sanitizer_deadlock_detector1.cc += -O1
115COPTS.sanitizer_mac.cc += -O1
116COPTS.sanitizer_netbsd.cc += -O1
117COPTS.sanitizer_posix.cc += -O1
118COPTS.sanitizer_printf.cc += -O1
119COPTS.sanitizer_procmaps_common.cc += -O1
120COPTS.sanitizer_stackdepot.cc += -O1
121COPTS.sanitizer_symbolizer_libcdep.cc += -O1
122COPTS.sanitizer_symbolizer_report.cc += -O1
123COPTS.ubsan_diag.cc += -O1
124COPTS.ubsan_init.cc += -O1
125.endif
126