tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: __strong_alias



On Thu, Feb 14, 2013 at 02:59:25AM +0100, Emmanuel Dreyfus wrote:
> Joerg Sonnenberger <joerg%britannica.bec.de@localhost> wrote:
> 
> > > If you specify RTLD_GLOBAL to dlopen(), then call via a PLT that
> > > has not yet been initialised (because RTLD_LAZY was in effect
> > > when the code making the call was loaded), then the function
> > > in the library might get executed.
> > 
> > Don't forget other shared objects that are opened later.
> 
> I get the same result without dlopen. In the example I posted, if I link
> test with libtest (cc -o test -L. -R. -ltest test.c) I get the same
> result: mail_foo is always called, and never libtest_foo
> 
> I thought __strong_alias() were used to override __weak_alias(). Either
> it is not the way it works, or I have a missing bit in this test case.

Your test case makes sure that foo() is resolved the first time it is
called. Effectively, you have disabled RTLD_LAZY that way.

Joerg


Home | Main Index | Thread Index | Old Index