[comp.lang.lisp] latest AKCL patches for DG AViiON

newton@smoggy.gg.caltech.edu (Mike Newton) (08/31/90)

[note : please do _not_ ask me to mail these to you.... i have a thesis due
 soon... .  This software might be useful to other non-88k machines.  -- mike ]

[This latest version is much smaller than previous versions, but needs to
 have a correct C compiler.   In addition, the copyright notices have been
 made much more leniant]


These patches are a set of enhancements to AKCL (currently vsn 1.492), and
available as the files:

	csvax.cs.caltech.edu :: ~ftp/DG/New.AKCL.1.tar
	csvax.cs.caltech.edu :: ~ftp/DG/New.AKCL.2.diffs
	csvax.cs.caltech.edu :: ~ftp/DG/New.AKCL.3.diffs

The patches include the following features:

	The code is ported to the DG AViiON and probably most other 
	    88k machines.

	A number of portability problems have been fixed, including:
	    Strict ANSI C shifting
	    Proper 'varargs' in the MUST_COPY_VA_ARGS macro and elsewhere
	    MUCH better (but not perfect!) machine-independent sfasl.c code.

	Other small hacks.

	A file describing many porting hints.


To compile AKCL on the DG AViiON, and probably most other 88k machines, use
the 'aviion.{h,defs}' files.  These depend on 'gcc' which is available from
dg-rtp.dg.com in ~ftp/pub/gnu.

	You MUST use gcc-1.37.N where N >= 22    for this to work!!!

(earlier versions had hacks for various earlier versions of the compiler,
 many of which had problems.  gcc.1.35.22 or higher _may_ work.
 Note: if using gcc-1.35.23  compile gbc.c without  -O !!!
 Note: if using gcc-1.37.N (N>=2) && using 4.20 or before, use
		-mno-ocs-frame-position
 Note: gcc-1.37.6 (and possibly others) has a bug with strength-reduction.
)

	Note: do _NOT_ use DG's 'cprs' on kcl.  
	(cprs is broken even in 4.30)


In addition to 88k machines, the changes should be very useful on any
non-array type varargs machines.  It might even speed up other processors.

sfasl.c in particular has had many improvements to make it run on more COFF
machines.  I have yet to merge all the 1.492 changes into sfasl.c, so there
exists:
	c/D.478.sfasl.c -- the distributed sfasl.c in 1.478 (? & 483)
	c/m88k_sfasl.c  -- my sfasl.c, based on above, but more general
	c/D.492.sfasl.c -- 1.492 sfasl, which has some fixes similar to mine
			   and AIX support, but which is not as general.

PLEASE tell me of any bugs that you find!!!


Enjoy,
- mike newton
  newton@vlsi.caltech.edu

----------------------------------------------------------------
Building instructions:

1: get akcl from rascal.ics.utexas.edu::~ftp/pub (or cli.com::~ftp/pub/akcl).
	These patches are off of akcl-1-492, but work on other similar ones.

2: uncompress and untar it into the place you want it

3: uncompress, untar & load into the same directory the files in New.AKCL.1.tar
	( zcat New.AKCL.1.tar.Z | tar xvof - )

4: run 'add-defs aviion'

5: look at the file 'Smakefile'.  Run the commands up to and including
	'make -f Smakefile sources' in target 'all'.  Usually this will be:
		xbin/relink-files KCL-DIRECTORY -s
		make -f Smakefile merge
		make -f Smakefile sources

6: apply the patches from New.AKCL.2.diffs .  This OVERWRITES some of 
	the sources!!! :
	cat New.AKCL.2.diffs | patch -p0

7: move the right sfasl file into place :
	mv c/m88k_sfasl.c c/sfasl.c

8: [optional] If you want to use PCL, the speed hacks of Harris can be applied:
	cat New.ALCL.3.diffs | patch -p0

9: run 'make -f Smakefile'

10: there is a chance (depends on NFS, release, disks, phase of the moon...)
   that the very first (and only the first) execution of 'saved_kcl' will
   die.  This occurs when the first saved_kcl has been made and then Smakefile
   goes back and recompiles all of lsp/ and cmplsp/.  It shows up on the 
   compile of file arraylib.lsp.  To fix: just type "make -f Smakefile" 
   again.  The second time it works.....

11: enjoy.
----------------------------------------------------------------

Here are the changes/comments:

................New Files: 

h/aviion.README		-- comments to help 88k users (this file)
h/aviion.h		-- 
h/aviion.defs   	-- defs
c/mc88k_chtab.s		-- chtab
unixport/.gdbinit	-- useful for debugging with gdb
doc/porting.ii		-- useful comments for the next person
c/unixsave_dg.c		-- major surgery, cleaner IO, lnno mapping
c/rel_m88k.c		-- relocator for the 88k
c/{D.478,D.492,m88k_}sfasl.c -- versions of sfasl.c (see above)

................Old Files:


h/object.h		-- nasty bug in COERCE_VA_LIST when copying is needed

h/arith.h 		-- careful about shifts (ANSI compliance)

c/list.d		-- varargs fixes.  probably faster too.

c/alloc.c               -- hacks to avoid __malloc,  __free, __calloc
                        -- and __realloc by libc.a routines

c/sfasl.c		-- SIGNIFICANT portability improvements.

doc/contributors	-- self-gratification:

c/read.d		-- hack the code to skip to the load vector to run
			   correctly (.o file loading

./MACHINES		-- add in aviion


File list (new):
 h/aviion.h
 h/aviion.defs
 h/aviion.README
 c/mc88k_chtab.s
 c/unixsave_dg.c
 c/rel_m88k.c
 unixport/.gdbinit
 doc/porting.ii
 c/{D.478,D.492,m88k_}sfasl.c

File list (modified):
 ./MACHINES
 h/arith.h
 h/object.h
 c/list.d
 c/alloc.c
 c/sfasl.c
 c/read.d
 doc/contributors