From: Alan Modra Date: Tue, 5 Jan 2021 12:21:42 +0000 (+1030) Subject: is_relocatable_executable --exclude-libs failure X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c8bad65eee4667f731c4abcc4642c4a68c8601ca;p=binutils-gdb.git is_relocatable_executable --exclude-libs failure --exclude-libs makes symbols hidden, but that doesn't prevent them being made dynamic for is_relocatable_executable targets. Fix that. * elflink.c (bfd_elf_link_record_dynamic_symbol): Handle no_export for relocatable executable. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 4eda3a1e57e..6c050b1c199 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2021-01-05 Alan Modra + + * elflink.c (bfd_elf_link_record_dynamic_symbol): Handle no_export + for relocatable executable. + 2021-01-05 Alan Modra * vms-alpha.c (_bfd_vms_slurp_egsd): Read flags after size check. diff --git a/bfd/elflink.c b/bfd/elflink.c index df5b997cf00..4c54b1a1591 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -534,7 +534,12 @@ bfd_elf_link_record_dynamic_symbol (struct bfd_link_info *info, && h->root.type != bfd_link_hash_undefweak) { h->forced_local = 1; - if (!elf_hash_table (info)->is_relocatable_executable) + if (!elf_hash_table (info)->is_relocatable_executable + || ((h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && h->root.u.def.section->owner->no_export) + || (h->root.type == bfd_link_hash_common + && h->root.u.c.p->section->owner->no_export)) return TRUE; }