diff --git a/Makefile b/Makefile
index d9280eb..8720afb 100644
--- a/Makefile
+++ b/Makefile
@@ -52,11 +52,12 @@ BYE:=bye
 #GCLVERSION=gcl-2.6.8pre
 #GCLVERSION=gcl-2.6.8pre2
 #GCLVERSION=gcl-2.6.8pre3 
-GCLVERSION=gcl-2.6.8pre4
+#GCLVERSION=gcl-2.6.8pre4
+GCLVERSION=gcl-2.6.8pre7
 GCLDIR:=${LSP}/${GCLVERSION}
-GCLOPTS="--enable-vssize=65536*2 --enable-locbfd --disable-dynsysbfd \
+GCLOPTS="--enable-vssize=65536*2 --disable-locbfd --disable-dynsysbfd \
          --disable-statsysbfd --enable-maxpage=512*1024 --disable-xgcl \
-         --disable-tkconfig"
+         --disable-tkconfig --enable-custreloc --disable-tkconfig 
 LISP:=lsp
 
 ##### C related variables
diff --git a/Makefile.pamphlet b/Makefile.pamphlet
index 00dd9ba..466e01d 100644
--- a/Makefile.pamphlet
+++ b/Makefile.pamphlet
@@ -901,7 +901,8 @@ forget to erase the lsp/Makefile the wrong patches will be applied.
 #GCLVERSION=gcl-2.6.8pre
 #GCLVERSION=gcl-2.6.8pre2
 #GCLVERSION=gcl-2.6.8pre3 
-GCLVERSION=gcl-2.6.8pre4
+#GCLVERSION=gcl-2.6.8pre4
+GCLVERSION=gcl-2.6.8pre7
 @
 
 \subsubsection{The [[GCLOPTS]] configure variable}
@@ -927,6 +928,12 @@ GCLOPTS="--enable-vssize=65536*2 --enable-locbfd --disable-dynsysbfd \
          --disable-statsysbfd --enable-maxpage=512*1024 --disable-xgcl \
          --disable-tkconfig"
 @
+For the gcl-2.6.8pre7 version we move to using the custreloc option.
+<<GCLOPTS-CUSTRELOC>>=
+GCLOPTS="--enable-vssize=65536*2 --disable-locbfd --disable-dynsysbfd \
+         --disable-statsysbfd --enable-maxpage=512*1024 --disable-xgcl \
+         --disable-tkconfig --enable-custreloc --disable-tkconfig"
+@
 For the MACOSX port we need the following options. The ``--disable-nls'' means 
 that we will not be supporting natural language internationalization.
 The ``--enable-maxpage'' has been eliminated because it causes build failures.
@@ -934,7 +941,7 @@ The ``--enable-machine'' parameter appears to be used by configure from the
 setting of the ``canonical'' variable, which is in turn set by a shell script.
 We need to add ``--enable-locbfd'' and ``--disable-dlopen'' due to the error
 ``unexec: not enough room for load commands for new \_\_DATA segments''.
-<<GCLOPTS-CUSTRELOC>>=
+<<GCLOPTS-MACPORT>>=
 GCLOPTS="--enable-vssize=65536*2 --disable-nls  --disable-locbfd \
          --disable-statsysbfd  --enable-custreloc --disable-tkconfig \
          --enable-machine=powerpc-macosx --disable-xgcl --disable-dlopen"
@@ -1178,6 +1185,7 @@ all: rootdirs noweb srcsetup lspdir srcdir
 <<Makefile.ubuntu>>=
 
 <<ENVDEFAULTS>>
+<<GCLOPTS-CUSTRELOC>>
 <<ENV>>
 
 all: rootdirs noweb srcsetup lspdir srcdir
@@ -1248,7 +1256,7 @@ all: rootdirs noweb srcsetup lspdir srcdir
 <<ENVDEFAULTS>>
 PLF=MACOSXplatform
 CCF="-O2 -fno-strength-reduce -Wall -D_GNU_SOURCE -D${PLF} -I/usr/X11/include"
-<<GCLOPTS-CUSTRELOC>>
+<<GCLOPTS-MACPORT>>
 <<ENV>>
 
 
@@ -1448,7 +1456,7 @@ AWK=awk
 PLF=MACOSXplatform
 CCF="-O2 -fno-strength-reduce -Wall -D_GNU_SOURCE -D${PLF} \
      -I/usr/X11/include -I/usr/include -I/usr/include/sys"
