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 | c893be758be8844753c7e545525d76b7cb789f52 (patch) | |
tree | 1f275536aa849adacab46fd3097beed797ed74d3 /gdb/sparc-tdep.h | |
parent | 0a8f48b9a8bf7b3e00a676b6068db20dd96f4390 (diff) | |
download | gdb-c893be758be8844753c7e545525d76b7cb789f52.zip gdb-c893be758be8844753c7e545525d76b7cb789f52.tar.gz gdb-c893be758be8844753c7e545525d76b7cb789f52.tar.bz2 |
* 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 502b524..06555e9 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); |