Description: <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.
 .
 gcl27 (2.7.1-4) unstable; urgency=medium
 .
   * Version_2_7_2ore3
Author: Camm Maguire <camm@debian.org>

---
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-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
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>
Last-Update: 2025-05-03

--- gcl27-2.7.1.orig/Makefile.am
+++ gcl27-2.7.1/Makefile.am
@@ -23,7 +23,7 @@ gcltkdocdir=$(docdir)/gcl-tk
 
 # primaries
 
-noinst_PROGRAMS=bin/dpp o/grab_defs
+noinst_PROGRAMS=bin/dpp$(EXEEXT) o/grab_defs$(EXEEXT)
 noinst_LIBRARIES=lib/libbase_gcl.a
 
 my_unixport_PROGRAMS=unixport/saved_gcl unixport/saved_ansi_gcl
@@ -31,7 +31,7 @@ my_unixport_LIBRARIES=unixport/libgcl.a
 bin_SCRIPTS=bin/gcl
 check_SCRIPTS=sb_ansi-tests/test_results sb_bench/timing_results
 info_TEXINFOS=info/gcl.texi info/gcl-si.texi
-my_unixport_DATA=$(addprefix unixport/,init_raw.lsp gcl.script libboot.so \
+my_unixport_DATA=$(LIBBOOTSO) $(addprefix unixport/,init_raw.lsp gcl.script \
 				       gcl_cmpnopt_gcl.lsp gcl_cmpnopt_ansi_gcl.lsp)
 my_h_DATA=h/cmpinclude.h
 my_cmpnew_DATA=sb_cmpnew/gcl_collectfn.o cmpnew/gcl_lfun_list.lsp cmpnew/gcl_cmpopt.lsp
@@ -48,6 +48,12 @@ dist_noinst_DATA=
 
 # conditionals
 
+if AMM_LIBBOOT
+LIBBOOTSO=unixport/libboot.so
+else
+BOOT_C=o/boot.c
+endif
+
 if AMM_GPROF
 
 LIBGPROF=lib/libgprof.a
@@ -165,7 +171,7 @@ endif
 BUILT_SOURCES=$(BUILT_H) $(BUILT_C)
 CLEANFILES=$(BUILT_SOURCES) $(INI_FILES) o/boot.ini
 
-lib_libbase_gcl_a_SOURCES=$(C_SRC) $(BASE_H) $(CMPI_H) $(ARCHT_H)
+lib_libbase_gcl_a_SOURCES=$(C_SRC) $(BASE_H) $(CMPI_H) $(ARCHT_H) $(BOOT_C)
 nodist_lib_libbase_gcl_a_SOURCES=$(BUILT_C)
 lib_libgprof_a_SOURCES=o/gprof.c
 lib_libgprof_a_CFLAGS=$(AM_CFLAGS) -fno-omit-frame-pointer -pg
@@ -237,7 +243,7 @@ $(addprefix unixport/saved_,gcl ansi_gcl
 unixport/saved_%: unixport/raw_% # rebuild these only when out of date
 
 unixport/saved_%: | unixport/raw_% unixport/gcl_cmpnopt_%.lsp \
-		    unixport/libboot.so unixport/init_raw.lsp
+		    $(LIBBOOTSO) unixport/init_raw.lsp
 	rm -rf sb_$* # FIXME sandbox ugliness for parallel builds
 	mkdir sb_$*
 	cd sb_$* && \
@@ -245,14 +251,17 @@ unixport/saved_%: | unixport/raw_% unixp
 		ln -snf gcl_cmpnopt_$*.lsp ../unixport/gcl_cmpnopt.lsp && \
 		mkdir h && \
 		ln -snf ../../h/cmpinclude.h h/ && \
-		echo "(system:save-system \"../$@\")" | cat ../unixport/init_raw.lsp - | \
+		touch prof_init.lsp && \
+		( ! 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 \
 				../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 -rf sb_$*
 
-unixport/raw_%: unixport/lib%.a
-	$(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $< $(LIBS) #FIXME relro
+unixport/raw_%: unixport/lib%.a $(FF) $(LF)
+	$(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS) #FIXME relro
 
 unixport/gcl_cmpnopt_gcl_gprof.lsp unixport/gcl_cmpnopt_ansi_gcl_gprof.lsp:\
 unixport/gcl_cmpnopt_%_gprof.lsp: unixport/gcl_cmpnopt_%.lsp
@@ -464,15 +473,15 @@ o/boot.h: %.h: %.ini
 	cat $< >> $@
 	echo '}' >> $@
 
-CLEANFILES+=unixport/libboot.so
-unixport/libboot.so: o/boot.c o/boot.h
+CLEANFILES+=$(LIBBOOTSO)
+$(LIBBOOTSO): o/boot.c o/boot.h
 	$(CC) $(AM_CPPFLAGS) -Io $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) \
 		-fPIC -shared -Wl,-undefined -Wl,dynamic_lookup $< -o $@
 
 o/boot.ini: CPPFLAGS += -DNO_BOOT_H
 # parallel builds can only have one target accessing an intermediate file
 # solved with BUILT_SOURCES
-o/%.ini:  o/%.c | o/grab_defs
+o/%.ini:  o/%.c | o/grab_defs$(EXEEXT)
 	@$(CPP) $(AM_CPPFLAGS) -P -DINICOMP -DNO_DEFUN $(CPPFLAGS) $< | $| > new_$(@F)
 	@([ -e $@ ] && cmp new_$(@F) $@) || mv -v new_$(@F) $@
 	@rm -f new_$(@F)
@@ -540,8 +549,8 @@ sb_cmpnew/gcl_collectfn.o: cmpnew/gcl_co
 	[ -d $(@D) ] || mkdir -p $(@D)
 	$(word 1,$|) -compile $< -o $@
 
-%.c: %.d | bin/dpp
-	bin/dpp $< $@
+%.c: %.d | bin/dpp$(EXEEXT)
+	$| $< $@
 
 gcl-tk/demos gcl-tk $(MY_DIRS): % :
 	[ -d $@ ] || mkdir -p $@
--- gcl27-2.7.1.orig/Makefile.in
+++ gcl27-2.7.1/Makefile.in
@@ -93,7 +93,6 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-noinst_PROGRAMS = bin/dpp$(EXEEXT) o/grab_defs$(EXEEXT)
 my_unixport_PROGRAMS = unixport/saved_gcl$(EXEEXT) \
 	unixport/saved_ansi_gcl$(EXEEXT) $(am__EXEEXT_1)
 @AMM_GPROF_TRUE@am__append_1 = $(LIBGPROF) lib/libbase_gcl_gprof.a
@@ -176,6 +175,56 @@ am__v_AR_1 =
 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 h/apply_n.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 h/elf32_i386_reloc.h \
+	h/elf32_m68k_reloc.h h/elf32_mips_reloc.h \
+	h/elf32_mips_reloc_special.h h/elf32_ppc_reloc.h \
+	h/elf32_s390_reloc.h h/elf32_sh4_reloc.h h/elf32_sparc_reloc.h \
+	h/elf64_aarch64_reloc.h h/elf64_aarch64_reloc_special.h \
+	h/elf64_alpha_reloc.h h/elf64_alpha_reloc_special.h \
+	h/elf64_i386_reloc.h h/elf64_i386_reloc_special.h \
+	h/elf64_loongarch64_reloc.h \
+	h/elf64_loongarch64_reloc_special.h h/elf64_mips_reloc.h \
+	h/elf64_mips_reloc_special.h h/elf64_ppcle_reloc.h \
+	h/elf64_ppcle_reloc_special.h h/elf64_ppc_reloc.h \
+	h/elf64_ppc_reloc_special.h h/elf64_riscv64_reloc.h \
+	h/elf64_s390_reloc.h h/elf64_sparc_reloc.h \
+	h/elf64_sparc_reloc_special.h h/mach32_i386_reloc.h \
+	h/mach32_ppc_reloc.h h/mach64_i386_reloc.h h/sh4-linux.h \
+	h/amd64-linux.h h/amd64-kfreebsd.h h/386-linux.h \
+	h/riscv64-linux.h h/386-kfreebsd.h h/amd64-gnu.h h/386-gnu.h \
+	h/m68k-linux.h h/alpha-linux.h h/mips-linux.h h/mipsel-linux.h \
+	h/sparc-linux.h h/aarch64-linux.h h/armhf-linux.h \
+	h/arm-linux.h h/s390-linux.h h/ia64-linux.h h/hppa-linux.h \
+	h/loongarch64-linux.h h/powerpc-linux.h h/powerpc-macosx.h \
+	h/386-macosx.h h/mingw.h h/gnuwin95.h h/FreeBSD.h h/solaris.h \
+	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) \
@@ -202,20 +251,71 @@ am__objects_1 = o/typespec.$(OBJEXT) o/a
 	o/bzero.$(OBJEXT) o/user_init.$(OBJEXT) o/user_match.$(OBJEXT) \
 	o/mapfun.$(OBJEXT)
 am__objects_2 =
+@AMM_LIBBOOT_FALSE@am__objects_3 = o/boot.$(OBJEXT)
 am_lib_libbase_gcl_a_OBJECTS = $(am__objects_1) $(am__objects_2) \
-	$(am__objects_2) $(am__objects_2)
-am__objects_3 = o/character.$(OBJEXT) o/file.$(OBJEXT) \
+	$(am__objects_2) $(am__objects_2) $(am__objects_3)
+am__objects_4 = o/character.$(OBJEXT) o/file.$(OBJEXT) \
 	o/gcl_readline.$(OBJEXT) o/hash.$(OBJEXT) o/list.$(OBJEXT) \
 	o/package.$(OBJEXT) o/pathname.$(OBJEXT) o/print.$(OBJEXT) \
 	o/read.$(OBJEXT) o/sequence.$(OBJEXT) o/string.$(OBJEXT) \
 	o/symbol.$(OBJEXT) o/new_init.$(OBJEXT)
-nodist_lib_libbase_gcl_a_OBJECTS = $(am__objects_3)
+nodist_lib_libbase_gcl_a_OBJECTS = $(am__objects_4)
 lib_libbase_gcl_a_OBJECTS = $(am_lib_libbase_gcl_a_OBJECTS) \
 	$(nodist_lib_libbase_gcl_a_OBJECTS)
 lib_libbase_gcl_gprof_a_AR = $(AR) $(ARFLAGS)
 lib_libbase_gcl_gprof_a_RANLIB = $(RANLIB)
 lib_libbase_gcl_gprof_a_LIBADD =
-am__objects_4 = o/lib_libbase_gcl_gprof_a-typespec.$(OBJEXT) \
+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 h/apply_n.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 h/elf32_i386_reloc.h \
+	h/elf32_m68k_reloc.h h/elf32_mips_reloc.h \
+	h/elf32_mips_reloc_special.h h/elf32_ppc_reloc.h \
+	h/elf32_s390_reloc.h h/elf32_sh4_reloc.h h/elf32_sparc_reloc.h \
+	h/elf64_aarch64_reloc.h h/elf64_aarch64_reloc_special.h \
+	h/elf64_alpha_reloc.h h/elf64_alpha_reloc_special.h \
+	h/elf64_i386_reloc.h h/elf64_i386_reloc_special.h \
+	h/elf64_loongarch64_reloc.h \
+	h/elf64_loongarch64_reloc_special.h h/elf64_mips_reloc.h \
+	h/elf64_mips_reloc_special.h h/elf64_ppcle_reloc.h \
+	h/elf64_ppcle_reloc_special.h h/elf64_ppc_reloc.h \
+	h/elf64_ppc_reloc_special.h h/elf64_riscv64_reloc.h \
+	h/elf64_s390_reloc.h h/elf64_sparc_reloc.h \
+	h/elf64_sparc_reloc_special.h h/mach32_i386_reloc.h \
+	h/mach32_ppc_reloc.h h/mach64_i386_reloc.h h/sh4-linux.h \
+	h/amd64-linux.h h/amd64-kfreebsd.h h/386-linux.h \
+	h/riscv64-linux.h h/386-kfreebsd.h h/amd64-gnu.h h/386-gnu.h \
+	h/m68k-linux.h h/alpha-linux.h h/mips-linux.h h/mipsel-linux.h \
+	h/sparc-linux.h h/aarch64-linux.h h/armhf-linux.h \
+	h/arm-linux.h h/s390-linux.h h/ia64-linux.h h/hppa-linux.h \
+	h/loongarch64-linux.h h/powerpc-linux.h h/powerpc-macosx.h \
+	h/386-macosx.h h/mingw.h h/gnuwin95.h h/FreeBSD.h h/solaris.h \
+	h/solaris-i386.h o/boot.c o/gprof.c
+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) \
@@ -281,11 +381,13 @@ am__objects_4 = o/lib_libbase_gcl_gprof_
 	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)
