* irix4-nat.c (fetch_core_registers): Special version of this for
authorStu Grossman <grossman@cygnus>
Tue, 20 Apr 1993 06:01:56 +0000 (06:01 +0000)
committerStu Grossman <grossman@cygnus>
Tue, 20 Apr 1993 06:01:56 +0000 (06:01 +0000)
Irix 4.x, which stores regs a bit differently from other /proc
based systems.
* procfs.c, core-svr4.c:  Move fetch_core_registers from procfs.c
to new file core-svr4.c.
* config/i386/i386sol2.mh, config/i386/i386v4.mh, config/m68k/amix.mh,
config/i386/ncr3000.mh, config/sparc/sun4sol2.mh:  Add core-svr4.o
to NATDEPFILES.
* config/mips/irix4.mh:  Add corelow.o to NATDEPFILES.

gdb/ChangeLog
gdb/config/m68k/amix.mh
gdb/config/mips/irix4.mh
gdb/config/sparc/sun4sol2.mh
gdb/core-svr4.c [new file with mode: 0644]
gdb/irix4-nat.c
gdb/procfs.c

index 1b5c316cb4878c0e8b56685bf4ec5f41eb3b4d11..6f2ca5a53f82d71e6b966f5b8533bd0af238a43c 100644 (file)
@@ -1,3 +1,15 @@
+Mon Apr 19 22:52:33 1993  Stu Grossman  (grossman@cygnus.com)
+
+       * irix4-nat.c (fetch_core_registers):  Special version of this for
+       Irix 4.x, which stores regs a bit differently from other /proc
+       based systems.
+       * procfs.c, core-svr4.c:  Move fetch_core_registers from procfs.c
+       to new file core-svr4.c.
+       * config/i386/i386sol2.mh, config/i386/i386v4.mh, config/m68k/amix.mh,
+       config/i386/ncr3000.mh, config/sparc/sun4sol2.mh:  Add core-svr4.o
+       to NATDEPFILES.
+       * config/mips/irix4.mh:  Add corelow.o to NATDEPFILES.
+
 Mon Apr 19 11:13:34 1993  Jim Kingdon  (kingdon@cygnus.com)
 
        * i387-tdep.c: Remove unused #includes.
index ad3afed03821bb74ef61b6fc2e4f7bad0a838807..118661921f360058f52c5e5a3228d3ec329f9d9e 100644 (file)
@@ -1,6 +1,6 @@
 # Host: Commodore Amiga running SVR4.
 NAT_FILE= nm-sysv4.h
-NATDEPFILES= corelow.o procfs.o fork-child.o
+NATDEPFILES= corelow.o core-svr4.o procfs.o fork-child.o
 XDEPFILES=
 XM_FILE= xm-amix.h
 SYSV_DEFINE=-DSYSV
index 854fa69821a5615a039f575d2db9b778f0b886e0..f93e6be864e5dba4e0d4bd46d0672298dec7ac7c 100644 (file)
@@ -2,7 +2,7 @@
 XDEPFILES= 
 XM_FILE= xm-irix4.h
 NAT_FILE= nm-irix4.h
-NATDEPFILES= fork-child.o procfs.o irix4-nat.o
+NATDEPFILES= fork-child.o procfs.o irix4-nat.o corelow.o
 ALLOCA=alloca.o
 ALLOCA1=alloca.o
 MUNCH_DEFINE=-B
index 394cd4f254eb48219e0c23263c2384fac58b5ede..46ccfcfd2dc61e58430286738b7b50e4382e2d8e 100644 (file)
@@ -2,7 +2,7 @@
 XDEPFILES= 
 XM_FILE= xm-sun4sol2.h
 NAT_FILE= nm-sysv4.h
-NATDEPFILES= corelow.o exec.o solib.o procfs.o fork-child.o
+NATDEPFILES= corelow.o core-svr4.o exec.o solib.o procfs.o fork-child.o
 SYSV_DEFINE=-DSYSV
 REGEX=regex.o
 REGEX1=regex.o
