[test-suite] r263533 - timeit: Add append-exitstatus switch

Matthias Braun via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 14 22:12:25 PDT 2016


Author: matze
Date: Tue Mar 15 00:12:24 2016
New Revision: 263533

URL: http://llvm.org/viewvc/llvm-project?rev=263533&view=rev
Log:
timeit: Add append-exitstatus switch

Appending the last line with "exit XXX" is usually done by RunSafely. I
added the same capability to timeit because that allows us to skip
RunSafely in the future and allows us to remove some delays in
remote-device settings (see the 'sleep 1's in RunSafely.sh).

Modified:
    test-suite/trunk/tools/timeit.c
    test-suite/trunk/tools/timeit.sh

Modified: test-suite/trunk/tools/timeit.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/tools/timeit.c?rev=263533&r1=263532&r2=263533&view=diff
==============================================================================
--- test-suite/trunk/tools/timeit.c (original)
+++ test-suite/trunk/tools/timeit.c Tue Mar 15 00:12:24 2016
@@ -71,6 +71,9 @@ static const char *g_target_redirect_std
 /* \brief If non-zero, the path to redirect the target stderr to. */
 static const char *g_target_redirect_stderr = 0;
 
+/* \brief If non-zero, append exit status at end of output file. */
+static int g_append_exitstats = 0;
+
 /* @name Resource Limit Variables */
 /* @{ */
 
@@ -217,6 +220,18 @@ static int monitor_child_process(pid_t p
     fclose(fp);
   }
 
+  if (g_append_exitstats && g_target_program) {
+    FILE *fp_stdout = fopen(g_target_redirect_stdout, "a");
+    if (!fp_stdout) {
+      perror("fopen");
+      return EXITCODE_MONITORING_FAILURE;
+    }
+    fprintf(fp_stdout, "exit %d\n", exit_status);
+    fclose(fp_stdout);
+    /* let timeit itself report success */
+    exit_status = 0;
+  }
+
   return exit_status;
 }
 
@@ -505,6 +520,11 @@ int main(int argc, char * const argv[])
       continue;
     }
 
+    if (streq(arg, "--append-exitstatus")) {
+      g_append_exitstats = 1;
+      continue;
+    }
+
     if (streq(arg, "-c") || streq(arg, "--chdir")) {
       if (i + 1 == argc) {
         fprintf(stderr, "error: %s argument requires an option\n", arg);

Modified: test-suite/trunk/tools/timeit.sh
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/tools/timeit.sh?rev=263533&r1=263532&r2=263533&view=diff
==============================================================================
--- test-suite/trunk/tools/timeit.sh (original)
+++ test-suite/trunk/tools/timeit.sh Tue Mar 15 00:12:24 2016
@@ -6,6 +6,7 @@ INPUT=/dev/stdin
 OUTPUT=/dev/stdout
 ERRPUT=/dev/stderr
 PERFSTAT=perfstats
+APPEND_STATUS=0
 
 while [[ $1 = -* ]]; do
   if [ $1 = "--summary" ]; then
@@ -20,6 +21,8 @@ while [[ $1 = -* ]]; do
     OUTPUT=$2
   elif [ $1 = "--chdir" ]; then
     cd $2
+  elif [ $1 = "--append-exitstatus" ]; then
+    APPEND_STATUS=1
   fi
   shift 2
 done
@@ -32,6 +35,9 @@ else
 fi
 
 EXITCODE=$?
+if [ "$APPEND_STATUS" = "1" ]; then
+  echo "exit $EXITCODE" >> $OUTPUT
+fi
 
 echo exit $EXITCODE > $REPORT
 awk -F' ' '{if ($2 == "task-clock") print "user",$1/1000; else if($2 =="seconds") print "real",$1;}' $PERFSTAT >> $REPORT




More information about the llvm-commits mailing list