-am__objects_5 = $(am__objects_4) $(am__objects_2) $(am__objects_2) \
-	$(am__objects_2)
-am_lib_libbase_gcl_gprof_a_OBJECTS = $(am__objects_5) \
+@AMM_LIBBOOT_FALSE@am__objects_6 =  \
+@AMM_LIBBOOT_FALSE@	o/lib_libbase_gcl_gprof_a-boot.$(OBJEXT)
+am__objects_7 = $(am__objects_5) $(am__objects_2) $(am__objects_2) \
+	$(am__objects_2) $(am__objects_6)
+am_lib_libbase_gcl_gprof_a_OBJECTS = $(am__objects_7) \
 	o/lib_libbase_gcl_gprof_a-gprof.$(OBJEXT)
-am__objects_6 = o/lib_libbase_gcl_gprof_a-character.$(OBJEXT) \
+am__objects_8 = o/lib_libbase_gcl_gprof_a-character.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-file.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-gcl_readline.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-hash.$(OBJEXT) \
@@ -298,8 +400,8 @@ am__objects_6 = o/lib_libbase_gcl_gprof_
 	o/lib_libbase_gcl_gprof_a-string.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-symbol.$(OBJEXT) \
 	o/lib_libbase_gcl_gprof_a-new_init.$(OBJEXT)
