[OE-core] [poky] Proposed Multilib Implementation Brainstorming

Hatle, Mark mark.hatle at windriver.com
Thu Apr 7 17:04:20 UTC 2011





On Apr 7, 2011, at 9:53 AM, "Colin Walters" <walters at verbum.org> wrote:

> On Thu, Apr 7, 2011 at 12:10 PM, Hatle, Mark <mark.hatle at windriver.com> wrote:
>> 
>> I think definition may be an issue here.  When I speak of multilibs I am talking primarily about multiliple non-conflicting, ABI incompatible libraries being installed at the same time.  This is the ELF 32 and ELF 64 case where the items can't be linked together, but can be installed and jrun on the same machine.
> 
> Right, that's "multilib".
> 
>> The alternative is the case on ARM where we have one single ABI but multiple ways to implement the code.. Thumb, neon, vfp, etc being options.  We want to do this as well, but while related, I see it as a diffent use case.
> 
> Isn't this already covered by glibc's support for
> /lib/$processor_feature?  On my Fedora 14 x86_64 system I have
> /lib/i686/nosegneg for example, and a simple "strace true" shows us
> trying to find a variant of libc that is built for TLS (and not
> finding it):
> 

The needs for the arm case include both executables and libraries.  The processor feature can be used, but that only covers the libraries themselves.  We want a mechanism to say that the whole system is built thumb2, except for a particular compilation modules, library and/or application.  (generally is done on a full recipe basis, and not on a single compilation module..)

The other issue on ARM embedded systems is that the processor feature approach typically makes the system larger, by providing both the lesser optimized and more completely optimized libraries....  I've had resistence to this approach from customer over that reason.  (mind you I'm in favor of making that easier to use in OE as well.)

> $ strace true
> execve("/bin/true", ["true"], [/* 54 vars */]) = 0
> brk(0)                                  = 0xe59000
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
> 0) = 0x7f54472b0000
> access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
> open("/src/build/jhbuild/lib64/tls/x86_64/libc.so.6", O_RDONLY) = -1
> ENOENT (No such file or directory)




More information about the Openembedded-core mailing list