1 1.1 kamil #!/bin/sh 2 1.1 kamil 3 1.1 kamil set -e 4 1.1 kamil 5 1.1 kamil SRCS=" 6 1.1 kamil tsan_go.cc 7 1.1 kamil ../rtl/tsan_clock.cc 8 1.1 kamil ../rtl/tsan_external.cc 9 1.1 kamil ../rtl/tsan_flags.cc 10 1.1 kamil ../rtl/tsan_interface_atomic.cc 11 1.1 kamil ../rtl/tsan_md5.cc 12 1.1 kamil ../rtl/tsan_mutex.cc 13 1.1 kamil ../rtl/tsan_report.cc 14 1.1 kamil ../rtl/tsan_rtl.cc 15 1.1 kamil ../rtl/tsan_rtl_mutex.cc 16 1.1 kamil ../rtl/tsan_rtl_report.cc 17 1.1 kamil ../rtl/tsan_rtl_thread.cc 18 1.1 kamil ../rtl/tsan_rtl_proc.cc 19 1.1 kamil ../rtl/tsan_stack_trace.cc 20 1.1 kamil ../rtl/tsan_stat.cc 21 1.1 kamil ../rtl/tsan_suppressions.cc 22 1.1 kamil ../rtl/tsan_sync.cc 23 1.1 kamil ../../sanitizer_common/sanitizer_allocator.cc 24 1.1 kamil ../../sanitizer_common/sanitizer_common.cc 25 1.1 kamil ../../sanitizer_common/sanitizer_common_libcdep.cc 26 1.1 kamil ../../sanitizer_common/sanitizer_deadlock_detector2.cc 27 1.1 kamil ../../sanitizer_common/sanitizer_file.cc 28 1.1 kamil ../../sanitizer_common/sanitizer_flag_parser.cc 29 1.1 kamil ../../sanitizer_common/sanitizer_flags.cc 30 1.1 kamil ../../sanitizer_common/sanitizer_libc.cc 31 1.1 kamil ../../sanitizer_common/sanitizer_persistent_allocator.cc 32 1.1 kamil ../../sanitizer_common/sanitizer_printf.cc 33 1.1 kamil ../../sanitizer_common/sanitizer_suppressions.cc 34 1.1 kamil ../../sanitizer_common/sanitizer_thread_registry.cc 35 1.1 kamil ../../sanitizer_common/sanitizer_stackdepot.cc 36 1.1 kamil ../../sanitizer_common/sanitizer_stacktrace.cc 37 1.1 kamil ../../sanitizer_common/sanitizer_symbolizer.cc 38 1.1 kamil ../../sanitizer_common/sanitizer_symbolizer_report.cc 39 1.1 kamil ../../sanitizer_common/sanitizer_termination.cc 40 1.1 kamil " 41 1.1 kamil 42 1.1 kamil if [ "`uname -a | grep Linux`" != "" ]; then 43 1.1 kamil OSCFLAGS="-fPIC -Wno-maybe-uninitialized" 44 1.1 kamil OSLDFLAGS="-lpthread -fPIC -fpie" 45 1.1 kamil SRCS=" 46 1.1 kamil $SRCS 47 1.1 kamil ../rtl/tsan_platform_linux.cc 48 1.1 kamil ../../sanitizer_common/sanitizer_posix.cc 49 1.1 kamil ../../sanitizer_common/sanitizer_posix_libcdep.cc 50 1.1 kamil ../../sanitizer_common/sanitizer_procmaps_common.cc 51 1.1 kamil ../../sanitizer_common/sanitizer_procmaps_linux.cc 52 1.1 kamil ../../sanitizer_common/sanitizer_linux.cc 53 1.1 kamil ../../sanitizer_common/sanitizer_linux_libcdep.cc 54 1.1 kamil ../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc 55 1.1 kamil " 56 1.1 kamil if [ "`uname -a | grep ppc64le`" != "" ]; then 57 1.1 kamil SUFFIX="linux_ppc64le" 58 1.1 kamil ARCHCFLAGS="-m64" 59 1.1 kamil elif [ "`uname -a | grep x86_64`" != "" ]; then 60 1.1 kamil SUFFIX="linux_amd64" 61 1.1 kamil ARCHCFLAGS="-m64" 62 1.1 kamil OSCFLAGS="$OSCFLAGS -ffreestanding -Wno-unused-const-variable -Werror -Wno-unknown-warning-option" 63 1.1 kamil elif [ "`uname -a | grep aarch64`" != "" ]; then 64 1.1 kamil SUFFIX="linux_arm64" 65 1.1 kamil ARCHCFLAGS="" 66 1.1 kamil fi 67 1.1 kamil elif [ "`uname -a | grep FreeBSD`" != "" ]; then 68 1.1 kamil SUFFIX="freebsd_amd64" 69 1.1 kamil OSCFLAGS="-fno-strict-aliasing -fPIC -Werror" 70 1.1 kamil ARCHCFLAGS="-m64" 71 1.1 kamil OSLDFLAGS="-lpthread -fPIC -fpie" 72 1.1 kamil SRCS=" 73 1.1 kamil $SRCS 74 1.1 kamil ../rtl/tsan_platform_linux.cc 75 1.1 kamil ../../sanitizer_common/sanitizer_posix.cc 76 1.1 kamil ../../sanitizer_common/sanitizer_posix_libcdep.cc 77 1.1 kamil ../../sanitizer_common/sanitizer_procmaps_bsd.cc 78 1.1 kamil ../../sanitizer_common/sanitizer_procmaps_common.cc 79 1.1 kamil ../../sanitizer_common/sanitizer_linux.cc 80 1.1 kamil ../../sanitizer_common/sanitizer_linux_libcdep.cc 81 1.1 kamil ../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc 82 1.1 kamil " 83 1.1 kamil elif [ "`uname -a | grep NetBSD`" != "" ]; then 84 1.1 kamil SUFFIX="netbsd_amd64" 85 1.1 kamil OSCFLAGS="-fno-strict-aliasing -fPIC -Werror" 86 1.1 kamil ARCHCFLAGS="-m64" 87 1.1 kamil OSLDFLAGS="-lpthread -fPIC -fpie" 88 1.1 kamil SRCS=" 89 1.1 kamil $SRCS 90 1.1 kamil ../rtl/tsan_platform_linux.cc 91 1.1 kamil ../../sanitizer_common/sanitizer_posix.cc 92 1.1 kamil ../../sanitizer_common/sanitizer_posix_libcdep.cc 93 1.1 kamil ../../sanitizer_common/sanitizer_procmaps_bsd.cc 94 1.1 kamil ../../sanitizer_common/sanitizer_procmaps_common.cc 95 1.1 kamil ../../sanitizer_common/sanitizer_linux.cc 96 1.1 kamil ../../sanitizer_common/sanitizer_linux_libcdep.cc 97 1.1 kamil ../../sanitizer_common/sanitizer_netbsd.cc 98 1.1 kamil ../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc 99 1.1 kamil " 100 1.1 kamil elif [ "`uname -a | grep Darwin`" != "" ]; then 101 1.1 kamil SUFFIX="darwin_amd64" 102 1.1 kamil OSCFLAGS="-fPIC -Wno-unused-const-variable -Wno-unknown-warning-option -mmacosx-version-min=10.7" 103 1.1 kamil ARCHCFLAGS="-m64" 104 1.1 kamil OSLDFLAGS="-lpthread -fPIC -fpie -mmacosx-version-min=10.7" 105 1.1 kamil SRCS=" 106 1.1 kamil $SRCS 107 1.1 kamil ../rtl/tsan_platform_mac.cc 108 1.1 kamil ../../sanitizer_common/sanitizer_mac.cc 109 1.1 kamil ../../sanitizer_common/sanitizer_posix.cc 110 1.1 kamil ../../sanitizer_common/sanitizer_posix_libcdep.cc 111 1.1 kamil ../../sanitizer_common/sanitizer_procmaps_mac.cc 112 1.1 kamil " 113 1.1 kamil elif [ "`uname -a | grep MINGW`" != "" ]; then 114 1.1 kamil SUFFIX="windows_amd64" 115 1.1 kamil OSCFLAGS="-Wno-error=attributes -Wno-attributes -Wno-unused-const-variable -Wno-unknown-warning-option" 116 1.1 kamil ARCHCFLAGS="-m64" 117 1.1 kamil OSLDFLAGS="" 118 1.1 kamil SRCS=" 119 1.1 kamil $SRCS 120 1.1 kamil ../rtl/tsan_platform_windows.cc 121 1.1 kamil ../../sanitizer_common/sanitizer_win.cc 122 1.1 kamil " 123 1.1 kamil else 124 1.1 kamil echo Unknown platform 125 1.1 kamil exit 1 126 1.1 kamil fi 127 1.1 kamil 128 1.1 kamil CC=${CC:-gcc} 129 1.1 kamil IN_TMPDIR=${IN_TMPDIR:-0} 130 1.1 kamil SILENT=${SILENT:-0} 131 1.1 kamil 132 1.1 kamil if [ $IN_TMPDIR != "0" ]; then 133 1.1 kamil DIR=$(mktemp -qd /tmp/gotsan.XXXXXXXXXX) 134 1.1 kamil cleanup() { 135 1.1 kamil rm -rf $DIR 136 1.1 kamil } 137 1.1 kamil trap cleanup EXIT 138 1.1 kamil else 139 1.1 kamil DIR=. 140 1.1 kamil fi 141 1.1 kamil 142 1.1 kamil SRCS="$SRCS $ADD_SRCS" 143 1.1 kamil 144 1.1 kamil rm -f $DIR/gotsan.cc 145 1.1 kamil for F in $SRCS; do 146 1.1 kamil cat $F >> $DIR/gotsan.cc 147 1.1 kamil done 148 1.1 kamil 149 1.1 kamil FLAGS=" -I../rtl -I../.. -I../../sanitizer_common -I../../../include -std=c++11 -Wall -fno-exceptions -fno-rtti -DSANITIZER_GO=1 -DSANITIZER_DEADLOCK_DETECTOR_VERSION=2 $OSCFLAGS $ARCHCFLAGS" 150 1.1 kamil if [ "$DEBUG" = "" ]; then 151 1.1 kamil FLAGS="$FLAGS -DSANITIZER_DEBUG=0 -O3 -fomit-frame-pointer" 152 1.1 kamil if [ "$SUFFIX" = "linux_ppc64le" ]; then 153 1.1 kamil FLAGS="$FLAGS -mcpu=power8 -fno-function-sections" 154 1.1 kamil elif [ "$SUFFIX" = "linux_amd64" ]; then 155 1.1 kamil FLAGS="$FLAGS -msse3" 156 1.1 kamil fi 157 1.1 kamil else 158 1.1 kamil FLAGS="$FLAGS -DSANITIZER_DEBUG=1 -g" 159 1.1 kamil fi 160 1.1 kamil 161 1.1 kamil if [ "$SILENT" != "1" ]; then 162 1.1 kamil echo $CC gotsan.cc -c -o $DIR/race_$SUFFIX.syso $FLAGS $CFLAGS 163 1.1 kamil fi 164 1.1 kamil $CC $DIR/gotsan.cc -c -o $DIR/race_$SUFFIX.syso $FLAGS $CFLAGS 165 1.1 kamil 166 1.1 kamil $CC $OSCFLAGS $ARCHCFLAGS test.c $DIR/race_$SUFFIX.syso -g -o $DIR/test $OSLDFLAGS $LDFLAGS 167 1.1 kamil 168 1.1 kamil export GORACE="exitcode=0 atexit_sleep_ms=0" 169 1.1 kamil if [ "$SILENT" != "1" ]; then 170 1.1 kamil $DIR/test 171 1.1 kamil else 172 1.1 kamil $DIR/test 2>/dev/null 173 1.1 kamil fi 174