-<<GCLOPTS-CUSTRELOC>>
+<<GCLOPTS-MACPORT>>
 <<ENV>>
 
 all: rootdirs noweb srcsetup lspdir srcdir
diff --git a/changelog b/changelog
index 64bea36..71ae4f5 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,12 @@
+20120407 tpd src/axiom-website/patches.html 20120407.01.c1m.patch
+20120407 tpd lsp/Makefile.pamphlet move to GCL Version gcl-2.6.8pre7
+20120407 tpd Makefile.pamphlet move to GCL Version gcl-2.6.8pre7
+20120407 tpd Makefile move to GCL Version gcl-2.6.8pre7
+20120407 tpd zips/gcl-2.6.8pre7.h.linux.defs.patch port to pre7
+20120407 tpd zips/gcl-2.6.8pre7.o.read.d.patch port to pre7
+20120407 tpd zips/gcl-2.6.8pre7.unixport.init_gcl.lsp.in.patch port to pre7
+20120407 tpd zips/gcl-2.6.8pre7.unixport.makefile.patch port patch to pre7
+20120407 c1m zips/gcl-2.6.8pre7.tgz lisp fixes from Camm Maquire
 20120402 tpd src/axiom-website/patches.html 20120402.04.tpd.patch
 20120402 tpd src/axiom-website/download.html add debian binary
 20120402 tpd src/axiom-website/patches.html 20120402.03.tpd.patch
diff --git a/lsp/Makefile.pamphlet b/lsp/Makefile.pamphlet
index 7eaf543..ad6d615 100644
--- a/lsp/Makefile.pamphlet
+++ b/lsp/Makefile.pamphlet
@@ -225,6 +225,16 @@ but, since no initialization is needed, we simply create empty files.
 	  touch ${OBJ}/${SYS}/lib/cfuns-c.ini ; \
 	  touch ${OBJ}/${SYS}/lib/sockio-c.ini )
 @
+As of this version we no longer use the EXTRAS variable.
+This has been changed to use the SYSTEM\_OBJS variable, per Camm (Apr 6,2012)
+<<gcl-2.6.8pre7.h.linux.defs.patch>>=
+	@(cd ${GCLVERSION}/h ; \
+	  echo 3 applying EXTRAS patch to h/linux.defs ; \
+	  ${PATCH} <${SPD}/zips/${GCLVERSION}.h.linux.defs.patch )
+	@(echo 4 setup ini files for EXTRAS patch ; \
+	  touch ${OBJ}/${SYS}/lib/cfuns-c.ini ; \
+	  touch ${OBJ}/${SYS}/lib/sockio-c.ini )
+@
 \subsubsection{read.d patch}
 The new read-char-no-hang change no longer returns EOF so we have
 no way to know when the browser is finished talking. This causes 
@@ -240,6 +250,12 @@ hangs waiting for a response.
 	  echo 100 applying read.d patch to o/read.d ; \
 	  ${PATCH} <${SPD}/zips/${GCLVERSION}.o.read.d.patch )
 @
+<<gcl-2.6.8pre7.o.read.d.patch>>=
+	@(cd ${GCLVERSION}/o ; \
+	  echo 100 applying read.d patch to o/read.d ; \
+	  ${PATCH} <${SPD}/zips/${GCLVERSION}.o.read.d.patch )
+@
+
 \subsubsection{fortran patch}
 Communication over sockets (basically to the NAG fortran library)
 requires us to have XDR enabled.
@@ -331,6 +347,11 @@ The for-loop change has been included in the sources.
 	  echo 6 applying libspad.a patch to unixport/makefile ; \
 	  ${PATCH} <${SPD}/zips/${GCLVERSION}.unixport.makefile.patch )
 @
+<<gcl-2.6.8pre7.unixport.makefile.patch>>=
+	@(cd ${GCLVERSION}/unixport ; \
+	  echo 6 applying libspad.a patch to unixport/makefile ; \
+	  ${PATCH} <${SPD}/zips/${GCLVERSION}.unixport.makefile.patch )
+@
 \subsubsection{toploop patch}
 This patch turns off the banner display every time GCL starts.
 We could use the -batch flag but that would be a pervasive change.
@@ -404,6 +425,11 @@ for the compiler will be. We eliminate this noise as well as the banner.
 	  echo 7 applying toploop patch to unixport/init_gcl.lsp ; \
 	  ${PATCH} <${SPD}/zips/${GCLVERSION}.unixport.init_gcl.lsp.in.patch )
 @
