diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elflink.c | 11 |
2 files changed, 15 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3fae9dd..624af08 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2017-01-18 Maciej W. Rozycki <macro@imgtec.com> + + PR ld/20828 + * elflink.c (bfd_elf_record_link_assignment): Clear any + `forced_local' marking for DSO symbols that are not being + provided. + 2017-01-17 Kuan-Lin Chen <kuanlinchentw@gmail.com> * elfnn-riscv.c (riscv_elf_object_p): New function. diff --git a/bfd/elflink.c b/bfd/elflink.c index 1e5fa61..d7ed8ce 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -671,12 +671,17 @@ bfd_elf_record_link_assignment (bfd *output_bfd, /* If this symbol is not being provided by the linker script, and it is currently defined by a dynamic object, but not by a regular object, - then clear out any version information because the symbol will not be - associated with the dynamic object any more. */ + then undo any forced local marking that may have been set by input + section garbage collection and clear out any version information + because the symbol will not be associated with the dynamic object + any more. */ if (!provide && h->def_dynamic && !h->def_regular) - h->verinfo.verdef = NULL; + { + h->forced_local = 0; + h->verinfo.verdef = NULL; + } h->def_regular = 1; |