-am__objects_7 = $(am__objects_6)
-nodist_lib_libbase_gcl_gprof_a_OBJECTS = $(am__objects_7)
+am__objects_9 = $(am__objects_8)
+nodist_lib_libbase_gcl_gprof_a_OBJECTS = $(am__objects_9)
 lib_libbase_gcl_gprof_a_OBJECTS =  \
 	$(am_lib_libbase_gcl_gprof_a_OBJECTS) \
 	$(nodist_lib_libbase_gcl_gprof_a_OBJECTS)
@@ -311,20 +413,20 @@ lib_libgprof_a_OBJECTS = $(am_lib_libgpr
 lib_libxgcl_a_AR = $(AR) $(ARFLAGS)
 lib_libxgcl_a_RANLIB = $(RANLIB)
 lib_libxgcl_a_LIBADD =
-am__objects_8 = xgcl-2/Events.$(OBJEXT) xgcl-2/general-c.$(OBJEXT) \
+am__objects_10 = xgcl-2/Events.$(OBJEXT) xgcl-2/general-c.$(OBJEXT) \
 	xgcl-2/XStruct-2.$(OBJEXT) xgcl-2/XStruct-4.$(OBJEXT) \
 	xgcl-2/Xutil-2.$(OBJEXT)
-am_lib_libxgcl_a_OBJECTS = $(am__objects_8)
+am_lib_libxgcl_a_OBJECTS = $(am__objects_10)
 lib_libxgcl_a_OBJECTS = $(am_lib_libxgcl_a_OBJECTS)
 lib_libxgcl_gprof_a_AR = $(AR) $(ARFLAGS)
 lib_libxgcl_gprof_a_RANLIB = $(RANLIB)
 lib_libxgcl_gprof_a_LIBADD =
-am__objects_9 = xgcl-2/lib_libxgcl_gprof_a-Events.$(OBJEXT) \
+am__objects_11 = xgcl-2/lib_libxgcl_gprof_a-Events.$(OBJEXT) \
 	xgcl-2/lib_libxgcl_gprof_a-general-c.$(OBJEXT) \
 	xgcl-2/lib_libxgcl_gprof_a-XStruct-2.$(OBJEXT) \
 	xgcl-2/lib_libxgcl_gprof_a-XStruct-4.$(OBJEXT) \
 	xgcl-2/lib_libxgcl_gprof_a-Xutil-2.$(OBJEXT)
-am_lib_libxgcl_gprof_a_OBJECTS = $(am__objects_9)
+am_lib_libxgcl_gprof_a_OBJECTS = $(am__objects_11)
 lib_libxgcl_gprof_a_OBJECTS = $(am_lib_libxgcl_gprof_a_OBJECTS)
 unixport_libansi_gcl_a_AR = $(AR) $(ARFLAGS)
 unixport_libansi_gcl_a_RANLIB = $(RANLIB)
@@ -351,10 +453,10 @@ unixport_libgcl_gprof_a_OBJECTS =  \
 bin_dpp_SOURCES = bin/dpp.c
 bin_dpp_OBJECTS = bin/dpp.$(OBJEXT)
 bin_dpp_LDADD = $(LDADD)
-am__objects_10 = gcl-tk/gcltkaux-guis.$(OBJEXT) \
+am__objects_12 = gcl-tk/gcltkaux-guis.$(OBJEXT) \
 	gcl-tk/gcltkaux-tkAppInit.$(OBJEXT) \
 	gcl-tk/gcltkaux-tkMain.$(OBJEXT)
-am_gcl_tk_gcltkaux_OBJECTS = $(am__objects_10)
+am_gcl_tk_gcltkaux_OBJECTS = $(am__objects_12)
 gcl_tk_gcltkaux_OBJECTS = $(am_gcl_tk_gcltkaux_OBJECTS)
 am__DEPENDENCIES_1 =
 gcl_tk_gcltkaux_DEPENDENCIES = $(am__DEPENDENCIES_1) \
@@ -400,8 +502,8 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.
 	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)/bzero.Po \
-	o/$(DEPDIR)/catch.Po o/$(DEPDIR)/cfun.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 \
@@ -422,6 +524,7 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.
 	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 \
@@ -554,9 +657,10 @@ SOURCES = $(lib_libbase_gcl_a_SOURCES) \
 	$(unixport_saved_ansi_gcl_gprof_SOURCES) \
 	$(unixport_saved_gcl_SOURCES) \
 	$(unixport_saved_gcl_gprof_SOURCES)
-DIST_SOURCES = $(lib_libbase_gcl_a_SOURCES) \
-	$(lib_libbase_gcl_gprof_a_SOURCES) $(lib_libgprof_a_SOURCES) \
-	$(lib_libxgcl_a_SOURCES) $(lib_libxgcl_gprof_a_SOURCES) \
+DIST_SOURCES = $(am__lib_libbase_gcl_a_SOURCES_DIST) \
+	$(am__lib_libbase_gcl_gprof_a_SOURCES_DIST) \
+	$(lib_libgprof_a_SOURCES) $(lib_libxgcl_a_SOURCES) \
+	$(lib_libxgcl_gprof_a_SOURCES) \
 	$(unixport_libansi_gcl_a_SOURCES) \
 	$(unixport_libansi_gcl_gprof_a_SOURCES) \
 	$(unixport_libgcl_a_SOURCES) \
@@ -712,6 +816,7 @@ ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 EXT = @EXT@
 EXTRA_LOBJS = @EXTRA_LOBJS@
+FF = @FF@
 FINAL_CFLAGS = @FINAL_CFLAGS@
 GCL_CC = @GCL_CC@
 GMP = @GMP@
@@ -731,6 +836,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 LDFLAGS = @LDFLAGS@
 LEADING_UNDERSCORE = @LEADING_UNDERSCORE@
+LF = @LF@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LI_CC = @LI_CC@
@@ -854,6 +960,9 @@ my_cmpnewdir = $(my_libdir)/cmpnew
 my_clcsdir = $(my_libdir)/clcs
 xgcl2docdir = $(docdir)/xgcl-2
 gcltkdocdir = $(docdir)/gcl-tk
+
+# primaries
+noinst_PROGRAMS = bin/dpp$(EXEEXT) o/grab_defs$(EXEEXT)
 noinst_LIBRARIES = lib/libbase_gcl.a $(am__append_1) $(am__append_4) \
 	$(am__append_7)
 my_unixport_LIBRARIES = unixport/libgcl.a unixport/libansi_gcl.a \
@@ -862,7 +971,7 @@ bin_SCRIPTS = bin/gcl
 check_SCRIPTS = sb_ansi-tests/test_results sb_bench/timing_results
 info_TEXINFOS = info/gcl.texi info/gcl-si.texi $(am__append_6) \
 	$(am__append_9)
