Date: Fri, 26 Nov 2004 11:17:02 -0800 From: Peter Wemm <peter@wemm.org> To: freebsd-amd64@freebsd.org Subject: Re: How to use older libs in 32bit mode? Message-ID: <200411261117.02622.peter@wemm.org> In-Reply-To: <20041126184559.GJ49800@manor.msen.com> References: <20041116052630.GD49800@manor.msen.com> <200411251242.33406.peter@wemm.org> <20041126184559.GJ49800@manor.msen.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 26 November 2004 10:46 am, Michael R. Wayne wrote: > On Thu, Nov 25, 2004 at 12:42:33PM -0800, Peter Wemm wrote: > > Things to check: > > > > * Make sure you have COMPAT_IA32 in your kernel config. For > > example, this command should work: > > > > peter@overcee[8:16pm]~/fbp4/hammer/sys/amd64/conf-120> sysctl > > kern.elf32 kern.elf32.fallback_brand: -1 > > (The important thing is that it prints something, not the value) > > Yes: > > sysctl kern.elf32 > > kern.elf32.fallback_brand: -1 > > > * Make sure you have NOT copied ld-elf or libc from an i386 system. > > You *MUST* build at least these two on your machine. How to check: > > > > peter@overcee[8:17pm]~-123> strings /libexec/ld-elf32.so.1 | grep > > libmap32 /etc/libmap32.conf > > If this comes up empty, you're in trouble. Check that > > /usr/libexec/ld-elf32.so.1 and /libexec/ld-elf.so.1 are the same > > file. > > So far OK: > > strings /libexec/ld-elf32.so.1 | grep libmap32 > > /etc/libmap32.conf > and > lrwxr-xr-x 1 root wheel 22 Nov 15 17:13 > /usr/libexec/ld-elf32.so.1@ -> /libexec/ld-elf32.so.1 > > > These will not be present on a 5.3-release system. > > Running 5.3-RELEASE so they are not present, as expected. > > > Oh wait a second. Did you build your libraries with > > WITH_LIB32=yes or by running build32.sh ? I have a suspicion > > that build32.sh will produce a bad library now. > > Aha. Yes, I built with build32.sh as it was the only way I found to > do it. If this is not correct, perhaps someone could put up a > quick "how-to" page and post a URL? > > It would also be useful to understand how to build a port for i386, > google was not helpful in determining how to do this. > > > BTW: it is helpful to do a ktrace/kdump and show the last few > > lines. I suspect there will be a sysarch syscall, followed by a > > SIGSEGV. > > You are correct: > 72509 hello CALL sysarch(0x1,0xffffd70c) > 72509 hello RET sysarch -1 errno 22 Invalid argument > 72509 hello PSIG SIGSEGV SIG_DFL > 72509 hello NAMI "hello.core" > > So, it looks like build32.sh is broken on 5.3-RELEASE. What now? Oh no! It means that FreeBSD/i386 binaries unconditionally use TLS (thread-local-storage) setup calls in early startup. That means we are hosed until a bunch of TLS support routines are merged from 6.0 to 5.3-stable. Unfortunately, there is nothing that you can do for now. :-( -- Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com "All of this is for nothing if we don't go to the stars" - JMS/B5
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200411261117.02622.peter>