Date: Mon, 2 Sep 2002 14:24:08 +1000 (EST) From: Bruce Evans <bde@zeta.org.au> To: current@freebsd.org Subject: aout support broken in gcc3 Message-ID: <20020902141223.Y2138-100000@gamplex.bde.org>
next in thread | raw e-mail | index | archive | help
aout support is still required for a few things (mainly for compiling some boot blocks), but is broken in gcc3 for at least compile-time assignments to long longs and shifts of long longs by a non-constant amount: %%% $ cat z.c long long x = 0; int y; foo() { x = x << y; } $ cc -O -S -aout z.c $ cat z.s .file "z.c" .globl _x .data .p2align 3 .type _x,@object .size _x,8 _x: .quad 0 .text .p2align 2,0x90 .globl _foo .type _foo,@function _foo: pushl %ebp movl %esp, %ebp movb _y, %cl movl _x, %eax movl _x+4, %edx shldl %eax, %edx sall %cl, %eax testl $32, %ecx je L2 movl %eax, %edx movl $0, %eax L2: movl %eax, _x movl %edx, _x+4 leave ret Lfe1: .size _foo,Lfe1-_foo .comm _y,4 .ident "GCC: (GNU) 3.1 [FreeBSD] 20020509 (prerelease)" %%% The above assembler output has two syntax errors: - ".quad 0". .quad is not supported by the old aout assembler. - "shldl %eax, %edx". The old aout assembler only accepts the correct syntax of "shldl %cl,%eax,%edx". Note that gcc doesn't elide the similarly implicit %cl register for the sall instruction. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020902141223.Y2138-100000>