On Wed, 5 Aug 2009, Josh Hursey wrote:
> On Aug 5, 2009, at 11:35 AM, Brian W. Barrett wrote:
>> Josh -
>> Just in case it wasn't clear -- if you're only looking for a symbol in the
>> executable (which you know is there), you do *NOT* have to dlopen() the
>> executable first (you do with libtool to support the "i don't have dynamic
>> library support" mode of operatoin). You only have to dlsym() with
>> RTLD_DEFAULT, as the symbol is already in the process space.
> So is it wrong to dlopen() before dlsym()? The patch I just committed in
> r21766 does this, since I was following the man page for dlopen() to make
> sure I was using it correctly.
I don't know that it's "wrong", it's just not necessary. I believe that:
handle = dlopen(NULL, RTLD_LOCAL|RTLD_LAZY);
sym = dlsym(handle, "foo");
sym = dlsym(RTLD_DEFAULT, "foo");
are functionally equivalent, but the second one means no handle to pass