aboutsummaryrefslogtreecommitdiff
path: root/bfd/pe-sh.c
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2020-01-09 22:38:22 +0000
committerAndrew Burgess <andrew.burgess@embecosm.com>2020-01-09 22:55:05 +0000
commit3be966f69d6967d2857baa3efb0bc043081e0a00 (patch)
treebcdfe9823448a3dcdcb0ce6a3bb7c808b9dc6bbb /bfd/pe-sh.c
parent5f23a08201ed01570b34f5cff99a95fc7b9e2fdb (diff)
downloadgdb-3be966f69d6967d2857baa3efb0bc043081e0a00.zip
gdb-3be966f69d6967d2857baa3efb0bc043081e0a00.tar.gz
gdb-3be966f69d6967d2857baa3efb0bc043081e0a00.tar.bz2
gdb/testsuite: Fix race condition in gdb.base/skip.exp
In this commit: commit 5024637fac653914d471808288dc3221bc7ec089 Date: Sun Dec 15 11:05:47 2019 +0100 Fix skip.exp test failure observed with gcc-9.2.0 A race condition was introduced into the gdb.base/skip.exp test when this line: gdb_test "step" "foo \\(\\) at.*" "step 3" Was changed to this: gdb_test "step" "foo \\(\\) at.*" "step 3" "main \\(\\) at .*" "step" Before the above change we expected GDB to behave like this: (gdb) step foo () at /path/to/gdb/testsuite/gdb.base/skip.c:42 42 return 0; (gdb) However, when the test is compiled with GCC 9.2.0 we get a different behaviour, and so we need a second 'step', like this: (gdb) step main () at /path/to/gdb.base/skip.c:32 32 x = baz ((bar (), foo ())); (gdb) step foo () at /path/to/gdb/testsuite/gdb.base/skip.c:42 42 return 0; (gdb) Now the change to the test matches against 'main () at .*', however if GDB or expect is being slow then we might only get to see output like this: (gdb) step main () at /path/to/g This will happily match the question pattern, so we send 'step' to GDB again. Now GDB continues to produce output which expect accepts, we now see this: b.base/skip.c:32 32 x = baz ((bar (), foo ())); (gdb) This has carried on from where the previous block of output left off. This doesn't match the final pattern 'foo \\(\\) at.*', but it does match the prompt pattern that gdb_test_multiple adds, and so we report the test as failing. The solution is to simply ensure that the question consumes everything up to, and including the prompt. This ensures that the prompt can't then match the failure case. The new test line becomes: gdb_test "step" "foo \\(\\) at.*" "step 3" \ "main \\(\\) at .*\r\n$gdb_prompt " "step" gdb/testsuite/ChangeLog: * gdb.base/skip.exp: Fix race condition in test. Change-Id: I9f0b0b52ef1b4f980bfaa8fe405ff06d520f3482
Diffstat (limited to 'bfd/pe-sh.c')
0 files changed, 0 insertions, 0 deletions