Date: Mon, 11 Sep 2006 09:36:16 +0200 From: Alexander Leidinger <Alexander@Leidinger.net> To: Intron is my alias on the Internet <mag@intron.ac> Cc: Marcin Cieslak <saper@SYSTEM.PL>, freebsd-emulation@freebsd.org, bsam@freebsd.org Subject: Re: /lib/ld-linux.so.2: cannot execute binary file: fix propsal Message-ID: <20060911093616.wnfgseoyogocgksw@webmail.leidinger.net> In-Reply-To: <courier.450504A4.00010E53@intron.ac> References: <45041321.6030003@SYSTEM.PL> <20060910181928.342eefaf@Magellan.Leidinger.net> <45045617.9010508@SYSTEM.PL> <courier.450504A4.00010E53@intron.ac>
next in thread | previous in thread | raw e-mail | index | archive | help
Quoting Intron is my alias on the Internet <mag@intron.ac> (from Mon, =20 11 Sep 2006 14:39:32 +0800): > Marcin Cieslak wrote: > >> Alexander Leidinger wrote: >> >>>> >>>> In general, I guess ELF shared libraries should be Linux branded as wel= l? >>> >>> 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 :) This was not a war. I did brand libs myself and had to revert it too. =20 It's a pitfall. >> 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= . >> >> --=20 >> << 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.s= o > > 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. Maybe we should only brand ld-linux.so.2 but no other libs. Maybe this =20 will work. Boris, we should play around with this and see if something =20 breaks. If not, we should commit this and close the corresponding PR =20 (linux ldd doesn't work). I don't know if I get time for this before =20 the WE. Bye, Alexander. --=20 HOLY MACRO! http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID =3D B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID =3D 72077137
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060911093616.wnfgseoyogocgksw>