# $NetBSD: Makefile.sanitizer,v 1.17 2023/08/03 01:36:54 mrg Exp $ SANITIZER=${GCCDIST}/libsanitizer .PATH: ${SANITIZER}/interception ${SANITIZER}/sanitizer_common INTERCEPTION_SRCS= \ interception_linux.cpp \ interception_mac.cpp \ interception_win.cpp \ interception_type_test.cpp # XXXmknative SANITIZER_SRCS+= \ sancov_flags.cpp \ sanitizer_allocator.cpp \ sanitizer_allocator_checks.cpp \ sanitizer_allocator_report.cpp \ sanitizer_common.cpp \ sanitizer_common_libcdep.cpp \ sanitizer_coverage_libcdep_new.cpp \ sanitizer_deadlock_detector1.cpp \ sanitizer_deadlock_detector2.cpp \ sanitizer_errno.cpp \ sanitizer_file.cpp \ sanitizer_flags.cpp \ sanitizer_flag_parser.cpp \ sanitizer_libc.cpp \ sanitizer_libignore.cpp \ sanitizer_linux.cpp \ sanitizer_linux_libcdep.cpp \ sanitizer_linux_s390.cpp \ sanitizer_mac.cpp \ sanitizer_mac_libcdep.cpp \ sanitizer_mutex.cpp \ sanitizer_netbsd.cpp \ sanitizer_openbsd.cpp \ sanitizer_platform_limits_freebsd.cpp \ sanitizer_platform_limits_linux.cpp \ sanitizer_platform_limits_netbsd.cpp \ sanitizer_platform_limits_openbsd.cpp \ sanitizer_platform_limits_posix.cpp \ sanitizer_platform_limits_solaris.cpp \ sanitizer_posix.cpp \ sanitizer_posix_libcdep.cpp \ sanitizer_printf.cpp \ sanitizer_procmaps_bsd.cpp \ sanitizer_procmaps_common.cpp \ sanitizer_procmaps_linux.cpp \ sanitizer_procmaps_mac.cpp \ sanitizer_procmaps_solaris.cpp \ sanitizer_solaris.cpp \ sanitizer_stackdepot.cpp \ sanitizer_stacktrace.cpp \ sanitizer_stacktrace_libcdep.cpp \ sanitizer_stacktrace_sparc.cpp \ sanitizer_symbolizer_mac.cpp \ sanitizer_symbolizer_report.cpp \ sanitizer_stacktrace_printer.cpp \ sanitizer_stoptheworld_linux_libcdep.cpp \ sanitizer_stoptheworld_netbsd_libcdep.cpp \ sanitizer_stoptheworld_mac.cpp \ sanitizer_suppressions.cpp \ sanitizer_symbolizer.cpp \ sanitizer_symbolizer_libbacktrace.cpp \ sanitizer_symbolizer_libcdep.cpp \ sanitizer_symbolizer_posix_libcdep.cpp \ sanitizer_symbolizer_win.cpp \ sanitizer_termination.cpp \ sanitizer_thread_registry.cpp \ sanitizer_tls_get_addr.cpp \ sanitizer_unwind_linux_libcdep.cpp \ sanitizer_unwind_win.cpp \ sanitizer_win.cpp # The linux build does this to avoid preinit sections on shared libraries CSHLIBFLAGS+= -DPIC #SRCS+= ${INTERCEPTION_SRCS} ${SANITIZER_SRCS} ${UBSAN_SRCS} SRCS+= ${INTERCEPTION_SRCS} ${SANITIZER_SRCS} CPPFLAGS+=-I${SANITIZER}/include -I${SANITIZER} CPPFLAGS.sanitizer_netbsd.cc+=-I${GCCDIST}/gcc/ginclude CPPFLAGS+=-D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS CPPFLAGS+=-D__STDC_LIMIT_MACROS CPPFLAGS+=-DASAN_NEEDS_SEGV=1 CPPFLAGS+=-DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0 #CPPFLAGS+=-DCAN_SANITIZE_UB=0 LIBDPLIBS+= pthread ${.CURDIR}/../../../../../lib/libpthread COPTS+=-fPIC -fno-builtin -fno-exceptions -fno-rtti COPTS+=-funwind-tables -fvisibility=hidden -fno-ipa-icf #COPTS+=-fsized-deallocation COPTS+=-std=gnu++14 # XXX is this mis-compiled, and supposed to be some weak-symbol override thing? .for _f in asan_suppressions.cpp sancov_flags.cpp #COPTS.${_f}+=-Wno-error=address COPTS.${_f}+=-Wno-address .endfor # XXX COPTS.sanitizer_posix.cpp+=-Wno-error=maybe-uninitialized COPTS.tsan_rtl_access.cpp+=-Wno-error=maybe-uninitialized COPTS.ubsan_handlers_cxx.cpp+=-Wno-error=maybe-uninitialized # Can't profile without it #-fomit-frame-pointer .if ${MACHINE_ARCH} == "vax" COPTS.sanitizer_allocator.cc += -O1 COPTS.sanitizer_common.cc += -O1 COPTS.sanitizer_common_libcdep.cc += -O1 COPTS.sanitizer_coverage_libcdep.cc += -O1 COPTS.sanitizer_coverage_mapping_libcdep.cc += -O1 COPTS.sanitizer_deadlock_detector1.cc += -O1 COPTS.sanitizer_mac.cc += -O1 COPTS.sanitizer_netbsd.cc += -O1 COPTS.sanitizer_posix.cc += -O1 COPTS.sanitizer_printf.cc += -O1 COPTS.sanitizer_procmaps_common.cc += -O1 COPTS.sanitizer_stackdepot.cc += -O1 COPTS.sanitizer_symbolizer_libcdep.cc += -O1 COPTS.sanitizer_symbolizer_report.cc += -O1 COPTS.ubsan_diag.cc += -O1 COPTS.ubsan_init.cc += -O1 .endif