21 April 1991 This is a copy of the file pub/gnu/gcc/altos/README.gcc; that directory contains bootstrap binaries for Altos 3068 gcc. Our Altoses have now been cannibalized, so I can't do much to help you if you're still using the beasts. However, the support for Altos 3068 still is in the mainstream gcc distribution, so a newer gcc should work. Just before the machines were cannibalized, I noticed that even with the kernel fix applied the coff encapsulated binaries won't always work (under heavy load at least) and also noticed that the Altos OS release we were running still supported (though it was not documented) older Unix (V7 ?) a.out format, which is almost the one BSD uses. So it's probably a better idea to use a modified a.out.gnu.h than coff encapsulation. Sorry, I don't have the details on the a.out format any more - but it might be that the binaries here are compiled with that format. See for yourself. //Jyrki Author: Jyrki Kuoppala (jkp@cs.hut.fi) Last modified: Sat Feb 11 21:42:25 1989 This is a description how I bootstrapped the GNU C compiler on Altos 3068 machines (Motorola 68020, SysVR2.2, Coff). Gcc is version 1.33 and gas and binutils the newest which were available at the time 1.33 was released. Gcc and friends on the Altos machines use the coff encapsulation stuff. They compile themselves well. I also have compiled many other programs with the gcc setup. Generally, gcc seems to work quite well. However, when compiling some programs with -O cc1 gets a fatal signal 6. I'll look into that later and send more accurate information; when the -O is omitted even these programs compile and work right. The Altos-provided C compiler has some nasty bugs in it which bite you quite often when compiling GNU programs. For example, && and || don't work right when used outside `if', `while' or `for' constructs; the whole expression is always evaluated. So, your safest bet is probably to make a cross-compiler environment in some other machine (a Sun will do fine, but others should, too) and compile gcc, gas and the GNU ld and binutils there, link the binaries and copy all the stuff to the Altos and recompile the whole stuff with itself. That's how I did it; only gnulib was compiled with Altos CC. The cross compiler environment consists of gcc and gas targeted for the m68k environment. I had some trouble with floating point instructions, so I compiled some of the files with sun cc; this is not necessary if gcc doesn't generate floating point instructions [ You should use -msoft-float with gcc; this does not produce floating point instructions]. Also, you need a version of the gnu linker which is patched to make things look right for the Altos kernel. You should also -D and -U the same things which Altos cc does; and don't forget to -U all the stuff gcc otherwise defines when it thinks the target machine is a sun or something. Copy the Altos include files to your development machine (use -I/some/weird/path -nostdinc) and compile and link the gcc, gas and binutils there. You need to copy the Altos libraries over and convert them to GNU format with libconvert / robotussin. I used -traditional -fwritable-strings just to be sure; after you recompile the stuff with itself you can change these. It seems you should, too, for gcc. If you don't have another machine to compile gcc on, the Altos binaries are available for anonymous ftp in host sauna.hut.fi (128.214.3.119) under the directory pub/gnu/altos. The changes that had to be made were quite small. Gas didn't need any; I made tm-altos3068.h and xm-altos3068.h for gcc and added altos to config.gcc. Binutils needed some hacking, namely ld.c required some major magic. The context diffs are available in the directory pub/gnu/altos in sauna.hut.fi. There are also some other diffs fro GNU utilities. I expect gdb to be at least partly working with Altos machines soon; also I don't think G++ should be much of a problem now. Now I have a version whhich reads COFF (well, not very well) and which isn't very useful for other than disassembling programs. Binutils diffs still has many many bugs I need to sort out; it is not `clean' yet. I'll send a more sensible version to the binutils mailing list whhen it's ready. As of now, I haven't looked at others than ld and robotussin very much. However, I'm sending out the stuff now because it gets gcc working. Please, tell me if ANYONE else out there still uses these machines. You know, I feel so lonely ;-).