forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			787 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			787 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/bin/bash
 | 
						|
 | 
						|
# Ensure that tsan runtime does not contain compiler-emitted memcpy and memset calls.
 | 
						|
 | 
						|
set -eu
 | 
						|
 | 
						|
ROOTDIR=$(dirname $0)
 | 
						|
TEST_DIR=$ROOTDIR/../../test/tsan
 | 
						|
 | 
						|
: ${CXX:=clang++}
 | 
						|
CFLAGS="-fsanitize=thread -fPIE -O1 -g"
 | 
						|
LDFLAGS="-pie -lpthread -ldl -lrt -lm -Wl,--whole-archive $ROOTDIR/rtl/libtsan.a -Wl,--no-whole-archive"
 | 
						|
 | 
						|
SRC=$TEST_DIR/simple_race.cc
 | 
						|
OBJ=$SRC.o
 | 
						|
EXE=$SRC.exe
 | 
						|
$CXX $SRC $CFLAGS -c -o $OBJ
 | 
						|
$CXX $OBJ $LDFLAGS -o $EXE
 | 
						|
 | 
						|
NCALL=$(objdump -d $EXE | egrep "callq .*<__interceptor_mem(cpy|set)>" | wc -l)
 | 
						|
if [ "$NCALL" != "0" ]; then
 | 
						|
  echo FAIL: found $NCALL memcpy/memset calls
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# tail calls
 | 
						|
NCALL=$(objdump -d $EXE | egrep "jmpq .*<__interceptor_mem(cpy|set)>" | wc -l)
 | 
						|
if [ "$NCALL" != "0" ]; then
 | 
						|
  echo FAIL: found $NCALL memcpy/memset calls
 | 
						|
  exit 1
 | 
						|
fi
 |