]> granicus.if.org Git - clang/commitdiff
restore proper valgrind support.
authorNuno Lopes <nunoplopes@sapo.pt>
Sat, 11 Jul 2009 18:34:43 +0000 (18:34 +0000)
committerNuno Lopes <nunoplopes@sapo.pt>
Sat, 11 Jul 2009 18:34:43 +0000 (18:34 +0000)
disclaim: I know nothing about Python, so apologies in advance if I break something

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75368 91177308-0d34-0410-b5e6-96231b3b80d8

test/Makefile
utils/test/TestRunner.py

index 635759fa10cd45e8b01056582f495999145ccd97..4c65d7c0157d7d643f8d8c0ad9da462ab0216b0d 100644 (file)
@@ -12,9 +12,15 @@ TESTARGS = -s
 endif
 endif
 
+ifdef VG
+  VGARG="--vg"
+else
+  VGARG=
+endif
+
 all::
        @ echo '--- Running clang tests for $(TARGET_TRIPLE) ---'
-       @ PATH=$(ToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$$PATH VG=$(VG) $(PROJ_SRC_DIR)/../utils/test/MultiTestRunner.py $(TESTARGS) $(TESTDIRS)
+       @ PATH=$(ToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$$PATH $(PROJ_SRC_DIR)/../utils/test/MultiTestRunner.py $(TESTARGS) $(TESTDIRS) $(VGARG)
 
 clean::
        @ rm -rf Output/
index 77158fd971ccaa0ffcb055d2e98fbcf92b58682b..728d406e62e201f8232ecc63175dbf7d3deec84c 100755 (executable)
@@ -71,11 +71,13 @@ def runOneTest(FILENAME, SUBST, OUTPUT, TESTNAME, CLANG, CLANGCC,
                useDGCompat=False,
                useScript=None, 
                output=sys.stdout):
+    OUTPUT = os.path.abspath(OUTPUT)
     if useValgrind:
         VG_OUTPUT = '%s.vg'%(OUTPUT,)
-        if os.path.exists:
-            remove(VG_OUTPUT)
-        CLANG = 'valgrind --leak-check=full --quiet --log-file=%s %s'%(VG_OUTPUT, CLANG)
+        os.system('rm -f %s.*'%(VG_OUTPUT))
+        VALGRIND = 'valgrind -q --tool=memcheck --leak-check=full --trace-children=yes --log-file=%s.%%p'%(VG_OUTPUT)
+        CLANG    = '%s %s'%(VALGRIND, CLANG)
+        CLANGCC  = '%s %s'%(VALGRIND, CLANGCC)
 
     # Create the output directory if it does not already exist.
     mkdir_p(os.path.dirname(OUTPUT))
@@ -105,7 +107,6 @@ def runOneTest(FILENAME, SUBST, OUTPUT, TESTNAME, CLANG, CLANGCC,
         output.flush()
         return TestStatus.NoRunLine
 
-    OUTPUT = os.path.abspath(OUTPUT)
     FILENAME = os.path.abspath(FILENAME)
     SCRIPT = OUTPUT + '.script'
     TEMPOUTPUT = OUTPUT + '.tmp'
@@ -168,7 +169,8 @@ def runOneTest(FILENAME, SUBST, OUTPUT, TESTNAME, CLANG, CLANGCC,
         SCRIPT_STATUS = not SCRIPT_STATUS
 
     if useValgrind:
-        VG_STATUS = len(list(open(VG_OUTPUT)))
+        VG_OUTPUT = capture(['/bin/sh','-c','cat %s.*'%(VG_OUTPUT)])
+        VG_STATUS = len(VG_OUTPUT)
     else:
         VG_STATUS = 0
     
@@ -183,7 +185,7 @@ def runOneTest(FILENAME, SUBST, OUTPUT, TESTNAME, CLANG, CLANGCC,
         cat(OUTPUT, output)
         if VG_STATUS:
             print >>output, "Valgrind Output:"
-            cat(VG_OUTPUT, output)
+            print >>output, VG_OUTPUT
         print >>output, "******************** TEST '%s' FAILED! ********************"%(TESTNAME,)
         output.flush()
         if xfailLines: