From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Camm Maguire <camm@debian.org>
Date: May, 13 2026 12:16:53 +0000
Subject: [PATCH] <short summary of the patch>

TODO: Put a short summary on the line above and replace this paragraph
with a longer explanation of this change. Complete the meta-information
with other relevant fields (see below for details). To make it easier, the
information below has been extracted from the changelog. Adjust it or drop
it.

Bug-Debian: https://bugs.debian.org/1105309
---
The information above should follow the Patch Tagging Guidelines, please
checkout https://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: (upstream|backport|vendor|other), (<patch-url>|commit:<commit-id>)
Bug: <upstream-bugtracker-url>
Bug-<Vendor>: <vendor-bugtracker-url>
Forwarded: (no|not-needed|<patch-forwarded-url>)
Applied-Upstream: <version>, (<commit-url>|commit:<commid-id>)
Reviewed-By: <name and email of someone who approved/reviewed the patch>

--- gcl27-2.7.1.orig/Makefile.am
+++ gcl27-2.7.1/Makefile.am
@@ -148,15 +148,17 @@ ARCHT_H=h/elf32_armhf_reloc.h h/elf32_ar
 	h/386-macosx.h h/mingw.h h/gnuwin95.h h/FreeBSD.h h/solaris.h h/solaris-i386.h
 BUILT_H=h/new_decl.h o/boot.h h/cmpinclude.h
 
-C_SRC=o/typespec.c o/alloc.c o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\
+C_SRC=o/typespec.c o/alloc.c o/gbc.c  o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\
       o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c o/conditional.c o/block.c o/iteration.c\
       o/prog.c o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c o/num_comp.c\
       o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c o/num_rand.c o/earith.c\
       o/array.c o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c\
       o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c  o/fat_string.c\
-      o/run_process.c o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\
-      o/clxsocket.c o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \
-      o/bcmp.c o/bcopy.c o/bzero.c o/user_init.c o/user_match.c o/mapfun.c
+      o/run_process.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\
+      o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \
+      o/user_init.c o/user_match.c o/mapfun.c
+#     o/bitop.c o/nfunlink.c o/clxsocket.c
+#     o/bcmp.c o/bcopy.c o/bzero.c
 
 D_SRC=o/character.d o/file.d o/gcl_readline.d o/hash.d o/list.d o/package.d o/pathname.d o/print.d\
       o/read.d o/sequence.d o/string.d o/symbol.d
@@ -255,13 +257,19 @@ unixport/saved_%: | unixport/raw_% unixp
 		( ! echo $@ | grep -q _gprof$$ || echo "(setq compiler::*default-prof-p* t)" >prof_init.lsp ) && \
 		echo "(system:save-system \"../$@\")" | \
 		cat ../unixport/init_raw.lsp prof_init.lsp - | \
-			GCL_LSPSYSDIR=../$(srcdir)/unixport/ GCL_MEM_BOUND=29 \
+			GCL_LSPSYSDIR=../$(srcdir)/unixport/ \
 				../unixport/raw_$* $$(dirname $$(pwd))/unixport/ -libdir $$(dirname $$(pwd))/  && \
-		rm -f ../unixport/gcl_cmpnopt.lsp #FIXME GCL_MEM_BOUND darwin limited raw heap xcode linker __huge issue
+		rm -f ../unixport/gcl_cmpnopt.lsp
 	rm -rf sb_$*
 
 unixport/raw_%: unixport/lib%.a $(FF) $(LF)
 	$(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS) #FIXME relro
+	! which otool >/dev/null || \
+		! otool -l $@ |grep -q LC_DYLD_CHAINED_FIXUPS || \
+		( echo Relinking raw image for mac arm && \
+		  $(CC) \
+                     $$(otool -l $@ | bin/mac_arm_relink ps=$(SEGMENT_ALIGNMENT_BITS) base=$(TEXT_BASE)) \
+                     $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS))
 
 unixport/gcl_cmpnopt_gcl_gprof.lsp unixport/gcl_cmpnopt_ansi_gcl_gprof.lsp:\
 unixport/gcl_cmpnopt_%_gprof.lsp: unixport/gcl_cmpnopt_%.lsp
@@ -277,12 +285,13 @@ unixport/lib%.a: lib/libbase_gcl.a $(LIB
 $(addprefix unixport/lib,$(addsuffix .a,gcl_gprof ansi_gcl_gprof)): \
 unixport/lib%.a:lib/libbase_gcl_gprof.a unixport/sys_%.o
 
-.POSIX: # parallel job ordering
 E0=s typep nr deftype cmptype cmpinline cmpflet
 L0=c listlib seqlib type evalmacros
 E0_OBJS=$(addprefix gcl_,$(addsuffix .o,$(E0)))
 M0_OBJS=$(filter-out $(E0_OBJS) $(L0_OBJS),$(L_OBJS))
 L0_OBJS=$(addprefix gcl_,$(addsuffix .o,$(L0)))
+$(addprefix gcl0/,$(L0_OBJS)): | $(addprefix gcl0/,$(M0_OBJS))
+$(addprefix gcl0/,$(M0_OBJS)): | $(addprefix gcl0/,$(E0_OBJS))
 unixport/libgcl0.a: $(addprefix gcl0/,$(E0_OBJS) $(M0_OBJS) $(L0_OBJS))
 
 $(addprefix unixport/lib,$(addsuffix .a,gcl1 gcl2 gcl3 gcl)):\
@@ -320,6 +329,7 @@ unixport/pcl_gcl:  | unixport/saved_mod_
 unixport/ansi_gcl:  | unixport/saved_pcl_gcl
 $(addprefix unixport/,gcl0 gcl1): unixport/% : unixport/cinit.lisp | %
 	echo "(system:save-system \"$@\")" | cat $< - | $(word 2,$|)
+
 $(addprefix unixport/,gcl2 gcl3 gcl mod_gcl): unixport/% : | %
 	ln -snf $$(basename $(word 2,$|)) $@
 
@@ -353,8 +363,8 @@ $(addprefix gcl0/,$(LL_OBJS)): gcl0/%.o
 $(addprefix gcl0/,$(LC_OBJS)): gcl0/%.o : cmpnew/%.lsp
 gcl0/%.o: | unixport/gcl0
 	rm -f $(@D)/$*.done
-	$| -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@
-	[ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \
+	$(word 1,$|) -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@
+	[ "$*" = "gcl_evalmacros" ] || [ "$*" = "gcl_top" ] || [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \
 		ln -f $@ $$(echo $@ |sed 's,\.o,\.done,g') #FIXME directory link
 
 $(addprefix gcl1/,$(LL_OBJS)): gcl1/%.o : lsp/%.lsp
--- gcl27-2.7.1.orig/Makefile.in
+++ gcl27-2.7.1/Makefile.in
@@ -176,29 +176,27 @@ lib_libbase_gcl_a_AR = $(AR) $(ARFLAGS)
 lib_libbase_gcl_a_RANLIB = $(RANLIB)
 lib_libbase_gcl_a_LIBADD =
 am__lib_libbase_gcl_a_SOURCES_DIST = o/typespec.c o/alloc.c o/gbc.c \
-	o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c \
-	o/frame.c o/predicate.c o/reference.c o/assignment.c o/bind.c \
-	o/let.c o/conditional.c o/block.c o/iteration.c o/prog.c \
-	o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c \
-	o/num_pred.c o/num_comp.c o/num_arith.c o/num_sfun.c \
-	o/num_co.c o/num_log.c o/num_rand.c o/earith.c o/array.c \
-	o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c \
-	o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c \
-	o/unixsave.c o/funlink.c o/fat_string.c o/run_process.c \
-	o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c \
-	o/sockets.c o/gmp_wrappers.c o/clxsocket.c o/nsocket.c \
-	o/prelink.c o/sfasl.c o/msbrk.c o/bcmp.c o/bcopy.c o/bzero.c \
-	o/user_init.c o/user_match.c o/mapfun.c h/compbas2.h \
-	h/compbas.h h/compprotos.h h/cstack.h h/enum.h h/error.h \
-	h/eval.h h/fixnum.h h/frame.h h/funlink.h h/globals.h \
-	h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h h/linux.h \
-	h/lu.h h/make-init.h h/mp.h h/notcomp.h h/num_include.h \
-	h/object.h h/options.h h/page.h h/pageinfo.h h/pbits.h \
-	h/pool.h h/prelink.h h/protoize.h h/ptable.h h/rgbc.h \
-	h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h h/writable.h \
-	o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h h/bfdef.h \
-	h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h o/ntheap.h \
-	h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \
+	o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c \
+	o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c \
+	o/conditional.c o/block.c o/iteration.c o/prog.c o/multival.c \
+	o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c \
+	o/num_comp.c o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c \
+	o/num_rand.c o/earith.c o/array.c o/regexpr.c o/structure.c \
+	o/toplevel.c o/backq.c o/format.c o/unixfsys.c o/unixfasl.c \
+	o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c \
+	o/fat_string.c o/run_process.c o/usig.c o/usig2.c o/utils.c \
+	o/makefun.c o/sockets.c o/gmp_wrappers.c o/nsocket.c \
+	o/prelink.c o/sfasl.c o/msbrk.c o/user_init.c o/user_match.c \
+	o/mapfun.c h/compbas2.h h/compbas.h h/compprotos.h h/cstack.h \
+	h/enum.h h/error.h h/eval.h h/fixnum.h h/frame.h h/funlink.h \
+	h/globals.h h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h \
+	h/linux.h h/lu.h h/make-init.h h/mp.h h/notcomp.h \
+	h/num_include.h h/object.h h/options.h h/page.h h/pageinfo.h \
+	h/pbits.h h/pool.h h/prelink.h h/protoize.h h/ptable.h \
+	h/rgbc.h h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h \
+	h/writable.h o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h \
+	h/bfdef.h h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h \
+	o/ntheap.h h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \
 	h/elf32_armhf_reloc.h h/elf32_armhf_reloc_special.h \
 	h/elf32_arm_reloc.h h/elf32_arm_reloc_special.h \
 	h/elf32_hppa_reloc.h h/elf32_hppa_reloc_special.h \
@@ -226,9 +224,9 @@ am__lib_libbase_gcl_a_SOURCES_DIST = o/t
 	h/solaris-i386.h o/boot.c
 am__dirstamp = $(am__leading_dot)dirstamp
 am__objects_1 = o/typespec.$(OBJEXT) o/alloc.$(OBJEXT) o/gbc.$(OBJEXT) \
-	o/bitop.$(OBJEXT) o/main.$(OBJEXT) o/eval.$(OBJEXT) \
-	o/macros.$(OBJEXT) o/lex.$(OBJEXT) o/bds.$(OBJEXT) \
-	o/frame.$(OBJEXT) o/predicate.$(OBJEXT) o/reference.$(OBJEXT) \
+	o/main.$(OBJEXT) o/eval.$(OBJEXT) o/macros.$(OBJEXT) \
+	o/lex.$(OBJEXT) o/bds.$(OBJEXT) o/frame.$(OBJEXT) \
+	o/predicate.$(OBJEXT) o/reference.$(OBJEXT) \
 	o/assignment.$(OBJEXT) o/bind.$(OBJEXT) o/let.$(OBJEXT) \
 	o/conditional.$(OBJEXT) o/block.$(OBJEXT) \
 	o/iteration.$(OBJEXT) o/prog.$(OBJEXT) o/multival.$(OBJEXT) \
@@ -242,12 +240,11 @@ am__objects_1 = o/typespec.$(OBJEXT) o/a
 	o/unixfasl.$(OBJEXT) o/error.$(OBJEXT) o/unixtime.$(OBJEXT) \
 	o/unixsys.$(OBJEXT) o/unixsave.$(OBJEXT) o/funlink.$(OBJEXT) \
 	o/fat_string.$(OBJEXT) o/run_process.$(OBJEXT) \
-	o/nfunlink.$(OBJEXT) o/usig.$(OBJEXT) o/usig2.$(OBJEXT) \
-	o/utils.$(OBJEXT) o/makefun.$(OBJEXT) o/sockets.$(OBJEXT) \
-	o/gmp_wrappers.$(OBJEXT) o/clxsocket.$(OBJEXT) \
-	o/nsocket.$(OBJEXT) o/prelink.$(OBJEXT) o/sfasl.$(OBJEXT) \
-	o/msbrk.$(OBJEXT) o/bcmp.$(OBJEXT) o/bcopy.$(OBJEXT) \
-	o/bzero.$(OBJEXT) o/user_init.$(OBJEXT) o/user_match.$(OBJEXT) \
+	o/usig.$(OBJEXT) o/usig2.$(OBJEXT) o/utils.$(OBJEXT) \
+	o/makefun.$(OBJEXT) o/sockets.$(OBJEXT) \
+	o/gmp_wrappers.$(OBJEXT) o/nsocket.$(OBJEXT) \
+	o/prelink.$(OBJEXT) o/sfasl.$(OBJEXT) o/msbrk.$(OBJEXT) \
+	o/user_init.$(OBJEXT) o/user_match.$(OBJEXT) \
 	o/mapfun.$(OBJEXT)
 am__objects_2 =
 @AMM_LIBBOOT_FALSE@am__objects_3 = o/boot.$(OBJEXT)
@@ -265,29 +262,27 @@ lib_libbase_gcl_gprof_a_AR = $(AR) $(ARF
 lib_libbase_gcl_gprof_a_RANLIB = $(RANLIB)
 lib_libbase_gcl_gprof_a_LIBADD =
 am__lib_libbase_gcl_gprof_a_SOURCES_DIST = o/typespec.c o/alloc.c \
-	o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c \
-	o/frame.c o/predicate.c o/reference.c o/assignment.c o/bind.c \
-	o/let.c o/conditional.c o/block.c o/iteration.c o/prog.c \
-	o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c \
-	o/num_pred.c o/num_comp.c o/num_arith.c o/num_sfun.c \
-	o/num_co.c o/num_log.c o/num_rand.c o/earith.c o/array.c \
-	o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c \
-	o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c \
-	o/unixsave.c o/funlink.c o/fat_string.c o/run_process.c \
-	o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c \
-	o/sockets.c o/gmp_wrappers.c o/clxsocket.c o/nsocket.c \
-	o/prelink.c o/sfasl.c o/msbrk.c o/bcmp.c o/bcopy.c o/bzero.c \
-	o/user_init.c o/user_match.c o/mapfun.c h/compbas2.h \
-	h/compbas.h h/compprotos.h h/cstack.h h/enum.h h/error.h \
-	h/eval.h h/fixnum.h h/frame.h h/funlink.h h/globals.h \
-	h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h h/linux.h \
-	h/lu.h h/make-init.h h/mp.h h/notcomp.h h/num_include.h \
-	h/object.h h/options.h h/page.h h/pageinfo.h h/pbits.h \
-	h/pool.h h/prelink.h h/protoize.h h/ptable.h h/rgbc.h \
-	h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h h/writable.h \
-	o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h h/bfdef.h \
-	h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h o/ntheap.h \
-	h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \
+	o/gbc.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c \
+	o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c \
+	o/conditional.c o/block.c o/iteration.c o/prog.c o/multival.c \
+	o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c \
+	o/num_comp.c o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c \
+	o/num_rand.c o/earith.c o/array.c o/regexpr.c o/structure.c \
+	o/toplevel.c o/backq.c o/format.c o/unixfsys.c o/unixfasl.c \
+	o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c \
+	o/fat_string.c o/run_process.c o/usig.c o/usig2.c o/utils.c \
+	o/makefun.c o/sockets.c o/gmp_wrappers.c o/nsocket.c \
+	o/prelink.c o/sfasl.c o/msbrk.c o/user_init.c o/user_match.c \
+	o/mapfun.c h/compbas2.h h/compbas.h h/compprotos.h h/cstack.h \
+	h/enum.h h/error.h h/eval.h h/fixnum.h h/frame.h h/funlink.h \
+	h/globals.h h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h \
+	h/linux.h h/lu.h h/make-init.h h/mp.h h/notcomp.h \
+	h/num_include.h h/object.h h/options.h h/page.h h/pageinfo.h \
+	h/pbits.h h/pool.h h/prelink.h h/protoize.h h/ptable.h \
+	h/rgbc.h h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h \
+	h/writable.h o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h \
+	h/bfdef.h h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h \
+	o/ntheap.h h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \
 	h/elf32_armhf_reloc.h h/elf32_armhf_reloc_special.h \
 	h/elf32_arm_reloc.h h/elf32_arm_reloc_special.h \
 	h/elf32_hppa_reloc.h h/elf32_hppa_reloc_special.h \
@@ -316,7 +311,6 @@ am__lib_libbase_gcl_gprof_a_SOURCES_DIST
 am__objects_5 = o/lib_libbase_gcl_gprof_a-typespec.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-alloc.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-gbc.$(OBJEXT) \
-	o/lib_libbase_gcl_gprof_a-bitop.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-main.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-eval.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-macros.$(OBJEXT) \
@@ -361,21 +355,16 @@ am__objects_5 = o/lib_libbase_gcl_gprof_
 	o/lib_libbase_gcl_gprof_a-funlink.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-fat_string.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-run_process.$(OBJEXT) \
-	o/lib_libbase_gcl_gprof_a-nfunlink.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-usig.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-usig2.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-utils.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-makefun.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-sockets.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-gmp_wrappers.$(OBJEXT) \
-	o/lib_libbase_gcl_gprof_a-clxsocket.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-nsocket.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-prelink.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-sfasl.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-msbrk.$(OBJEXT) \
-	o/lib_libbase_gcl_gprof_a-bcmp.$(OBJEXT) \
-	o/lib_libbase_gcl_gprof_a-bcopy.$(OBJEXT) \
-	o/lib_libbase_gcl_gprof_a-bzero.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-user_init.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-user_match.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-mapfun.$(OBJEXT)
@@ -499,13 +488,12 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.
 	gcl-tk/$(DEPDIR)/gcltkaux-tkAppInit.Po \
 	gcl-tk/$(DEPDIR)/gcltkaux-tkMain.Po o/$(DEPDIR)/alloc.Po \
 	o/$(DEPDIR)/array.Po o/$(DEPDIR)/assignment.Po \
-	o/$(DEPDIR)/backq.Po o/$(DEPDIR)/bcmp.Po o/$(DEPDIR)/bcopy.Po \
-	o/$(DEPDIR)/bds.Po o/$(DEPDIR)/big.Po o/$(DEPDIR)/bind.Po \
-	o/$(DEPDIR)/bitop.Po o/$(DEPDIR)/block.Po o/$(DEPDIR)/boot.Po \
-	o/$(DEPDIR)/bzero.Po o/$(DEPDIR)/catch.Po o/$(DEPDIR)/cfun.Po \
-	o/$(DEPDIR)/character.Po o/$(DEPDIR)/clxsocket.Po \
-	o/$(DEPDIR)/cmpaux.Po o/$(DEPDIR)/conditional.Po \
-	o/$(DEPDIR)/earith.Po o/$(DEPDIR)/error.Po o/$(DEPDIR)/eval.Po \
+	o/$(DEPDIR)/backq.Po o/$(DEPDIR)/bds.Po o/$(DEPDIR)/big.Po \
+	o/$(DEPDIR)/bind.Po o/$(DEPDIR)/block.Po o/$(DEPDIR)/boot.Po \
+	o/$(DEPDIR)/catch.Po o/$(DEPDIR)/cfun.Po \
+	o/$(DEPDIR)/character.Po o/$(DEPDIR)/cmpaux.Po \
+	o/$(DEPDIR)/conditional.Po o/$(DEPDIR)/earith.Po \
+	o/$(DEPDIR)/error.Po o/$(DEPDIR)/eval.Po \
 	o/$(DEPDIR)/fat_string.Po o/$(DEPDIR)/file.Po \
 	o/$(DEPDIR)/format.Po o/$(DEPDIR)/frame.Po \
 	o/$(DEPDIR)/funlink.Po o/$(DEPDIR)/gbc.Po \
@@ -516,19 +504,14 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po \
-	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po \
-	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po \
-	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po \
-	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po \
-	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po \
@@ -555,7 +538,6 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po \
-	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po \
 	o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po \
@@ -598,25 +580,25 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.
 	o/$(DEPDIR)/macros.Po o/$(DEPDIR)/main.Po \
 	o/$(DEPDIR)/makefun.Po o/$(DEPDIR)/mapfun.Po \
 	o/$(DEPDIR)/msbrk.Po o/$(DEPDIR)/multival.Po \
-	o/$(DEPDIR)/new_init.Po o/$(DEPDIR)/nfunlink.Po \
-	o/$(DEPDIR)/nsocket.Po o/$(DEPDIR)/num_arith.Po \
-	o/$(DEPDIR)/num_co.Po o/$(DEPDIR)/num_comp.Po \
-	o/$(DEPDIR)/num_log.Po o/$(DEPDIR)/num_pred.Po \
-	o/$(DEPDIR)/num_rand.Po o/$(DEPDIR)/num_sfun.Po \
-	o/$(DEPDIR)/number.Po o/$(DEPDIR)/package.Po \
-	o/$(DEPDIR)/pathname.Po o/$(DEPDIR)/predicate.Po \
-	o/$(DEPDIR)/prelink.Po o/$(DEPDIR)/print.Po \
-	o/$(DEPDIR)/prog.Po o/$(DEPDIR)/qfv.Po o/$(DEPDIR)/read.Po \
-	o/$(DEPDIR)/reference.Po o/$(DEPDIR)/regexpr.Po \
-	o/$(DEPDIR)/run_process.Po o/$(DEPDIR)/sequence.Po \
-	o/$(DEPDIR)/sfasl.Po o/$(DEPDIR)/sockets.Po \
-	o/$(DEPDIR)/string.Po o/$(DEPDIR)/structure.Po \
-	o/$(DEPDIR)/symbol.Po o/$(DEPDIR)/toplevel.Po \
-	o/$(DEPDIR)/typespec.Po o/$(DEPDIR)/unixfasl.Po \
-	o/$(DEPDIR)/unixfsys.Po o/$(DEPDIR)/unixsave.Po \
-	o/$(DEPDIR)/unixsys.Po o/$(DEPDIR)/unixtime.Po \
-	o/$(DEPDIR)/user_init.Po o/$(DEPDIR)/user_match.Po \
-	o/$(DEPDIR)/usig.Po o/$(DEPDIR)/usig2.Po o/$(DEPDIR)/utils.Po \
+	o/$(DEPDIR)/new_init.Po o/$(DEPDIR)/nsocket.Po \
+	o/$(DEPDIR)/num_arith.Po o/$(DEPDIR)/num_co.Po \
+	o/$(DEPDIR)/num_comp.Po o/$(DEPDIR)/num_log.Po \
+	o/$(DEPDIR)/num_pred.Po o/$(DEPDIR)/num_rand.Po \
+	o/$(DEPDIR)/num_sfun.Po o/$(DEPDIR)/number.Po \
+	o/$(DEPDIR)/package.Po o/$(DEPDIR)/pathname.Po \
+	o/$(DEPDIR)/predicate.Po o/$(DEPDIR)/prelink.Po \
+	o/$(DEPDIR)/print.Po o/$(DEPDIR)/prog.Po o/$(DEPDIR)/qfv.Po \
+	o/$(DEPDIR)/read.Po o/$(DEPDIR)/reference.Po \
+	o/$(DEPDIR)/regexpr.Po o/$(DEPDIR)/run_process.Po \
+	o/$(DEPDIR)/sequence.Po o/$(DEPDIR)/sfasl.Po \
+	o/$(DEPDIR)/sockets.Po o/$(DEPDIR)/string.Po \
+	o/$(DEPDIR)/structure.Po o/$(DEPDIR)/symbol.Po \
+	o/$(DEPDIR)/toplevel.Po o/$(DEPDIR)/typespec.Po \
+	o/$(DEPDIR)/unixfasl.Po o/$(DEPDIR)/unixfsys.Po \
+	o/$(DEPDIR)/unixsave.Po o/$(DEPDIR)/unixsys.Po \
+	o/$(DEPDIR)/unixtime.Po o/$(DEPDIR)/user_init.Po \
+	o/$(DEPDIR)/user_match.Po o/$(DEPDIR)/usig.Po \
+	o/$(DEPDIR)/usig2.Po o/$(DEPDIR)/utils.Po \
 	xgcl-2/$(DEPDIR)/Events.Po xgcl-2/$(DEPDIR)/XStruct-2.Po \
 	xgcl-2/$(DEPDIR)/XStruct-4.Po xgcl-2/$(DEPDIR)/Xutil-2.Po \
 	xgcl-2/$(DEPDIR)/general-c.Po \
@@ -872,6 +854,7 @@ PRELINK_CHECK = @PRELINK_CHECK@
 RANLIB = @RANLIB@
 RL_LIB = @RL_LIB@
 RL_OBJS = @RL_OBJS@
+SEGMENT_ALIGNMENT_BITS = @SEGMENT_ALIGNMENT_BITS@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -879,6 +862,7 @@ TCLSH = @TCLSH@
 TCL_INCLUDE = @TCL_INCLUDE@
 TCL_LIBRARY = @TCL_LIBRARY@
 TCL_LIB_SPEC = @TCL_LIB_SPEC@
+TEXT_BASE = @TEXT_BASE@
 TK_CONFIG_PREFIX = @TK_CONFIG_PREFIX@
 TK_INCLUDE = @TK_INCLUDE@
 TK_LIBRARY = @TK_LIBRARY@
@@ -1057,16 +1041,18 @@ ARCHT_H = h/elf32_armhf_reloc.h h/elf32_
 	h/386-macosx.h h/mingw.h h/gnuwin95.h h/FreeBSD.h h/solaris.h h/solaris-i386.h
 
 BUILT_H = h/new_decl.h o/boot.h h/cmpinclude.h
-C_SRC = o/typespec.c o/alloc.c o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\
+C_SRC = o/typespec.c o/alloc.c o/gbc.c  o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\
       o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c o/conditional.c o/block.c o/iteration.c\
       o/prog.c o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c o/num_comp.c\
       o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c o/num_rand.c o/earith.c\
       o/array.c o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c\
       o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c  o/fat_string.c\
-      o/run_process.c o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\
-      o/clxsocket.c o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \
-      o/bcmp.c o/bcopy.c o/bzero.c o/user_init.c o/user_match.c o/mapfun.c
+      o/run_process.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\
+      o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \
+      o/user_init.c o/user_match.c o/mapfun.c
 
+#     o/bitop.c o/nfunlink.c o/clxsocket.c
+#     o/bcmp.c o/bcopy.c o/bzero.c
 D_SRC = o/character.d o/file.d o/gcl_readline.d o/hash.d o/list.d o/package.d o/pathname.d o/print.d\
       o/read.d o/sequence.d o/string.d o/symbol.d
 
@@ -1339,7 +1325,6 @@ o/$(DEPDIR)/$(am__dirstamp):
 o/typespec.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/alloc.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/gbc.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/bitop.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/main.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/eval.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/macros.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
@@ -1384,7 +1369,6 @@ o/unixsave.$(OBJEXT): o/$(am__dirstamp)
 o/funlink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/fat_string.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/run_process.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/nfunlink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/usig.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/usig2.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/utils.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
@@ -1392,14 +1376,10 @@ o/makefun.$(OBJEXT): o/$(am__dirstamp) o
 o/sockets.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/gmp_wrappers.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
-o/clxsocket.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/nsocket.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/prelink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/sfasl.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/msbrk.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/bcmp.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/bcopy.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/bzero.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/user_init.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/user_match.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/mapfun.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
@@ -1433,8 +1413,6 @@ o/lib_libbase_gcl_gprof_a-alloc.$(OBJEXT
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-gbc.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-bitop.$(OBJEXT): o/$(am__dirstamp) \
-	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-main.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-eval.$(OBJEXT): o/$(am__dirstamp) \
@@ -1523,8 +1501,6 @@ o/lib_libbase_gcl_gprof_a-fat_string.$(O
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-run_process.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-nfunlink.$(OBJEXT): o/$(am__dirstamp) \
-	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-usig.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-usig2.$(OBJEXT): o/$(am__dirstamp) \
@@ -1537,8 +1513,6 @@ o/lib_libbase_gcl_gprof_a-sockets.$(OBJE
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-gmp_wrappers.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-clxsocket.$(OBJEXT): o/$(am__dirstamp) \
-	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-nsocket.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-prelink.$(OBJEXT): o/$(am__dirstamp) \
@@ -1547,12 +1521,6 @@ o/lib_libbase_gcl_gprof_a-sfasl.$(OBJEXT
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-msbrk.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-bcmp.$(OBJEXT): o/$(am__dirstamp) \
-	o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-bcopy.$(OBJEXT): o/$(am__dirstamp) \
-	o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-bzero.$(OBJEXT): o/$(am__dirstamp) \
-	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-user_init.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-user_match.$(OBJEXT): o/$(am__dirstamp) \
@@ -1763,19 +1731,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/array.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/assignment.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/backq.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bcmp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bcopy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bds.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/big.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bind.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bitop.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/block.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/boot.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bzero.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/catch.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/cfun.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/character.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/clxsocket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/cmpaux.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/conditional.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/earith.Po@am__quote@ # am--include-marker
@@ -1798,19 +1761,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po@am__quote@ # am--include-marker
@@ -1837,7 +1795,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po@am__quote@ # am--include-marker
@@ -1885,7 +1842,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/msbrk.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/multival.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/new_init.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/nfunlink.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/nsocket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/num_arith.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/num_co.Po@am__quote@ # am--include-marker
@@ -1999,20 +1955,6 @@ o/lib_libbase_gcl_gprof_a-gbc.obj: o/gbc
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-gbc.obj `if test -f 'o/gbc.c'; then $(CYGPATH_W) 'o/gbc.c'; else $(CYGPATH_W) '$(srcdir)/o/gbc.c'; fi`
 
-o/lib_libbase_gcl_gprof_a-bitop.o: o/bitop.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bitop.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo -c -o o/lib_libbase_gcl_gprof_a-bitop.o `test -f 'o/bitop.c' || echo '$(srcdir)/'`o/bitop.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/bitop.c' object='o/lib_libbase_gcl_gprof_a-bitop.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bitop.o `test -f 'o/bitop.c' || echo '$(srcdir)/'`o/bitop.c
-
-o/lib_libbase_gcl_gprof_a-bitop.obj: o/bitop.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bitop.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo -c -o o/lib_libbase_gcl_gprof_a-bitop.obj `if test -f 'o/bitop.c'; then $(CYGPATH_W) 'o/bitop.c'; else $(CYGPATH_W) '$(srcdir)/o/bitop.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/bitop.c' object='o/lib_libbase_gcl_gprof_a-bitop.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bitop.obj `if test -f 'o/bitop.c'; then $(CYGPATH_W) 'o/bitop.c'; else $(CYGPATH_W) '$(srcdir)/o/bitop.c'; fi`
-
 o/lib_libbase_gcl_gprof_a-main.o: o/main.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-main.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Tpo -c -o o/lib_libbase_gcl_gprof_a-main.o `test -f 'o/main.c' || echo '$(srcdir)/'`o/main.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Po
@@ -2629,20 +2571,6 @@ o/lib_libbase_gcl_gprof_a-run_process.ob
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-run_process.obj `if test -f 'o/run_process.c'; then $(CYGPATH_W) 'o/run_process.c'; else $(CYGPATH_W) '$(srcdir)/o/run_process.c'; fi`
 
-o/lib_libbase_gcl_gprof_a-nfunlink.o: o/nfunlink.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nfunlink.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo -c -o o/lib_libbase_gcl_gprof_a-nfunlink.o `test -f 'o/nfunlink.c' || echo '$(srcdir)/'`o/nfunlink.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/nfunlink.c' object='o/lib_libbase_gcl_gprof_a-nfunlink.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-nfunlink.o `test -f 'o/nfunlink.c' || echo '$(srcdir)/'`o/nfunlink.c
-
-o/lib_libbase_gcl_gprof_a-nfunlink.obj: o/nfunlink.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nfunlink.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo -c -o o/lib_libbase_gcl_gprof_a-nfunlink.obj `if test -f 'o/nfunlink.c'; then $(CYGPATH_W) 'o/nfunlink.c'; else $(CYGPATH_W) '$(srcdir)/o/nfunlink.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/nfunlink.c' object='o/lib_libbase_gcl_gprof_a-nfunlink.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-nfunlink.obj `if test -f 'o/nfunlink.c'; then $(CYGPATH_W) 'o/nfunlink.c'; else $(CYGPATH_W) '$(srcdir)/o/nfunlink.c'; fi`
-
 o/lib_libbase_gcl_gprof_a-usig.o: o/usig.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-usig.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Tpo -c -o o/lib_libbase_gcl_gprof_a-usig.o `test -f 'o/usig.c' || echo '$(srcdir)/'`o/usig.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Po
@@ -2727,20 +2655,6 @@ o/lib_libbase_gcl_gprof_a-gmp_wrappers.o
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-gmp_wrappers.obj `if test -f 'o/gmp_wrappers.c'; then $(CYGPATH_W) 'o/gmp_wrappers.c'; else $(CYGPATH_W) '$(srcdir)/o/gmp_wrappers.c'; fi`
 
-o/lib_libbase_gcl_gprof_a-clxsocket.o: o/clxsocket.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-clxsocket.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-clxsocket.o `test -f 'o/clxsocket.c' || echo '$(srcdir)/'`o/clxsocket.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/clxsocket.c' object='o/lib_libbase_gcl_gprof_a-clxsocket.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-clxsocket.o `test -f 'o/clxsocket.c' || echo '$(srcdir)/'`o/clxsocket.c
-
-o/lib_libbase_gcl_gprof_a-clxsocket.obj: o/clxsocket.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-clxsocket.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-clxsocket.obj `if test -f 'o/clxsocket.c'; then $(CYGPATH_W) 'o/clxsocket.c'; else $(CYGPATH_W) '$(srcdir)/o/clxsocket.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/clxsocket.c' object='o/lib_libbase_gcl_gprof_a-clxsocket.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-clxsocket.obj `if test -f 'o/clxsocket.c'; then $(CYGPATH_W) 'o/clxsocket.c'; else $(CYGPATH_W) '$(srcdir)/o/clxsocket.c'; fi`
-
 o/lib_libbase_gcl_gprof_a-nsocket.o: o/nsocket.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nsocket.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-nsocket.o `test -f 'o/nsocket.c' || echo '$(srcdir)/'`o/nsocket.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po
@@ -2797,48 +2711,6 @@ o/lib_libbase_gcl_gprof_a-msbrk.obj: o/m
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-msbrk.obj `if test -f 'o/msbrk.c'; then $(CYGPATH_W) 'o/msbrk.c'; else $(CYGPATH_W) '$(srcdir)/o/msbrk.c'; fi`
 
-o/lib_libbase_gcl_gprof_a-bcmp.o: o/bcmp.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcmp.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcmp.o `test -f 'o/bcmp.c' || echo '$(srcdir)/'`o/bcmp.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/bcmp.c' object='o/lib_libbase_gcl_gprof_a-bcmp.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcmp.o `test -f 'o/bcmp.c' || echo '$(srcdir)/'`o/bcmp.c
-
-o/lib_libbase_gcl_gprof_a-bcmp.obj: o/bcmp.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcmp.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcmp.obj `if test -f 'o/bcmp.c'; then $(CYGPATH_W) 'o/bcmp.c'; else $(CYGPATH_W) '$(srcdir)/o/bcmp.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/bcmp.c' object='o/lib_libbase_gcl_gprof_a-bcmp.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcmp.obj `if test -f 'o/bcmp.c'; then $(CYGPATH_W) 'o/bcmp.c'; else $(CYGPATH_W) '$(srcdir)/o/bcmp.c'; fi`
-
-o/lib_libbase_gcl_gprof_a-bcopy.o: o/bcopy.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcopy.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcopy.o `test -f 'o/bcopy.c' || echo '$(srcdir)/'`o/bcopy.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/bcopy.c' object='o/lib_libbase_gcl_gprof_a-bcopy.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcopy.o `test -f 'o/bcopy.c' || echo '$(srcdir)/'`o/bcopy.c
-
-o/lib_libbase_gcl_gprof_a-bcopy.obj: o/bcopy.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcopy.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcopy.obj `if test -f 'o/bcopy.c'; then $(CYGPATH_W) 'o/bcopy.c'; else $(CYGPATH_W) '$(srcdir)/o/bcopy.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/bcopy.c' object='o/lib_libbase_gcl_gprof_a-bcopy.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcopy.obj `if test -f 'o/bcopy.c'; then $(CYGPATH_W) 'o/bcopy.c'; else $(CYGPATH_W) '$(srcdir)/o/bcopy.c'; fi`
-
-o/lib_libbase_gcl_gprof_a-bzero.o: o/bzero.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bzero.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo -c -o o/lib_libbase_gcl_gprof_a-bzero.o `test -f 'o/bzero.c' || echo '$(srcdir)/'`o/bzero.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/bzero.c' object='o/lib_libbase_gcl_gprof_a-bzero.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bzero.o `test -f 'o/bzero.c' || echo '$(srcdir)/'`o/bzero.c
-
-o/lib_libbase_gcl_gprof_a-bzero.obj: o/bzero.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bzero.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo -c -o o/lib_libbase_gcl_gprof_a-bzero.obj `if test -f 'o/bzero.c'; then $(CYGPATH_W) 'o/bzero.c'; else $(CYGPATH_W) '$(srcdir)/o/bzero.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/bzero.c' object='o/lib_libbase_gcl_gprof_a-bzero.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bzero.obj `if test -f 'o/bzero.c'; then $(CYGPATH_W) 'o/bzero.c'; else $(CYGPATH_W) '$(srcdir)/o/bzero.c'; fi`
-
 o/lib_libbase_gcl_gprof_a-user_init.o: o/user_init.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-user_init.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Tpo -c -o o/lib_libbase_gcl_gprof_a-user_init.o `test -f 'o/user_init.c' || echo '$(srcdir)/'`o/user_init.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Po
@@ -4122,19 +3994,14 @@ distclean: distclean-am
 	-rm -f o/$(DEPDIR)/array.Po
 	-rm -f o/$(DEPDIR)/assignment.Po
 	-rm -f o/$(DEPDIR)/backq.Po
-	-rm -f o/$(DEPDIR)/bcmp.Po
-	-rm -f o/$(DEPDIR)/bcopy.Po
 	-rm -f o/$(DEPDIR)/bds.Po
 	-rm -f o/$(DEPDIR)/big.Po
 	-rm -f o/$(DEPDIR)/bind.Po
-	-rm -f o/$(DEPDIR)/bitop.Po
 	-rm -f o/$(DEPDIR)/block.Po
 	-rm -f o/$(DEPDIR)/boot.Po
-	-rm -f o/$(DEPDIR)/bzero.Po
 	-rm -f o/$(DEPDIR)/catch.Po
 	-rm -f o/$(DEPDIR)/cfun.Po
 	-rm -f o/$(DEPDIR)/character.Po
-	-rm -f o/$(DEPDIR)/clxsocket.Po
 	-rm -f o/$(DEPDIR)/cmpaux.Po
 	-rm -f o/$(DEPDIR)/conditional.Po
 	-rm -f o/$(DEPDIR)/earith.Po
@@ -4157,19 +4024,14 @@ distclean: distclean-am
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po
@@ -4196,7 +4058,6 @@ distclean: distclean-am
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po
@@ -4244,7 +4105,6 @@ distclean: distclean-am
 	-rm -f o/$(DEPDIR)/msbrk.Po
 	-rm -f o/$(DEPDIR)/multival.Po
 	-rm -f o/$(DEPDIR)/new_init.Po
-	-rm -f o/$(DEPDIR)/nfunlink.Po
 	-rm -f o/$(DEPDIR)/nsocket.Po
 	-rm -f o/$(DEPDIR)/num_arith.Po
 	-rm -f o/$(DEPDIR)/num_co.Po
@@ -4446,19 +4306,14 @@ maintainer-clean: maintainer-clean-am
 	-rm -f o/$(DEPDIR)/array.Po
 	-rm -f o/$(DEPDIR)/assignment.Po
 	-rm -f o/$(DEPDIR)/backq.Po
-	-rm -f o/$(DEPDIR)/bcmp.Po
-	-rm -f o/$(DEPDIR)/bcopy.Po
 	-rm -f o/$(DEPDIR)/bds.Po
 	-rm -f o/$(DEPDIR)/big.Po
 	-rm -f o/$(DEPDIR)/bind.Po
-	-rm -f o/$(DEPDIR)/bitop.Po
 	-rm -f o/$(DEPDIR)/block.Po
 	-rm -f o/$(DEPDIR)/boot.Po
-	-rm -f o/$(DEPDIR)/bzero.Po
 	-rm -f o/$(DEPDIR)/catch.Po
 	-rm -f o/$(DEPDIR)/cfun.Po
 	-rm -f o/$(DEPDIR)/character.Po
-	-rm -f o/$(DEPDIR)/clxsocket.Po
 	-rm -f o/$(DEPDIR)/cmpaux.Po
 	-rm -f o/$(DEPDIR)/conditional.Po
 	-rm -f o/$(DEPDIR)/earith.Po
@@ -4481,19 +4336,14 @@ maintainer-clean: maintainer-clean-am
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po
@@ -4520,7 +4370,6 @@ maintainer-clean: maintainer-clean-am
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po
-	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po
 	-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po
@@ -4568,7 +4417,6 @@ maintainer-clean: maintainer-clean-am
 	-rm -f o/$(DEPDIR)/msbrk.Po
 	-rm -f o/$(DEPDIR)/multival.Po
 	-rm -f o/$(DEPDIR)/new_init.Po
-	-rm -f o/$(DEPDIR)/nfunlink.Po
 	-rm -f o/$(DEPDIR)/nsocket.Po
 	-rm -f o/$(DEPDIR)/num_arith.Po
 	-rm -f o/$(DEPDIR)/num_co.Po
@@ -4716,13 +4564,19 @@ unixport/saved_%: | unixport/raw_% unixp
 		( ! echo $@ | grep -q _gprof$$ || echo "(setq compiler::*default-prof-p* t)" >prof_init.lsp ) && \
 		echo "(system:save-system \"../$@\")" | \
 		cat ../unixport/init_raw.lsp prof_init.lsp - | \
-			GCL_LSPSYSDIR=../$(srcdir)/unixport/ GCL_MEM_BOUND=29 \
+			GCL_LSPSYSDIR=../$(srcdir)/unixport/ \
 				../unixport/raw_$* $$(dirname $$(pwd))/unixport/ -libdir $$(dirname $$(pwd))/  && \
-		rm -f ../unixport/gcl_cmpnopt.lsp #FIXME GCL_MEM_BOUND darwin limited raw heap xcode linker __huge issue
+		rm -f ../unixport/gcl_cmpnopt.lsp
 	rm -rf sb_$*
 
 unixport/raw_%: unixport/lib%.a $(FF) $(LF)
 	$(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS) #FIXME relro
+	! which otool >/dev/null || \
+		! otool -l $@ |grep -q LC_DYLD_CHAINED_FIXUPS || \
+		( echo Relinking raw image for mac arm && \
+		  $(CC) \
+                     $$(otool -l $@ | bin/mac_arm_relink ps=$(SEGMENT_ALIGNMENT_BITS) base=$(TEXT_BASE)) \
+                     $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS))
 
 unixport/gcl_cmpnopt_gcl_gprof.lsp unixport/gcl_cmpnopt_ansi_gcl_gprof.lsp:\
 unixport/gcl_cmpnopt_%_gprof.lsp: unixport/gcl_cmpnopt_%.lsp
@@ -4737,8 +4591,8 @@ $(addprefix unixport/lib,$(addsuffix .a,
 unixport/lib%.a: lib/libbase_gcl.a $(LIBGPROF) unixport/sys_%.o
 $(addprefix unixport/lib,$(addsuffix .a,gcl_gprof ansi_gcl_gprof)): \
 unixport/lib%.a:lib/libbase_gcl_gprof.a unixport/sys_%.o
-
-.POSIX: # parallel job ordering
+$(addprefix gcl0/,$(L0_OBJS)): | $(addprefix gcl0/,$(M0_OBJS))
+$(addprefix gcl0/,$(M0_OBJS)): | $(addprefix gcl0/,$(E0_OBJS))
 unixport/libgcl0.a: $(addprefix gcl0/,$(E0_OBJS) $(M0_OBJS) $(L0_OBJS))
 
 $(addprefix unixport/lib,$(addsuffix .a,gcl1 gcl2 gcl3 gcl)):\
@@ -4776,6 +4630,7 @@ unixport/pcl_gcl:  | unixport/saved_mod_
 unixport/ansi_gcl:  | unixport/saved_pcl_gcl
 $(addprefix unixport/,gcl0 gcl1): unixport/% : unixport/cinit.lisp | %
 	echo "(system:save-system \"$@\")" | cat $< - | $(word 2,$|)
+
 $(addprefix unixport/,gcl2 gcl3 gcl mod_gcl): unixport/% : | %
 	ln -snf $$(basename $(word 2,$|)) $@
 
@@ -4809,8 +4664,8 @@ $(addprefix gcl0/,$(LL_OBJS)): gcl0/%.o
 $(addprefix gcl0/,$(LC_OBJS)): gcl0/%.o : cmpnew/%.lsp
 gcl0/%.o: | unixport/gcl0
 	rm -f $(@D)/$*.done
-	$| -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@
-	[ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \
+	$(word 1,$|) -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@
+	[ "$*" = "gcl_evalmacros" ] || [ "$*" = "gcl_top" ] || [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \
 		ln -f $@ $$(echo $@ |sed 's,\.o,\.done,g') #FIXME directory link
 
 $(addprefix gcl1/,$(LL_OBJS)): gcl1/%.o : lsp/%.lsp
--- /dev/null
+++ gcl27-2.7.1/bin/mac_arm_relink
@@ -0,0 +1,37 @@
+#!/usr/bin/awk -f
+
+function from_hex (hh) {
+    jj=0;
+    if (substr(hh,1,2)=="0x")
+	hh=substr(hh,3,length(hh));
+    for (ii=1;ii<=length(hh);ii++)
+	jj=jj*16+A[substr(hh,ii,1)];
+    return jj;
+}
+function to_hex(jj) {
+    ss="";
+    for (;jj;jj=kk) {
+	kk=int(jj/16);
+	ss=substr(z,jj-kk*16+1,1) ss;
+    }
+    return ss;
+}
+
+
+BEGIN{z="0123456789abcdef";for (i=1;i<=length(z);i++) A[substr(z,i,1)]=i-1;}
+/^  *cmd / {c=$2;next}
+/^  *segname/ {n=$2;next}
+/^  *vmsize/ {if (c=="LC_SEGMENT_64") A[n]=$2;}
+END {
+    p=1;
+    for (i=0;i<ps;i++) p=p*2;
+    j="-Wl,-no_fixup_chains -Wl,-segaddr,__TEXT," base;
+    dc=from_hex(base);
+    dc=int((dc+from_hex(A["__TEXT"])+p+p-1)/p)*p;
+    j=j " -Wl,-segaddr,__DATA_CONST,0x" to_hex(dc);
+    dc=int((dc+from_hex(A["__DATA_CONST"])+p+p-1)/p)*p;
+    j=j " -Wl,-segaddr,__DATA,0x" to_hex(dc);
+    dc=int((dc+from_hex(A["__DATA"])+p+p-1)/p)*p;
+    j=j " -Wl,-segaddr,__HEAP,0x" to_hex(dc);
+    print j;
+}
--- gcl27-2.7.1.orig/cmpnew/gcl_cmpcall.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmpcall.lsp
@@ -144,7 +144,7 @@
       (list (make-list (length all) :initial-element t)
 	    '* #.(flags ans set svt) 
 	    (ms
-	    "({object _z,_f=fcall.fun=#0;fixnum _v=fcall.valp=(fixnum)#v;char _n=fcall.argd=#n-1;
+	    "({object _z,_f=fcall.fun=#0;fixnum _v=fcall.valp=(fixnum)#v;volatile char _n=fcall.argd=#n-1;
         _n=Rset &&
             !_f->fun.fun_argd &&
             _n>=_f->fun.fun_minarg &&
--- gcl27-2.7.1.orig/cmpnew/gcl_cmpfun.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmpfun.lsp
@@ -132,7 +132,7 @@
 	    (ms
 	     "({fixnum _v=(fixnum)#v;object _z,_f=(#0),_l=(#1),_ll=_l;
         object _x4=Cnil,_x3=Cnil,_x2=Cnil,_x1=Cnil,_x0=Cnil;
-        char _m=(#n-2),_n=Rset && !_f->fun.fun_argd ? _f->fun.fun_minarg-_m : -(MAX_ARGS+1);
+        char _m=(#n-2);volatile char _n=Rset && !_f->fun.fun_argd ? _f->fun.fun_minarg-_m : -(MAX_ARGS+1);
         char _reg=_f->fun.fun_minarg==_f->fun.fun_maxarg;
         fcall.fun=_f;fcall.valp=_v;fcall.argd=-(#n-1);
         switch (_n) {
--- gcl27-2.7.1.orig/cmpnew/gcl_cmptag.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmptag.lsp
@@ -62,7 +62,8 @@
   (unless (tag-p form)
     (mapc (lambda (x)
 	    (when (var-p x)
-	      (incf (var-register x) (the fixnum *reg-amount*))))
+	      (unless (>= (var-register x) (ash (the fixnum *reg-amount*) 2))
+		(incf (var-register x) (the fixnum *reg-amount*)))))
 	  (info-ref (cadr form)))))
 
 (defun intersection-p (l1 l2)
--- gcl27-2.7.1.orig/cmpnew/gcl_cmptype.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmptype.lsp
@@ -502,6 +502,18 @@
 (defun range-decomp (tp)
   (mapcan (lambda (x &aux (f (pop x))(z (type-and tp x))) (when z (list (cons f z)))) +cmp-range-types+))
 
+(defun allocate-basic-stream-propagator (f tp)
+  (declare (ignore f))
+  (reduce
+   (lambda (y x)
+     (if (type-and (car x) tp)
+	 (type-or1 (cadr x) y)
+       y))
+   '#.(mapcar (lambda (x) (list (object-tp x) (cmp-norm-tp (type-of (allocate-basic-stream x)))))
+	     (let ((i -1))
+	       (mapl (lambda (x) (setf (car x) (incf i))) (make-list (si::btp-count #tstream)))))
+   :initial-value nil))
+(si::putprop 'allocate-basic-stream 'allocate-basic-stream-propagator 'type-propagator)
 
 (dolist (l '(si::number-plus si::number-minus si::number-times + - * exp tanh sinh asinh))
   (si::putprop l 'super-range 'type-propagator))
--- gcl27-2.7.1.orig/configure
+++ gcl27-2.7.1/configure
@@ -699,6 +699,8 @@ GMP
 HAVE_MALLOC_ZONE_MEMALIGN
 AMM_GPROF_FALSE
 AMM_GPROF_TRUE
+SEGMENT_ALIGNMENT_BITS
+TEXT_BASE
 GCL_CC
 CPP
 RANLIB
@@ -827,6 +829,11 @@ enable_debug
 enable_static
 enable_pic
 enable_dependency_tracking
+enable_text_base
+enable_segment_alignment_bits
+enable_initial_heap_vmsize
+enable_saved_pre_image_span
+enable_saved_image_span
 enable_gprof
 with_x
 enable_xdr
@@ -1483,7 +1490,7 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-silent-rules   less verbose build output (undo: "make V=1")
   --disable-silent-rules  verbose build output (undo: "make V=0")
-put bootstrap code in shared library to be discarded
+  --enable-libtool will put bootstrap code in shared library to be discarded
   --enable-machine=XXXX will force the use of one of the definitions in h/XXXX.defs
   --enable-widecons will use a three word cons with simplified typing
   --enable-safecdr will protect cdr from immfix and speed up type processing
@@ -1493,7 +1500,7 @@ put bootstrap code in shared library to
   --enable-bdssize=XXXX will compile in a binding stack of size XXX
   --enable-ihssize=XXXX will compile in a invocation history stack of size XXX
   --enable-frssize=XXXX will compile in a frame stack of size XXX
---enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info
+  --enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info
   --enable-xgcl=yes will compile in support for XGCL
   --enable-debug builds gcl with -g in CFLAGS to enable running under gdb
   --enable-static will link your GCL against static as opposed to shared system libraries
@@ -1502,11 +1509,16 @@ put bootstrap code in shared library to
                           do not reject slow dependency extractors
   --disable-dependency-tracking
                           speeds up one-time build
+  --enable-text_base=0x.... set base address for __TEXT
+  --enable-segment_alignment_bits=... set bit alignment for mach-o image segments
+  --enable-initial_heap_vmsize=0x.... set heap size for raw images
+  --enable-saved_pre_image_span=0x.... set address span for saved pre images
+  --enable-saved_image_span=0x.... set address span for saved images
   --enable-gprof builds gcl with -pg in CFLAGS to enable profiling with gprof
   --enable-xdr=yes will compile in support for XDR
   --enable-immfix will enable an immediate fixnum table above the C stack
   --enable-fastimmfix=XXXX will reject low immediate fixnums unless 2^XXX can be attained
- --enable-min_pagewidth=xxx sets 1<<xxx byte pages
+  --enable-min_pagewidth=xxx sets 1<<xxx byte pages
   --enable-readline    enables command line completion via the readline library
   --enable-tcltk will try to build gcl-tk
   --enable-tkconfig=XXXX will force the use of a TK_CONFIG_PREFIX=XXXXX as place to look for tkConfig.sh and tclConfig.sh
@@ -4148,6 +4160,7 @@ case $canonical in
     powerpc*linux*) use=powerpc-linux;;
     powerpc-*-darwin*) use=powerpc-macosx;;
     *86*darwin*) use=386-macosx;;
+    *aarch64*darwin*) use=aarch64-macosx;;
     i*mingw*|i*msys*) use=mingw;;
     *cygwin*)
         if $CC -v 2>&1 | fgrep ming > /dev/null ;
@@ -7272,7 +7285,7 @@ case $use in
     386-macosx)
 #	assert_arg_to_cflags -Wno-error=implicit-function-declaration
 	add_arg_to_cflags -Wno-incomplete-setjmp-declaration
-	assert_arg_to_ldflags -Wl,-no_pie
+	assert_arg_to_ldflags -Wl,-no_pie #FIXME remove
 	if test "$build_cpu" = "x86_64" ; then
 	    assert_arg_to_cflags -m64
 	    assert_arg_to_ldflags -m64
@@ -7282,9 +7295,76 @@ case $use in
 	    assert_arg_to_ldflags -m32
 	    assert_arg_to_ldflags -Wl,-headerpad,56
         fi;;
+    aarch64-macosx)
+#	LISP_CFLAGS="$LISP_CFLAGS -mcmodel=large" #fixme 26bit trampolines
+	# Check whether --enable-text_base was given.
+if test ${enable_text_base+y}
+then :
+  enableval=$enable_text_base; TEXT_BASE=$enableval
+else case e in #(
+  e) TEXT_BASE=0x10000000000 ;;
+esac
+fi
+
+
+	# Check whether --enable-segment_alignment_bits was given.
+if test ${enable_segment_alignment_bits+y}
+then :
+  enableval=$enable_segment_alignment_bits; SEGMENT_ALIGNMENT_BITS=$enableval
+else case e in #(
+  e) SEGMENT_ALIGNMENT_BITS=14 ;;
+esac
+fi
+
+
+	;;
     FreeBSD) assert_arg_to_ldflags -Z;;
 esac
 
+case $use in
+    *macosx*)
+        # Check whether --enable-initial_heap_vmsize was given.
+if test ${enable_initial_heap_vmsize+y}
+then :
+  enableval=$enable_initial_heap_vmsize; INITIAL_HEAP_VMSIZE=$enableval
+else case e in #(
+  e) INITIAL_HEAP_VMSIZE=0x70000000 ;;
+esac
+fi
+
+
+printf "%s\n" "#define INITIAL_HEAP_VMSIZE $INITIAL_HEAP_VMSIZE" >>confdefs.h
+
+
+	#Support libboot option
+	# Check whether --enable-saved_pre_image_span was given.
+if test ${enable_saved_pre_image_span+y}
+then :
+  enableval=$enable_saved_pre_image_span; SAVED_PRE_IMAGE_SPAN=$enableval
+else case e in #(
+  e) SAVED_PRE_IMAGE_SPAN=0x100000000 ;;
+esac
+fi
+
+
+printf "%s\n" "#define SAVED_PRE_IMAGE_SPAN $SAVED_PRE_IMAGE_SPAN" >>confdefs.h
+
+
+	# Check whether --enable-saved_image_span was given.
+if test ${enable_saved_image_span+y}
+then :
+  enableval=$enable_saved_image_span; SAVED_IMAGE_SPAN=$enableval
+else case e in #(
+  e) SAVED_IMAGE_SPAN=0x2000000000 ;;
+esac
+fi
+
+
+printf "%s\n" "#define SAVED_IMAGE_SPAN $SAVED_IMAGE_SPAN" >>confdefs.h
+
+	;;
+esac
+
 if test "$enable_static" = "yes" ; then
     assert_arg_to_ldflags -static
     assert_arg_to_ldflags -Wl,-zmuldefs
@@ -11829,6 +11909,7 @@ LI_GITTAG="$GIT_TAG"
 
 LI_RELEASE="$RELEASE"
 
+#LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS $LISP_CFLAGS" | sed 's,-pg\b,,g'`\""
 LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS" | sed 's,-pg\b,,g'`\""
 
 LI_DFP="\"$GPL_FLAG\""
--- gcl27-2.7.1.orig/configure.ac
+++ gcl27-2.7.1/configure.ac
@@ -60,6 +60,7 @@ case $canonical in
     powerpc*linux*) use=powerpc-linux;;
     powerpc-*-darwin*) use=powerpc-macosx;;
     *86*darwin*) use=386-macosx;;
+    *aarch64*darwin*) use=aarch64-macosx;;
     i*mingw*|i*msys*) use=mingw;;
     *cygwin*)
         if $CC -v 2>&1 | fgrep ming > /dev/null ;
@@ -71,7 +72,7 @@ case $canonical in
     i?86-pc-solaris*) use=solaris-i386;;
 esac
 
-AC_ARG_ENABLE([libboot],[put bootstrap code in shared library to be discarded],
+AC_ARG_ENABLE([libboot],[  --enable-libtool will put bootstrap code in shared library to be discarded],
 	      [libboot=$enableval],[libboot="yes"])
 
 if test "$use" = "gnuwin95" ; then
@@ -132,7 +133,7 @@ AC_ARG_ENABLE([ihssize],[  --enable-ihss
 AC_ARG_ENABLE([frssize],[  --enable-frssize=XXXX will compile in a frame stack of size XXX],
 	      [AC_DEFINE_UNQUOTED(FRSSIZE,$enableval,[frame stack size])])
 
-AC_ARG_ENABLE([infodir],[--enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info],
+AC_ARG_ENABLE([infodir],[  --enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info],
 	      [INFO_DIR=$enableval],[INFO_DIR=$prefix/share/info])
 INFO_DIR=`eval echo $INFO_DIR/`
 
@@ -329,7 +330,7 @@ case $use in
     386-macosx)
 #	assert_arg_to_cflags -Wno-error=implicit-function-declaration
 	add_arg_to_cflags -Wno-incomplete-setjmp-declaration
-	assert_arg_to_ldflags -Wl,-no_pie
+	assert_arg_to_ldflags -Wl,-no_pie #FIXME remove
 	if test "$build_cpu" = "x86_64" ; then
 	    assert_arg_to_cflags -m64
 	    assert_arg_to_ldflags -m64
@@ -339,9 +340,35 @@ case $use in
 	    assert_arg_to_ldflags -m32
 	    assert_arg_to_ldflags -Wl,-headerpad,56
         fi;;
+    aarch64-macosx)
+#	LISP_CFLAGS="$LISP_CFLAGS -mcmodel=large" #fixme 26bit trampolines
+	AC_ARG_ENABLE([text_base],[  --enable-text_base=0x.... set base address for __TEXT],
+	      [TEXT_BASE=$enableval],[TEXT_BASE=0x10000000000])
+	AC_SUBST(TEXT_BASE)
+	AC_ARG_ENABLE([segment_alignment_bits],[  --enable-segment_alignment_bits=... set bit alignment for mach-o image segments],
+	      [SEGMENT_ALIGNMENT_BITS=$enableval],[SEGMENT_ALIGNMENT_BITS=14])
+	AC_SUBST(SEGMENT_ALIGNMENT_BITS)
+	;;
     FreeBSD) assert_arg_to_ldflags -Z;;
 esac
 
+case $use in
+    *macosx*)
+        AC_ARG_ENABLE([initial_heap_vmsize],[  --enable-initial_heap_vmsize=0x.... set heap size for raw images],
+          [INITIAL_HEAP_VMSIZE=$enableval],[INITIAL_HEAP_VMSIZE=0x70000000])
+	AC_DEFINE_UNQUOTED(INITIAL_HEAP_VMSIZE,$INITIAL_HEAP_VMSIZE,[heap size for raw images])
+
+	#Support libboot option
+	AC_ARG_ENABLE([saved_pre_image_span],[  --enable-saved_pre_image_span=0x.... set address span for saved pre images],
+          [SAVED_PRE_IMAGE_SPAN=$enableval],[SAVED_PRE_IMAGE_SPAN=0x100000000])
+	AC_DEFINE_UNQUOTED(SAVED_PRE_IMAGE_SPAN,$SAVED_PRE_IMAGE_SPAN,[address span for saved pre images])
+
+	AC_ARG_ENABLE([saved_image_span],[  --enable-saved_image_span=0x.... set address span for saved images],
+          [SAVED_IMAGE_SPAN=$enableval],[SAVED_IMAGE_SPAN=0x2000000000])
+	AC_DEFINE_UNQUOTED(SAVED_IMAGE_SPAN,$SAVED_IMAGE_SPAN,[address span for saved images])
+	;;
+esac
+
 if test "$enable_static" = "yes" ; then
     assert_arg_to_ldflags -static
     assert_arg_to_ldflags -Wl,-zmuldefs
@@ -922,7 +949,7 @@ else
    AC_MSG_RESULT([not found])
 fi
 
-AC_ARG_ENABLE(min_pagewidth,[ --enable-min_pagewidth=xxx sets 1<<xxx byte pages],
+AC_ARG_ENABLE(min_pagewidth,[  --enable-min_pagewidth=xxx sets 1<<xxx byte pages],
              [min_pagewidth=$enableval],[])
 
 AC_MSG_CHECKING(for pagewidth)
@@ -1924,6 +1951,7 @@ LI_GITTAG="$GIT_TAG"
 AC_SUBST(LI_GITTAG)
 LI_RELEASE="$RELEASE"
 AC_SUBST(LI_RELEASE)
+#LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS $LISP_CFLAGS" | sed 's,-pg\b,,g'`\""
 LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS" | sed 's,-pg\b,,g'`\""
 AC_SUBST(LI_CC)
 LI_DFP="\"$GPL_FLAG\""
--- gcl27-2.7.1.orig/git.tag
+++ gcl27-2.7.1/git.tag
@@ -1 +1 @@
-"Version_2_7_2pre17"
+"Version_2_7_2pre18"
--- gcl27-2.7.1.orig/h/aarch64-linux.h
+++ gcl27-2.7.1/h/aarch64-linux.h
@@ -7,3 +7,5 @@
 #define SGC
 
 #define OUTPUT_MACH bfd_mach_aarch64
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
--- /dev/null
+++ gcl27-2.7.1/h/aarch64-macosx.h
@@ -0,0 +1,157 @@
+/*
+    GCL config file for Mac OS X.
+
+    To be used with the following configure switches :
+        --enable-debug (optional)
+        --enable-machine=powerpc-macosx
+        --disable-statsysbfd
+        --enable-custreloc
+
+    Aurelien Chanudet <aurelien.chanudet(at)m4x.org>
+*/
+
+/* For those who are using ACL2, please remember to enlarge your shell stack (ulimit -s 8192).  */
+
+#include "bsd.h"
+
+#define DARWIN
+
+/* Mac OS X has its own executable file format (Mach-O).  */
+#undef HAVE_AOUT
+#undef HAVE_ELF
+
+
+/* Alternatively, we could use the global variable vm_page_size.  */
+/* #define PAGEWIDTH 12 */
+
+
+#include <unistd.h> /* to get sbrk defined */
+
+
+/** (si::save-system "...") a.k.a. unexec implementation  */
+
+/* The implementation of unexec for GCL is based on Andrew Choi's work for Emacs.
+   Previous pioneering implementation of unexec for Mac OS X by Steve Nygard.  */
+#define UNIXSAVE "unexmacosx.c"
+
+#undef malloc
+#define malloc my_malloc
+
+#undef free
+#define free my_free
+
+#undef realloc
+#define realloc my_realloc
+
+#undef valloc
+#define valloc my_valloc
+
+#undef calloc
+#define calloc my_calloc
+
+
+/** Dynamic loading implementation  */
+
+/* The sfasl{bfd,macosx,macho}.c files are included from sfasl.c.  */
+#ifdef HAVE_LIBBFD
+#define SEPARATE_SFASL_FILE "sfaslbfd.c"
+#else
+#define SPECIAL_RSYM "rsym_macosx.c"
+#define SEPARATE_SFASL_FILE "sfaslmacho.c"
+#endif
+
+/* The file has non Mach-O stuff appended.  We need to know where the Mach-O stuff ends.  */
+#include <stdio.h>
+extern int seek_to_end_ofile (FILE *);
+#define SEEK_TO_END_OFILE(fp) seek_to_end_ofile(fp)
+
+/** Stratified garbage collection implementation [ (si::sgc-on t) ]  */
+
+/* Mac OS X has sigaction (this is needed in o/usig.c)  */
+#define HAVE_SIGACTION
+
+/* Copied from {Net,Free,Open}BSD.h  */
+/* Modified according to Camm's instructions on April 15, 2004.  */
+#define HAVE_SIGPROCMASK
+
+/* until the sgc/save problem can be fixed.  20050114 CM*/
+/* #define SGC */
+
+#define MPROTECT_ACTION_FLAGS (SA_SIGINFO | SA_RESTART)
+
+#define INSTALL_MPROTECT_HANDLER                        \
+do {                                                    \
+  static struct sigaction sact;                         \
+  sigfillset (&(sact.sa_mask));                         \
+  sact.sa_flags = MPROTECT_ACTION_FLAGS;                \
+  sact.sa_sigaction = (void (*) ()) memprotect_handler; \
+  sigaction (SIGBUS, &sact, 0);                         \
+  sigaction (SIGSEGV, &sact, 0);                        \
+} while (0);
+
+#define GET_FAULT_ADDR(sig,code,sv,a) ((siginfo_t *)code)->si_addr
+
+
+/** Misc stuff  */
+
+#define IEEEFLOAT
+
+/* Mac OS X does not have _fileno as in linux.h. Nor does it have _cnt as in bsd.h.
+   Let's see what we can do with this declaration found in {Net,Free,Open}BSD.h.  */
+#undef LISTEN_FOR_INPUT
+#define LISTEN_FOR_INPUT(fp)                                            \
+do {int c=0;                                                            \
+  if (((FILE *)fp)->_r <=0 && (c=0, ioctl(((FILE *)fp)->_file, FIONREAD, &c), c<=0)) \
+        return(FALSE);                                                  \
+} while (0)
+
+#define GET_FULL_PATH_SELF(a_)                              \
+do {                                                        \
+uint32_t bufsize = 1024;                               \
+static char buf [1024];                                     \
+static char fub [1024];                                     \
+if (_NSGetExecutablePath (buf, &bufsize) != 0) {            \
+    error ("_NSGetExecutablePath failed");                  \
+}                                                           \
+if (realpath (buf, fub) == 0) {                             \
+    error ("realpath failed");                              \
+}                                                           \
+(a_) = fub;                                                 \
+} while (0)
+
+#define C_GC_OFFSET 4
+#include <mach-o/arm64/reloc.h>
+#define RELOC_H "mach64_aarch64_reloc.h"
+
+#define FPE_TCODE(x_) \
+  ({ufixnum _x=(x_),_y=0;			\
+   switch(_x) {					\
+   case FPE_FLTINV: _y=FE_INVALID;break;	\
+   case FPE_FLTDIV: _y=FE_DIVBYZERO;break;	\
+   case FPE_FLTOVF: _y=FE_OVERFLOW;break;	\
+   case FPE_FLTUND: _y=FE_UNDERFLOW;break;	\
+   case FPE_FLTRES: _y=FE_INEXACT;break;	\
+   }						\
+   _y;						\
+  })
+#define SF(a_) ((siginfo_t *)a_)
+#define FPE_CODE(i_,v_) make_fixnum(FPE_TCODE((fixnum)SF(i_)->si_code))
+#define FPE_ADDR(i_,v_) make_fixnum((fixnum)SF(i_)->si_addr)
+#define FPE_CTXT(v_) Cnil
+
+#define FPE_INIT Cnil
+
+#include <sys/param.h>/*PATH_MAX MAXPATHLEN*/
+#undef MIN
+#undef MAX
+
+#undef sbrk
+#define sbrk msbrk
+#define INITIALIZE_BRK msbrk_init();
+
+#include <libkern/OSCacheControl.h>
+#define CLEAR_CACHE sys_icache_invalidate(memory->cfd.cfd_start,memory->cfd.cfd_size)
+
+#define W_X
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
--- gcl27-2.7.1.orig/h/arm-linux.h
+++ gcl27-2.7.1/h/arm-linux.h
@@ -8,3 +8,5 @@
 #define NEED_STACK_CHK_GUARD
 
 #define OUTPUT_MACH bfd_mach_arm_9
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
--- gcl27-2.7.1.orig/h/armhf-linux.h
+++ gcl27-2.7.1/h/armhf-linux.h
@@ -8,3 +8,5 @@
 #define NEED_STACK_CHK_GUARD
 
 #define OUTPUT_MACH bfd_mach_arm_9
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
--- /dev/null
+++ gcl27-2.7.1/h/disable_mac_aslr.h
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <spawn.h>
+#include <sys/wait.h>
+#include <mach-o/dyld.h>
+
+#ifndef POSIX_SPAWN_DISABLE_ASLR
+#define POSIX_SPAWN_DISABLE_ASLR 0x0100
+#endif
+
+void
+disable_aslr(int argc, char **argv, char **envp) {
+
+  pid_t pid;
+  posix_spawnattr_t attr;
+
+  if (!_dyld_get_image_vmaddr_slide(0)) {
+    return;
+  }
+
+  posix_spawnattr_init(&attr);
+  posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETEXEC | POSIX_SPAWN_DISABLE_ASLR);
+  if (posix_spawn(&pid, argv[0], NULL, &attr, argv, envp)) {
+    perror("posix_spawn to disable ASLR failed");
+    gcl_abort();
+  }
+  posix_spawnattr_destroy(&attr);
+
+}
--- gcl27-2.7.1.orig/h/gclincl.h.in
+++ gcl27-2.7.1/h/gclincl.h.in
@@ -222,6 +222,9 @@
 /* size of immediate fixnum address space */
 #undef IM_FIX_LIM
 
+/* heap size for raw images */
+#undef INITIAL_HEAP_VMSIZE
+
 /* symbol name mangling convention */
 #undef LEADING_UNDERSCORE
 
@@ -297,6 +300,12 @@
 /* rl_readline_name returns type const char */
 #undef RL_READLINE_NAME_TYPE_CONST_CHAR
 
+/* address span for saved images */
+#undef SAVED_IMAGE_SPAN
+
+/* address span for saved pre images */
+#undef SAVED_PRE_IMAGE_SPAN
+
 /* The size of 'char', as computed by sizeof. */
 #undef SIZEOF_CHAR
 
--- gcl27-2.7.1.orig/h/lu.h
+++ gcl27-2.7.1/h/lu.h
@@ -504,7 +504,7 @@ struct function {
 struct cfdata {
 
   FRSTWRD(tt,
-	  cfw:LM(18),
+	  cfd_nexp:LM(18),
 	  cfd_prof:1       /* profiling */
 	  );
 
--- /dev/null
+++ gcl27-2.7.1/h/mach64_aarch64_reloc.h
@@ -0,0 +1,57 @@
+#include <mach-o/arm64/reloc.h>
+
+#define GOT_RELOC(ri)							\
+  ri->r_type==ARM64_RELOC_GOT_LOAD_PAGE21||				\
+    ri->r_type==ARM64_RELOC_GOT_LOAD_PAGEOFF12||			\
+    ri->r_type==ARM64_RELOC_BRANCH26
+#define GOT_RELOC_EXTRA(ri) ri->r_type==ARM64_RELOC_BRANCH26 ? 2*sizeof(int)/sizeof(ul) : 0
+
+  case ARM64_RELOC_ADDEND:
+    addend=a;
+    break;
+  case ARM64_RELOC_BRANCH26:
+    addend=0;
+    if (labs(((long)(ri->r_pcrel ? a-(ul)q : a))/4)&(~MASK(25))) {
+      int tramp[]={0x58ffffd0, /*ldr 19bit pc relative x16*/
+		   0xd61f0200};/*br x16*/
+      got+=n1[ri->r_symbolnum].n_desc-1;
+      *got++=a;
+      memcpy(got,tramp,sizeof(tramp));
+      a=(ul)got;
+    }
+    add_vals(q,MASK(26),((long)(ri->r_pcrel ? a-(ul)q : a))/4);
+    break;
+  case ARM64_RELOC_GOT_LOAD_PAGE21:
+    got+=n1[ri->r_symbolnum].n_desc-1;
+    *got=a;
+    a=(ul)got;
+  case ARM64_RELOC_PAGE21:
+    a+=addend;
+    addend=0;
+#define PG(x) ((x) & ~0xfff)
+    a=((long)(PG(a)-PG((ul)q))) / 0x1000;
+#undef PG
+    store_val(q,MASK(2) << 29, (a & 0x3) << 29);
+    store_val(q,MASK(19) << 5, (a & 0x1ffffc) << 3);
+    break;
+  case ARM64_RELOC_GOT_LOAD_PAGEOFF12:
+    got+=n1[ri->r_symbolnum].n_desc-1;
+    *got=a;
+    a=(ul)got;
+  case ARM64_RELOC_PAGEOFF12:
+    a+=addend;
+    addend=0;
+    a&=0xfff;
+    a>>=(((*q)>>29)&0x1)*                              /*not add/sub*/
+          ((((*q)>>26)&0x1) ?                          /*simd*/
+	   ((((*q)>>22)&0x3) ?
+	    (((*q)>>22)&0x3)+1 : (((*q)>>30)&0x1)) :
+	   (((*q)>>30)&0x3));                          /*gp*/
+    store_val(q,MASK(12) << 10, a << 10);
+    break;
+  case ARM64_RELOC_UNSIGNED:
+    addend=0;
+    if (ri->r_extern || !ri->r_pcrel) {
+      add_valu(q,~0UL,ri->r_pcrel ? a-rel : a);
+    }
+    break;
--- gcl27-2.7.1.orig/h/riscv64-linux.h
+++ gcl27-2.7.1/h/riscv64-linux.h
@@ -11,3 +11,5 @@
 #define NEED_STACK_CHK_GUARD
 
 #define OUTPUT_MACH bfd_mach_riscv64
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
--- gcl27-2.7.1.orig/info/control.texi
+++ gcl27-2.7.1/info/control.texi
@@ -260,7 +260,7 @@ Some of the substitutions are only valid
 certain types of events;  if they are used for other types of events
 the value substituted is undefined.
 
-@table @asis{}
+@table @asis
 @item @b{%%}
 Replaced with a single percent.
 @item @b{|%#|}
@@ -515,7 +515,7 @@ tk-dialog \- Create modal dialog and wai
 This procedure is part of the Tk script library.
 Its arguments describe a dialog box:
 
-@table @asis{}
+@table @asis
 @item @i{window}
 Name of top-level window to use for dialog.  Any existing window
 by this name is destroyed.
@@ -602,7 +602,7 @@ the focus.
 
 The @b{focus} command can take any of the following forms:
 
-@table @asis{}
+@table @asis
 @item @b{focus}
 If invoked with no arguments, @b{focus} returns the path name of
 the current focus window, or @b{none} if there is no focus window.
@@ -750,7 +750,7 @@ grab on a given display at once.
 
 The @b{grab} command can take any of the following forms:
 
-@table @asis{}
+@table @asis
 @item @b{grab }@r{?}@b{:global}@r{? }@i{window}
 Same as @b{grab :set}, described below.
 @item @b{grab :current }@r{?}@i{window}?
@@ -926,7 +926,7 @@ At any given time, the only menus availa
 are those associated with the top-level window containing the
 input focus.
 Menu traversal is initiated by one of the following actions:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 If <F10> is typed, then the first menu button in the list for the
@@ -950,7 +950,7 @@ its first entry.
 
 Once a menu has been posted, the input focus is switched to that
 menu and the following actions are possible:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 Typing <ESC> or clicking mouse button 1 outside the menu button or
@@ -1039,7 +1039,7 @@ options;  @i{priority}@r{ defaults to }@
 The @i{priority}@r{ arguments to the }@b{option} command are
 normally specified symbolically using one of the following values:
 
-@table @asis{}
+@table @asis
 @item @b{widgetDefault}
 Level 20.  Used for default values hard-coded into widgets.
 @item @b{startupFile}
@@ -1097,7 +1097,7 @@ the widget @b{.a.b.c}.  Command-line swi
 as long as the abbreviation is unambiguous.
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:activebackground}}
 @flushright
 Name=@code{"@b{activeBackground}@r{"} Class=@code{"}@b{Foreground}"}
@@ -1111,7 +1111,7 @@ will cause some action to occur.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:activeborderwidth}}
 @flushright
 Name=@code{"@b{activeBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@@ -1127,7 +1127,7 @@ than one element at a time (e.g. menus b
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:activeforeground}}
 @flushright
 Name=@code{"@b{activeForeground}@r{"} Class=@code{"}@b{Background}"}
@@ -1139,7 +1139,7 @@ See above for definition of active eleme
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:anchor}}
 @flushright
 Name=@code{"@b{anchor}@r{"} Class=@code{"}@b{Anchor}"}
@@ -1155,7 +1155,7 @@ top-left corner is at the top-left corne
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:background or :bg}}
 @flushright
 Name=@code{"@b{background}@r{"} Class=@code{"}@b{Background}"}
@@ -1167,7 +1167,7 @@ widget.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:bitmap}}
 @flushright
 Name=@code{"@b{bitmap}@r{"} Class=@code{"}@b{Bitmap}"}
@@ -1185,7 +1185,7 @@ a text display.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:borderwidth or :bd}}
 @flushright
 Name=@code{"@b{borderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@@ -1201,7 +1201,7 @@ The value may have any of the forms acce
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:cursor}}
 @flushright
 Name=@code{"@b{cursor}@r{"} Class=@code{"}@b{Cursor}"}
@@ -1213,7 +1213,7 @@ The value may have any of the forms acce
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:cursorbackground}}
 @flushright
 Name=@code{"@b{cursorBackground}@r{"} Class=@code{"}@b{Foreground}"}
@@ -1229,7 +1229,7 @@ the @b{insertBackground}@r{ option.}
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:cursorborderwidth}}
 @flushright
 Name=@code{"@b{cursorBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@@ -1244,7 +1244,7 @@ the @b{insertBorderWidth}@r{ option.}
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:cursorofftime}}
 @flushright
 Name=@code{"@b{cursorOffTime}@r{"} Class=@code{"}@b{OffTime}"}
@@ -1260,7 +1260,7 @@ the @b{insertOffTime}@r{ option.}
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:cursorontime}}
 @flushright
 Name=@code{"@b{cursorOnTime}@r{"} Class=@code{"}@b{OnTime}"}
@@ -1274,7 +1274,7 @@ the @b{insertOnTime}@r{ option.}
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:cursorwidth}}
 @flushright
 Name=@code{"@b{cursorWidth}@r{"} Class=@code{"}@b{CursorWidth}"}
@@ -1292,7 +1292,7 @@ the @b{insertWidth}@r{ option.}
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:disabledforeground}}
 @flushright
 Name=@code{"@b{disabledForeground}@r{"} Class=@code{"}@b{DisabledForeground}"}
@@ -1307,7 +1307,7 @@ with a stippled fill pattern.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:exportselection}}
 @flushright
 Name=@code{"@b{exportSelection}@r{"} Class=@code{"}@b{ExportSelection}"}
@@ -1326,7 +1326,7 @@ to export selections.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:font}}
 @flushright
 Name=@code{"@b{font}@r{"} Class=@code{"}@b{Font}"}
@@ -1337,7 +1337,7 @@ Specifies the font to use when drawing t
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:foreground or :fg}}
 @flushright
 Name=@code{"@b{foreground}@r{"} Class=@code{"}@b{Foreground}"}
@@ -1348,7 +1348,7 @@ Specifies the normal foreground color to
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:geometry}}
 @flushright
 Name=@code{"@b{geometry}@r{"} Class=@code{"}@b{Geometry}"}
@@ -1365,7 +1365,7 @@ widgets the units are usually pixels.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:insertbackground}}
 @flushright
 Name=@code{"@b{insertBackground}@r{"} Class=@code{"}@b{Foreground}"}
@@ -1379,7 +1379,7 @@ cursor happens to fall in the selection)
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:insertborderwidth}}
 @flushright
 Name=@code{"@b{insertBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@@ -1392,7 +1392,7 @@ The value may have any of the forms acce
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:insertofftime}}
 @flushright
 Name=@code{"@b{insertOffTime}@r{"} Class=@code{"}@b{OffTime}"}
@@ -1406,7 +1406,7 @@ all the time.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:insertontime}}
 @flushright
 Name=@code{"@b{insertOnTime}@r{"} Class=@code{"}@b{OnTime}"}
@@ -1418,7 +1418,7 @@ milliseconds the insertion cursor should
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:insertwidth}}
 @flushright
 Name=@code{"@b{insertWidth}@r{"} Class=@code{"}@b{InsertWidth}"}
@@ -1434,7 +1434,7 @@ option.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:orient}}
 @flushright
 Name=@code{"@b{orient}@r{"} Class=@code{"}@b{Orient}"}
@@ -1448,7 +1448,7 @@ or @b{vertical} or an abbreviation of on
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:padx}}
 @flushright
 Name=@code{"@b{padX}@r{"} Class=@code{"}@b{Pad}"}
@@ -1466,7 +1466,7 @@ internal space to the left and/or right
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:pady}}
 @flushright
 Name=@code{"@b{padY}@r{"} Class=@code{"}@b{Pad}"}
@@ -1484,7 +1484,7 @@ internal space above and/or below what i
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:relief}}
 @flushright
 Name=@code{"@b{relief}@r{"} Class=@code{"}@b{Relief}"}
@@ -1502,7 +1502,7 @@ the exterior of the widget.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:repeatdelay}}
 @flushright
 Name=@code{"@b{repeatDelay}@r{"} Class=@code{"}@b{RepeatDelay}"}
@@ -1515,7 +1515,7 @@ up- and down-arrows in scrollbars.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:repeatinterval}}
 @flushright
 Name=@code{"@b{repeatInterval}@r{"} Class=@code{"}@b{RepeatInterval}"}
@@ -1528,7 +1528,7 @@ auto-repeats.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:scrollcommand}}
 @flushright
 Name=@code{"@b{scrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"}
@@ -1563,7 +1563,7 @@ options.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:selectbackground}}
 @flushright
 Name=@code{"@b{selectBackground}@r{"} Class=@code{"}@b{Foreground}"}
@@ -1575,7 +1575,7 @@ items.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:selectborderwidth}}
 @flushright
 Name=@code{"@b{selectBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@@ -1588,7 +1588,7 @@ The value may have any of the forms acce
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:selectforeground}}
 @flushright
 Name=@code{"@b{selectForeground}@r{"} Class=@code{"}@b{Background}"}
