ARM: Do not use FP reg when on AAPCS

GDB tries to dereference the frame pointer in arm_scan_prologue as a
last resort to create frame information.
However, the more recent AAPCS ABI does not make use of a frame pointer.

This patch checks whether the specified arm_abi is AAPCS before
dereferencing the "frame pointer". If so, just return as efforts to use
it for restoring frame information won't work.

gdb/ChangeLog
2018-11-06  Marius Muench  <marius.muench@eurecom.fr>

	* arm-tdep.c (arm_scan_prologue): Don't dereference FP reg
	when on AAPCS.
This commit is contained in:
Marius Muench 2018-11-06 10:51:39 -07:00 committed by Tom Tromey
parent bcecc11da2
commit 9e237747bd
2 changed files with 9 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2018-11-06 Marius Muench <marius.muench@eurecom.fr>
* arm-tdep.c (arm_scan_prologue): Don't dereference FP reg
when on AAPCS.
2018-11-06 John Baldwin <jhb@FreeBSD.org>
* riscv-fbsd-nat.c (getregs_supplies): Return true for

View File

@ -1801,6 +1801,10 @@ arm_scan_prologue (struct frame_info *this_frame,
CORE_ADDR frame_loc;
ULONGEST return_value;
/* AAPCS does not use a frame register, so we can abort here. */
if (gdbarch_tdep (gdbarch)->arm_abi == ARM_ABI_AAPCS)
return;
frame_loc = get_frame_register_unsigned (this_frame, ARM_FP_REGNUM);
if (!safe_read_memory_unsigned_integer (frame_loc, 4, byte_order,
&return_value))