diff options
author | Alan Hayward <alan.hayward@arm.com> | 2019-04-10 15:58:27 +0100 |
---|---|---|
committer | Alan Hayward <alan.hayward@arm.com> | 2019-04-11 09:51:07 +0100 |
commit | 68811f8ff84895ef1cad37ac6947f1a340dd2ae2 (patch) | |
tree | 11d0455129367a4550515a1ab977366e482e2606 /gdb | |
parent | 795e3bb7de9ce2eb1ec3de3faf8f6bc925a58c9e (diff) | |
download | gdb-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')
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/aarch64-tdep.c | 2 | ||||
-rw-r--r-- | gdb/trad-frame.c | 21 | ||||
-rw-r--r-- | gdb/trad-frame.h | 3 |
4 files changed, 27 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cc6762d..a5cbc89 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2019-04-11 Alan Hayward <alan.hayward@arm.com> + + * 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. + 2019-04-10 Kevin Buettner <kevinb@redhat.com> * amd64-linux-nat.c (amd64_linux_collect_native_gregset): New diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 7eecb52..1b3977b 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -665,6 +665,7 @@ aarch64_analyze_prologue_test (void) }; instruction_reader_test reader (insns); + trad_frame_reset_saved_regs (gdbarch, cache.saved_regs); CORE_ADDR end = aarch64_analyze_prologue (gdbarch, 0, 128, &cache, reader); SELF_CHECK (end == 4 * 5); @@ -707,6 +708,7 @@ aarch64_analyze_prologue_test (void) }; instruction_reader_test reader (insns); + trad_frame_reset_saved_regs (gdbarch, cache.saved_regs); CORE_ADDR end = aarch64_analyze_prologue (gdbarch, 0, 128, &cache, reader); 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; } diff --git a/gdb/trad-frame.h b/gdb/trad-frame.h index dd80d1b..f947e58 100644 --- a/gdb/trad-frame.h +++ b/gdb/trad-frame.h @@ -113,6 +113,9 @@ int trad_frame_addr_p (struct trad_frame_saved_reg this_saved_regs[], int trad_frame_realreg_p (struct trad_frame_saved_reg this_saved_regs[], int regnum); +/* Reset the save regs cache, setting register values to -1. */ +void trad_frame_reset_saved_regs (struct gdbarch *gdbarch, + struct trad_frame_saved_reg *regs); /* Return a freshly allocated (and initialized) trad_frame array. */ struct trad_frame_saved_reg *trad_frame_alloc_saved_regs (struct frame_info *); |