mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 04:29:49 +00:00
* elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove support for
R_SPARC_UA64. (elf32_sparc_check_relocs): Likewise. Only create .rela section for alloced sections in shared libraries. (elf32_sparc_relocate_section): Likewise. Remove redundant check. Optimize unaligned reloc usage. * elf64-sparc.c (sparc64_elf_relocate_section): Remove redundant check. * testsuite/gas/sparc/unalign.s: Remove .uaxword test. * testsuite/gas/sparc/unalign.d: Adjust accordingly.
This commit is contained in:
parent
cdbb0887ba
commit
20278fa326
@ -1,3 +1,15 @@
|
|||||||
|
2001-07-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove support for
|
||||||
|
R_SPARC_UA64.
|
||||||
|
(elf32_sparc_check_relocs): Likewise.
|
||||||
|
Only create .rela section for alloced sections in shared libraries.
|
||||||
|
(elf32_sparc_relocate_section): Likewise.
|
||||||
|
Remove redundant check.
|
||||||
|
Optimize unaligned reloc usage.
|
||||||
|
* elf64-sparc.c (sparc64_elf_relocate_section): Remove redundant
|
||||||
|
check.
|
||||||
|
|
||||||
2001-07-11 H.J. Lu <hjl@gnu.org>
|
2001-07-11 H.J. Lu <hjl@gnu.org>
|
||||||
|
|
||||||
* elf64-alpha.c (elf64_alpha_check_relocs): Only use the same
|
* elf64-alpha.c (elf64_alpha_check_relocs): Only use the same
|
||||||
|
@ -120,7 +120,7 @@ reloc_howto_type _bfd_sparc_elf_howto_table[] =
|
|||||||
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_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_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),
|
HOWTO(R_SPARC_REV32, 0,2,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_REV32", false,0,0xffffffff,true),
|
||||||
};
|
};
|
||||||
@ -554,11 +554,10 @@ elf32_sparc_check_relocs (abfd, info, sec, relocs)
|
|||||||
case R_SPARC_LO10:
|
case R_SPARC_LO10:
|
||||||
case R_SPARC_UA16:
|
case R_SPARC_UA16:
|
||||||
case R_SPARC_UA32:
|
case R_SPARC_UA32:
|
||||||
case R_SPARC_UA64:
|
|
||||||
if (h != NULL)
|
if (h != NULL)
|
||||||
h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
|
h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
|
||||||
|
|
||||||
if (info->shared)
|
if (info->shared && (sec->flags & SEC_ALLOC))
|
||||||
{
|
{
|
||||||
/* When creating a shared object, we must copy these
|
/* When creating a shared object, we must copy these
|
||||||
relocs into the output file. We create a reloc
|
relocs into the output file. We create a reloc
|
||||||
@ -1223,7 +1222,6 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||||||
|| r_type == R_SPARC_LO10
|
|| r_type == R_SPARC_LO10
|
||||||
|| r_type == R_SPARC_UA16
|
|| r_type == R_SPARC_UA16
|
||||||
|| r_type == R_SPARC_UA32
|
|| r_type == R_SPARC_UA32
|
||||||
|| r_type == R_SPARC_UA64
|
|
||||||
|| ((r_type == R_SPARC_PC10
|
|| ((r_type == R_SPARC_PC10
|
||||||
|| r_type == R_SPARC_PC22)
|
|| r_type == R_SPARC_PC22)
|
||||||
&& strcmp (h->root.root.string,
|
&& strcmp (h->root.root.string,
|
||||||
@ -1412,8 +1410,7 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||||||
case R_SPARC_LO10:
|
case R_SPARC_LO10:
|
||||||
case R_SPARC_UA16:
|
case R_SPARC_UA16:
|
||||||
case R_SPARC_UA32:
|
case R_SPARC_UA32:
|
||||||
case R_SPARC_UA64:
|
if (info->shared && (input_section->flags & SEC_ALLOC))
|
||||||
if (info->shared)
|
|
||||||
{
|
{
|
||||||
Elf_Internal_Rela outrel;
|
Elf_Internal_Rela outrel;
|
||||||
boolean skip;
|
boolean skip;
|
||||||
@ -1463,6 +1460,28 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||||||
outrel.r_offset += (input_section->output_section->vma
|
outrel.r_offset += (input_section->output_section->vma
|
||||||
+ input_section->output_offset);
|
+ 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)
|
if (skip)
|
||||||
memset (&outrel, 0, sizeof outrel);
|
memset (&outrel, 0, sizeof outrel);
|
||||||
/* h->dynindx may be -1 if the symbol was marked to
|
/* h->dynindx may be -1 if the symbol was marked to
|
||||||
@ -1535,12 +1554,8 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||||||
++sreloc->reloc_count;
|
++sreloc->reloc_count;
|
||||||
|
|
||||||
/* This reloc will be computed at runtime, so there's no
|
/* This reloc will be computed at runtime, so there's no
|
||||||
need to do anything now, unless this is a RELATIVE
|
need to do anything now. */
|
||||||
reloc in an unallocated section. */
|
continue;
|
||||||
if (skip
|
|
||||||
|| (input_section->flags & SEC_ALLOC) != 0
|
|
||||||
|| ELF32_R_TYPE (outrel.r_info) != R_SPARC_RELATIVE)
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2024,7 +2039,7 @@ elf32_sparc_object_p (abfd)
|
|||||||
}
|
}
|
||||||
else if (elf_elfheader (abfd)->e_flags & EF_SPARC_LEDATA)
|
else if (elf_elfheader (abfd)->e_flags & EF_SPARC_LEDATA)
|
||||||
return bfd_default_set_arch_mach (abfd, bfd_arch_sparc,
|
return bfd_default_set_arch_mach (abfd, bfd_arch_sparc,
|
||||||
bfd_mach_sparc_sparclite_le);
|
bfd_mach_sparc_sparclite_le);
|
||||||
else
|
else
|
||||||
return bfd_default_set_arch_mach (abfd, bfd_arch_sparc, bfd_mach_sparc);
|
return bfd_default_set_arch_mach (abfd, bfd_arch_sparc, bfd_mach_sparc);
|
||||||
}
|
}
|
||||||
|
@ -2283,12 +2283,8 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||||||
++sreloc->reloc_count;
|
++sreloc->reloc_count;
|
||||||
|
|
||||||
/* This reloc will be computed at runtime, so there's no
|
/* This reloc will be computed at runtime, so there's no
|
||||||
need to do anything now, unless this is a RELATIVE
|
need to do anything now. */
|
||||||
reloc in an unallocated section. */
|
continue;
|
||||||
if (skip
|
|
||||||
|| (input_section->flags & SEC_ALLOC) != 0
|
|
||||||
|| ELF64_R_TYPE_ID (outrel.r_info) != R_SPARC_RELATIVE)
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2001-07-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* testsuite/gas/sparc/unalign.s: Remove .uaxword test.
|
||||||
|
* testsuite/gas/sparc/unalign.d: Adjust accordingly.
|
||||||
|
|
||||||
2001-07-10 Mark Elbrecht <snowball3@softhome.net>
|
2001-07-10 Mark Elbrecht <snowball3@softhome.net>
|
||||||
|
|
||||||
* config/obj-coff.c (coff_frob_symbol): Don't merge if the storage
|
* config/obj-coff.c (coff_frob_symbol): Don't merge if the storage
|
||||||
|
@ -12,7 +12,4 @@ Disassembly of section .data:
|
|||||||
1: R_SPARC_UA32 fred
|
1: R_SPARC_UA32 fred
|
||||||
4: 00 02 00 00 (unimp|illtrap) 0x20000
|
4: 00 02 00 00 (unimp|illtrap) 0x20000
|
||||||
6: R_SPARC_UA16 jim
|
6: R_SPARC_UA16 jim
|
||||||
8: 03 00 00 00 sethi %hi\(0\), %g1
|
8: 03 04 05 06 sethi %hi\(0x10141800\), %g1
|
||||||
9: R_SPARC_UA64 harry
|
|
||||||
c: 00 00 00 00 (unimp|illtrap) 0
|
|
||||||
10: 00 04 05 06 (unimp|illtrap) 0x40506
|
|
||||||
|
@ -7,9 +7,6 @@ foo:
|
|||||||
.byte 0x2
|
.byte 0x2
|
||||||
.uahalf jim
|
.uahalf jim
|
||||||
.byte 0x3
|
.byte 0x3
|
||||||
.uaxword harry
|
|
||||||
.byte 0x4
|
.byte 0x4
|
||||||
.byte 0x5
|
.byte 0x5
|
||||||
.byte 0x6
|
.byte 0x6
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user