-my_unixport_DATA = $(addprefix unixport/,init_raw.lsp gcl.script libboot.so \
+my_unixport_DATA = $(LIBBOOTSO) $(addprefix unixport/,init_raw.lsp gcl.script \
 				       gcl_cmpnopt_gcl.lsp gcl_cmpnopt_ansi_gcl.lsp)
 
 my_h_DATA = h/cmpinclude.h
@@ -879,6 +988,8 @@ lisp_DATA = elisp/add-default.el elisp/a
 dist_noinst_DATA = $(am__append_5) $(am__append_8)
 
 # conditionals
+@AMM_LIBBOOT_TRUE@LIBBOOTSO = unixport/libboot.so
+@AMM_LIBBOOT_FALSE@BOOT_C = o/boot.c
 @AMM_GPROF_TRUE@LIBGPROF = lib/libgprof.a
 
 #it would be nice someday to sandbox xgcl-2 and gcl-tk builds in tmpdirs
@@ -968,9 +1079,8 @@ BUILT_SOURCES = $(BUILT_H) $(BUILT_C)
 CLEANFILES = $(BUILT_SOURCES) $(INI_FILES) o/boot.ini $(addprefix \
 	unixport/raw_,gcl gcl_gprof ansi_gcl ansi_gcl_gprof) \
 	h/cmpinclude.h h/mstdint.h h/cmpincludea.h h/mcompdefs.h \
-	unixport/libboot.so gcl-tk/demos/index.lsp \
-	gcl-tk/demos/gc-monitor.o
-lib_libbase_gcl_a_SOURCES = $(C_SRC) $(BASE_H) $(CMPI_H) $(ARCHT_H)
+	$(LIBBOOTSO) gcl-tk/demos/index.lsp gcl-tk/demos/gc-monitor.o
+lib_libbase_gcl_a_SOURCES = $(C_SRC) $(BASE_H) $(CMPI_H) $(ARCHT_H) $(BOOT_C)
 nodist_lib_libbase_gcl_a_SOURCES = $(BUILT_C)
 lib_libgprof_a_SOURCES = o/gprof.c
 lib_libgprof_a_CFLAGS = $(AM_CFLAGS) -fno-omit-frame-pointer -pg
@@ -1293,6 +1403,7 @@ o/bzero.$(OBJEXT): o/$(am__dirstamp) o/$
 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)
+o/boot.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/character.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/file.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
 o/gcl_readline.$(OBJEXT): o/$(am__dirstamp) \
@@ -1447,6 +1558,8 @@ o/lib_libbase_gcl_gprof_a-user_match.$(O
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-mapfun.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
+o/lib_libbase_gcl_gprof_a-boot.$(OBJEXT): o/$(am__dirstamp) \
+	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-gprof.$(OBJEXT): o/$(am__dirstamp) \
 	o/$(DEPDIR)/$(am__dirstamp)
 o/lib_libbase_gcl_gprof_a-character.$(OBJEXT): o/$(am__dirstamp) \
@@ -1654,6 +1767,7 @@ distclean-compile:
 @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
@@ -1688,6 +1802,7 @@ distclean-compile:
 @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
@@ -2761,6 +2876,20 @@ o/lib_libbase_gcl_gprof_a-mapfun.obj: 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-mapfun.obj `if test -f 'o/mapfun.c'; then $(CYGPATH_W) 'o/mapfun.c'; else $(CYGPATH_W) '$(srcdir)/o/mapfun.c'; fi`
 
+o/lib_libbase_gcl_gprof_a-boot.o: o/boot.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-boot.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Tpo -c -o o/lib_libbase_gcl_gprof_a-boot.o `test -f 'o/boot.c' || echo '$(srcdir)/'`o/boot.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/boot.c' object='o/lib_libbase_gcl_gprof_a-boot.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-boot.o `test -f 'o/boot.c' || echo '$(srcdir)/'`o/boot.c
+
+o/lib_libbase_gcl_gprof_a-boot.obj: o/boot.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-boot.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Tpo -c -o o/lib_libbase_gcl_gprof_a-boot.obj `if test -f 'o/boot.c'; then $(CYGPATH_W) 'o/boot.c'; else $(CYGPATH_W) '$(srcdir)/o/boot.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='o/boot.c' object='o/lib_libbase_gcl_gprof_a-boot.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-boot.obj `if test -f 'o/boot.c'; then $(CYGPATH_W) 'o/boot.c'; else $(CYGPATH_W) '$(srcdir)/o/boot.c'; fi`
+
 o/lib_libbase_gcl_gprof_a-gprof.o: o/gprof.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-gprof.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-gprof.Tpo -c -o o/lib_libbase_gcl_gprof_a-gprof.o `test -f 'o/gprof.c' || echo '$(srcdir)/'`o/gprof.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-gprof.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-gprof.Po
@@ -3974,6 +4103,7 @@ distclean: distclean-am
 	-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
@@ -4008,6 +4138,7 @@ distclean: distclean-am
 	-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
@@ -4294,6 +4425,7 @@ maintainer-clean: maintainer-clean-am
 	-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
@@ -4328,6 +4460,7 @@ maintainer-clean: maintainer-clean-am
 	-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
@@ -4541,7 +4674,7 @@ $(addprefix unixport/saved_,gcl ansi_gcl
 unixport/saved_%: unixport/raw_% # rebuild these only when out of date
 
 unixport/saved_%: | unixport/raw_% unixport/gcl_cmpnopt_%.lsp \
-		    unixport/libboot.so unixport/init_raw.lsp
+		    $(LIBBOOTSO) unixport/init_raw.lsp
 	rm -rf sb_$* # FIXME sandbox ugliness for parallel builds
 	mkdir sb_$*
 	cd sb_$* && \
@@ -4549,14 +4682,17 @@ unixport/saved_%: | unixport/raw_% unixp
 		ln -snf gcl_cmpnopt_$*.lsp ../unixport/gcl_cmpnopt.lsp && \
 		mkdir h && \
 		ln -snf ../../h/cmpinclude.h h/ && \
-		echo "(system:save-system \"../$@\")" | cat ../unixport/init_raw.lsp - | \
+		touch prof_init.lsp && \
+		( ! 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 \
 				../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 -rf sb_$*
 
-unixport/raw_%: unixport/lib%.a
-	$(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $< $(LIBS) #FIXME relro
+unixport/raw_%: unixport/lib%.a $(FF) $(LF)
+	$(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS) #FIXME relro
 
 unixport/gcl_cmpnopt_gcl_gprof.lsp unixport/gcl_cmpnopt_ansi_gcl_gprof.lsp:\
 unixport/gcl_cmpnopt_%_gprof.lsp: unixport/gcl_cmpnopt_%.lsp
@@ -4754,14 +4890,14 @@ o/boot.h: %.h: %.ini
 	echo 'void gcl_init_boot(void){' >> $@
 	cat $< >> $@
 	echo '}' >> $@
-unixport/libboot.so: o/boot.c o/boot.h
+$(LIBBOOTSO): o/boot.c o/boot.h
 	$(CC) $(AM_CPPFLAGS) -Io $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) \
 		-fPIC -shared -Wl,-undefined -Wl,dynamic_lookup $< -o $@
 
 o/boot.ini: CPPFLAGS += -DNO_BOOT_H
 # parallel builds can only have one target accessing an intermediate file
 # solved with BUILT_SOURCES
-o/%.ini:  o/%.c | o/grab_defs
+o/%.ini:  o/%.c | o/grab_defs$(EXEEXT)
 	@$(CPP) $(AM_CPPFLAGS) -P -DINICOMP -DNO_DEFUN $(CPPFLAGS) $< | $| > new_$(@F)
 	@([ -e $@ ] && cmp new_$(@F) $@) || mv -v new_$(@F) $@
 	@rm -f new_$(@F)
@@ -4824,8 +4960,8 @@ sb_cmpnew/gcl_collectfn.o: cmpnew/gcl_co
 	[ -d $(@D) ] || mkdir -p $(@D)
 	$(word 1,$|) -compile $< -o $@
 
-%.c: %.d | bin/dpp
-	bin/dpp $< $@
+%.c: %.d | bin/dpp$(EXEEXT)
+	$| $< $@
 
 gcl-tk/demos gcl-tk $(MY_DIRS): % :
 	[ -d $@ ] || mkdir -p $@
--- gcl27-2.7.1.orig/bin/gcl.in
+++ gcl27-2.7.1/bin/gcl.in
@@ -5,13 +5,19 @@ VERS=@VERSION@
 
 if [ -e /etc/default/gcl$EXT ] ; then
     . /etc/default/gcl$EXT ;
-    if ! set | grep -q -w GCL_ANSI ; then GCL_ANSI=$DEFAULT_GCL_ANSI ; fi
+    if ! set | grep -q -w GCL_ANSI ; then
+	if [ "$DEFAULT_GCL_ANSI" != "" ] ; then
+	    GCL_ANSI="t" ;
+	else
+	    GCL_ANSI="no" ;
+	fi
+    fi
     if ! set | grep -q -w GCL_PROF ; then GCL_PROF=$DEFAULT_GCL_PROF ; fi
 fi
 
 DIR=@prefix@/lib/gcl-$VERS;
 
-if [ "$GCL_ANSI" = "" ] ; then
+if [ "$GCL_ANSI" = "no" ] ; then
     if [ "$GCL_PROF" = "" ] ; then
 	EXE=saved_gcl;
     else
--- gcl27-2.7.1.orig/cmpnew/gcl_cmpcall.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmpcall.lsp
@@ -334,8 +334,10 @@
 	  ((append at '(*))))));let call_proc_new foil fast linking and catch errors
 
 (defun add-fast-link (fname la &optional apnarg
-			    &aux n
-			    (at (call-arg-types (mapcar (lambda (x) (link-rt x t)) (get-arg-types fname)) la apnarg))
+		      &aux n
+			(at (call-arg-types
+			     (adj-call-tps-max (mapcar (lambda (x) (link-rt x t)) (get-arg-types fname)))
+			     la apnarg))
 			    (rt (link-rt (get-return-type fname) t))
 			    (clp (cclosure-p fname))
 			    (tail (list rt at clp apnarg)))
--- gcl27-2.7.1.orig/cmpnew/gcl_cmpeval.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmpeval.lsp
@@ -2353,6 +2353,12 @@
    (otherwise                          (when (or always (ltvp val))
 					 `(vv ,val)))))
 
