[PATCH] make dlopen working when statically linked

Carmelo Amoroso carmelo73 at gmail.com
Sat Feb 10 18:00:48 UTC 2007


Carmelo Amoroso wrote:
> Hi All,
> I'd like to propose the attached patch that fix (at least partially)
> the dlopen issue in a statically linked application.
> 
> Follow a brief analysis:
> 
> The problem is that _dl_symbol_tables is never allocated in a statically
> linked app. So when dlopen calls _dl_load_shared_library[libdl.c:192]
> it passes a rpnt NULL. Following the call chain, when the 
> _dl_load_elf_shared_library check for the *rpnt value, being NULL,
> it doesn't allocate a new dyn_elf struct to be chained to the *rpnt.
> Furthermore the tpnt->symbol_scope will not be initialized, and this 
> will cause the _dl_fixup to fail.
> 
> I tested this patch on the uClibc-nptl branch (SH4 port); anyway this 
> piece of code is not related to TLS, being general.
> 
> With this patch I was able to successfully run the test/dlopen/dltest.c
> having same result of the glibc counterpart.
> 
> Still some issues are not solved (for example, the 'dlopened' function 
> call dlopen by itself), but I'm working on it.
> 
> Any comments are obviously welcome !
> 
> Best regards,
> Carmelo
> 

Sorry, I forgot to attach the patch.

Regards,
Carmelo
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: static_link_dlopen.patch
Url: http://lists.busybox.net/pipermail/uclibc/attachments/20070210/2fe8dac3/attachment.diff 


More information about the uClibc mailing list