* defs.h, utils.c: xrealloc takes PTR as first arg.
authorFred Fish <fnf@specifix.com>
Wed, 4 Mar 1992 20:50:10 +0000 (20:50 +0000)
committerFred Fish <fnf@specifix.com>
Wed, 4 Mar 1992 20:50:10 +0000 (20:50 +0000)
* 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.

gdb/ChangeLog
gdb/tm-amix.h
gdb/tm-i386v.h
gdb/tm-i386v4.h
gdb/xm-sysv4.h

index 050dbebc3bbcc212a9ba6773732a10321390e1af..a2d96d9fe9c031dc57025997de4dfd29537233cc 100644 (file)
@@ -1,3 +1,15 @@
+Wed Mar  4 11:56:42 1992  Fred Fish  (fnf@cygnus.com)
+
+       * 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.
+
 Tue Mar  3 15:11:52 1992  Michael Tiemann  (tiemann@cygnus.com)
 
        * All GDB files that #include defs.h: Removed stdio.h.
index e13fc895301fbe2de3242bb6f63376d276ef17be..9a43be72613e113ba7a0f6612a17b3d95cfd18f1 100644 (file)
@@ -45,3 +45,33 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include "tm-sysv4.h"
 #include "tm-68k.h"
+
+/* 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.  As a double check, note that <setjmp> defines _JBLEN as 13,
+   which matches the number of elements we see saved by setjmp(). */
+
+#define JB_ELEMENT_SIZE sizeof(int)    /* jmp_buf[_JBLEN] is array of ints */
+
+#define JB_D2  0
+#define JB_D3  1
+#define JB_D4  2
+#define JB_D5  3
+#define JB_D6  4
+#define JB_D7  5
+#define JB_A1  6
+#define JB_A2  7
+#define JB_A3  8
+#define JB_A4  9
+#define JB_A5  10
+#define JB_A6  11
+#define JB_A7  12
+
+#define JB_PC  JB_A1   /* Setjmp()'s return PC saved in A1 */
+
+/* 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)
index 5c654234f46ae1e37cf85f8c090b1a5934862b24..01644e8222aa14caeb21c79bb23ac7054c49539c 100644 (file)
@@ -332,4 +332,8 @@ print_387_control_word PARAMS ((unsigned int));
 extern void
 print_387_status_word PARAMS ((unsigned int));
 
+/* Offset from SP to first arg on stack at first instruction of a function */
+
+#define SP_ARG0 (1 * 4)
+
 #endif /* !defined (TM_I386V_H) */
index 244e43ea4c66025abc42eef75de074787900395a..727e35007b6815e92362ec1d6e4396089f5c5675 100644 (file)
@@ -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)
index 8d5b0d1e27e6b11c1d1ac12082d72ded7ff3c6a6..35c831da320e725c4a4a59932f97f36d94473afc 100644 (file)
@@ -65,18 +65,3 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* Use setpgid(0,0) to run inferior in a separate process group */
 
 #define NEED_POSIX_SETPGID
-
-/* Declare the return types (or supply prototypes for) functions which
-   do not end up being defined by any of the currently included system
-   header files, and which cannot be defined in any common file since a
-   single definition is known to cause portability problems due to 
-   conflicts with definitions on other systems.
-   FIXME:  This may only be a temporary solution (fnf) */
-
-#ifdef __STDC__
-extern void *malloc(size_t);
-extern void *realloc(void *, size_t);
-#else
-extern char *malloc();
-extern char *realloc();
-#endif