1 2001-06-29 Jakub Jelinek <jakub@redhat.com>
3 * elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove support for
5 (elf32_sparc_check_relocs): Likewise.
6 (elf32_sparc_relocate_section): Likewise.
7 Optimize unaligned reloc usage.
9 --- binutils-2.11.90.0.19/bfd/elf32-sparc.c.jj Fri Jun 29 11:58:58 2001
10 +++ binutils-2.11.90.0.19/bfd/elf32-sparc.c Fri Jun 29 12:24:17 2001
11 @@ -120,7 +120,7 @@ reloc_howto_type _bfd_sparc_elf_howto_ta
12 HOWTO(R_SPARC_NONE, 0,0, 0,false,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_NONE", false,0,0x00000000,true),
13 HOWTO(R_SPARC_NONE, 0,0, 0,false,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_NONE", false,0,0x00000000,true),
14 HOWTO(R_SPARC_NONE, 0,0, 0,false,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_NONE", false,0,0x00000000,true),
15 - 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),
16 + HOWTO(R_SPARC_UA64, 0,0, 0,false,0,complain_overflow_dont, sparc_elf_notsupported_reloc, "R_SPARC_UA64", false,0,0x00000000,true),
17 HOWTO(R_SPARC_UA16, 0,1,16,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_UA16", false,0,0x0000ffff,true),
18 HOWTO(R_SPARC_REV32, 0,2,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_REV32", false,0,0xffffffff,true),
20 @@ -554,7 +554,6 @@ elf32_sparc_check_relocs (abfd, info, se
26 h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
28 @@ -1223,7 +1222,6 @@ elf32_sparc_relocate_section (output_bfd
29 || r_type == R_SPARC_LO10
30 || r_type == R_SPARC_UA16
31 || r_type == R_SPARC_UA32
32 - || r_type == R_SPARC_UA64
33 || ((r_type == R_SPARC_PC10
34 || r_type == R_SPARC_PC22)
35 && strcmp (h->root.root.string,
36 @@ -1412,7 +1410,6 @@ elf32_sparc_relocate_section (output_bfd
43 Elf_Internal_Rela outrel;
44 @@ -1463,6 +1460,24 @@ elf32_sparc_relocate_section (output_bfd
45 outrel.r_offset += (input_section->output_section->vma
46 + input_section->output_offset);
48 + /* Optimize unaligned reloc usage now that we know where
49 + it finally resides. */
53 + if (outrel.r_offset & 1) r_type = R_SPARC_UA16;
56 + if (!(outrel.r_offset & 1)) r_type = R_SPARC_16;
59 + if (outrel.r_offset & 3) r_type = R_SPARC_UA32;
62 + if (!(outrel.r_offset & 3)) r_type = R_SPARC_32;
67 memset (&outrel, 0, sizeof outrel);
68 /* h->dynindx may be -1 if the symbol was marked to
69 @@ -2024,7 +2039,7 @@ elf32_sparc_object_p (abfd)
71 else if (elf_elfheader (abfd)->e_flags & EF_SPARC_LEDATA)
72 return bfd_default_set_arch_mach (abfd, bfd_arch_sparc,
73 - bfd_mach_sparc_sparclite_le);
74 + bfd_mach_sparc_sparclite_le);
76 return bfd_default_set_arch_mach (abfd, bfd_arch_sparc, bfd_mach_sparc);