PR 21384, --dynamic-list regression with f02cb058
The commit to "Always descend into output section statements in lang_do_assignments" meant that linker script symbols were not bfd_link_hash_new when ld called bfd_elf_record_link_assignment. This patch corrects that problem by testing h->non_elf instead. PR 21384 * elflink.c (bfd_elf_link_mark_dynamic_symbol): Test h->non_elf rather than h->root.type == bfd_link_hash_new. (bfd_elf_record_link_assignment): Similarly, call bfd_elf_link_mark_dynamic_symbol when h->non_elf.
This commit is contained in:
parent
a4ddc54ec1
commit
73ec947d59
|
@ -1,3 +1,11 @@
|
|||
2017-05-02 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 21384
|
||||
* elflink.c (bfd_elf_link_mark_dynamic_symbol): Test h->non_elf
|
||||
rather than h->root.type == bfd_link_hash_new.
|
||||
(bfd_elf_record_link_assignment): Similarly, call
|
||||
bfd_elf_link_mark_dynamic_symbol when h->non_elf.
|
||||
|
||||
2017-04-29 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 21432
|
||||
|
|
|
@ -580,7 +580,7 @@ bfd_elf_link_mark_dynamic_symbol (struct bfd_link_info *info,
|
|||
&& (ELF_ST_TYPE (sym->st_info) == STT_OBJECT
|
||||
|| ELF_ST_TYPE (sym->st_info) == STT_COMMON))))
|
||||
|| (d != NULL
|
||||
&& h->root.type == bfd_link_hash_new
|
||||
&& h->non_elf
|
||||
&& (*d->match) (&d->head, NULL, h->root.root.string)))
|
||||
h->dynamic = 1;
|
||||
}
|
||||
|
@ -623,6 +623,14 @@ bfd_elf_record_link_assignment (bfd *output_bfd,
|
|||
}
|
||||
}
|
||||
|
||||
/* Symbols defined in a linker script but not referenced anywhere
|
||||
else will have non_elf set. */
|
||||
if (h->non_elf)
|
||||
{
|
||||
bfd_elf_link_mark_dynamic_symbol (info, h, NULL);
|
||||
h->non_elf = 0;
|
||||
}
|
||||
|
||||
switch (h->root.type)
|
||||
{
|
||||
case bfd_link_hash_defined:
|
||||
|
@ -639,8 +647,6 @@ bfd_elf_record_link_assignment (bfd *output_bfd,
|
|||
bfd_link_repair_undef_list (&htab->root);
|
||||
break;
|
||||
case bfd_link_hash_new:
|
||||
bfd_elf_link_mark_dynamic_symbol (info, h, NULL);
|
||||
h->non_elf = 0;
|
||||
break;
|
||||
case bfd_link_hash_indirect:
|
||||
/* We had a versioned symbol in a dynamic library. We make the
|
||||
|
|
Loading…
Reference in New Issue