]>
Commit | Line | Data |
---|---|---|
929f7364 | 1 | 2001-06-29 Jakub Jelinek <jakub@redhat.com> |
2 | ||
3 | * elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove support for | |
4 | R_SPARC_UA64. | |
5 | (elf32_sparc_check_relocs): Likewise. | |
6 | (elf32_sparc_relocate_section): Likewise. | |
7 | Optimize unaligned reloc usage. | |
8 | ||
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), | |
19 | }; | |
20 | @@ -554,7 +554,6 @@ elf32_sparc_check_relocs (abfd, info, se | |
21 | case R_SPARC_LO10: | |
22 | case R_SPARC_UA16: | |
23 | case R_SPARC_UA32: | |
24 | - case R_SPARC_UA64: | |
25 | if (h != NULL) | |
26 | h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF; | |
27 | ||
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 | |
37 | case R_SPARC_LO10: | |
38 | case R_SPARC_UA16: | |
39 | case R_SPARC_UA32: | |
40 | - case R_SPARC_UA64: | |
41 | if (info->shared) | |
42 | { | |
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); | |
47 | ||
48 | + /* Optimize unaligned reloc usage now that we know where | |
49 | + it finally resides. */ | |
50 | + switch (r_type) | |
51 | + { | |
52 | + case R_SPARC_16: | |
53 | + if (outrel.r_offset & 1) r_type = R_SPARC_UA16; | |
54 | + break; | |
55 | + case R_SPARC_UA16: | |
56 | + if (!(outrel.r_offset & 1)) r_type = R_SPARC_16; | |
57 | + break; | |
58 | + case R_SPARC_32: | |
59 | + if (outrel.r_offset & 3) r_type = R_SPARC_UA32; | |
60 | + break; | |
61 | + case R_SPARC_UA32: | |
62 | + if (!(outrel.r_offset & 3)) r_type = R_SPARC_32; | |
63 | + break; | |
64 | + } | |
65 | + | |
66 | if (skip) | |
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) | |
70 | } | |
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); | |
75 | else | |
76 | return bfd_default_set_arch_mach (abfd, bfd_arch_sparc, bfd_mach_sparc); | |
77 | } | |
78 | ||
79 | ||
80 | Jakub |