[comp.os.minix] GCC and GNUEMACS for MINIX-386

awb@aipna.ed.ac.uk (Alan W Black) (11/13/90)

         Announcing gcc 1.37.1 and Gnu emacs 18.55 
                  for MINIX 1.5.10 386
                    for beta testing

      [to UK people this has been updated to use gas-1.37
       and Earl's estdio2.1]

After some time of playing with the source we think it is in a 
state suitable for other people to use.  Our distribution includes
binaries for

    gcc (gcc gcc-ld gcc-cc1 gcc-cpp)     1.37.1
    gas (gcc-as)                         1.37
    make                                 3.57
    utilities, ar nm size
    libraries - libc.a (minix) libm.a (pml) gnulib
    gcc include files
    GNUemacs  18.55, (including sub-processes and dumping)
    Patches to recompile all the above

You will need the following to run the binaries:

    MINIX 1.5.10
    Bruce Evans' 386 Patches
    A 386 with at least 4M of memory (emacs alone should work in 2M)
    A 2-line patch to klib386.x (included)

If you want to recompile you will also need the following sources

    gcc.1.37.1.tar.Z
    gas1.37.tar.Z
    estdio21.tar.Z
    emacs-18.55.tar.Z
    make-3.57.tar.Z
    pml.tar.Z    

These are not included in this distribution but are available from a
number of different archives.  GNU software is available by anonymous
ftp from a number of sites including prep.ai.mit.edu (18.71.0.38 in
u2/emacs).  estdio is available from plains.nodak.edu (134.129.111.64
in pub/Minix/oz) and sirius.ucs.adelaide (129.127.40.3 in
pub/minix/local). And pml is available from the atari archive
(formerly terminator) atari.archive.umich.edu (141.211.164.8 in
atari/gnustuff/minix).  Please only use ftp sites during off-peak hours.

It is interesting to note that gcc and gas effectively require
no patches at all to compile under MINIX.  Gas requires a change to 
the make file while the gcc diffs simply include a modified config file
for the 386.  Our problem was bootstraping the first copy of gcc.

Availability
------------

The following files are available on plains.nodak.ed (134.129.111.64
in pub/Minix/uk).  Also they are available for anonymous hhcp over
JANET the uk X25 network contact me (awb@ed.ac.uk) for more details.
Note the dates etc may by different on archive machines.

-rwxr-xr-x  1 awb         17676 Oct 30 10:07 16bcompress
-rw-r--r--  1 awb          2906 Nov 10 15:51 README
-rw-r--r--  1 awb         98089 Oct 28 17:22 binutils.tar.Z
-rw-r--r--  1 awb        477002 Nov 10 16:28 emacs.tar.Z
-rw-r--r--  1 awb         23183 Nov 10 16:29 emacsdif.tar.Z
-rw-r--r--  1 awb          1803 Nov 10 16:30 gasdiff.tar.Z
-rw-r--r--  1 awb           407 Oct 30 10:17 gcc.test
-rw-r--r--  1 awb        628027 Nov 10 16:31 gccbin.tar.Z
-rw-r--r--  1 awb         17806 Nov 10 16:34 gccdiff.tar.Z
-rw-r--r--  1 awb         16915 Oct 28 17:26 gccinc.tar.Z
-rw-r--r--  1 awb         80923 Nov 10 14:05 gcclib.tar.Z
-rw-r--r--  1 awb         39305 Nov 10 16:35 libdiff.tar.Z
-rw-r--r--  1 awb          6590 Oct 30 10:08 makediff.tar.Z
-rw-r--r--  1 awb          3578 Nov 10 14:08 pmldiff.tar.Z

These are compressed (16bit) tar files.  The binary 16bcompress
is a 16 bit compress for MINIX-386, if you are still using
a 13 bit compress.

Comment about gcc implementation
--------------------------------

The a.out format produced by gcc is not understood by MINIX and so has
to be converted using the program gcc2minix (which is provided) It was
considered that ld could do this conversion but that would require
fairly major changes to ld and would stop other programs like size,
nm, dumping and undumping from working so we decided on a special
conversion program.  Ideally we should modify the MINIX kernel to
recognised gcc a.out format.

Floating point is done in an interesting though inefficient way.  The
loader adds a floating point signal handler to the output file so that
when floating point instructions occur the signal is caught and that
instruction is decoded in software.  This is inefficient but without a
gcc machine description that does not depend on a 387 it is unclear
what to do.  Note that when soft-float is used (as it is by default)
very few 387 instructions are actually generated.  This method of fp
does require a minor change to you kernel to note that there is no 387
processor.

                      ---------

Much of this code is copywritten.  Please read the the appropriate
copyright messages.  It however the case that all the copyright's
allow these files to be copied with few restrictions.  The GNU
licence is probably the strictest.  Basically you can copy these
files and give them to whoever you want, but you can't restrict
them from passing the files on to others.

No guarantee is given with these patches, but I hope
you find them useful.  If you find any bugs please let
us know but we don't guarantee we'll have the time to
fix them.  

I call this release beta test as I have not yet had many 
confirmations that it works yet.  If you use this I would be
grateful to know how you got on and any comments on it.

Thanks go to:
     Richard Stallman and FSF for the GNU software
     Andy Tanenbaum for MINIX
     Bruce Evans for his 386 patches
     Earl Chew for estdio
     Fred Fish for pml
     Richard Tobin for doing the difficult bits
     Dept of AI and AIAI, University of Edinburgh for
       providing machines used in bootstraping this software.
     Glen Overby at North Dakota for disk space.
     And others that I have forgotten about -- sorry


Alan W Black   awb@ed.ac.uk
Richard Tobin  richard@aiai.ed.ac.uk
Oct 1990

--------------------------------------------------------------------------
Alan W Black                          80 South Bridge, Edinburgh, UK
Dept of Artificial Intelligence       tel: (+44) -31 225 7774 x228 or x223
University of Edinburgh               email: awb@ed.ac.uk

duncan@spectre.vlsi.sgi.com (Donald Duncan) (11/30/90)

In article <3469@aipna.ed.ac.uk>, awb@aipna.ed.ac.uk (Alan W Black) writes:
> 
>          Announcing gcc 1.37.1 and Gnu emacs 18.55 
>                   for MINIX 1.5.10 386
>                     for beta testing
>...

Thank you very much!  Merry Christmas to you too!  This was one of the last
missing pieces of the puzzle.

>...
> It is interesting to note that gcc and gas effectively require
> no patches at all to compile under MINIX.  Gas requires a change to 
> the make file while the gcc diffs simply include a modified config file
> for the 386.  Our problem was bootstraping the first copy of gcc.

No kidding.  I pulled most of my remaining hair out trying to get gcc
bootstrapped.  I set it aside about two months ago when classes resumed.

I installed the bin, lib, and include files (late) last night.  So far I
have found one error in your instructions.  In gcclib/README you say:

>	    Libraries for gcc minix implementation
>
>	    These libraries should go in the following places
>
>	       cp libc.a /usr/lib/libc.a
>	       cp libm.a /usr/lib/libm.a
>	       cp gnulib /usr/local/lib/gcc/gnulib
>	       cp crt0.o /usr/local/lib/gcc/gnulib


The last line should read:


>	       cp crt0.o /usr/local/lib/gcc/crt0.o

The only substantial things I have compiled so far are bison and flex.
Flex had minor problems in the prototype declaration for unlink (trivial
fix) and bison compiled and loaded on the first attempt.  I did have to
modify the Makefiles to search /usr/local/lib/gcc/gcc-include before
/usr/include.  This may be due to the particular installation state that
I have - I'm not certain yet.

I'm having difficulties with the floating point library but I'm sure it
is a case of operator error.  If it isn't I'll post bugs/fixes.

Again, Many Thanks to all involved.




duncan@sgi.com (Donald Duncan)

paradis@crater.zk3.dec.com (Jim Paradis) (11/30/90)

In article <3469@aipna.ed.ac.uk>, awb@aipna.ed.ac.uk (Alan W Black) writes:
>> 
>>          Announcing gcc 1.37.1 and Gnu emacs 18.55 
>>                   for MINIX 1.5.10 386
>>                     for beta testing

I just brought ftp'ed this gcc and brought it up on my machine running
MINIX 1.5/386, and it seems to work like a champ!  My only question is:
is is possible to get this thing to generate 8088-only code?  Otherwise,
recompiling the MINIX kernel is going to be impossible for me (there are
a few modules that have to be compiled this way because they run in real
mode...)

Thanks!

Jim Paradis, working at but not employed by DEC.	(603)881-1221
paradis@decvax.dec.com     			"All I got was a rock!"