@@ -1600,7 +1600,7 @@ items.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:setgrid}}
 @flushright
 Name=@code{"@b{setGrid}@r{"} Class=@code{"}@b{SetGrid}"}
@@ -1623,7 +1623,7 @@ entry for more details.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:text}}
 @flushright
 Name=@code{"@b{text}@r{"} Class=@code{"}@b{Text}"}
@@ -1636,7 +1636,7 @@ determined by other options, such as @b{
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:textvariable}}
 @flushright
 Name=@code{"@b{textVariable}@r{"} Class=@code{"}@b{Variable}"}
@@ -1652,7 +1652,7 @@ particular widget and may be determined
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:underline}}
 @flushright
 Name=@code{"@b{underline}@r{"} Class=@code{"}@b{Underline}"}
@@ -1667,7 +1667,7 @@ on.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:xscrollcommand}}
 @flushright
 Name=@code{"@b{xScrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"}
@@ -1684,7 +1684,7 @@ on how this option is used.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:yscrollcommand}}
 @flushright
 Name=@code{"@b{yScrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"}
@@ -1768,7 +1768,7 @@ The first step in placing a child is to
 the cavity it will lie against.  Any one of the following options
 may be used to specify a side:
 
-@table @asis{}
+@table @asis
 @item @b{top}
 Position the child's parcel against the top of the cavity,
 occupying the full width of the cavity.
@@ -1796,7 +1796,7 @@ desired width is the window's requested
 space may be requested for the window using any of the following
 options:
 
-@table @asis{}
+@table @asis
 @item @b{padx }@i{num}
 Add @i{num} pixels to the window's requested width before computing
 the parcel size as described above.
@@ -1825,7 +1825,7 @@ is smaller.  If the parcel is larger tha
 size, then the following options may be used to expand the
 window to partially or completely fill the parcel:
 
-@table @asis{}
+@table @asis
 @item @b{fill}
 Set the window's size to equal the parcel size.
 @item @b{fillx}
@@ -1912,7 +1912,7 @@ packing them in order around the edges o
 The @b{pack} command can have any of several forms, depending
 on the @i{option} argument:
 
-@table @asis{}
+@table @asis
 @item @b{pack }@i{slave }@r{?}@i{slave ...}@r{? ?}@i{options}?
 If the first argument to @b{pack} is a window name (any value
 starting with ``.''), then the command is processed in the same
@@ -1947,7 +1947,7 @@ Defaults to 0.
 If a slave's parcel is larger than its requested dimensions, this
 option may be used to stretch the slave.
 @i{Style} must have one of the following values:
-@table @asis{}
+@table @asis
 @item @b{none}
 Give the slave its requested dimensions plus any internal padding
 requested with @b{:ipadx}@r{ or }@b{:ipady}.  This is the default.
@@ -1998,7 +1998,7 @@ then any unspecified options for them re
 than receiving default values.
 .RE
 
-@table @asis{}
+@table @asis
 @item @b{pack :forget }@i{slave }@r{?}@i{slave ...}?
 Removes each of the @i{slave}s from the packing order for its
 master and unmaps their windows.
@@ -2046,7 +2046,7 @@ This area is called the @i{cavity};  for
 is the entire area of the master.
 
 For each slave the packer carries out the following steps:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 The packer allocates a rectangular @i{parcel} for the slave
@@ -2185,7 +2185,7 @@ If the placer is already managing @i{win
 In this form the @b{place} command returns an empty string as result.
 The following @i{option:value} pairs are supported:
 
-@table @asis{}
+@table @asis
 @item @b{:in }@i{master}
 @i{Master} specifes the path name of the window relative
 to which @i{window} is to be placed.
@@ -2395,7 +2395,7 @@ The first argument to @b{selection} dete
 rest of the arguments and the behavior of the command.  The following
 forms are currently supported:
 
-@table @asis{}
+@table @asis
 @item @b{selection :clear }@i{window}
 If there is a selection anywhere on @i{window}'s display, clear it
 so that no window owns the selection anymore.  Returns an empty string.
@@ -2544,7 +2544,7 @@ particular window.
 The command can take any of a number of different forms
 depending on the @i{option} argument.  The legal forms are:
 
-@table @asis{}
+@table @asis
 @item @b{tk :colormodel }@i{window}@r{ ?}@i{newValue}?
 If @i{newValue} isn't specified, this command returns the current
 color model in use for @i{window}'s screen, which will be either
@@ -2631,7 +2631,7 @@ tkvars \- Variables used or set by Tk
 The following Tcl variables are either set or used by Tk at various times
 in its execution:
 
-@table @asis{}
+@table @asis
 @item @b{tk_library}
 Tk sets this variable hold the name of a directory containing a library
 of Tcl scripts related to Tk.  These scripts include an initialization
@@ -2763,7 +2763,7 @@ The @b{winfo} command is used to retriev
 managed by Tk.  It can take any of a number of different forms,
 depending on the @i{option} argument.  The legal forms are:
 
-@table @asis{}
+@table @asis
 @item @b{winfo :atom }@i{name}
 Returns a decimal string giving the integer identifier for the
 atom whose name is @i{name}.  If no atom exists with the name
@@ -2964,7 +2964,7 @@ top-level window.
 
 The legal forms for the @b{wm} command are:
 
-@table @asis{}
+@table @asis
 @item @b{wm :aspect }@i{window}@r{ ?}@i{minNumer minDenom maxNumer maxDenom}?
 If @i{minNumer}@r{, }@i{minDenom}@r{, }@i{maxNumer}@r{, and }@i{maxDenom}
 are all specified, then they will be passed to the window manager
@@ -3251,7 +3251,7 @@ a handler, then Tk handles the message b
 which it was received.
 .RE
 
-@table @asis{}
+@table @asis
 @item @b{wm :sizefrom }@i{window}@r{ ?}@i{who}?
 If @i{who}@r{ is specified, it must be either }@b{program} or
 @b{user}, or an abbreviation of one of these two.  It indicates
--- gcl27-2.7.1.orig/info/widgets.texi
+++ gcl27-2.7.1/info/widgets.texi
@@ -63,7 +63,7 @@ background        disabledForeground  pa
 @unnumberedsubsec Arguments for Button
 
 
-@table  @asis{}
+@table @asis
 @item @code{@b{:command}}
 @flushright
 Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@@ -76,7 +76,7 @@ window.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:height}}
 @flushright
 Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@@ -92,7 +92,7 @@ from the size of the bitmap or text bein
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:state}}
 @flushright
 Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@@ -111,7 +111,7 @@ button presses.  In this state the @b{di
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -166,7 +166,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for button widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:activate}
 Change the button's state to @b{active} and redisplay the button
 using its active foreground and background colors instead of normal
@@ -210,7 +210,7 @@ This command is ignored if the button's
 
 Tk automatically creates class bindings for buttons that give them
 the following default behavior:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 The button activates whenever the mouse passes over it and deactivates
@@ -306,7 +306,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for listbox widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
@@ -350,7 +350,7 @@ the index of the (visible) listbox eleme
 @item @i{pathName }@b{:scan}@r{ }@i{option args}
 This command is used to implement scanning on listboxes.  It has
 two forms, depending on @i{option}:
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:scan :mark }@i{x y}
 Records @i{x}@r{ and }@i{y} and the current view in the listbox
 window;  used in conjunction with later @b{scan dragto} commands.
@@ -370,7 +370,7 @@ value is an empty string.
 This command is used to adjust the selection within a listbox.  It
 has several forms, depending on @i{option}.  In all of the forms
 the index @b{end} refers to the last element in the listbox.
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:select :adjust }@i{index}
 Locate the end of the selection nearest to the element given by
 @i{index}@r{, and adjust that end of the selection to be at }@i{index}
@@ -414,7 +414,7 @@ element of the listbox.  Returns an empt
 
 Tk automatically creates class bindings for listboxes that give them
 the following default behavior:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 When button 1 is pressed over a listbox, the element underneath the
@@ -459,7 +459,7 @@ background           cursor          for
 @unnumberedsubsec Arguments for Scale
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:command}}
 @flushright
 Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@@ -474,7 +474,7 @@ scale.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:from}}
 @flushright
 Name=@code{"@b{from}@r{"} Class=@code{"}@b{From}"}
@@ -486,7 +486,7 @@ scale.  Must be an integer.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:label}}
 @flushright
 Name=@code{"@b{label}@r{"} Class=@code{"}@b{Label}"}
@@ -500,7 +500,7 @@ just above the left end of the scale.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:length}}
 @flushright
 Name=@code{"@b{length}@r{"} Class=@code{"}@b{Length}"}
@@ -514,7 +514,7 @@ it is the scale's width.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:showvalue}}
 @flushright
 Name=@code{"@b{showValue}@r{"} Class=@code{"}@b{ShowValue}"}
@@ -526,7 +526,7 @@ value of the scale is to be displayed.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:sliderforeground}}
 @flushright
 Name=@code{"@b{sliderForeground}@r{"} Class=@code{"}@b{sliderForeground}"}
@@ -539,7 +539,7 @@ determined by the @b{activeForeground} o
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:sliderlength}}
 @flushright
 Name=@code{"@b{sliderLength}@r{"} Class=@code{"}@b{SliderLength}"}
@@ -552,7 +552,7 @@ to @b{Tk_GetPixels}.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:state}}
 @flushright
 Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@@ -565,7 +565,7 @@ won't activate when the mouse enters it.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:tickinterval}}
 @flushright
 Name=@code{"@b{tickInterval}@r{"} Class=@code{"}@b{TickInterval}"}
@@ -578,7 +578,7 @@ as 0, then no tick-marks will be display
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:to}}
 @flushright
 Name=@code{"@b{to}@r{"} Class=@code{"}@b{To}"}
@@ -591,7 +591,7 @@ greater than the @b{from} option.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -652,7 +652,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for scale widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
@@ -679,7 +679,7 @@ gives the new value for the scale.
 When a new scale is created, it is given the following initial
 behavior by default:
 
-@table @asis{}
+@table @asis
 @item @b{<Enter>}
 Change the slider display to use @b{activeForeground} instead of
 @b{sliderForeground}.
@@ -721,7 +721,7 @@ insertBackground insertWidth       selec
 @unnumberedsubsec Arguments for Canvas
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:closeenough}}
 @flushright
 Name=@code{"@b{closeEnough}@r{"} Class=@code{"}@b{CloseEnough}"}
@@ -734,7 +734,7 @@ Defaults to 1.0.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:confine}}
 @flushright
 Name=@code{"@b{confine}@r{"} Class=@code{"}@b{Confine}"}
@@ -749,7 +749,7 @@ be constrained within the scroll region.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:height}}
 @flushright
 Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@@ -762,7 +762,7 @@ of the forms described in the COORDINATE
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:scrollincrement}}
 @flushright
 Name=@code{"@b{scrollIncrement}@r{"} Class=@code{"}@b{ScrollIncrement}"}
@@ -776,7 +776,7 @@ of the forms described in the COORDINATE
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:scrollregion}}
 @flushright
 Name=@code{"@b{scrollRegion}@r{"} Class=@code{"}@b{ScrollRegion}"}
@@ -792,7 +792,7 @@ in any of the forms given in the COORDIN
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{width}"}
@@ -932,7 +932,7 @@ Note that it is possible to refer to the
 the last one in the text item;  this is necessary for such
 tasks as inserting new text at the end of the item.
 
-@table @asis{}
+@table @asis
 @item @i{number}
 A decimal number giving the position of the desired character
 within the text item.
@@ -977,7 +977,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.
 The following widget commands are possible for canvas widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:addtag }@i{tag searchSpec }@r{?}@i{arg arg ...}?
 For each item that meets the constraints specified by
 @i{searchSpec}@r{ and the }@i{arg}s, add
@@ -990,7 +990,7 @@ This command returns an empty string as
 @i{SearchSpec}@r{ and }@i{arg}'s may take any of the following
 forms:
 
-@table @asis{}
+@table @asis
 @item @b{above }@i{tagOrId}
 Selects the item just after (above) the one given by @i{tagOrId}
 in the display list.
@@ -1097,7 +1097,7 @@ If a binding is associated with the tag
 will have lower priority than all other bindings associated
 with the item.
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:canvasx }@i{screenx}@r{ ?}@i{gridspacing}?
 Given a screen x-coordinate @i{screenx} this command returns
 the canvas x-coordinate that is displayed at that location.
@@ -1194,7 +1194,7 @@ In most cases it is advisable to follow
 command with the @b{focus} command to set the focus window to
 the canvas (if it wasn't there already).
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:gettags}@r{ }@i{tagOrId}
 Return a list whose elements are the tags associated with the
 item given by @i{tagOrId}.
@@ -1278,7 +1278,7 @@ The @i{option}\-@i{value} argument pairs
 information to control the generation of Postscript.  The following
 options are supported:
 
-@table @asis{}
+@table @asis
 @item @b{:colormap }@i{varName}
 @i{VarName} must be the name of a global array variable
 that specifies a color mapping to use in the Postscript.
@@ -1407,7 +1407,7 @@ This command returns an empty string.
 This command is used to implement scanning on canvases.  It has
 two forms, depending on @i{option}:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:scan :mark }@i{x y}
 Records @i{x}@r{ and }@i{y} and the canvas's current view;  used
 in conjunction with later @b{scan dragto} commands.
@@ -1436,7 +1436,7 @@ these that supports indexing and the sel
 @i{Index} gives a textual description of a position
 within @i{tagOrId}, as described in INDICES above.
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:select :adjust }@i{tagOrId index}
 Locate the end of the selection in @i{tagOrId} nearest
 to the character given by @i{index}, and adjust that
@@ -1532,7 +1532,7 @@ by the @b{:start}@r{ and }@b{:extent} op
 one of several ways (specified by the @b{:style} option).
 Arcs are created with widget commands of the following form:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:create arc }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}?
 The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give
 the coordinates of two diagonally opposite corners of a
@@ -1544,7 +1544,7 @@ used in @b{itemconfigure} widget command
 configuration.
 The following options are supported for arcs:
 
-@table @asis{}
+@table @asis
 @item @b{:extent }@i{degrees}
 Specifies the size of the angular range occupied by the arc.
 The arc's range extends for @i{degrees} degrees counter-clockwise
@@ -1608,7 +1608,7 @@ Items of type @b{bitmap} appear on the d
 two colors, foreground and background.
 Bitmaps are created with widget commands of the following form:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:create bitmap }@i{x y }@r{?}@i{option value option value ...}?
 The arguments @i{x}@r{ and }@i{y} specify the coordinates of a
 point used to position the bitmap on the display (see the @b{:anchor}
@@ -1620,7 +1620,7 @@ used in @b{itemconfigure} widget command
 configuration.
 The following options are supported for bitmaps:
 
-@table @asis{}
+@table @asis
 @item @b{:anchor }@i{anchorPos}
 @i{AnchorPos} tells how to position the bitmap relative to the
 positioning point for the item;  it may have any of the forms
@@ -1656,7 +1656,7 @@ Items of type @b{line} appear on the dis
 line segments or curves.
 Lines are created with widget commands of the following form:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:create line }@i{x1 y1... xn yn }@r{?}@i{option value option value ...}?
 
 The arguments @i{x1}@r{ through }@i{yn} give
@@ -1669,7 +1669,7 @@ used in @b{itemconfigure} widget command
 configuration.
 The following options are supported for lines:
 
-@table @asis{}
+@table @asis
 @item @b{:arrow }@i{where}
 Indicates whether or not arrowheads are to be drawn at one or both
 ends of the line.
@@ -1747,7 +1747,7 @@ the display.  Each oval may have an outl
 both.  Ovals are created with widget commands of the
 following form:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:create oval }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}?
 
 The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give
@@ -1764,7 +1764,7 @@ used in @b{itemconfigure} widget command
 configuration.
 The following options are supported for ovals:
 
-@table @asis{}
+@table @asis
 @item @b{:fill }@i{color}
 Fill the area of the oval with @i{color}.
 @i{Color}@r{ may have any of the forms accepted by }@b{Tk_GetColor}.
@@ -1805,7 +1805,7 @@ Items of type @b{polygon} appear as poly
 on the display.
 Polygons are created with widget commands of the following form:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:create polygon }@i{x1 y1 ... xn yn }@r{?}@i{option value option value ...}?
 
 
@@ -1820,7 +1820,7 @@ used in @b{itemconfigure} widget command
 configuration.
 The following options are supported for polygons:
 
-@table @asis{}
+@table @asis
 @item @b{:fill }@i{color}
 @i{Color} specifies a color to use for filling the area of the
 polygon; it may have any of the forms acceptable to @b{Tk_GetColor}.
@@ -1860,7 +1860,7 @@ the display.  Each rectangle may have an
 both.  Rectangles are created with widget commands of the
 following form:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:create rectangle }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}?
 
 The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give
@@ -1874,7 +1874,7 @@ used in @b{itemconfigure} widget command
 configuration.
 The following options are supported for rectangles:
 
-@table @asis{}
+@table @asis
 @item @b{:fill }@i{color}
 Fill the area of the rectangle with @i{color}, which may be
 specified in any of the forms accepted by @b{Tk_GetColor}.
@@ -1920,7 +1920,7 @@ following text-related canvas widget com
 Text items are created with widget commands of the following
 form:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:create text }@i{x y }@r{?}@i{option value option value ...}?
 
 The arguments @i{x}@r{ and }@i{y} specify the coordinates of a
@@ -1933,7 +1933,7 @@ used in @b{itemconfigure} widget command
 configuration.
 The following options are supported for text items:
 
-@table @asis{}
+@table @asis
 @item @b{:anchor }@i{anchorPos}
 @i{AnchorPos} tells how to position the text relative to the
 positioning point for the text;  it may have any of the forms
@@ -2010,7 +2010,7 @@ used in @b{itemconfigure} widget command
 configuration.
 The following options are supported for window items:
 
-@table @asis{}
+@table @asis
 @item @b{:anchor }@i{anchorPos}
 @i{AnchorPos} tells how to position the window relative to the
 positioning point for the item;  it may have any of the forms
@@ -2089,7 +2089,7 @@ activeForeground       cursor
 @unnumberedsubsec Arguments for Menu
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:postcommand}}
 @flushright
 Name=@code{"@b{postCommand}@r{"} Class=@code{"}@b{Command}"}
@@ -2102,7 +2102,7 @@ widget command before posting the menu.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:selector}}
 @flushright
 Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"}
@@ -2230,7 +2230,7 @@ the cascade entry, in order for menu tra
 A cascade entry posts its associated menu by invoking a
 Tcl command of the form
 
-@table @asis{}
+@table @asis
 @item @i{menu}@b{ :post }@i{x y}
 
 
@@ -2257,7 +2257,7 @@ name is @i{pathName}.  This
 command may be used to invoke various
 operations on the widget.  It has the following general form:
 
-@table @asis{}
+@table @asis
 @item @i{pathName option }@r{?}@i{arg arg ...}?
 @i{Option}@r{ and the }@i{arg}s
 determine the exact behavior of the command.
@@ -2268,7 +2268,7 @@ indicator of which entry of the menu to
 indicators are called @i{index}es and may be specified in
 any of the following forms:
 
-@table @asis{}
+@table @asis
 @item @i{number}
 Specifies the entry numerically, where 0 corresponds
 to the top-most entry of the menu, 1 to the entry below it, and
@@ -2315,7 +2315,7 @@ is given by @i{type}@r{ and must be one
 or a unique abbreviation of one of the above.  If additional arguments
 are present, they specify any of the following options:
 
-@table @asis{}
+@table @asis
 @item @b{:activebackground }@i{value}
 Specifies a background color to use for displaying this entry when it
 is active.
@@ -2402,7 +2402,7 @@ causes the currently-selected entry to d
 The @b{add} widget command returns an empty string.
 
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
@@ -2482,7 +2482,7 @@ window of the topmost pixel in the entry
 
 Tk automatically creates class bindings for menus that give them
 the following default behavior:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 When the mouse cursor enters a menu, the entry underneath the mouse
@@ -2537,7 +2537,7 @@ borderWidth            orient
 @unnumberedsubsec Arguments for Scrollbar
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:command}}
 @flushright
 Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@@ -2553,7 +2553,7 @@ should appear at the top of the associat
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -2611,7 +2611,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for scrollbar widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
@@ -2659,7 +2659,7 @@ between the arrow and the slider), the s
 and the bottom arrow.  Pressing mouse button 1 in each area has
 a different effect:
 
-@table @asis{}
+@table @asis
 @item @b{top arrow}
 Causes the view in the associated window to shift up by one unit
 (i.e. the object appears to move down one unit in its window).
@@ -2719,7 +2719,7 @@ background        disabledForeground  pa
 @unnumberedsubsec Arguments for Checkbutton
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:command}}
 @flushright
 Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@@ -2733,7 +2733,7 @@ be updated before the command is invoked
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:height}}
 @flushright
 Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@@ -2749,7 +2749,7 @@ from the size of the bitmap or text bein
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:offvalue}}
 @flushright
 Name=@code{"@b{offValue}@r{"} Class=@code{"}@b{Value}"}
@@ -2761,7 +2761,7 @@ this button is deselected.  Defaults to
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:onvalue}}
 @flushright
 Name=@code{"@b{onValue}@r{"} Class=@code{"}@b{Value}"}
