diff options
author | Mark Kettenis <kettenis@gnu.org> | 2006-01-22 20:07:38 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2006-01-22 20:07:38 +0000 |
commit | d8e05b164cd8e270ae6897e0a4127677c922beec (patch) | |
tree | 02bcdfa5ee6e49dcc407ed5b81b1a91fcb026db4 /gdb/sparc-tdep.h | |
parent | 097f6ab4652c0d540eb530874c9060d3d308ee6d (diff) | |
download | gdb-d8e05b164cd8e270ae6897e0a4127677c922beec.tar.gz |
* sparc-tdep.h (struct gdbarch_tdep): Add step_trap member.
(sparc_address_from_register): New prototype.
(sparcnbsd_step_trap): New prototype.
* sparc-tdep.c (sparc_address_from_register): Make globally
visible.
(sparc_analyze_control_transfer): Change prototype to accept
`struct gdbarch *' as first argument. Allow for optional hnadling
for trap instructions.
(sparc_step_trap): New function.
(sparc_software_single_step): Adjust call to
sparc_analyze_control_trabsfer.
(sparc32_gdbarch_init): Initialize TDEP->step_trap.
* sparcnbsd-tdep.c (sparcnbsd_step_trap): New function.
(sparc32nbsd_init_abi): Set TDEP->step_trap.
* sparc64obsd-tdep.c (sparc64obsd_init_abi): Set TDEP->step_trap.
* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Set TDEP->step_trap.
Diffstat (limited to 'gdb/sparc-tdep.h')
-rw-r--r-- | gdb/sparc-tdep.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h index 502b5244bdb..06555e9b89b 100644 --- a/gdb/sparc-tdep.h +++ b/gdb/sparc-tdep.h @@ -1,6 +1,6 @@ /* Target-dependent code for SPARC. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. This file is part of GDB. @@ -65,6 +65,9 @@ struct gdbarch_tdep /* Size of an Procedure Linkage Table (PLT) entry, 0 if we shouldn't treat the PLT special when doing prologue analysis. */ size_t plt_entry_size; + + /* Alternative location for trap return. Used for single-stepping. */ + CORE_ADDR (*step_trap) (unsigned long insn); }; /* Register numbers of various important registers. */ @@ -147,6 +150,9 @@ struct sparc_frame_cache /* Fetch the instruction at PC. */ extern unsigned long sparc_fetch_instruction (CORE_ADDR pc); +/* Return the contents if register REGNUM as an address. */ +extern CORE_ADDR sparc_address_from_register (int regnum); + /* Fetch StackGhost Per-Process XOR cookie. */ extern ULONGEST sparc_fetch_wcookie (void); @@ -198,6 +204,10 @@ extern void sparc32_sol2_init_abi (struct gdbarch_info info, /* Register offsets for NetBSD. */ extern const struct sparc_gregset sparc32nbsd_gregset; +/* Return the address of a system call's alternative return + address. */ +extern CORE_ADDR sparcnbsd_step_trap (unsigned long insn); + extern void sparc32nbsd_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch); |