home *** CD-ROM | disk | FTP | other *** search
- Xref: sparky comp.unix.bsd:5449 comp.unix.sysv386:14272
- Newsgroups: comp.unix.bsd,comp.unix.sysv386
- Path: sparky!uunet!usc!sol.ctr.columbia.edu!destroyer!fmsrl7!lynx!umn.edu!kksys.com!quest!digibd!dellr4.digibd.com!rhealey
- From: rhealey@dellr4.digibd.com (Rob Healey)
- Subject: Re: gcc as primary SVR4 port compiler
- Organization: DigiBoard Incorporated, Eden Prairie, MN
- Date: Wed, 09 Sep 1992 21:52:42 GMT
- Message-ID: <1992Sep09.215242.19348@digibd.com>
- References: <PHR.92Aug15214245@soda.berkeley.edu> <YSDIBS4@taronga.com> <PCG.92Aug27152230@aberdb.aber.ac.uk>
- Sender: @digibd.com
- Lines: 67
-
- In article <PCG.92Aug27152230@aberdb.aber.ac.uk>, pcg@aber.ac.uk (Piercarlo Grandi) writes:
- |> Kelly> It would be a strange to build SVR4 with gcc. Commodore probably
- |> Kelly> started out with a Motorola development system running SVR4, and
- |> Kelly> a big pile of sources. They would have then hacked and
- |> Kelly> cross-compiled a development environment that would run on the
- |> Kelly> Amiga 2500 and 3000.
- |>
- Since I'm an ex beta tester and have an Amiga 2.1 SVR4 system at
- home I can fill in a few holes.
-
- 1) AmigaUNIX is derived from the 3b2, yup you read that right,
- SVR4.0 source. The 2.x versions are 100% gcc 1.41 compiled
- minus some minor utils outside the kernel. gcc 1.40.1 was HEAVILY
- hacked to generate ELF/DWARF assembler output. Alot of work
- was adaptation of Ron Guillmette's(sp) m88k SVR4 gcc work.
- AmigaUNIX DID use the AT&T m68k version 5 compiler but only
- long enough to get a decent version of gcc functioning.
-
- 2) They had a functioning SVR3.2 port from which the SVR4 port
- was bootstrapped. Most of the Amiga specific code written for
- SVR3.2 was easily moved over to the SVR4 port. 2.1 AmigaUNIX
- has had all the kernel code, minus an ST506 hard drive driver,
- converted to SVR4 standards.
-
- 3) gcc 2.x can be used on AmigaUNIX but there are subtle differences
- in the 2.x vs 1.4x gcc code generation that cause them to
- not work when you mix and match, call stack frames are
- slightly different I think. As long as the whole app is
- compiled with the same compiler you should be OK. The system
- librarys seem to link OK with either version.
-
- 4) No Motorola specific SVR4 port was ever looked at, only the 3b2 code,
- although the headers agree, more or less, to the m68k source
- API. Since there were no other major SVR4 m68k ports at the
- time no real effort was made to strictly conform to the m68k
- ABI although it SHOULD pretty much work. The SVR3.2 compatability
- stuff was left out as there was no SVR3.2 that could run on
- the Amiga.
-
- Offhand I would say that with the ELF/DWARF support in gcc 2.x
- it SHOULD be possible to uses gcc as a primary compiler. There
- are two patch files for 2.2.2 which allow gcc to handle
- weak and pack pragmas on m68k SVR4 systems and to properly generate
- 16 and 32 bit pc relative code for dynamic librarys. The Intel
- SVR4 code looks like it can already do this.
-
- 5) The speed difference between AT&T m68k CGS compiled code and gcc
- 1.4 is AMAZING. Looking at the assembly output of gcc vs
- /usr/ccs/bin/cc reveals that the version 5 m68k AT&T compiler
- was written by somebody who SERIOUSLY lacked knowledge about the
- m68k architecture, it is DAMN UGLY m68k code and wastes ALOT of
- cycles for no good reason.
-
- gcc on the otherhand generates some VERY nice m68k code. If the
- Atari people did port SVR4 I sincerly hope they used gcc and not
- the AT&T compiler or their code will take a MAJOR performance hit...
- AmigaUNIX easily sped up by at least 2x switching from AT&T to
- gcc.
-
- Only the AT&T assembler is still in use on AmigaUNIX and BOY does it
- have some WEIRD quirks...
-
- Overall, I'd say gcc 2.x would make a decent compiler for
- SVR4 as long as your version has the support for pragmas,
- pc relative code and the GOT/PLT stuff.
-
- -Rob
-