Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Sep 2006 14:39:32 +0800
From:      "Intron is my alias on the Internet" <mag@intron.ac>
To:        Marcin Cieslak <saper@SYSTEM.PL>
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: /lib/ld-linux.so.2: cannot execute binary file: fix propsal
Message-ID:  <courier.450504A4.00010E53@intron.ac>
In-Reply-To: <45045617.9010508@SYSTEM.PL>
References:  <45041321.6030003@SYSTEM.PL> <20060910181928.342eefaf@Magellan.Leidinger.net> <45045617.9010508@SYSTEM.PL>

next in thread | previous in thread | raw e-mail | index | archive | help
Marcin Cieslak wrote:

> Alexander Leidinger wrote:
> 
>>> 
>>> In general, I guess ELF shared libraries should be Linux branded as 
>>> well?
>> 
>> No, this will not work. You can't start apps which are linked to shared
>> libs anymore after this. The linux linker expects the to be branded
>> differently than what you propose here (been there done that months or
>> years ago).
> 
> This probably leads to commit/revert wars like http://42.pl/u/lAF :)
> 
> I have branded /compat/linux/lib/ld-2.3.6.so and it seems
> to work for me(tm).
> 
> It would be anyway interesting to know more about branding and its quirks.
> 
> -- 
>               << Marcin Cieslak // saper@system.pl >>

Please note that ld-2.3.3.so and ld-linux.so.2 point to a unique file:

-rwxr-xr-x  1 root  wheel    98176  4  1 00:52 ld-2.3.3.so
lrwxrwxrwx  1 root  wheel       11  4  1 00:53 ld-linux.so.2 -> ld-2.3.3.so

ld-linux.so.2 is loaded by FreeBSD kernel when a Linux ABI is executed.
At the same time, FreeBSD kernel can recognize various brand numbers:

#brandelf -l
known ELF types are: FreeBSD(9) Linux(3) Solaris(6) SVR4(0)

But this doesn't mean ld-linux.so.2 can recogize various brand numeric
indications of shared libraries other than ld-linux.so.2. If you mark
libc.so.6 with brand "3", you will get:

#/compat/linux/bin/ls 
/compat/linux/bin/ls: error while loading shared libraries: /lib/libc.so.6: ELF file OS ABI invalid

When you re-mark libc.so.6 with brand "0", it will work again:

#brandelf -f 0 libc.so.6 
#/compat/linux/bin/ls
... ...

This problem should be owed to ld-linux.so.2, the Linux dynamical linker,
not to FreeBSD kernel.

------------------------------------------------------------------------
                                                From Beijing, China




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?courier.450504A4.00010E53>