diff options
author | Tom Tromey <tom@tromey.com> | 2017-10-07 18:23:36 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-10-12 15:39:24 -0600 |
commit | f7b7ed97a23e2bf4a2ec27bef0fe0af55a080a94 (patch) | |
tree | acc18cc6b1f6d80ac75fa05c72204683b2940b03 /gdb/aarch64-tdep.c | |
parent | 04ec7890fccfa5ddd9cc92961a4df58957ca181b (diff) | |
download | gdb-f7b7ed97a23e2bf4a2ec27bef0fe0af55a080a94.zip gdb-f7b7ed97a23e2bf4a2ec27bef0fe0af55a080a94.tar.gz gdb-f7b7ed97a23e2bf4a2ec27bef0fe0af55a080a94.tar.bz2 |
C++-ify prologue-value's pv_area
This patch is an initial C++-ification of pv_area, from
prologue-value. It turns pv_area into a class with a constructor and
destructor; renames the data members; and changes various functions to
be member functions. This allows the removal of
make_cleanup_free_pv_area.
gdb/ChangeLog
2017-10-12 Tom Tromey <tom@tromey.com>
* s390-linux-tdep.c (s390_store, s390_load)
(s390_check_for_saved, s390_analyze_prologue): Update.
* rx-tdep.c (check_for_saved, rx_analyze_prologue): Update.
* rl78-tdep.c (rl78_analyze_prologue, check_for_saved): Update.
* prologue-value.h (class pv_area): Move from prologue-value.c.
Change names of members. Add constructor, destructor, member
functions.
(make_pv_area, free_pv_area, make_cleanup_free_pv_area)
(pv_area_store, pv_area_fetch, pv_area_store_would_trash)
(pv_area_fetch, pv_area_scan): Don't declare.
* prologue-value.c (struct pv_area::area_entry): Now member of
pv_area.
(struct pv_area): Move to prologue-value.h.
(pv_area::pv_area): Rename from make_pv_area.
(pv_area::~pv_area): Rename from free_pv_area.
(do_free_pv_area_cleanup, make_cleanup_free_pv_area): Remove.
(clear_entries, find_entry, overlaps, store_would_trash, store)
(fetch, find_reg, scan): Now member of pv_area.
Remove "area" argument. Update.
* msp430-tdep.c (check_for_saved, msp430_analyze_prologue):
Update.
* mn10300-tdep.c (push_reg, check_for_saved)
(mn10300_analyze_prologue): Update.
* mep-tdep.c (is_arg_spill, check_for_saved)
(mep_analyze_prologue): Update.
* m32c-tdep.c (m32c_pv_push, m32c_srcdest_fetch)
(m32c_srcdest_store, m32c_pv_enter, m32c_is_arg_spill)
(m32c_is_struct_return, m32c_analyze_prologue): Update.
* arm-tdep.c (thumb_analyze_prologue, arm_analyze_prologue):
Update.
* arc-tdep.c (arc_is_in_prologue, arc_analyze_prologue): Update.
* aarch64-tdep.c (aarch64_analyze_prologue): Update.
Diffstat (limited to 'gdb/aarch64-tdep.c')
-rw-r--r-- | gdb/aarch64-tdep.c | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index e74b7cd..a40dc69 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -234,13 +234,10 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch, int i; /* Track X registers and D registers in prologue. */ pv_t regs[AARCH64_X_REGISTER_COUNT + AARCH64_D_REGISTER_COUNT]; - struct pv_area *stack; - struct cleanup *back_to; for (i = 0; i < AARCH64_X_REGISTER_COUNT + AARCH64_D_REGISTER_COUNT; i++) regs[i] = pv_register (i, 0); - stack = make_pv_area (AARCH64_SP_REGNUM, gdbarch_addr_bit (gdbarch)); - back_to = make_cleanup_free_pv_area (stack); + pv_area stack (AARCH64_SP_REGNUM, gdbarch_addr_bit (gdbarch)); for (; start < limit; start += 4) { @@ -345,9 +342,9 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch, gdb_assert (inst.operands[1].type == AARCH64_OPND_ADDR_SIMM9); gdb_assert (!inst.operands[1].addr.offset.is_reg); - pv_area_store (stack, pv_add_constant (regs[rn], - inst.operands[1].addr.offset.imm), - is64 ? 8 : 4, regs[rt]); + stack.store (pv_add_constant (regs[rn], + inst.operands[1].addr.offset.imm), + is64 ? 8 : 4, regs[rt]); } else if ((inst.opcode->iclass == ldstpair_off || (inst.opcode->iclass == ldstpair_indexed @@ -370,12 +367,10 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch, /* If recording this store would invalidate the store area (perhaps because rn is not known) then we should abandon further prologue analysis. */ - if (pv_area_store_would_trash (stack, - pv_add_constant (regs[rn], imm))) + if (stack.store_would_trash (pv_add_constant (regs[rn], imm))) break; - if (pv_area_store_would_trash (stack, - pv_add_constant (regs[rn], imm + 8))) + if (stack.store_would_trash (pv_add_constant (regs[rn], imm + 8))) break; rt1 = inst.operands[0].reg.regno; @@ -389,10 +384,10 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch, rt2 += AARCH64_X_REGISTER_COUNT; } - pv_area_store (stack, pv_add_constant (regs[rn], imm), 8, - regs[rt1]); - pv_area_store (stack, pv_add_constant (regs[rn], imm + 8), 8, - regs[rt2]); + stack.store (pv_add_constant (regs[rn], imm), 8, + regs[rt1]); + stack.store (pv_add_constant (regs[rn], imm + 8), 8, + regs[rt2]); if (inst.operands[2].addr.writeback) regs[rn] = pv_add_constant (regs[rn], imm); @@ -422,8 +417,8 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch, rt += AARCH64_X_REGISTER_COUNT; } - pv_area_store (stack, pv_add_constant (regs[rn], imm), - is64 ? 8 : 4, regs[rt]); + stack.store (pv_add_constant (regs[rn], imm), + is64 ? 8 : 4, regs[rt]); if (inst.operands[1].addr.writeback) regs[rn] = pv_add_constant (regs[rn], imm); } @@ -445,10 +440,7 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch, } if (cache == NULL) - { - do_cleanups (back_to); - return start; - } + return start; if (pv_is_register (regs[AARCH64_FP_REGNUM], AARCH64_SP_REGNUM)) { @@ -473,7 +465,7 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch, { CORE_ADDR offset; - if (pv_area_find_reg (stack, gdbarch, i, &offset)) + if (stack.find_reg (gdbarch, i, &offset)) cache->saved_regs[i].addr = offset; } @@ -482,12 +474,11 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch, int regnum = gdbarch_num_regs (gdbarch); CORE_ADDR offset; - if (pv_area_find_reg (stack, gdbarch, i + AARCH64_X_REGISTER_COUNT, - &offset)) + if (stack.find_reg (gdbarch, i + AARCH64_X_REGISTER_COUNT, + &offset)) cache->saved_regs[i + regnum + AARCH64_D0_REGNUM].addr = offset; } - do_cleanups (back_to); return start; } |