+(defun encap-src-val (val)
+  (typecase val
+    (function  (afe (cons 'df nil) (mf (fle val))))
+    (cons (cons (encap-src-val (car val)) (encap-src-val (cdr val))))
+    (t val)))
+
 (defun c1constant-value (val always &aux (val (if (exit-to-fmla-p) (not (not val)) val)))
   (case 
    val
@@ -2363,11 +2369,7 @@
       (when l 
 	`(location 
 	  ,(make-info :type (or (ltvp val)
-				(object-type
-				 (typecase val
-				   (function  (afe (cons 'df nil) (mf (fle val))))
-				   (list (copy-tree val))
-				   (t val)))))
+				(object-type (encap-src-val val))))
 	  ,l))))))
 
 (defvar *compiler-temps*
--- gcl27-2.7.1.orig/cmpnew/gcl_cmpflet.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmpflet.lsp
@@ -495,7 +495,7 @@
 	 (clp (when clp (ccb-vs-str (fun-ref-ccb fun))))
 	 (nm (if clp (ms clp "->fun.fun_self") nm))
 	 (inl (g1 clp nm sig ap clp (if clp -1 (fun-level fun)))))
-    `(,(car sig) ,(cadr sig) 
+    `(,(adj-call-tps-max (car sig)) ,(cadr sig)
       ,(if mv (flags rfa svt) (flags rfa))
       ,inl)))
 
--- gcl27-2.7.1.orig/cmpnew/gcl_cmptop.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmptop.lsp
@@ -823,7 +823,7 @@
     ((cons (eql vv) t) (fm-to-string (cadr form)))
     ((cons (member char-value fixnum-value character-value) t) (fm-to-string (caddr form)))
     ((eql most-negative-fixnum)  #.(string-concatenate "(" (write-to-string (1+ most-negative-fixnum)) "- 1)"))
-    (integer (format nil "~a" form)); string character
+    (fixnum (format nil "~a" form)); string character
     (float (format nil "~10,,,,,,'eG" form))
     ((complex float)
      (string-concatenate "(" (fm-to-string (realpart form)) " + I * " (fm-to-string (imagpart form)) ")"))))
@@ -832,7 +832,7 @@
   (string-concatenate
    (cond ((member key '(:cnum :creal)) "")
 	 ((eq ft tt) "")
-	  ((equal ft t)
+	 ((equal ft t)
 	   (if *compiler-new-safety*
 	       (let ((v (member key '(:char :int :fixnum))))
 		 (if v (si::string-concatenate (setq p "object_to_") (strcat key))
@@ -1127,11 +1127,19 @@
     (let ((x (position x +c-global-arg-types+ :test 'type<=)))
       (if x (1+ x) 0))))
 
+(defconstant +max-typed-args+
+  (let ((x (cdr (tp-bnds (cadr (si::sig 'c-function-argd))))))
+    (if (typep x 'fixnum) (1- (truncate (integer-length x) 2)) 0)))
+
+(defun adj-call-tps-max (tps &aux (i -1))
+  (mapcar (lambda (x) (type-or1 (>= (incf i) +max-typed-args+) x)) tps))
+
 (defun new-proclaimed-argd (args return)
   (do* ((type (f-type return) (f-type (pop args)))
 	(i 0 (+ 2 i))
 	(ans type (logior ans (ash type i))))
-       ((or (>= i 32) (null args)) (the (unsigned-byte 32) ans))))
+       ((or (>= i #.(ash +max-typed-args+ 1)) (null args))
+	(the (unsigned-byte #.(1+ (ash +max-typed-args+ 1))) ans))))
 
 (defun type-f (x)
   (declare (fixnum x))
@@ -1300,14 +1308,16 @@
 (defun t3defun-local-entry (fname cfun lambda-expr sp inline-info
 				  &aux specials *reg-clv* (requireds (caaddr lambda-expr)) nargs)
   (do ((vl requireds (cdr vl))
-       (types (cadr inline-info) (cdr types)))
+       (types (cadr inline-info) (cdr types))
+       (i 0 (1+ i)))
       ((endp vl))
       (cond ((eq (var-kind (car vl)) 'special)
 	     (push (cons (car vl) (var-loc (car vl))) specials))
 	    ((var-cb (car vl)) (push (list (eq 'clb (var-loc (car vl))) (car vl)) *reg-clv*))
-;	    ((var-cb (car vl)) (push (car vl) *reg-clv*))
 	    ((setf (var-kind (car vl))
-		   (or (car (member (promoted-c-type (var-type (car vl))) +c-local-arg-types+)) 'object))))
+		   (or (when (< i +max-typed-args+)
+			 (car (member (promoted-c-type (var-type (car vl))) +c-local-arg-types+)))
+		       'object))))
       (setf (var-loc (car vl)) (cs-push (var-type (car vl)) t)))
   (when (is-narg-le lambda-expr)
     (setq nargs (car (last requireds)))
@@ -1382,13 +1392,12 @@
     (wt-h "#define VMRV" cm "(a_,b_)" vstu bdsu frsu " return((" (declaration-type (rep-type return-type)) ")a_);")
     (wt-h "#define VMR" cm "(a_) VMRV" cm "(a_,0);")))
 
-
-(defun wt-requireds (requireds arg-types &optional first narg)
+(defun wt-requireds (requireds arg-types &optional first narg &aux (i -1))
   (declare (ignore arg-types))
   (flet ((wt (x) (wt x) (let ((*compiler-output1* *compiler-output2*)) (wt x))))
 	(dolist (v requireds (wt (if narg ",...)" ")")))
 	  (setq narg (or narg (is-narg-var v)))
-	  (let* ((gt (global-type-bump (var-type v)))
+	  (let* ((gt (global-type-bump (if (< (incf i) +max-typed-args+) (var-type v) t)))
 		 (cvar (cs-push gt t)))
 	    (when first (wt ","))
 	    (setq first t)
@@ -1811,6 +1820,12 @@
 ;; 			  ,@(mapcar (lambda (x y) 
 ;; 				      `(unbox ,(intern (symbol-name x) 'keyword) ,y)) args syms)))))))
 
+(defun c-key-rep (key)
+  (ecase key
+    ((:object :char :int :long :float :double :fixnum :void) (string-downcase key))
+    (:string "char *")
+    (:ustring "unsigned char *")))
+
 (defmacro defentry (n args c &optional (lt t)
 		      &aux (tsyms (load-time-value
 				   (mapl (lambda (x) (setf (car x) (gensym "DEFENTRY")))
@@ -1824,9 +1839,9 @@
 	 (tps (mapcar (lambda (x) (intern (string (if (consp x) (car x) x)) 'keyword)) args))
 	 (decl (reduce (lambda (y x)
 			 (strcat y (if (> (length y) 0) "," "")
-				 (cdr (assoc (get x 'cmp-lisp-type) +defentry-c-rep-alist+))))
+				 (c-key-rep x)))
 		       tps :initial-value ""))
-	 (decl (concatenate 'string (string-downcase rt) " " m "(" decl ");"))
+	 (decl (concatenate 'string (c-key-rep rt) " " m "(" decl ");"))
 	 (decl (if st "" decl))
 	 (syms (mapcar (lambda (x) (declare (ignore x)) (pop tsyms)) args)))
   `(defun ,n ,syms 
@@ -1881,14 +1896,16 @@
 
   (setq h (fun-call fun) at (caar h) rt (cadar h)
 	at (mapcar 'global-type-bump at) rt (global-type-bump rt));FIXME
-  (dolist (vl requireds)
-    (cond ((eq (var-kind vl) 'special)
-	   (push (cons vl (var-loc vl)) specials))
-	  ((var-cb vl) (push (list (eq 'clb (var-loc vl)) vl) *reg-clv*))
-;	  ((var-cb vl) (push vl *reg-clv*))
-	  ((setf (var-kind vl)
-		 (or (car (member (promoted-c-type (var-type vl)) +c-global-arg-types+)) 'object))))
-    (setf (var-loc vl) (cs-push (var-type vl) t)))
+  (do ((vlp requireds (cdr vlp))(i 0 (1+ i)))((endp vlp))
+    (let ((vl (car vlp)))
+      (cond ((eq (var-kind vl) 'special)
+	     (push (cons vl (var-loc vl)) specials))
+	    ((var-cb vl) (push (list (eq 'clb (var-loc vl)) vl) *reg-clv*))
+	    ((setf (var-kind vl)
+		   (or (when (< i +max-typed-args+)
+			 (car (member (promoted-c-type (var-type vl)) +c-global-arg-types+)))
+		       'object))))
+      (setf (var-loc vl) (cs-push (var-type vl) t))))
 
   (wt-comment "local function " (if (fun-name fun) (fun-name fun) nil))
   (wt-h   "static " (declaration-type (rep-type rt))
--- gcl27-2.7.1.orig/cmpnew/gcl_cmptype.lsp
+++ gcl27-2.7.1/cmpnew/gcl_cmptype.lsp
@@ -220,11 +220,6 @@
 	   (list* nil +c-local-var-types-syms+))
    `((object . "object "))))
 
-(defconstant +defentry-c-rep-alist+
-  (mapcar (lambda (x &aux (z (assoc x *c-types*)))
-	    (cons (cadr z) (eighth z)))
-	  '(char #+64bit signed-int fixnum short-float long-float string t)))
-
 (defconstant +cmp-type-alist+
   (mapcar (lambda (x) (cons (cmp-norm-tp (car x)) (cdr x))) +type-alist+))
 
--- gcl27-2.7.1.orig/configure
+++ gcl27-2.7.1/configure
@@ -719,6 +719,10 @@ LDFLAGS
 CFLAGS
 CC
 PRELINK_CHECK
+AMM_LIBBOOT_FALSE
+AMM_LIBBOOT_TRUE
+LF
+FF
 host_os
 host_vendor
 host_cpu
@@ -807,6 +811,7 @@ ac_user_opts='
 enable_option_checking
 enable_silent_rules
 with_lispdir
+enable_libboot
 enable_machine
 enable_widecons
 enable_safecdr
@@ -1478,6 +1483,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-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
@@ -4149,6 +4155,38 @@ case $canonical in
     i?86-pc-solaris*) use=solaris-i386;;
 esac
 
+# Check whether --enable-libboot was given.
+if test ${enable_libboot+y}
+then :
+  enableval=$enable_libboot; libboot=$enableval
+else case e in #(
+  e) libboot="yes" ;;
+esac
+fi
+
+
+if test "$use" = "gnuwin95" ; then
+   FF=o/firstfile.o
+
+   LF=o/lastfile.o
+
+   libboot="no"
+fi
+
+ if test "$libboot" = "yes"; then
+  AMM_LIBBOOT_TRUE=
+  AMM_LIBBOOT_FALSE='#'
+else
+  AMM_LIBBOOT_TRUE='#'
+  AMM_LIBBOOT_FALSE=
+fi
+
+if test "$libboot" = "yes" ; then
+
+printf "%s\n" "#define USE_LIBBOOT 1" >>confdefs.h
+
+fi
+
 # Check whether --enable-machine was given.
 if test ${enable_machine+y}
 then :
@@ -7155,19 +7193,11 @@ case $use in
 	assert_arg_to_cflags -mms-bitfields
 	for i in makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp h/gclincl.h;  do
 	    cat $i.in | sed 's,^\r\n$,\r\n,g' >tmp && mv tmp $i.in;
-	done
-	OLD_LDFLAGS=$LDFLAGS
-	assert_arg_to_ldflags -pg
-	GPL_FLAG="-pg"
-	LDFLAGS=$OLD_LDFLAGS;;
+	done;;
     *gnuwin*)
 	assert_arg_to_cflags -fno-zero-initialized-in-bss
 	assert_arg_to_cflags -mms-bitfields
-        assert_arg_to_ldflags -Wl,--stack,8000000
-	OLD_LDFLAGS=$LDFLAGS
-	assert_arg_to_ldflags -pg
-	GPL_FLAG="-pg"
-	LDFLAGS=$OLD_LDFLAGS;;
+        assert_arg_to_ldflags -Wl,--stack,8000000;;
     386-linux)
 	if ! add_arg_to_cflags -msse2 || ! add_arg_to_cflags -mfpmath=sse ; then
 	   add_arg_to_cflags -ffloat-store;
@@ -8742,6 +8772,41 @@ esac
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
+printf %s "checking size of size_t... " >&6; }
+if test ${ac_cv_sizeof_size_t+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"
+then :
+
+else case e in #(
+  e) if test "$ac_cv_type_size_t" = yes; then
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (size_t)
+See 'config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_size_t=0
+   fi ;;
+esac
+fi
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
+printf "%s\n" "$ac_cv_sizeof_size_t" >&6; }
+
+
+
+printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
 printf %s "checking size of long... " >&6; }
 if test ${ac_cv_sizeof_long+y}
@@ -9029,7 +9094,8 @@ esac
 printf %s "checking for hugepagewidth... " >&6; }
 j=""
 if test -e /proc/meminfo ; then
-   j=`awk '/^Hugepagesize:/ {if ($3!="kB") next;j=1;for (i=0;i<20 && j!=$2;i++) j=j*2;if (j==$2) printf("%d\n",i+10)}'  /proc/meminfo`
+   j=`awk '/^Hugepagesize:/ {if ($3!="kB") next;j=1;for (i=0;i<20 && j!=$2;i++) j=j*2;
+   if (j==$2) {if (i>11) i=11;printf("%d\n",i+10)}}'  /proc/meminfo`
 fi
 if test "$j" != "" ; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $j" >&5
@@ -11661,9 +11727,6 @@ then :
 fi
 
 
-#LDFLAGS="`echo $GPL_FLAG $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'`"
-LDFLAGS="`echo $GPL_FLAG $LDFLAGS`"
-#AM_LDFLAGS = $LDFLAGS
 BASE_LDFLAGS="$LDFLAGS"
 LDFLAGS=""
 
@@ -11859,6 +11922,10 @@ else
   am__EXEEXT_FALSE=
 fi
 
+if test -z "${AMM_LIBBOOT_TRUE}" && test -z "${AMM_LIBBOOT_FALSE}"; then
+  as_fn_error $? "conditional \"AMM_LIBBOOT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
   as_fn_error $? "conditional \"AMDEP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
--- gcl27-2.7.1.orig/configure.ac
+++ gcl27-2.7.1/configure.ac
@@ -71,6 +71,22 @@ case $canonical in
     i?86-pc-solaris*) use=solaris-i386;;
 esac
 
+AC_ARG_ENABLE([libboot],[put bootstrap code in shared library to be discarded],
+	      [libboot=$enableval],[libboot="yes"])
+
+if test "$use" = "gnuwin95" ; then
+   FF=o/firstfile.o
+   AC_SUBST(FF)
+   LF=o/lastfile.o
+   AC_SUBST(LF)
+   libboot="no"
+fi
+
+AM_CONDITIONAL([AMM_LIBBOOT],[test "$libboot" = "yes"])
+if test "$libboot" = "yes" ; then
+   AC_DEFINE([USE_LIBBOOT],[1],[boot code in shared library])
+fi
+
 AC_ARG_ENABLE([machine],[  --enable-machine=XXXX will force the use of one of the definitions in h/XXXX.defs],
 	      [echo enable_machine=$enableval ; use=$enableval])
 
@@ -271,19 +287,11 @@ case $use in
 	assert_arg_to_cflags -mms-bitfields
 	for i in makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp h/gclincl.h;  do
 	    cat $i.in | sed 's,[^\r]\n$,\r\n,g' >tmp && mv tmp $i.in;
-	done
-	OLD_LDFLAGS=$LDFLAGS
-	assert_arg_to_ldflags -pg
-	GPL_FLAG="-pg"
-	LDFLAGS=$OLD_LDFLAGS;;
+	done;;
     *gnuwin*)
 	assert_arg_to_cflags -fno-zero-initialized-in-bss
 	assert_arg_to_cflags -mms-bitfields
-        assert_arg_to_ldflags -Wl,--stack,8000000
-	OLD_LDFLAGS=$LDFLAGS
-	assert_arg_to_ldflags -pg
-	GPL_FLAG="-pg"
-	LDFLAGS=$OLD_LDFLAGS;;
+        assert_arg_to_ldflags -Wl,--stack,8000000;;
     386-linux)
 	if ! add_arg_to_cflags -msse2 || ! add_arg_to_cflags -mfpmath=sse ; then
 	   add_arg_to_cflags -ffloat-store;
@@ -793,6 +801,7 @@ esac
 # mechanism, in the PAGE macro.  This offset is subtracted from
 # addresses, in calculating a page for an address in the heap.
 
+AC_CHECK_SIZEOF(size_t,0)
 AC_CHECK_SIZEOF(long,0)
 AC_CHECK_SIZEOF(short,0)
 AC_CHECK_SIZEOF(int,0)
@@ -853,7 +862,8 @@ esac
 AC_MSG_CHECKING([for hugepagewidth])
 j=""
 if test -e /proc/meminfo ; then
-   j=`awk '/^Hugepagesize:/ {if ($3!="kB") next;j=1;for (i=0;i<20 && j!=$2;i++) j=j*2;if (j==$2) printf("%d\n",i+10)}'  /proc/meminfo`
+   j=`awk '/^Hugepagesize:/ {if ($3!="kB") next;j=1;for (i=0;i<20 && j!=$2;i++) j=j*2;
+   if (j==$2) {if (i>11) i=11;printf("%d\n",i+10)}}'  /proc/meminfo`
 fi
 if test "$j" != "" ; then
    AC_MSG_RESULT([$j])
@@ -1849,9 +1859,6 @@ AC_CONFIG_FILES([bin/gcl])
 AC_CHECK_HEADERS(sys/mman.h,AC_CHECK_FUNCS(mprotect))
 AC_CHECK_HEADERS(alloca.h)
 
-#LDFLAGS="`echo $GPL_FLAG $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'`"
-LDFLAGS="`echo $GPL_FLAG $LDFLAGS`"
-#AM_LDFLAGS = $LDFLAGS
 BASE_LDFLAGS="$LDFLAGS"
 LDFLAGS=""
 AC_SUBST(BASE_LDFLAGS)
--- gcl27-2.7.1.orig/git.tag
+++ gcl27-2.7.1/git.tag
@@ -1,2 +1,2 @@
-"Version_2_7_2ore2"
+"Version_2_7_2ore3"
 
--- gcl27-2.7.1.orig/h/386-macosx.h
+++ gcl27-2.7.1/h/386-macosx.h
@@ -132,7 +132,7 @@ if (realpath (buf, fub) == 0) {
 #define UC(a_) ((ucontext_t *)a_)
 #define SF(a_) ((siginfo_t *)a_)
 
-#define FPE_CODE(i_,v_) make_fixnum(FFN(fSfpe_code)(*(fixnum *)&UC(v_)->uc_mcontext->__fs.__fpu_fsw,UC(v_)->uc_mcontext->__fs.__fpu_mxcsr))
+#define FPE_CODE(i_,v_) make_fixnum((fixnum)FFN(fSfpe_code)(*(fixnum *)&UC(v_)->uc_mcontext->__fs.__fpu_fsw,UC(v_)->uc_mcontext->__fs.__fpu_mxcsr))
 #define FPE_ADDR(i_,v_) make_fixnum(UC(v_)->uc_mcontext->__fs.__fpu_fop ? UC(v_)->uc_mcontext->__fs.__fpu_ip : (fixnum)SF(i_)->si_addr)
 #define FPE_CTXT(v_) list(3,make_fixnum((fixnum)&UC(v_)->uc_mcontext->__ss), \
 			  make_fixnum((fixnum)&UC(v_)->uc_mcontext->__fs.__fpu_stmm0), \
--- gcl27-2.7.1.orig/h/compprotos.h
+++ gcl27-2.7.1/h/compprotos.h
@@ -85,7 +85,11 @@ char object_to_char(object);
 void not_a_symbol(object);
 object number_expt(object,object);
 object fLrow_major_aref(object,fixnum);
+#if SIZEOF_SIZE_T == SIZEOF_INT
+void *alloca(unsigned);
+#else
 void *alloca(unsigned long);
+#endif
 object cmod(object);
 object ctimes(object,object);
 object cdifference(object,object);
--- gcl27-2.7.1.orig/h/gclincl.h.in
+++ gcl27-2.7.1/h/gclincl.h.in
@@ -315,6 +315,9 @@
 /* The size of 'short', as computed by sizeof. */
 #undef SIZEOF_SHORT
 
+/* The size of 'size_t', as computed by sizeof. */
+#undef SIZEOF_SIZE_T
+
 /* staticly linked images */
 #undef STATIC_LINKING
 
@@ -332,6 +335,9 @@
 /* use gprof */
 #undef USE_GPROF
 
+/* boot code in shared library */
+#undef USE_LIBBOOT
+
 /* use readline library */
 #undef USE_READLINE
 
--- gcl27-2.7.1.orig/h/protoize.h
+++ gcl27-2.7.1/h/protoize.h
@@ -1450,8 +1450,6 @@ void init_shared_memory(void);
 
 void * object_to_pointer(object);
 
-void * alloca(unsigned long);
-
 object make_dcomplex(dcomplex);
 
 object find_init_string(const char *);
--- gcl27-2.7.1.orig/info/internal.texi
+++ gcl27-2.7.1/info/internal.texi
@@ -218,7 +218,7 @@ GCL specific: The compiler defines a Lis
 calling sequence to the C language function specified by C-FUNCTION.  The
 interpreter ignores this form.  The ARG-TYPES specifies the C types of the
 arguments which C-FUNCTION requires.  The list of allowed types is (object
-char int float double string).  Code will be produced to coerce from a lisp
+char int long float double string).  Code will be produced to coerce from a lisp
 object to the appropriate type before passing the argument to the C-FUNCTION.
 The c-function should be of the form (c-result-type c-fname) where
 c-result-type is a member of (void object char int float double string).
--- gcl27-2.7.1.orig/lsp/gcl_info.lsp
+++ gcl27-2.7.1/lsp/gcl_info.lsp
@@ -96,18 +96,12 @@
 
 (defun get-index-node ()
  (or (third *current-info-data*) 
-     (let* (
-	    s
-	    (node-string (car (nth 1 *current-info-data*)))
-	    (node
-	     (and node-string (car (get-nodes "Index" node-string)))))
-       (when node
-	   (setq s (show-info
-		    node
-		    nil
-		    nil
-		    ))
-	(setf (third *current-info-data*) s)))))
+     (let* ((node-string (car (nth 1 *current-info-data*)))
+	    (nodes (when node-string (get-nodes "Index" node-string))))
+       (when nodes
+	 (setf (third *current-info-data*)
+	       (reduce 'string-concatenate
+		       (mapcar (lambda (x) (show-info x nil nil)) nodes)))))))
 
 (defun nodes-from-index (pat  &aux (i 0) ans
 			      (*case-fold-search* t) *match-data*)
--- gcl27-2.7.1.orig/o/format.c
+++ gcl27-2.7.1/o/format.c
@@ -160,11 +160,11 @@ object sSAindent_formatted_outputA;
 			VOL int old_fmt_index; \
 			VOL int old_fmt_end; \
 			VOL object old_fmt_iteration_list; \
-			jmp_bufp   VOL old_fmt_jmp_bufp; \
+			jmp_bufp VOL old_fmt_jmp_bufp; \
 			VOL int old_fmt_indents; \
 			VOL object old_fmt_string ; \
-			VOL object(*old_fmt_advance)(void) ;	\
-			VOL void (*old_fmt_lt)(volatile bool,bool) ;	\
+			object(*VOL old_fmt_advance)(void) ;	\
+			void (*VOL old_fmt_lt)(volatile bool,bool) ;	\
                         VOL format_parameter *old_fmt_paramp
 #define	fmt_save	old_fmt_stream = fmt_stream; \
 			old_ctl_origin = ctl_origin; \
--- gcl27-2.7.1.orig/o/main.c
+++ gcl27-2.7.1/o/main.c
@@ -582,7 +582,7 @@ void
 init_boot(void) {
 
   char *sysd=getenv("GCL_SYSDIR"),*d=sysd ? sysd : kcl_self;
-#ifndef __CYGWIN__
+#ifdef USE_LIBBOOT
   void *v,*q;
 #endif
   char *z,*s="libboot.so";
@@ -592,14 +592,14 @@ init_boot(void) {
   sSAoptimize_maximum_pagesA->s.s_dbind=Cnil;
   z=alloca(n);
   snprintf(z,n,"%-*.*s%s",(int)m,(int)m,d,s);
-#ifndef __CYGWIN__
+#ifdef USE_LIBBOOT
   if (!(v=dlopen(z,RTLD_LAZY|RTLD_GLOBAL)))
     printf("%s\n",dlerror());
   if (!(q=dlsym(v,"gcl_init_boot")))
     printf("%s\n",dlerror());
 #endif
   initializing_boot=1;
-#ifdef __CYGWIN__
+#ifndef USE_LIBBOOT
   {
     extern void gcl_init_boot(void);
     gcl_init_boot();
--- gcl27-2.7.1.orig/unixport/init_raw.lsp.in
+++ gcl27-2.7.1/unixport/init_raw.lsp.in
@@ -90,13 +90,13 @@
 
 (in-package :compiler)
 (setq *cc* @LI_CC@
-      *default-prof-p* (> (length @LI_DFP@) 0)
       *ld* @LI_LD@
       *ld-libs* @LI_LD_LIBS@
       *ld-libs* (concatenate 'string "-l" #+ansi-cl "ansi_" "gcl" #+gprof "_gprof" " " *ld-libs*)
       *opt-three* @LI_OPT_THREE@
       *opt-two* @LI_OPT_TWO@
-      *init-lsp* @LI_INIT_LSP@)
+      *init-lsp* @LI_INIT_LSP@
+      si::*info-paths* (cons "@prefix@/share/info/" si::*info-paths*))
 
 (import 'si::(clines defentry defcfun object void int double quit bye gbc system
 		     commonp *break-on-warnings* make-char char-bits char-font