+<<gcl-2.6.8pre7.unixport.initgcl.lsp.in.patch>>=
+	@(cd ${GCLVERSION}/unixport ; \
+	  echo 7 applying toploop patch to unixport/init_gcl.lsp ; \
+	  ${PATCH} <${SPD}/zips/${GCLVERSION}.unixport.init_gcl.lsp.in.patch )
+@
 \subsubsection{object to float patch}
 GCL 2.5.2 contains no reference to this function and it was removed.
 Axiom uses this function so we re-implement it here.
@@ -636,6 +662,14 @@ file contains the proclaims for GCL's function definitions.
 	  echo 27 copy sys-proclaim.lisp to ${OBJ}/${SYS}/lsp/sys-proclaim.lisp ; \
 	  cp sys-proclaim.lisp ${OBJ}/${SYS}/lsp/sys-proclaim.lisp )
 @
+<<gcl-2.6.8pre7.collectfn.fix>>=
+	@(cd ${GCLVERSION}/cmpnew ; \
+	  echo 26 copy gcl_collectfn.lsp to ${OBJ}/${SYS}/lsp/collectfn.lsp ; \
+	  cp gcl_collectfn.lsp ${OBJ}/${SYS}/lsp/collectfn.lsp )
+	@(cd ${GCLVERSION}/lsp ; \
+	  echo 27 copy sys-proclaim.lisp to ${OBJ}/${SYS}/lsp/sys-proclaim.lisp ; \
+	  cp sys-proclaim.lisp ${OBJ}/${SYS}/lsp/sys-proclaim.lisp )
+@
 \subsection{The GCL-2.5.2 stanza}
 \subsubsection{Configure and Make GCL}
 We enable several features of GCL. 
@@ -1350,6 +1384,48 @@ clean:
 	@( cd ccl ; ${ENV} ${MAKE} clean )
 
 @
+\subsection{The GCL-2.6.8pre7 stanza}
+This stanza will be written when the GCLVERSION variable is
+``gcl-2.6.8pre7''. It will overwrite the default version. See the 
+top level Makefile.pamphlet.
+<<gcl-2.6.8pre7>>=
+# gcl version 2.6.8pre7
+OUT=${OBJ}/${SYS}/bin
+
+all:
+	@echo 1 building ${LSP} ${GCLVERSION}
+
+gcldir: 
+	@echo 2 building ${GCLVERSION}
+	@tar -zxf ${ZIPS}/${GCLVERSION}.tgz
+<<gcl-2.6.8pre7.h.linux.defs.patch>>
+<<gcl-2.6.8pre7.o.read.d.patch>>
+<<gcl-2.6.8pre7.unixport.initgcl.lsp.in.patch>>
+<<gcl-2.6.8pre7.unixport.makefile.patch>>
+<<gcl-2.6.8pre7.collectfn.fix>>
+<<gclConfigureMake>>
+	@echo 13 finished system build on `date` | tee >gcldir
+
+ccldir: ${LSP}/ccl/Makefile
+	@echo 14 building CCL
+	@mkdir -p ${INT}/ccl
+	@mkdir -p ${OBJ}/${SYS}/ccl
+	@( cd ccl ; ${ENV} ${MAKE} )
+
+${LSP}/ccl/Makefile: ${LSP}/ccl/Makefile.pamphlet
+	@echo 15 making ${LSP}/ccl/Makefile from ${LSP}/ccl/Makefile.pamphlet
+	@( cd ccl ; ${DOCUMENT} ${NOISE} Makefile )
+
+document:
+	@echo 16 making docs in ${LSP}
+	@mkdir -p ${INT}/doc/lsp/ccl
+	@( cd ccl ; ${ENV} ${MAKE} document )
+
+clean:
+	@echo 17 cleaning ${LSP}/ccl
+	@( cd ccl ; ${ENV} ${MAKE} clean )
+
+@
 \section{Gnu Common Lisp 2.5}
 GCL 2.5 requires a different Makefile. In particular, GCL 2.5
 has a different method of building the lisp image. And, just to
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index e231dba..d103f65 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3870,5 +3870,7 @@ src/input/clements.input add example of spad code<br/>
 faq fix FAQ 22: How do I check out the latest source?<br/>
 <a href="patches/20120402.04.tpd.patch">20120402.04.tpd.patch</a>
 src/axiom-website/download.html add debian binary<br/>
+<a href="patches/20120407.01.c1m.patch">20120407.01.c1m.patch</a>
+zips/gcl-2.6.8pre7.tgz lisp fixes from Camm Maquire<br/>
  </body>
 </html>