diff --git a/gdb/core-svr4.c b/gdb/core-svr4.c
new file mode 100644 (file)
index 0000000..e0743fd
--- /dev/null
@@ -0,0 +1,109 @@
+/* Machine independent support for SVR4 core files for GDB.
+   Copyright 1993 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+
+/*                     N  O  T  E  S
+
+This version of fetch_core_registers() is used by most systems that
+implement /proc.  For these systems, the general registers are laid out
+the same way in both the core file and the gregset_p structure.  The
+current exception to this is Irix-4.*, where the gregset_p structure is
+split up into two pieces in the core file.
+
+The general register and floating point register sets are manipulated by
+separate ioctl's.  This file makes the assumption that if FP0_REGNUM is
+defined, then support for the floating point register set is desired,
+regardless of whether or not the actual target has floating point hardware.
+
+ */
+
+#include "defs.h"
+
+#include <time.h>
+#include <sys/procfs.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
+
+#include "inferior.h"
+#include "target.h"
+#include "command.h"
+#include "gdbcore.h"
+
+/*
+
+GLOBAL FUNCTION
+
+       fetch_core_registers -- fetch current registers from core file data
+
+SYNOPSIS
+
+       void fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
+                                  int which, unsigned in reg_addr)
+
+DESCRIPTION
+
+       Read the values of either the general register set (WHICH equals 0)
+       or the floating point register set (WHICH equals 2) from the core
+       file data (pointed to by CORE_REG_SECT), and update gdb's idea of
+       their current values.  The CORE_REG_SIZE parameter is ignored.
+
+NOTES
+
+       Use the indicated sizes to validate the gregset and fpregset
+       structures.
+*/
+
+void
+fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
+     char *core_reg_sect;
+     unsigned core_reg_size;
+     int which;
+     unsigned int reg_addr;    /* Unused in this version */
+{
+  gregset_t gregset;
+  fpregset_t fpregset;
+
+  if (which == 0)
+    {
+      if (core_reg_size != sizeof (gregset))
+       {
+         warning ("wrong size gregset struct in core file");
+       }
+      else
+       {
+         memcpy ((char *) &gregset, core_reg_sect, sizeof (gregset));
+         supply_gregset (&gregset);
+       }
+    }
+  else if (which == 2)
+    {
+      if (core_reg_size != sizeof (fpregset))
+       {
+         warning ("wrong size fpregset struct in core file");
+       }
+      else
+       {
+         memcpy ((char *) &fpregset, core_reg_sect, sizeof (fpregset));
+#if defined (FP0_REGNUM)
+         supply_fpregset (&fpregset);
+#endif
+       }
+    }
+}
index c524c99349a8a07f0680de4cbd303fe7e1ebf1a8..b13e288b8181203e00c50dbb9773be464137c160 100644 (file)
@@ -1,5 +1,5 @@
 /* Native support for the SGI Iris running IRIX version 4, for GDB.
-   Copyright 1988, 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
+   Copyright 1988, 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
    Contributed by Alessandro Forin(af@cs.cmu.edu) at CMU
    and by Per Bothner(bothner@cs.wisc.edu) at U.Wisconsin.
    Implemented for Irix 4.x by Garrett A. Wollman.
@@ -148,3 +148,19 @@ get_longjmp_target(pc)
 
   return 1;
 }
+
+void
+fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
+     char *core_reg_sect;
+     unsigned core_reg_size;
+     int which;                        /* Unused */
+     unsigned int reg_addr;    /* Unused */
+{
+  if (core_reg_size != REGISTER_BYTES)
+    {
+      warning ("wrong size gregset struct in core file");
+      return;
+    }
+
+  memcpy ((char *)registers, core_reg_sect, core_reg_size);
+}
index 86885cc49772cf30ff625dbbaba16438f73aba26..002ddd66274647bcbac60b468aeaea7fba263759 100644 (file)
@@ -2260,66 +2260,6 @@ procfs_fetch_registers (regno)
 
 /*
 
-GLOBAL FUNCTION
-
-       fetch_core_registers -- fetch current registers from core file data
-
-SYNOPSIS
-
-       void fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
-                                  int which, unsigned in reg_addr)
-
-DESCRIPTION
-
-       Read the values of either the general register set (WHICH equals 0)
-       or the floating point register set (WHICH equals 2) from the core
-       file data (pointed to by CORE_REG_SECT), and update gdb's idea of
-       their current values.  The CORE_REG_SIZE parameter is ignored.
-
-NOTES
-
-       Use the indicated sizes to validate the gregset and fpregset
-       structures.
-*/
-
-void
-fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
-     char *core_reg_sect;
-     unsigned core_reg_size;
-     int which;
-     unsigned int reg_addr;    /* Unused in this version */
-{
-
-  if (which == 0)
-    {
-      if (core_reg_size != sizeof (pi.gregset))
-       {
-         warning ("wrong size gregset struct in core file");
-       }
-      else
-       {
-         memcpy ((char *) &pi.gregset, core_reg_sect, sizeof (pi.gregset));
-         supply_gregset (&pi.gregset);
-       }
-    }
-  else if (which == 2)
-    {
-      if (core_reg_size != sizeof (pi.fpregset))
-       {
-         warning ("wrong size fpregset struct in core file");
-       }
-      else
-       {
-         memcpy ((char *) &pi.fpregset, core_reg_sect, sizeof (pi.fpregset));
-#if defined (FP0_REGNUM)
-         supply_fpregset (&pi.fpregset);
-#endif
-       }
-    }
-}
-
-/*
-
 LOCAL FUNCTION
 
        proc_init_failed - called whenever /proc access initialization fails