@@ -2773,7 +2773,7 @@ this button is selected.  Defaults to ``
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:selector}}
 @flushright
 Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"}
@@ -2787,7 +2787,7 @@ drawn for the button.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:state}}
 @flushright
 Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@@ -2806,7 +2806,7 @@ button presses.  In this state the @b{di
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:variable}}
 @flushright
 Name=@code{"@b{variable}@r{"} Class=@code{"}@b{Variable}"}
@@ -2820,7 +2820,7 @@ window's path name).
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -2892,7 +2892,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for check button widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:activate}
 Change the check button's state to @b{active} and redisplay the button
 using its active foreground and background colors instead of normal
@@ -2949,7 +2949,7 @@ modifying its associated variable to ref
 
 Tk automatically creates class bindings for check buttons that give them
 the following default behavior:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 The check button activates whenever the mouse passes over it and deactivates
@@ -2998,7 +2998,7 @@ background        disabledForeground  pa
 @unnumberedsubsec Arguments for Menubutton
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:height}}
 @flushright
 Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@@ -3014,7 +3014,7 @@ from the size of the bitmap or text bein
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:menu}}
 @flushright
 Name=@code{"@b{menu}@r{"} Class=@code{"}@b{MenuName}"}
@@ -3027,7 +3027,7 @@ operation to work via the mouse.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:state}}
 @flushright
 Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@@ -3046,7 +3046,7 @@ button presses.  In this state the @b{di
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -3109,7 +3109,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for menubutton widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:activate}
 Change the menu button's state to @b{active} and redisplay the menu
 button using its active foreground and background colors instead of normal
@@ -3145,7 +3145,7 @@ use ``@i{pathName }@b{:configure :state
 
 Tk automatically creates class bindings for menu buttons that give them
 the following default behavior:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 A menu button activates whenever the mouse passes over it and deactivates
@@ -3216,7 +3216,7 @@ font            insertOnTime      select
 @unnumberedsubsec Arguments for Text
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:height}}
 @flushright
 Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@@ -3228,7 +3228,7 @@ Must be at least one.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:state}}
 @flushright
 Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@@ -3242,7 +3242,7 @@ in the widget.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -3256,7 +3256,7 @@ screen units.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:wrap}}
 @flushright
 Name=@code{"@b{wrap}@r{"} Class=@code{"}@b{Wrap}"}
@@ -3328,7 +3328,7 @@ but the @i{modifier}s are optional.
 
 The @i{base} for an index must have one of the following forms:
 
-@table @asis{}
+@table @asis
 @item @i{line}@b{.}@i{char}
 Indicates @i{char}@r{'th character on line }@i{line}.
 Lines are numbered from 1 for consistency with other UNIX programs
@@ -3359,7 +3359,7 @@ If modifiers follow the base index, each
 of the forms listed below.  Keywords such as @b{chars}@r{ and }@b{wordend}
 may be abbreviated as long as the abbreviation is unambiguous.
 
-@table @asis{}
+@table @asis
 @item @b{+ }@i{count}@b{ chars}
 Adjust the index forward by @i{count} characters, moving to later
 lines in the text if necessary.  If there are fewer than @i{count}
@@ -3443,7 +3443,7 @@ If a character has been tagged, then the
 with the tag override the default display style.
 The following options are currently supported for tags:
 
-@table @asis{}
+@table @asis
 @item @b{:background }@i{color}
 @i{Color} specifies the background color to use for characters
 associated with the tag.
@@ -3560,7 +3560,7 @@ Text widgets support the standard X sele
 Selection support is implemented via tags.
 If the @b{exportSelection} option for the text widget is true
 then the @b{sel} tag will be associated with the selection:
-@itemize  @asis{}
+@itemize  @asis
 @item
 [1]
 Whenever characters are tagged with @b{sel} the text widget
@@ -3612,7 +3612,7 @@ the text widget's path name.  @i{Option}
 determine the exact behavior of the command.  The following
 commands are possible for text widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:compare}@r{ }@i{index1 op index2}
 Compares the indices given by @i{index1}@r{ and }@i{index2} according
 to the relational operator given by @i{op}, and returns 1 if
@@ -3688,7 +3688,7 @@ This command is used to manipulate marks
 the command depends on the @i{option} argument that follows
 the @b{mark} argument.  The following forms of the command
 are currently supported:
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:mark :names}
 Returns a list whose elements are the names of all the marks that
 are currently set.
@@ -3708,7 +3708,7 @@ This command returns an empty string.
 @item @i{pathName }@b{:scan}@r{ }@i{option args}
 This command is used to implement scanning on texts.  It has
 two forms, depending on @i{option}:
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:scan :mark }@i{y}
 Records @i{y} and the current view in the text window;  used in
 conjunction with later @b{scan dragto} commands.  Typically this
@@ -3730,7 +3730,7 @@ command depends on the @i{option} argume
 @b{tag} argument.  The following forms of the command are currently
 supported:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:tag :add }@i{tagName index1 }@r{?}@i{index2}?
 Associate the tag @i{tagName} with all of the characters starting
 with @i{index1} and ending just before
@@ -3892,7 +3892,7 @@ If the @b{:pickplace}@r{ option isn't sp
 appear at the top of the window.
 If @b{:pickplace} is specified then the widget chooses where
 @i{what} appears in the window:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 If @i{what} is already visible somewhere in the window then the
@@ -3920,7 +3920,7 @@ This command returns an empty string.
 
 Tk automatically creates class bindings for texts that give them
 the following default behavior:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 Pressing mouse button 1 in an text positions the insertion cursor
@@ -4021,7 +4021,7 @@ font            insertOnTime      select
 @unnumberedsubsec Arguments for Entry
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:state}}
 @flushright
 Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@@ -4035,7 +4035,7 @@ in the widget.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -4098,7 +4098,7 @@ Many of the widget commands for entries
 arguments.  An index specifies a particular character in the entry's
 string, in any of the following ways:
 
-@table @asis{}
+@table @asis
 @item @i{number}
 Specifies the character as a numerical index, where 0 corresponds
 to the first character in the string.
@@ -4129,7 +4129,7 @@ rounded to the nearest legal value.
 
 The following commands are possible for entry widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
@@ -4162,7 +4162,7 @@ indicated by @i{index}.  Returns an empt
 @item @i{pathName }@b{:scan}@r{ }@i{option args}
 This command is used to implement scanning on entries.  It has
 two forms, depending on @i{option}:
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:scan :mark }@i{x}
 Records @i{x} and the current view in the entry window;  used in
 conjunction with later @b{scan dragto} commands.  Typically this
@@ -4180,7 +4180,7 @@ value is an empty string.
 @item @i{pathName }@b{:select }@i{option arg}
 This command is used to adjust the selection within an entry.  It
 has several forms, depending on @i{option}:
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:select :adjust }@i{index}
 Locate the end of the selection nearest to the character given by
 @i{index}@r{, and adjust that end of the selection to be at }@i{index}
@@ -4217,7 +4217,7 @@ at the left edge of the window.  Returns
 Tk automatically creates class bindings for entries that give them
 the following default behavior:
 
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 Clicking mouse button 1 in an entry positions the insertion cursor
@@ -4290,7 +4290,7 @@ borderWidth       foreground      relief
 @unnumberedsubsec Arguments for Message
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:aspect}}
 @flushright
 Name=@code{"@b{aspect}@r{"} Class=@code{"}@b{Aspect}"}
@@ -4309,7 +4309,7 @@ Defaults to 150.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:justify}}
 @flushright
 Name=@code{"@b{justify}@r{"} Class=@code{"}@b{Justify}"}
@@ -4338,7 +4338,7 @@ in the vertical span of the window.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -4408,7 +4408,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for message widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
@@ -4456,7 +4456,7 @@ borderWidth            geometry
 @unnumberedsubsec Arguments for Frame
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:height}}
 @flushright
 Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@@ -4473,7 +4473,7 @@ all.
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -4535,7 +4535,7 @@ the frame widget's path name.  @i{Option
 determine the exact behavior of the command.  The following
 commands are possible for frame widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? }@i{?value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
@@ -4579,7 +4579,7 @@ bitmap           font            padY
 @unnumberedsubsec Arguments for Label
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:height}}
 @flushright
 Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@@ -4595,7 +4595,7 @@ from the size of the bitmap or text bein
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -4644,7 +4644,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for label widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
@@ -4689,7 +4689,7 @@ background        disabledForeground  pa
 @unnumberedsubsec Arguments for Radiobutton
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:command}}
 @flushright
 Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@@ -4703,7 +4703,7 @@ be updated before the command is invoked
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:height}}
 @flushright
 Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@@ -4719,7 +4719,7 @@ from the size of the bitmap or text bein
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:selector}}
 @flushright
 Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"}
@@ -4732,7 +4732,7 @@ If specified as an empty string then no
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:state}}
 @flushright
 Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@@ -4751,7 +4751,7 @@ button presses.  In this state the @b{di
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:value}}
 @flushright
 Name=@code{"@b{value}@r{"} Class=@code{"}@b{Value}"}
@@ -4763,7 +4763,7 @@ this button is selected.  Defaults to th
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:variable}}
 @flushright
 Name=@code{"@b{variable}@r{"} Class=@code{"}@b{Variable}"}
@@ -4777,7 +4777,7 @@ Defaults to the value @b{selectedButton}
 @end table
 
 
-@table @asis{}
+@table @asis
 @item @code{@b{:width}}
 @flushright
 Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@@ -4853,7 +4853,7 @@ operations on the widget.  It has the fo
 determine the exact behavior of the command.  The following
 commands are possible for radio-button widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:activate}
 Change the radio button's state to @b{active} and redisplay the button
 using its active foreground and background colors instead of normal
@@ -4908,7 +4908,7 @@ to this widget.
 
 Tk automatically creates class bindings for radio buttons that give them
 the following default behavior:
-@itemize @asis{}
+@itemize @asis
 @item
 [1]
 The radio button activates whenever the mouse passes over it and deactivates
@@ -5008,7 +5008,7 @@ the toplevel widget's path name.  @i{Opt
 determine the exact behavior of the command.  The following
 commands are possible for toplevel widgets:
 
-@table @asis{}
+@table @asis
 @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
 Query or modify the configuration options of the widget.
 If no @i{option} is specified, returns a list describing all of
