OSDN Git Service

mips64*-*-toppers* support.
[pf3gnuchains/pf3gnuchains3x.git] / bfd / coff-or32.c
index af30afd..30801fb 100644 (file)
@@ -1,12 +1,13 @@
 /* BFD back-end for OpenRISC 1000 COFF binaries.
-   Copyright 2002, 2003 Free Software Foundation, Inc.
+   Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
    Contributed by Ivan Guzvinec  <ivang@opencores.org>
 
    This file is part of BFD, the Binary File Descriptor library.
 
    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,
 
    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.  */
 
 #define OR32 1
 
-#include "bfd.h"
 #include "sysdep.h"
+#include "bfd.h"
 #include "libbfd.h"
 #include "coff/or32.h"
 #include "coff/internal.h"
@@ -148,23 +150,14 @@ or32_reloc (abfd, reloc_entry, symbol_in, data, input_section, output_bfd,
         signed_value = 0;
 
       signed_value += sym_value + reloc_entry->addend;
-#if 0
-      if ((signed_value & ~0x3ffff) == 0)
-        {                     /* Absolute jmp/call.  */
-          insn |= (1<<24);    /* Make it absolute.  */
-          /* FIXME: Should we change r_type to R_IABS.  */
-        }
-      else
-#endif
-        {
-          /* Relative jmp/call, so subtract from the value the
-             address of the place we're coming from.  */
-          signed_value -= (reloc_entry->address
-                           + input_section->output_section->vma
-                           + input_section->output_offset);
-          if (signed_value > 0x7ffffff || signed_value < -0x8000000)
-            return bfd_reloc_overflow;
-        }
+      /* Relative jmp/call, so subtract from the value the
+        address of the place we're coming from.  */
+      signed_value -= (reloc_entry->address
+                      + input_section->output_section->vma
+                      + input_section->output_offset);
+      if (signed_value > 0x7ffffff || signed_value < -0x8000000)
+       return bfd_reloc_overflow;
+
       signed_value >>= 2;
       insn = INSERT_JUMPTARG (insn, signed_value);
       bfd_put_32 (abfd, insn, hit_data);
@@ -326,11 +319,7 @@ reloc_processing (relent,reloc, symbols, abfd, section)
     }
   else
     {
-      asymbol *ptr;
       relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
-
-      ptr = *(relent->sym_ptr_ptr);
-
       relent->addend = 0;
       relent->address-= section->vma;
 
@@ -465,25 +454,15 @@ coff_or32_relocate_section (output_bfd, info, input_bfd, input_section,
           /* Determine the destination of the jump.  */
           signed_value += val;
 
-#if 0
-          if ((signed_value & ~0x3ffff) == 0)
-            {
-              /* We can use an absolute jump.  */
-              insn |= (1 << 24);
-            }
-          else
-#endif
-            {
-              /* Make the destination PC relative.  */
-              signed_value -= (input_section->output_section->vma
-                               + input_section->output_offset
-                               + (rel->r_vaddr - input_section->vma));
-              if (signed_value > 0x7ffffff || signed_value < - 0x8000000)
-                {
-                  overflow = TRUE;
-                  signed_value = 0;
-                }
-            }
+         /* Make the destination PC relative.  */
+         signed_value -= (input_section->output_section->vma
+                          + input_section->output_offset
+                          + (rel->r_vaddr - input_section->vma));
+         if (signed_value > 0x7ffffff || signed_value < - 0x8000000)
+           {
+             overflow = TRUE;
+             signed_value = 0;
+           }
 
           /* Put the adjusted value back into the instruction.  */
           signed_value >>= 2;
@@ -592,6 +571,10 @@ coff_or32_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp)
 
 #define coff_adjust_symndx coff_or32_adjust_symndx
 
+#ifndef bfd_pe_print_pdata
+#define bfd_pe_print_pdata     NULL
+#endif
+
 #include "coffcode.h"
 
 const bfd_target or32coff_big_vec =