How to use older libs in 32bit mode?

Jean-Yves Avenard jean-yves.avenard at hydrix.com
Thu Nov 25 14:57:22 PST 2004


Hello Peter.

I have checked several times the mail list and each time I pass those 
*tests*

On 26/11/2004, at 7:42 AM, Peter Wemm wrote:
> Things to check:
>
> * Make sure you have COMPAT_IA32 in your kernel config.  For example,
> this command should work:
>
It is

> peter at 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)
>

server3# 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 at overcee[8:17pm]~-123> strings /libexec/ld-elf32.so.1 | grep 
> libmap32
> /etc/libmap32.conf

server3# 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.
>
Hum.. They aren't
server3# ls -l
total 504
-r-xr-xr-x  1 root  wheel  173248 Nov  5 13:42 ld-elf.so.1
-r-xr-xr-x  1 root  wheel  151620 Nov 26 04:02 ld-elf32.so.1

somebody sent me a copy on a system that did work and they didn't have 
the same ld-elf files either

> If you are running 5.3-stable and not 5.3-release, you can check libc
> like this:
>
> peter at overcee[8:18pm]~-125> objdump --dynamic-syms 
> /usr/lib32/libc.so.5 | grep fsbase
> 00026500 g    DF .text  0000002b _amd64_set_fsbase
> 00026580 g    DF .text  0000004a _amd64_get_fsbase
>

server3# objdump --dynamic-syms /usr/lib32/libc.so.5 | grep fsbase
server3#

Hum. Now that's weird. I'm not using 5.3-release anymore but STABLE.
This is an extract of the cvsup file i'm using:
*default host=cvsup.au.freebsd.org
*default base=/usr
*default prefix=/usr
# The following line is for 4-stable.  If you want 3-stable or 
2.2-stable,
# change "RELENG_4" to "RELENG_3" or "RELENG_2_2" respectively.
*default release=cvs tag=RELENG_5

I did a make update last night and recompiled both KERNEL and WORLD

> These will not be present on a 5.3-release system.
>
> 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.
>
I did with both. Same result.
First I did a makebuildworld make installworld , tried the simple Hello 
World program compiled on a FreeBSD 5.3-release i386 machine: core dump

Then i deleted the /lib32 and /usr/lib32 and ran the build32.sh 
scripts. Same result: core dump


> 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.

If you could give me more details on how to do this it would be great.

Thank you for your time and help here

Jean-Yves

---
Jean-Yves Avenard
Hydrix Pty Ltd - Embedding the net
www.hydrix.com | fax +61 3 9572 2686 | phone +61 3 9572 0686 ext 100
VoIP: direct: 100 at voip.hydrix.com, general: info at voip.hydrix.com



More information about the freebsd-amd64 mailing list