diff --git a/zips/gcl-2.6.8pre7.h.linux.defs.patch b/zips/gcl-2.6.8pre7.h.linux.defs.patch
new file mode 100644
index 0000000..81950d1
--- /dev/null
+++ b/zips/gcl-2.6.8pre7.h.linux.defs.patch
@@ -0,0 +1,13 @@
+--- linux.defs	2004-07-15 12:28:43.000000000 -0400
++++ linux.defs.tpd	2012-04-07 18:04:04.118182617 -0400
+@@ -8,6 +8,10 @@
+ 
+ # Machine dependent makefile definitions for intel 386,486 running linux
+ 
++# 20120407000 tpd link Axiom's code per Camm's instruction
++SYSTEM_OBJS = ${OBJ}/${SYS}/lib/cfuns-c.o ${OBJ}/${SYS}/lib/sockio-c.o
++OFLAG = -O
++
+ LBINDIR=/usr/local/bin
+ 
+ #OFLAG	=  -g -Wall
diff --git a/zips/gcl-2.6.8pre7.o.read.d.patch b/zips/gcl-2.6.8pre7.o.read.d.patch
new file mode 100644
index 0000000..f53f1f7
--- /dev/null
+++ b/zips/gcl-2.6.8pre7.o.read.d.patch
@@ -0,0 +1,11 @@
+--- read.d	2012-01-04 14:42:07.000000000 -0500
++++ read.d.tpd	2012-04-07 20:15:32.489298931 -0400
+@@ -2292,7 +2292,7 @@
+ 	else if (strm == Ct)
+ 		strm = symbol_value(sLAterminal_ioA);
+ 	check_type_stream(&strm);
+-	if (stream_at_end(strm)) {
++	if (!listen_stream(strm)) {
+ 		if (eof_errorp == Cnil)
+ 			@(return eof_value)
+ 		else
diff --git a/zips/gcl-2.6.8pre7.tgz b/zips/gcl-2.6.8pre7.tgz
new file mode 100644
index 0000000..0756d05
Binary files /dev/null and b/zips/gcl-2.6.8pre7.tgz differ
diff --git a/zips/gcl-2.6.8pre7.unixport.init_gcl.lsp.in.patch b/zips/gcl-2.6.8pre7.unixport.init_gcl.lsp.in.patch
new file mode 100644
index 0000000..b9832b0
--- /dev/null
+++ b/zips/gcl-2.6.8pre7.unixport.init_gcl.lsp.in.patch
@@ -0,0 +1,13 @@
+--- init_gcl.lsp.in	2010-08-13 11:49:47.000000000 -0400
++++ init_gcl.lsp.in.tpd	2012-04-07 18:52:50.464693583 -0400
+@@ -85,8 +85,8 @@
+    (cond ((si::get-command-arg "-batch")
+ 	  (setq si::*top-level-hook* 'bye))
+ 	 ((si::get-command-arg "-f"))
+-	 (t (format t si::*system-banner*)
+-	    (format t "Temporary directory for compiler files set to ~a~%" *tmp-dir*)))
++	 (t (format nil si::*system-banner*)
++	    (format nil "Temporary directory for compiler files set to ~a~%" *tmp-dir*)))
+    (setq si::*ihs-top* 1)
+    (in-package 'system::user) (incf system::*ihs-top* 2)
+    (funcall system::*old-top-level*))
diff --git a/zips/gcl-2.6.8pre7.unixport.makefile.patch b/zips/gcl-2.6.8pre7.unixport.makefile.patch
new file mode 100644
index 0000000..9a2129b
--- /dev/null
+++ b/zips/gcl-2.6.8pre7.unixport.makefile.patch
@@ -0,0 +1,11 @@
+--- makefile	2010-11-05 09:26:31.000000000 -0400
++++ makefile.tpd	2012-04-07 18:10:13.384013706 -0400
+@@ -18,7 +18,7 @@
+ 
+ LD_FLAGS=$(LDFLAGS) $(FIRST_FILE)
+ LD_LIBS_PRE=$(addprefix -u ,$(PATCHED_SYMBOLS))
+-LD_LIBS_POST=$(LIBS) $(LIBC) -lgclp $(LAST_FILE)
++LD_LIBS_POST=$(LIBS) $(LIBC) -lgclp ${OBJ}/${SYS}/lib/libspad.a $(LAST_FILE)
+ 
+ ifeq ($(ARRS),)
+ ARRS:=ar rs
