/lib/ld-linux.so.2: cannot execute binary file: fix propsal
Intron is my alias on the Internet
mag at intron.ac
Sun Sep 10 23:39:39 PDT 2006
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 at 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
More information about the freebsd-emulation
mailing list