From d7eddc517782bf0673e4bcd15c4159ae5799a247 Mon Sep 17 00:00:00 2001 From: Fred Fish Date: Wed, 4 Mar 1992 20:50:10 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 12 ++++++++++++ gdb/tm-amix.h | 30 ++++++++++++++++++++++++++++++ gdb/tm-i386v.h | 4 ++++ gdb/tm-i386v4.h | 23 +++++++++++++++++++++++ gdb/xm-sysv4.h | 15 --------------- 5 files changed, 69 insertions(+), 15 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 050dbebc3bb..a2d96d9fe9c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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. diff --git a/gdb/tm-amix.h b/gdb/tm-amix.h index e13fc895301..9a43be72613 100644 --- a/gdb/tm-amix.h +++ b/gdb/tm-amix.h @@ -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 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) diff --git a/gdb/tm-i386v.h b/gdb/tm-i386v.h index 5c654234f46..01644e8222a 100644 --- a/gdb/tm-i386v.h +++ b/gdb/tm-i386v.h @@ -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) */ diff --git a/gdb/tm-i386v4.h b/gdb/tm-i386v4.h index 244e43ea4c6..727e35007b6 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 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) diff --git a/gdb/xm-sysv4.h b/gdb/xm-sysv4.h index 8d5b0d1e27e..35c831da320 100644 --- a/gdb/xm-sysv4.h +++ b/gdb/xm-sysv4.h @@ -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 -- 2.30.2