diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2459a2aa489a..fd0dc5d3c78b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-03-29 Zachary T Welch + + * lib/prune.exp (escape_regex_chars): New. + (prune_file_path): Update to quote metcharacters for regexp. + 2016-03-29 Jakub Jelinek PR rtl-optimization/70429 diff --git a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp index 20fa1a28717f..ab6f3697ff8a 100644 --- a/gcc/testsuite/lib/prune.exp +++ b/gcc/testsuite/lib/prune.exp @@ -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