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 _at_ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild _at_ FreeBSD.org : PGP ID = 72077137Received on Wed Jan 10 2007 - 11:21:14 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:04 UTC