1 # $NetBSD: Makefile.sanitizer,v 1.9 2025/09/26 10:41:00 rin Exp $ 2 3 SANITIZER=${GCCDIST}/libsanitizer 4 .PATH: ${SANITIZER}/interception ${SANITIZER}/sanitizer_common 5 6 INTERCEPTION_SRCS= \ 7 interception_linux.cpp \ 8 interception_mac.cpp \ 9 interception_win.cpp \ 10 interception_type_test.cpp 11 12 # XXXmknative 13 SANITIZER_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 76 CSHLIBFLAGS+= -DPIC 77 78 #SRCS+= ${INTERCEPTION_SRCS} ${SANITIZER_SRCS} ${UBSAN_SRCS} 79 SRCS+= ${INTERCEPTION_SRCS} ${SANITIZER_SRCS} 80 CPPFLAGS+=-I${SANITIZER}/include -I${SANITIZER} 81 CPPFLAGS.sanitizer_netbsd.cc+=-I${GCCDIST}/gcc/ginclude 82 CPPFLAGS+=-D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS 83 CPPFLAGS+=-D__STDC_LIMIT_MACROS 84 CPPFLAGS+=-DASAN_NEEDS_SEGV=1 85 CPPFLAGS+=-DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0 86 #CPPFLAGS+=-DCAN_SANITIZE_UB=0 87 88 89 LIBDPLIBS+= pthread ${.CURDIR}/../../../../../lib/libpthread 90 COPTS+=-fPIC -fno-builtin -fno-exceptions -fno-rtti 91 COPTS+=-funwind-tables -fvisibility=hidden -fno-ipa-icf 92 #COPTS+=-fsized-deallocation 93 COPTS+=-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 98 COPTS.${_f}+=-Wno-address 99 .endfor 100 # XXX 101 COPTS.sanitizer_posix.cpp+=-Wno-error=maybe-uninitialized 102 COPTS.tsan_rtl_access.cpp+=-Wno-error=maybe-uninitialized 103 COPTS.ubsan_handlers_cxx.cpp+=-Wno-error=maybe-uninitialized 104 105 # Can't profile without it 106 #-fomit-frame-pointer 107