This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] nptl: Remove vfork IFUNC-based forwarder from libpthread [BZ #20188]
- From: Florian Weimer <fweimer at redhat dot com>
- To: Zack Weinberg <zackw at panix dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Tue, 02 Jul 2019 17:06:48 +0200
- Subject: Re: [PATCH] nptl: Remove vfork IFUNC-based forwarder from libpthread [BZ #20188]
- References: <87r27dn4af.fsf@oldenburg2.str.redhat.com> <CAKCAbMjSgw6rTBYLcDAUsAjb_TKGNVGoSNGFfXCBvZ1DYeiB1A@mail.gmail.com> <87y31ljwkm.fsf@oldenburg2.str.redhat.com> <CAKCAbMgNb6-UrAfGW4bnmg9FLeYopWVtxC5PZfYkhnZG1zL9rw@mail.gmail.com>
* Zack Weinberg:
> On Fri, Jun 28, 2019 at 4:15 PM Florian Weimer <fweimer@redhat.com> wrote:
>
>> The dynamic linker performs a version coverage check for all Verneed
>> records at load time. This allows detection of potentially missing
>> symbols even when lazy binding is used. If we drop the GLIBC_2.1.2
>> symbol when it was there before, old binaries will fail to load.
>>
>> Our Versions file processing logic drops empty version clauses from the
>> generated version script (but the preprocessor macros are still
>> generated).
>>
>> If BFD ld sees a version script which has empty versions, very strange
>> things happen. It generates a shared object with Verdef records with
>> VER_FLG_WEAK. Linking against such objects causing BFD ld to produce
>> objects with Vernaux records with VER_FLG_WEAK flag. This I recall from
>> investigating this bug:
>>
>> <https://sourceware.org/bugzilla/show_bug.cgi?id=24718>
>>
>> I didn't fully explore the consequences of that.
>
> All right, then I'm going to say that this patch is OK provided you
> explain in the commit message that dropping the GLIBC_2.1.2 symbol
> will make old binaries fail to load. That seems like the most
> important reason.
I've pushed this now, after fixing bug 24757 which turned up late as a
blocker.
Thanks,
Florian