On Sun, Dec 5, 2010 at 4:32 PM, Alan Modra <amo...@gmail.com> wrote: > On Sun, Dec 05, 2010 at 04:01:51PM -0800, H.J. Lu wrote: >> Hi, >> >> The order of LTO plugin visibility is different from ELF visibility. > > Daft. Can't we fix that now, before 2.21 and gcc-4.6 are released?
I guess it is too late to change the plugin API. >> I checked in this patch to fix it. >> >> >> H.J. >> --- >> diff --git a/ld/ChangeLog b/ld/ChangeLog >> index 66aee40..bfef25a 100644 >> --- a/ld/ChangeLog >> +++ b/ld/ChangeLog >> @@ -1,3 +1,9 @@ >> +2010-12-05 H.J. Lu <hongjiu...@intel.com> >> + >> + * plugin.c (asymbol_from_plugin_symbol): Proper translate >> + LTO plugin visibility to ELF visibility. >> + (is_visible_from_outside): Re-indent. > > Please put PR ld/12277 on the ChangeLog entry. Done. >> + einfo (_("%P%F: unknown ELF symbol visibility: %d!"), >> + ldsym->visibility); > > einfo needs a trailing \n on the message string. > I checked in the enclosed patch. Thanks. -- H.J. --- 2010-12-05 H.J. Lu <hongjiu...@intel.com> * plugin.c (asymbol_from_plugin_symbol): Add the trailing `\n' to einfo. (get_symbols): Likewise. (plugin_notice): Likewise. (plugin_multiple_definition): Likewise. diff --git a/ld/plugin.c b/ld/plugin.c index ae9c378..8cc0270 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -310,11 +310,11 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym, unsigned char visibility; if (!elfsym) - einfo (_("%P%F: %s: non-ELF symbol in ELF BFD!"), asym->name); + einfo (_("%P%F: %s: non-ELF symbol in ELF BFD!\n"), asym->name); switch (ldsym->visibility) { default: - einfo (_("%P%F: unknown ELF symbol visibility: %d!"), + einfo (_("%P%F: unknown ELF symbol visibility: %d!\n"), ldsym->visibility); case LDPV_DEFAULT: visibility = STV_DEFAULT; @@ -476,7 +476,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms) && blhe->type != bfd_link_hash_common) { /* We should not have a new, indirect or warning symbol here. */ - einfo ("%P%F: %s: plugin symbol table corrupt (sym type %d)", + einfo ("%P%F: %s: plugin symbol table corrupt (sym type %d)\n", called_plugin->name, blhe->type); } @@ -869,7 +869,7 @@ plugin_notice (struct bfd_link_info *info ATTRIBUTE_UNUSED, /* This is a ref from a non-IR file, so note the ref'd symbol in the non-IR-only hash. */ if (!bfd_hash_lookup (non_ironly_hash, name, TRUE, TRUE)) - einfo (_("%P%X: %s: hash table failure adding symbol %s"), + einfo (_("%P%X: %s: hash table failure adding symbol %s\n"), abfd->filename, name); } else if (!is_ref && is_dummy) @@ -902,10 +902,10 @@ plugin_multiple_definition (struct bfd_link_info *info, const char *name, struct bfd_link_hash_entry *blhe = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, FALSE); if (!blhe) - einfo (_("%P%X: %s: can't find IR symbol '%s'"), nbfd->filename, + einfo (_("%P%X: %s: can't find IR symbol '%s'\n"), nbfd->filename, name); else if (blhe->type != bfd_link_hash_defined) - einfo (_("%P%x: %s: bad IR symbol type %d"), name, blhe->type); + einfo (_("%P%x: %s: bad IR symbol type %d\n"), name, blhe->type); /* Replace it with new details. */ blhe->u.def.section = nsec; blhe->u.def.value = nval;