diff options
| author | David E. O'Brien <obrien@FreeBSD.org> | 2002-07-10 07:48:45 +0000 |
|---|---|---|
| committer | David E. O'Brien <obrien@FreeBSD.org> | 2002-07-10 07:48:45 +0000 |
| commit | e2a86a90afcc3e54ce799ac96664125bc723918d (patch) | |
| tree | ba900fbdc64694b7036d3b13064116ec7a8003ea /gnu | |
| parent | 2b1f5a4271179ca9142672a8a0c9bc07b82affc8 (diff) | |
Notes
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h index 45fae7db30978..044b71fc63e74 100644 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h +++ b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h @@ -3,4 +3,29 @@ #ifndef FBSD_KGDB_I386_H #define FBSD_KGDB_I386_H +/* On FreeBSD, sigtramp has size 0x18 and is immediately below the + ps_strings struct which has size 0x10 and is at the top of the + user stack. */ + +#undef SIGTRAMP_START +#define SIGTRAMP_START(pc) 0xbfbfdfd8 +#undef SIGTRAMP_END +#define SIGTRAMP_END(pc) 0xbfbfdff0 + + +/* Override FRAME_SAVED_PC to enable the recognition of signal handlers. */ + +extern CORE_ADDR fbsd_kern_frame_saved_pc(struct frame_info *fr); + +#undef FRAME_SAVED_PC +#define FRAME_SAVED_PC(FRAME) \ + (kernel_debugging \ + ? fbsd_kern_frame_saved_pc(FRAME) : \ + (FRAME)->signal_handler_caller \ + ? sigtramp_saved_pc (FRAME) \ + : read_memory_integer ((FRAME)->frame + 4, 4)) + +/* Offset to saved PC in sigcontext, from <sys/signal.h>. */ +#define SIGCONTEXT_PC_OFFSET 20 + #endif /* FBSD_KGDB_I386_H */ |
