diff options
author | Kevin Buettner <kevinb@redhat.com> | 2000-09-06 00:39:11 +0000 |
---|---|---|
committer | Kevin Buettner <kevinb@redhat.com> | 2000-09-06 00:39:11 +0000 |
commit | 2a451106e278d23b1ef4a208c270947b0451f7d0 (patch) | |
tree | 2f49aa6bf32cb71a628078ea8896205c7b5d5943 /gdb/config | |
parent | a966dba9daedf21904c2be865c97aee21d6eca0d (diff) | |
download | gdb-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.h | 22 |
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 */ |