26#include <unordered_map>
33static std::unordered_map<pid_t, aarch64_debug_reg_state>
89 gdb_assert_not_reached (
"unexpected breakpoint type");
110 const enum target_hw_bp_type
type = hw_execute;
118 "insert_hw_breakpoint on entry (addr=0x%08lx, len=%d))\n",
119 (
unsigned long) addr, len);
127 "insert_hw_breakpoint", addr, len,
type);
143 const enum target_hw_bp_type
type = hw_execute;
151 "remove_hw_breakpoint on entry (addr=0x%08lx, len=%d))\n",
152 (
unsigned long) addr, len);
160 "remove_hw_watchpoint", addr, len,
type);
180 "insert_watchpoint on entry (addr=0x%08lx, len=%d)\n",
181 (
unsigned long) addr, len);
183 gdb_assert (
type != hw_execute);
191 "insert_watchpoint", addr, len,
type);
211 "remove_watchpoint on entry (addr=0x%08lx, len=%d)\n",
212 (
unsigned long) addr, len);
214 gdb_assert (
type != hw_execute);
222 "remove_watchpoint", addr, len,
type);
232 CORE_ADDR addr_trap, CORE_ADDR *addr_p)
238 const unsigned int offset
241 const CORE_ADDR addr_watch = state->
dr_addr_wp[i] + offset;
242 const CORE_ADDR addr_watch_aligned = align_down (state->
dr_addr_wp[i], 8);
247 && addr_trap >= addr_watch_aligned
248 && addr_trap < addr_watch + len)
284 &show_debug_regs, _(
"\
285Set whether to show variables that mirror the AArch64 debug registers."), _(
"\
286Show whether to show variables that mirror the AArch64 debug registers."), _(
"\
287Use \"on\" to enable, \"off\" to disable.\n\
288If enabled, the debug registers values are shown when GDB inserts\n\
289or removes a hardware breakpoint or watchpoint, and when the inferior\n\
290triggers a breakpoint or watchpoint."),
void aarch64_show_debug_reg_state(struct aarch64_debug_reg_state *state, const char *func, CORE_ADDR addr, int len, enum target_hw_bp_type type)
unsigned int aarch64_watchpoint_length(unsigned int ctrl)
int aarch64_handle_breakpoint(enum target_hw_bp_type type, CORE_ADDR addr, int len, int is_insert, ptid_t ptid, struct aarch64_debug_reg_state *state)
int aarch64_handle_watchpoint(enum target_hw_bp_type type, CORE_ADDR addr, int len, int is_insert, ptid_t ptid, struct aarch64_debug_reg_state *state)
unsigned int aarch64_watchpoint_offset(unsigned int ctrl)
#define DR_CONTROL_ENABLED(ctrl)
static void add_show_debug_regs_command(void)
void aarch64_initialize_hw_point()
struct aarch64_debug_reg_state * aarch64_lookup_debug_reg_state(pid_t pid)
struct aarch64_debug_reg_state * aarch64_get_debug_reg_state(pid_t pid)
static std::unordered_map< pid_t, aarch64_debug_reg_state > aarch64_debug_process_state
bool aarch64_stopped_data_address(const struct aarch64_debug_reg_state *state, CORE_ADDR addr_trap, CORE_ADDR *addr_p)
int aarch64_can_use_hw_breakpoint(enum bptype type, int cnt, int othertype)
void aarch64_remove_debug_reg_state(pid_t pid)
int aarch64_insert_watchpoint(CORE_ADDR addr, int len, enum target_hw_bp_type type, struct expression *cond)
int aarch64_insert_hw_breakpoint(struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
int aarch64_remove_watchpoint(CORE_ADDR addr, int len, enum target_hw_bp_type type, struct expression *cond)
int aarch64_remove_hw_breakpoint(struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
struct cmd_list_element * maintenance_show_cmdlist
struct cmd_list_element * maintenance_set_cmdlist
set_show_commands add_setshow_boolean_cmd(const char *name, enum command_class theclass, bool *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_func_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
const gdb_byte * gdbarch_breakpoint_from_pc(struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int int rusage_t pid_t pid
unsigned int dr_ref_count_wp[AARCH64_HWP_MAX_NUM]
unsigned int dr_ctrl_wp[AARCH64_HWP_MAX_NUM]
CORE_ADDR dr_addr_wp[AARCH64_HWP_MAX_NUM]
CORE_ADDR dr_addr_orig_wp[AARCH64_HWP_MAX_NUM]
void gdb_printf(struct ui_file *stream, const char *format,...)