Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Nov 2004 13:46:00 -0500
From:      "Michael R. Wayne" <amd64@wayne47.com>
To:        freebsd-amd64@freebsd.org
Subject:   Re: How to use older libs in 32bit mode?
Message-ID:  <20041126184559.GJ49800@manor.msen.com>
In-Reply-To: <200411251242.33406.peter@wemm.org>
References:  <20041116052630.GD49800@manor.msen.com> <20041124070652.GT49800@manor.msen.com> <80EAD071-3E8F-11D9-AF21-000D93AD5C52@hydrix.com> <200411251242.33406.peter@wemm.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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?

/\/\ \/\/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041126184559.GJ49800>