Tidy ld/plugin.c

* plugin.c (asymbol_from_plugin_symbol): Move code handling
	ELF common symbols to block handling ELF visibility.  Simplify
	visibility setting.
This commit is contained in:
Alan Modra 2019-09-09 14:29:39 +09:30
parent e9697e24f5
commit 0410b45003
2 changed files with 14 additions and 10 deletions

View File

@ -1,3 +1,9 @@
2019-09-11 Alan Modra <amodra@gmail.com>
* plugin.c (asymbol_from_plugin_symbol): Move code handling
ELF common symbols to block handling ELF visibility. Simplify
visibility setting.
2019-09-09 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/24887

View File

@ -403,12 +403,6 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
flags = BSF_GLOBAL;
section = bfd_com_section_ptr;
asym->value = ldsym->size;
/* For ELF targets, set alignment of common symbol to 1. */
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
{
((elf_symbol_type *) asym)->internal_elf_sym.st_shndx = SHN_COMMON;
((elf_symbol_type *) asym)->internal_elf_sym.st_value = 1;
}
break;
default:
@ -417,7 +411,6 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
asym->flags = flags;
asym->section = section;
/* Visibility only applies on ELF targets. */
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
{
elf_symbol_type *elfsym = elf_symbol_from (abfd, asym);
@ -425,6 +418,13 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
if (!elfsym)
einfo (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
if (ldsym->def == LDPK_COMMON)
{
elfsym->internal_elf_sym.st_shndx = SHN_COMMON;
elfsym->internal_elf_sym.st_value = 1;
}
switch (ldsym->visibility)
{
default:
@ -445,9 +445,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
visibility = STV_HIDDEN;
break;
}
elfsym->internal_elf_sym.st_other
= (visibility | (elfsym->internal_elf_sym.st_other
& ~ELF_ST_VISIBILITY (-1)));
elfsym->internal_elf_sym.st_other |= visibility;
}
return LDPS_OK;