[Buildroot] RTLD_DEEPBIND and uClibc

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Wed Jan 16 23:00:37 UTC 2013


Dear Stefan Fröberg,

On Wed, 16 Jan 2013 14:51:57 +0200, Stefan Fröberg wrote:

> Yesterday evening I managed to compile cairo-dock-core and
> cairo-dock-plugins
> version 3.1.2 for buildroot 2012.08.
> 
> It's a nice, lightweight (made with C), Mac OSX feeling application
> dock.
> 
> The problem is that cairo-dock-core has the following line in it's
> code:
> 
> pCairoDockModule->handle = dlopen (pCairoDockModule->cSoFilePath,
> RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND);
> 
> And uClibc does not have RTLD_DEEPBIND. Removing it will allow
> cairo-dock to compile but the result is
> that cairo-dock plugins won't work.

Strange, from a quick look, it seems that it is used to get a single
symbol, called "pre_init" from each plugin. I don't see how pre_init
may conflict with some other global symbol, which is what RTLD_DEEPBIND
is all about. But I've only done a 5 minutes look at cairo-dock code,
so I might have missed the point.

> Is there any workaround to this RTLD_DEEPBIND stuff ?

Since you're using a big stuff like X.org, why do you persist in using
uClibc? Using glibc or eglibc would make a very small size difference,
and would avoid the hassle of all those small, but annoying, uClibc
limitations.

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com


More information about the buildroot mailing list