This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Can the dynamic linker run with !rtld_multiple_ref?
- From: Carlos O'Donell <carlos at redhat dot com>
- To: Florian Weimer <fweimer at redhat dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Mon, 26 Jun 2017 19:45:07 -0400
- Subject: Re: Can the dynamic linker run with !rtld_multiple_ref?
- Authentication-results: sourceware.org; auth=none
- References: <fd34f067-f9b2-f3aa-0415-8d180a0cc2dd@redhat.com> <20170317032144.GH24205@vapier> <6c18b31c-e603-979b-067e-8e05df6b282f@redhat.com>
On 06/25/2017 12:20 PM, Florian Weimer wrote:
> On 03/17/2017 04:21 AM, Mike Frysinger wrote:
>> On 24 Jan 2017 12:16, Florian Weimer wrote:
>>> It seems that libc.so.6 has a DT_NEEDED entry for the dynamic linker on
>>> all architectures because we need to dlopen objects even when not
>>> linking against libdl (for gconv and NSS). The startup code references
>>> __libc_start_main, which is defined in libc.so.6. Therefore, it seems
>>> that rtld_multiple_ref in rtld.c is always true.
>>>
>>> Is this correct? If yes, then we can clean this up a bit.
>>
>> looking at just purely symbol pov, these are provided by ld-linux but
>> used by libc.so:
>> _dl_argv
>> ___tls_get_addr
>> _rtld_global_ro
>> _rtld_global
>> __libc_enable_secure
>> __libc_stack_end
>
> Does this mean that you agree that rtld_multiple_ref is always true?
My understanding is that with modern glibc we always build libc.so.6
in such a way that we will always reference ld.so, and so rtld_multiple_ref
should always be true.
IIRC this was not always true for older glibc that I've worked on before,
and I've had to adjust old build infrastructure to fix such things.
--
Cheers,
Carlos.