diff options
author | Tom de Vries <tdevries@suse.de> | 2021-01-14 10:20:21 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-01-14 10:20:21 +0100 |
commit | 116d0cf103a315b220d4e85825986d3b6c312123 (patch) | |
tree | eb1c05a56517e19598c9e1949ed233532f96a2b2 /gdb | |
parent | 7e0d77ef5ffa7e47655db2a5df5082004f7c104e (diff) | |
download | gdb-116d0cf103a315b220d4e85825986d3b6c312123.zip gdb-116d0cf103a315b220d4e85825986d3b6c312123.tar.gz gdb-116d0cf103a315b220d4e85825986d3b6c312123.tar.bz2 |
[gdb/testsuite] Fix gdb.base/style.exp with -m32
When running test-case gdb.base/style.exp with target board unix/-m32, we run
into (stripped styling from output, shortened file name):
...
(gdb) frame
argv=0xffffc714) at src/gdb/testsuite/gdb.base/style.c:45
45 return some_called_function (); /* break here */
(gdb) FAIL: gdb.base/style.exp: frame when width=20
...
while with native we have instead:
...
(gdb) frame
argv=0x7fffffffd478)
at src/gdb/testsuite/gdb.base/style.c:45
45 return some_called_function (); /* break here */
(gdb) PASS: gdb.base/style.exp: frame when width=20
...
The problem is that due to argv having a different length for -m32, we get a
different layout, and the test-case doesn't accommodate for that.
Fix this by using a different regexp depending on the length of argv.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2021-01-14 Tom de Vries <tdevries@suse.de>
PR testsuite/24590
* gdb.base/style.exp: Handle shorter argv in frame command output.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/style.exp | 49 |
2 files changed, 48 insertions, 6 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index cfc49db..b8c9010 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2021-01-14 Tom de Vries <tdevries@suse.de> + + PR testsuite/24590 + * gdb.base/style.exp: Handle shorter argv in frame command output. + 2021-01-13 Andrew Burgess <andrew.burgess@embecosm.com> PR gdb/26819 diff --git a/gdb/testsuite/gdb.base/style.exp b/gdb/testsuite/gdb.base/style.exp index cc143b4..aec1d0f 100644 --- a/gdb/testsuite/gdb.base/style.exp +++ b/gdb/testsuite/gdb.base/style.exp @@ -46,6 +46,16 @@ save_vars { env(TERM) } { set main_line [gdb_get_line_number "break here"] gdb_test "list $main_line,$main_line" "return.*some_called_function.*" + gdb_test_no_output "set style enabled off" + + set argv "" + gdb_test_multiple "frame" "frame without styling" { + -re -wrap "main \\(argc=.*, (argv=$hex)\\).*style\\.c:\[0-9\].*" { + set argv $expect_out(1,string) + pass $gdb_test_name + } + } + gdb_test_no_output "set style enabled on" set main_expr [style main function] @@ -60,7 +70,7 @@ save_vars { env(TERM) } { gdb_test_no_output "set style sources off" gdb_test "frame" \ "\r\n\[^\033\]*break here.*" \ - "frame without styling" + "frame without sources styling" gdb_test_no_output "set style sources on" gdb_test "break -q main" "file $base_file_expr.*" @@ -71,20 +81,47 @@ save_vars { env(TERM) } { # wrong spot with styling. There were different bugs at different # widths, so try two. foreach width {20 30} { - gdb_test_no_output "set width $width" + set argv_len [string length $argv] + if { $argv_len == 0 } { + continue + } + # There was also a bug where the styling could be wrong in the # line listing; this is why the words from the source code are # spelled out in the final result line of the test. - gdb_test "frame" \ + set re1_styled \ [multi_line \ "#0 *$main_expr.*$arg_expr.*" \ ".*$arg_expr.*" \ ".* at .*$file_expr.*" \ - "\[0-9\]+.*return.* break here .*" - ] \ - "frame when width=$width" + "\[0-9\]+.*return.* break here .*"] + set re2_styled \ + [multi_line \ + "#0 *$main_expr.*$arg_expr.*" \ + ".*$arg_expr.* at .*$file_expr.*" \ + "\[0-9\]+.*return.* break here .*"] + + # The length of the line containing argv containing: + # - 4 leading spaces + # - argv string + # - closing parenthesis + set line_len [expr 4 + $argv_len + 1] + + if { $line_len > $width } { + # At on the next line. + set re_styled $re1_styled + } else { + # At on the same line as argv. + set re_styled $re2_styled + } + + gdb_test_no_output "set width $width" + gdb_test "frame" $re_styled "frame when width=$width" } + # Reset width back to 0. + gdb_test_no_output "set width 0" + if {$test_macros} { set macro_line [gdb_get_line_number "\#define SOME_MACRO"] gdb_test "info macro SOME_MACRO" \ |