is_relocatable_executable --exclude-libs failure
Alan Modra
amodra@gmail.com
Tue Jan 5 12:37:41 GMT 2021
--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/elflink.c b/bfd/elflink.c
index df5b997cf0..4c54b1a159 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;
}
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list