aboutsummaryrefslogtreecommitdiff
path: root/gdb/trad-frame.c
diff options
context:
space:
mode:
authorAlan Hayward <alan.hayward@arm.com>2019-04-10 15:58:27 +0100
committerAlan Hayward <alan.hayward@arm.com>2019-04-11 09:51:07 +0100
commit68811f8ff84895ef1cad37ac6947f1a340dd2ae2 (patch)
tree11d0455129367a4550515a1ab977366e482e2606 /gdb/trad-frame.c
parent795e3bb7de9ce2eb1ec3de3faf8f6bc925a58c9e (diff)
downloadgdb-68811f8ff84895ef1cad37ac6947f1a340dd2ae2.zip
gdb-68811f8ff84895ef1cad37ac6947f1a340dd2ae2.tar.gz
gdb-68811f8ff84895ef1cad37ac6947f1a340dd2ae2.tar.bz2
AArch64: Ensure regcache is reset between tests
A recent change made the AArch64 self tests resuse the saved regs cache, rather than creating a new one. Ensure it is reset to default values between tests. Do this by splitting the reset functionality from trad_frame_alloc_saved_regs into a new function. Fixes selftest on AArch64. gdb/ChangeLog: * aarch64-tdep.c (aarch64_analyze_prologue_test): Reset saved regs. * trad-frame.c (trad_frame_reset_saved_regs): New function. (trad_frame_alloc_saved_regs): Call trad_frame_reset_saved_regs. * trad-frame.h (trad_frame_reset_saved_regs): New declaration.
Diffstat (limited to 'gdb/trad-frame.c')
-rw-r--r--gdb/trad-frame.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/gdb/trad-frame.c b/gdb/trad-frame.c
index 3cb2953..d911475 100644
--- a/gdb/trad-frame.c
+++ b/gdb/trad-frame.c
@@ -44,19 +44,28 @@ trad_frame_cache_zalloc (struct frame_info *this_frame)
return this_trad_cache;
}
+/* See trad-frame.h. */
+
+void
+trad_frame_reset_saved_regs (struct gdbarch *gdbarch,
+ struct trad_frame_saved_reg *regs)
+{
+ int numregs = gdbarch_num_cooked_regs (gdbarch);
+ for (int regnum = 0; regnum < numregs; regnum++)
+ {
+ regs[regnum].realreg = regnum;
+ regs[regnum].addr = -1;
+ }
+}
+
struct trad_frame_saved_reg *
trad_frame_alloc_saved_regs (struct gdbarch *gdbarch)
{
- int regnum;
int numregs = gdbarch_num_cooked_regs (gdbarch);
struct trad_frame_saved_reg *this_saved_regs
= FRAME_OBSTACK_CALLOC (numregs, struct trad_frame_saved_reg);
- for (regnum = 0; regnum < numregs; regnum++)
- {
- this_saved_regs[regnum].realreg = regnum;
- this_saved_regs[regnum].addr = -1;
- }
+ trad_frame_reset_saved_regs (gdbarch, this_saved_regs);
return this_saved_regs;
}