amd64/119771: troubles w/ -m32 executables on both amd64 and i386

John Baldwin jhb at freebsd.org
Sat Jan 19 12:10:55 PST 2008


On Saturday 19 January 2008 01:50:02 pm A.Yu.Isupov wrote:
>  >It's not clear in your report, are you recompiling the program under
>  >i386, or copying the binary from FreeBSD/amd64 to the FreeBSD/i386
>  >system?
>  
>    Failed binary produced under FreeBSD/amd64 as static w/ -m32
>  and executed on FreeBSD/amd64 and (after copying :) on FreeBSD/i386 -
>  with the same faulty results.
>  
>  >If you build your program under FreeBSD/i386, does your program run
>  >without these problems on i386 and amd64?
>  
>    Yes, binary produced under FreeBSD/i386 as static have not a problem
>  during execution under both FreeBSD/i386 and FreeBSD/amd64.
>  
>    So I conclude, that problem possibly in FreeBSD/amd64's 32-bit
>  compatibility support, at least in syscall getrlimit().

That is incorrect.  If the binary you compile doesn't run under FreeBSD/i386
either, then it is obviously _not_ a compat32 bug since FreeBSD/i386 doesn't
have compat32.  You are probably having problems because all your
<machine/foo.h> headers are amd64 headers so you end up with various types
being 64-bit that should be 32-bit and incorrect structure sizes, etc.  This
is probably causing the corruption issues you are seeing.  You can compile
your apps either on a 32-bit box or create a 32-bit chroot on your 64-bit
box (just be sure to copy an i386 ld-elf.so.1 to ld-elf32.so.1 in your
chroot).

-- 
John Baldwin


More information about the freebsd-amd64 mailing list