[comp.os.minix] Unified MINIX GNU port -- a.out and fix

awb@ermine.ed.ac.uk (Alan W Black) (01/31/91)

In article <1991Jan29.234455.10126@jarvis.csri.toronto.edu>,
wayne@csri.toronto.edu (Wayne Hayes) writes:
# In article <43079@nigel.ee.udel.edu> HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu
(Christoph van Wuellen) writes:
# >My question, would it be tolerable to use the originial GNU a.out format
and
# >design a conversion program that converts GNU binaries to MINIX binaries
# 
# Sorry to disappoint you, but this has already been done.  I've forgotten
# where I got it, but I have gcc up and running on my Minix-386 box, and
# it produces a non-Minix a.out which is converted to Minix via a program
# called, oddly enough, 'gcc2minix'.  It works fine when you put a nice
# front end shell script onto it that calls gcc and then gcc2minix.
# 
# -- 
# "Dad, what should I be when I grow up?"
# "Honest." -- Robert M. Pirsig, _Zen and the Art of Motorcycle Maintenence_.
# 
# Wayne Hayes	INTERNET: wayne@csri.utoronto.ca	CompuServe: 72401,3525

gcc2minix is part of our (Richard Tobin and I) port of gcc.  The intention
was not to make changes to the GNU bin uitilities to make them convert 
the format to MINIX a.out format.

Since then we have gone further and modified mm/exec.c to read GNU a.out
format
files directly thus not requiring a separate convertion process.  This 
makes dumping for things like GNU emacs easier. and was a first step to make
gdb easier (we will post a version of this port soon, if anybody is desperate
to test gdb please drop me a line).

The GNU a.out format does not contain a memory size field (changed by chmem
in MINIX a.out files).  We have solved this by extending the GNU header
to include a new field.  A header is checked and if a secondary magic number
exists
the memsize is read from the new field, if no magic number exists then a
default
of 65k is taken.  This means the a simple gcc -o hw hw.c will produce an
executable (for small files) which makes using gcc for small programs used
in building larger ones possible without modify many places in a makefile.

This is for Minix 386 and not for the 68k gcc port.  the 68k stuff contains
relocation information which does make the conversion harder but I have 
exchanged mail with someone who is trying to do extend my changes so that
mm recognises 68k a.out format too.

Enclosed here are the patches to mm/exec.c and chmem.c as well as patches
for file.c though Andrew Martin's recent post of file.c include our file.c
changes.

Alan

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

-------
begin 644 gnutoo.tar.Z
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
DH'\N4 =K\/0Y']P ,  *P %(  N@ 3R "# !*L %R  ;8!8#
 
end

awb@ermine.ed.ac.uk (Alan W Black) (01/31/91)

# Enclosed here are the patches to mm/exec.c and chmem.c as well as patches
# for file.c though Andrew Martin's recent post of file.c include our file.c
                    ^^^^^^^^^^^^^
# changes.

Of course, I mean Andrew Michael (sorry Andy) who has also replied to this
issue, and much clearer than I did

Alan