ld: linking to GNU_UNIQUE symbol does not set ELFOSABI_GNU

Florian Weimer fweimer@redhat.com
Fri Jan 25 15:02:00 GMT 2013
On 01/24/2013 02:28 PM, Alan Modra wrote:
> On Thu, Jan 24, 2013 at 12:31:37PM +0100, Florian Weimer wrote:
>> I think this might be the appropriate fix:
>>
>>    if (((abfd->flags & DYNAMIC) == 0
>>          && (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
>>        || ELF_ST_BIND (sym->st_info) == STB_GNU_UNIQUE))
>>      elf_tdata (info->output_bfd)->has_gnu_symbols = TRUE;
>
> This would mark a binary that merely linked against a shared library
> having gnu_unique symbols.  The binary would not even have to
> reference such symbols.

Oh, that would be wrong indeed.

> I'm not sure your premise is correct anyway.  STB_GNU_UNIQUE seems to
> be relevant to the definition of a symbol, not a reference.  Which
> leads me to think that ld probably should not give undefined symbols
> an STB_GNU_UNIQUE binding.

Sorry, I have no idea how to implement that.  Should I file a bug so 
that this issue isn't lost?

-- 
Florian Weimer / Red Hat Product Security Team



More information about the Binutils mailing list