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:
parent
e9697e24f5
commit
0410b45003
@ -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
|
||||
|
18
ld/plugin.c
18
ld/plugin.c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user