From 7ee8c127555c89781bcd9451cdea54884f6ac155 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Mon, 7 Jun 2021 14:33:50 +0200 Subject: [PATCH] [gdb/testsuite] Fix info-types-c.exp Recently, I've rewritten gdb.base/info-types.exp.tcl to do processing line-by-line (commit 2129a942553). When building gdb with -O0, this test passes for me, but with -O2 I sometimes run into: ... FAIL: gdb.base/info-types-c.exp: info types (state == 1) ... The output the failing gdb_test_multiple is trying to parse is: ... (gdb) info types^M All defined types:^M ^M File src/gdb/testsuite/gdb.base/info-types.c:^M 52: typedef enum {...} anon_enum_t;^M ... (gdb) ... and the FAIL with state == 1 means that: - the regexp for "All defined types:" did trigger, and that - the regexp for "File .*info-types.c" didn't trigger. This is due to the fact that the empty line inbetween is supposed to be matched by the "random line" regexp "^\r\n(\[^\r\n\]*)(?=\r\n)", which doesn't happen because instead the earlier regexp consuming the gdb prompt matches. Fix this by moving the "random line" regexp up. [ Note that that regexp does not consume the gdb prompt, because it requires (but doesn't consume) a terminating "\r\n". Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-06-07 Tom de Vries * gdb.base/info-types.exp.tcl (run_test): Move "random line" regexp up. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/info-types.exp.tcl | 14 +++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index d51b60c09c5..1607a0d6a1e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2021-06-07 Tom de Vries + + * gdb.base/info-types.exp.tcl (run_test): Move "random line" regexp + up. + 2021-06-06 Simon Marchi * gdb.server/stop-reply-no-thread-multi.exp: Clear sysroot when diff --git a/gdb/testsuite/gdb.base/info-types.exp.tcl b/gdb/testsuite/gdb.base/info-types.exp.tcl index 2989751eef9..0eac3dbe67c 100644 --- a/gdb/testsuite/gdb.base/info-types.exp.tcl +++ b/gdb/testsuite/gdb.base/info-types.exp.tcl @@ -168,13 +168,6 @@ proc run_test { lang } { if { $state == 2 } { set state -4 } exp_continue } - -re -wrap "" { - if { $state == 3} { - pass $gdb_test_name - } else { - fail "$gdb_test_name (state == $state)" - } - } -re "^\r\n(\[^\r\n\]*)(?=\r\n)" { if { $state == 2 } { set line $expect_out(1,string) @@ -187,6 +180,13 @@ proc run_test { lang } { } exp_continue } + -re -wrap "" { + if { $state == 3} { + pass $gdb_test_name + } else { + fail "$gdb_test_name (state == $state)" + } + } } } -- 2.30.2