diff options
author | 2019-12-07 22:32:52 +1030 | |
---|---|---|
committer | 2019-12-08 22:03:53 +1030 | |
commit | bc754168c7c3fc64e40bb7ddd97ea1ad07fb32d2 (patch) | |
tree | 7ad59eaed63d19869be1254f850dac48a42f968a /binutils/testsuite/lib/binutils-common.exp | |
parent | Fix inter-CU references using intra-CU form in imported-unit (diff) | |
download | binutils-gdb-bc754168c7c3fc64e40bb7ddd97ea1ad07fb32d2.tar.gz binutils-gdb-bc754168c7c3fc64e40bb7ddd97ea1ad07fb32d2.tar.bz2 binutils-gdb-bc754168c7c3fc64e40bb7ddd97ea1ad07fb32d2.zip |
Optional matching for run_dump_test
This adds an alternative to using #... in dump files, useful where we
only want to allow specific extra output. DW_CFA_nop in CIEs and FDEs
to pad out to required alignment (larger for 64-bit than 32-bit) is
an example where these optional match patterns are useful.
binutils/
* testsuite/lib/binutils-common.exp (regexp_diff): Support #?REGEXP.
ld/
* testsuite/ld-elf/eh4.d: Match optional padding DW_CFA_nop in FDEs.
* testsuite/ld-elf/eh5.d: Likewise, and extra CIEs emitted on
embedded targets.
Diffstat (limited to 'binutils/testsuite/lib/binutils-common.exp')
-rw-r--r-- | binutils/testsuite/lib/binutils-common.exp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp index 3b229babeb9..f2efa236518 100644 --- a/binutils/testsuite/lib/binutils-common.exp +++ b/binutils/testsuite/lib/binutils-common.exp @@ -286,6 +286,10 @@ proc check_shared_lib_support { } { # REGEXP # Skip all lines in FILE_1 until the first that matches REGEXP. # +# #?REGEXP +# Optionally match REGEXP against line from FILE_1. If the REGEXP +# does not match then the next line from FILE_2 is tried. +# # 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. @@ -372,6 +376,21 @@ proc regexp_diff { file_1 file_2 args } { } } break + } elseif { [string match "#\\?*" $line_b] } { + if { ! $end_1 } { + set line_b [string replace $line_b 0 1] + set negated [expr { [string index $line_b 0] == "!" }] + 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_bx $value line_bx + } + verbose "optional match for $n\"^$line_bx$\"" 3 + if { [expr [regexp "^$line_bx$" "$line_a"] != $negated] } { + break + } + } } if { [gets $file_b line_b] == $eof } { set end_2 1 |