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: Can the dynamic linker run with !rtld_multiple_ref?


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.


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