diff options
author | Pedro Alves <palves@redhat.com> | 2017-11-09 22:44:08 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-11-09 22:45:39 +0000 |
commit | 2c88253fc469fbf40be7f0d1f7060b81055f2eb1 (patch) | |
tree | 373e83d87a9b7be4361583b0aa9fc667c7ba6cd6 | |
parent | c7a3851716f98540396b9e02be7d2fcd3bff2d29 (diff) | |
download | gdb-2c88253fc469fbf40be7f0d1f7060b81055f2eb1.zip gdb-2c88253fc469fbf40be7f0d1f7060b81055f2eb1.tar.gz gdb-2c88253fc469fbf40be7f0d1f7060b81055f2eb1.tar.bz2 |
Fix racy output matching in gdb.base/memattr.exp
Testing with:
$ make check-read1 TESTS="gdb.base/memattr.exp"
Exposes a testcase bug that can result in racy fails:
info mem
Using user-defined memory regions.
Num Enb Low Addr High Addr Attrs
1 y 0x0000000000601060 0x0000000000601160 wo nocache
2 y 0x0000000000601180 0x0000000000601280 ro nocache
4 y 0x0000000000601280 0x0000000000601380 rw nocache
3 y 0x0000000000601380 0x0000000000601480 rw nocache
5 y 0x0000000000601480 0x0000000000601580 rw nocache
(gdb) FAIL: gdb.base/memattr.exp: info mem (1)
The problem is that:
"Attrs\[^\n\r]*.."
matches:
"Attrs \r"
when the output buffer is filled with partial output like this:
"info mem\r\nUsing user-defined memory regions.\r\nNum Enb Low Addr High Addr Attrs \r"
gdb/testsuite/ChangeLog:
2017-11-09 Pedro Alves <palves@redhat.com>
* gdb.base/memattr.exp: Tighten regexes to match the end line.
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/memattr.exp | 12 |
2 files changed, 10 insertions, 6 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 0886647..ffd314c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2017-11-09 Pedro Alves <palves@redhat.com> + * gdb.base/memattr.exp: Tighten regexes to match the end line. + +2017-11-09 Pedro Alves <palves@redhat.com> + * gdb.base/completion.exp (ignore_and_resync, test_tab_complete): New procedures, factored out from ... (top level): ... here, and adjusted to avoid expecting beyond the diff --git a/gdb/testsuite/gdb.base/memattr.exp b/gdb/testsuite/gdb.base/memattr.exp index 48f0496..88eb51c 100644 --- a/gdb/testsuite/gdb.base/memattr.exp +++ b/gdb/testsuite/gdb.base/memattr.exp @@ -114,30 +114,30 @@ set see4 0 set see5 0 set info_mem_header_pattern \ - "info mem.*Num\[ \t\]+Enb\[ \t\]+Low\[ \t\]+Addr\[ \t\]+High\[ \t\]+Addr\[ \t\]+Attrs\[^\n\r]*.." + "info mem.*Num\[ \t\]+Enb\[ \t\]+Low\[ \t\]+Addr\[ \t\]+High\[ \t\]+Addr\[ \t\]+Attrs\[^\r\n\]*\r\n" gdb_test_multiple "info mem" "info mem(1)" { -re ${info_mem_header_pattern} { # Discard the header. exp_continue } - -re "^1 y \[ \t\]+$hex $hex wo nocache \[^\r\n\]*.." { + -re "^1 y \[ \t\]+$hex $hex wo nocache \[^\r\n\]*\r\n" { set see1 1 exp_continue } - -re "^2 y \[ \t\]+$hex $hex ro nocache \[^\r\n\]*.." { + -re "^2 y \[ \t\]+$hex $hex ro nocache \[^\r\n\]*\r\n" { set see2 1 exp_continue } - -re "^3 y \[ \t\]+$hex $hex rw nocache \[^\r\n\]*.." { + -re "^3 y \[ \t\]+$hex $hex rw nocache \[^\r\n\]*\r\n" { set see3 1 exp_continue } - -re "^4 y \[ \t\]+$hex $hex rw nocache \[^\r\n\]*.." { + -re "^4 y \[ \t\]+$hex $hex rw nocache \[^\r\n\]*\r\n" { set see4 1 exp_continue } - -re "^5 y \[ \t\]+$hex $hex rw nocache \[^\r\n\]*.." { + -re "^5 y \[ \t\]+$hex $hex rw nocache \[^\r\n\]*\r\n" { set see5 1 exp_continue } |