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