[gdb/testsuite] Fix gdb.arch/i386-gnu-cfi.exp
authorTom de Vries <tdevries@suse.de>
Thu, 28 Jan 2021 16:39:32 +0000 (17:39 +0100)
committerTom de Vries <tdevries@suse.de>
Thu, 28 Jan 2021 16:39:32 +0000 (17:39 +0100)
commitcdeba395cffb0eda272cb239d27e899794efe658
tree93d8829baef50d12bc45004e194c31cee15d094c
parentc47b145e1a527b62c3354ddc472f11d967b8e2ef
[gdb/testsuite] Fix gdb.arch/i386-gnu-cfi.exp

When running test-case gdb.arch/i386-gnu-cfi.exp with target board unix/-m32, I get:
...
(gdb) up 3^M
79      abort.c: No such file or directory.^M
(gdb) FAIL: gdb.arch/i386-gnu-cfi.exp: shift up to the modified frame
...

The preceding backtrace looks like this:
...
(gdb) bt^M
 #0  0xf7fcf549 in __kernel_vsyscall ()^M
 #1  0xf7ce8896 in __libc_signal_restore_set (set=0xffffc3bc) at \
     ../sysdeps/unix/sysv/linux/internal-signals.h:104^M
 #2  __GI_raise (sig=6) at ../sysdeps/unix/sysv/linux/raise.c:47^M
 #3  0xf7cd0314 in __GI_abort () at abort.c:79^M
 #4  0x0804919f in gate (gate=0x8049040 <abort@plt>, data=0x0) at gate.c:3^M
 #5  0x08049176 in main () at i386-gnu-cfi.c:27^M
...
with function gate at position #4, while on another system where the test passes,
I see instead function gate at position #3.

Fix this by capturing the position of function gate in the backtrace, and
using that in the rest of the test instead of hardcoded constant 3.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2021-01-28  Tom de Vries  <tdevries@suse.de>

* gdb.arch/i386-gnu-cfi.exp: Capture the position of function gate
in the backtrace, and use that in the rest of the test instead of
hardcoded constant 3.  Use "frame" instead of "up" for robustness.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/i386-gnu-cfi.exp