]> git.pld-linux.org Git - packages/binutils.git/commitdiff
2001-06-29 Jakub Jelinek <jakub@redhat.com>
authorkloczek <kloczek@pld-linux.org>
Fri, 29 Jun 2001 19:22:07 +0000 (19:22 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
        * elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove support for
          R_SPARC_UA64.
        (elf32_sparc_check_relocs): Likewise.
        (elf32_sparc_relocate_section): Likewise.
        Optimize unaligned reloc usage.

Changed files:
    binutils-sparc_unaligned_reloc.patch -> 1.1

binutils-sparc_unaligned_reloc.patch [new file with mode: 0644]

diff --git a/binutils-sparc_unaligned_reloc.patch b/binutils-sparc_unaligned_reloc.patch
new file mode 100644 (file)
index 0000000..7922c72
--- /dev/null
@@ -0,0 +1,80 @@
+2001-06-29  Jakub Jelinek  <jakub@redhat.com>
+
+       * elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove support for
+       R_SPARC_UA64.
+       (elf32_sparc_check_relocs): Likewise.
+       (elf32_sparc_relocate_section): Likewise.
+       Optimize unaligned reloc usage.
+
+--- binutils-2.11.90.0.19/bfd/elf32-sparc.c.jj Fri Jun 29 11:58:58 2001
++++ binutils-2.11.90.0.19/bfd/elf32-sparc.c    Fri Jun 29 12:24:17 2001
+@@ -120,7 +120,7 @@ reloc_howto_type _bfd_sparc_elf_howto_ta
+   HOWTO(R_SPARC_NONE,      0,0, 0,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_NONE",    false,0,0x00000000,true),
+   HOWTO(R_SPARC_NONE,      0,0, 0,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_NONE",    false,0,0x00000000,true),
+   HOWTO(R_SPARC_NONE,      0,0, 0,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_NONE",    false,0,0x00000000,true),
+-  HOWTO(R_SPARC_UA64,      0,4,64,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_UA64",    false,0,(~ (bfd_vma)0), true),
++  HOWTO(R_SPARC_UA64,      0,0, 0,false,0,complain_overflow_dont,    sparc_elf_notsupported_reloc,  "R_SPARC_UA64",    false,0,0x00000000,true),
+   HOWTO(R_SPARC_UA16,      0,1,16,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_UA16",    false,0,0x0000ffff,true),
+   HOWTO(R_SPARC_REV32,     0,2,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_REV32",   false,0,0xffffffff,true),
+ };
+@@ -554,7 +554,6 @@ elf32_sparc_check_relocs (abfd, info, se
+       case R_SPARC_LO10:
+       case R_SPARC_UA16:
+       case R_SPARC_UA32:
+-      case R_SPARC_UA64:
+         if (h != NULL)
+           h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
+@@ -1223,7 +1222,6 @@ elf32_sparc_relocate_section (output_bfd
+                         || r_type == R_SPARC_LO10
+                         || r_type == R_SPARC_UA16
+                         || r_type == R_SPARC_UA32
+-                        || r_type == R_SPARC_UA64
+                         || ((r_type == R_SPARC_PC10
+                              || r_type == R_SPARC_PC22)
+                             && strcmp (h->root.root.string,
+@@ -1412,7 +1410,6 @@ elf32_sparc_relocate_section (output_bfd
+       case R_SPARC_LO10:
+       case R_SPARC_UA16:
+       case R_SPARC_UA32:
+-      case R_SPARC_UA64:
+         if (info->shared)
+           {
+             Elf_Internal_Rela outrel;
+@@ -1463,6 +1460,24 @@ elf32_sparc_relocate_section (output_bfd
+             outrel.r_offset += (input_section->output_section->vma
+                                 + input_section->output_offset);
++            /* Optimize unaligned reloc usage now that we know where
++               it finally resides.  */
++            switch (r_type)
++              {
++              case R_SPARC_16:
++                if (outrel.r_offset & 1) r_type = R_SPARC_UA16;
++                break;
++              case R_SPARC_UA16:
++                if (!(outrel.r_offset & 1)) r_type = R_SPARC_16;
++                break;
++              case R_SPARC_32:
++                if (outrel.r_offset & 3) r_type = R_SPARC_UA32;
++                break;
++              case R_SPARC_UA32:
++                if (!(outrel.r_offset & 3)) r_type = R_SPARC_32;
++                break;
++              }
++
+             if (skip)
+               memset (&outrel, 0, sizeof outrel);
+             /* h->dynindx may be -1 if the symbol was marked to
+@@ -2024,7 +2039,7 @@ elf32_sparc_object_p (abfd)
+     }
+   else if (elf_elfheader (abfd)->e_flags & EF_SPARC_LEDATA)
+     return bfd_default_set_arch_mach (abfd, bfd_arch_sparc,
+-                                      bfd_mach_sparc_sparclite_le);
++                                    bfd_mach_sparc_sparclite_le);
+   else
+     return bfd_default_set_arch_mach (abfd, bfd_arch_sparc, bfd_mach_sparc);
+ }
+
+
+       Jakub
This page took 0.124227 seconds and 4 git commands to generate.