Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Sep 2002 14:42:57 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Bakul Shah <bakul@bitblocks.com>
Cc:        Maxim Sobolev <sobomax@FreeBSD.ORG>, Richard Tobin <richard@cogsci.ed.ac.uk>, Juli Mallett <jmallett@FreeBSD.ORG>, Julian Elischer <julian@elischer.org>, <current@FreeBSD.ORG>
Subject:   Re: aout support broken in gcc3 
Message-ID:  <20020904142336.C9524-100000@gamplex.bde.org>
In-Reply-To: <200209032347.TAA25289@warspite.cnchost.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 3 Sep 2002, Bakul Shah wrote:

> > > > Where exactly does GCC fit into the mix, making this impossible?
> > >
> > > They compile Lisp (etc) to a C file, which they compile (with gcc) to
> > 								^^^
> > actually with as(1), because gcc is only generates assembler file,
> > which is then translated into the object file by assembler (as).
> > Assembler by itself is part of binutils, not a compiler suite.

Actually, it is part of old binutils, which is in FreeBSD's src tree but
hasn't been built by default for many years.  Therefore it doesn't even
compile (except in my version of course):

%%%
Script started on Wed Sep  4 14:26:54 2002
ttyp0:bde@besplex:/tmp> cvs -Q co as
ttyp0:bde@besplex:/tmp> cd as
ttyp0:bde@besplex:/tmp/as> make
Warning: Object directory not changed from original /tmp/as
updating targ-cpu.h...
updating obj-format.h...
updating host.h...
updating targ-env.h...
cc -O -pipe  -DNON_BROKEN_WORDS -DPIC -I/tmp/as -I/tmp/as -I/tmp/as/config  -DOLD_GAS -DSIGTY=void -Derror=as_fatal  -DSUB_SEGMENT_ALIGN=4 -DFREEBSD_AOUT    -c /tmp/as/config/tc-i386.c
In file included from /tmp/as/as.h:78,
                 from /tmp/as/config/tc-i386.c:31:
/usr/include/stdio.h:324: syntax error before '(' token
*** Error code 1

Stop in /tmp/as.
ttyp0:bde@besplex:/tmp/as> exit

Script done on Wed Sep  4 14:27:04 2002
%%%

This is because misimplemented compatibility cruft setbuffer() was finally
bitten by reality.

> I suspect Richard Tobin was using the generally accepted
> meaning for a "compiler" as one that translates a source
> program into object code (machine language).  In any case, it
> is cc1 that generates an assembly file.  gcc is just a driver
> program that calls various subprograms.

I suspect that he is also using old binaries for as and ld.  It
would be safer to use an old compiler driver with them too.

> Richard's main point with which I totally agree is that
> please do not take away the ability to generate and grok
> a.out files *if at all possible*.  A number of Lisp systems
> as well as Scheme one use ld -A & friends to do what he
> described.  In general, please do not break backward
> compatibility.

But must we support building new versions of the a.out utilities
and keep all the infrastructure (man pages and objformat...) up
to date?  We haven't been doing that properly since 3.0R.  Some
of te infrastructure is still built by default, but parts must be
built manually (as, ld, gdb ...) or old versions must be copied
from somewhere.  gdb is most problematic (if you need it) since
old gdb's don't work out with current kernels.  You have to check
out gdb-mumble from FreeBSD-mumble and recompile.

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?20020904142336.C9524-100000>