1*ec02198aSmrg#	$NetBSD: Makefile.sanitizer,v 1.6 2023/02/20 02:11:57 mrg Exp $
263d1a8abSmrg
363d1a8abSmrgSANITIZER=${GCCDIST}/libsanitizer
463d1a8abSmrg.PATH: ${SANITIZER}/interception ${SANITIZER}/sanitizer_common
563d1a8abSmrg
663d1a8abSmrgINTERCEPTION_SRCS= \
763d1a8abSmrginterception_linux.cc \
863d1a8abSmrginterception_mac.cc \
963d1a8abSmrginterception_type_test.cc \
1063d1a8abSmrginterception_win.cc
1163d1a8abSmrg
12c7a68eb7Smrg# XXXmknative
1363d1a8abSmrgSANITIZER_SRCS+= \
14c7a68eb7Smrg	sancov_flags.cc \
1563d1a8abSmrg	sanitizer_allocator.cc \
16c7a68eb7Smrg	sanitizer_allocator_checks.cc \
170fc04c29Smrg	sanitizer_allocator_report.cc \
1863d1a8abSmrg	sanitizer_common.cc \
1963d1a8abSmrg	sanitizer_common_libcdep.cc \
20c7a68eb7Smrg	sanitizer_coverage_libcdep_new.cc \
2163d1a8abSmrg	sanitizer_deadlock_detector1.cc \
2263d1a8abSmrg	sanitizer_deadlock_detector2.cc \
23c7a68eb7Smrg	sanitizer_errno.cc \
24c7a68eb7Smrg	sanitizer_file.cc \
2563d1a8abSmrg	sanitizer_flag_parser.cc \
260fc04c29Smrg	sanitizer_flags.cc \
2763d1a8abSmrg	sanitizer_libc.cc \
2863d1a8abSmrg	sanitizer_libignore.cc \
2963d1a8abSmrg	sanitizer_linux.cc \
3063d1a8abSmrg	sanitizer_linux_libcdep.cc \
3163d1a8abSmrg	sanitizer_linux_s390.cc \
3263d1a8abSmrg	sanitizer_mac.cc \
330fc04c29Smrg	sanitizer_netbsd.cc \
340fc04c29Smrg	sanitizer_openbsd.cc \
3563d1a8abSmrg	sanitizer_persistent_allocator.cc \
3663d1a8abSmrg	sanitizer_platform_limits_linux.cc \
37c7a68eb7Smrg	sanitizer_platform_limits_netbsd.cc \
380fc04c29Smrg	sanitizer_platform_limits_openbsd.cc \
390fc04c29Smrg	sanitizer_platform_limits_solaris.cc \
4063d1a8abSmrg	sanitizer_posix.cc \
4163d1a8abSmrg	sanitizer_posix_libcdep.cc \
4263d1a8abSmrg	sanitizer_printf.cc \
430fc04c29Smrg	sanitizer_procmaps_bsd.cc \
4463d1a8abSmrg	sanitizer_procmaps_common.cc \
4563d1a8abSmrg	sanitizer_procmaps_linux.cc \
4663d1a8abSmrg	sanitizer_procmaps_mac.cc \
470fc04c29Smrg	sanitizer_procmaps_solaris.cc \
480fc04c29Smrg	sanitizer_rtems.cc \
490fc04c29Smrg	sanitizer_solaris.cc \
5063d1a8abSmrg	sanitizer_stackdepot.cc \
5163d1a8abSmrg	sanitizer_stacktrace.cc \
5263d1a8abSmrg	sanitizer_stacktrace_libcdep.cc \
5363d1a8abSmrg	sanitizer_stacktrace_printer.cc \
540fc04c29Smrg	sanitizer_stacktrace_sparc.cc \
5563d1a8abSmrg	sanitizer_stoptheworld_linux_libcdep.cc \
560fc04c29Smrg	sanitizer_stoptheworld_netbsd_libcdep.cc \
5763d1a8abSmrg	sanitizer_suppressions.cc \
5863d1a8abSmrg	sanitizer_symbolizer.cc \
5963d1a8abSmrg	sanitizer_symbolizer_libbacktrace.cc \
6063d1a8abSmrg	sanitizer_symbolizer_libcdep.cc \
610fc04c29Smrg	sanitizer_symbolizer_mac.cc \
6263d1a8abSmrg	sanitizer_symbolizer_posix_libcdep.cc \
630fc04c29Smrg	sanitizer_symbolizer_report.cc \
6463d1a8abSmrg	sanitizer_symbolizer_win.cc \
6563d1a8abSmrg	sanitizer_termination.cc \
6663d1a8abSmrg	sanitizer_thread_registry.cc \
6763d1a8abSmrg	sanitizer_tls_get_addr.cc \
6863d1a8abSmrg	sanitizer_unwind_linux_libcdep.cc \
690fc04c29Smrg	sanitizer_unwind_win.cc \
7063d1a8abSmrg	sanitizer_win.cc
7163d1a8abSmrg
7263d1a8abSmrg# The linux build does this to avoid preinit sections on shared libraries
7363d1a8abSmrgCSHLIBFLAGS+= -DPIC
7463d1a8abSmrg
7563d1a8abSmrg#SRCS+=	${INTERCEPTION_SRCS} ${SANITIZER_SRCS} ${UBSAN_SRCS}
7663d1a8abSmrgSRCS+=	${INTERCEPTION_SRCS} ${SANITIZER_SRCS}
7763d1a8abSmrgCPPFLAGS+=-I${SANITIZER}/include -I${SANITIZER}
7863d1a8abSmrgCPPFLAGS.sanitizer_netbsd.cc+=-I${GCCDIST}/gcc/ginclude
7963d1a8abSmrgCPPFLAGS+=-D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
8063d1a8abSmrgCPPFLAGS+=-D__STDC_LIMIT_MACROS -DSANITIZER_HAS_EXCEPTIONS=1
8163d1a8abSmrgCPPFLAGS+=-DSANITIZER_NEEDS_SEGV=1
8263d1a8abSmrg#CPPFLAGS+=-DCAN_SANITIZE_UB=0
8363d1a8abSmrg
840fc04c29Smrg
8563d1a8abSmrgLIBDPLIBS+=    pthread ${.CURDIR}/../../../../../lib/libpthread
8663d1a8abSmrgCOPTS+=-std=gnu++11 -fsized-deallocation -fvisibility=hidden
8763d1a8abSmrgCOPTS+=-fno-builtin -fno-exceptions -fno-rtti -funwind-tables
8863d1a8abSmrg
8963d1a8abSmrg# Can't profile without it`
9063d1a8abSmrg#-fomit-frame-pointer
9163d1a8abSmrg
9263d1a8abSmrg.if ${MACHINE_ARCH} == "vax"
9363d1a8abSmrgCOPTS.sanitizer_allocator.cc += -O1
9463d1a8abSmrgCOPTS.sanitizer_common.cc += -O1
9563d1a8abSmrgCOPTS.sanitizer_common_libcdep.cc += -O1
9663d1a8abSmrgCOPTS.sanitizer_coverage_libcdep.cc += -O1
9763d1a8abSmrgCOPTS.sanitizer_coverage_mapping_libcdep.cc += -O1
9863d1a8abSmrgCOPTS.sanitizer_deadlock_detector1.cc += -O1
9963d1a8abSmrgCOPTS.sanitizer_mac.cc += -O1
10063d1a8abSmrgCOPTS.sanitizer_netbsd.cc += -O1
10163d1a8abSmrgCOPTS.sanitizer_posix.cc += -O1
10263d1a8abSmrgCOPTS.sanitizer_printf.cc += -O1
10363d1a8abSmrgCOPTS.sanitizer_procmaps_common.cc += -O1
10463d1a8abSmrgCOPTS.sanitizer_stackdepot.cc += -O1
10563d1a8abSmrgCOPTS.sanitizer_symbolizer_libcdep.cc += -O1
1060fc04c29SmrgCOPTS.sanitizer_symbolizer_report.cc += -O1
10763d1a8abSmrgCOPTS.ubsan_diag.cc += -O1
10863d1a8abSmrgCOPTS.ubsan_init.cc += -O1
10963d1a8abSmrg.endif
110