[PATCH] [gdb/testsuite] Fix gdb.base/branch-to-self.exp on arm-linux
Tom de Vries
tdevries@suse.de
Wed Jan 22 09:46:34 GMT 2025
On 1/22/25 00:32, Thiago Jung Bauermann wrote:
> Hello Tom,
>
> Tom de Vries <tdevries@suse.de> writes:
>
>> On arm-linux (ubuntu 24.04 with gcc 13.3.0) with target board unix/-marm and
>> test-case gdb.base/branch-to-self.exp I run into:
>> ...
>> (gdb) continue^M
>> Continuing.^M
>> ^M
>> Breakpoint 2, main () at branch-to-self.c:38^M
>> 38 for (;;); /* loop-line */^M
>> (gdb) PASS: $exp: single-step: continue to breakpoint: hit breakpoint
>> si^M
>> 0x0040058c 38 for (;;); /* loop-line */^M
>> (gdb) FAIL: $exp: single-step: si
>> ...
>>
>> In contrast, on the same machine but with debian testing and gcc 14.2.0 we have:
>> ...
>> (gdb) continue^M
>> Continuing.^M
>> ^M
>> Breakpoint 2, main () at branch-to-self.c:38^M
>> 38 for (;;); /* loop-line */^M
>> (gdb) PASS: $exp: single-step: continue to breakpoint: hit breakpoint
>> si^M
>> ^M
>> Breakpoint 2, main () at branch-to-self.c:38^M
>> 38 for (;;); /* loop-line */^M
>> (gdb) PASS: $exp: single-step: stepi
>> ...
>>
>> The difference is in the instruction(s) generated for the loop.
>>
>> In the passing case, we have:
>> ...
>> 588: eafffffe b 588 <main+0x24>
>> ...
>> and in the failing case:
>> ...
>> 588: e320f000 nop {0}
>> 58c: eafffffd b 588 <main+0x24>
>> ...
>>
>> The purpose of this part of test-case is to:
>> - generate a branch instruction that jumps to itself, and
>> - set a breakpoint on it, and check that stepi-ing from that breakpoint
>> triggers the breakpoint again.
>>
>> As we can see, in the failing case we failed to generate a branch instruction
>> that jumps to itself, and consequently we cannot expect to hit the breakpoint
>> again after issuing a single si.
>>
>> Fix this by issue stepi until we hit the breakpoint.
>>
>> Tested on arm-linux.
>> ---
>> gdb/testsuite/gdb.base/branch-to-self.exp | 17 ++++++++++++++++-
>> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> Thank you for fixing the problem!
>
Hi Thiago,
thanks for the review.
I've pushed this.
Thanks,
- Tom
> Reviewed-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
>
> --
> Thiago
More information about the Gdb-patches
mailing list