mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-03-04 23:48:44 +00:00
Properly convert LTO plugin visibility to ELF visibility.
ld/ 2010-12-05 H.J. Lu <hongjiu.lu@intel.com> * plugin.c (asymbol_from_plugin_symbol): Properly convert LTO plugin visibility to ELF visibility. (is_visible_from_outside): Re-indent. ld/testsuite/ 2010-12-05 H.J. Lu <hongjiu.lu@intel.com> * ld-plugin/plugin-vis-1.d: Updated.
This commit is contained in:
parent
a2c86c8224
commit
cfac8028e4
@ -1,3 +1,9 @@
|
||||
2010-12-05 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* plugin.c (asymbol_from_plugin_symbol): Properly convert LTO
|
||||
plugin visibility to ELF visibility.
|
||||
(is_visible_from_outside): Re-indent.
|
||||
|
||||
2010-12-04 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ldlang.c (lang_size_sections_1): Align lma using same alignment
|
||||
|
29
ld/plugin.c
29
ld/plugin.c
@ -307,10 +307,31 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
|
||||
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
|
||||
{
|
||||
elf_symbol_type *elfsym = elf_symbol_from (abfd, asym);
|
||||
unsigned char visibility;
|
||||
|
||||
if (!elfsym)
|
||||
einfo (_("%P%F: %s: non-ELF symbol in ELF BFD!"), asym->name);
|
||||
elfsym->internal_elf_sym.st_other &= ~3;
|
||||
elfsym->internal_elf_sym.st_other |= ldsym->visibility;
|
||||
switch (ldsym->visibility)
|
||||
{
|
||||
default:
|
||||
einfo (_("%P%F: unknown ELF symbol visibility: %d!"),
|
||||
ldsym->visibility);
|
||||
case LDPV_DEFAULT:
|
||||
visibility = STV_DEFAULT;
|
||||
break;
|
||||
case LDPV_PROTECTED:
|
||||
visibility = STV_PROTECTED;
|
||||
break;
|
||||
case LDPV_INTERNAL:
|
||||
visibility = STV_INTERNAL;
|
||||
break;
|
||||
case LDPV_HIDDEN:
|
||||
visibility = STV_HIDDEN;
|
||||
break;
|
||||
}
|
||||
elfsym->internal_elf_sym.st_other
|
||||
= (visibility | (elfsym->internal_elf_sym.st_other
|
||||
& ~ELF_ST_VISIBILITY (-1)));
|
||||
}
|
||||
|
||||
return LDPS_OK;
|
||||
@ -416,8 +437,8 @@ is_visible_from_outside (struct ld_plugin_symbol *lsym, asection *section,
|
||||
opportunities during LTRANS at worst; it will not give false
|
||||
negatives, which can lead to the disastrous conclusion that the
|
||||
related symbol is IRONLY. (See GCC PR46319 for an example.) */
|
||||
return lsym->visibility == LDPV_DEFAULT
|
||||
|| lsym->visibility == LDPV_PROTECTED;
|
||||
return (lsym->visibility == LDPV_DEFAULT
|
||||
|| lsym->visibility == LDPV_PROTECTED);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-12-05 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* ld-plugin/plugin-vis-1.d: Updated.
|
||||
|
||||
2010-12-04 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* ld-selective/selective.exp: Don't pass -fvtable-gc to GCC
|
||||
|
@ -1,9 +1,9 @@
|
||||
#...
|
||||
.*(PROTECTED.*func3|DEFAULT.*func|HIDDEN.*func2|INTERNAL.*func1)
|
||||
.*(PROTECTED.*func1|DEFAULT.*func|HIDDEN.*func3|INTERNAL.*func2)
|
||||
#...
|
||||
.*(PROTECTED.*func3|DEFAULT.*func|HIDDEN.*func2|INTERNAL.*func1)
|
||||
.*(PROTECTED.*func1|DEFAULT.*func|HIDDEN.*func3|INTERNAL.*func2)
|
||||
#...
|
||||
.*(PROTECTED.*func3|DEFAULT.*func|HIDDEN.*func2|INTERNAL.*func1)
|
||||
.*(PROTECTED.*func1|DEFAULT.*func|HIDDEN.*func3|INTERNAL.*func2)
|
||||
#...
|
||||
.*(PROTECTED.*func3|DEFAULT.*func|HIDDEN.*func2|INTERNAL.*func1)
|
||||
.*(PROTECTED.*func1|DEFAULT.*func|HIDDEN.*func3|INTERNAL.*func2)
|
||||
#...
|
||||
|
Loading…
x
Reference in New Issue
Block a user