mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-01 20:12:01 +08:00
* gdbarch.sh (software_single_step): Remove "insert_breakpoints_p" and
"sig" arguments, add "regcache" argument. * gdbarch.c, gdbarch.h: Regenerate. * infrun.c (resume): Update SOFTWARE_SINGLE_STEP call arguments. (handle_inferior_event): Call remove_single_step_breakpoints directly instead of calling SOFTWARE_SINGLE_STEP to remove breakpoints. * alpha-tdep.c (alpha_software_single_step): Update argument list. Remove handling of !insert_breakpoints_p case. * arm-tdep.c (arm_software_single_step): Likewise. * cris-tdep.c (cris_software_single_step): Likewise. * mips-tdep.c (mips_software_single_step): Likewise. * rs6000-tdep.c (rs6000_software_single_step): Likewise. * sparc-tdep.c (sparc_software_single_step): Likewise. * spu-tdep.c (spu_software_single_step): Likewise. * alpha-tdep.h (alpha_software_single_step): Update prototype. * mips-tdep.h (mips_software_single_step): Likewise. * rs6000-tdep.h (rs6000_software_single_step): Likewise. * sparc-tdep.h (sparc_software_single_step): Likewise.
This commit is contained in:
@ -1330,35 +1330,30 @@ sparc_step_trap (unsigned long insn)
|
||||
}
|
||||
|
||||
int
|
||||
sparc_software_single_step (enum target_signal sig, int insert_breakpoints_p)
|
||||
sparc_software_single_step (struct regcache *regcache)
|
||||
{
|
||||
struct gdbarch *arch = current_gdbarch;
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
|
||||
CORE_ADDR npc, nnpc;
|
||||
|
||||
if (insert_breakpoints_p)
|
||||
{
|
||||
CORE_ADDR pc, orig_npc;
|
||||
CORE_ADDR pc, orig_npc;
|
||||
|
||||
pc = sparc_address_from_register (tdep->pc_regnum);
|
||||
orig_npc = npc = sparc_address_from_register (tdep->npc_regnum);
|
||||
pc = sparc_address_from_register (tdep->pc_regnum);
|
||||
orig_npc = npc = sparc_address_from_register (tdep->npc_regnum);
|
||||
|
||||
/* Analyze the instruction at PC. */
|
||||
nnpc = sparc_analyze_control_transfer (arch, pc, &npc);
|
||||
if (npc != 0)
|
||||
insert_single_step_breakpoint (npc);
|
||||
/* Analyze the instruction at PC. */
|
||||
nnpc = sparc_analyze_control_transfer (arch, pc, &npc);
|
||||
if (npc != 0)
|
||||
insert_single_step_breakpoint (npc);
|
||||
|
||||
if (nnpc != 0)
|
||||
insert_single_step_breakpoint (nnpc);
|
||||
if (nnpc != 0)
|
||||
insert_single_step_breakpoint (nnpc);
|
||||
|
||||
/* Assert that we have set at least one breakpoint, and that
|
||||
they're not set at the same spot - unless we're going
|
||||
from here straight to NULL, i.e. a call or jump to 0. */
|
||||
gdb_assert (npc != 0 || nnpc != 0 || orig_npc == 0);
|
||||
gdb_assert (nnpc != npc || orig_npc == 0);
|
||||
}
|
||||
else
|
||||
remove_single_step_breakpoints ();
|
||||
/* Assert that we have set at least one breakpoint, and that
|
||||
they're not set at the same spot - unless we're going
|
||||
from here straight to NULL, i.e. a call or jump to 0. */
|
||||
gdb_assert (npc != 0 || nnpc != 0 || orig_npc == 0);
|
||||
gdb_assert (nnpc != npc || orig_npc == 0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user