[prev in list] [next in list] [prev in thread] [next in thread] 

List:       glibc-alpha
Subject:    Re: [RFC] Prevent tailcall optimizations of libdl functions
From:       Florian Weimer <fweimer () redhat ! com>
Date:       2017-01-26 13:34:10
Message-ID: c2f11565-e398-46ef-88ed-fe5e8f75b76e () redhat ! com
[Download RAW message or body]

On 01/26/2017 02:09 PM, Szabolcs Nagy wrote:
> On 26/01/17 12:43, Florian Weimer wrote:
> > On 01/26/2017 01:35 PM, Szabolcs Nagy wrote:
> > > On 26/01/17 12:15, Florian Weimer wrote:
> > > > Maybe we should just change the definition of RTLD_DEFAULT and RTLD_NEXT, to \
> > > > something like this: 
> > > > #define RTLD_DEFAULT ((void *) ((unsigned long) &__dso_handle | 1)))
> > > > #define RTLD_NEXT ((void *) ((unsigned long) &__dso_handle | 3)))
> > > 
> > > i think these should be constants that can be
> > > copied and passed around between modules.
> > 
> > Why?  The effect of these identifies is very much module-specific, and the \
> > definition would make this explicit. 
> > What do other libcs do here?  Bionic and FreeBSD use magic constants just like \
> > current glibc.
> 
> because ppl do wrappers like
> http://git.haskell.org/packages/unix.git/blob/HEAD:/cbits/HsUnix.c#l12
> which sit in one module and may get called from another one.

But the same thing would happen with dlsym: The caller would be 
identified as the wrapper, not the actual module calling dlsym.

Thanks,
Florian


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic