2016-03-29 Zachary T Welch <zwelch@codesourcery.com>
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 29 Mar 2016 19:56:35 +0000 (19:56 +0000)
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 29 Mar 2016 19:56:35 +0000 (19:56 +0000)
* lib/prune.exp (escape_regex_chars): New.
(prune_file_path): Update to quote metcharacters for regexp.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234533 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/lib/prune.exp

index 2459a2a..fd0dc5d 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-29  Zachary T Welch <zwelch@codesourcery.com>
+
+       * lib/prune.exp (escape_regex_chars): New.
+       (prune_file_path): Update to quote metcharacters for regexp.
+
 2016-03-29  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/70429
index 20fa1a2..ab6f369 100644 (file)
@@ -78,12 +78,33 @@ proc prune_gcc_output { text } {
     return $text
 }
 
+# escape metacharacters in literal string, so it can be used in regex
+
+proc escape_regex_chars { line } {
+    return [string map {"^" "\\^"
+                       "$" "\\$"
+                       "(" "\\("
+                       ")" "\\)"
+                       "[" "\\["
+                       "]" "\\]"
+                       "{" "\\{"
+                       "}" "\\}"
+                       "." "\\."
+                       "\\" "\\\\"
+                       "?" "\\?"
+                       "+" "\\+"
+                       "*" "\\*"
+                       "|" "\\|"} $line]
+}
+
 proc prune_file_path { text } {
     global srcdir
 
+    set safedir [escape_regex_chars $srcdir]
+    regsub -all "$safedir\/" $text "" text
+
     # Truncate absolute file path into relative path.
-    set topdir "[file dirname [file dirname [file dirname $srcdir]]]"
-    regsub -all "$srcdir\/" $text "" text
+    set topdir "[file dirname [file dirname [file dirname $safedir]]]"
     regsub -all "$topdir\/" $text "" text
 
     return $text