Handle R_X86_64_64 properly for x32
[deliverable/binutils-gdb.git] / bfd / irix-core.c
index 1dd35fe75071b8c420037b4ce5b2824129822fae..7fd5109ded1cf54375e4a59eefbdd8c016e3b115 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for Irix core files.
 /* BFD back-end for Irix core files.
-   Copyright 1993, 1994, 1996, 1999, 2001, 2002
-   Free Software Foundation, Inc.
+   Copyright 1993, 1994, 1996, 1999, 2001, 2002, 2004, 2005, 2006, 2007,
+   2010, 2011 Free Software Foundation, Inc.
    Written by Stu Grossman, Cygnus Support.
    Converted to back-end form by Ian Lance Taylor, Cygnus Support
 
    Written by Stu Grossman, Cygnus Support.
    Converted to back-end form by Ian Lance Taylor, Cygnus Support
 
@@ -8,7 +8,7 @@
 
    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
 
    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
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
 
    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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
 
 /* This file can only be compiled on systems which use Irix style core
    files (namely, Irix 4 and Irix 5, so far).  */
 
 
 /* This file can only be compiled on systems which use Irix style core
    files (namely, Irix 4 and Irix 5, so far).  */
 
-#include "bfd.h"
 #include "sysdep.h"
 #include "sysdep.h"
+#include "bfd.h"
 #include "libbfd.h"
 
 #ifdef IRIX_CORE
 #include "libbfd.h"
 
 #ifdef IRIX_CORE
@@ -41,33 +43,18 @@ struct sgi_core_struct
 #define core_signal(bfd) (core_hdr(bfd)->sig)
 #define core_command(bfd) (core_hdr(bfd)->cmd)
 
 #define core_signal(bfd) (core_hdr(bfd)->sig)
 #define core_command(bfd) (core_hdr(bfd)->cmd)
 
+#define irix_core_core_file_matches_executable_p generic_core_file_matches_executable_p
+#define irix_core_core_file_pid _bfd_nocore_core_file_pid
+
 static asection *make_bfd_asection
 static asection *make_bfd_asection
-  PARAMS ((bfd *, const char *, flagword, bfd_size_type, bfd_vma, file_ptr));
-static const bfd_target *irix_core_core_file_p
-  PARAMS ((bfd *));
-static char *irix_core_core_file_failing_command
-  PARAMS ((bfd *));
-static int irix_core_core_file_failing_signal
-  PARAMS ((bfd *));
-static bfd_boolean irix_core_core_file_matches_executable_p
-  PARAMS ((bfd *, bfd *));
-static void swap_abort
-  PARAMS ((void));
-#ifdef CORE_MAGIC64
-static int do_sections64
-  PARAMS ((bfd *, struct coreout *));
-#endif
-static int do_sections
-  PARAMS ((bfd *, struct coreout *));
+  (bfd *, const char *, flagword, bfd_size_type, bfd_vma, file_ptr);
 
 /* Helper function for irix_core_core_file_p:
    32-bit and 64-bit versions.  */
 
 #ifdef CORE_MAGIC64
 static int
 
 /* Helper function for irix_core_core_file_p:
    32-bit and 64-bit versions.  */
 
 #ifdef CORE_MAGIC64
 static int
