aboutsummaryrefslogtreecommitdiff
path: root/gdb/config
diff options
context:
space:
mode:
authorKevin Buettner <kevinb@redhat.com>2000-09-06 00:39:11 +0000
committerKevin Buettner <kevinb@redhat.com>2000-09-06 00:39:11 +0000
commit2a451106e278d23b1ef4a208c270947b0451f7d0 (patch)
tree2f49aa6bf32cb71a628078ea8896205c7b5d5943 /gdb/config
parenta966dba9daedf21904c2be865c97aee21d6eca0d (diff)
downloadgdb-2a451106e278d23b1ef4a208c270947b0451f7d0.zip
gdb-2a451106e278d23b1ef4a208c270947b0451f7d0.tar.gz
gdb-2a451106e278d23b1ef4a208c270947b0451f7d0.tar.bz2
Add support for backtracing through signal handlers on Linux/ARM. Also,
make prologue scanning code somewhat less naive about optimized code on GNU/Linux/ARM.
Diffstat (limited to 'gdb/config')
-rw-r--r--gdb/config/arm/tm-linux.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/gdb/config/arm/tm-linux.h b/gdb/config/arm/tm-linux.h
index 9dcd666..8f18e00 100644
--- a/gdb/config/arm/tm-linux.h
+++ b/gdb/config/arm/tm-linux.h
@@ -135,4 +135,26 @@ extern CORE_ADDR in_svr4_dynsym_resolve_code (CORE_ADDR pc, char *name);
#define IN_SOLIB_DYNSYM_RESOLVE_CODE in_svr4_dynsym_resolve_code */
#endif
+/* When the ARM Linux kernel invokes a signal handler, the return
+ address points at a special instruction which'll trap back into
+ the kernel. These definitions are used to identify this bit of
+ code as a signal trampoline in order to support backtracing
+ through calls to signal handlers. */
+
+int arm_linux_in_sigtramp (CORE_ADDR pc, char *name);
+#define IN_SIGTRAMP(pc, name) arm_linux_in_sigtramp (pc, name)
+
+/* Each OS has different mechanisms for accessing the various
+ registers stored in the sigcontext structure. These definitions
+ provide a mechanism by which the generic code in arm-tdep.c can
+ find the addresses at which various registers are saved at in the
+ sigcontext structure. If SIGCONTEXT_REGISTER_ADDRESS is not
+ defined, arm-tdep.c will define it to be 0. (See ia64-tdep.c and
+ ia64-linux-tdep.c to see what a similar mechanism looks like when
+ multi-arched.) */
+
+extern CORE_ADDR arm_linux_sigcontext_register_address (CORE_ADDR, CORE_ADDR,
+ int);
+#define SIGCONTEXT_REGISTER_ADDRESS arm_linux_sigcontext_register_address
+
#endif /* TM_ARMLINUX_H */