[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