* spu-tdep.c (spu_get_longjmp_target): New function.
(spu_gdbarch_init): Install it.
This commit is contained in:
parent
df4b58feaa
commit
6e3f70d70b
2 changed files with 26 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2009-06-22 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* spu-tdep.c (spu_get_longjmp_target): New function.
|
||||
(spu_gdbarch_init): Install it.
|
||||
|
||||
2009-06-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR server/10306
|
||||
|
|
|
@ -1329,6 +1329,26 @@ spu_software_single_step (struct frame_info *frame)
|
|||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* Longjmp support. */
|
||||
|
||||
static int
|
||||
spu_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
|
||||
{
|
||||
gdb_byte buf[4];
|
||||
CORE_ADDR jb_addr;
|
||||
|
||||
/* Jump buffer is pointed to by the argument register $r3. */
|
||||
get_frame_register_bytes (frame, SPU_ARG1_REGNUM, 0, 4, buf);
|
||||
jb_addr = extract_unsigned_integer (buf, 4);
|
||||
if (target_read_memory (jb_addr, buf, 4))
|
||||
return 0;
|
||||
|
||||
*pc = extract_unsigned_integer (buf, 4);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* Target overlays for the SPU overlay manager.
|
||||
|
||||
See the documentation of simple_overlay_update for how the
|
||||
|
@ -2148,6 +2168,7 @@ spu_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_breakpoint_from_pc (gdbarch, spu_breakpoint_from_pc);
|
||||
set_gdbarch_cannot_step_breakpoint (gdbarch, 1);
|
||||
set_gdbarch_software_single_step (gdbarch, spu_software_single_step);
|
||||
set_gdbarch_get_longjmp_target (gdbarch, spu_get_longjmp_target);
|
||||
|
||||
/* Overlays. */
|
||||
set_gdbarch_overlay_update (gdbarch, spu_overlay_update);
|
||||
|
|
Loading…
Add table
Reference in a new issue