[PATCH] elf: Don't set VER_FLG_WEAK

Florian Weimer fweimer@redhat.com
Mon Jan 31 16:47:57 GMT 2022


* H. J. Lu:

> On Tue, Jan 25, 2022 at 7:07 PM Alan Modra <amodra@gmail.com> wrote:
>>
>> On Tue, Jan 25, 2022 at 04:19:53PM -0800, H.J. Lu via Binutils wrote:
>> > On Solaris, VER_FLG_WEAK indicates a weak version definition with no
>> > symbols associated with it.  It is used to verify the existence of a
>> > particular implementation without any symbol references to the weak
>> > version.  Don't set VER_FLG_WEAK since it is unused in binutils.
>>
>> Can you tell me why the presence of this flag is bad?  I don't see it
>> affecting anything in binutils or glibc.  VER_FLG_WEAK in version refs
>> does affect resolution of symbol, but I can't see how a VER_FLG_WEAK
>> in a version def can transfer over to a ref if the def is unused.
>
> Florian,  can you share the reason why Linux doesn't want
> VER_FLG_WEAK on the empty version?

I may have been overly cautious, influenced by the old link editor
behavior which copied the weak flag of dynamic symbols from the
definitions to their references.  But it's indeed unclear how this could
happen here.  If it did, we would lose the coverage check in the glibc
dynamic loader for that symbol version, I think.  (The loader only
checks vna_flags in two places, once for printing the flag, and once to
skip an error report in case of a missing version.)

Do you suggest we should start using weak symbol version definitions in
glibc, and not worry about it?

Thanks,
Florian



More information about the Binutils mailing list