* elf32-ppc.c (ppc_elf_relocate_section): Don't look for a nop after
a tls_get_addr call.
This commit is contained in:
parent
c4f718a3b9
commit
87d243f1ce
2 changed files with 4 additions and 11 deletions
|
@ -1,5 +1,8 @@
|
|||
2003-03-07 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elf32-ppc.c (ppc_elf_relocate_section): Don't look for a nop after
|
||||
a tls_get_addr call.
|
||||
|
||||
* elf32-ppc.c (ELIMINATE_COPY_RELOCS): Define as one.
|
||||
(ppc_elf_adjust_dynamic_symbol): For weak symbols, copy
|
||||
ELF_LINK_NON_GOT_REF from weakdef.
|
||||
|
|
|
@ -4524,7 +4524,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
enum elf_ppc_reloc_type r_type2;
|
||||
unsigned long r_symndx2;
|
||||
struct elf_link_hash_entry *h2;
|
||||
bfd_vma insn1, insn2, insn3;
|
||||
bfd_vma insn1, insn2;
|
||||
bfd_vma offset;
|
||||
|
||||
/* The next instruction should be a call to
|
||||
|
@ -4551,8 +4551,6 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
offset = rel[1].r_offset;
|
||||
insn1 = bfd_get_32 (output_bfd,
|
||||
contents + rel->r_offset - 2);
|
||||
insn3 = bfd_get_32 (output_bfd,
|
||||
contents + offset + 4);
|
||||
if ((tls_mask & tls_gd) != 0)
|
||||
{
|
||||
/* IE */
|
||||
|
@ -4582,16 +4580,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
R_PPC_TPREL16_LO);
|
||||
rel[1].r_offset += 2;
|
||||
}
|
||||
if (insn3 == NOP
|
||||
|| insn3 == CROR_151515 || insn3 == CROR_313131)
|
||||
{
|
||||
insn3 = insn2;
|
||||
insn2 = NOP;
|
||||
rel[1].r_offset += 4;
|
||||
}
|
||||
bfd_put_32 (output_bfd, insn1, contents + rel->r_offset - 2);
|
||||
bfd_put_32 (output_bfd, insn2, contents + offset);
|
||||
bfd_put_32 (output_bfd, insn3, contents + offset + 4);
|
||||
if (tls_gd == 0)
|
||||
{
|
||||
/* We changed the symbol on an LD reloc. Start over
|
||||
|
|
Loading…
Add table
Reference in a new issue