* [PATCH] [gdb/testsuite] Fix gdb.base/eh_return.exp
@ 2024-01-25 11:07 Tom de Vries
2024-01-25 14:50 ` Tom Tromey
0 siblings, 1 reply; 5+ messages in thread
From: Tom de Vries @ 2024-01-25 11:07 UTC (permalink / raw)
To: gdb-patches
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.
PR testsuite/31291
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31291
---
gdb/testsuite/gdb.base/eh_return.exp | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/gdb/testsuite/gdb.base/eh_return.exp b/gdb/testsuite/gdb.base/eh_return.exp
index b055058066b..9fefc890b28 100644
--- a/gdb/testsuite/gdb.base/eh_return.exp
+++ b/gdb/testsuite/gdb.base/eh_return.exp
@@ -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
+ }
+}
base-commit: 726f209eb1b05842d816eac8b0b8f9c7f6cd9fbc
--
2.35.3
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] [gdb/testsuite] Fix gdb.base/eh_return.exp
2024-01-25 11:07 [PATCH] [gdb/testsuite] Fix gdb.base/eh_return.exp Tom de Vries
@ 2024-01-25 14:50 ` Tom Tromey
2024-01-25 14:53 ` Tom de Vries
0 siblings, 1 reply; 5+ messages in thread
From: Tom Tromey @ 2024-01-25 14:50 UTC (permalink / raw)
To: Tom de Vries; +Cc: gdb-patches
>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
Tom> +gdb_expect {
Tom> + -re "Breakpoint .*\r\n$gdb_prompt $" {
Tom> + pass $test
Tom> + }
Tom> + -re "$inferior_exited_re normally.*\r\n$gdb_prompt $" {
Tom> + unsupported $test
Tom> + }
Tom> + -re "\r\n$gdb_prompt $" {
I don't really know, but should these use -wrap instead of manually
matching the prompt regexp?
Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] [gdb/testsuite] Fix gdb.base/eh_return.exp
2024-01-25 14:50 ` Tom Tromey
@ 2024-01-25 14:53 ` Tom de Vries
2024-01-25 14:54 ` Tom Tromey
0 siblings, 1 reply; 5+ messages in thread
From: Tom de Vries @ 2024-01-25 14:53 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
On 1/25/24 15:50, Tom Tromey wrote:
>>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
>
> Tom> +gdb_expect {
> Tom> + -re "Breakpoint .*\r\n$gdb_prompt $" {
> Tom> + pass $test
> Tom> + }
> Tom> + -re "$inferior_exited_re normally.*\r\n$gdb_prompt $" {
> Tom> + unsupported $test
> Tom> + }
> Tom> + -re "\r\n$gdb_prompt $" {
>
> I don't really know, but should these use -wrap instead of manually
> matching the prompt regexp?
-wrap is implemented in gdb_test_multiple, this uses gdb_expect because
otherwise the builtin handling of inferior_exited_re triggers.
Thanks,
- Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] [gdb/testsuite] Fix gdb.base/eh_return.exp
2024-01-25 14:53 ` Tom de Vries
@ 2024-01-25 14:54 ` Tom Tromey
2024-01-25 15:27 ` Tom de Vries
0 siblings, 1 reply; 5+ messages in thread
From: Tom Tromey @ 2024-01-25 14:54 UTC (permalink / raw)
To: Tom de Vries; +Cc: Tom Tromey, gdb-patches
>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
Tom> On 1/25/24 15:50, Tom Tromey wrote:
>>>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
Tom> +gdb_expect {
Tom> + -re "Breakpoint .*\r\n$gdb_prompt $" {
Tom> + pass $test
Tom> + }
Tom> + -re "$inferior_exited_re normally.*\r\n$gdb_prompt $" {
Tom> + unsupported $test
Tom> + }
Tom> + -re "\r\n$gdb_prompt $" {
>> I don't really know, but should these use -wrap instead of manually
>> matching the prompt regexp?
Tom> -wrap is implemented in gdb_test_multiple, this uses gdb_expect
Tom> because otherwise the builtin handling of inferior_exited_re
Tom> triggers.
Oh oops. Thanks.
I guess you could use -early maybe? But TBH I think this is ok.
Approved-By: Tom Tromey <tom@tromey.com>
Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] [gdb/testsuite] Fix gdb.base/eh_return.exp
2024-01-25 14:54 ` Tom Tromey
@ 2024-01-25 15:27 ` Tom de Vries
0 siblings, 0 replies; 5+ messages in thread
From: Tom de Vries @ 2024-01-25 15:27 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
On 1/25/24 15:54, Tom Tromey wrote:
>>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
>
> Tom> On 1/25/24 15:50, Tom Tromey wrote:
>>>>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
> Tom> +gdb_expect {
> Tom> + -re "Breakpoint .*\r\n$gdb_prompt $" {
> Tom> + pass $test
> Tom> + }
> Tom> + -re "$inferior_exited_re normally.*\r\n$gdb_prompt $" {
> Tom> + unsupported $test
> Tom> + }
> Tom> + -re "\r\n$gdb_prompt $" {
>>> I don't really know, but should these use -wrap instead of manually
>>> matching the prompt regexp?
>
> Tom> -wrap is implemented in gdb_test_multiple, this uses gdb_expect
> Tom> because otherwise the builtin handling of inferior_exited_re
> Tom> triggers.
>
> Oh oops. Thanks.
>
> I guess you could use -early maybe? But TBH I think this is ok.
Yeah, I tried that but I didn't manage to make that work.
I considered debugging that, but decided I didn't have the time, so I
went with this instead.
Thanks for the review, committed.
- Tom
> Approved-By: Tom Tromey <tom@tromey.com>
>
> Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-01-25 15:26 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-25 11:07 [PATCH] [gdb/testsuite] Fix gdb.base/eh_return.exp Tom de Vries
2024-01-25 14:50 ` Tom Tromey
2024-01-25 14:53 ` Tom de Vries
2024-01-25 14:54 ` Tom Tromey
2024-01-25 15:27 ` Tom de Vries
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).