aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
Diffstat (limited to 'binutils')
-rw-r--r--binutils/testsuite/ChangeLog5
-rw-r--r--binutils/testsuite/lib/binutils-common.exp25
2 files changed, 22 insertions, 8 deletions
diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog
index e044acc..1e5801b 100644
--- a/binutils/testsuite/ChangeLog
+++ b/binutils/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-09 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * lib/binutils-common.exp (regexp_diff): Implement inverse
+ matching, requested by `!'.
+
2010-11-20 Richard Sandiford <rdsandiford@googlemail.com>
* lib/binutils-common.exp (regexp_diff): New procedure.
diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
index 2f8b426..424ca3d 100644
--- a/binutils/testsuite/lib/binutils-common.exp
+++ b/binutils/testsuite/lib/binutils-common.exp
@@ -167,7 +167,9 @@ proc is_elf64 { binary_file } {
# REGEXP
# Skip all lines in FILE_1 until the first that matches REGEXP.
#
-# Other # lines are comments. Skip empty lines in both files.
+# Other # lines are comments. Regexp lines starting with the `!' character
+# specify inverse matching (use `\!' for literal matching against a leading
+# `!'). Skip empty lines in both files.
#
# The first optional argument is a list of regexp substitutions of the form:
#
@@ -235,12 +237,15 @@ proc regexp_diff { file_1 file_2 args } {
set diff_pass 1
break
}
+ set negated [expr { [string index $line_b 0] eq "!" }]
+ set line_bx [string range $line_b $negated end]
+ set n [expr { $negated ? "! " : "" }]
# Substitute on the reference.
foreach {name value} $ref_subst {
- regsub -- $name $line_b $value line_b
+ regsub -- $name $line_bx $value line_bx
}
- verbose "looking for \"^$line_b$\"" 3
- while { ![regexp "^$line_b$" "$line_a"] } {
+ verbose "looking for $n\"^$line_bx$\"" 3
+ while { [expr [regexp "^$line_bx$" "$line_a"] == $negated] } {
verbose "skipping \"$line_a\"" 3
if { [gets $file_a line_a] == $eof } {
set end_1 1
@@ -270,14 +275,18 @@ proc regexp_diff { file_1 file_2 args } {
set differences 1
break
} else {
+ set negated [expr { [string index $line_b 0] eq "!" }]
+ set line_bx [string range $line_b $negated end]
+ set n [expr { $negated ? "! " : "" }]
+ set s [expr { $negated ? " " : "" }]
# Substitute on the reference.
foreach {name value} $ref_subst {
- regsub -- $name $line_b $value line_b
+ regsub -- $name $line_bx $value line_bx
}
- verbose "regexp \"^$line_b$\"\nline \"$line_a\"" 3
- if { ![regexp "^$line_b$" "$line_a"] } {
+ verbose "regexp $n\"^$line_bx$\"\nline \"$line_a\"" 3
+ if { [expr [regexp "^$line_bx$" "$line_a"] == $negated] } {
send_log "regexp_diff match failure\n"
- send_log "regexp \"^$line_b$\"\nline \"$line_a\"\n"
+ send_log "regexp $n\"^$line_bx$\"\nline $s\"$line_a\"\n"
verbose "regexp_diff match failure\n" 3
set differences 1
}