mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 19:09:31 +08:00
PR ld/13470
* elf32-ppc.c (ppc_elf_copy_indirect_symbol): Revert substantive change in 2011-07-01 commit. Comment. * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2011-12-03 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR ld/13470
|
||||||
|
* elf32-ppc.c (ppc_elf_copy_indirect_symbol): Revert substantive
|
||||||
|
change in 2011-07-01 commit. Comment.
|
||||||
|
* elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise.
|
||||||
|
|
||||||
2011-12-01 Mikael Pettersson <mikpe@it.uu.se>
|
2011-12-01 Mikael Pettersson <mikpe@it.uu.se>
|
||||||
|
|
||||||
* elf32-m68k.c (elf_m68k_check_relocs) <R_68K_8, R68K_16, R_68K_32>: For
|
* elf32-m68k.c (elf_m68k_check_relocs) <R_68K_8, R68K_16, R_68K_32>: For
|
||||||
|
@ -2987,10 +2987,6 @@ ppc_elf_copy_indirect_symbol (struct bfd_link_info *info,
|
|||||||
edir->elf.needs_plt |= eind->elf.needs_plt;
|
edir->elf.needs_plt |= eind->elf.needs_plt;
|
||||||
edir->elf.pointer_equality_needed |= eind->elf.pointer_equality_needed;
|
edir->elf.pointer_equality_needed |= eind->elf.pointer_equality_needed;
|
||||||
|
|
||||||
/* If we were called to copy over info for a weak sym, that's all. */
|
|
||||||
if (eind->elf.root.type != bfd_link_hash_indirect)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (eind->dyn_relocs != NULL)
|
if (eind->dyn_relocs != NULL)
|
||||||
{
|
{
|
||||||
if (edir->dyn_relocs != NULL)
|
if (edir->dyn_relocs != NULL)
|
||||||
@ -3022,6 +3018,16 @@ ppc_elf_copy_indirect_symbol (struct bfd_link_info *info,
|
|||||||
eind->dyn_relocs = NULL;
|
eind->dyn_relocs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If we were called to copy over info for a weak sym, that's all.
|
||||||
|
You might think dyn_relocs need not be copied over; After all,
|
||||||
|
both syms will be dynamic or both non-dynamic so we're just
|
||||||
|
moving reloc accounting around. However, ELIMINATE_COPY_RELOCS
|
||||||
|
code in ppc_elf_adjust_dynamic_symbol needs to check for
|
||||||
|
dyn_relocs in read-only sections, and it does so on what is the
|
||||||
|
DIR sym here. */
|
||||||
|
if (eind->elf.root.type != bfd_link_hash_indirect)
|
||||||
|
return;
|
||||||
|
|
||||||
/* Copy over the GOT refcount entries that we may have already seen to
|
/* Copy over the GOT refcount entries that we may have already seen to
|
||||||
the symbol which just became indirect. */
|
the symbol which just became indirect. */
|
||||||
edir->elf.got.refcount += eind->elf.got.refcount;
|
edir->elf.got.refcount += eind->elf.got.refcount;
|
||||||
|
@ -4435,10 +4435,6 @@ ppc64_elf_copy_indirect_symbol (struct bfd_link_info *info,
|
|||||||
edir->elf.ref_regular_nonweak |= eind->elf.ref_regular_nonweak;
|
edir->elf.ref_regular_nonweak |= eind->elf.ref_regular_nonweak;
|
||||||
edir->elf.needs_plt |= eind->elf.needs_plt;
|
edir->elf.needs_plt |= eind->elf.needs_plt;
|
||||||
|
|
||||||
/* If we were called to copy over info for a weak sym, that's all. */
|
|
||||||
if (eind->elf.root.type != bfd_link_hash_indirect)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Copy over any dynamic relocs we may have on the indirect sym. */
|
/* Copy over any dynamic relocs we may have on the indirect sym. */
|
||||||
if (eind->dyn_relocs != NULL)
|
if (eind->dyn_relocs != NULL)
|
||||||
{
|
{
|
||||||
@ -4471,6 +4467,16 @@ ppc64_elf_copy_indirect_symbol (struct bfd_link_info *info,
|
|||||||
eind->dyn_relocs = NULL;
|
eind->dyn_relocs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If we were called to copy over info for a weak sym, that's all.
|
||||||
|
You might think dyn_relocs need not be copied over; After all,
|
||||||
|
both syms will be dynamic or both non-dynamic so we're just
|
||||||
|
moving reloc accounting around. However, ELIMINATE_COPY_RELOCS
|
||||||
|
code in ppc64_elf_adjust_dynamic_symbol needs to check for
|
||||||
|
dyn_relocs in read-only sections, and it does so on what is the
|
||||||
|
DIR sym here. */
|
||||||
|
if (eind->elf.root.type != bfd_link_hash_indirect)
|
||||||
|
return;
|
||||||
|
|
||||||
/* Copy over got entries that we may have already seen to the
|
/* Copy over got entries that we may have already seen to the
|
||||||
symbol which just became indirect. */
|
symbol which just became indirect. */
|
||||||
if (eind->elf.got.glist != NULL)
|
if (eind->elf.got.glist != NULL)
|
||||||
|
Reference in New Issue
Block a user