Read cross-core files on Mach 386.
authorJohn Gilmore <gnu@cygnus>
Fri, 11 Oct 1991 00:27:41 +0000 (00:27 +0000)
committerJohn Gilmore <gnu@cygnus>
Fri, 11 Oct 1991 00:27:41 +0000 (00:27 +0000)
gdb/ChangeLog
gdb/core.c
gdb/mach386-xdep.c

index 9cbf1bfc2121db03bd0494a364f2bbf03d5a27d2..4b511b21073a047901625c6d433994349dd632b5 100644 (file)
@@ -1,3 +1,9 @@
+Thu Oct 10 17:25:47 1991  John Gilmore  (gnu at cygnus.com)
+
+       * mach386-xdep.c:  Even when cross-compiling, leave in the
+       core-file reading code.
+       * core.c (get_core_registers):  Avoid coredump if no .reg section.
+
 Wed Oct  9 17:03:34 1991  John Gilmore  (gnu at cygnus.com)
 
        * mipsread.c, coffread.c:  initialise TYPE_VPTR_FIELDNO to -1.
index c56281b289b6b9264a1f8fdf88577e9314ca2b38..ad2830c610e2bd561f2f59dd8c66f03fc4430313 100644 (file)
@@ -396,6 +396,7 @@ get_core_registers (regno)
   char *the_regs;
 
   reg_sec = bfd_get_section_by_name (core_bfd, ".reg");
+  if (!reg_sec) goto cant;
   size = bfd_section_size (core_bfd, reg_sec);
   the_regs = alloca (size);
   if (bfd_get_section_contents (core_bfd, reg_sec, the_regs,
@@ -405,6 +406,7 @@ get_core_registers (regno)
     }
   else
     {
+cant:
       fprintf (stderr, "Couldn't fetch registers from core file: %s\n",
               bfd_errmsg (bfd_error));
     }
index 358bb17fcf5676c5e28b7ae8729a8bd76e0e20f6..754299a7452c50b593b5ae6962978859ab3fd2b2 100644 (file)
@@ -3,21 +3,19 @@
 
 This file is part of GDB.
 
-GDB is free software; you can redistribute it and/or modify
+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 1, or (at your option)
-any later version.
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
 
-GDB is distributed in the hope that it will be useful,
+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 GDB; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#if defined (GDB_TARGET_IS_MACH386)
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include <stdio.h>
 #include "defs.h"
@@ -27,6 +25,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "signame.h"
 #include "gdbcore.h"
 
+#if defined (GDB_TARGET_IS_MACH386)
+
 #include <sys/param.h>
 #include <sys/dir.h>
 #include <sys/user.h>
@@ -103,10 +103,25 @@ store_inferior_registers (regno)
   ptrace (PTRACE_SETFPREGS, inferior_pid, &inferior_fp_registers);
 }
 
-/* Machine-dependent code which would otherwise be in core.c */
+#else /* Not mach386 target.  */
+
+/* These functions shouldn't be called when we're cross-debugging.  */
+
+void
+fetch_inferior_registers ()
+{
+}
+
+/* ARGSUSED */
+store_inferior_registers (regno)
+     int regno;
+{
+}
+
+#endif /* Not mach386 target.  */
+
 /* Work with core files, for GDB. */
 
-\f
 void
 fetch_core_registers (core_reg_sect, core_reg_size, which)
      char *core_reg_sect;
@@ -123,10 +138,12 @@ fetch_core_registers (core_reg_sect, core_reg_size, which)
     break;
 
   case 2:
+#ifdef FP0_REGNUM
     bcopy (core_reg_sect,
           &registers[REGISTER_BYTE (FP0_REGNUM)],
           core_reg_size);              /* FIXME, probably bogus */
-#if 0
+#endif
+#ifdef FPC_REGNUM
     bcopy (&corestr.c_fpu.f_fpstatus.f_ctrl,
           &registers[REGISTER_BYTE (FPC_REGNUM)],
           sizeof corestr.c_fpu.f_fpstatus -
@@ -135,28 +152,3 @@ fetch_core_registers (core_reg_sect, core_reg_size, which)
     break;
   }
 }
-#else /* Not mach386 target.  */
-
-/* These functions shouldn't be called when we're cross-debugging.  */
-
-void
-fetch_inferior_registers ()
-{
-}
-
-/* ARGSUSED */
-store_inferior_registers (regno)
-     int regno;
-{
-}
-
-/* ARGSUSED */
-void
-fetch_core_registers (core_reg_sect, core_reg_size, which)
-     char *core_reg_sect;
-     unsigned core_reg_size;
-     int which;
-{
-}
-
-#endif /* Not mach386 target.  */