aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparc-tdep.h
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2006-01-22 20:07:38 +0000
committerMark Kettenis <kettenis@gnu.org>2006-01-22 20:07:38 +0000
commitc893be758be8844753c7e545525d76b7cb789f52 (patch)
tree1f275536aa849adacab46fd3097beed797ed74d3 /gdb/sparc-tdep.h
parent0a8f48b9a8bf7b3e00a676b6068db20dd96f4390 (diff)
downloadgdb-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.h12
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);