amd64 compiler toolchain question

Andrew Atrens atrens at nortelnetworks.com
Thu Nov 18 10:10:45 PST 2004


Just trying a -

$ make buildworld TARGET_ARCH=amd64 NO_GDB=1


Not sure how far that will get me. I'm assuming I'll get a compiler and
binutils.

I suppose that means I'm getting the basic shared libraries too.

Curious about rtld and friends, and how that will work. Assuming it does
work (big assumption), in theory, will I be able to run 32bit apps as well as 64bit apps, or will everything need to be recompiled ?

Haven't thought about the kernel, yet. Looks like there is one support
file there, and I can cobble a few from FreeBSD-5 ...

Oops. Breakage -


cc -O -pipe  -I/usr/obj/usr/dfly/devel/src/world_amd64/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bin/cc34/cc_tools/../cc_prep -I/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bin/cc34/cc_tools/../cc_prep -I/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bin/cc34/cc_tools/../../../../contrib/gcc-3.4/gcc -I/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bin/cc34/cc_tools/../../../../contrib/gcc-3.4/gcc/config -I/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bi
n/cc34/cc_tools/../../../../contrib/gcc-3.4/include -DIN_GCC -DHAVE_CONFIG_H -DPREFIX=\"/usr\" -DPREFIX1=\"/usr\" -DPREFIX2=\"/usr\" -DSTACK_PROTECTOR -I. -fexceptions -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -DHAVE_GTHR_DEFAULT -DIN_GCC -I/usr/obj/usr/dfly/devel/src/world_amd64/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bin/cc34/cc_tools/../cc_prep -I/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bin/cc34/cc_tools/../cc_prep -I/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr
.bin/cc34/cc_tools/../../../../contrib/gcc-3.4/gcc -I/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bin/cc34/cc_tools/../../../../contrib/gcc-3.4/gcc/config -I/usr/dfly/devel/src/gnu/lib/gcc34/libgcc/../../../usr.bin/cc34/cc_tools/../../../../contrib/gcc-3.4/include -DIN_GCC -DHAVE_CONFIG_H -DPREFIX=\"/usr\" -DPREFIX1=\"/usr\" -DPREFIX2=\"/usr\" -DSTACK_PROTECTOR  -c __gcc_bcmp.c -o __gcc_bcmp.o
{standard input}: Assembler messages:
{standard input}:7: Error: suffix or operands invalid for `push'
{standard input}:11: Error: suffix or operands invalid for `push'
{standard input}:13: Error: suffix or operands invalid for `push'
{standard input}:17: Error: `8(%ebp)' is not a valid 64 bit base/index expression
{standard input}:18: Error: `12(%ebp)' is not a valid 64 bit base/index expression
{standard input}:19: Error: `16(%ebp)' is not a valid 64 bit base/index expression
{standard input}:20: Error: `20(%ebp)' is not a valid 64 bit base/index expression
{standard input}:26: Error: `(%esi)' is not a valid 64 bit base/index expression
{standard input}:27: Error: `-9(%ebp)' is not a valid 64 bit base/index expression
{standard input}:29: Error: `(%ebx)' is not a valid 64 bit base/index expression
{standard input}:31: Error: `-9(%ebp)' is not a valid 64 bit base/index expression
{standard input}:33: Error: `-9(%ebp)' is not a valid 64 bit base/index expression
{standard input}:49: Error: suffix or operands invalid for `pop'
{standard input}:50: Error: suffix or operands invalid for `pop'
*** Error code 1


Looks like binutils214 got upgraded, but the compiler is still producing 32bit instructions.
I guess binutils can't handle both ?

Hmm.

Andrew.







More information about the Kernel mailing list