--- gcl27-2.7.1.orig/lsp/gcl_fpe.lsp
+++ gcl27-2.7.1/lsp/gcl_fpe.lsp
@@ -2,11 +2,13 @@
 (in-package :fpe)
 
 (import 'si::(disassemble-instruction feenableexcept fedisableexcept fld *fixnum *float *double
+				      fetestexcept feclearexcept
 				      *fixnum *ushort *uint fun-name
 				      si-class-direct-subclasses si-class-name si-find-class
 				      +fe-list+ +mc-context-offsets+ floating-point-error 
 				      function-by-address clines defentry))
 (export '(break-on-floating-point-exceptions read-instruction))
+#+no-sigfpe (export '(flush-floating-point-exceptions))
 
 (eval-when
     (eval compile)
@@ -128,17 +130,30 @@
   (feenableexcept a))
 
 
-#.`(let ((fpe-enabled 0))
+#.`(let ((fpe-enabled 0)(fpe-set 0))
+     #+no-sigfpe
+     (defun flush-floating-point-exceptions nil
+       (let ((x (fetestexcept fpe-set)))
+	 (unless (zerop x)
+	   (feclearexcept x)
+	   (floating-point-error x 0 0))))
      (defun break-on-floating-point-exceptions 
-       (&key suspend ,@(mapcar (lambda (x) `(,(car x) (logtest ,(caddr x) fpe-enabled))) +fe-list+) &aux r)
+	 (&key suspend no-flush
+	    ,@(mapcar (lambda (x) `(,(car x) (logtest ,(caddr x) fpe-enabled))) +fe-list+)
+	  &aux r #+no-sigfpe(x (fetestexcept fpe-set)))
        (fe-enable
-	(if suspend 0
-	  (setq fpe-enabled 
-		(logior
-		 ,@(mapcar (lambda (x)
-			     `(cond (,(car x) (push ,(intern (symbol-name (car x)) :keyword) r) ,(caddr x))
-				    (0)))
-			   +fe-list+)))))
+	(setq fpe-set
+	      (if suspend 0
+		  (setq fpe-enabled
+			(logior
+			 ,@(mapcar (lambda (x)
+				     `(cond (,(car x)
+					     (push ,(intern (symbol-name (car x)) :keyword) r)
+					      ,(caddr x))
+					    (0)))
+				   +fe-list+))))))
+       #+no-sigfpe
+       (unless (or no-flush (zerop x)) (floating-point-error x 0 0))
        r))
 
 (defun subclasses (class)
@@ -154,13 +169,16 @@
       'arithmetic-error))
 	 
 (defun floating-point-error (code addr context)
-  (break-on-floating-point-exceptions :suspend t)
+  (break-on-floating-point-exceptions :suspend t :no-flush t)
   (restart-case
    (unwind-protect
        (let* ((fun (function-by-address addr))(m (read-instruction addr context)))
 	 ((lambda (&rest r) (apply 'error (if (find-package :conditions) r (list (format nil "~s" r)))))
 	  (code-condition code)
 	  :operation (list :insn (pop m) :op (pop m) :fun fun :addr addr) :operands m :function-name (when fun (fun-name fun))))
-     (break-on-floating-point-exceptions))
+     (break-on-floating-point-exceptions :no-flush t))
    (continue nil :report (lambda (s) (format s "Continue disabling floating point exception trapping"))
-	     (apply 'break-on-floating-point-exceptions (mapcan (lambda (x) (list x nil)) (break-on-floating-point-exceptions))))))
+	     (apply 'break-on-floating-point-exceptions
+		    :no-flush t
+		    (mapcan (lambda (x) (list x nil))
+			    (break-on-floating-point-exceptions :no-flush t))))))
--- gcl27-2.7.1.orig/lsp/gcl_iolib.lsp
+++ gcl27-2.7.1/lsp/gcl_iolib.lsp
@@ -79,31 +79,31 @@
 (defun concatenated-stream-streams (stream)
   (declare (optimize (safety 2)))
   (check-type stream concatenated-stream)
-  (c-stream-object0 stream))
+  (the proper-list (c-stream-object0 stream)))
 (defun broadcast-stream-streams (stream)
   (declare (optimize (safety 2)))
   (check-type stream broadcast-stream)
-  (c-stream-object0 stream))
+  (the proper-list (c-stream-object0 stream)))
 (defun two-way-stream-input-stream (stream)
   (declare (optimize (safety 2)))
   (check-type stream two-way-stream)
-  (c-stream-object0 stream))
+  (the (and stream (satisfies input-stream-p)) (c-stream-object0 stream)))
 (defun echo-stream-input-stream (stream)
   (declare (optimize (safety 2)))
   (check-type stream echo-stream)
-  (c-stream-object0 stream))
+  (the (and stream (satisfies input-stream-p)) (c-stream-object0 stream)))
 (defun two-way-stream-output-stream (stream)
   (declare (optimize (safety 2)))
   (check-type stream two-way-stream)
-  (c-stream-object1 stream))
+  (the (and stream (satisfies output-stream-p)) (c-stream-object1 stream)))
 (defun echo-stream-output-stream (stream)
   (declare (optimize (safety 2)))
   (check-type stream echo-stream)
-  (c-stream-object1 stream))
+  (the (and stream (satisfies output-stream-p)) (c-stream-object1 stream)))
 (defun synonym-stream-symbol (stream)
   (declare (optimize (safety 2)))
   (check-type stream synonym-stream)
-  (c-stream-object0 stream))
+  (the symbol (c-stream-object0 stream)))
 
 (defun maybe-clear-input (&optional (x *standard-input*))
   (typecase x
@@ -143,7 +143,7 @@
 (defun get-output-stream-string (strm)
   (declare (optimize (safety 1)))
   (check-type strm string-output-stream)
-  (let ((x (copy-seq (c-stream-object0 strm))))
+  (let ((x (copy-seq (the string (c-stream-object0 strm)))))
     (c-set-stream-int strm 0)
     (setf (fill-pointer (c-stream-object0 strm)) 0)
     x))
@@ -531,6 +531,10 @@
 (deftype binary-stream-element-type nil 'list)
 (defconstant +char-shft+ (1- (integer-length char-length)))
 
+(declaim (inline byte-index))
+(defun byte-index (k n)
+  #+:clx-little-endian k #-:clx-little-endian (- n 1 k))
+
 (defun read-byte (s &optional (eof-error-p t) eof-value &aux (i 0)(tp (stream-element-type s)))
   (declare (optimize (safety 1)))
   (check-type s stream)
@@ -538,9 +542,11 @@
   (let* ((n (if tp (ash (cadr tp) (- +char-shft+)) 1)))
     (dotimes (k n (let ((nb (ash n +char-shft+)))
 		  (if (when (eq (car tp) 'signed-byte) (logbitp (1- nb) i)) (- i (ash 1 nb)) i)))
-      (setq i (logior i (ash (let ((ch (read-char s eof-error-p eof-value)))
+      (setq i
+	    (logior i
+		    (ash (let ((ch (read-char s eof-error-p eof-value)))
 			       (if (eq ch eof-value) (return ch) (char-code ch)))
-			     (ash k +char-shft+)))))))
+			 (ash (byte-index k n) +char-shft+)))))))
 
 (defun write-byte (j s &aux (i j) (tp (stream-element-type s)))
   (declare (optimize (safety 1)))
@@ -549,23 +555,27 @@
   (check-type tp binary-stream-element-type)
   (let ((n (ash (cadr tp) (- +char-shft+))))
     (dotimes (k n j)
-      (write-char (code-char (logand i #.(1- (ash 1 char-length)))) s)
-      (setq i (ash i #.(- char-length))))))
+      (write-char
+       (code-char
+	(logand
+	 (ash i (ash (- (byte-index k n)) +char-shft+))
+	 #.(1- (ash 1 char-length))))
+       s))))
 
 #-pre-gcl
 (defdlfun (:fixnum "fread") :fixnum :fixnum :fixnum :fixnum)
 
-(defun read-sequence-using-fread (seq strm tp start end &aux (fp (stream-fp strm nil)))
-  #+pre-gcl
-  (declare (ignore seq tp start end fp))
-  #-pre-gcl
-  (when fp
-    (when (eq tp (aref +array-stream-types+ (c-array-elttype seq)))
-      (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln)))
-	(when (<= start end ln)
-	  (c+ start
-	      (|libc|:|fread|
-		     (c+ (c-array-self seq) (c* n start)) n (c- end start) fp)))))))
+#.`(defun read-sequence-using-fread (seq strm tp start end &aux (fp (stream-fp strm nil)))
+     #+pre-gcl
+     (declare (ignore seq tp start end fp))
+     #-pre-gcl
+     (when fp
+       (when (eq tp (aref +array-stream-types+ (c-array-elttype seq)))
+	 (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln)))
+	   (when (<= start end ln)
+	     (c+ start
+		 (,(mdlsym "fread")
+		   (c+ (c-array-self seq) (c* n start)) n (c- end start) fp)))))))
 
 
 
@@ -592,17 +602,17 @@
 #-pre-gcl
 (defdlfun (:fixnum "fwrite") :fixnum :fixnum :fixnum :fixnum)
 
-(defun write-sequence-using-fwrite (seq strm tp start end &aux (fp (stream-fp strm t)))
-  #+pre-gcl
-  (declare (ignore seq tp start end fp))
-  #-pre-gcl
-  (when fp
-    (when (eq tp (aref +array-stream-types+ (c-array-elttype seq)))
-      (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln)))
-	(when (<= start end ln)
-	  (c+ start
-	      (|libc|:|fwrite|
-		     (c+ (c-array-self seq) (c* n start)) n (c- end start) fp)))))))
+#.`(defun write-sequence-using-fwrite (seq strm tp start end &aux (fp (stream-fp strm t)))
+     #+pre-gcl
+     (declare (ignore seq tp start end fp))
+     #-pre-gcl
+     (when fp
+       (when (eq tp (aref +array-stream-types+ (c-array-elttype seq)))
+	 (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln)))
+	   (when (<= start end ln)
+	     (c+ start
+		 (,(mdlsym "fwrite")
+		   (c+ (c-array-self seq) (c* n start)) n (c- end start) fp)))))))
 
 
 (defun write-sequence (seq strm &key (start 0) end
--- gcl27-2.7.1.orig/o/alloc.c
+++ gcl27-2.7.1/o/alloc.c
@@ -1290,7 +1290,31 @@ gcl_init_alloc(void *cs_start) {
   
 #ifdef HAVE_MPROTECT
   if (data_start)
-    massert(!gcl_mprotect(data_start,(void *)core_end-data_start,PROT_READ|PROT_WRITE|PROT_EXEC));
+    massert(!gcl_mprotect(data_start,(void *)core_end-data_start,PROT_READ|PROT_WRITE
+#ifndef W_X
+			  |PROT_EXEC
+#endif
+			  ));
+
+#ifdef W_X
+  {
+    struct pageinfo *v;
+    struct typemanager *tm=tm_of(t_cfdata);
+
+
+    for (v=cell_list_head;v;v=v->next)
+    if (tm->tm_type==v->type) {
+      void *p;
+      ufixnum k;
+      for (p=pagetochar(page(v)),k=0;k<tm->tm_nppage;k++,p+=tm->tm_size) {
+ 	object o=p;
+ 	if (!is_free(o) && type_of(o)==t_cfdata && (void *)o->cfd.cfd_start>=data_start)
+	  gcl_mprotect((void *)o->cfd.cfd_start,o->cfd.cfd_nexp<<PAGEWIDTH,PROT_READ|PROT_EXEC);
+      }
+    }
+  }
+#endif
+
 #endif
 
 #ifdef SGC
--- gcl27-2.7.1.orig/o/cmpaux.c
+++ gcl27-2.7.1/o/cmpaux.c
@@ -616,6 +616,7 @@ gcl_init_or_load1(void (*fn)(void),const
     massert(realpath(file,FN1));
     ltn=make_simple_string(FN1);
     memory=new_cfdata();
+    memory->d.tt=1;
     memory->cfd.cfd_name=ltn;
     memory->cfd.cfd_start=(char *)fn;
     faslfile=open_stream(ltn,smm_input,Cnil,sKerror);
--- gcl27-2.7.1.orig/o/file.d
+++ gcl27-2.7.1/o/file.d
@@ -1900,7 +1900,7 @@ DEFUN("SOCKET-INT",object,fSsocket_int,S
 
     massert(!sigaction(SIGCHLD,&sa,&osa));
 
-    switch((pid=pvfork())) {
+    switch((pid=pfork())) {
     case -1:
       FEerror("Cannot fork", 0);
       break;
@@ -1909,7 +1909,7 @@ DEFUN("SOCKET-INT",object,fSsocket_int,S
       massert(setsid()>=0);
 
       if (daemon == sKpersistent)
-	switch(pvfork()) {
+	switch(pfork()) {
 	case -1:
 	  FEerror("daemon fork error", 0);
 	  break;
@@ -1952,7 +1952,7 @@ DEFUN("SOCKET-INT",object,fSsocket_int,S
 	  
 	  y=maccept(x);
 	  
-	  switch((pid=pvfork())) {
+	  switch((pid=pfork())) {
 	  case 0:
 	    massert(!sigaction(SIGCHLD,&osa,NULL));
 	    ifuncall1(server,y);
--- gcl27-2.7.1.orig/o/gbc.c
+++ gcl27-2.7.1/o/gbc.c
@@ -31,6 +31,7 @@
 #define NEED_MP_H
 #include <string.h>
 #include <stdlib.h>
+#include <sys/mman.h>
 #include "include.h"
 #include "page.h"
 
@@ -957,6 +958,11 @@ sweep_phase(void) {
 	continue;
       }
 
+#ifdef W_X
+      if (type_of(x)==t_cfdata && !x->d.tt && !is_free(x))
+	gcl_mprotect((void *)x->cfd.cfd_start,x->cfd.cfd_nexp<<PAGEWIDTH,PROT_READ|PROT_WRITE);
+#endif
+
       k++;
 
       make_free(x);
--- gcl27-2.7.1.orig/o/gprof.c
+++ gcl27-2.7.1/o/gprof.c
@@ -5,6 +5,14 @@
 
 static unsigned long gprof_on;
 
+/*all but this stub to be written in the future provided*/
+#if defined(__APPLE__) && defined(__aarch64__)
+void
+_mcleanup(void) {
+  return;
+}
+#endif
+
 DEFUN("MCLEANUP",object,fSmcleanup,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
 
   extern void _mcleanup(void);
--- gcl27-2.7.1.orig/o/hash.d
+++ gcl27-2.7.1/o/hash.d
@@ -178,7 +178,7 @@ BEGIN:
   if (depth++<=3)
     switch ((tx=type_of(x))) {
     case t_cons:
-      h^=ihash_equal(x->c.c_car,depth)^rtb[labs(depth%(sizeof(rtb)/sizeof(*rtb)))];
+      h^=ihash_equal(x->c.c_car,depth)^rtb[labs(depth%(long)(sizeof(rtb)/sizeof(*rtb)))];
       x = x->c.c_cdr;
       goto BEGIN;
       break;
@@ -249,7 +249,7 @@ BEGIN:
   if (depth++ <=3)
     switch ((tx=type_of(x))) {
     case t_cons:
-      h += ihash_equalp(x->c.c_car,depth)^rtb[labs(depth%(sizeof(rtb)/sizeof(*rtb)))];
+      h += ihash_equalp(x->c.c_car,depth)^rtb[labs(depth%(long)(sizeof(rtb)/sizeof(*rtb)))];
       x = x->c.c_cdr;
       goto BEGIN;
       break;
--- gcl27-2.7.1.orig/o/main.c
+++ gcl27-2.7.1/o/main.c
@@ -178,7 +178,65 @@ mbrk(void *v) {
   return uc==(ufixnum)sbrk(uv-uc) ? 0 : -1;
 
 }
-    
+
+#if defined(__CYGWIN__)||defined(__MINGW32__)
+
+#include <windows.h>
+
+static ufixnum
+get_phys_pages_no_malloc(char n,char ramp) {
+
+  MEMORYSTATUS m;
+
+  m.dwLength=sizeof(m);
+  GlobalMemoryStatus(&m);
+  return m.dwTotalPhys>>PAGEWIDTH;
+
+}
+
+#elif defined (DARWIN)
+
+#include <sys/sysctl.h>
+
+static ufixnum
+get_phys_pages_no_malloc(char n,char ramp) {
+
+  uint64_t s;
+  size_t z=sizeof(s);
+  int m[2]={CTL_HW,HW_MEMSIZE};
+
+  if (sysctl(m,2,&s,&z,NULL,0)==0)
+    return s>>PAGEWIDTH;
+
+  return 0;
+
+}
+
+#elif defined(__sun__)
+
+static ufixnum
+get_phys_pages_no_malloc(char n,char ramp) {
+
+  return sysconf(_SC_PHYS_PAGES);
+
+}
+
+#elif defined(FREEBSD)
+
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+static ufixnum
+get_phys_pages_no_malloc(char n,char ramp) {
+
+  size_t i,len=sizeof(i);
+
+  return (sysctlbyname("hw.physmem",&i,&len,NULL,0) ? 0 : i)>>PAGEWIDTH;
+
+}
+
+#else /*Linux*/
+
 static char *
 next_line(int l,ufixnum *s) {
 
@@ -240,65 +298,6 @@ parse_proc_meminfo(ufixnum *t,ufixnum *f
 
 }
 
-
-#if defined(__CYGWIN__)||defined(__MINGW32__)
-
-#include <windows.h>
-
-static ufixnum
-get_phys_pages_no_malloc(char n,char ramp) {
-
-  MEMORYSTATUS m;
-
-  m.dwLength=sizeof(m);
-  GlobalMemoryStatus(&m);
-  return m.dwTotalPhys>>PAGEWIDTH;
-
-}
-
-#elif defined (DARWIN)
-
-#include <sys/sysctl.h>
-
-static ufixnum
-get_phys_pages_no_malloc(char n,char ramp) {
-
-  uint64_t s;
-  size_t z=sizeof(s);
-  int m[2]={CTL_HW,HW_MEMSIZE};
-
-  if (sysctl(m,2,&s,&z,NULL,0)==0)
-    return s>>PAGEWIDTH;
-
-  return 0;
-
-}
-
-#elif defined(__sun__)
-
-static ufixnum
-get_phys_pages_no_malloc(char n,char ramp) {
-
-  return sysconf(_SC_PHYS_PAGES);
-
-}
-
-#elif defined(FREEBSD)
-
-#include <sys/types.h>
-#include <sys/sysctl.h>
-
-static ufixnum
-get_phys_pages_no_malloc(char n,char ramp) {
-
-  size_t i,len=sizeof(i);
-
-  return (sysctlbyname("hw.physmem",&i,&len,NULL,0) ? 0 : i)>>PAGEWIDTH;
-
-}
-
-#else /*Linux*/
-
 static ufixnum
 get_phys_pages_no_malloc(char freep,char ramp) {
 
@@ -446,6 +445,13 @@ set_real_maxpage(void *beg) {
 
   mp=ufmin(mp,get_phys_pages1(0,0));
 
+#if defined(__APPLE__) && defined(__aarch64__)
+  {
+    extern unsigned long heap_vmsize;
+    mp=ufmin(mp,heap_vmsize>>PAGEWIDTH);
+  }
+#endif
+
   sz=ufmin(mem_bound,log_maxpage_bound);
   sz=(1UL<<sz)+((1UL<<sz)-1);
   mp=ufmin(mp,page(sz));
@@ -716,6 +722,10 @@ DEFUN("KCL-SELF",object,fSkcl_self,SI,0,
 
 }
 
+#if defined(__APPLE__) && defined(__aarch64__)
+#include "disable_mac_aslr.h"
+#endif
+
 int
 main(int argc, char **argv, char **envp) {
 
@@ -727,6 +737,10 @@ main(int argc, char **argv, char **envp)
   bds_top = bds_org-1;
   frs_top = frs_org-1;
 
+#if defined(__APPLE__) && defined(__aarch64__)
+  disable_aslr(argc, argv, envp);
+#endif
+
 #include "cstack.h"
 
   gcl_init_alloc(alloca(1));
@@ -1408,6 +1422,10 @@ init_main(void) {
   ADD_FEATURE("LARGE-MEMORY-MODEL");
 #endif
 
+#ifdef ADDITIONAL_FEATURES
+  ADDITIONAL_FEATURES;
+#endif
+
   make_special("*FEATURES*",features);}
   
   make_si_function("SAVE-SYSTEM", siLsave_system);
--- gcl27-2.7.1.orig/o/msbrk.c
+++ gcl27-2.7.1/o/msbrk.c
@@ -21,7 +21,11 @@ msbrk_end(void) {
 
 static void *
 new_map(void *v,ufixnum s) {
-  return mmap(v,s,PROT_READ|PROT_WRITE|PROT_EXEC,MAP_PRIVATE|MAP_ANON|MAP_FIXED,-1,0);
+  return mmap(v,s,PROT_READ|PROT_WRITE
+#ifndef W_X
+	      |PROT_EXEC
+#endif
+	      ,MAP_PRIVATE|MAP_ANON|MAP_FIXED,-1,0);
 }
 
 #if defined(DARWIN)
@@ -29,7 +33,10 @@ new_map(void *v,ufixnum s) {
   but not so large that the Mac linker ignores the segment designation
   and creates a __huge section under __DATA for this and other
   variables.  We enlarge this on unexec.*/
-asm (".zerofill __HEAP,__heap,__end,0x70000000\n\t.globl __end");
+unsigned long heap_vmsize=INITIAL_HEAP_VMSIZE;
+#define mstr(a) #a
+#define Mstr(a) mstr(a)
+asm (".zerofill __HEAP,__heap,__end," Mstr(INITIAL_HEAP_VMSIZE) "\n\t.globl __end");
 #endif
 
 int
--- gcl27-2.7.1.orig/o/pre_qfv.c
+++ gcl27-2.7.1/o/pre_qfv.c
@@ -1,6 +1,15 @@
+#ifdef __APPLE__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-function"
+#endif
+
 #include "include.h"
 #include "arth.h"
 
+#ifdef __APPLE__
+#pragma clang diagnostic pop
+#endif
+
 #define EMPTY()
 #define DEFER(id) id EMPTY()
 
--- gcl27-2.7.1.orig/o/run_process.c
+++ gcl27-2.7.1/o/run_process.c
@@ -544,43 +544,46 @@ make_socket_pair()
  * with "C" type streams.
  */
 
+#include <spawn.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#ifdef __APPLE__
+#include <crt_externs.h>
+#define environ (*_NSGetEnviron())
+#else
+extern char **environ;
+#endif
+
 static void
 spawn_process_with_streams(object istream,object ostream,char *pname,char **argv) {
 
-  int fdin;
-  int fdout;
+  int fdin,fdout,spawn_err;
+  pid_t pid;
+  posix_spawn_file_actions_t actions;
 
-  if (istream->sm.sm_fp == NULL || ostream->sm.sm_fp == NULL)
-    FEerror("Cannot spawn process with given stream", 0);
+  massert(istream->sm.sm_fp&&ostream->sm.sm_fp);
 
   fdin = istream->sm.sm_int;
   fdout = ostream->sm.sm_int;
 
-  if (!pvfork()) {
-
-    /* the child --- replace standard in and out with descriptors given */
-    close(0);
-    massert(dup(fdin)>=0);
-    close(1);
-    massert(dup(fdout)>=0);
+  massert(!posix_spawn_file_actions_init(&actions));
+  massert(!posix_spawn_file_actions_adddup2(&actions,fdin,0));
+  massert(!posix_spawn_file_actions_adddup2(&actions,fdout,1));
 
-    close(fileno(istream->sm.sm_fp));
-    close(fileno(ostream->sm.sm_fp));
+  massert(!posix_spawn_file_actions_addclose(&actions,fileno(istream->sm.sm_fp)));
+  massert(!posix_spawn_file_actions_addclose(&actions,fileno(ostream->sm.sm_fp)));
 
-    errno=0;
-    execvp(pname,argv);
-    _exit(128|(errno&0x7f));
+  spawn_err = posix_spawnp(&pid, pname, &actions, NULL, argv, environ);
 
-  } else {
+  posix_spawn_file_actions_destroy(&actions);
 
-    close(fdin);
-    close(fdout);
-
-  }
+  massert(!spawn_err);
+  massert(!close(fdin));
+  massert(!close(fdout));
 
 }
-    
-      
+
 void
 run_process(char *filename,char **argv) {
 
--- gcl27-2.7.1.orig/o/sfasli.c
+++ gcl27-2.7.1/o/sfasli.c
@@ -129,6 +129,7 @@ LFD(build_symbol_table)(void) {
       min_text=p<min_text ? p : min_text;
     }
   }
+  massert(min_text);
 
 }
 
@@ -155,6 +156,11 @@ use_symbols(double d,...) {
     d=c/d;
     d=d/(c+I*d);
   }
+
+#if defined(__APPLE__) && defined(__aarch64__)/*FIXME non-lazy pointer support in sfaslmacho.c*/
+  extern  void __chkstk_darwin(void);
+  __chkstk_darwin();
+#endif
   
   return (int)d;
 
--- gcl27-2.7.1.orig/o/sfaslmacho.c
+++ gcl27-2.7.1/o/sfaslmacho.c
@@ -26,10 +26,10 @@
 #endif
 
 #define ALLOC_SEC(sec) ({ul _fl=sec->flags&SECTION_TYPE;\
-      _fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS;})
+      (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && !(sec->flags&S_ATTR_DEBUG);})
 
 #define LOAD_SEC(sec) ({ul _fl=sec->flags&SECTION_TYPE;\
-      (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && _fl!=S_ZEROFILL;})
+      (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && _fl!=S_ZEROFILL && !(sec->flags&S_ATTR_DEBUG);})
 
 
 #define MASK(n) (~(~0ULL << (n)))
@@ -44,10 +44,8 @@ typedef unsigned long ul;
 STATIC_RELOC_VARS
 #endif
 
-
-
 static int
-ovchk(ul v,ul m) {
+ovchks(ul v,ul m) {
 
   m|=m>>1;
   v&=m;
@@ -57,15 +55,55 @@ ovchk(ul v,ul m) {
 }
 
 static int
+ovchku(ul v,ul m) {
+
+  return !(v&=m);
+
+}
+
+static int
 store_val(ul *w,ul m,ul v) {
 
-  massert(ovchk(v,~m));
   *w=(v&m)|(*w&~m);
 
   return 0;
 
 }
 
+static int
+store_valu(ul *w,ul m,ul v) {
+
+  massert(ovchku(v,~m));
+  return store_val(w,m,v);
+
+  return 0;
+
+}
+
+static int
+store_vals(ul *w,ul m,ul v) {
+
+  massert(ovchks(v,~m));
+  return store_val(w,m,v);
+
+}
+
+#ifdef W_X
+static int
+add_vals(ul *w,ul m,ul v) {
+
+  return store_vals(w,m,v+(*w&m));
+
+}
+
+static int
+add_valu(ul *w,ul m,ul v) {
+
+  return store_valu(w,m,v+(*w&m));
+
+}
+#endif
+
 #ifndef _LP64
 /*redirect trampolines gcc-4.0 gives no reloc for stub sections on x86 only*/
 static int
@@ -102,13 +140,16 @@ relocate(struct relocation_info *ri,stru
   struct scattered_relocation_info *sri=(void *)ri;
   ul *q=(void *)(sec->addr+(sri->r_scattered ? sri->r_address : ri->r_address));
   ul a,rel=(ul)(q+1);
+#ifdef W_X
+  static ul addend;
+#endif
 
   if (sri->r_scattered)
     a=sri->r_value;
   else if (ri->r_extern)
     a=n1[ri->r_symbolnum].n_value;
   else
-    a=start;
+    a=ri->r_symbolnum;
 
   switch(sri->r_scattered ? sri->r_type : ri->r_type) {
     
@@ -125,7 +166,7 @@ relocate(struct relocation_info *ri,stru
 }  
 
 static int
-relocate_symbols(struct nlist *n1,struct nlist *ne,char *st1,ul start) {
+relocate_symbols(struct nlist *n1,struct nlist *ne,char *st1,ul start,struct section *sec1) {
 
   struct nlist *n;
   struct node *nd;
@@ -133,7 +174,7 @@ relocate_symbols(struct nlist *n1,struct
   for (n=n1;n<ne;n++)
     
     if (n->n_sect) 
-      n->n_value+=start; 
+      n->n_value+=start+sec1[n->n_sect-1].reserved3;
     else if ((nd=find_sym_ptable(st1+n->n_un.n_strx)))
       n->n_value=nd->address; 
     else if (n->n_type&(N_PEXT|N_EXT))
@@ -163,12 +204,37 @@ static object
 load_memory(struct section *sec1,struct section *sece,void *v1,
 	    ul *p,ul **got,ul **gote,ul *start) { 
 
-  ul sz,gsz,sa,ma,a,fl;
+  ul sz,gsz,ma,a,fl;
+  volatile ul sa;
   struct section *sec;
   object memory;
+#ifdef W_X
+  ul text_pbits;
+#endif
   
   BEGIN_NO_INTERRUPT;
 
+  for (sec=sec1;sec<sece;sec++)
+      sec->reserved3=0;/*FIXME unneeded?*/
+
+  gsz=**got ? (**got+1)*sizeof(**got)-1 : 0;
+
+#ifdef W_X
+
+  massert(sece>sec1);
+  massert(ALLOC_SEC(sec1));
+  massert(sec1->flags&(S_ATTR_SOME_INSTRUCTIONS|S_ATTR_PURE_INSTRUCTIONS));
+  massert(!sec1->addr);
+  for (sec=sec1+1,sa=-1;sec<sece;sec++)
+    if (ALLOC_SEC(sec) && sa>sec->addr)
+      sa=sec->addr;
+  text_pbits=(sa+gsz+PAGESIZE-1)>>PAGEWIDTH;
+  sa=(text_pbits<<PAGEWIDTH)+(sa&0xf)-sa;
+  for (sec=sec1+1;sec<sece;sec++)
+    sec->addr+=(sec->reserved3=sa);
+
+#endif
+
   for (*p=sz=ma=0,sa=-1,sec=sec1;sec<sece;sec++)
     
     if (ALLOC_SEC(sec)) {
@@ -190,21 +256,23 @@ load_memory(struct section *sec1,struct
   ma=ma>sizeof(struct contblock) ? ma-1 : 0; 
   sz+=ma;
 
-  gsz=0;
-  if (**got) {
-    gsz=(**got+1)*sizeof(**got)-1;
-    sz+=gsz;
-  }
-  
+  sz+=gsz;
+
   memory=new_cfdata();
-  memory->cfd.cfd_size=sz; 
+  memory->cfd.cfd_size=sz;
+#ifdef W_X
+  memory->cfd.cfd_start=alloc_code_space(sz+PAGESIZE-sizeof(struct contblock),-1UL);
+  memory->cfd.cfd_start=(void *)(((ul)memory->cfd.cfd_start+(PAGESIZE-1))&~(PAGESIZE-1));
+  memory->cfd.cfd_nexp=text_pbits;
+#else
   memory->cfd.cfd_start=alloc_code_space(sz,-1UL);
+#endif
 
   a=(ul)memory->cfd.cfd_start;
   a=(a+ma)&~ma;
   for (sec=sec1;sec<sece;sec++)
     if (ALLOC_SEC(sec)) {
-      sec->addr+=a;  
+      sec->addr+=a;
       if (LOAD_SEC(sec))
 	memcpy((void *)sec->addr,v1+sec->offset,sec->size);
       else
@@ -213,7 +281,11 @@ load_memory(struct section *sec1,struct
 
   if (**got) {
     sz=**got;
+#ifdef W_X
+    *got=(void *)memory->cfd.cfd_start+(text_pbits<<PAGEWIDTH)-gsz;
+#else
     *got=(void *)memory->cfd.cfd_start+memory->cfd.cfd_size-gsz;
+#endif
     gsz=sizeof(**got)-1;
     *got=(void *)(((ul)*got+gsz)&~gsz);
     *gote=*got+sz;
@@ -487,11 +559,14 @@ seek_to_end_ofile(FILE *f) {
 #ifndef GOT_RELOC
 #define GOT_RELOC(a) 0
 #endif
+#ifndef GOT_RELOC_EXTRA
+#define GOT_RELOC_EXTRA(a) 0
+#endif
 
 static int
 label_got_symbols(void *v1,struct section *sec,struct nlist *n1,struct nlist *ne,ul *gs) {
 
-  struct relocation_info *ri,*re;
+  struct relocation_info *ri,*re;/*scattered?*/
   struct nlist *n;
 
   *gs=0;
@@ -504,8 +579,10 @@ label_got_symbols(void *v1,struct sectio
     
       massert(ri->r_extern);
       n=n1+ri->r_symbolnum;
-      if (!n->n_desc)
+      if (!n->n_desc) {
 	n->n_desc=++*gs;
+	(*gs)+=GOT_RELOC_EXTRA(ri);
+      }
 
     }
 
@@ -516,13 +593,20 @@ label_got_symbols(void *v1,struct sectio
 static int
 clear_protect_memory(object memory) {
 
+#ifndef W_X
+
   void *p,*pe;
 
   p=(void *)((unsigned long)memory->cfd.cfd_start & ~(PAGESIZE-1));
   pe=(void *)((unsigned long)(memory->cfd.cfd_start+memory->cfd.cfd_size + PAGESIZE-1) & ~(PAGESIZE-1));
-
   return gcl_mprotect(p,pe-p,PROT_READ|PROT_WRITE|PROT_EXEC);
 
+#else
+
+  return gcl_mprotect((void *)memory->cfd.cfd_start,memory->cfd.cfd_nexp<<PAGEWIDTH,PROT_READ|PROT_EXEC);
+
+#endif
+
 }
 
 
@@ -551,7 +635,7 @@ fasload(object faslfile) {
   
   massert(p=alloca(rls));
   
-  relocate_symbols(n1,ne,st1,start);
+  relocate_symbols(n1,ne,st1,start,sec1);
 
   find_init_address(n1,ne,st1,&init_address);
 
@@ -561,16 +645,17 @@ fasload(object faslfile) {
   
   massert(!clear_protect_memory(memory));
 
-#ifdef CLEAR_CACHE
+#if defined(HAVE_BUILTIN_CLEAR_CACHE)
+  __builtin___clear_cache((void *)memory->cfd.cfd_start,(void *)memory->cfd.cfd_start+memory->cfd.cfd_size);
+#elif defined(CLEAR_CACHE)
   CLEAR_CACHE;
 #endif
   
   massert(!un_mmap(v1,ve));
   
   if(symbol_value(sLAload_verboseA)!=Cnil) {
-    printf(";; start address for %.*s %p\n",
-	   (int)VLEN(memory->cfd.cfd_name),memory->cfd.cfd_name->st.st_self,
-	   memory->cfd.cfd_start);
+    coerce_to_filename(memory->cfd.cfd_name,FN1);
+    printf(";; start address for %s %p\n",FN1,memory->cfd.cfd_start);
     fflush(stdout);
   }
 
--- gcl27-2.7.1.orig/o/sgbc.c
+++ gcl27-2.7.1/o/sgbc.c
@@ -191,6 +191,11 @@ sgc_sweep_phase(void) {
 	if (TYPEWORD_TYPE_P(v->type) && x->d.s == SGC_NORMAL)
 	  continue;
 #endif
+
+#ifdef W_X
+	if (type_of(x)==t_cfdata && !x->d.tt && !is_free(x))
+	  gcl_mprotect((void *)x->cfd.cfd_start,x->cfd.cfd_nexp<<PAGEWIDTH,PROT_READ|PROT_WRITE);
+#endif
 	
 	k++;
 	make_free(x);
--- gcl27-2.7.1.orig/o/unexmacosx.c
+++ gcl27-2.7.1/o/unexmacosx.c
@@ -808,17 +808,221 @@ copy_other (struct load_command *lc)
   curr_header_offset += lc->cmdsize;
 }
 
+static void
+copy_linkedit (struct load_command *lc, long delta) {
+
+  struct linkedit_data_command *ldc=(struct linkedit_data_command *)lc;
+
+  ldc->dataoff+=delta;
+  copy_other ((void *)ldc);
+
+}
+
+typedef struct {
+  uint32_t magic;           /* 0xfade0cc0 */
+  uint32_t length;          /* Total length of SuperBlob */
+  uint32_t count;           /* Number of sub-blobs (usually 1 or 2) */
+} CS_SuperBlob;
+
+typedef struct {
+  uint32_t type;            /* 0 for CodeDirectory, 5 for Entitlements */
+  uint32_t offset;          /* Offset from start of SuperBlob */
+} CS_BlobIndex;
+
+typedef struct {
+  uint32_t magic;           /* 0xfade0c02 */
+  uint32_t length;          /* Length of this blob */
+  uint32_t version;         /* 0x20400 for ARM64 compatibility */
+  uint32_t flags;           /* Ad-hoc is usually 0 or 0x2 (adhoc) */
+  uint32_t hashOffset;      /* Offset to the hashes from start of this blob */
+  uint32_t identOffset;     /* Offset to the identifier string */
+  uint32_t nSpecialSlots;   /* Number of special slots (usually 0 for ad-hoc) */
+  uint32_t nCodeSlots;      /* Number of 4K pages in the file */
+  uint32_t codeLimit;       /* Total size of file being signed */
+  uint8_t  hashSize;        /* 32 for SHA-256 */
+  uint8_t  hashType;        /* 2 for SHA-256 */
+  uint8_t  platform;        /* 0 */
+  uint8_t  pageSize;        /* 12 (means 2^12 = 4096) */
+  uint32_t spare2;          /* 0 */
+  /* Version 0x20400 adds: */
+  uint32_t scatterOffset;   /* 0 */
+  uint32_t teamOffset;      /* 0 or offset to Team ID string */
+  uint32_t spare3;          /* 0 */
+  uint64_t codeLimit64;     /* 0 (unless file > 4GB) */
+  uint64_t execSegBase;     /* File offset of the __TEXT segment */
+  uint64_t execSegLimit;    /* Size of the __TEXT segment */
+  uint64_t execSegFlags;    /* Flags (CS_EXECSEG_*) */
+} CS_CodeDirectory;
+
+typedef struct {
+  uint32_t magic;      /* 0xfade0c01 (Requirements Set) */
+  uint32_t length;     /* Total length of this blob (usually 12 for empty sets) */
+  uint32_t count;      /* Number of Requirements in this set (0 for ad-hoc) */
+  /* Requirement Index entries follow if count > 0 */
+} CS_Requirements;
+
+typedef struct {
+  uint32_t magic;      /* 0xfade0b01 (CSMAGIC_BLOBWRAPPER) */
+  uint32_t length;     /* Total length of header + CMS data */
+} CS_BlobWrapper;
+
+#include <CommonCrypto/CommonDigest.h>
+/*void calculate_page_hash(const void *data, size_t len, uint8_t *out_hash) {*/
+
+#define uassert(a_)							  \
+  ({errno=0;								  \
+    if (!(a_)) {							  \
+      emsg("The assertion %s on line %d of %s in function %s failed: %s", \
+	   #a_,__LINE__,__FILE__,__FUNCTION__,strerror(errno));		  \
+      do_gcl_abort();							  \
+    };})
+#define mwrite(a,b) uassert(write(outfd,(a),(b))==(b));
+#define mpwrite(a,b,c) uassert(pwrite(outfd,(a),(b),(c))==(b));
+#define mpred(a,b,c) uassert(pread(outfd,(a),(b),(c))==(b))
+#define RNDUP(x,y) (((x)+(y)-1)&~((y)-1))
+
+int
+dump_code_signature(struct segment_command *le_seg,
+		    struct segment_command *tx_seg,
+		    unsigned long le_ho,int csf) {
+
+  struct linkedit_data_command ldc={LC_CODE_SIGNATURE,16,0,0};
+  CS_SuperBlob sb;
+  CS_BlobIndex bi[3];
+  CS_CodeDirectory cd;
+  CS_Requirements rq;
+  CS_BlobWrapper cms;
+  const char *id="GCL";
+  const long nss=2,ss=32,id_len=RNDUP(strlen(id)+1,8);
+  long cd_len,len,np,i;
+  uint8_t hash[32],data[PAGESIZE];
+  void *v;
+
+
+  lseek(outfd,0,SEEK_END);
+  len=lseek(outfd,0,SEEK_CUR);
+  if (len%16) {
+    unsigned long x=0;
+    mwrite(&x,sizeof(x));
+    len=lseek(outfd,0,SEEK_CUR);
+  }
+  ldc.dataoff=len;
+
+  np=RNDUP(len,PAGESIZE)>>PAGEWIDTH;
+  cd_len=sizeof(cd)+id_len+(nss+np)*ss;
+  ldc.datasize=sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq)+sizeof(cms);
+
+  mpwrite(&ldc,sizeof(ldc),curr_header_offset);
+  curr_header_offset+=ldc.cmdsize;
+
+  le_seg->filesize+=ldc.datasize;
+  le_seg->vmsize+=RNDUP(ldc.datasize,PAGESIZE);
+  mpwrite(le_seg,sizeof(*le_seg),le_ho);
+
+  uassert(curr_header_offset<=text_seg_lowest_offset);
+
+#if VERBOSE
+  printf ("%ld unused bytes follow Mach-O header\n",
+		 text_seg_lowest_offset - curr_header_offset);
+#endif
+
+  mh.sizeofcmds=curr_header_offset-sizeof(mh);
+  mh.ncmds+=(1-csf);
+  mpwrite(&mh,sizeof(mh),0);
+
+  sb.magic=htonl(0xfade0cc0);
+  sb.length=htonl(sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq)+sizeof(cms));
+  sb.count=htonl(sizeof(bi)/sizeof(*bi));
+  mwrite(&sb,sizeof(sb));
+
+  bi[0].type=htonl(0);
+  bi[0].offset=htonl(sizeof(sb)+sizeof(bi));
+  bi[1].type=htonl(2);
+  bi[1].offset=htonl(sizeof(sb)+sizeof(bi)+cd_len);
+  bi[2].type=htonl(0x10000);
+  bi[2].offset=htonl(sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq));
+  mwrite(&bi,sizeof(bi));
+
+  cd.magic=htonl(0xfade0c02);
+  cd.length=htonl(cd_len);
+  cd.version=htonl(0x20400);
+  cd.flags=htonl(2);
+  cd.hashOffset=htonl(cd_len-np*ss);
+  cd.identOffset=htonl(sizeof(cd));
+  cd.nSpecialSlots=htonl(nss);
+  cd.nCodeSlots=htonl(np);
+  cd.codeLimit=htonl(len<0x100000000 ? len : 0);
+  cd.hashSize=32;
+  cd.hashType=2;
+  cd.platform=0;
+  cd.pageSize=PAGEWIDTH;
+  cd.spare2=0;
+  cd.scatterOffset=htonl(0);
+  cd.teamOffset=htonl(0);
+  cd.spare3=htonl(0);
+  cd.codeLimit64=htonll(len>=0x100000000 ? len : 0);
+  cd.execSegBase=htonll(tx_seg->fileoff);
+  cd.execSegLimit=htonll(tx_seg->filesize);
+  cd.execSegFlags=htonll(1);
+  mwrite(&cd,sizeof(cd));
+
+  uassert(v=alloca(id_len));
+  uassert(memset(v,0,id_len));
+  uassert(strcpy(v,id));
+  mwrite(v,id_len);
+
+  rq.magic=htonl(0xfade0c01);
+  rq.length=htonl(12);
+  rq.count=htonl(0);
+  CC_SHA256(&rq,sizeof(rq),hash);
+  mwrite(hash,sizeof(hash));
+
+  uassert(memset(hash,0,sizeof(hash)));
+  mwrite(hash,sizeof(hash));
+
+  for (i=0;i<np;i++) {
+    uassert(memset(data,0,sizeof(data)));
+    mpred(data,i==np-1 ? ntohl(cd.codeLimit)-(i<<PAGEWIDTH) : sizeof(data),i<<PAGEWIDTH);
+    CC_SHA256(data,sizeof(data),hash);
+    mwrite(hash,sizeof(hash));
+  }
+
+  mwrite(&rq,sizeof(rq));
+
+  cms.magic=htonl(0xfade0b01);
+  cms.length=htonl(8);
+  mwrite(&cms,sizeof(cms));
+
+  return 0;
+
+}
+
 /* Loop through all load commands and dump them.  Then write the Mach
    header.  */
 static void
 dump_it () {
 
-  int i;
-  long linkedit_delta=0,linkedit_vmdelta=0;
+  int i,csf=0;
+  long linkedit_delta=0,linkedit_vmdelta=0,linkedit_vmsize=0,text_vmaddr=0;
+  struct segment_command *le_seg=NULL,*tx_seg=NULL;
+  unsigned long le_ho=0;
   
 #if VERBOSE
   printf ("--- Load Commands written to Output File ---\n");
 #endif
+
+  for (i=0;i<nlc;i++)
+    switch(lca[i]->cmd) {
+    case LC_SEGMENT:
+      if (strncmp (((struct segment_command *) lca[i])->segname, SEG_LINKEDIT, 16) == 0) {
+	linkedit_vmsize=((struct segment_command *) lca[i])->vmsize;
+	le_seg=(struct segment_command *)lca[i];
+      } else if (strncmp (((struct segment_command *) lca[i])->segname, SEG_TEXT, 16) == 0) {
+	text_vmaddr=((struct segment_command *) lca[i])->vmaddr;
+	tx_seg=(struct segment_command *)lca[i];
+      }
+    }
+  uassert(le_seg&&tx_seg);
   
   for (i = 0; i < nlc; i++)
     switch (lca[i]->cmd) {
@@ -844,10 +1048,18 @@ dump_it () {
 	  extern char *data_start;
 	  struct section *sectp = (struct section *) (scp + 1);
 	  unsigned long header_offset=curr_header_offset + sizeof (struct segment_command);
+	  extern int in_pre_gcl;/*support libboot.so*/
+	  unsigned long heap_vmsize=					\
+	    (in_pre_gcl ? SAVED_PRE_IMAGE_SPAN : SAVED_IMAGE_SPAN) -	\
+	    (long)((long)data_start-text_vmaddr) -			\
+	    linkedit_vmsize;
+
+	  if (core_end-data_start>heap_vmsize)
+	    unexec_error ("data exceeds __HEAP vmsize");
 	  
 	  scp->vmaddr=(long)data_start;
-	  linkedit_vmdelta=(1UL<<37)-scp->vmsize;
-	  scp->vmsize=(1UL<<37);
+	  linkedit_vmdelta=heap_vmsize-scp->vmsize;
+	  scp->vmsize=heap_vmsize;
 	  scp->fileoff=curr_file_offset;
 	  scp->filesize=core_end-data_start;
 	  scp->maxprot=VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE;
@@ -858,6 +1070,7 @@ dump_it () {
 	  sectp->addr=scp->vmaddr;
 	  sectp->size=scp->filesize;
 	  sectp->flags=S_REGULAR;
+	  sectp->offset=scp->fileoff;
 
 	  if (!unexec_write (header_offset, sectp, sizeof (struct section)))
 	    unexec_error ("cannot write section _HEAP's header");
@@ -876,6 +1089,7 @@ dump_it () {
 	    unexec_error ("cannot handle multiple LINKEDIT segments in input file");
 	  linkedit_delta = curr_file_offset - scp->fileoff;
 	  scp->vmaddr+=linkedit_vmdelta;
+	  le_ho=curr_header_offset;
 	  copy_segment (lca[i]);
 	} else
 	  copy_segment (lca[i]);
@@ -896,22 +1110,20 @@ dump_it () {
       copy_dyld_info (lca[i], linkedit_delta);
       break;
 #endif
+    case LC_CODE_SIGNATURE:
+      csf=1;
+      break;
+    case LC_DATA_IN_CODE:
+    case LC_FUNCTION_STARTS:
+    case LC_DYLD_EXPORTS_TRIE:
+      copy_linkedit(lca[i],linkedit_delta);/*FIXME*/
+      break;
     default:
       copy_other (lca[i]);
       break;
     }
-  
-  if (curr_header_offset > text_seg_lowest_offset)
-    unexec_error ("not enough room for load commands for new __DATA segments");
-  
-#if VERBOSE
-  printf ("%ld unused bytes follow Mach-O header\n",
-		 text_seg_lowest_offset - curr_header_offset);
-#endif
-  
-  mh.sizeofcmds = curr_header_offset - sizeof (struct mach_header);
-  if (!unexec_write (0, &mh, sizeof (struct mach_header)))
-    unexec_error ("cannot write final header contents");
+
+  dump_code_signature(le_seg,tx_seg,le_ho,csf);
 
 }
 
@@ -1014,7 +1226,7 @@ unexec (char *outfile, char *infile, voi
   if ((infd = open (infile, O_RDONLY, 0)) < 0)
     unexec_error ("cannot open input file `%s'", infile);
 
-  if ((outfd = open (outfile, O_WRONLY | O_TRUNC | O_CREAT, 0755)) < 0) {
+  if ((outfd = open (outfile, O_RDWR | O_TRUNC | O_CREAT, 0755)) < 0) {
     close (infd);
     unexec_error ("cannot open output file `%s'", outfile);
   }
@@ -1042,7 +1254,7 @@ static size_t stub_size (malloc_zone_t *
 
 #ifdef HAVE_MALLOC_ZONE_MEMALIGN
 static void *
-stub_memalign(size_t boundary, size_t size) {
+stub_memalign(malloc_zone_t *zone,size_t boundary, size_t size) {
 
   extern void *my_malloc (size_t);
   void *v=my_malloc(size+boundary-1);
--- gcl27-2.7.1.orig/o/unixsys.c
+++ gcl27-2.7.1/o/unixsys.c
@@ -41,7 +41,7 @@ vsystem(char *command) {
   char *c;
   const char *x1[]={"/bin/sh","-c",NULL,NULL},*spc=" \n\t",**p1,**pp,**pe;
   int s;
-  pid_t pid;
+  pid_t pid,pid1;
   posix_spawnattr_t attr;
   posix_spawn_file_actions_t file_actions;
   extern char **environ;
@@ -68,7 +68,9 @@ vsystem(char *command) {
   massert(!posix_spawn_file_actions_destroy(&file_actions));
 
   massert(pid>0);
-  massert(pid==waitpid(pid,&s,0));
+
+  for (;(pid1=waitpid(pid,&s,0))!=pid && errno==EINTR;);
+  massert(pid==pid1);
 
   if ((s>>8)&128)
     emsg("execvp failure when executing '%s': %s\n",command,strerror((s>>8)&0x7f));
--- gcl27-2.7.1.orig/o/usig.c
+++ gcl27-2.7.1/o/usig.c
@@ -173,6 +173,18 @@ DEFUN("FEENABLEEXCEPT",object,fSfeenable
 
 }
 
+DEFUN("FETESTEXCEPT",object,fSfetestexcept,SI,1,1,NONE,II,OO,OO,OO,(fixnum x),"") {
+
+  RETURN1((object)(long)fetestexcept(x));
+
+}
+
+DEFUN("FECLEAREXCEPT",object,fSfeclearexcept,SI,1,1,NONE,II,OO,OO,OO,(fixnum x),"") {
+
+  RETURN1((object)(long)feclearexcept(x));
+
+}
+
 DEFUN("FEDISABLEEXCEPT",object,fSfedisableexcept,SI,0,0,NONE,IO,OO,OO,OO,(void),"") {
 
   fixnum x=0;
--- gcl27-2.7.1.orig/o/xdrfuns.c
+++ gcl27-2.7.1/o/xdrfuns.c
@@ -163,6 +163,9 @@ DEFUN("XDR-READ",object,fSxdr_read,SI,2,
     return elt;
     break;
   default:
+    {short s;
+      xdr_short(xdrp,&s);
+    }/*ensure stub*/
     FEerror("unsupported xdr ~a",1,elt);
     return elt;
     break;
--- gcl27-2.7.1.orig/pcl/gcl_pcl_dfun.lisp
+++ gcl27-2.7.1/pcl/gcl_pcl_dfun.lisp
@@ -1345,14 +1345,17 @@ And so, we are saved.
     (t   t)))
 
 (defun class-applicable-using-class-p (specl type)
-  (let ((pred (memq specl (if (eq *boot-state* 'complete)
+  (let* ((pred (memq specl (if (eq *boot-state* 'complete)
 			      (class-precedence-list type)
-			      (early-class-precedence-list type)))))
+			      (early-class-precedence-list type))))
+	 ;FIXME C compiler bug workaround ignored variadic decl macosx arm
+	 (scp (unless (or pred *in-precompute-effective-methods-p*)
+		(superclasses-compatible-p specl type))))
     (values pred
 	    (or pred
 		(if (not *in-precompute-effective-methods-p*)
 		    ;; classes might get common subclass
-		    (superclasses-compatible-p specl type)
+		    scp
 		    ;; worry only about existing classes
 		    (classes-have-common-subclass-p specl type))))))
 
