]> git.pld-linux.org Git - packages/crossppc-binutils.git/blobdiff - binutils-mips-relocs.patch
- degrade it to warning once again (C++ problems in gcc without comdat support)
[packages/crossppc-binutils.git] / binutils-mips-relocs.patch
index c47dd7020ed31189adb99767105fcc4261d1511d..e5e3d0a2a2d61188c0b56ed396c33d783cd09ff0 100644 (file)
@@ -87,114 +87,6 @@ David.
 
 
 
-Index: bfd/ChangeLog
-===================================================================
-RCS file: /cvsroot/gcc/src-cvs/src/bfd/ChangeLog,v
-retrieving revision 1.2535
-diff -u -r1.2535 ChangeLog
---- bfd/ChangeLog      3 May 2004 14:52:01 -0000       1.2535
-+++ bfd/ChangeLog      5 May 2004 17:38:51 -0000
-@@ -1,0 +1,12 @@
-+2004-05-05  David Ung  <davidu@mips.com>
-+
-+      * elfxx-mips.c (mips_elf_calculate_relocation): Put back cases for
-+      R_MIPS_PC32 and R_MIPS_PC64. 
-+
-+      * elf32-mips.c: Put back elf_mips_gnu_pcrel64 and
-+      elf_mips_gnu_pcrel32. 
-+      (bfd_elf32_bfd_reloc_type_lookup): Put back cases for
-+      BFD_RELOC_64_PCREL and BFD_RELOC_32_PCREL.
-+      (mips_elf32_rtype_to_howto): Put back cases for R_MIPS_PC32 and
-+      R_MIPS_PC64. 
-+
-Index: bfd/elf32-mips.c
-===================================================================
-RCS file: /cvsroot/gcc/src-cvs/src/bfd/elf32-mips.c,v
-retrieving revision 1.175
-diff -u -r1.175 elf32-mips.c
---- bfd/elf32-mips.c   24 Apr 2004 22:07:13 -0000      1.175
-+++ bfd/elf32-mips.c   5 May 2004 17:38:51 -0000
-@@ -615,6 +615,38 @@
-        0xffff,                /* dst_mask */
-        TRUE);                 /* pcrel_offset */
-+/* 64 bit pc-relative.  */
-+static reloc_howto_type elf_mips_gnu_pcrel64 =
-+  HOWTO (R_MIPS_PC64,         /* type */
-+       0,                     /* rightshift */
-+       4,                     /* size (0 = byte, 1 = short, 2 = long) */
-+       64,                    /* bitsize */
-+       TRUE,                  /* pc_relative */
-+       0,                     /* bitpos */
-+       complain_overflow_signed, /* complain_on_overflow */
-+       _bfd_mips_elf_generic_reloc, /* special_function */
-+       "R_MIPS_PC64",         /* name */
-+       TRUE,                  /* partial_inplace */
-+       MINUS_ONE,             /* src_mask */
-+       MINUS_ONE,             /* dst_mask */
-+       TRUE);                 /* pcrel_offset */
-+
-+/* 32 bit pc-relative.  */
-+static reloc_howto_type elf_mips_gnu_pcrel32 =
-+  HOWTO (R_MIPS_PC32,         /* type */
-+       0,                     /* rightshift */
-+       2,                     /* size (0 = byte, 1 = short, 2 = long) */
-+       32,                    /* bitsize */
-+       TRUE,                  /* pc_relative */
-+       0,                     /* bitpos */
-+       complain_overflow_signed, /* complain_on_overflow */
-+       _bfd_mips_elf_generic_reloc, /* special_function */
-+       "R_MIPS_PC32",         /* name */
-+       TRUE,                  /* partial_inplace */
-+       0xffffffff,            /* src_mask */
-+       0xffffffff,            /* dst_mask */
-+       TRUE);                 /* pcrel_offset */
-+
- /* GNU extension to record C++ vtable hierarchy */
- static reloc_howto_type elf_mips_gnu_vtinherit_howto =
-   HOWTO (R_MIPS_GNU_VTINHERIT,        /* type */
-@@ -1071,6 +1103,10 @@
-       return &elf_mips_gnu_vtentry_howto;
-     case BFD_RELOC_16_PCREL_S2:
-       return &elf_mips_gnu_rel16_s2;
-+    case BFD_RELOC_64_PCREL:
-+      return &elf_mips_gnu_pcrel64;
-+    case BFD_RELOC_32_PCREL:
-+      return &elf_mips_gnu_pcrel32;
-     }
- }
-@@ -1092,6 +1128,10 @@
-       return &elf_mips_gnu_vtentry_howto;
-     case R_MIPS_GNU_REL16_S2:
-       return &elf_mips_gnu_rel16_s2;
-+    case R_MIPS_PC64:
-+      return &elf_mips_gnu_pcrel64;
-+    case R_MIPS_PC32:
-+      return &elf_mips_gnu_pcrel32;
-     default:
-       BFD_ASSERT (r_type < (unsigned int) R_MIPS_max);
-       return &elf_mips_howto_table_rel[r_type];
-Index: bfd/elfxx-mips.c
-===================================================================
-RCS file: /cvsroot/gcc/src-cvs/src/bfd/elfxx-mips.c,v
-retrieving revision 1.100
-diff -u -r1.100 elfxx-mips.c
---- bfd/elfxx-mips.c   24 Apr 2004 22:07:13 -0000      1.100
-+++ bfd/elfxx-mips.c   5 May 2004 17:38:51 -0000
-@@ -3335,6 +3335,12 @@
-       value &= howto->dst_mask;
-       break;
-+    case R_MIPS_PC32:
-+    case R_MIPS_PC64:
-+      value = symbol + addend - p;
-+      value &= howto->dst_mask;
-+      break;
-+
-     case R_MIPS_GNU_REL16_S2:
-       value = symbol + _bfd_mips_elf_sign_extend (addend, 18) - p;
-       overflowed_p = mips_elf_overflow_p (value, 18);
 Index: gas/ChangeLog
 ===================================================================
 RCS file: /cvsroot/gcc/src-cvs/src/gas/ChangeLog,v