-do_sections64 (abfd, coreout)
-     bfd * abfd;
-     struct coreout * coreout;
+do_sections64 (bfd *abfd, struct coreout *coreout)
 {
   struct vmap64 vmap;
   char *secname;
 {
   struct vmap64 vmap;
   char *secname;
@@ -115,9 +102,7 @@ do_sections64 (abfd, coreout)
 /* 32-bit version.  */
 
 static int
 /* 32-bit version.  */
 
 static int
-do_sections (abfd, coreout)
-     bfd * abfd;
-     struct coreout *coreout;
+do_sections (bfd *abfd, struct coreout *coreout)
 {
   struct vmap vmap;
   char *secname;
 {
   struct vmap vmap;
   char *secname;
@@ -152,7 +137,7 @@ do_sections (abfd, coreout)
        continue;
 
       if (!make_bfd_asection (abfd, secname,
        continue;
 
       if (!make_bfd_asection (abfd, secname,
-                             SEC_ALLOC | SEC_LOAD+SEC_HAS_CONTENTS,
+                             SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS,
                              vmap.v_len, vmap.v_vaddr, vmap.v_offset))
        /* Fail.  */
        return 0;
                              vmap.v_len, vmap.v_vaddr, vmap.v_offset))
        /* Fail.  */
        return 0;
@@ -161,22 +146,20 @@ do_sections (abfd, coreout)
 }
 
 static asection *
 }
 
 static asection *
-make_bfd_asection (abfd, name, flags, _raw_size, vma, filepos)
-     bfd *abfd;
-     const char *name;
-     flagword flags;
-     bfd_size_type _raw_size;
-     bfd_vma vma;
-     file_ptr filepos;
+make_bfd_asection (bfd *abfd,
+                   const char *name,
+                   flagword flags,
+                   bfd_size_type size,
+                   bfd_vma vma,
+                   file_ptr filepos)
 {
   asection *asect;
 
 {
   asection *asect;
 
-  asect = bfd_make_section_anyway (abfd, name);
+  asect = bfd_make_section_anyway_with_flags (abfd, name, flags);
   if (!asect)
     return NULL;
 
   if (!asect)
     return NULL;
 
-  asect->flags = flags;
-  asect->_raw_size = _raw_size;
+  asect->size = size;
   asect->vma = vma;
   asect->filepos = filepos;
   asect->alignment_power = 4;
   asect->vma = vma;
   asect->filepos = filepos;
   asect->alignment_power = 4;
@@ -185,8 +168,7 @@ make_bfd_asection (abfd, name, flags, _raw_size, vma, filepos)
 }
 
 static const bfd_target *
 }
 
 static const bfd_target *
-irix_core_core_file_p (abfd)
-     bfd *abfd;
+irix_core_core_file_p (bfd *abfd)
 {
   int val;
   struct coreout coreout;
 {
   int val;
   struct coreout coreout;
@@ -273,36 +255,30 @@ irix_core_core_file_p (abfd)
 }
 
 static char *
 }
 
 static char *
-irix_core_core_file_failing_command (abfd)
-     bfd *abfd;
+irix_core_core_file_failing_command (bfd *abfd)
 {
   return core_command (abfd);
 }
 
 static int
 {
   return core_command (abfd);
 }
 
 static int
-irix_core_core_file_failing_signal (abfd)
-     bfd *abfd;
+irix_core_core_file_failing_signal (bfd *abfd)
 {
   return core_signal (abfd);
 }
 
 {
   return core_signal (abfd);
 }
 
-static bfd_boolean
-irix_core_core_file_matches_executable_p (core_bfd, exec_bfd)
-     bfd *core_bfd, *exec_bfd;
-{
-  return TRUE;                 /* XXX - FIXME */
-}
-
 /* If somebody calls any byte-swapping routines, shoot them.  */
 static void
 /* If somebody calls any byte-swapping routines, shoot them.  */
 static void
-swap_abort()
+swap_abort(void)
 {
   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 )
-#define        NO_SIGNED_GET \
-  ((bfd_signed_vma (*) PARAMS ((const bfd_byte *))) swap_abort )
+
+#define        NO_GET ((bfd_vma (*) (const void *)) swap_abort)
+#define        NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
+#define        NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define        NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define        NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define        NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
 
 const bfd_target irix_core_vec =
   {
 
 const bfd_target irix_core_vec =
   {
@@ -317,26 +293,27 @@ const bfd_target irix_core_vec =
     0,                                                    /* symbol prefix */
     ' ',                                                  /* ar_pad_char */
     16,                                                           /* ar_max_namelen */
     0,                                                    /* symbol prefix */
     ' ',                                                  /* ar_pad_char */
     16,                                                           /* ar_max_namelen */
-    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 64 bit data */
-    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 32 bit data */
-    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 16 bit data */
-    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 64 bit hdrs */
-    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 32 bit hdrs */
-    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 16 bit hdrs */
+    0,                                                    /* match_priority */
+    NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data */
+    NO_GET, NO_GETS, NO_PUT,           /* 32 bit data */
+    NO_GET, NO_GETS, NO_PUT,           /* 16 bit data */
+    NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit hdrs */
+    NO_GET, NO_GETS, NO_PUT,           /* 32 bit hdrs */
+    NO_GET, NO_GETS, NO_PUT,           /* 16 bit hdrs */
 
     {                          /* bfd_check_format */
 
     {                          /* bfd_check_format */
-     _bfd_dummy_target,                /* unknown format */
-     _bfd_dummy_target,                /* object file */
-     _bfd_dummy_target,                /* archive */
-     irix_core_core_file_p     /* a core file */
+      _bfd_dummy_target,               /* unknown format */
+      _bfd_dummy_target,               /* object file */
+      _bfd_dummy_target,               /* archive */
+      irix_core_core_file_p            /* a core file */
     },
     {                          /* bfd_set_format */
     },
     {                          /* bfd_set_format */
-     bfd_false, bfd_false,
-     bfd_false, bfd_false
+      bfd_false, bfd_false,
+      bfd_false, bfd_false
     },
     {                          /* bfd_write_contents */
     },
     {                          /* bfd_write_contents */
-     bfd_false, bfd_false,
-     bfd_false, bfd_false
+      bfd_false, bfd_false,
+      bfd_false, bfd_false
     },
 
     BFD_JUMP_TABLE_GENERIC (_bfd_generic),
     },
 
     BFD_JUMP_TABLE_GENERIC (_bfd_generic),
@@ -352,6 +329,6 @@ const bfd_target irix_core_vec =
     NULL,
 
     (PTR) 0                    /* backend_data */
     NULL,
 
     (PTR) 0                    /* backend_data */
-};
+  };
 
 #endif /* IRIX_CORE */
 
 #endif /* IRIX_CORE */
This page took 0.028231 seconds and 4 git commands to generate.