This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] nptl: Remove vfork IFUNC-based forwarder from libpthread [BZ #20188]


* 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.

Oh.  I honestly didn't realize that it wasn't obvious.  Thanks for the
feedback.  Our users get this error (“/path/to/program:
/lib64/libc.so.6: version `GLIBC_2.14' not found (required by
/path/to/program)”) all the time when they try to run current binaries
on glibc 2.12 or glibc 2.17.

Florian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]