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;

Reply via email to