Skip to content

Commit

Permalink
[gdb/testsuite] Fix gdb.base/eh_return.exp
Browse files Browse the repository at this point in the history
On Fedora rawhide aarch64, I run into:
...
(gdb) PASS: gdb.base/eh_return.exp: set breakpoint on address
run ^M
Starting program: eh_return ^M
[Thread debugging using libthread_db enabled]^M
Using host libthread_db library "/lib64/libthread_db.so.1".^M
[Inferior 1 (process 1113051) exited normally]^M
(gdb) FAIL: gdb.base/eh_return.exp: hit breakpoint (the program exited)
...

This happens as follows: the test-case sets a breakpoint on the last
instruction of function eh2:
...
(gdb) break *0x00000000004103ec^M
...
and expects to hit the breakpoint, but instead the "br x6" is taken:
...
   0x00000000004103e0 <+176>:   cbz     x4, 0x4103ec <eh2+188>^M
   0x00000000004103e4 <+180>:   add     sp, sp, x5^M
   0x00000000004103e8 <+184>:   br      x6^M
   0x00000000004103ec <+188>:   ret^M
...

In contrast, with fedora f39 we have:
...
   0x00000000004103bc <+156>:   ldp     x2, x3, [sp, #48]^M
   0x00000000004103c0 <+160>:   ldp     x29, x30, [sp, #16]^M
   0x00000000004103c4 <+164>:   add     sp, sp, #0x50^M
   0x00000000004103c8 <+168>:   add     sp, sp, x4^M
   0x00000000004103cc <+172>:   ret^M

...
and the breakpoint is reached.

Fix this by detecting that the breakpoint is not hit, and declaring the test
unsupported.

Tested on aarch64-linux.

Approved-By: Tom Tromey <tom@tromey.com>

PR testsuite/31291
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31291
  • Loading branch information
vries committed Jan 25, 2024
1 parent 0759c1b commit 7ff4111
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion gdb/testsuite/gdb.base/eh_return.exp
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,18 @@ gdb_assert [gdb_breakpoint "*$address" no-message] "set breakpoint on address"
# breakpoint, so instead, run to the breakpoint.
gdb_run_cmd

gdb_test "" "Breakpoint .*" "hit breakpoint"
set test "hit breakpoint"
gdb_expect {
-re "Breakpoint .*\r\n$gdb_prompt $" {
pass $test
}
-re "$inferior_exited_re normally.*\r\n$gdb_prompt $" {
unsupported $test
}
-re "\r\n$gdb_prompt $" {
fail $test
}
default {
fail $test
}
}

0 comments on commit 7ff4111

Please sign in to comment.