Add s390 target
[deliverable/binutils-gdb.git] / bfd / trad-core.c
index 9d5a745cef7e2e30670d189225e0332371dbc301..194da154a0cb939872ffef3967ccca6bb4ae9cd2 100644 (file)
@@ -1,5 +1,6 @@
 /* BFD back end for traditional Unix core files (U-area and raw sections)
-   Copyright 1988, 1989, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+   Copyright 1988, 89, 91, 92, 93, 94, 95, 96, 98, 99, 2000
+   Free Software Foundation, Inc.
    Written by John Gilmore of Cygnus Support.
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -23,10 +24,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "libbfd.h"
 #include "libaout.h"           /* BFD a.out internal data structures */
 
-#include <stdio.h>
-#include <sys/types.h>
 #include <sys/param.h>
-#include <sys/dir.h>
+#ifdef HAVE_DIRENT_H
+# include <dirent.h>
+#else
+# ifdef HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif
+# ifdef HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif
+# ifdef HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif
 #include <signal.h>
 
 #include <sys/user.h>          /* After a.out.h  */
@@ -35,7 +46,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include TRAD_HEADER
 #endif
 
-  struct trad_core_struct 
+  struct trad_core_struct
     {
       asection *data_section;
       asection *stack_section;
@@ -55,6 +66,7 @@ char *                trad_unix_core_file_failing_command PARAMS ((bfd *abfd));
 int            trad_unix_core_file_failing_signal PARAMS ((bfd *abfd));
 boolean                trad_unix_core_file_matches_executable_p
                         PARAMS ((bfd *core_bfd, bfd *exec_bfd));
+static void    swap_abort PARAMS ((void));
 
 /* Handle 4.2-style (and perhaps also sysV-style) core dump file.  */
 
@@ -73,7 +85,7 @@ trad_unix_core_file_p (abfd)
   if (bfd_seek (abfd, TRAD_CORE_USER_OFFSET, SEEK_SET) != 0)
     return 0;
 #endif
-    
+
   val = bfd_read ((void *)&u, 1, sizeof u, abfd);
   if (val != sizeof u)
     {
@@ -83,7 +95,7 @@ trad_unix_core_file_p (abfd)
     }
 
   /* Sanity check perhaps??? */
-  if (u.u_dsize > 0x1000000)   /* Remember, it's in pages... */
+  if (u.u_dsize > 0x1000000)   /* Remember, it's in pages...  */
     {
       bfd_set_error (bfd_error_wrong_format);
       return 0;
@@ -105,22 +117,24 @@ trad_unix_core_file_p (abfd)
        bfd_set_error (bfd_error_system_call);
        return 0;
       }
-    if (NBPG * (UPAGES + u.u_dsize
+    if ((unsigned long) (NBPG * (UPAGES + u.u_dsize
 #ifdef TRAD_CORE_DSIZE_INCLUDES_TSIZE
-               - u.u_tsize
+                                - u.u_tsize
 #endif
-               + u.u_ssize) > statbuf.st_size)
+                                + u.u_ssize))
+       > (unsigned long) statbuf.st_size)
       {
-       bfd_set_error (bfd_error_file_truncated);
+       bfd_set_error (bfd_error_wrong_format);
        return 0;
       }
 #ifndef TRAD_CORE_ALLOW_ANY_EXTRA_SIZE
-    if (NBPG * (UPAGES + u.u_dsize + u.u_ssize)
+    if ((unsigned long) (NBPG * (UPAGES + u.u_dsize + u.u_ssize)
 #ifdef TRAD_CORE_EXTRA_SIZE_ALLOWED
        /* Some systems write the file too big.  */
-       + TRAD_CORE_EXTRA_SIZE_ALLOWED
+                        + TRAD_CORE_EXTRA_SIZE_ALLOWED
 #endif
-       < statbuf.st_size)
+                        )
+       < (unsigned long) statbuf.st_size)
       {
        /* The file is too big.  Maybe it's not a core file
           or we otherwise have bad values for u_dsize and u_ssize).  */
@@ -138,7 +152,7 @@ trad_unix_core_file_p (abfd)
                bfd_zmalloc (sizeof (struct trad_core_struct));
   if (rawptr == NULL)
     return 0;
-  
+
   abfd->tdata.trad_core_data = rawptr;
 
   rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */
@@ -193,14 +207,14 @@ trad_unix_core_file_p (abfd)
      from *u_ar0.  The other is that u_ar0 is sometimes an absolute address
      in kernel memory, and on other systems it is an offset from the beginning
      of the `struct user'.
-     
+
      As a practical matter, we don't know where the registers actually are,
      so we have to pass the whole area to GDB.  We encode the value of u_ar0
      by setting the .regs section up so that its virtual memory address
      0 is at the place pointed to by u_ar0 (by setting the vma of the start
      of the section to -u_ar0).  GDB uses this info to locate the regs,
-     using minor trickery to get around the offset-or-absolute-addr problem. */
-  core_regsec (abfd)->vma = - (bfd_vma) u.u_ar0;
+     using minor trickery to get around the offset-or-absolute-addr problem.  */
+  core_regsec (abfd)->vma = - (bfd_vma) u.u_ar0;
 
   core_datasec (abfd)->filepos = NBPG * UPAGES;
   core_stacksec (abfd)->filepos = (NBPG * UPAGES) + NBPG * u.u_dsize
@@ -239,7 +253,7 @@ trad_unix_core_file_failing_command (abfd)
 /* ARGSUSED */
 int
 trad_unix_core_file_failing_signal (ignore_abfd)
-     bfd *ignore_abfd;
+     bfd *ignore_abfd ATTRIBUTE_UNUSED;
 {
 #ifdef TRAD_UNIX_CORE_FILE_FAILING_SIGNAL
   return TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(ignore_abfd);
@@ -251,16 +265,17 @@ trad_unix_core_file_failing_signal (ignore_abfd)
 /* ARGSUSED */
 boolean
 trad_unix_core_file_matches_executable_p  (core_bfd, exec_bfd)
-     bfd *core_bfd, *exec_bfd;
+     bfd *core_bfd ATTRIBUTE_UNUSED;
+     bfd *exec_bfd ATTRIBUTE_UNUSED;
 {
   return true;         /* FIXME, We have no way of telling at this point */
 }
 \f
 /* If somebody calls any byte-swapping routines, shoot them.  */
-void
-swap_abort()
+static void
+swap_abort ()
 {
-  abort(); /* This way doesn't require any declaration for ANSI to fuck up */
+  abort (); /* This way doesn't require any declaration for ANSI to fuck up */
 }
 #define        NO_GET  ((bfd_vma (*) PARAMS ((   const bfd_byte *))) swap_abort )
 #define        NO_PUT  ((void    (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort )
@@ -271,8 +286,8 @@ const bfd_target trad_core_vec =
   {
     "trad-core",
     bfd_target_unknown_flavour,
-    true,                      /* target byte order */
-    true,                      /* target headers byte order */
+    BFD_ENDIAN_UNKNOWN,                /* target byte order */
+    BFD_ENDIAN_UNKNOWN,                /* target headers byte order */
     (HAS_RELOC | EXEC_P |      /* object flags */
      HAS_LINENO | HAS_DEBUG |
      HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
@@ -301,7 +316,7 @@ const bfd_target trad_core_vec =
      bfd_false, bfd_false,
      bfd_false, bfd_false
     },
-    
+
        BFD_JUMP_TABLE_GENERIC (_bfd_generic),
        BFD_JUMP_TABLE_COPY (_bfd_generic),
        BFD_JUMP_TABLE_CORE (trad_unix),
@@ -312,5 +327,7 @@ const bfd_target trad_core_vec =
        BFD_JUMP_TABLE_LINK (_bfd_nolink),
        BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
 
+    NULL,
+
     (PTR) 0                    /* backend_data */
 };
This page took 0.05759 seconds and 4 git commands to generate.