From 9e237747bd1fd7b371fed5edb91dd9baace4b2dc Mon Sep 17 00:00:00 2001 From: Marius Muench Date: Tue, 6 Nov 2018 10:51:39 -0700 Subject: [PATCH] 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 * arm-tdep.c (arm_scan_prologue): Don't dereference FP reg when on AAPCS. --- gdb/ChangeLog | 5 +++++ gdb/arm-tdep.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 68ecef7728..bd8ce4bbc3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-11-06 Marius Muench + + * arm-tdep.c (arm_scan_prologue): Don't dereference FP reg + when on AAPCS. + 2018-11-06 John Baldwin * riscv-fbsd-nat.c (getregs_supplies): Return true for diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 53eee76926..0165e92527 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -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))