]>
Commit | Line | Data |
---|---|---|
92a42be0 SL |
1 | #!/bin/sh |
2 | ||
1a4d82fc JJ |
3 | set -e |
4 | ||
5 | SRCS=" | |
6 | tsan_go.cc | |
7 | ../rtl/tsan_clock.cc | |
8 | ../rtl/tsan_flags.cc | |
92a42be0 | 9 | ../rtl/tsan_interface_atomic.cc |
1a4d82fc JJ |
10 | ../rtl/tsan_md5.cc |
11 | ../rtl/tsan_mutex.cc | |
12 | ../rtl/tsan_report.cc | |
13 | ../rtl/tsan_rtl.cc | |
14 | ../rtl/tsan_rtl_mutex.cc | |
15 | ../rtl/tsan_rtl_report.cc | |
16 | ../rtl/tsan_rtl_thread.cc | |
92a42be0 | 17 | ../rtl/tsan_stack_trace.cc |
1a4d82fc JJ |
18 | ../rtl/tsan_stat.cc |
19 | ../rtl/tsan_suppressions.cc | |
20 | ../rtl/tsan_sync.cc | |
21 | ../../sanitizer_common/sanitizer_allocator.cc | |
22 | ../../sanitizer_common/sanitizer_common.cc | |
23 | ../../sanitizer_common/sanitizer_deadlock_detector2.cc | |
92a42be0 | 24 | ../../sanitizer_common/sanitizer_flag_parser.cc |
1a4d82fc JJ |
25 | ../../sanitizer_common/sanitizer_flags.cc |
26 | ../../sanitizer_common/sanitizer_libc.cc | |
92a42be0 | 27 | ../../sanitizer_common/sanitizer_persistent_allocator.cc |
1a4d82fc JJ |
28 | ../../sanitizer_common/sanitizer_printf.cc |
29 | ../../sanitizer_common/sanitizer_suppressions.cc | |
30 | ../../sanitizer_common/sanitizer_thread_registry.cc | |
31 | ../../sanitizer_common/sanitizer_stackdepot.cc | |
92a42be0 SL |
32 | ../../sanitizer_common/sanitizer_stacktrace.cc |
33 | ../../sanitizer_common/sanitizer_symbolizer.cc | |
1a4d82fc JJ |
34 | " |
35 | ||
36 | if [ "`uname -a | grep Linux`" != "" ]; then | |
37 | SUFFIX="linux_amd64" | |
92a42be0 SL |
38 | OSCFLAGS="-fPIC -ffreestanding -Wno-maybe-uninitialized -Wno-unused-const-variable -Werror -Wno-unknown-warning-option" |
39 | OSLDFLAGS="-lpthread -lrt -fPIC -fpie" | |
40 | SRCS=" | |
41 | $SRCS | |
1a4d82fc JJ |
42 | ../rtl/tsan_platform_linux.cc |
43 | ../../sanitizer_common/sanitizer_posix.cc | |
44 | ../../sanitizer_common/sanitizer_posix_libcdep.cc | |
92a42be0 | 45 | ../../sanitizer_common/sanitizer_procmaps_common.cc |
1a4d82fc JJ |
46 | ../../sanitizer_common/sanitizer_procmaps_linux.cc |
47 | ../../sanitizer_common/sanitizer_linux.cc | |
92a42be0 | 48 | ../../sanitizer_common/sanitizer_linux_libcdep.cc |
1a4d82fc JJ |
49 | ../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc |
50 | " | |
92a42be0 SL |
51 | elif [ "`uname -a | grep FreeBSD`" != "" ]; then |
52 | SUFFIX="freebsd_amd64" | |
53 | OSCFLAGS="-fno-strict-aliasing -fPIC -Werror" | |
54 | OSLDFLAGS="-lpthread -fPIC -fpie" | |
55 | SRCS=" | |
56 | $SRCS | |
57 | ../rtl/tsan_platform_linux.cc | |
58 | ../../sanitizer_common/sanitizer_posix.cc | |
59 | ../../sanitizer_common/sanitizer_posix_libcdep.cc | |
60 | ../../sanitizer_common/sanitizer_procmaps_common.cc | |
61 | ../../sanitizer_common/sanitizer_procmaps_freebsd.cc | |
62 | ../../sanitizer_common/sanitizer_linux.cc | |
63 | ../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc | |
64 | " | |
1a4d82fc JJ |
65 | elif [ "`uname -a | grep Darwin`" != "" ]; then |
66 | SUFFIX="darwin_amd64" | |
92a42be0 | 67 | OSCFLAGS="-fPIC -Wno-unused-const-variable -Wno-unknown-warning-option" |
1a4d82fc | 68 | OSLDFLAGS="-lpthread -fPIC -fpie" |
92a42be0 SL |
69 | SRCS=" |
70 | $SRCS | |
1a4d82fc JJ |
71 | ../rtl/tsan_platform_mac.cc |
72 | ../../sanitizer_common/sanitizer_mac.cc | |
73 | ../../sanitizer_common/sanitizer_posix.cc | |
74 | ../../sanitizer_common/sanitizer_posix_libcdep.cc | |
75 | ../../sanitizer_common/sanitizer_procmaps_mac.cc | |
76 | " | |
77 | elif [ "`uname -a | grep MINGW`" != "" ]; then | |
78 | SUFFIX="windows_amd64" | |
92a42be0 | 79 | OSCFLAGS="-Wno-error=attributes -Wno-attributes -Wno-unused-const-variable -Wno-unknown-warning-option" |
1a4d82fc | 80 | OSLDFLAGS="" |
92a42be0 SL |
81 | SRCS=" |
82 | $SRCS | |
1a4d82fc JJ |
83 | ../rtl/tsan_platform_windows.cc |
84 | ../../sanitizer_common/sanitizer_win.cc | |
85 | " | |
86 | else | |
87 | echo Unknown platform | |
88 | exit 1 | |
89 | fi | |
90 | ||
92a42be0 SL |
91 | CC=${CC:-gcc} |
92 | IN_TMPDIR=${IN_TMPDIR:-0} | |
93 | SILENT=${SILENT:-0} | |
94 | ||
95 | if [ $IN_TMPDIR != "0" ]; then | |
96 | DIR=$(mktemp -qd /tmp/gotsan.XXXXXXXXXX) | |
97 | cleanup() { | |
98 | rm -rf $DIR | |
99 | } | |
100 | trap cleanup EXIT | |
101 | else | |
102 | DIR=. | |
103 | fi | |
104 | ||
105 | SRCS="$SRCS $ADD_SRCS" | |
1a4d82fc | 106 | |
92a42be0 | 107 | rm -f $DIR/gotsan.cc |
1a4d82fc | 108 | for F in $SRCS; do |
92a42be0 | 109 | cat $F >> $DIR/gotsan.cc |
1a4d82fc JJ |
110 | done |
111 | ||
92a42be0 SL |
112 | FLAGS=" -I../rtl -I../.. -I../../sanitizer_common -I../../../include -std=c++11 -m64 -Wall -fno-exceptions -fno-rtti -DSANITIZER_GO -DSANITIZER_DEADLOCK_DETECTOR_VERSION=2 $OSCFLAGS" |
113 | if [ "$DEBUG" = "" ]; then | |
114 | FLAGS="$FLAGS -DSANITIZER_DEBUG=0 -O3 -msse3 -fomit-frame-pointer" | |
1a4d82fc | 115 | else |
92a42be0 SL |
116 | FLAGS="$FLAGS -DSANITIZER_DEBUG=1 -g" |
117 | fi | |
118 | ||
119 | if [ "$SILENT" != "1" ]; then | |
120 | echo $CC gotsan.cc -c -o $DIR/race_$SUFFIX.syso $FLAGS $CFLAGS | |
1a4d82fc | 121 | fi |
92a42be0 | 122 | $CC $DIR/gotsan.cc -c -o $DIR/race_$SUFFIX.syso $FLAGS $CFLAGS |
1a4d82fc | 123 | |
92a42be0 | 124 | $CC test.c $DIR/race_$SUFFIX.syso -m64 -o $DIR/test $OSLDFLAGS |
1a4d82fc | 125 | |
92a42be0 SL |
126 | export GORACE="exitcode=0 atexit_sleep_ms=0" |
127 | if [ "$SILENT" != "1" ]; then | |
128 | $DIR/test | |
129 | else | |
130 | $DIR/test 2>/dev/null | |
131 | fi |