Can the dynamic linker run with !rtld_multiple_ref?
Carlos O'Donell
carlos@redhat.com
Mon Jun 26 23:45:00 GMT 2017
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.
More information about the Libc-alpha
mailing list