xref: /netbsd-src/external/gpl3/gcc/lib/Makefile.sanitizer (revision fc4f42693f9b1c31f39f9cf50af1bf2010325808)
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