]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
[gdb/testsuite] Fix gdb.arch/arm-pseudo-unwind.exp with unix/mthumb
authorTom de Vries <tdevries@suse.de>
Wed, 17 Jul 2024 15:04:02 +0000 (17:04 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 17 Jul 2024 15:04:02 +0000 (17:04 +0200)
commit0ed152c5c6b3c72fc505b331ed77e08b438d643a
treecb349cca00859baf4f037a5ec1720dd2fb7c092f
parentdfeb912e160b3eae596a4fd92cc14d0f5e90ee68
[gdb/testsuite] Fix gdb.arch/arm-pseudo-unwind.exp with unix/mthumb

When running test-case gdb.arch/arm-pseudo-unwind.exp with target board
unix/mthumb, we run into:
...
(gdb) continue^M
Continuing.^M
^M
Program received signal SIGILL, Illegal instruction.^M
0x00400f38 in ?? ()^M
(gdb) FAIL: $exp: continue to breakpoint: continue to callee
...

The test-case attempts to force arm-pseudo-unwind.c to be compiled in arm mode
using additional_flags=-marm, but that's overridden by using target board
unix/mthumb.

This causes function main to be in thumb mode, and consequently function
caller (which is called from main) is is executed as if it's in thumb mode,
while it's actually in arm mode.

Fix this by adding an intermediate function caller_trampoline in
arm-pseudo-unwind.c, and hardcoding it to arm mode using
__attribute__((target("arm"))).

Likewise for test-case gdb.arch/arm-pseudo-unwind-legacy.exp.

Tested on arm-linux.

Approved-By: Luis Machado <luis.machado@arm.com>
gdb/testsuite/gdb.arch/arm-pseudo-unwind-legacy.c
gdb/testsuite/gdb.arch/arm-pseudo-unwind.c