broken linuxulator in -current as of Jan 8 17:51:45 CET
Alexander Leidinger
Alexander at Leidinger.net
Wed Jan 10 12:21:14 UTC 2007
Quoting Tijl Coosemans <tijl at ulyssis.org> (from Wed, 10 Jan 2007
11:51:48 +0100):
> On Wednesday 10 January 2007 07:53, Alexander Leidinger wrote:
>> That's not possible. The way the linuxulator works is:
>> - the linker in userland calls open("/foo/bar")
>> - kernel looks for "/compat/linux/foo/bar"
>> * it is there -> return it
>> * it is not there -> look for "/foo/bar"
>> + if it is there -> return it
>> + if it is not there -> return error
>> - the userland get's something which may be linux or FreeBSD stuff
>> - the linker read()s this
>> - the linker sees a wrong ELF ABI and bails out
>
> That means the linker tries to open /usr/lib/librt.so.1 instead of
> /lib/librt.so.1 which doesn't exist under /compat/linux. So I added a
> symlink there.
>
> ln -s ../../lib/librt-2.3.6.so /compat/linux/usr/lib/librt.so.1
>
> And now everything works.
>
> - the linker in userland calls open("/usr/lib/librt.so.1")
> - kernel looks for "/compat/linux/usr/lib/librt.so.1"
> * it is there -> return it
> - the linker read()s this
> - the linker sees a wrong linux kernel ABI (in case of 2.4.2)
> and calls open("/lib/obsolete/linuxthreads/librt.so.1")
>
> % ldd /compat/linux/bin/ls
> /compat/linux/bin/ls:
> librt.so.1 => /lib/obsolete/linuxthreads/librt.so.1 (0x4807c000)
>
> I think this is an easier solution than changing the runtime linker.
Does it still work with 2.6.16 (can't test ATM)? If yes: I agree, it
is more easy and we can change this in the linux base port very fast
(I have some other changes
(http://www.leidinger.net/FreeBSD/port-patches/emulators:linux_base-fc4.diff)
for which I wait for an important reason to commit them to the linux
base port).
Bye,
Alexander.
--
And you can't get any Watney's Red Barrel,
because the bars close every time you're thirsty...
http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
More information about the freebsd-current
mailing list