forked from Imagelibrary/binutils-gdb
target: allow decr_pc_after_break to be defined by the target
Allow the target to define which value to use in decr_pc_after_break. It defaults to gdbarch_decr_pc_after_break (GDBARCH). 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * target.h (struct target_ops) <to_decr_pc_after_break>: New. (forward_target_decr_pc_after_break) (target_decr_pc_after_break): New. * target.c (forward_target_decr_pc_after_break) (target_decr_pc_after_break): New. * aix-thread.c (aix_thread_wait): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * darwin-nat.c (cancel_breakpoint): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * infrun.c (adjust_pc_after_break): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * linux-nat.c (cancel_breakpoint): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * linux-thread-db.c (check_event): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * record-full.c (record_full_wait_1): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break.
This commit is contained in:
@@ -2963,7 +2963,7 @@ adjust_pc_after_break (struct execution_control_state *ecs)
|
||||
struct regcache *regcache;
|
||||
struct gdbarch *gdbarch;
|
||||
struct address_space *aspace;
|
||||
CORE_ADDR breakpoint_pc;
|
||||
CORE_ADDR breakpoint_pc, decr_pc;
|
||||
|
||||
/* If we've hit a breakpoint, we'll normally be stopped with SIGTRAP. If
|
||||
we aren't, just return.
|
||||
@@ -3025,15 +3025,16 @@ adjust_pc_after_break (struct execution_control_state *ecs)
|
||||
we have nothing to do. */
|
||||
regcache = get_thread_regcache (ecs->ptid);
|
||||
gdbarch = get_regcache_arch (regcache);
|
||||
if (gdbarch_decr_pc_after_break (gdbarch) == 0)
|
||||
|
||||
decr_pc = target_decr_pc_after_break (gdbarch);
|
||||
if (decr_pc == 0)
|
||||
return;
|
||||
|
||||
aspace = get_regcache_aspace (regcache);
|
||||
|
||||
/* Find the location where (if we've hit a breakpoint) the
|
||||
breakpoint would be. */
|
||||
breakpoint_pc = regcache_read_pc (regcache)
|
||||
- gdbarch_decr_pc_after_break (gdbarch);
|
||||
breakpoint_pc = regcache_read_pc (regcache) - decr_pc;
|
||||
|
||||
/* Check whether there actually is a software breakpoint inserted at
|
||||
that location.
|
||||
|
||||
Reference in New Issue
Block a user