* Makefile.in: added variables CHILL_FOR_TARGET, CHILLFLAGS,
[deliverable/binutils-gdb.git] / gdb / tm-i386v4.h
index 33bb75fb607c6e771f80d14e5a3f0d635e552aba..59a3733a7b382b0c0a3cbcdfafb92584c68fbd6e 100644 (file)
@@ -28,11 +28,42 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  */
 #define START_INFERIOR_TRAPS_EXPECTED 2
 
-#include "tm-svr4.h"
+/* Pick up most of what we need from the generic i386 target include file. */
+
 #include "tm-i386v.h"
 
+/* Pick up more stuff from the generic SVR4 host include file. */
+
+#include "tm-sysv4.h"
+
 /* We can't tell how many args there are
    now that the C compiler delays popping them.  */
 
 #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 */
+
+extern int
+get_longjmp_target PARAMS ((CORE_ADDR *));
+
+#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
This page took 0.030363 seconds and 4 git commands to generate.