This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: PATCH: Properly convert LTO plugin visibility to ELF visibility
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Alan Modra <amodra at gmail dot com>, Binutils <binutils at sourceware dot org>, GCC Development <gcc at gcc dot gnu dot org>
- Date: Sun, 5 Dec 2010 17:04:46 -0800
- Subject: Re: PATCH: Properly convert LTO plugin visibility to ELF visibility
On Sun, Dec 5, 2010 at 4:32 PM, Alan Modra <amodra@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.lu@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.lu@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;