diff options
-rw-r--r-- | gdb/ChangeLog | 37 | ||||
-rw-r--r-- | gdb/aarch64-tdep.c | 18 | ||||
-rw-r--r-- | gdb/aarch64-tdep.h | 4 | ||||
-rw-r--r-- | gdb/amd64-tdep.c | 23 | ||||
-rw-r--r-- | gdb/amd64-tdep.h | 9 | ||||
-rw-r--r-- | gdb/arm-linux-tdep.c | 16 | ||||
-rw-r--r-- | gdb/arm-tdep.c | 180 | ||||
-rw-r--r-- | gdb/arm-tdep.h | 18 | ||||
-rw-r--r-- | gdb/gdbarch.c | 4 | ||||
-rw-r--r-- | gdb/gdbarch.h | 8 | ||||
-rwxr-xr-x | gdb/gdbarch.sh | 4 | ||||
-rw-r--r-- | gdb/i386-linux-tdep.c | 27 | ||||
-rw-r--r-- | gdb/i386-tdep.c | 14 | ||||
-rw-r--r-- | gdb/i386-tdep.h | 12 | ||||
-rw-r--r-- | gdb/infrun.c | 13 | ||||
-rw-r--r-- | gdb/infrun.h | 17 | ||||
-rw-r--r-- | gdb/rs6000-tdep.c | 16 | ||||
-rw-r--r-- | gdb/s390-tdep.c | 17 |
18 files changed, 244 insertions, 193 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 416f666..a238bcd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,42 @@ 2020-12-04 Simon Marchi <simon.marchi@efficios.com> + * infrun.h (get_displaced_step_closure_by_addr): Rename to... + (get_displaced_step_copy_insn_closure_by_addr): ... this. + Update all users. + (displaced_step_closure): Rename to... + (displaced_step_copy_insn_closure): ... this. Update all users. + (displaced_step_closure_up): Rename to... + (displaced_step_copy_insn_closure_up). ... this. Update all + users. + (buf_displaced_step_closure): Rename to... + (buf_displaced_step_copy_insn_closure): ... this. Update all + users. + * infrun.c (get_displaced_step_closure_by_addr): Rename to... + (get_displaced_step_copy_insn_closure_by_addr): ... this. + Update all users. + * aarch64-tdep.c (aarch64_displaced_step_closure): Rename to... + (aarch64_displaced_step_copy_insn_closure): ... this. Update + all users. + * amd64-tdep.c (amd64_displaced_step_closure): Rename to... + (amd64_displaced_step_copy_insn_closure): ... this. Update all + users. + * arm-tdep.h (arm_displaced_step_closure): Rename to... + (arm_displaced_step_copy_insn_closure): ... this. Update all + users. + * i386-tdep.h (i386_displaced_step_closure): Rename to... + (i386_displaced_step_copy_insn_closure): ... this. Update all + users. + * rs6000-tdep.c (ppc_displaced_step_closure): Rename to... + (ppc_displaced_step_copy_insn_closure): ... this. Update all + users. + * s390-tdep.c (s390_displaced_step_closure): Rename to... + (s390_displaced_step_copy_insn_closure): ... this. Update all + users. + * gdbarch.h: Re-generate. + * gdbarch.c: Re-generate. + +2020-12-04 Simon Marchi <simon.marchi@efficios.com> + * gdbthread.h (thread_step_over_chain_enqueue): Rename to... (global_thread_step_over_chain_enqueue): ... this. Update all users. diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 680b53f..40c73be 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -2899,7 +2899,8 @@ aarch64_software_single_step (struct regcache *regcache) return next_pcs; } -struct aarch64_displaced_step_closure : public displaced_step_closure +struct aarch64_displaced_step_copy_insn_closure + : public displaced_step_copy_insn_closure { /* It is true when condition instruction, such as B.CON, TBZ, etc, is being displaced stepping. */ @@ -2925,7 +2926,7 @@ struct aarch64_displaced_step_data /* Registers when doing displaced stepping. */ struct regcache *regs; - aarch64_displaced_step_closure *dsc; + aarch64_displaced_step_copy_insn_closure *dsc; }; /* Implementation of aarch64_insn_visitor method "b". */ @@ -3134,7 +3135,7 @@ static const struct aarch64_insn_visitor visitor = /* Implement the "displaced_step_copy_insn" gdbarch method. */ -displaced_step_closure_up +displaced_step_copy_insn_closure_up aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) @@ -3154,8 +3155,8 @@ aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch, return NULL; } - std::unique_ptr<aarch64_displaced_step_closure> dsc - (new aarch64_displaced_step_closure); + std::unique_ptr<aarch64_displaced_step_copy_insn_closure> dsc + (new aarch64_displaced_step_copy_insn_closure); dsd.base.insn_addr = from; dsd.new_addr = to; dsd.regs = regs; @@ -3187,18 +3188,19 @@ aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch, } /* This is a work around for a problem with g++ 4.8. */ - return displaced_step_closure_up (dsc.release ()); + return displaced_step_copy_insn_closure_up (dsc.release ()); } /* Implement the "displaced_step_fixup" gdbarch method. */ void aarch64_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *dsc_, + struct displaced_step_copy_insn_closure *dsc_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { - aarch64_displaced_step_closure *dsc = (aarch64_displaced_step_closure *) dsc_; + aarch64_displaced_step_copy_insn_closure *dsc + = (aarch64_displaced_step_copy_insn_closure *) dsc_; ULONGEST pc; diff --git a/gdb/aarch64-tdep.h b/gdb/aarch64-tdep.h index 81ce4d8..895aa59 100644 --- a/gdb/aarch64-tdep.h +++ b/gdb/aarch64-tdep.h @@ -107,13 +107,13 @@ const target_desc *aarch64_read_description (uint64_t vq, bool pauth_p); extern int aarch64_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr); -displaced_step_closure_up +displaced_step_copy_insn_closure_up aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); void aarch64_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *dsc, + displaced_step_copy_insn_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index 31d4d34..d2bcbe1 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -1103,9 +1103,10 @@ struct amd64_insn gdb_byte *raw_insn; }; -struct amd64_displaced_step_closure : public displaced_step_closure +struct amd64_displaced_step_copy_insn_closure + : public displaced_step_copy_insn_closure { - amd64_displaced_step_closure (int insn_buf_len) + amd64_displaced_step_copy_insn_closure (int insn_buf_len) : insn_buf (insn_buf_len, 0) {} @@ -1386,7 +1387,8 @@ amd64_get_insn_details (gdb_byte *insn, struct amd64_insn *details) We set base = pc + insn_length so we can leave disp unchanged. */ static void -fixup_riprel (struct gdbarch *gdbarch, amd64_displaced_step_closure *dsc, +fixup_riprel (struct gdbarch *gdbarch, + amd64_displaced_step_copy_insn_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { const struct amd64_insn *insn_details = &dsc->insn_details; @@ -1447,7 +1449,7 @@ fixup_riprel (struct gdbarch *gdbarch, amd64_displaced_step_closure *dsc, static void fixup_displaced_copy (struct gdbarch *gdbarch, - amd64_displaced_step_closure *dsc, + amd64_displaced_step_copy_insn_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { const struct amd64_insn *details = &dsc->insn_details; @@ -1465,7 +1467,7 @@ fixup_displaced_copy (struct gdbarch *gdbarch, } } -displaced_step_closure_up +displaced_step_copy_insn_closure_up amd64_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) @@ -1474,8 +1476,8 @@ amd64_displaced_step_copy_insn (struct gdbarch *gdbarch, /* Extra space for sentinels so fixup_{riprel,displaced_copy} don't have to continually watch for running off the end of the buffer. */ int fixup_sentinel_space = len; - std::unique_ptr<amd64_displaced_step_closure> dsc - (new amd64_displaced_step_closure (len + fixup_sentinel_space)); + std::unique_ptr<amd64_displaced_step_copy_insn_closure> dsc + (new amd64_displaced_step_copy_insn_closure (len + fixup_sentinel_space)); gdb_byte *buf = &dsc->insn_buf[0]; struct amd64_insn *details = &dsc->insn_details; @@ -1509,7 +1511,7 @@ amd64_displaced_step_copy_insn (struct gdbarch *gdbarch, displaced_step_dump_bytes (buf, len).c_str ()); /* This is a work around for a problem with g++ 4.8. */ - return displaced_step_closure_up (dsc.release ()); + return displaced_step_copy_insn_closure_up (dsc.release ()); } static int @@ -1671,11 +1673,12 @@ amd64_insn_is_jump (struct gdbarch *gdbarch, CORE_ADDR addr) void amd64_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *dsc_, + struct displaced_step_copy_insn_closure *dsc_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { - amd64_displaced_step_closure *dsc = (amd64_displaced_step_closure *) dsc_; + amd64_displaced_step_copy_insn_closure *dsc + = (amd64_displaced_step_copy_insn_closure *) dsc_; enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); /* The offset we applied to the instruction's address. */ ULONGEST insn_offset = to - from; diff --git a/gdb/amd64-tdep.h b/gdb/amd64-tdep.h index a4e6956..56aef6c 100644 --- a/gdb/amd64-tdep.h +++ b/gdb/amd64-tdep.h @@ -88,13 +88,12 @@ enum amd64_regnum #define AMD64_NUM_REGS (AMD64_GSBASE_REGNUM + 1) -extern displaced_step_closure_up amd64_displaced_step_copy_insn +extern displaced_step_copy_insn_closure_up amd64_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); -extern void amd64_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *closure, - CORE_ADDR from, CORE_ADDR to, - struct regcache *regs); +extern void amd64_displaced_step_fixup + (struct gdbarch *gdbarch, displaced_step_copy_insn_closure *closure, + CORE_ADDR from, CORE_ADDR to, struct regcache *regs); /* Initialize the ABI for amd64. Uses DEFAULT_TDESC as fallback tdesc, if INFO does not specify one. */ diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index 2d563c2..9caae06 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -946,7 +946,7 @@ arm_linux_software_single_step (struct regcache *regcache) static void arm_linux_cleanup_svc (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { ULONGEST apparent_pc; int within_scratch; @@ -970,7 +970,7 @@ arm_linux_cleanup_svc (struct gdbarch *gdbarch, static int arm_linux_copy_svc (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { CORE_ADDR return_to = 0; @@ -1056,7 +1056,7 @@ arm_linux_copy_svc (struct gdbarch *gdbarch, struct regcache *regs, static void cleanup_kernel_helper_return (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { displaced_write_reg (regs, dsc, ARM_LR_REGNUM, dsc->tmp[0], CANNOT_WRITE_PC); displaced_write_reg (regs, dsc, ARM_PC_REGNUM, dsc->tmp[0], BRANCH_WRITE_PC); @@ -1065,7 +1065,7 @@ cleanup_kernel_helper_return (struct gdbarch *gdbarch, static void arm_catch_kernel_helper_return (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); @@ -1094,13 +1094,13 @@ arm_catch_kernel_helper_return (struct gdbarch *gdbarch, CORE_ADDR from, the program has stepped into a Linux kernel helper routine (which must be handled as a special case). */ -static displaced_step_closure_up +static displaced_step_copy_insn_closure_up arm_linux_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { - std::unique_ptr<arm_displaced_step_closure> dsc - (new arm_displaced_step_closure); + std::unique_ptr<arm_displaced_step_copy_insn_closure> dsc + (new arm_displaced_step_copy_insn_closure); /* Detect when we enter an (inaccessible by GDB) Linux kernel helper, and stop at the return location. */ @@ -1122,7 +1122,7 @@ arm_linux_displaced_step_copy_insn (struct gdbarch *gdbarch, arm_displaced_init_closure (gdbarch, from, to, dsc.get ()); /* This is a work around for a problem with g++ 4.8. */ - return displaced_step_closure_up (dsc.release ()); + return displaced_step_copy_insn_closure_up (dsc.release ()); } /* Implementation of `gdbarch_stap_is_single_operand', as defined in diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index d1e3a98..bc086e1 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -433,9 +433,9 @@ arm_pc_is_thumb (struct gdbarch *gdbarch, CORE_ADDR memaddr) { struct bound_minimal_symbol sym; char type; - arm_displaced_step_closure *dsc - = ((arm_displaced_step_closure * ) - get_displaced_step_closure_by_addr (memaddr)); + arm_displaced_step_copy_insn_closure *dsc + = ((arm_displaced_step_copy_insn_closure * ) + get_displaced_step_copy_insn_closure_by_addr (memaddr)); /* If checking the mode of displaced instruction in copy area, the mode should be determined by instruction on the original address. */ @@ -4474,7 +4474,7 @@ arm_adjust_breakpoint_address (struct gdbarch *gdbarch, CORE_ADDR bpaddr) location. */ ULONGEST -displaced_read_reg (struct regcache *regs, arm_displaced_step_closure *dsc, +displaced_read_reg (regcache *regs, arm_displaced_step_copy_insn_closure *dsc, int regno) { ULONGEST ret; @@ -4522,7 +4522,7 @@ displaced_in_arm_mode (struct regcache *regs) /* Write to the PC as from a branch instruction. */ static void -branch_write_pc (struct regcache *regs, arm_displaced_step_closure *dsc, +branch_write_pc (regcache *regs, arm_displaced_step_copy_insn_closure *dsc, ULONGEST val) { if (!dsc->is_thumb) @@ -4568,7 +4568,7 @@ bx_write_pc (struct regcache *regs, ULONGEST val) /* Write to the PC as if from a load instruction. */ static void -load_write_pc (struct regcache *regs, arm_displaced_step_closure *dsc, +load_write_pc (regcache *regs, arm_displaced_step_copy_insn_closure *dsc, ULONGEST val) { if (DISPLACED_STEPPING_ARCH_VERSION >= 5) @@ -4580,7 +4580,7 @@ load_write_pc (struct regcache *regs, arm_displaced_step_closure *dsc, /* Write to the PC as if from an ALU instruction. */ static void -alu_write_pc (struct regcache *regs, arm_displaced_step_closure *dsc, +alu_write_pc (regcache *regs, arm_displaced_step_copy_insn_closure *dsc, ULONGEST val) { if (DISPLACED_STEPPING_ARCH_VERSION >= 7 && !dsc->is_thumb) @@ -4594,7 +4594,7 @@ alu_write_pc (struct regcache *regs, arm_displaced_step_closure *dsc, this is controlled by the WRITE_PC argument. */ void -displaced_write_reg (struct regcache *regs, arm_displaced_step_closure *dsc, +displaced_write_reg (regcache *regs, arm_displaced_step_copy_insn_closure *dsc, int regno, ULONGEST val, enum pc_write_style write_pc) { if (regno == ARM_PC_REGNUM) @@ -4675,8 +4675,8 @@ insn_references_pc (uint32_t insn, uint32_t bitmask) matter what address they are executed at: in those cases, use this. */ static int -arm_copy_unmodified (struct gdbarch *gdbarch, uint32_t insn, - const char *iname, arm_displaced_step_closure *dsc) +arm_copy_unmodified (struct gdbarch *gdbarch, uint32_t insn, const char *iname, + arm_displaced_step_copy_insn_closure *dsc) { displaced_debug_printf ("copying insn %.8lx, opcode/class '%s' unmodified", (unsigned long) insn, iname); @@ -4689,7 +4689,7 @@ arm_copy_unmodified (struct gdbarch *gdbarch, uint32_t insn, static int thumb_copy_unmodified_32bit (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, const char *iname, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { displaced_debug_printf ("copying insn %.4x %.4x, opcode/class '%s' " "unmodified", insn1, insn2, iname); @@ -4706,7 +4706,7 @@ thumb_copy_unmodified_32bit (struct gdbarch *gdbarch, uint16_t insn1, static int thumb_copy_unmodified_16bit (struct gdbarch *gdbarch, uint16_t insn, const char *iname, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { displaced_debug_printf ("copying insn %.4x, opcode/class '%s' unmodified", insn, iname); @@ -4719,8 +4719,8 @@ thumb_copy_unmodified_16bit (struct gdbarch *gdbarch, uint16_t insn, /* Preload instructions with immediate offset. */ static void -cleanup_preload (struct gdbarch *gdbarch, - struct regcache *regs, arm_displaced_step_closure *dsc) +cleanup_preload (struct gdbarch *gdbarch, regcache *regs, + arm_displaced_step_copy_insn_closure *dsc) { displaced_write_reg (regs, dsc, 0, dsc->tmp[0], CANNOT_WRITE_PC); if (!dsc->u.preload.immed) @@ -4729,7 +4729,7 @@ cleanup_preload (struct gdbarch *gdbarch, static void install_preload (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, unsigned int rn) + arm_displaced_step_copy_insn_closure *dsc, unsigned int rn) { ULONGEST rn_val; /* Preload instructions: @@ -4748,7 +4748,7 @@ install_preload (struct gdbarch *gdbarch, struct regcache *regs, static int arm_copy_preload (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int rn = bits (insn, 16, 19); @@ -4766,7 +4766,7 @@ arm_copy_preload (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, static int thumb2_copy_preload (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { unsigned int rn = bits (insn1, 0, 3); unsigned int u_bit = bit (insn1, 7); @@ -4814,7 +4814,7 @@ thumb2_copy_preload (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, static void install_preload_reg(struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, unsigned int rn, + arm_displaced_step_copy_insn_closure *dsc, unsigned int rn, unsigned int rm) { ULONGEST rn_val, rm_val; @@ -4839,7 +4839,7 @@ install_preload_reg(struct gdbarch *gdbarch, struct regcache *regs, static int arm_copy_preload_reg (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int rn = bits (insn, 16, 19); unsigned int rm = bits (insn, 0, 3); @@ -4862,7 +4862,7 @@ arm_copy_preload_reg (struct gdbarch *gdbarch, uint32_t insn, static void cleanup_copro_load_store (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { ULONGEST rn_val = displaced_read_reg (regs, dsc, 0); @@ -4874,7 +4874,7 @@ cleanup_copro_load_store (struct gdbarch *gdbarch, static void install_copro_load_store (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, + arm_displaced_step_copy_insn_closure *dsc, int writeback, unsigned int rn) { ULONGEST rn_val; @@ -4902,7 +4902,7 @@ install_copro_load_store (struct gdbarch *gdbarch, struct regcache *regs, static int arm_copy_copro_load_store (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int rn = bits (insn, 16, 19); @@ -4922,7 +4922,7 @@ arm_copy_copro_load_store (struct gdbarch *gdbarch, uint32_t insn, static int thumb2_copy_copro_load_store (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int rn = bits (insn1, 0, 3); @@ -4949,7 +4949,7 @@ thumb2_copy_copro_load_store (struct gdbarch *gdbarch, uint16_t insn1, static void cleanup_branch (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { uint32_t status = displaced_read_reg (regs, dsc, ARM_PS_REGNUM); int branch_taken = condition_true (dsc->u.branch.cond, status); @@ -4980,7 +4980,7 @@ cleanup_branch (struct gdbarch *gdbarch, struct regcache *regs, static void install_b_bl_blx (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, + arm_displaced_step_copy_insn_closure *dsc, unsigned int cond, int exchange, int link, long offset) { /* Implement "BL<cond> <label>" as: @@ -5009,7 +5009,7 @@ install_b_bl_blx (struct gdbarch *gdbarch, struct regcache *regs, } static int arm_copy_b_bl_blx (struct gdbarch *gdbarch, uint32_t insn, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { unsigned int cond = bits (insn, 28, 31); int exchange = (cond == 0xf); @@ -5038,7 +5038,7 @@ arm_copy_b_bl_blx (struct gdbarch *gdbarch, uint32_t insn, static int thumb2_copy_b_bl_blx (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int link = bit (insn2, 14); int exchange = link && !bit (insn2, 12); @@ -5091,7 +5091,7 @@ thumb2_copy_b_bl_blx (struct gdbarch *gdbarch, uint16_t insn1, /* Copy B Thumb instructions. */ static int thumb_copy_b (struct gdbarch *gdbarch, uint16_t insn, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int cond = 0; int offset = 0; @@ -5129,7 +5129,7 @@ thumb_copy_b (struct gdbarch *gdbarch, uint16_t insn, static void install_bx_blx_reg (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, int link, + arm_displaced_step_copy_insn_closure *dsc, int link, unsigned int cond, unsigned int rm) { /* Implement {BX,BLX}<cond> <reg>" as: @@ -5152,7 +5152,7 @@ install_bx_blx_reg (struct gdbarch *gdbarch, struct regcache *regs, static int arm_copy_bx_blx_reg (struct gdbarch *gdbarch, uint32_t insn, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { unsigned int cond = bits (insn, 28, 31); /* BX: x12xxx1x @@ -5171,7 +5171,7 @@ arm_copy_bx_blx_reg (struct gdbarch *gdbarch, uint32_t insn, static int thumb_copy_bx_blx_reg (struct gdbarch *gdbarch, uint16_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int link = bit (insn, 7); unsigned int rm = bits (insn, 3, 6); @@ -5190,7 +5190,7 @@ thumb_copy_bx_blx_reg (struct gdbarch *gdbarch, uint16_t insn, static void cleanup_alu_imm (struct gdbarch *gdbarch, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { ULONGEST rd_val = displaced_read_reg (regs, dsc, 0); displaced_write_reg (regs, dsc, 0, dsc->tmp[0], CANNOT_WRITE_PC); @@ -5200,7 +5200,7 @@ cleanup_alu_imm (struct gdbarch *gdbarch, static int arm_copy_alu_imm (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int rn = bits (insn, 16, 19); unsigned int rd = bits (insn, 12, 15); @@ -5248,7 +5248,7 @@ arm_copy_alu_imm (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, static int thumb2_copy_alu_imm (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int op = bits (insn1, 5, 8); unsigned int rn, rm, rd; @@ -5299,7 +5299,7 @@ thumb2_copy_alu_imm (struct gdbarch *gdbarch, uint16_t insn1, static void cleanup_alu_reg (struct gdbarch *gdbarch, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { ULONGEST rd_val; int i; @@ -5314,7 +5314,7 @@ cleanup_alu_reg (struct gdbarch *gdbarch, static void install_alu_reg (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, + arm_displaced_step_copy_insn_closure *dsc, unsigned int rd, unsigned int rn, unsigned int rm) { ULONGEST rd_val, rn_val, rm_val; @@ -5347,7 +5347,7 @@ install_alu_reg (struct gdbarch *gdbarch, struct regcache *regs, static int arm_copy_alu_reg (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int op = bits (insn, 21, 24); int is_mov = (op == 0xd); @@ -5371,7 +5371,7 @@ arm_copy_alu_reg (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, static int thumb_copy_alu_reg (struct gdbarch *gdbarch, uint16_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned rm, rd; @@ -5395,7 +5395,7 @@ thumb_copy_alu_reg (struct gdbarch *gdbarch, uint16_t insn, static void cleanup_alu_shifted_reg (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { ULONGEST rd_val = displaced_read_reg (regs, dsc, 0); int i; @@ -5408,7 +5408,7 @@ cleanup_alu_shifted_reg (struct gdbarch *gdbarch, static void install_alu_shifted_reg (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, + arm_displaced_step_copy_insn_closure *dsc, unsigned int rd, unsigned int rn, unsigned int rm, unsigned rs) { @@ -5447,7 +5447,7 @@ install_alu_shifted_reg (struct gdbarch *gdbarch, struct regcache *regs, static int arm_copy_alu_shifted_reg (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int op = bits (insn, 21, 24); int is_mov = (op == 0xd); @@ -5479,7 +5479,7 @@ arm_copy_alu_shifted_reg (struct gdbarch *gdbarch, uint32_t insn, static void cleanup_load (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { ULONGEST rt_val, rt_val2 = 0, rn_val; @@ -5508,7 +5508,7 @@ cleanup_load (struct gdbarch *gdbarch, struct regcache *regs, static void cleanup_store (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { ULONGEST rn_val = displaced_read_reg (regs, dsc, 2); @@ -5531,7 +5531,7 @@ cleanup_store (struct gdbarch *gdbarch, struct regcache *regs, static int arm_copy_extra_ld_st (struct gdbarch *gdbarch, uint32_t insn, int unprivileged, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { unsigned int op1 = bits (insn, 20, 24); unsigned int op2 = bits (insn, 5, 6); @@ -5604,7 +5604,7 @@ arm_copy_extra_ld_st (struct gdbarch *gdbarch, uint32_t insn, int unprivileged, static void install_load_store (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, int load, + arm_displaced_step_copy_insn_closure *dsc, int load, int immed, int writeback, int size, int usermode, int rt, int rm, int rn) { @@ -5660,7 +5660,7 @@ install_load_store (struct gdbarch *gdbarch, struct regcache *regs, static int thumb2_copy_load_literal (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc, int size) + arm_displaced_step_copy_insn_closure *dsc, int size) { unsigned int u_bit = bit (insn1, 7); unsigned int rt = bits (insn2, 12, 15); @@ -5714,7 +5714,7 @@ thumb2_copy_load_literal (struct gdbarch *gdbarch, uint16_t insn1, static int thumb2_copy_load_reg_imm (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc, + arm_displaced_step_copy_insn_closure *dsc, int writeback, int immed) { unsigned int rt = bits (insn2, 12, 15); @@ -5761,7 +5761,7 @@ thumb2_copy_load_reg_imm (struct gdbarch *gdbarch, uint16_t insn1, static int arm_copy_ldr_str_ldrb_strb (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc, + arm_displaced_step_copy_insn_closure *dsc, int load, int size, int usermode) { int immed = !bit (insn, 25); @@ -5844,7 +5844,7 @@ arm_copy_ldr_str_ldrb_strb (struct gdbarch *gdbarch, uint32_t insn, static void cleanup_block_load_all (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int inc = dsc->u.block.increment; int bump_before = dsc->u.block.before ? (inc ? 4 : -4) : 0; @@ -5904,7 +5904,7 @@ cleanup_block_load_all (struct gdbarch *gdbarch, struct regcache *regs, static void cleanup_block_store_pc (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { uint32_t status = displaced_read_reg (regs, dsc, ARM_PS_REGNUM); int store_executed = condition_true (dsc->u.block.cond, status); @@ -5955,7 +5955,7 @@ cleanup_block_store_pc (struct gdbarch *gdbarch, struct regcache *regs, static void cleanup_block_load_pc (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { uint32_t status = displaced_read_reg (regs, dsc, ARM_PS_REGNUM); int load_executed = condition_true (dsc->u.block.cond, status); @@ -6031,7 +6031,7 @@ cleanup_block_load_pc (struct gdbarch *gdbarch, static int arm_copy_block_xfer (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int load = bit (insn, 20); int user = bit (insn, 22); @@ -6143,7 +6143,7 @@ arm_copy_block_xfer (struct gdbarch *gdbarch, uint32_t insn, static int thumb2_copy_block_xfer (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int rn = bits (insn1, 0, 3); int load = bit (insn1, 4); @@ -6287,7 +6287,7 @@ arm_software_single_step (struct regcache *regcache) static void cleanup_svc (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { CORE_ADDR resume_addr = dsc->insn_addr + dsc->insn_size; @@ -6302,7 +6302,7 @@ cleanup_svc (struct gdbarch *gdbarch, struct regcache *regs, static int install_svc (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { /* Preparation: none. Insn: unmodified svc. @@ -6324,7 +6324,7 @@ install_svc (struct gdbarch *gdbarch, struct regcache *regs, static int arm_copy_svc (struct gdbarch *gdbarch, uint32_t insn, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { displaced_debug_printf ("copying svc insn %.8lx", @@ -6337,7 +6337,7 @@ arm_copy_svc (struct gdbarch *gdbarch, uint32_t insn, static int thumb_copy_svc (struct gdbarch *gdbarch, uint16_t insn, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { displaced_debug_printf ("copying svc insn %.4x", insn); @@ -6351,7 +6351,7 @@ thumb_copy_svc (struct gdbarch *gdbarch, uint16_t insn, static int arm_copy_undef (struct gdbarch *gdbarch, uint32_t insn, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { displaced_debug_printf ("copying undefined insn %.8lx", (unsigned long) insn); @@ -6363,7 +6363,7 @@ arm_copy_undef (struct gdbarch *gdbarch, uint32_t insn, static int thumb_32bit_copy_undef (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { displaced_debug_printf ("copying undefined insn %.4x %.4x", @@ -6380,7 +6380,7 @@ thumb_32bit_copy_undef (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, static int arm_copy_unpred (struct gdbarch *gdbarch, uint32_t insn, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { displaced_debug_printf ("copying unpredictable insn %.8lx", (unsigned long) insn); @@ -6396,7 +6396,7 @@ arm_copy_unpred (struct gdbarch *gdbarch, uint32_t insn, static int arm_decode_misc_memhint_neon (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int op1 = bits (insn, 20, 26), op2 = bits (insn, 4, 7); unsigned int rn = bits (insn, 16, 19); @@ -6456,7 +6456,7 @@ arm_decode_misc_memhint_neon (struct gdbarch *gdbarch, uint32_t insn, static int arm_decode_unconditional (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { if (bit (insn, 27) == 0) return arm_decode_misc_memhint_neon (gdbarch, insn, regs, dsc); @@ -6541,7 +6541,7 @@ arm_decode_unconditional (struct gdbarch *gdbarch, uint32_t insn, static int arm_decode_miscellaneous (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int op2 = bits (insn, 4, 6); unsigned int op = bits (insn, 21, 22); @@ -6592,7 +6592,7 @@ arm_decode_miscellaneous (struct gdbarch *gdbarch, uint32_t insn, static int arm_decode_dp_misc (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { if (bit (insn, 25)) switch (bits (insn, 20, 24)) @@ -6638,7 +6638,7 @@ arm_decode_dp_misc (struct gdbarch *gdbarch, uint32_t insn, static int arm_decode_ld_st_word_ubyte (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int a = bit (insn, 25), b = bit (insn, 4); uint32_t op1 = bits (insn, 20, 24); @@ -6674,7 +6674,7 @@ arm_decode_ld_st_word_ubyte (struct gdbarch *gdbarch, uint32_t insn, static int arm_decode_media (struct gdbarch *gdbarch, uint32_t insn, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { switch (bits (insn, 20, 24)) { @@ -6731,7 +6731,7 @@ arm_decode_media (struct gdbarch *gdbarch, uint32_t insn, static int arm_decode_b_bl_ldmstm (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { if (bit (insn, 25)) return arm_copy_b_bl_blx (gdbarch, insn, regs, dsc); @@ -6742,7 +6742,7 @@ arm_decode_b_bl_ldmstm (struct gdbarch *gdbarch, uint32_t insn, static int arm_decode_ext_reg_ld_st (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int opcode = bits (insn, 20, 24); @@ -6775,7 +6775,7 @@ arm_decode_ext_reg_ld_st (struct gdbarch *gdbarch, uint32_t insn, static int thumb2_decode_dp_shift_reg (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { /* PC is only allowed to be used in instruction MOV. */ @@ -6796,7 +6796,7 @@ thumb2_decode_dp_shift_reg (struct gdbarch *gdbarch, uint16_t insn1, static int thumb2_decode_ext_reg_ld_st (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int opcode = bits (insn1, 4, 8); @@ -6831,7 +6831,7 @@ thumb2_decode_ext_reg_ld_st (struct gdbarch *gdbarch, uint16_t insn1, static int arm_decode_svc_copro (struct gdbarch *gdbarch, uint32_t insn, - struct regcache *regs, arm_displaced_step_closure *dsc) + regcache *regs, arm_displaced_step_copy_insn_closure *dsc) { unsigned int op1 = bits (insn, 20, 25); int op = bit (insn, 4); @@ -6877,7 +6877,7 @@ arm_decode_svc_copro (struct gdbarch *gdbarch, uint32_t insn, static int thumb2_decode_svc_copro (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int coproc = bits (insn2, 8, 11); unsigned int bit_5_8 = bits (insn1, 5, 8); @@ -6917,7 +6917,7 @@ thumb2_decode_svc_copro (struct gdbarch *gdbarch, uint16_t insn1, static void install_pc_relative (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, int rd) + arm_displaced_step_copy_insn_closure *dsc, int rd) { /* ADR Rd, #imm @@ -6935,7 +6935,7 @@ install_pc_relative (struct gdbarch *gdbarch, struct regcache *regs, static int thumb_copy_pc_relative_16bit (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc, + arm_displaced_step_copy_insn_closure *dsc, int rd, unsigned int imm) { @@ -6950,7 +6950,7 @@ thumb_copy_pc_relative_16bit (struct gdbarch *gdbarch, struct regcache *regs, static int thumb_decode_pc_relative_16bit (struct gdbarch *gdbarch, uint16_t insn, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int rd = bits (insn, 8, 10); unsigned int imm8 = bits (insn, 0, 7); @@ -6964,7 +6964,7 @@ thumb_decode_pc_relative_16bit (struct gdbarch *gdbarch, uint16_t insn, static int thumb_copy_pc_relative_32bit (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int rd = bits (insn2, 8, 11); /* Since immediate has the same encoding in ADR ADD and SUB, so we simply @@ -6999,7 +6999,7 @@ thumb_copy_pc_relative_32bit (struct gdbarch *gdbarch, uint16_t insn1, static int thumb_copy_16bit_ldr_literal (struct gdbarch *gdbarch, uint16_t insn1, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned int rt = bits (insn1, 8, 10); unsigned int pc; @@ -7046,7 +7046,7 @@ thumb_copy_16bit_ldr_literal (struct gdbarch *gdbarch, uint16_t insn1, static int thumb_copy_cbnz_cbz (struct gdbarch *gdbarch, uint16_t insn1, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int non_zero = bit (insn1, 11); unsigned int imm5 = (bit (insn1, 9) << 6) | (bits (insn1, 3, 7) << 1); @@ -7083,7 +7083,7 @@ thumb_copy_cbnz_cbz (struct gdbarch *gdbarch, uint16_t insn1, static int thumb2_copy_table_branch (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { ULONGEST rn_val, rm_val; int is_tbh = bit (insn2, 4); @@ -7125,7 +7125,7 @@ thumb2_copy_table_branch (struct gdbarch *gdbarch, uint16_t insn1, static void cleanup_pop_pc_16bit_all (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { /* PC <- r7 */ int val = displaced_read_reg (regs, dsc, 7); @@ -7143,7 +7143,7 @@ cleanup_pop_pc_16bit_all (struct gdbarch *gdbarch, struct regcache *regs, static int thumb_copy_pop_pc_16bit (struct gdbarch *gdbarch, uint16_t insn1, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { dsc->u.block.regmask = insn1 & 0x00ff; @@ -7212,7 +7212,7 @@ thumb_copy_pop_pc_16bit (struct gdbarch *gdbarch, uint16_t insn1, static void thumb_process_displaced_16bit_insn (struct gdbarch *gdbarch, uint16_t insn1, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { unsigned short op_bit_12_15 = bits (insn1, 12, 15); unsigned short op_bit_10_11 = bits (insn1, 10, 11); @@ -7316,7 +7316,7 @@ static int decode_thumb_32bit_ld_mem_hints (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int rt = bits (insn2, 12, 15); int rn = bits (insn1, 0, 3); @@ -7395,7 +7395,7 @@ decode_thumb_32bit_ld_mem_hints (struct gdbarch *gdbarch, static void thumb_process_displaced_32bit_insn (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int err = 0; unsigned short op = bit (insn2, 15); @@ -7523,7 +7523,7 @@ thumb_process_displaced_32bit_insn (struct gdbarch *gdbarch, uint16_t insn1, static void thumb_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch); uint16_t insn1 @@ -7547,7 +7547,7 @@ thumb_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from, void arm_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs, - arm_displaced_step_closure *dsc) + arm_displaced_step_copy_insn_closure *dsc) { int err = 0; enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch); @@ -7604,7 +7604,8 @@ arm_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from, void arm_displaced_init_closure (struct gdbarch *gdbarch, CORE_ADDR from, - CORE_ADDR to, arm_displaced_step_closure *dsc) + CORE_ADDR to, + arm_displaced_step_copy_insn_closure *dsc) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); unsigned int i, len, offset; @@ -7654,11 +7655,12 @@ arm_displaced_init_closure (struct gdbarch *gdbarch, CORE_ADDR from, void arm_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *dsc_, + struct displaced_step_copy_insn_closure *dsc_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { - arm_displaced_step_closure *dsc = (arm_displaced_step_closure *) dsc_; + arm_displaced_step_copy_insn_closure *dsc + = (arm_displaced_step_copy_insn_closure *) dsc_; if (dsc->cleanup) dsc->cleanup (gdbarch, regs, dsc); diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h index fd7e2ea..b1f52ff 100644 --- a/gdb/arm-tdep.h +++ b/gdb/arm-tdep.h @@ -149,7 +149,8 @@ struct gdbarch_tdep sequence) and any scratch words, etc. */ #define ARM_DISPLACED_MODIFIED_INSNS 8 -struct arm_displaced_step_closure : public displaced_step_closure +struct arm_displaced_step_copy_insn_closure + : public displaced_step_copy_insn_closure { ULONGEST tmp[DISPLACED_TEMPS]; int rd; @@ -196,7 +197,7 @@ struct arm_displaced_step_closure : public displaced_step_closure /* If non-NULL, override generic SVC handling (e.g. for a particular OS). */ int (*copy_svc_os) (struct gdbarch *gdbarch, struct regcache *regs, - arm_displaced_step_closure *dsc); + arm_displaced_step_copy_insn_closure *dsc); } svc; } u; @@ -215,7 +216,7 @@ struct arm_displaced_step_closure : public displaced_step_closure CORE_ADDR insn_addr; CORE_ADDR scratch_base; void (*cleanup) (struct gdbarch *, struct regcache *, - arm_displaced_step_closure *); + arm_displaced_step_copy_insn_closure *); }; /* Values for the WRITE_PC argument to displaced_write_reg. If the register @@ -234,16 +235,17 @@ enum pc_write_style extern void arm_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs, - arm_displaced_step_closure *dsc); + arm_displaced_step_copy_insn_closure *dsc); extern void arm_displaced_init_closure (struct gdbarch *gdbarch, CORE_ADDR from, - CORE_ADDR to, arm_displaced_step_closure *dsc); + CORE_ADDR to, + arm_displaced_step_copy_insn_closure *dsc); extern ULONGEST - displaced_read_reg (struct regcache *regs, arm_displaced_step_closure *dsc, + displaced_read_reg (regcache *regs, arm_displaced_step_copy_insn_closure *dsc, int regno); extern void displaced_write_reg (struct regcache *regs, - arm_displaced_step_closure *dsc, int regno, + arm_displaced_step_copy_insn_closure *dsc, int regno, ULONGEST val, enum pc_write_style write_pc); CORE_ADDR arm_skip_stub (struct frame_info *, CORE_ADDR); @@ -262,7 +264,7 @@ int arm_is_thumb (struct regcache *regcache); int arm_frame_is_thumb (struct frame_info *frame); extern void arm_displaced_step_fixup (struct gdbarch *, - struct displaced_step_closure *, + displaced_step_copy_insn_closure *, CORE_ADDR, CORE_ADDR, struct regcache *); /* Return the bit mask in ARM_PS_REGNUM that indicates Thumb mode. */ diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index cd93411..0ec626c 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -3969,7 +3969,7 @@ gdbarch_displaced_step_copy_insn_p (struct gdbarch *gdbarch) return gdbarch->displaced_step_copy_insn != NULL; } -displaced_step_closure_up +displaced_step_copy_insn_closure_up gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { gdb_assert (gdbarch != NULL); @@ -4011,7 +4011,7 @@ gdbarch_displaced_step_fixup_p (struct gdbarch *gdbarch) } void -gdbarch_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) +gdbarch_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_copy_insn_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { gdb_assert (gdbarch != NULL); gdb_assert (gdbarch->displaced_step_fixup != NULL); diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index 70bd8a6..4f52e8c 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -1030,8 +1030,8 @@ extern void set_gdbarch_max_insn_length (struct gdbarch *gdbarch, ULONGEST max_i extern bool gdbarch_displaced_step_copy_insn_p (struct gdbarch *gdbarch); -typedef displaced_step_closure_up (gdbarch_displaced_step_copy_insn_ftype) (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); -extern displaced_step_closure_up gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); +typedef displaced_step_copy_insn_closure_up (gdbarch_displaced_step_copy_insn_ftype) (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); +extern displaced_step_copy_insn_closure_up gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); extern void set_gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn); /* Return true if GDB should use hardware single-stepping to execute a displaced @@ -1066,8 +1066,8 @@ extern void set_gdbarch_displaced_step_hw_singlestep (struct gdbarch *gdbarch, g extern bool gdbarch_displaced_step_fixup_p (struct gdbarch *gdbarch); -typedef void (gdbarch_displaced_step_fixup_ftype) (struct gdbarch *gdbarch, struct displaced_step_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); -extern void gdbarch_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); +typedef void (gdbarch_displaced_step_fixup_ftype) (struct gdbarch *gdbarch, struct displaced_step_copy_insn_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); +extern void gdbarch_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_copy_insn_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); extern void set_gdbarch_displaced_step_fixup (struct gdbarch *gdbarch, gdbarch_displaced_step_fixup_ftype *displaced_step_fixup); /* Return the address of an appropriate place to put displaced diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index 86f2c79..f67ec9d 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -783,7 +783,7 @@ V;ULONGEST;max_insn_length;;;0;0 # If the instruction cannot execute out of line, return NULL. The # core falls back to stepping past the instruction in-line instead in # that case. -M;displaced_step_closure_up;displaced_step_copy_insn;CORE_ADDR from, CORE_ADDR to, struct regcache *regs;from, to, regs +M;displaced_step_copy_insn_closure_up;displaced_step_copy_insn;CORE_ADDR from, CORE_ADDR to, struct regcache *regs;from, to, regs # Return true if GDB should use hardware single-stepping to execute a displaced # step instruction. If false, GDB will simply restart execution at the @@ -811,7 +811,7 @@ m;bool;displaced_step_hw_singlestep;void;;;default_displaced_step_hw_singlestep; # # For a general explanation of displaced stepping and how GDB uses it, # see the comments in infrun.c. -M;void;displaced_step_fixup;struct displaced_step_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs;closure, from, to, regs;;NULL +M;void;displaced_step_fixup;struct displaced_step_copy_insn_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs;closure, from, to, regs;;NULL # Return the address of an appropriate place to put displaced # instructions while we step over them. There need only be one such diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c index b9ec958..ab7d236 100644 --- a/gdb/i386-linux-tdep.c +++ b/gdb/i386-linux-tdep.c @@ -789,29 +789,30 @@ i386_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, PC should get relocated back to its vDSO address. Hide the 'ret' instruction by 'nop' so that i386_displaced_step_fixup is not confused. - It is not fully correct as the bytes in struct displaced_step_closure will - not match the inferior code. But we would need some new flag in - displaced_step_closure otherwise to keep the state that syscall is finishing - for the later i386_displaced_step_fixup execution as the syscall execution - is already no longer detectable there. The new flag field would mean - i386-linux-tdep.c needs to wrap all the displacement methods of i386-tdep.c - which does not seem worth it. The same effect is achieved by patching that - 'nop' instruction there instead. */ - -static displaced_step_closure_up + It is not fully correct as the bytes in struct + displaced_step_copy_insn_closure will not match the inferior code. But we + would need some new flag in displaced_step_copy_insn_closure otherwise to + keep the state that syscall is finishing for the later + i386_displaced_step_fixup execution as the syscall execution is already no + longer detectable there. The new flag field would mean i386-linux-tdep.c + needs to wrap all the displacement methods of i386-tdep.c which does not seem + worth it. The same effect is achieved by patching that 'nop' instruction + there instead. */ + +static displaced_step_copy_insn_closure_up i386_linux_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { - displaced_step_closure_up closure_ + displaced_step_copy_insn_closure_up closure_ = i386_displaced_step_copy_insn (gdbarch, from, to, regs); if (i386_linux_get_syscall_number_from_regcache (regs) != -1) { /* The closure returned by i386_displaced_step_copy_insn is simply a buffer with a copy of the instruction. */ - i386_displaced_step_closure *closure - = (i386_displaced_step_closure *) closure_.get (); + i386_displaced_step_copy_insn_closure *closure + = (i386_displaced_step_copy_insn_closure *) closure_.get (); /* Fake nop. */ closure->buf[0] = 0x90; diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index ad02ad6..d59008b 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -799,14 +799,14 @@ i386_insn_is_jump (struct gdbarch *gdbarch, CORE_ADDR addr) /* Some kernels may run one past a syscall insn, so we have to cope. */ -displaced_step_closure_up +displaced_step_copy_insn_closure_up i386_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { size_t len = gdbarch_max_insn_length (gdbarch); - std::unique_ptr<i386_displaced_step_closure> closure - (new i386_displaced_step_closure (len)); + std::unique_ptr<i386_displaced_step_copy_insn_closure> closure + (new i386_displaced_step_copy_insn_closure (len)); gdb_byte *buf = closure->buf.data (); read_memory (from, buf, len); @@ -830,7 +830,7 @@ i386_displaced_step_copy_insn (struct gdbarch *gdbarch, displaced_step_dump_bytes (buf, len).c_str ()); /* This is a work around for a problem with g++ 4.8. */ - return displaced_step_closure_up (closure.release ()); + return displaced_step_copy_insn_closure_up (closure.release ()); } /* Fix up the state of registers and memory after having single-stepped @@ -838,7 +838,7 @@ i386_displaced_step_copy_insn (struct gdbarch *gdbarch, void i386_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *closure_, + struct displaced_step_copy_insn_closure *closure_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { @@ -850,8 +850,8 @@ i386_displaced_step_fixup (struct gdbarch *gdbarch, applying it. */ ULONGEST insn_offset = to - from; - i386_displaced_step_closure *closure - = (i386_displaced_step_closure *) closure_; + i386_displaced_step_copy_insn_closure *closure + = (i386_displaced_step_copy_insn_closure *) closure_; gdb_byte *insn = closure->buf.data (); /* The start of the insn, needed in case we see some prefixes. */ gdb_byte *insn_start = insn; diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h index 45d64eb..f8a93b1 100644 --- a/gdb/i386-tdep.h +++ b/gdb/i386-tdep.h @@ -439,15 +439,15 @@ extern void void *cb_data, const struct regcache *regcache); -typedef buf_displaced_step_closure i386_displaced_step_closure; +typedef buf_displaced_step_copy_insn_closure + i386_displaced_step_copy_insn_closure; -extern displaced_step_closure_up i386_displaced_step_copy_insn +extern displaced_step_copy_insn_closure_up i386_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); -extern void i386_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *closure, - CORE_ADDR from, CORE_ADDR to, - struct regcache *regs); +extern void i386_displaced_step_fixup + (struct gdbarch *gdbarch, displaced_step_copy_insn_closure *closure, + CORE_ADDR from, CORE_ADDR to, regcache *regs); /* Initialize a basic ELF architecture variant. */ extern void i386_elf_init_abi (struct gdbarch_info, struct gdbarch *); diff --git a/gdb/infrun.c b/gdb/infrun.c index b965e70..175d095 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -1459,9 +1459,10 @@ step_over_info_valid_p (void) displaced step operation on it. See displaced_step_prepare and displaced_step_fixup for details. */ -/* Default destructor for displaced_step_closure. */ +/* Default destructor for displaced_step_copy_insn_closure. */ -displaced_step_closure::~displaced_step_closure () = default; +displaced_step_copy_insn_closure::~displaced_step_copy_insn_closure () + = default; /* Returns true if any inferior has a thread doing a displaced step. */ @@ -1497,11 +1498,11 @@ displaced_step_in_progress (inferior *inf) } /* If inferior is in displaced stepping, and ADDR equals to starting address - of copy area, return corresponding displaced_step_closure. Otherwise, - return NULL. */ + of copy area, return corresponding displaced_step_copy_insn_closure. + Otherwise, return NULL. */ -struct displaced_step_closure* -get_displaced_step_closure_by_addr (CORE_ADDR addr) +displaced_step_copy_insn_closure * +get_displaced_step_copy_insn_closure_by_addr (CORE_ADDR addr) { displaced_step_inferior_state &displaced = current_inferior ()->displaced_step_state; diff --git a/gdb/infrun.h b/gdb/infrun.h index ca0774e..a276ddf 100644 --- a/gdb/infrun.h +++ b/gdb/infrun.h @@ -239,8 +239,8 @@ extern void clear_exit_convenience_vars (void); /* Dump LEN bytes at BUF in hex to a string and return it. */ extern std::string displaced_step_dump_bytes (const gdb_byte *buf, size_t len); -extern struct displaced_step_closure *get_displaced_step_closure_by_addr - (CORE_ADDR addr); +extern struct displaced_step_copy_insn_closure * + get_displaced_step_copy_insn_closure_by_addr (CORE_ADDR addr); extern void update_observer_mode (void); @@ -282,18 +282,19 @@ extern void all_uis_on_sync_execution_starting (void); /* Base class for displaced stepping closures (the arch-specific data). */ -struct displaced_step_closure +struct displaced_step_copy_insn_closure { - virtual ~displaced_step_closure () = 0; + virtual ~displaced_step_copy_insn_closure () = 0; }; -using displaced_step_closure_up = std::unique_ptr<displaced_step_closure>; +using displaced_step_copy_insn_closure_up + = std::unique_ptr<displaced_step_copy_insn_closure>; /* A simple displaced step closure that contains only a byte buffer. */ -struct buf_displaced_step_closure : displaced_step_closure +struct buf_displaced_step_copy_insn_closure : displaced_step_copy_insn_closure { - buf_displaced_step_closure (int buf_size) + buf_displaced_step_copy_insn_closure (int buf_size) : buf (buf_size) {} @@ -334,7 +335,7 @@ struct displaced_step_inferior_state /* The closure provided gdbarch_displaced_step_copy_insn, to be used for post-step cleanup. */ - displaced_step_closure_up step_closure; + displaced_step_copy_insn_closure_up step_closure; /* The address of the original instruction, and the copy we made. */ diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index bde3ee7..626b47e 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -851,18 +851,19 @@ typedef BP_MANIPULATION_ENDIAN (little_breakpoint, big_breakpoint) || (insn & STORE_CONDITIONAL_MASK) == STHCX_INSTRUCTION \ || (insn & STORE_CONDITIONAL_MASK) == STQCX_INSTRUCTION) -typedef buf_displaced_step_closure ppc_displaced_step_closure; +typedef buf_displaced_step_copy_insn_closure + ppc_displaced_step_copy_insn_closure; /* We can't displaced step atomic sequences. */ -static displaced_step_closure_up +static displaced_step_copy_insn_closure_up ppc_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { size_t len = gdbarch_max_insn_length (gdbarch); - std::unique_ptr<ppc_displaced_step_closure> closure - (new ppc_displaced_step_closure (len)); + std::unique_ptr<ppc_displaced_step_copy_insn_closure> closure + (new ppc_displaced_step_copy_insn_closure (len)); gdb_byte *buf = closure->buf.data (); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int insn; @@ -887,20 +888,21 @@ ppc_displaced_step_copy_insn (struct gdbarch *gdbarch, displaced_step_dump_bytes (buf, len).c_str ());; /* This is a work around for a problem with g++ 4.8. */ - return displaced_step_closure_up (closure.release ()); + return displaced_step_copy_insn_closure_up (closure.release ()); } /* Fix up the state of registers and memory after having single-stepped a displaced instruction. */ static void ppc_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *closure_, + struct displaced_step_copy_insn_closure *closure_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); /* Our closure is a copy of the instruction. */ - ppc_displaced_step_closure *closure = (ppc_displaced_step_closure *) closure_; + ppc_displaced_step_copy_insn_closure *closure + = (ppc_displaced_step_copy_insn_closure *) closure_; ULONGEST insn = extract_unsigned_integer (closure->buf.data (), PPC_INSN_SIZE, byte_order); ULONGEST opcode = 0; diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 247adcd..5429d71 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -421,18 +421,19 @@ is_non_branch_ril (gdb_byte *insn) return 0; } -typedef buf_displaced_step_closure s390_displaced_step_closure; +typedef buf_displaced_step_copy_insn_closure + s390_displaced_step_copy_insn_closure; /* Implementation of gdbarch_displaced_step_copy_insn. */ -static displaced_step_closure_up +static displaced_step_copy_insn_closure_up s390_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { size_t len = gdbarch_max_insn_length (gdbarch); - std::unique_ptr<s390_displaced_step_closure> closure - (new s390_displaced_step_closure (len)); + std::unique_ptr<s390_displaced_step_copy_insn_closure> closure + (new s390_displaced_step_copy_insn_closure (len)); gdb_byte *buf = closure->buf.data (); read_memory (from, buf, len); @@ -470,7 +471,7 @@ s390_displaced_step_copy_insn (struct gdbarch *gdbarch, displaced_step_dump_bytes (buf, len).c_str ()); /* This is a work around for a problem with g++ 4.8. */ - return displaced_step_closure_up (closure.release ()); + return displaced_step_copy_insn_closure_up (closure.release ()); } /* Fix up the state of registers and memory after having single-stepped @@ -478,13 +479,13 @@ s390_displaced_step_copy_insn (struct gdbarch *gdbarch, static void s390_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *closure_, + displaced_step_copy_insn_closure *closure_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) { /* Our closure is a copy of the instruction. */ - s390_displaced_step_closure *closure - = (s390_displaced_step_closure *) closure_; + s390_displaced_step_copy_insn_closure *closure + = (s390_displaced_step_copy_insn_closure *) closure_; gdb_byte *insn = closure->buf.data (); static int s390_instrlen[] = { 2, 4, 4, 6 }; int insnlen = s390_instrlen[insn[0] >> 6]; |