X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Farm-tdep.h;h=8fa8b68d68c5dd0f8ca36ebd335b230b256eaa9e;hb=4a1b91eabbe77f4d906a0895121d76a0653c3cf3;hp=9b8447b0af4f006b2e48a506b79c0cb0d0dca7fd;hpb=cba7e83fda349cbf423fab274f5b8677d8148947;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h index 9b8447b0af..8fa8b68d68 100644 --- a/gdb/arm-tdep.h +++ b/gdb/arm-tdep.h @@ -1,5 +1,5 @@ /* Common target dependent code for GDB on ARM systems. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2018 Free Software Foundation, Inc. This file is part of GDB. @@ -23,8 +23,14 @@ struct gdbarch; struct regset; struct address_space; +struct get_next_pcs; +struct arm_get_next_pcs; +struct gdb_get_next_pcs; #include "arch/arm.h" +#include "infrun.h" + +#include /* Say how long FP registers are. Used for documentation purposes and code readability in this header. IEEE extended doubles are 80 @@ -135,10 +141,6 @@ struct gdbarch_tdep struct type *neon_double_type; struct type *neon_quad_type; - /* Return the expected next PC if FRAME is stopped at a syscall - instruction. */ - CORE_ADDR (*syscall_next_pc) (struct frame_info *frame); - /* syscall record. */ int (*arm_syscall_record) (struct regcache *regcache, unsigned long svc_number); }; @@ -152,7 +154,7 @@ struct gdbarch_tdep sequence) and any scratch words, etc. */ #define DISPLACED_MODIFIED_INSNS 8 -struct displaced_step_closure +struct arm_displaced_step_closure : public displaced_step_closure { ULONGEST tmp[DISPLACED_TEMPS]; int rd; @@ -199,7 +201,7 @@ struct 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, - struct displaced_step_closure *dsc); + arm_displaced_step_closure *dsc); } svc; } u; @@ -218,7 +220,7 @@ struct displaced_step_closure CORE_ADDR insn_addr; CORE_ADDR scratch_base; void (*cleanup) (struct gdbarch *, struct regcache *, - struct displaced_step_closure *); + arm_displaced_step_closure *); }; /* Values for the WRITE_PC argument to displaced_write_reg. If the register @@ -237,29 +239,33 @@ enum pc_write_style extern void arm_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs, - struct displaced_step_closure *dsc); + arm_displaced_step_closure *dsc); extern void arm_displaced_init_closure (struct gdbarch *gdbarch, CORE_ADDR from, - CORE_ADDR to, struct displaced_step_closure *dsc); + CORE_ADDR to, arm_displaced_step_closure *dsc); extern ULONGEST - displaced_read_reg (struct regcache *regs, struct displaced_step_closure *dsc, + displaced_read_reg (struct regcache *regs, arm_displaced_step_closure *dsc, int regno); extern void displaced_write_reg (struct regcache *regs, - struct displaced_step_closure *dsc, int regno, + arm_displaced_step_closure *dsc, int regno, ULONGEST val, enum pc_write_style write_pc); CORE_ADDR arm_skip_stub (struct frame_info *, CORE_ADDR); -CORE_ADDR arm_get_next_pc (struct frame_info *, CORE_ADDR); -void arm_insert_single_step_breakpoint (struct gdbarch *, - struct address_space *, CORE_ADDR); -int arm_deal_with_atomic_sequence (struct frame_info *); -int arm_software_single_step (struct frame_info *); + +ULONGEST arm_get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr, + int len, + int byte_order); + +CORE_ADDR arm_get_next_pcs_addr_bits_remove (struct arm_get_next_pcs *self, + CORE_ADDR val); + +int arm_get_next_pcs_is_thumb (struct arm_get_next_pcs *self); + +std::vector arm_software_single_step (struct regcache *); +int arm_is_thumb (struct regcache *regcache); int arm_frame_is_thumb (struct frame_info *frame); -extern struct displaced_step_closure * - arm_displaced_step_copy_insn (struct gdbarch *, CORE_ADDR, CORE_ADDR, - struct regcache *); extern void arm_displaced_step_fixup (struct gdbarch *, struct displaced_step_closure *, CORE_ADDR, CORE_ADDR, struct regcache *); @@ -273,7 +279,7 @@ extern int arm_pc_is_thumb (struct gdbarch *, CORE_ADDR); extern int arm_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr); -/* Functions exported from armbsd-tdep.h. */ +/* Functions exported from arm-bsd-tdep.h. */ /* Return the appropriate register set for the core section identified by SECT_NAME and SECT_SIZE. */