aboutsummaryrefslogtreecommitdiff
path: root/gdb/tm-i386v4.h
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>1992-03-04 20:50:10 +0000
committerFred Fish <fnf@specifix.com>1992-03-04 20:50:10 +0000
commitd7eddc517782bf0673e4bcd15c4159ae5799a247 (patch)
tree5cbaafd5433cb047b3a50693a4120fa5d0de4ae7 /gdb/tm-i386v4.h
parentc7cb8acbe8eb1226ef76fe716aa050d3b9d0e860 (diff)
downloadfsf-binutils-gdb-d7eddc517782bf0673e4bcd15c4159ae5799a247.zip
fsf-binutils-gdb-d7eddc517782bf0673e4bcd15c4159ae5799a247.tar.gz
fsf-binutils-gdb-d7eddc517782bf0673e4bcd15c4159ae5799a247.tar.bz2
* defs.h, utils.c: xrealloc takes PTR as first arg.
* defs.h: Reword confusing comment about ANSI prototypes. * defs.h: Some minor whitespace changes. * infrun.c (wait_for_inferior): Compare int tmp to int 0, not NULL, which can be (void *). * tm-amix.h, tm-i386v4.h: Add defines for setjmp/longjmp handling. * tm-i386v.h (SP_ARG0): Define * xm-sysv4.h: Back out of change for missing prototypes. * i386-tdep.c (get_longjmp_target): Add function.
Diffstat (limited to 'gdb/tm-i386v4.h')
-rw-r--r--gdb/tm-i386v4.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/gdb/tm-i386v4.h b/gdb/tm-i386v4.h
index 244e43e..727e350 100644
--- a/gdb/tm-i386v4.h
+++ b/gdb/tm-i386v4.h
@@ -41,3 +41,26 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#undef FRAME_NUM_ARGS
#define FRAME_NUM_ARGS(val,fi) (val = -1)
+
+/* Offsets (in target ints) into jmp_buf. Not defined in any system header
+ file, so we have to step through setjmp/longjmp with a debugger and figure
+ them out. Note that <setjmp> defines _JBLEN as 10, which is the default
+ if no specific machine is selected, even though we only use 6 slots. */
+
+#define JB_ELEMENT_SIZE sizeof(int) /* jmp_buf[_JBLEN] is array of ints */
+
+#define JB_EBX 0
+#define JB_ESI 1
+#define JB_EDI 2
+#define JB_EBP 3
+#define JB_ESP 4
+#define JB_EDX 5
+
+#define JB_PC JB_EDX /* Setjmp()'s return PC saved in EDX */
+
+/* Figure out where the longjmp will land. Slurp the args out of the stack.
+ We expect the first arg to be a pointer to the jmp_buf structure from which
+ we extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
+ This routine returns true on success */
+
+#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)