Home | History | Annotate | Download | only in go
      1 set -e
      2 
      3 SRCS="
      4 	tsan_go.cc
      5 	../rtl/tsan_clock.cc
      6 	../rtl/tsan_flags.cc
      7 	../rtl/tsan_md5.cc
      8 	../rtl/tsan_mutex.cc
      9 	../rtl/tsan_report.cc
     10 	../rtl/tsan_rtl.cc
     11 	../rtl/tsan_rtl_mutex.cc
     12 	../rtl/tsan_rtl_report.cc
     13 	../rtl/tsan_rtl_thread.cc
     14 	../rtl/tsan_stack_trace.cc
     15 	../rtl/tsan_stat.cc
     16 	../rtl/tsan_suppressions.cc
     17 	../rtl/tsan_sync.cc
     18 	../../sanitizer_common/sanitizer_allocator.cc
     19 	../../sanitizer_common/sanitizer_common.cc
     20 	../../sanitizer_common/sanitizer_deadlock_detector2.cc
     21 	../../sanitizer_common/sanitizer_flags.cc
     22 	../../sanitizer_common/sanitizer_libc.cc
     23 	../../sanitizer_common/sanitizer_persistent_allocator.cc
     24 	../../sanitizer_common/sanitizer_printf.cc
     25 	../../sanitizer_common/sanitizer_suppressions.cc
     26 	../../sanitizer_common/sanitizer_thread_registry.cc
     27 	../../sanitizer_common/sanitizer_stackdepot.cc
     28 "
     29 
     30 if [ "`uname -a | grep Linux`" != "" ]; then
     31 	SUFFIX="linux_amd64"
     32 	OSCFLAGS="-fPIC -ffreestanding -Wno-maybe-uninitialized -Wno-unused-const-variable -Werror -Wno-unknown-warning-option"
     33 	OSLDFLAGS="-lpthread -fPIC -fpie"
     34 	SRCS+="
     35 		../rtl/tsan_platform_linux.cc
     36 		../../sanitizer_common/sanitizer_posix.cc
     37 		../../sanitizer_common/sanitizer_posix_libcdep.cc
     38 		../../sanitizer_common/sanitizer_procmaps_linux.cc
     39 		../../sanitizer_common/sanitizer_linux.cc
     40 		../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
     41 	"
     42 elif [ "`uname -a | grep FreeBSD`" != "" ]; then
     43         SUFFIX="freebsd_amd64"
     44         OSCFLAGS="-fno-strict-aliasing -fPIC -Werror"
     45         OSLDFLAGS="-lpthread -fPIC -fpie"
     46         SRCS+="
     47                 ../rtl/tsan_platform_linux.cc
     48                 ../../sanitizer_common/sanitizer_posix.cc
     49                 ../../sanitizer_common/sanitizer_posix_libcdep.cc
     50                 ../../sanitizer_common/sanitizer_procmaps_linux.cc
     51                 ../../sanitizer_common/sanitizer_linux.cc
     52                 ../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
     53         "
     54 elif [ "`uname -a | grep Darwin`" != "" ]; then
     55 	SUFFIX="darwin_amd64"
     56 	OSCFLAGS="-fPIC -Wno-unused-const-variable -Wno-unknown-warning-option"
     57 	OSLDFLAGS="-lpthread -fPIC -fpie"
     58 	SRCS+="
     59 		../rtl/tsan_platform_mac.cc
     60 		../../sanitizer_common/sanitizer_mac.cc
     61 		../../sanitizer_common/sanitizer_posix.cc
     62 		../../sanitizer_common/sanitizer_posix_libcdep.cc
     63 		../../sanitizer_common/sanitizer_procmaps_mac.cc
     64 	"
     65 elif [ "`uname -a | grep MINGW`" != "" ]; then
     66 	SUFFIX="windows_amd64"
     67 	OSCFLAGS="-Wno-error=attributes -Wno-attributes -Wno-unused-const-variable -Wno-unknown-warning-option"
     68 	OSLDFLAGS=""
     69 	SRCS+="
     70 		../rtl/tsan_platform_windows.cc
     71 		../../sanitizer_common/sanitizer_win.cc
     72 	"
     73 else
     74 	echo Unknown platform
     75 	exit 1
     76 fi
     77 
     78 SRCS+=$ADD_SRCS
     79 
     80 rm -f gotsan.cc
     81 for F in $SRCS; do
     82 	cat $F >> gotsan.cc
     83 done
     84 
     85 FLAGS=" -I../rtl -I../.. -I../../sanitizer_common -I../../../include -m64 -Wall -fno-exceptions -fno-rtti -DTSAN_GO -DSANITIZER_GO -DTSAN_SHADOW_COUNT=4 -DSANITIZER_DEADLOCK_DETECTOR_VERSION=2 $OSCFLAGS"
     86 if [ "$DEBUG" == "" ]; then
     87 	FLAGS+=" -DTSAN_DEBUG=0 -O3 -msse3 -fomit-frame-pointer"
     88 else
     89 	FLAGS+=" -DTSAN_DEBUG=1 -g"
     90 fi
     91 
     92 CC=${CC:-gcc}
     93 
     94 echo $CC gotsan.cc -c -o race_$SUFFIX.syso $FLAGS $CFLAGS
     95 $CC gotsan.cc -c -o race_$SUFFIX.syso $FLAGS $CFLAGS
     96 
     97 $CC test.c race_$SUFFIX.syso -m64 -o test $OSLDFLAGS
     98 GORACE="exitcode=0 atexit_sleep_ms=0" ./test
     99