[compiler-rt] r254955 - [TSan] Port check_memcpy.sh script to a regular lit test.

Alexey Samsonov via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 7 13:54:00 PST 2015


Author: samsonov
Date: Mon Dec  7 15:53:59 2015
New Revision: 254955

URL: http://llvm.org/viewvc/llvm-project?rev=254955&view=rev
Log:
[TSan] Port check_memcpy.sh script to a regular lit test.

Check that TSan runtime doesn't contain compiler-inserted calls
to memset/memmove functions.

In future, we may consider moving this test to test/sanitizer_common,
as we don't want to have compiler-inserted memcpy/memmove calls in
any sanitizer runtime.

Added:
    compiler-rt/trunk/test/tsan/Linux/check_memcpy.cc
    compiler-rt/trunk/test/tsan/Linux/check_memcpy.sh   (with props)
Removed:
    compiler-rt/trunk/lib/tsan/check_memcpy.sh
Modified:
    compiler-rt/trunk/lib/tsan/Makefile.old

Modified: compiler-rt/trunk/lib/tsan/Makefile.old
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/Makefile.old?rev=254955&r1=254954&r2=254955&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/Makefile.old (original)
+++ compiler-rt/trunk/lib/tsan/Makefile.old Mon Dec  7 15:53:59 2015
@@ -71,14 +71,12 @@ presubmit:
 	# Release build with clang.
 	$(MAKE) -f Makefile.old clean
 	$(MAKE) -f Makefile.old run DEBUG=0 -j 16 CC=$(CLANG) CXX=$(CLANG)++
-	./check_memcpy.sh
 	# Debug build with gcc
 	$(MAKE) -f Makefile.old clean
 	$(MAKE) -f Makefile.old run DEBUG=1 -j 16 CC=gcc CXX=g++
 	# Release build with gcc
 	$(MAKE) -f Makefile.old clean
 	$(MAKE) -f Makefile.old run DEBUG=0 -j 16 CC=gcc CXX=g++
-	./check_memcpy.sh
 	# Sanity check for Go runtime
 	(cd go && ./buildgo.sh)
 	# Check cmake build

Removed: compiler-rt/trunk/lib/tsan/check_memcpy.sh
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/check_memcpy.sh?rev=254954&view=auto
==============================================================================
--- compiler-rt/trunk/lib/tsan/check_memcpy.sh (original)
+++ compiler-rt/trunk/lib/tsan/check_memcpy.sh (removed)
@@ -1,31 +0,0 @@
-#!/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

Added: compiler-rt/trunk/test/tsan/Linux/check_memcpy.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/Linux/check_memcpy.cc?rev=254955&view=auto
==============================================================================
--- compiler-rt/trunk/test/tsan/Linux/check_memcpy.cc (added)
+++ compiler-rt/trunk/test/tsan/Linux/check_memcpy.cc Mon Dec  7 15:53:59 2015
@@ -0,0 +1,11 @@
+// Test that verifies TSan runtime doesn't contain compiler-emitted
+// memcpy/memmove calls. It builds the binary with TSan and passes it to
+// check_memcpy.sh script.
+
+// RUN: %clangxx_tsan -O1 %s -o %t
+// RUN: %S/check_memcpy.sh %t
+
+int main() {
+  return 0;
+}
+

Added: compiler-rt/trunk/test/tsan/Linux/check_memcpy.sh
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/Linux/check_memcpy.sh?rev=254955&view=auto
==============================================================================
--- compiler-rt/trunk/test/tsan/Linux/check_memcpy.sh (added)
+++ compiler-rt/trunk/test/tsan/Linux/check_memcpy.sh Mon Dec  7 15:53:59 2015
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# Script that ensures that TSan runtime does not contain compiler-emitted
+# memcpy and memset calls.
+
+set -eu
+
+if [[ "$#" != 1 ]]; then
+  echo "Usage: $0 /path/to/binary/built/with/tsan"
+  exit 1
+fi
+
+EXE=$1
+
+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

Propchange: compiler-rt/trunk/test/tsan/Linux/check_memcpy.sh
------------------------------------------------------------------------------
    svn:executable = *




More information about the llvm-commits mailing list