@@ -214,19 +106,27 @@ Index: gas/config/tc-mips.c
 RCS file: /cvsroot/gcc/src-cvs/src/gas/config/tc-mips.c,v
 retrieving revision 1.263
 diff -u -r1.263 tc-mips.c
---- gas/config/tc-mips.c       29 Apr 2004 05:14:21 -0000      1.263
-+++ gas/config/tc-mips.c       5 May 2004 17:38:51 -0000
-@@ -10861,8 +10861,7 @@
+--- gas/config/tc-mips.c.orig  2004-11-22 21:33:32.000000000 +0100
++++ gas/config/tc-mips.c       2004-11-23 23:59:24.000000000 +0100
+@@ -10932,8 +10932,6 @@
    buf = (bfd_byte *) (fixP->fx_frag->fr_literal + fixP->fx_where);
  
-   /* We are not done if this is a composite relocation to set up gp.  */
 -  assert (! fixP->fx_pcrel);
--  if (fixP->fx_addsy == NULL
-+  if (fixP->fx_addsy == NULL && ! fixP->fx_pcrel
-       && !(fixP->fx_r_type == BFD_RELOC_MIPS_SUB
-          || (fixP->fx_r_type == BFD_RELOC_64
-              && (previous_fx_r_type == BFD_RELOC_GPREL32
-@@ -12723,8 +12722,27 @@
+-
+   /* Don't treat parts of a composite relocation as done.  There are two
+      reasons for this:
+@@ -10944,7 +10942,7 @@
+        constants.  The easiest way of dealing with the pathological
+        exceptions is to generate a relocation against STN_UNDEF and
+        leave everything up to the linker.  */
+-  if (fixP->fx_addsy == NULL && fixP->fx_tcbit == 0)
++  if (fixP->fx_addsy == NULL && (! fixP->fx_pcrel) && fixP->fx_tcbit == 0)
+     fixP->fx_done = 1;
+   switch (fixP->fx_r_type)
+@@ -12800,8 +12798,27 @@
    *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
    reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
  
@@ -256,7 +156,7 @@ diff -u -r1.263 tc-mips.c
  
    /* Since the old MIPS ELF ABI uses Rel instead of Rela, encode the vtable
       entry to be used in the relocation's section offset.  */
-@@ -12735,6 +12753,34 @@
+@@ -12812,6 +12829,34 @@
      }
  
    code = fixp->fx_r_type;
@@ -309,34 +209,3 @@ diff -u -r1.35 tc-mips.h
  /* Tell assembler that we have an itbl_mips.h header file to include.  */
  #define HAVE_ITBL_CPU
  
-Index: include/elf/ChangeLog
-===================================================================
-RCS file: /cvsroot/gcc/src-cvs/src/include/elf/ChangeLog,v
-retrieving revision 1.205
-diff -u -r1.205 ChangeLog
---- include/elf/ChangeLog      24 Apr 2004 22:07:14 -0000      1.205
-+++ include/elf/ChangeLog      5 May 2004 17:38:51 -0000
-@@ -1,3 +1,7 @@
-+2004-05-05  David Ung  <davidu@mips.com>
-+
-+      * mips.h: Put back R_MIPS_PC32 and R_MIPS_PC64.
-+
- 2004-04-24  Chris Demetriou  <cgd@broadcom.com>
-       * mips.h (R_MIPS_PC32, R_MIPS_PC64, R_MIPS_GNU_REL_LO16)
-Index: include/elf/mips.h
-===================================================================
-RCS file: /cvsroot/gcc/src-cvs/src/include/elf/mips.h,v
-retrieving revision 1.22
-diff -u -r1.22 mips.h
---- include/elf/mips.h 24 Apr 2004 22:07:14 -0000      1.22
-+++ include/elf/mips.h 5 May 2004 17:38:51 -0000
-@@ -76,6 +76,8 @@
-   /* These relocs are used for the mips16.  */
-   RELOC_NUMBER (R_MIPS16_26, 100)
-   RELOC_NUMBER (R_MIPS16_GPREL, 101)
-+  RELOC_NUMBER (R_MIPS_PC32, 248)
-+  RELOC_NUMBER (R_MIPS_PC64, 249)
-   /* FIXME: this relocation is used internally by gas.  */
-   RELOC_NUMBER (R_MIPS_GNU_REL16_S2, 250)
-   /* These are GNU extensions to enable C++ vtable garbage collection.  */
This page took 0.101588 seconds and 4 git commands to generate.