Date: Mon, 2 Sep 2002 21:13:32 +1000 (EST) From: Bruce Evans <bde@zeta.org.au> To: Jake Burkholder <jake@locore.ca> Cc: current@FreeBSD.ORG Subject: Re: aout support broken in gcc3 Message-ID: <20020902205828.I3195-100000@gamplex.bde.org> In-Reply-To: <20020902040144.H67527@locore.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 2 Sep 2002, Jake Burkholder wrote: > Apparently, On Mon, Sep 02, 2002 at 02:24:08PM +1000, > Bruce Evans said words to the effect of; > > > 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 > > Which boot blocks? Oops, perhaps only mine. (I use my version of biosboot which is like pc98/boot2 except it supports loading elf kernels and some local things, and it hasn't been converted to elf at the source level.) When I wrote the above I thought that several standard boot blocks used OBJFORMAT=-aout. They actually just have a lot of ${OBJFORMAT} == aout ifdefs and elf2aout conversions. Most of aout support at the source level seems to have been broken some time ago by using new gas features in assembler code. > > 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. Wrong fixes for .quad are easy and are already done for some systems (e.g., OpenBSD) by #undefing ASM_QUAD. The following hack seems to fix shld (the breakage seems to be intentional): %%% Index: i386.md =================================================================== RCS file: /home/ncvs/src/contrib/gcc/config/i386/i386.md,v retrieving revision 1.12 diff -u -2 -r1.12 i386.md --- i386.md 1 Sep 2002 21:13:32 -0000 1.12 +++ i386.md 2 Sep 2002 05:51:30 -0000 @@ -10768,5 +10768,5 @@ "@ shld{l}\t{%2, %1, %0|%0, %1, %2} - shld{l}\t{%s2%1, %0|%0, %1, %2}" + shld{l}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") %%% I forgot to make the corresponding change for shrd. 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?20020902205828.I3195-100000>