1# $NetBSD: Makefile.sanitizer,v 1.4 2018/02/14 02:12:07 christos Exp $ 2 3SANITIZER=${GCCDIST}/libsanitizer 4.PATH: ${SANITIZER}/interception ${SANITIZER}/sanitizer_common 5 6INTERCEPTION_SRCS= \ 7interception_linux.cc \ 8interception_mac.cc \ 9interception_type_test.cc \ 10interception_win.cc 11 12SANITIZER_SRCS+= \ 13sanitizer_allocator.cc \ 14sanitizer_common.cc \ 15sanitizer_common_libcdep.cc \ 16sanitizer_coverage_libcdep.cc \ 17sanitizer_coverage_mapping_libcdep.cc \ 18sanitizer_deadlock_detector1.cc \ 19sanitizer_deadlock_detector2.cc \ 20sanitizer_flags.cc \ 21sanitizer_flag_parser.cc \ 22sanitizer_libc.cc \ 23sanitizer_libignore.cc \ 24sanitizer_linux.cc \ 25sanitizer_linux_libcdep.cc \ 26sanitizer_mac.cc \ 27sanitizer_persistent_allocator.cc \ 28sanitizer_platform_limits_linux.cc \ 29sanitizer_platform_limits_posix.cc \ 30sanitizer_posix.cc \ 31sanitizer_posix_libcdep.cc \ 32sanitizer_printf.cc \ 33sanitizer_procmaps_common.cc \ 34sanitizer_procmaps_netbsd.cc \ 35sanitizer_procmaps_freebsd.cc \ 36sanitizer_procmaps_linux.cc \ 37sanitizer_procmaps_mac.cc \ 38sanitizer_stackdepot.cc \ 39sanitizer_stacktrace.cc \ 40sanitizer_stacktrace_libcdep.cc \ 41sanitizer_stacktrace_printer.cc \ 42sanitizer_stoptheworld_linux_libcdep.cc \ 43sanitizer_suppressions.cc \ 44sanitizer_symbolizer.cc \ 45sanitizer_symbolizer_libbacktrace.cc \ 46sanitizer_symbolizer_libcdep.cc \ 47sanitizer_symbolizer_mac.cc \ 48sanitizer_symbolizer_posix_libcdep.cc \ 49sanitizer_symbolizer_win.cc \ 50sanitizer_thread_registry.cc \ 51sanitizer_tls_get_addr.cc \ 52sanitizer_unwind_linux_libcdep.cc \ 53sanitizer_win.cc 54 55.PATH: ${SANITIZER}/ubsan 56UBSAN_SRCS+= \ 57ubsan_diag.cc \ 58ubsan_init.cc \ 59ubsan_flags.cc \ 60ubsan_value.cc 61 62# The linux build does this to avoid preinit sections on shared libraries 63CSHLIBFLAGS+= -DPIC 64 65SRCS+= ${INTERCEPTION_SRCS} ${SANITIZER_SRCS} ${UBSAN_SRCS} 66CPPFLAGS+=-I${SANITIZER}/include -I${SANITIZER} 67CPPFLAGS.sanitizer_netbsd.cc+=-I${GCCDIST}/gcc/ginclude 68CPPFLAGS+=-D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS 69CPPFLAGS+=-D__STDC_LIMIT_MACROS -DSANITIZER_HAS_EXCEPTIONS=1 70CPPFLAGS+=-DSANITIZER_NEEDS_SEGV=1 71#CPPFLAGS+=-DCAN_SANITIZE_UB=0 72 73LIBDPLIBS+= stdc++ ${.CURDIR}/../libstdc++-v3 74LIBDPLIBS+= pthread ${.CURDIR}/../../../../../lib/libpthread 75COPTS+=-std=gnu++11 -fsized-deallocation -fvisibility=hidden 76COPTS+=-fno-builtin -fno-exceptions -fno-rtti -funwind-tables 77 78# Can't profile without it` 79#-fomit-frame-pointer 80 81.if ${MACHINE_ARCH} == "vax" 82COPTS.sanitizer_allocator.cc += -O1 83COPTS.sanitizer_coverage_libcdep.cc += -O1 84COPTS.sanitizer_coverage_mapping_libcdep.cc += -O1 85COPTS.sanitizer_deadlock_detector1.cc += -O1 86COPTS.sanitizer_mac.cc += -O1 87COPTS.sanitizer_netbsd.cc += -O1 88COPTS.sanitizer_printf.cc += -O1 89COPTS.sanitizer_procmaps_common.cc += -O1 90COPTS.sanitizer_stackdepot.cc += -O1 91COPTS.sanitizer_symbolizer_libcdep.cc += -O1 92.endif 93