mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 10:34:21 +08:00
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:
@ -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>
|
2019-09-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR binutils/24887
|
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;
|
flags = BSF_GLOBAL;
|
||||||
section = bfd_com_section_ptr;
|
section = bfd_com_section_ptr;
|
||||||
asym->value = ldsym->size;
|
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;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -417,7 +411,6 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
|
|||||||
asym->flags = flags;
|
asym->flags = flags;
|
||||||
asym->section = section;
|
asym->section = section;
|
||||||
|
|
||||||
/* Visibility only applies on ELF targets. */
|
|
||||||
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
|
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
|
||||||
{
|
{
|
||||||
elf_symbol_type *elfsym = elf_symbol_from (abfd, asym);
|
elf_symbol_type *elfsym = elf_symbol_from (abfd, asym);
|
||||||
@ -425,6 +418,13 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
|
|||||||
|
|
||||||
if (!elfsym)
|
if (!elfsym)
|
||||||
einfo (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
|
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)
|
switch (ldsym->visibility)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
@ -445,9 +445,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
|
|||||||
visibility = STV_HIDDEN;
|
visibility = STV_HIDDEN;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
elfsym->internal_elf_sym.st_other
|
elfsym->internal_elf_sym.st_other |= visibility;
|
||||||
= (visibility | (elfsym->internal_elf_sym.st_other
|
|
||||||
& ~ELF_ST_VISIBILITY (-1)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return LDPS_OK;
|
return LDPS_OK;
|
||||||
|
Reference in New Issue
Block a user