gcl (2.6.12-91) unstable; urgency=medium
authorCamm Maguire <camm@debian.org>
Wed, 18 Dec 2019 20:14:09 +0000 (20:14 +0000)
committerCamm Maguire <camm@debian.org>
Wed, 18 Dec 2019 20:14:09 +0000 (20:14 +0000)
  * Version_2_6_13pre88

[dgit import unpatched gcl 2.6.12-91]

123 files changed:
1  2 
debian/changelog
debian/compat
debian/control
debian/control.
debian/control.cvs
debian/gcl.lintian-overrides
debian/in.gcl.postrm
debian/patches/Version_2_6_13pre1
debian/patches/Version_2_6_13pre12
debian/patches/Version_2_6_13pre13
debian/patches/Version_2_6_13pre16
debian/patches/Version_2_6_13pre17
debian/patches/Version_2_6_13pre18
debian/patches/Version_2_6_13pre19
debian/patches/Version_2_6_13pre1a
debian/patches/Version_2_6_13pre1b
debian/patches/Version_2_6_13pre2
debian/patches/Version_2_6_13pre20
debian/patches/Version_2_6_13pre22
debian/patches/Version_2_6_13pre25
debian/patches/Version_2_6_13pre26
debian/patches/Version_2_6_13pre27
debian/patches/Version_2_6_13pre28
debian/patches/Version_2_6_13pre29
debian/patches/Version_2_6_13pre3
debian/patches/Version_2_6_13pre30
debian/patches/Version_2_6_13pre31
debian/patches/Version_2_6_13pre32
debian/patches/Version_2_6_13pre33
debian/patches/Version_2_6_13pre34
debian/patches/Version_2_6_13pre35
debian/patches/Version_2_6_13pre36
debian/patches/Version_2_6_13pre38
debian/patches/Version_2_6_13pre39
debian/patches/Version_2_6_13pre3a
debian/patches/Version_2_6_13pre4
debian/patches/Version_2_6_13pre41
debian/patches/Version_2_6_13pre45
debian/patches/Version_2_6_13pre46
debian/patches/Version_2_6_13pre47
debian/patches/Version_2_6_13pre48
debian/patches/Version_2_6_13pre49
debian/patches/Version_2_6_13pre5
debian/patches/Version_2_6_13pre50
debian/patches/Version_2_6_13pre52
debian/patches/Version_2_6_13pre54
debian/patches/Version_2_6_13pre55
debian/patches/Version_2_6_13pre56
debian/patches/Version_2_6_13pre57
debian/patches/Version_2_6_13pre58
debian/patches/Version_2_6_13pre59
debian/patches/Version_2_6_13pre6
debian/patches/Version_2_6_13pre60
debian/patches/Version_2_6_13pre61
debian/patches/Version_2_6_13pre62
debian/patches/Version_2_6_13pre63
debian/patches/Version_2_6_13pre64
debian/patches/Version_2_6_13pre65
debian/patches/Version_2_6_13pre66
debian/patches/Version_2_6_13pre67
debian/patches/Version_2_6_13pre68
debian/patches/Version_2_6_13pre69
debian/patches/Version_2_6_13pre7
debian/patches/Version_2_6_13pre70
debian/patches/Version_2_6_13pre71
debian/patches/Version_2_6_13pre72
debian/patches/Version_2_6_13pre73
debian/patches/Version_2_6_13pre74
debian/patches/Version_2_6_13pre76
debian/patches/Version_2_6_13pre77
debian/patches/Version_2_6_13pre78
debian/patches/Version_2_6_13pre79
debian/patches/Version_2_6_13pre80
debian/patches/Version_2_6_13pre81
debian/patches/Version_2_6_13pre82
debian/patches/Version_2_6_13pre83
debian/patches/Version_2_6_13pre84
debian/patches/Version_2_6_13pre85
debian/patches/Version_2_6_13pre86
debian/patches/Version_2_6_13pre87
debian/patches/Version_2_6_13pre88
debian/patches/Version_2_6_13pre8a
debian/patches/Version_2_6_13pre8b
debian/patches/ansi-test-clean-target
debian/patches/data_bss_offset-in-unexec-sparc64-fix
debian/patches/defined_real_maxpage
debian/patches/disable_gprof_aarch64
debian/patches/list_order.1
debian/patches/list_order.11
debian/patches/list_order.12
debian/patches/list_order.13
debian/patches/list_order.16
debian/patches/list_order.17
debian/patches/list_order.18
debian/patches/list_order.19
debian/patches/list_order.20
debian/patches/list_order.21
debian/patches/list_order.22
debian/patches/list_order.23
debian/patches/list_order.24
debian/patches/list_order.25
debian/patches/list_order.4
debian/patches/list_order.5
debian/patches/list_order.6
debian/patches/list_order.7
debian/patches/list_order.8
debian/patches/list_order.9
debian/patches/pathnames1.1
debian/patches/pathnames1.11
debian/patches/pathnames1.12
debian/patches/pathnames1.13
debian/patches/pathnames1.2
debian/patches/pathnames1.3
debian/patches/pathnames1.4
debian/patches/pathnames1.5
debian/patches/pathnames1.6
debian/patches/pathnames1.7
debian/patches/pathnames1.9
debian/patches/real_list_order.12
debian/patches/series
debian/po/pt_BR.po
debian/rules
debian/source/include-binaries

index 9561eb95071a5323a97cacf319942fc5b85702e6,0000000000000000000000000000000000000000..03be7cae5ea9f0c16cd460095c292f3f21be0f60
mode 100644,000000..100644
--- /dev/null
@@@ -1,3231 -1,0 +1,3984 @@@
++gcl (2.6.12-91) unstable; urgency=medium
++
++  * Version_2_6_13pre88
++
++ -- Camm Maguire <camm@debian.org>  Wed, 18 Dec 2019 20:14:09 +0000
++
++gcl (2.6.12-90) unstable; urgency=medium
++
++  * Version_2_6_13pre87
++  * latest standards
++
++ -- Camm Maguire <camm@debian.org>  Sun, 08 Dec 2019 19:27:24 +0000
++
++gcl (2.6.12-89) unstable; urgency=medium
++
++  * Bug fix: "gcl - FTBFS on ppc64el - invalid relocation type 31", thanks
++    to thierry.fauck@fr.ibm.com</a>; (Closes: #942312).
++  * Bug fix: "FTBFS on ppc64el", thanks to Ivo De Decker (Closes:
++    #944651).
++
++ -- Camm Maguire <camm@debian.org>  Sat, 07 Dec 2019 23:27:53 +0000
++
++gcl (2.6.12-88) unstable; urgency=medium
++
++  * Source only upload
++
++ -- Camm Maguire <camm@debian.org>  Fri, 11 Oct 2019 19:18:44 +0000
++
++gcl (2.6.12-87) unstable; urgency=medium
++
++  * Version_2_6_13pre84
++
++ -- Camm Maguire <camm@debian.org>  Sat, 06 Apr 2019 13:03:21 +0000
++
++gcl (2.6.12-86) unstable; urgency=medium
++
++  * Version_2_6_13pre83
++
++ -- Camm Maguire <camm@debian.org>  Tue, 02 Apr 2019 19:57:15 +0000
++
++gcl (2.6.12-85) unstable; urgency=medium
++
++  * Version_2_6_13pre82
++
++ -- Camm Maguire <camm@debian.org>  Thu, 28 Mar 2019 18:48:55 +0000
++
++gcl (2.6.12-84) unstable; urgency=medium
++
++  * Version_2_6_13pre80
++
++ -- Camm Maguire <camm@debian.org>  Thu, 21 Mar 2019 18:59:40 +0000
++
++gcl (2.6.12-83) unstable; urgency=high
++
++  * Version_2_6_13pre79
++  * Fix acl2 arm builds (Closes: #919477).
++
++ -- Camm Maguire <camm@debian.org>  Tue, 05 Feb 2019 21:54:42 +0000
++
++gcl (2.6.12-82) unstable; urgency=high
++
++  * Version_2_6_13pre74
++
++ -- Camm Maguire <camm@debian.org>  Sat, 02 Feb 2019 17:40:20 +0000
++
++gcl (2.6.12-81) unstable; urgency=high
++
++  * Version_2_6_13pre72
++  * Fix to ppc64el for acl2 FTBFS bug
++
++ -- Camm Maguire <camm@debian.org>  Mon, 21 Jan 2019 16:40:36 +0000
++
++gcl (2.6.12-80) unstable; urgency=medium
++
++  * Version_2_6_13pre71
++  * Bug fix: "FTBFS on hppa - segmentation fault assembling gbc.s", thanks
++    to John David Anglin (Closes: #912071).
++
++ -- Camm Maguire <camm@debian.org>  Tue, 30 Oct 2018 17:20:43 +0000
++
++gcl (2.6.12-79) unstable; urgency=medium
++
++  * Version_2_6_13pre70
++
++ -- Camm Maguire <camm@debian.org>  Mon, 29 Oct 2018 16:52:17 +0000
++
++gcl (2.6.12-78) unstable; urgency=medium
++
++  * rebuild against latest compilers and tools
++  * Version_2_6_13pre69
++
++ -- Camm Maguire <camm@debian.org>  Thu, 11 Oct 2018 16:40:48 +0000
++
++gcl (2.6.12-77) unstable; urgency=medium
++
++  * Version_2_6_13pre68
++  * Bug fix: "GCL fails to load .o files it generates", thanks to Gong-Yi
++    Liao (Closes: #902475).  Add support for R_X86_64_PLT32 relocs.
++
++ -- Camm Maguire <camm@debian.org>  Tue, 24 Jul 2018 20:06:45 +0000
++
++gcl (2.6.12-76) unstable; urgency=medium
++
++  * Version_2_6_13pre67
++
++ -- Camm Maguire <camm@debian.org>  Fri, 23 Mar 2018 19:25:22 +0000
++
++gcl (2.6.12-75) unstable; urgency=medium
++
++  * Version_2_6_13pre65
++
++ -- Camm Maguire <camm@debian.org>  Wed, 21 Mar 2018 20:28:08 +0000
++
++gcl (2.6.12-74) unstable; urgency=medium
++
++  * Version_2_6_13pre63
++
++ -- Camm Maguire <camm@debian.org>  Sat, 17 Mar 2018 11:56:05 +0000
++
++gcl (2.6.12-73) unstable; urgency=medium
++
++  * Version_2_6_13pre62
++
++ -- Camm Maguire <camm@debian.org>  Wed, 14 Mar 2018 15:38:43 +0000
++
++gcl (2.6.12-72) unstable; urgency=medium
++
++  * Version_2_6_13pre61
++
++ -- Camm Maguire <camm@debian.org>  Tue, 13 Mar 2018 15:32:44 +0000
++
++gcl (2.6.12-71) unstable; urgency=medium
++
++  * Version_2_6_13pre60
++
++ -- Camm Maguire <camm@debian.org>  Mon, 12 Mar 2018 19:44:47 +0000
++
++gcl (2.6.12-70) unstable; urgency=medium
++
++  * Version_2_6_13pre59
++
++ -- Camm Maguire <camm@debian.org>  Mon, 12 Mar 2018 16:19:00 +0000
++
++gcl (2.6.12-69) unstable; urgency=medium
++
++  * Version_2_6_13pre58
++
++ -- Camm Maguire <camm@debian.org>  Fri, 09 Mar 2018 17:10:51 +0000
++
++gcl (2.6.12-68) unstable; urgency=medium
++
++  * Version_2_6_13pre57
++
++ -- Camm Maguire <camm@debian.org>  Sun, 04 Mar 2018 13:21:00 +0000
++
++gcl (2.6.12-67) unstable; urgency=medium
++
++  * Version_2_6_13pre55
++
++ -- Camm Maguire <camm@debian.org>  Sat, 03 Mar 2018 14:27:51 +0000
++
++gcl (2.6.12-66) unstable; urgency=medium
++
++  * Version_2_6_13pre54
++
++ -- Camm Maguire <camm@debian.org>  Fri, 02 Mar 2018 21:19:03 +0000
++
++gcl (2.6.12-65) unstable; urgency=medium
++
++  * Version_2_6_13pre52
++  * Bug fix: "FTBFS on hurd-i386", thanks to svante.signell@gmail.com</a>;
++    (Closes: #802593).
++
++ -- Camm Maguire <camm@debian.org>  Fri, 23 Feb 2018 15:55:23 +0000
++
++gcl (2.6.12-64) unstable; urgency=medium
++
++  * list_order.24
++
++ -- Camm Maguire <camm@debian.org>  Sun, 04 Feb 2018 13:26:27 +0000
++
++gcl (2.6.12-63) unstable; urgency=medium
++
++  * list_order.23
++
++ -- Camm Maguire <camm@debian.org>  Thu, 01 Feb 2018 18:36:29 +0000
++
++gcl (2.6.12-62) unstable; urgency=medium
++
++  * list_order.22
++
++ -- Camm Maguire <camm@debian.org>  Thu, 01 Feb 2018 01:05:10 +0000
++
++gcl (2.6.12-61) unstable; urgency=medium
++
++  * list_order.21
++
++ -- Camm Maguire <camm@debian.org>  Tue, 30 Jan 2018 21:13:13 +0000
++
++gcl (2.6.12-60) unstable; urgency=medium
++
++  * list_order.19
++
++ -- Camm Maguire <camm@debian.org>  Tue, 23 Jan 2018 18:11:59 +0000
++
++gcl (2.6.12-59) unstable; urgency=medium
++
++  * list_order.16
++
++ -- Camm Maguire <camm@debian.org>  Fri, 12 Jan 2018 03:25:08 +0000
++
++gcl (2.6.12-58) unstable; urgency=medium
++
++  * list_order.14
++
++ -- Camm Maguire <camm@debian.org>  Mon, 18 Sep 2017 15:45:10 +0000
++
++gcl (2.6.12-57) unstable; urgency=medium
++
++  * list_order.13
++
++ -- Camm Maguire <camm@debian.org>  Fri, 25 Aug 2017 13:44:10 +0000
++
++gcl (2.6.12-56) unstable; urgency=medium
++
++  * list_order.12
++
++ -- Camm Maguire <camm@debian.org>  Thu, 24 Aug 2017 19:12:50 +0000
++
++gcl (2.6.12-55) unstable; urgency=medium
++
++  * disable gprof on aarch64
++  * Bug fix: "gcl FTBFS on arm64: Unrecoverable error: Segmentation
++    violation..", thanks to Adrian Bunk (Closes: #873052).
++
++ -- Camm Maguire <camm@debian.org>  Thu, 24 Aug 2017 16:37:07 +0000
++
++gcl (2.6.12-54) unstable; urgency=medium
++
++  * list_order.11
++
++ -- Camm Maguire <camm@debian.org>  Wed, 23 Aug 2017 22:19:14 +0000
++
++gcl (2.6.12-53) unstable; urgency=medium
++
++  * list_order.9
++
++ -- Camm Maguire <camm@debian.org>  Sun, 18 Jun 2017 18:32:30 +0000
++
++gcl (2.6.12-52) unstable; urgency=medium
++
++  * list_order.8
++
++ -- Camm Maguire <camm@debian.org>  Thu, 15 Jun 2017 18:04:41 +0000
++
++gcl (2.6.12-51) unstable; urgency=medium
++
++  * list_order.7
++
++ -- Camm Maguire <camm@debian.org>  Wed, 14 Jun 2017 18:30:46 +0000
++
++gcl (2.6.12-50) unstable; urgency=medium
++
++  * list_order.6
++
++ -- Camm Maguire <camm@debian.org>  Tue, 13 Jun 2017 22:38:52 +0000
++
++gcl (2.6.12-49) unstable; urgency=medium
++
++  * list_order.5
++
++ -- Camm Maguire <camm@debian.org>  Thu, 08 Jun 2017 17:21:01 +0000
++
++gcl (2.6.12-48) unstable; urgency=medium
++
++  * list_order.1
++
++ -- Camm Maguire <camm@debian.org>  Sun, 28 May 2017 01:42:29 +0000
++
++gcl (2.6.12-47) unstable; urgency=high
++
++  * pathnames1.13
++
++ -- Camm Maguire <camm@debian.org>  Tue, 22 Nov 2016 04:53:35 +0000
++
++gcl (2.6.12-46) unstable; urgency=high
++
++  * pathnames1.12
++  * Bug fix: "maintainer script(s) do not start on #!", thanks to
++    treinen@debian.org</a>; (Closes: #843303).
++
++ -- Camm Maguire <camm@debian.org>  Fri, 18 Nov 2016 18:27:53 +0000
++
++gcl (2.6.12-45) unstable; urgency=high
++
++  * pathnames1.11
++
++ -- Camm Maguire <camm@debian.org>  Mon, 31 Oct 2016 22:57:27 +0000
++
++gcl (2.6.12-44) unstable; urgency=high
++
++  * pathnames1.9
++
++ -- Camm Maguire <camm@debian.org>  Fri, 28 Oct 2016 17:04:38 +0000
++
++gcl (2.6.12-43) unstable; urgency=medium
++
++  * pathnames1.7
++
++ -- Camm Maguire <camm@debian.org>  Thu, 27 Oct 2016 03:46:32 +0000
++
++gcl (2.6.12-42) unstable; urgency=medium
++
++  * pathnames1.6
++  * Bug fix: "FTBFS with bindnow and PIE enabled", thanks to Balint Reczey
++    (Closes: #837481).
++  * Bug fix: "FTBFS with compilers that default to -fPIE (patch
++    attached)", thanks to Adam Conrad (Closes: #822820).
++
++ -- Camm Maguire <camm@debian.org>  Wed, 26 Oct 2016 23:04:57 +0000
++
++gcl (2.6.12-41) unstable; urgency=medium
++
++  * pathnames1.4, kfreebsd fix
++
++ -- Camm Maguire <camm@debian.org>  Fri, 14 Oct 2016 01:17:18 +0000
++
++gcl (2.6.12-40) unstable; urgency=medium
++
++  * pathnames1.2
++  * Bug fix: "popen arguments not quoted causes trouble and security
++    issues", thanks to axel (Closes: #802203).
++
++ -- Camm Maguire <camm@debian.org>  Wed, 12 Oct 2016 18:09:26 +0000
++
++gcl (2.6.12-39) unstable; urgency=medium
++
++  * pathnames1.1
++  * ansi-test clean target
++
++ -- Camm Maguire <camm@debian.org>  Wed, 12 Oct 2016 01:32:05 +0000
++
++gcl (2.6.12-38) unstable; urgency=medium
++
++  * Version_2_6_13pre50
++
++ -- Camm Maguire <camm@debian.org>  Tue, 04 Oct 2016 19:45:38 +0000
++
++gcl (2.6.12-37) unstable; urgency=medium
++
++  * Version_2_6_13pre49
++
++ -- Camm Maguire <camm@debian.org>  Mon, 03 Oct 2016 14:54:09 +0000
++
++gcl (2.6.12-36) unstable; urgency=medium
++
++  * Version_2_6_13pre48
++
++ -- Camm Maguire <camm@debian.org>  Sat, 01 Oct 2016 12:10:25 +0000
++
++gcl (2.6.12-35) unstable; urgency=medium
++
++  * Version_2_6_13pre47
++
++ -- Camm Maguire <camm@debian.org>  Fri, 30 Sep 2016 21:21:43 +0000
++
++gcl (2.6.12-34) unstable; urgency=medium
++
++  * Version_2_6_13pre45
++
++ -- Camm Maguire <camm@debian.org>  Fri, 23 Sep 2016 19:42:37 +0000
++
++gcl (2.6.12-33) unstable; urgency=medium
++
++  * Version_2_6_13pre43
++
++ -- Camm Maguire <camm@debian.org>  Tue, 03 May 2016 16:17:03 +0000
++
++gcl (2.6.12-32) unstable; urgency=medium
++
++  * Version_2_6_13pre40
++  * Bug fix: "[INTL:pt_BR] Brazilian Portuguese debconf templates
++    translation", thanks to Adriano Rafael Gomes (Closes: #811523).
++
++ -- Camm Maguire <camm@debian.org>  Wed, 20 Apr 2016 15:18:35 +0000
++
++gcl (2.6.12-31) unstable; urgency=medium
++
++  * Version_2_6_13pre39
++
++ -- Camm Maguire <camm@debian.org>  Mon, 11 Apr 2016 00:41:11 +0000
++
++gcl (2.6.12-30) unstable; urgency=medium
++
++  * Version_2_6_13pre38
++
++ -- Camm Maguire <camm@debian.org>  Wed, 06 Apr 2016 00:20:15 +0000
++
++gcl (2.6.12-29) unstable; urgency=medium
++
++  * Version_2_6_13pre35; support latest binutils
++  * Bug fix: "gcl ftbfs on amd64 and i386 with binutils from
++    experimental", thanks to Matthias Klose (Closes: #803214).
++
++ -- Camm Maguire <camm@debian.org>  Thu, 29 Oct 2015 15:20:27 +0000
++
++gcl (2.6.12-28) unstable; urgency=medium
++
++  * Version_2_6_13pre35; restore hppa build
++
++ -- Camm Maguire <camm@debian.org>  Tue, 27 Oct 2015 20:00:46 +0000
++
++gcl (2.6.12-27) unstable; urgency=medium
++
++  * Version_2_6_13pre34; mips64 relocs; stack saving tail-recursive equal.
++
++ -- Camm Maguire <camm@debian.org>  Tue, 27 Oct 2015 16:35:06 +0000
++
++gcl (2.6.12-26) unstable; urgency=medium
++
++  * Version_2_6_13pre32
++
++ -- Camm Maguire <camm@debian.org>  Fri, 23 Oct 2015 00:03:34 +0000
++
++gcl (2.6.12-25) unstable; urgency=medium
++
++  * Version_2_6_13pre31, kfreebsd and mips64 FTBFS fix
++
++ -- Camm Maguire <camm@debian.org>  Fri, 16 Oct 2015 15:03:03 +0000
++
++gcl (2.6.12-24) unstable; urgency=medium
++
++  * Version_2_6_13pre30
++
++ -- Camm Maguire <camm@debian.org>  Fri, 16 Oct 2015 02:44:23 +0000
++
++gcl (2.6.12-23) unstable; urgency=medium
++
++  * Version_2_6_13pre29
++
++ -- Camm Maguire <camm@debian.org>  Thu, 15 Oct 2015 18:09:59 +0000
++
++gcl (2.6.12-22) unstable; urgency=medium
++
++  * Version_2_6_13pre27
++
++ -- Camm Maguire <camm@debian.org>  Tue, 13 Oct 2015 14:38:53 +0000
++
++gcl (2.6.12-21) unstable; urgency=medium
++
++  * Version_2_6_13pre26
++
++ -- Camm Maguire <camm@debian.org>  Wed, 07 Oct 2015 15:14:27 +0000
++
++gcl (2.6.12-20) unstable; urgency=medium
++
++  * Version_2_6_13pre25
++
++ -- Camm Maguire <camm@debian.org>  Thu, 01 Oct 2015 15:16:14 +0000
++
++gcl (2.6.12-19) unstable; urgency=medium
++
++  * Use-dpkg-buidflags-opt-levels-in-debian-rules, -O3 has bug in 5.2.1
++  * Version_2_6_13pre24
++
++ -- Camm Maguire <camm@debian.org>  Wed, 30 Sep 2015 15:45:20 +0000
++
++gcl (2.6.12-18) unstable; urgency=medium
++
++  * Version_2_6_13pre22
++
++ -- Camm Maguire <camm@debian.org>  Tue, 29 Sep 2015 16:51:03 +0000
++
++gcl (2.6.12-17) unstable; urgency=medium
++
++  * Version_2_6_13pre20
++
++ -- Camm Maguire <camm@debian.org>  Sat, 26 Sep 2015 10:34:23 -0400
++
++gcl (2.6.12-16) unstable; urgency=medium
++
++  * Version_2_6_13pre19
++
++ -- Camm Maguire <camm@debian.org>  Fri, 25 Sep 2015 18:39:52 -0400
++
++gcl (2.6.12-15) unstable; urgency=medium
++
++  * Version_2_6_13pre18
++
++ -- Camm Maguire <camm@debian.org>  Fri, 25 Sep 2015 15:08:50 +0000
++
++gcl (2.6.12-14) unstable; urgency=medium
++
++  * Version_2_6_13pre17
++
++ -- Camm Maguire <camm@debian.org>  Thu, 28 May 2015 03:37:47 +0000
++
++gcl (2.6.12-13) unstable; urgency=medium
++
++  * Version_2_6_13pre16
++
++ -- Camm Maguire <camm@debian.org>  Fri, 15 May 2015 18:09:38 +0000
++
++gcl (2.6.12-12) unstable; urgency=medium
++
++  * Version_2_6_13pre13
++
++ -- Camm Maguire <camm@debian.org>  Fri, 01 May 2015 11:08:46 -0400
++
++gcl (2.6.12-11) unstable; urgency=medium
++
++  * Version_2_6_13pre12
++
++ -- Camm Maguire <camm@debian.org>  Thu, 30 Apr 2015 12:49:16 -0400
++
++gcl (2.6.12-10) unstable; urgency=medium
++
++  * rebuild in clean sid environment
++
++ -- Camm Maguire <camm@debian.org>  Mon, 27 Apr 2015 15:34:15 -0400
++
++gcl (2.6.12-9) unstable; urgency=medium
++
++  * Version_2_6_13pre8b
++  * Bug fix: "ftbfs with GCC-5", thanks to Matthias Klose (Closes:
++    #777866).
++
++ -- Camm Maguire <camm@debian.org>  Mon, 27 Apr 2015 12:32:49 -0400
++
++gcl (2.6.12-8) unstable; urgency=medium
++
++  * Version_2_6_13pre7
++
++ -- Camm Maguire <camm@debian.org>  Fri, 24 Apr 2015 13:38:30 -0400
++
++gcl (2.6.12-7) unstable; urgency=medium
++
++  * Version_2_6_13pre6
++
++ -- Camm Maguire <camm@debian.org>  Thu, 23 Apr 2015 13:43:45 -0400
++
++gcl (2.6.12-6) unstable; urgency=medium
++
++  * Version_2_6_13pre5
++
++ -- Camm Maguire <camm@debian.org>  Wed, 22 Apr 2015 17:14:16 -0400
++
++gcl (2.6.12-5) unstable; urgency=medium
++
++  * Version_2_6_13pre4
++
++ -- Camm Maguire <camm@debian.org>  Wed, 22 Apr 2015 10:25:36 -0400
++
++gcl (2.6.12-4) unstable; urgency=medium
++
++  * Version_2_6_13pre3a
++
++ -- Camm Maguire <camm@debian.org>  Mon, 20 Apr 2015 13:26:36 -0400
++
++gcl (2.6.12-3) unstable; urgency=medium
++
++  * Version_2_6_13pre2
++
++ -- Camm Maguire <camm@debian.org>  Fri, 17 Apr 2015 15:50:37 -0400
++
++gcl (2.6.12-2) unstable; urgency=medium
++
++  * Version_2_6_13pre1
++
++ -- Camm Maguire <camm@debian.org>  Wed, 26 Nov 2014 11:12:46 -0500
++
++gcl (2.6.12-1) unstable; urgency=medium
++
++  * New upstream release
++
++ -- Camm Maguire <camm@debian.org>  Tue, 28 Oct 2014 09:56:15 -0400
++
++gcl (2.6.11-6) unstable; urgency=medium
++
++  * 2.6.12pre5
++
++ -- Camm Maguire <camm@debian.org>  Thu, 23 Oct 2014 17:33:22 -0400
++
++gcl (2.6.11-5) unstable; urgency=medium
++
++  * 2.6.12pre4
++
++ -- Camm Maguire <camm@debian.org>  Sat, 18 Oct 2014 09:46:34 -0400
++
++gcl (2.6.11-4) unstable; urgency=medium
++
++  * 2.6.12pre3
++
++ -- Camm Maguire <camm@debian.org>  Thu, 16 Oct 2014 11:56:15 -0400
++
++gcl (2.6.11-3) unstable; urgency=medium
++
++  * 2.6.12pre2
++
++ -- Camm Maguire <camm@debian.org>  Sun, 28 Sep 2014 20:56:18 -0400
++
++gcl (2.6.11-2) unstable; urgency=medium
++
++  * 2.6.12pre1
++
++ -- Camm Maguire <camm@debian.org>  Fri, 19 Sep 2014 14:49:25 -0400
++
++gcl (2.6.11-1) unstable; urgency=medium
++
++  * New upstream release
++
++ -- Camm Maguire <camm@debian.org>  Sat, 06 Sep 2014 12:28:46 -0400
++
++gcl (2.6.10-54) unstable; urgency=medium
++
++  * remove-debug-message-from-BUGGY_MAXIMUM_SSCANF_LENGTH-code
++
++ -- Camm Maguire <camm@debian.org>  Fri, 05 Sep 2014 10:35:46 -0400
++
++gcl (2.6.10-53) unstable; urgency=medium
++
++  * ppc64le-support-headers
++
++ -- Camm Maguire <camm@debian.org>  Wed, 03 Sep 2014 15:02:12 -0400
++
++gcl (2.6.10-52) unstable; urgency=medium
++
++  * accept-TMP-paths-with-types-versions
++
++ -- Camm Maguire <camm@debian.org>  Fri, 29 Aug 2014 17:51:04 -0400
++
++gcl (2.6.10-51) unstable; urgency=medium
++
++  * fix-match-function-proclaim-skew
++
++ -- Camm Maguire <camm@debian.org>  Fri, 29 Aug 2014 16:40:30 +0000
++
++gcl (2.6.10-50) unstable; urgency=medium
++
++  * trial_selinux_support
++
++ -- Camm Maguire <camm@debian.org>  Thu, 21 Aug 2014 17:29:50 +0000
++
++gcl (2.6.10-49) unstable; urgency=medium
++
++  * R_ARM_JUMP24
++
++ -- Camm Maguire <camm@debian.org>  Wed, 20 Aug 2014 17:08:23 +0000
++
++gcl (2.6.10-48) unstable; urgency=medium
++
++  * try-SGC-for-aarch64
++
++ -- Camm Maguire <camm@debian.org>  Tue, 19 Aug 2014 18:35:22 +0000
++
++gcl (2.6.10-47) unstable; urgency=medium
++
++  * set-stack_guard-after-alloc-setup
++  * Bug fix: "work around build failure on AArch64", thanks to Matthias
++    Klose (Closes: #758101).
++
++ -- Camm Maguire <camm@debian.org>  Thu, 14 Aug 2014 19:36:48 +0000
++
++gcl (2.6.10-46) unstable; urgency=medium
++
++  * R_AARCH64_LDST128_ABS_LO12_NC
++
++ -- Camm Maguire <camm@debian.org>  Wed, 13 Aug 2014 21:39:50 +0000
++
++gcl (2.6.10-45) unstable; urgency=medium
++
++  * fix sh4 CLEAR_CACHE
++
++ -- Camm Maguire <camm@debian.org>  Sun, 10 Aug 2014 20:12:03 +0000
++
++gcl (2.6.10-44) unstable; urgency=medium
++
++  * clear_protect_memory on all elf machines
++
++ -- Camm Maguire <camm@debian.org>  Sat, 09 Aug 2014 00:55:17 +0000
++
++gcl (2.6.10-43) unstable; urgency=medium
++
++  * mips uses builtin_clear_cache like mipsel
++
++ -- Camm Maguire <camm@debian.org>  Fri, 08 Aug 2014 23:42:42 +0000
++
++gcl (2.6.10-42) unstable; urgency=medium
++
++  * backport travel_push_new from master
++
++ -- Camm Maguire <camm@debian.org>  Wed, 06 Aug 2014 20:14:14 +0000
++
++gcl (2.6.10-41) unstable; urgency=medium
++
++  * protos and CFLAGS for axiom extensions
++
++ -- Camm Maguire <camm@debian.org>  Wed, 06 Aug 2014 01:54:38 +0000
++
++gcl (2.6.10-40) unstable; urgency=medium
++
++  * better solaris unexec fix
++
++ -- Camm Maguire <camm@debian.org>  Mon, 04 Aug 2014 22:00:54 +0000
++
++gcl (2.6.10-39) unstable; urgency=medium
++
++  * earlier prelink_init, phys_pages w/o malloc
++
++ -- Camm Maguire <camm@debian.org>  Mon, 04 Aug 2014 16:52:09 +0000
++
++gcl (2.6.10-38) unstable; urgency=medium
++
++  * error on overflow of array dimensions
++
++ -- Camm Maguire <camm@debian.org>  Fri, 01 Aug 2014 14:35:44 +0000
++
++gcl (2.6.10-37) unstable; urgency=medium
++
++  * FILE * casts for windows feof wrapper
++
++ -- Camm Maguire <camm@debian.org>  Thu, 31 Jul 2014 02:17:11 +0000
++
++gcl (2.6.10-36) unstable; urgency=medium
++
++  * better casts for frs_jmpbuf
++
++ -- Camm Maguire <camm@debian.org>  Wed, 30 Jul 2014 17:00:06 +0000
++
++gcl (2.6.10-35) unstable; urgency=medium
++
++  * find_sym_ptable typo fix
++
++ -- Camm Maguire <camm@debian.org>  Tue, 29 Jul 2014 18:08:57 +0000
++
++gcl (2.6.10-34) unstable; urgency=medium
++
++  * --enable-prelink configure arg; stack_chk_guard for 68k
++
++ -- Camm Maguire <camm@debian.org>  Fri, 25 Jul 2014 20:39:10 +0000
++
++gcl (2.6.10-33) unstable; urgency=medium
++
++  * hurd stack_guard, ppc64 C_GC_OFFSET
++
++ -- Camm Maguire <camm@debian.org>  Thu, 24 Jul 2014 21:46:24 +0000
++
++gcl (2.6.10-32) unstable; urgency=medium
++
++  * __stack_chk_guard fix for arm/sh4
++
++ -- Camm Maguire <camm@debian.org>  Wed, 23 Jul 2014 18:12:56 +0000
++
 +gcl (2.6.10-31) unstable; urgency=medium
 +
 +  * dpkg-buildflags trial
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 22 Jul 2014 20:06:10 +0000
 +
 +gcl (2.6.10-30) unstable; urgency=medium
 +
 +  * fix offsets ppc
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 22 Jul 2014 17:12:27 +0000
 +
 +gcl (2.6.10-29) unstable; urgency=medium
 +
 +  * fix unexec file offsets
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 22 Jul 2014 15:36:45 +0000
 +
 +gcl (2.6.10-28) unstable; urgency=high
 +
 +  * enable prelink
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 18 Jul 2014 19:24:38 +0000
 +
 +gcl (2.6.10-27) unstable; urgency=high
 +
 +  * protect closure calls from gc
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 16 Jul 2014 16:15:33 +0000
 +
 +gcl (2.6.10-26) unstable; urgency=high
 +
 +  * Bug fix: "packages should not build-depend on binutils-dev", thanks to
 +    Matthias Klose (Closes: #754840).  Please note that gcl has long
 +    depended on binutils-dev for good reason -- happily it is no longer
 +    necessary
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 15 Jul 2014 16:04:04 +0000
 +
 +gcl (2.6.10-25) unstable; urgency=high
 +
 +  * rebuild to get gcc fixes on i386
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 11 Jul 2014 03:14:45 +0000
 +
 +gcl (2.6.10-24) unstable; urgency=high
 +
 +  * try default gcc 4.9
 +  * access libopcodes without link dependency via dlopen
 +  * Bug fix: "please switch to emacs24", thanks to Gabriele Giacone
 +    (Closes: #754012).
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 09 Jul 2014 17:34:21 +0000
 +
 +gcl (2.6.10-23) unstable; urgency=high
 +
 +  * rebuild latest binutils
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 05 Jul 2014 23:19:27 +0000
 +
 +gcl (2.6.10-22) unstable; urgency=high
 +
 +  * gcc-4.8 on i386, 4.9 has bugs at present
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 04 Jul 2014 01:36:06 +0000
 +
 +gcl (2.6.10-21) unstable; urgency=high
 +
 +  * 2.6.11pre test 20
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 30 Jun 2014 22:43:27 +0000
 +
 +gcl (2.6.10-20) unstable; urgency=high
 +
 +  * 2.6.11pre test 19
 +
 + -- Camm Maguire <camm@debian.org>  Sun, 29 Jun 2014 17:59:59 +0000
 +
 +gcl (2.6.10-19) unstable; urgency=high
 +
 +  * 2.6.11pre test 18
 +
 + -- Camm Maguire <camm@debian.org>  Sun, 29 Jun 2014 16:00:07 +0000
 +
 +gcl (2.6.10-18) unstable; urgency=high
 +
 +  * 2.6.11pre test 17
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 28 Jun 2014 16:57:54 +0000
 +
 +gcl (2.6.10-17) unstable; urgency=high
 +
 +  * 2.6.11pre test 16
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 26 Jun 2014 18:06:42 +0000
 +
 +gcl (2.6.10-16) unstable; urgency=high
 +
 +  * 2.6.11pre test 15
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 18 Jun 2014 17:37:36 +0000
 +
 +gcl (2.6.10-15) unstable; urgency=high
 +
 +  * 2.6.11pre test 14
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 17 Jun 2014 00:39:35 +0000
 +
 +gcl (2.6.10-14) unstable; urgency=high
 +
 +  * 2.6.11pre test 13
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 14 Jun 2014 13:43:57 +0000
 +
 +gcl (2.6.10-13) unstable; urgency=high
 +
 +  * 2.6.11pre test 12
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 20 May 2014 16:00:22 +0000
 +
 +gcl (2.6.10-12) unstable; urgency=high
 +
 +  * 2.6.11pre test 11
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 16 May 2014 17:41:33 +0000
 +
 +gcl (2.6.10-11) unstable; urgency=high
 +
 +  * 2.6.11pre test 10
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 16 May 2014 13:18:07 +0000
 +
 +gcl (2.6.10-10) unstable; urgency=high
 +
 +  * 2.6.11pre test 9
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 07 May 2014 17:10:30 +0000
 +
 +gcl (2.6.10-9) unstable; urgency=high
 +
 +  * 2.6.11pre test 8
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 25 Apr 2014 19:53:10 +0000
 +
 +gcl (2.6.10-8) unstable; urgency=high
 +
 +  * 2.6.11pre test 7
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 21 Apr 2014 14:09:37 +0000
 +
 +gcl (2.6.10-7) unstable; urgency=high
 +
 +  * 2.6.11pre test 6
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 19 Apr 2014 17:52:17 +0000
 +
 +gcl (2.6.10-6) unstable; urgency=high
 +
 +  * 2.6.11pre test 5
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 18 Apr 2014 15:06:09 +0000
 +
 +gcl (2.6.10-5) unstable; urgency=high
 +
 +  * 2.6.11pre test 4
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 15 Apr 2014 20:30:13 +0000
 +
 +gcl (2.6.10-4) unstable; urgency=high
 +
 +  * 2.6.11pre test 3
 +  * Bug fix: "debian/rules uses DEB_BUILD_* macros instead of DEB_HOST_*
 +    macros", thanks to Matthias Klose (Closes: #743520).
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 09 Apr 2014 13:15:32 +0000
 +
 +gcl (2.6.10-3) unstable; urgency=high
 +
 +  * 2.6.11pre test 2
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 03 Apr 2014 14:24:23 +0000
 +
 +gcl (2.6.10-2) unstable; urgency=high
 +
 +  * 2.6.11pre test 1
 +  * Bug fix: "FTBFS: gcl_readline.d:472:39: error: &#39;CPPFunction&#39;
 +    undeclared (first use in this function)", thanks to David Suárez
 +    (Closes: #741819).
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 24 Mar 2014 15:47:01 +0000
 +
 +gcl (2.6.10-1) unstable; urgency=high
 +
 +  * New upstream release
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 13 Nov 2013 18:39:19 +0000
 +
 +gcl (2.6.9-17) unstable; urgency=high
 +
 +  * 2.6.10pre test 17
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 11 Nov 2013 19:41:45 +0000
 +
 +gcl (2.6.9-16) unstable; urgency=high
 +
 +  * 2.6.10pre test 16
 +  * Bug fix: "gcl 2.6.7+dfsga-20 needs 1 GB disk space on amd64", thanks
 +    to Edi Meier (Closes: #714507).
 +  * Bug fix: "[INTL:ja] New Japanese translation", thanks to victory
 +    (Closes: #718925).
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 09 Nov 2013 13:34:32 +0000
 +
 +gcl (2.6.9-15) unstable; urgency=high
 +
 +  * 2.6.10pre test 15
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 02 Nov 2013 22:21:16 +0000
 +
 +gcl (2.6.9-14) unstable; urgency=high
 +
 +  * 2.6.10pre test 14
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 23 Oct 2013 17:44:14 +0000
 +
 +gcl (2.6.9-13) unstable; urgency=high
 +
 +  * environment allocation unrandomize.h
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 21 Oct 2013 00:20:16 +0000
 +
 +gcl (2.6.9-12) unstable; urgency=high
 +
 +  * 2.6.10pre test 13
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 18 Oct 2013 14:18:17 +0000
 +
 +gcl (2.6.9-11) unstable; urgency=high
 +
 +  * 2.6.10pre test 12, s390, mingw cleanup, make_bignum bug fix
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 15 Oct 2013 23:32:09 +0000
 +
 +gcl (2.6.9-10) unstable; urgency=high
 +
 +  * fast-fixnums
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 11 Oct 2013 15:05:58 +0000
 +
 +gcl (2.6.9-9) unstable; urgency=high
 +
 +  * 2.6.10pre test 10 and 11
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 02 Oct 2013 19:12:36 +0000
 +
 +gcl (2.6.9-8) unstable; urgency=high
 +
 +  * 2.6.10pre test 8 and 9
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 01 Oct 2013 21:00:19 +0000
 +
 +gcl (2.6.9-7) unstable; urgency=high
 +
 +  * 2.6.10pre test 6 and 7
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 30 Sep 2013 19:34:38 +0000
 +
 +gcl (2.6.9-6) unstable; urgency=high
 +
 +  * 2.6.10pre test 5
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 24 Sep 2013 17:03:24 +0000
 +
 +gcl (2.6.9-5) unstable; urgency=high
 +
 +  * 2.6.10pre test 4
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 23 Sep 2013 19:27:36 +0000
 +
 +gcl (2.6.9-4) unstable; urgency=high
 +
 +  * 2.6.10pre test 3
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 23 Sep 2013 16:30:09 +0000
 +
 +gcl (2.6.9-3) unstable; urgency=high
 +
 +  * 2.6.10pre test 2
 +
 + -- Camm Maguire <camm@debian.org>  Sun, 22 Sep 2013 03:27:10 +0000
 +
 +gcl (2.6.9-2) unstable; urgency=high
 +
 +  * 2.6.10pre test
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 21 Sep 2013 04:14:55 +0000
 +
 +gcl (2.6.9-1) unstable; urgency=high
 +
 +  * New upstream release
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 28 Aug 2013 16:49:18 +0000
 +
 +gcl (2.6.7+dfsga-40) unstable; urgency=high
 +
 +  * fix allocate functions
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 06 Aug 2013 22:36:37 +0000
 +
 +gcl (2.6.7+dfsga-39) unstable; urgency=high
 +
 +  * lower initial contiguous and relblock allocations, set *ihs-top*
 +    properly on startup, protect memory->cfd.cfd_start initialization from
 +    gc
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 05 Aug 2013 17:38:22 +0000
 +
 +gcl (2.6.7+dfsga-38) unstable; urgency=high
 +
 +  * robustify near oom handling to fix axiom compile of EXPEXPAN on mips
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 02 Aug 2013 16:25:16 +0000
 +
 +gcl (2.6.7+dfsga-37) unstable; urgency=high
 +
 +  * ppc64 gprof fix
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 26 Jul 2013 23:40:14 +0000
 +
 +gcl (2.6.7+dfsga-36) unstable; urgency=high
 +
 +  * min_pagewidth=14 on mips
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 26 Jul 2013 02:20:56 +0000
 +
 +gcl (2.6.7+dfsga-35) unstable; urgency=high
 +
 +  * latest gcc on all platforms, no gprof ppc64, -O1 ia64, -O0 alpha
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 25 Jul 2013 14:42:48 +0000
 +
 +gcl (2.6.7+dfsga-34) unstable; urgency=high
 +
 +  * sgc link_array mark fix;rb_end across save fix;more stable gcc on older arches
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 23 Jul 2013 17:11:23 +0000
 +
 +gcl (2.6.7+dfsga-33) unstable; urgency=high
 +
 +  * fix mark_link_array for marked sLAlink_arrayA->s.s_dbind
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 22 Jul 2013 19:00:43 +0000
 +
 +gcl (2.6.7+dfsga-32) unstable; urgency=high
 +
 +  * protect mark_link_array in sgc
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 20 Jul 2013 00:16:07 +0000
 +
 +gcl (2.6.7+dfsga-31) unstable; urgency=high
 +
 +  * properly clean link array on gc
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 19 Jul 2013 20:34:34 +0000
 +
 +gcl (2.6.7+dfsga-30) unstable; urgency=high
 +
 +  * fix gcl.script compiler::link, darwin compile warnings
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 15 Jul 2013 20:35:03 +0000
 +
 +gcl (2.6.7+dfsga-29) unstable; urgency=high
 +
 +  * fix compiler::link in presence of gcl.script
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 15 Jul 2013 16:23:33 +0000
 +
 +gcl (2.6.7+dfsga-28) unstable; urgency=high
 +
 +  * install unixport/gcl.script
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 13 Jul 2013 18:42:28 +0000
 +
 +gcl (2.6.7+dfsga-27) unstable; urgency=high
 +
 +  * workaround for ia64 and hurd brk issues
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 12 Jul 2013 21:44:54 +0000
 +
 +gcl (2.6.7+dfsga-26) unstable; urgency=high
 +
 +  * -- command line support, map-shared in unexec
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 12 Jul 2013 00:52:35 +0000
 +
 +gcl (2.6.7+dfsga-25) unstable; urgency=high
 +
 +  * alpha, mips, 68k
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 10 Jul 2013 18:29:37 +0000
 +
 +gcl (2.6.7+dfsga-24) unstable; urgency=high
 +
 +  * sgc and reloc fixes
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 08 Jul 2013 13:56:33 +0000
 +
 +gcl (2.6.7+dfsga-23) unstable; urgency=high
 +
 +  * fix for maxima on kfbsd and sparc
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 03 Jul 2013 19:19:16 +0000
 +
 +gcl (2.6.7+dfsga-22) unstable; urgency=high
 +
 +  * fix stack definition issues on i386
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 02 Jul 2013 18:27:54 +0000
 +
 +gcl (2.6.7+dfsga-21) unstable; urgency=high
 +
 +  * near out of memory robustification
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 02 Jul 2013 15:32:58 +0000
 +
 +gcl (2.6.7+dfsga-20) unstable; urgency=high
 +
 +  * fix 3GB workaround for gprof
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 21 Jun 2013 11:09:01 -0400
 +
 +gcl (2.6.7+dfsga-19) unstable; urgency=high
 +
 +  * work around 3GB personality/alloca/malloc bug
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 21 Jun 2013 02:46:49 +0000
 +
 +gcl (2.6.7+dfsga-18) unstable; urgency=high
 +
 +  * alpha NULL_OR_ON_C_STACK, attempt to get 32 immfix space with
 +    ADDR_LIMIT_3GB|ADDR_COMPAT_LAYOUT personality, clean compile with no
 +    immfix
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 20 Jun 2013 20:24:29 +0000
 +
 +gcl (2.6.7+dfsga-17) unstable; urgency=high
 +
 +  * small optimizations, #= nil fix
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 19 Jun 2013 16:23:27 +0000
 +
 +gcl (2.6.7+dfsga-16) unstable; urgency=high
 +
 +  * no linker script on hurd;fix OBJ_ALIGN
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 13 Jun 2013 15:35:00 +0000
 +
 +gcl (2.6.7+dfsga-15) unstable; urgency=high
 +
 +  * ia64 fix
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 13 Jun 2013 02:38:47 +0000
 +
 +gcl (2.6.7+dfsga-14) unstable; urgency=high
 +
 +  * eliminate maxpage/dbegin, restore windows and macosx builds
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 12 Jun 2013 21:42:29 +0000
 +
 +gcl (2.6.7+dfsga-13) unstable; urgency=low
 +
 +  * ia64/hurd/s390 and SGC
 +
 + -- Camm Maguire <camm@debian.org>  Sun, 09 Jun 2013 00:23:51 +0000
 +
 +gcl (2.6.7+dfsga-12) unstable; urgency=low
 +
 +  * ia64/hurd/s390
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 08 Jun 2013 15:24:46 +0000
 +
 +gcl (2.6.7+dfsga-11) unstable; urgency=high
 +
 +  * 2.6.9 test
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 07 Jun 2013 21:46:41 +0000
 +
 +gcl (2.6.7+dfsga-10) unstable; urgency=high
 +
 +  * output mips make bug text to stderr
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 25 May 2013 12:24:35 +0000
 +
 +gcl (2.6.7+dfsga-9) unstable; urgency=high
 +
 +  * mips make bug workaround
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 22 May 2013 14:23:43 +0000
 +
 +gcl (2.6.7+dfsga-8) unstable; urgency=high
 +
 +  * revert doubled default maxpage
 +  * export *read-eval*
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 21 May 2013 14:42:05 +0000
 +
 +gcl (2.6.7+dfsga-7) unstable; urgency=high
 +
 +  * export ansi symbols
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 11 May 2013 21:36:56 +0000
 +
 +gcl (2.6.7+dfsga-6) unstable; urgency=high
 +
 +  * fast hash-equal in compiler
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 11 May 2013 19:11:42 +0000
 +
 +gcl (2.6.7+dfsga-5) unstable; urgency=high
 +
 +  * Bug fix: "FTBFS: cp: cannot stat
 +    &#39;debian/tmp/usr/share/info/gcl-si.info&#39;: No such file or
 +    directory", thanks to Lucas Nussbaum (Closes: #707490).
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 10 May 2013 18:09:14 +0000
 +
 +gcl (2.6.7+dfsga-4) unstable; urgency=high
 +
 +  * sgc-on fix with latest gcc
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 23 Apr 2013 18:45:11 +0000
 +
 +gcl (2.6.7+dfsga-3) unstable; urgency=high
 +
 +  * hash depth bug fix
 +  * new s390 reloc
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 24 Jan 2013 19:46:30 +0000
 +
 +gcl (2.6.7+dfsga-2) unstable; urgency=high
 +  
 +  * more arm relocs supported;check default timezone dynamically;follow
 +    bash ~ semantics in user-homedir-pathname
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 21 Jan 2013 18:41:06 +0000
 +
 +gcl (2.6.7+dfsga-1) unstable; urgency=high
 +
 +  * Acknowledge Non-maintainer upload. 
 +  (thanks David Prévot <taffit@debian.org>) 
 +  * Remove unused and non DFSG-compliant gmp3/gmp.* from source. 
 +  (Closes: #695721)
 +  * Show translated debconf templates, thanks to Denis Barbier for the
 +    analysis and the proposed fixes. (Closes: #691946)
 +  * trim excess digits from printed floats
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 15 Jan 2013 20:46:25 +0000
 +
 +gcl (2.6.7-108) unstable; urgency=high
 +
 +  * Depend on emacs23 | emacsen to allow wheezy propagation
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 08 Oct 2012 18:08:36 +0000
 +
 +gcl (2.6.7-107) unstable; urgency=high
 +
 +  * mode 644 on ucf newfile
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 03 Oct 2012 20:38:43 +0000
 +
 +gcl (2.6.7-106) unstable; urgency=high
 +
 +  * Bug fix: "modifies conffiles (policy 10.7.3): /etc/default/gcl",
 +    thanks to Andreas Beckmann (Closes: #688201).
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 03 Oct 2012 16:52:10 +0000
 +
 +gcl (2.6.7-105) unstable; urgency=high
 +
 +  * restore #DEBHELPER# to postinst and postrm scripts
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 01 Oct 2012 17:31:43 +0000
 +
 +gcl (2.6.7-104) unstable; urgency=high
 +
 +  * Bug fix: "modifies conffiles (policy 10.7.3): /etc/default/gcl",
 +    thanks to Andreas Beckmann (Closes: #688201).
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 01 Oct 2012 15:32:52 +0000
 +
 +gcl (2.6.7-103) unstable; urgency=high
 +
 +  * sfaslelf.c: FIX_HIDDEN_SYMBOLS
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 22 Aug 2012 15:13:12 +0000
 +
 +gcl (2.6.7-102) unstable; urgency=high
 +
 +  * Fix hash key distribution bug, bitvector equal bug
 +  * distinguish car position in equal-hash of lists
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 20 Aug 2012 17:33:26 +0000
 +
 +gcl (2.6.7-101) unstable; urgency=high
 +
 +  * add alpha, ppc, ppc64, and ia64 to __builtin__clear_cache exception
 +    list as per gcc maintainers
 +  * lintian cleanups
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 05 May 2012 23:18:56 +0000
 +
 +gcl (2.6.7-100) unstable; urgency=high
 +
 +  * nil case keylist support
 +  * Bug fix: "[INTL:da] Danish translation of the debconf templates gcl",
 +    thanks to Joe Dalton (Closes: #666528).
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 20 Apr 2012 02:25:26 +0000
 +
 +gcl (2.6.7-99) unstable; urgency=low
 +
 +  * case default error checking
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 23 Mar 2012 14:14:44 +0000
 +
 +gcl (2.6.7-98) unstable; urgency=low
 +
 +  * restore traditional make-sequence,make-array, and coerce, and
 +    optimize replace, as 2.6.8 compiler is still too weak re: inlines
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 20 Jan 2012 19:55:45 +0000
 +
 +gcl (2.6.7-97) unstable; urgency=low
 +
 +  * evade __builtin___clear_cache on hppa
 +  * make-array;make-sequence;replace;coerce
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 20 Jan 2012 05:13:22 +0000
 +
 +gcl (2.6.7-96) unstable; urgency=low
 +
 +  * better XDR detection; no __builtin_clear_cache on sh4
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 18 Jan 2012 01:32:43 +0000
 +
 +gcl (2.6.7-95) unstable; urgency=low
 +
 +  * clear_cache after mprotect
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 17 Jan 2012 03:54:56 +0000
 +
 +gcl (2.6.7-94) unstable; urgency=low
 +
 +  * optimize unwind at O0 to workaround gcc bug; centralize on
 +    __builtin__clear_cache when available;arm_thm_call reloc support
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 16 Jan 2012 20:10:07 +0000
 +
 +gcl (2.6.7-93) unstable; urgency=low
 +
 +  * remove C_GC_OFFSET for sparc64
 +  * remove ncurses dependency for readline
 +  * Bug fix: "FTBFS: dpkg-buildpackage: error: dpkg-source -b gcl-2.6.7
 +    gave error exit status 2", thanks to Didier Raboud (Closes: #643131).
 +  * Bug fix: "drops readline support if rebuilt", thanks to Sven Joachim
 +    (Closes: #646735).
 +  * lower opts on sparc64 asof gcc 4.6.1
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 11 Jan 2012 21:04:23 +0000
 +
 +gcl (2.6.7-92) unstable; urgency=low
 +
 +  * remove gprof on arm as mcount calls are 24/22bit -- marginally
 +    accessible
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 07 Jan 2012 02:42:06 +0000
 +
 +gcl (2.6.7-91) unstable; urgency=low
 +
 +  * s390x reloc support
 +  * lower C optimization on ia64, arm and mips for now
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 05 Jan 2012 17:30:01 +0000
 +
 +gcl (2.6.7-90) unstable; urgency=low
 +
 +  * libtirpc check for newest glibc
 +  * read_preserving_whitespace fix
 +  * armhf reloc support
 +  * s390x support
 +  * try C_GC_OFFSET for sparc64
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 04 Jan 2012 19:51:13 +0000
 +
 +gcl (2.6.7-89) unstable; urgency=low
 +
 +  * support new mips relocs
 +  * lower opt to work around gcc 4.6 bug on arm
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 11 May 2011 20:06:04 +0000
 +
 +gcl (2.6.7-88) unstable; urgency=low
 +
 +  * Bug fix: "FTBFS: gcl_arraylib.c:4:42: error: &#39;VV&#39; undeclared
 +    (first use in this function)", thanks to Lucas Nussbaum (Closes:
 +    #625032).
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 09 May 2011 16:00:21 +0000
 +
 +gcl (2.6.7-87) unstable; urgency=low
 +
 +  * mips reloc fix;configure default dlopen fix;clean rules and makefiles
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 05 Nov 2010 13:29:05 +0000
 +
 +gcl (2.6.7-86) unstable; urgency=low
 +
 +  * remove binutils subdir, configure and make changes
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 04 Nov 2010 17:55:48 +0000
 +
 +gcl (2.6.7-85) unstable; urgency=low
 +
 +  * fix mips relocs for non-static clines
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 02 Nov 2010 13:56:40 +0000
 +
 +gcl (2.6.7-84) unstable; urgency=low
 +
 +  * better mips relocs, fix link on mingw32
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 30 Oct 2010 00:07:39 +0000
 +
 +gcl (2.6.7-83) unstable; urgency=low
 +
 +  * fix alpha stubs; fix sparc64 typo; print armhf relocs
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 28 Oct 2010 13:43:16 +0000
 +
 +gcl (2.6.7-82) unstable; urgency=low
 +
 +  * mips64 fixes
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 26 Oct 2010 18:20:04 +0000
 +
 +gcl (2.6.7-81) unstable; urgency=low
 +
 +  * sparc64;mips64
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 26 Oct 2010 03:33:52 +0000
 +
 +gcl (2.6.7-80) unstable; urgency=low
 +
 +  * alpha stubs; sgc mips kernel bug test; mips GPREL32 reloc
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 25 Oct 2010 19:52:51 +0000
 +
 +gcl (2.6.7-79) unstable; urgency=low
 +
 +  * mips ld_bind_now, disable sgc workaround mips SIGBUS bug
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 20 Oct 2010 15:31:59 +0000
 +
 +gcl (2.6.7-78) unstable; urgency=low
 +
 +  * mips local got relocs
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 12 Oct 2010 17:15:35 +0000
 +
 +gcl (2.6.7-77) unstable; urgency=low
 +
 +  * workaround gcc alpha bug
 +  * fix alpha reloc
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 01 Oct 2010 21:25:11 +0000
 +
 +gcl (2.6.7-76) unstable; urgency=low
 +
 +  * fix page_multiple usage for runtime pagesize variance and stable mipsel builds
 +  * sparc64 support
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 01 Oct 2010 19:18:47 +0000
 +
 +gcl (2.6.7-75) unstable; urgency=low
 +
 +  * fix alpha bug
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 28 Sep 2010 20:23:21 +0000
 +
 +gcl (2.6.7-74) unstable; urgency=low
 +
 +  * fix alpha relocs for axiom
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 28 Sep 2010 16:07:38 +0000
 +
 +gcl (2.6.7-73) unstable; urgency=low
 +
 +  * sparc reloc updates
 +  * fast-link fix
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 24 Sep 2010 19:23:16 +0000
 +
 +gcl (2.6.7-72) unstable; urgency=low
 +
 +  * remove unused symbols from gcl_cmpopt.lsp
 +  * reloc updates
 +  * clear gcc warning
 +  * default tilde expansion to HOME env in absence of passwd
 +  * configure typo fix
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 22 Sep 2010 19:32:52 +0000
 +
 +gcl (2.6.7-71) unstable; urgency=low
 +
 +  * print sparc64 relocs
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 28 Aug 2010 14:50:00 +0000
 +
 +gcl (2.6.7-70) unstable; urgency=low
 +
 +  * sparc64/m68k
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 27 Aug 2010 16:54:11 +0000
 +
 +gcl (2.6.7-69) unstable; urgency=low
 +
 +  * Bug fix: "non-standard gcc/g++ used for build (gcc-4.3)", thanks to
 +    Matthias Klose (Closes: #594280).
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 26 Aug 2010 19:08:39 +0000
 +
 +gcl (2.6.7-68) unstable; urgency=low
 +
 +  * ppc/mips elf reloc fixes
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 23 Aug 2010 20:54:30 +0000
 +
 +gcl (2.6.7-67) unstable; urgency=low
 +
 +  * Fix compiler::link ansi combo
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 21 Aug 2010 02:05:37 +0000
 +
 +gcl (2.6.7-66) unstable; urgency=low
 +
 +  * ppc autobuild fix
 +  * Bug fix: "FTBFS: sfasli.c:139: error: invalid initializer", thanks to
 +    Lucas Nussbaum (Closes: #593037).
 +  * Bug fix: "FTBFS on powerpc: Error: The function TK::GET-AUTOLOADS is
 +    undefined.", thanks to Mehdi Dogguy (Closes: #593191).
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 20 Aug 2010 01:25:09 +0000
 +
 +gcl (2.6.7-65) unstable; urgency=low
 +
 +  * autobuilder fixes
 +
 + -- Camm Maguire <camm@debian.org>  Sat, 14 Aug 2010 11:30:46 +0000
 +
 +gcl (2.6.7-64) unstable; urgency=low
 +
 +  * configure fix
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 13 Aug 2010 23:26:07 +0000
 +
 +gcl (2.6.7-63) unstable; urgency=low
 +
 +  * macosx support, ppc, i386 and x86_64 -- sfaslmacho.c
 +  * windows/wine support -- sfaslcoff.c
 +  * better custreloc support obviating my_plt -- sfaslelf.c
 +  * debian default custreloc build where supported, all but ia64 and hppa
 +  * fix mingw/wine path issues
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 13 Aug 2010 16:08:49 +0000
 +
 +gcl (2.6.7-62) unstable; urgency=high
 +
 +  * more stable sgc detection via h/tsgc.h
 +  * fix plt.h bug on hppa
 +  * sublis1-inline fix for acl2
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 26 Jul 2010 16:03:54 +0000
 +
 +gcl (2.6.7-61) unstable; urgency=high
 +
 +  * mac osx support
 +  * fix undef sgc bug in cmpinclude.h
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 20 Jul 2010 14:50:19 +0000
 +
 +gcl (2.6.7-60) unstable; urgency=high
 +
 +  * fix sh4 support
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 29 Apr 2010 18:09:04 +0000
 +
 +gcl (2.6.7-59) unstable; urgency=high
 +
 +  * fix hurd support
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 23 Apr 2010 17:12:54 +0000
 +
 +gcl (2.6.7-58) unstable; urgency=high
 +
 +  * hurd support
 +  * sh4 support
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 23 Apr 2010 05:09:29 +0000
 +
 +gcl (2.6.7-57) unstable; urgency=high
 +
 +  * static function pointer wrapper for gcl_gmp_allocfun, stabilizing gmp
 +    on hppa/ia64
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 12 Apr 2010 22:28:41 +0000
 +
 +gcl (2.6.7-56) unstable; urgency=high
 +
 +  * __builtin___clear_cache on arm
 +  * gcc-4.3 on alpha
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 28 Jan 2010 00:32:16 +0000
 +
 +gcl (2.6.7-55) unstable; urgency=low
 +
 +  * SGC fix, debian override fix, xgcl update
 +  * SGC fix for relocatable and contiguous gmp storage
 +  * configure fix for arm and hppa
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 26 Jan 2010 19:43:08 +0000
 +
 +gcl (2.6.7-54) unstable; urgency=low
 +
 +  * robustify user_match, unrandomize, read-char-no-hang for sockets
 +  * SA_SIGINFO for 386-linux
 +  * if cmpinclude.h is not available, use *cmpinclude-string* in compiler-pass2
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 20 Jan 2010 19:02:28 +0000
 +
 +gcl (2.6.7-53) unstable; urgency=low
 +
 +  * revert round ratio to nearest
 +
 + -- Camm Maguire <camm@debian.org>  Tue, 05 Jan 2010 03:06:59 +0000
 +
 +gcl (2.6.7-52) unstable; urgency=low
 +
 +  * SIGINFO for kfreebsd-386
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 04 Jan 2010 17:49:05 +0000
 +
 +gcl (2.6.7-51) unstable; urgency=low
 +
 +  * user_match exscapes once only
 +
 + -- Camm Maguire <camm@debian.org>  Sun, 03 Jan 2010 05:31:20 +0000
 +
 +gcl (2.6.7-50) unstable; urgency=low
 +
 +  * gcc 4.4 warning cleanups
 +
 + -- Camm Maguire <camm@debian.org>  Thu, 31 Dec 2009 20:43:39 +0000
 +
 +gcl (2.6.7-49) unstable; urgency=low
 +
 +  * Bug fix: "/bin/sh: line 6: /bin/gcl: Permission denied", thanks to
 +    Nobuhiro Iwamatsu (Closes: #561554).
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 30 Dec 2009 23:04:39 +0000
 +
 +gcl (2.6.7-48) unstable; urgency=low
 +
 +  * round to nearest in ratio to double
 +
 + -- Camm Maguire <camm@debian.org>  Wed, 16 Dec 2009 15:01:55 +0000
 +
 +gcl (2.6.7-47) unstable; urgency=low
 +
 +  * Bug fix: "configure: error: Need zlib for bfd linking", thanks to
 +    Cyril Brulebois (Closes: #560761).
 +  * Bug fix: "Disfunctional maintainer address", thanks to Joerg Jaspert
 +    (Closes: #560752).
 +
 + -- Camm Maguire <camm@debian.org>  Mon, 14 Dec 2009 19:06:45 +0000
 +
 +gcl (2.6.7-46) unstable; urgency=low
 +
 +  * support newer binutils with output_bfd element
 +  * Fix 64bit interrupt bug
 +  * reader error fix
 +  * Ensure plt entries are not blank
 +  * plt table reading fix
 +  * Bug fix: "FTBFS: current binutils static libs need -lz", thanks to
 +    Daniel Schepler (Closes: #521929).
 +  * Bug fix: "replacing libreadline5-dev build dependency with
 +    libreadline-dev", thanks to Matthias Klose (Closes: #553761).
 +  * Bug fix: "crash after ctrl-C", thanks to Miroslaw Kwasniak (Closes:
 +    #519903).
 +  * Bug fix: "FTBFS with binutils-gold", thanks to Peter Fritzsche
 +    (Closes: #554418). -ldl added to bfd linker args
 +  * Bug fix: "[INTL:es] Spanish debconf template translation for gcl",
 +    thanks to Francisco Javier Cuadrado (Closes: #508728).
 +  * Bug fix: "[INTL:it] Italian translation", thanks to Vincenzo
 +    Campanella (Closes: #560364).
 +  * gcc error/warning cleanups
 +  * fix plt table awk
 +
 + -- Camm Maguire <camm@debian.org>  Fri, 11 Dec 2009 17:45:14 +0000
 +
 +gcl (2.6.7-45) unstable; urgency=high
 +
 +  * proper word order detection macro, fixes armel
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 01 Sep 2008 13:48:16 +0000
 +
 +gcl (2.6.7-44) unstable; urgency=high
 +
 +  * backoff on arm opts
 +  * more careful handling of GCL_GPROF_START
 +
 + -- Camm Maguire <camm@maguirefamily.org>  Sat, 23 Aug 2008 21:28:52 +0000
 +
 +gcl (2.6.7-43) unstable; urgency=low
 +
 +  * redo unrandomize.h to enable compilation under -O2 -- FIXME; Closes: 494153
 +
 + -- Camm Maguire <camm@maguirefamily.org>  Wed, 20 Aug 2008 21:18:43 +0000
 +
 +gcl (2.6.7-42) unstable; urgency=low
 +
 +  * more div/rem symbols for alpha
 +
 + -- Camm Maguire <camm@sacrifice.m.enhanced.com>  Sun, 03 Aug 2008 11:18:51 +0000
 +
 +gcl (2.6.7-41) unstable; urgency=low
 +
 +  * more div/rem symbols for arm and hppa
 +
 + -- Camm Maguire <camm@sacrifice.m.enhanced.com>  Sat, 02 Aug 2008 00:36:07 +0000
 +
 +gcl (2.6.7-40) unstable; urgency=low
 +
 +  * default gcc with pic enabled on mips/mipsel
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 01 Aug 2008 13:28:00 -0400
 +
 +gcl (2.6.7-39) unstable; urgency=high
 +
 +  * gcc 4.2 for mips/mipsel for now
 +  * __divdi3 et. al. symbols for ia64 and arm
 +  * clean some compiler warnings
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 01 Aug 2008 12:53:07 -0400
 +
 +gcl (2.6.7-38) unstable; urgency=low
 +
 +  * No infinite unrandomization loops
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 31 Jul 2008 15:18:37 -0400
 +
 +gcl (2.6.7-37) unstable; urgency=low
 +
 +  * Non-maintainer upload to fix pending l10n issues
 +  * Debconf templates and debian/control reviewed by the debian-l10n-
 +    english team as part of the Smith review project. Closes: #457025
 +  * [Debconf translation updates]
 +    - Portuguese. Closes: #457576
 +    - Czech. Closes: #457677
 +    - French. Closes: #458120
 +    - Finnish. Closes: #458255
 +    - Galician. Closes: #458529
 +    - Vietnamese. Closes: #459008
 +    - Russian. Closes: #459308
 +    - Dutch. Closes: #459541
 +    - German. Closes: #459887
 +  * [Lintian] Correct FSF address in debian/copyright
 +  * [Lintian] Remove extra whitespaces at the end of
 +    debian/in.gcl-doc.doc-base.tk
 +  * [Lintian] Correct section in doc-base documents from Apps/Programming
 +    to Programming
 +  * Accept NMU
 +  * Bug fix: "[INTL:sv] po-debconf file for gcl", thanks to Martin Ågren
 +    (Closes: #492241).
 +  * Bug fix: "gcl: FTBFS [amd64]: cannot trap sbrk", thanks to Daniel
 +    Schepler (Closes: #487435).  Modified and applied personality handling
 +    patch.
 +  * Bug fix: "gcl: Builds broken package with gcc-4.3", thanks to Daniel
 +    Schepler (Closes: #467474).  Added sincos to plttest.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 31 Jul 2008 15:18:15 -0400
 +
 +gcl (2.6.7-36) unstable; urgency=low
 +
 +  * statsysbfd in Debian, incoporating modules into libgcl.a for
 +    compiler::link support
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 30 Nov 2007 12:03:31 -0500
 +
 +gcl (2.6.7-35) unstable; urgency=low
 +
 +  * drop gcc-3.4 on arm, Closes: #440421
 +  * Depend on emacs22 | emacsen, Closes: #440190
 +  * debconf translations Closes: #410683, Closes: #419736, Closes: #423706, Closes: #441408
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 23 Nov 2007 10:25:23 -0500
 +
 +gcl (2.6.7-34) unstable; urgency=low
 +
 +  * add read-byte,read-sequence,write-byte,write-sequence support
 +  * fix some float parsing inaccuracies
 +  * support GNU_HASH sections, Closes: #426135
 +  * safety 2 for certain low level functions in gcl_listlib.lsp, CLoses:
 +    #415266
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed,  4 Jul 2007 16:23:25 -0400
 +
 +gcl (2.6.7-33) unstable; urgency=low
 +
 +  * Fix leading underscore behavior of my_plt
 +  * add sqrt to plttest.c
 +  * disable-nls added to the binutils subconfigures to avoid msgfmt
 +    dependency
 +  * remove -lintl from powerpc-macosx.defs
 +  * update to make-user-init from cvs head to support hol88, fix link on
 +    mingw
 +  * solaris-i386 support
 +  * fix read-char-no-hang on mingw
 +  * fast compile without wrap-literals
 +  * sigaltstack support
 +  * fix cerror
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 16 May 2007 12:45:40 -0400
 +
 +gcl (2.6.7-32) unstable; urgency=low
 +
 +  * static function pointers for hppa
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 29 Oct 2006 02:15:13 -0500
 +
 +gcl (2.6.7-31) unstable; urgency=low
 +
 +  * no C optimization on hppa, gcc 4.x on hppa
 +  * update cs.po, Closes: #389211
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 27 Oct 2006 13:06:55 -0400
 +
 +gcl (2.6.7-30) unstable; urgency=low
 +
 +  * make sure *tmp-dir* is set
 +  * makeinfo is optional
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 25 Oct 2006 17:37:54 -0400
 +
 +gcl (2.6.7-29) unstable; urgency=low
 +
 +  * Fix build issues on hppa and m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 21 Oct 2006 15:10:41 -0400
 +
 +gcl (2.6.7-28) unstable; urgency=low
 +
 +  * si::gettimeofday function for HOL88 build;macosx fixes
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 18 Oct 2006 13:21:26 -0400
 +
 +gcl (2.6.7-27) unstable; urgency=low
 +
 +  * unrestricted gcc for alpha
 +  * more default stack space
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 17 Oct 2006 16:33:43 -0400
 +
 +gcl (2.6.7-26) unstable; urgency=low
 +
 +  * Fix large float read bug in c1constant-value
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 16 Oct 2006 12:41:03 -0400
 +
 +gcl (2.6.7-25) unstable; urgency=low
 +
 +  * build-dep on gcc3.4 where appropriate
 +  * Newer standards
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 12 Oct 2006 09:37:08 -0400
 +
 +gcl (2.6.7-24) unstable; urgency=low
 +
 +  * build-dep on gcc3.4 where appropriate
 +  * Newer standards
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 12 Oct 2006 02:22:04 -0400
 +
 +gcl (2.6.7-23) unstable; urgency=low
 +
 +  * backoff to gcc-3.4 on alpha,arm,hppa, and m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 11 Oct 2006 10:16:59 -0400
 +
 +gcl (2.6.7-22) unstable; urgency=low
 +
 +  * HAVE_SYS_SOCKIO_H for solaris
 +  * autolocbfd for solaris
 +  * no -Wall when no gcc
 +  * no -fomit-frame-pointer on m68k
 +  * no profiling on mips
 +  * $(AWK) instead of awk
 +  * si::stat function
 +  * fix 'the boolean type coersion error
 +  * no varargs on cygwin
 +  * while eval macro
 +  * gensym counter fixes
 +  * xgcl updates
 +
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 15 Sep 2006 13:48:28 -0400
 +
 +gcl (2.6.7-21) unstable; urgency=low
 +
 +  * Fix socket write error
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed,  6 Sep 2006 09:59:50 -0400
 +
 +gcl (2.6.7-20) unstable; urgency=low
 +
 +  * fix ia64 build
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 31 Aug 2006 15:14:18 -0400
 +
 +gcl (2.6.7-19) unstable; urgency=low
 +
 +  * xgcl upgrade
 +  * parse_number from cvs head with *read-base* fixes
 +  * fix object_to_string
 +  * install xgcl-2/sysdef.lisp
 +  * fix info dir and emacs site lisp dir installation
 +  * New xgcl readme
 +  * Remove bashism from debian/rules, Closes: #376806, Closes: #385176.
 +  * Fix dwdoc doc-base error, Closes: #385126
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 30 Aug 2006 12:13:46 -0400
 +
 +gcl (2.6.7-18) unstable; urgency=low
 +
 +  * remove emacs build dependency
 +  * synch xgcl-2 with Novak edits
 +  * fix build errors
 +  * Remove power of two limit to MAXPAGE;fix X lib paths
 +  * configure cleanup
 +  * delete-file works on directories;build xgcl the old way;latest xgcl
 +    from Gordon Novak
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 23 Aug 2006 14:19:51 -0400
 +
 +gcl (2.6.7-17) unstable; urgency=low
 +
 +  * Bug fix: "gcl: [INTL:sv] Swedish debconf templates translation",
 +    thanks to Daniel Nylander (Closes: #343695).
 +  * Bug fix: "gcl: French debconf templates translation update", thanks to
 +    Sylvain Archenault (Closes: #344629).
 +  * clean xgcl-2/gmon.out
 +  * cleanup latest gcc type-punning warnings
 +  * defentry C proclamations and xgcl cleanup
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 26 Jun 2006 16:45:09 +0000
 +
 +gcl (2.6.7-16) unstable; urgency=high
 +
 +  * Add missing build dependencies, omit html generation to avoid non-free
 +    dependencies, CLoses: #372574.
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 19 Jun 2006 14:05:59 +0000
 +
 +gcl (2.6.7-15) unstable; urgency=low
 +
 +  * Use internal gettext for bfd
 +  * Restore xgcl2
 +  * Set compiler::*tmp-dir* at runtime
 +  * report tmp-dir setting with system-banner to enable clean -eval -
 +    batch operation; fix listen on socket streams; use (abs (getpid)) in
 +    tmp names for Windows
 +  * fix configure unbalanced quotes
 +  * support for bignums in nth et.al.
 +  * Fix branch cut of atanh
 +  * Fix typep on simple-arrays
 +  * prevent nested free errors
 +  * revert atanh branch cut change
 +  * Fix function documentation wrapping by compile
 +  * cond evalmacro from cvs head
 +  * Fix fixnum declarations in new smallnthcdr/bignthcdr
 +  * fix simple-array typep
 +  * updates for lsp/sys-proclaim
 +  * xgcl integration
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  9 Jun 2006 17:52:22 +0000
 +
 +gcl (2.6.7-14) unstable; urgency=low
 +
 +  * Add mount declaration to plt.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 18 Dec 2005 12:56:51 +0000
 +
 +gcl (2.6.7-13) unstable; urgency=low
 +
 +  * Add feof to plttest.c for macosx
 +  * plt related fixes for macosx
 +  * fix configure
 +  * Cleanup LEADING_UNDERSCORE case in plt.c et.al for macosx et.al.
 +  * pass devices if present in compiler::get-temp-dir, fix disassemble
 +    for new gazonk name pattern
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 17 Dec 2005 15:22:40 +0000
 +
 +gcl (2.6.7-12) unstable; urgency=low
 +
 +  * Fix read-char-no-hang
 +  * Strip emacs warnings when finding site-lisp directory
 +  * mach-o update for latest binutils
 +  * Latext bfd mach-o support from Aurelien
 +  * revert to locbfd default on ppc-macosx
 +  * More ppc macosx fixes from Aurelien
 +  * revert a few macosx changes
 +  * default to void * prototype on my_sbrk for latest macosx pending
 +    Aureliens #ifdef
 +  * Fix plt.h parsing on macosx
 +  * Fix leading_underscore detection on mac
 +  * macosx name mangling fixes
 +  * multi-process safe gazonk names in compiler::*tmp-dir*
 +  * Add underscore-mangled setjmp calls to plttest.c for macosx
 +  * Fix POTFILES.in, Closes: #336207.
 +  * Update templates, Closes: #324636
 +  * New French and Swedish translations, Closes: #333654, Closes: #336757.
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 14 Dec 2005 18:52:49 +0000
 +
 +gcl (2.6.7-11) unstable; urgency=low
 +
 +  * Remove gcc-3.3 for arm in debian/rules
 +  * make default maxpage depend on SIZEOF_LONG and PAGEWIDTH in a sane
 +    fashion
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 20 Oct 2005 00:08:37 +0000
 +
 +gcl (2.6.7-10) unstable; urgency=low
 +
 +  * Fix long-call gcc configure bug for ppc, add fdollars in 
 +    identifiers on arm
 +  * remove gcc restrictions on arm
 +  * revert 64bit coersion (gmp_big.c, maybe_replace_big) and replace with
 +    code in siLnani (main.c) to get addresses from bignums.  2.7.0 will
 +    have 64bit fixnums on 64bit machines, but this should not be
 +    backported to 2.6.x
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 12 Oct 2005 23:11:12 +0000
 +
 +gcl (2.6.7-9) unstable; urgency=low
 +
 +  * 64bit fixnum fasd data format fix from cvs head
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed,  5 Oct 2005 18:49:50 +0000
 +
 +gcl (2.6.7-8) unstable; urgency=low
 +
 +  * Fix 64bit fixnum coersion bug using code from cvs HEAD
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 30 Sep 2005 22:14:38 +0000
 +
 +gcl (2.6.7-7) unstable; urgency=high
 +
 +  * Scan .o file for init name when using dlopen
 +  * Set init name using .o file instead of source file by default
 +  * wrap-literals function from cvs head to allow optimizations using
 +    compile or compile-file
 +  * ADDR_NO_RANDOMIZE fix
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 29 Sep 2005 17:50:56 +0000
 +
 +gcl (2.6.7-6) unstable; urgency=high
 +
 +  * Build bfd snapshot locally, Closes: #318681
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 20 Sep 2005 17:53:17 +0000
 +
 +gcl (2.6.7-5) unstable; urgency=high
 +
 +  * gcc-3.3 for arm
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 15 Sep 2005 20:33:00 +0000
 +
 +gcl (2.6.7-4) unstable; urgency=high
 +
 +  * gcc 3.4 on arm to work around reserved '$' identifiers.
 +  * gcl: French translation update
 +  * French translation added, Closes: #325214
 +  * Czech translation added, Closes: #325869
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 15 Sep 2005 13:45:11 +0000
 +
 +gcl (2.6.7-3) unstable; urgency=low
 +
 +  * static wraper for compiled_regexp for ia64
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 10 Sep 2005 11:26:37 +0000
 +
 +gcl (2.6.7-2) unstable; urgency=high
 +
 +  * rebuild against libgmp3c2, Closes: #323765
 +  * 2.6.7 fixes all gcc 4.0 issues.  Closes: #323979
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 24 Aug 2005 00:44:48 +0000
 +
 +gcl (2.6.7-1) unstable; urgency=high
 +
 +  * Fix (listen) with readline on
 +  * fix control-d with readline
 +  * libreadline5 support for Debian
 +  * Support for pre-compiled regexps and new texinfo format
 +  * Reenable run-process
 +  * Push function 'accept  into lisp, use select for 'listen on socket
 +    streams
 +  * New Upstream release version
 +  * Native-reloc feature
 +  * Add daemon capabilities to server sockets, document socket and
 +    accept
 +  * Some gcl-tk fixes
 +  * Update wrapt-literals strategy to be consistent with CVS head --
 +    wrap evreything but symbols and integers, don't wrap when keeping
 +    the gazonk files for linking in different images, this is really a
 +    compile-file operation
 +  * gcltk demo cleanups
 +  * Probe-file, open_stream, and the like fail on directories
 +  * Resolve symlinks in truename
 +  * Place prototypes for defcfun in header files
 +  * Support for unique init names for compiler::link and the like
 +  * libreadline5 for Debian
 +  * remove _o from init-names
 +  * gcc-4.0 fixups
 +  * Bug fix: "gcl: depends on binutils-dev &lt;&lt;= 2.1.5-999), so
 +    uninstallable in unstable", thanks to Steve Langasek (Closes:
 +    #318681).  Rebuild with new release to autocompute this dep
 +  * Bug fix: "gcl: Please switch to po-debconf", thanks to Lucas Wall
 +    (Closes: #295930). Apply po-debconf patch
 +  * Newer standards
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 11 Aug 2005 15:00:26 +0000
 +
 +gcl (2.6.6-1) unstable; urgency=high
 +
 +  * New upstream release
 +  * Allow .data section to be first in executable, as on solaris.  Also
 +    allow for new bfd section size semantics
 +  * Don't try to write map file when not using GNU ld.  Also allow
 +    compile-file to process pathnames with whitespace on Windows
 +  * Fix corner case fixnum arithmetic on 64bit machines
 +  * Rework gmp_wrappers semantics for older gcc
 +  * Explicitly mprotect loaded code pages PROT_EXEC on x86 Linux, as FC3
 +    now requires it.
 +  * lisp-implementation-version is GCL
 +  * Reader extension patch allowing for foo::(bar foobar) semantics
 +  * a shell script variable fix in "unixport/makefile" for MSYS
 +  * __MINGW32__ malloc initialisation fix in "o/alloc.c"
 +  * Windows file/directory fixes in "o/unixfsys.c"
 +  * MinGW32 -march in configure - removes deprecation warnings
 +  * MinGW32 directory fix - "o/mingfile.c".
 +  * Allow for sysconf to determine clock granularity at compile time to
 +    fix time errors on the Itanium
 +  * Disable SGC on macosx until the sgc/save problem can be fixed.
 +  * Fix fixnum print bug on 64bit
 +  * Fix nil types in room report
 +  * 64bit fixes to fixnum_add and fixnum_sub
 +  * Fix Mac SGC/save bug, at least in part
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 16 Jan 2005 02:28:50 +0000
 +
 +gcl (2.6.5-1) unstable; urgency=high
 +
 +  * New gmp_wrappers.{c,h} files that prevent all GBC within gmp,
 +    obviating the need for gmp patches and a local gmp configure.  FIXME
 +    -- extend to all gmp functions in a systematic way, and write header
 +    information for future use in the compiler, making sure that plt.c
 +    carries the needed gmp symbols at this point
 +  * Build support for gmp_wrappers
 +  * Support for gmp_wrappers in alloc_relblock/alloc_contblock;Support
 +    for GCL_GPROF_START define in gprof functions
 +  * dynsysgmp on by default; configure backs off to local gmp configure
 +    and build automatically if needed either because gmp not present or
 +    patched symbols are needed; autodetect and set the _start symbol
 +    when using gprof
 +  * Fix (setf (get ...) ...) return bug when interpreted
 +  * Fix overwrite end of sgc_type_map bug
 +  * Versioned depends on binutils-dev manually installed by Debian build
 +    process
 +  * New upstream release
 +  * Proper binutils dependency for Debian
 +  * head -1l -> head -n 1 for freebsd
 +  * Cleanup gmp_wrapper code, check for in-place calls as write in one
 +    step is not guaranteed in gmp according to its developers
 +  * Rebuild against binutils 2.15, Closes: #266253, Closes: #263983
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 17 Aug 2004 18:22:27 +0000
 +
 +gcl (2.6.4-1) unstable; urgency=high
 +
 +  * New upstream release
 +  * Make disassemble work when original system directory is gone
 +  * New debian/support files for debconf image default selection support
 +  * More descriptive compiled C function names for use in gprof when
 +    profiling is compiled in
 +  * Compiler fix for proclaimed vararg functions
 +  * Allow sharp numbers to be bignums
 +  * lintian fix in string-match
 +  * Prototype for alloca for lint
 +  * Improve gprof support
 +  * Improve sgc page allocation which optimize-maximum-pages is in
 +    effect and the hole is overrun
 +  * Build a profiling set of images as well for Debian, toggle between
 +    all four by default via debconf
 +  * reset-sys-paths lisp function for moving image installation
 +    directories, show profiling support in banner if present
 +  * Fix typo in sys docs
 +  * reset sys paths on installation
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu,  5 Aug 2004 22:48:56 +0000
 +
 +gcl (2.6.3-1) unstable; urgency=high
 +
 +  * Correctly parse gcc version strings in gmp3 subconfigure on arm
 +  * Fix variable capture error in dotimes macro
 +  * Better sed separator for LI-CC in unixport/makefile
 +  * Fix segfault in string-match
 +  * vs_top=sup -> (reset-top) where possible in compiler.  FIXME: a few
 +    items of a different form which need to set *sup-used* too.
 +  * Correct room report to show proper percentages when sgc is on
 +  * Read in RELOC environment variable if set as default in debian/rules
 +  * Remove local bfd libraries from libs variables as their objects are
 +    incorporated into libgcl and as the source directory may not be
 +    available at runtime
 +  * Remove pcl/pcl_gazonk*lsp build-generated files from source
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 15 Jul 2004 14:26:44 -0400
 +
 +gcl (2.6.2-3) unstable; urgency=low
 +
 +  * Fix value stack leak in rare compiled call sequence
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 13 Jul 2004 10:17:02 -0400
 +
 +gcl (2.6.2-2) unstable; urgency=low
 +
 +  * New upstream point release
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 13 Jul 2004 10:08:53 -0400
 +
 +gcl (2.6.2-1) unstable; urgency=low
 +
 +  * gcc-3.4 support
 +  * Proper isnormal default courtesy of Magnus Henoch
 +  * gclclean makefile target and other small makefile changes
 +  * Proper check for C stack array body address in gbc.c and sgbc.c
 +  * New upstream release
 +  * acconfig.h update for isnormal default
 +  * Fix bug in setting elements (si::aset) of 0 rank arrays uncovered by
 +    the random tester
 +  * No -fomit-frame-pointer on mingw
 +  * Backport minimal ansi-test patches from HEAD to enable running of
 +    the random tester
 +  * installed tcl/tk patch for mingw
 +  * Fix banner license detection code in lsp/gcl_mislib.lsp as
 +    8features* entries are now keywords
 +  * o/makefile changes to work around trailing slash -I arguments gcc
 +    bug on mingw
 +  * Patch to mingwin.c:fix_filename to close long standing 'maxima
 +    ignore-errors filename corruption' bug on mingw
 +  * Check for too large rank supplied to make-array1
 +  * Fix potential stack overwrite bug in quick_call_sfun/eval.c
 +  * Add -mprferred-stack-boundary=8 on amd64, as constant integers used
 +    in a call must be retrievable with va_arg(,fixnum)
 +  * Revert preferred-stack-boundary option on amd64 as it does not play
 +    well with external libraries, also eliminate -m64 to allow for user
 +    settings.  Cast fixnum constant C arguments in gcl_cmploc.lsp
 +    explicitly to (long) to ensure they can be extracted via
 +    va_arg(,fixnum)
 +  * reenable SA_SIGINFO on amd64 to restore SGC there
 +  * Include elf.h in FreeBSD.h
 +  * Allow for elf_abi.h in FreeBSD.h
 +  * Add README.openbsd file
 +  * readme.mingw updates
 +  * solaris.h updates for custreloc option
 +  * Close possibility of malloc failure due to intervening gbc arising
 +    from the misordering of allocation calls
 +  * C_GC_OFFSET is 2 on m68k-linux
 +  * Add release notes, remove gcl document presumably based on dpANS for
 +    now
 +  * Fixup bad extern declaration of signals_handled in usig.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 25 Jun 2004 22:43:52 +0000
 +
 +gcl (2.6.1-39) unstable; urgency=high
 +
 +  * Fix segfault in referencing (sgc_)type_map out of bounds which can
 +    occurr when C stack is below heap, as on alpha.
 +  * Cleanup compiler warnings on bcmp.c bzero.c and bcopy.c
 +  * Clean up compiler warning in file.d
 +  * Ensure set TLDFLAGS are used in finding DBEGIN in copnfigure.in, for
 +    OpenBSD
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  7 May 2004 21:50:03 +0000
 +
 +gcl (2.6.1-38) unstable; urgency=low
 +
 +  * Make *features* entries keywords -- add canonical host cpu and
 +    kernel-system to *features*, disable h files specific
 +    ADDITIONAL_FEATURES macro in main.c
 +  * Fix merge-pathanames bug in concatenating default and supplied
 +    directory lists
 +  * Minor pathname and *features* fixes
 +  * Fix recently introduced configure.in syntax bug
 +  * Minor patches to support big gcl images -- all page integers must be
 +    long ints, need stack space limits that scale with MAXPAGES at least
 +    to allow free_map stack array in sgc_start.  FIXME -- right now can
 +    handle situations where page numbers are ints, but npage*PAGESIZE is
 +    a long, need to handle npage >MAX_INT later.  This is to support the
 +    'billion cons element acl2 image' requested by a gcl user
 +  * Revert winnt features and debugging aids in configure.in
 +  * OpenBSD support, gcc warning cleanups for long page integers
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  3 May 2004 21:34:57 +0000
 +
 +gcl (2.6.1-37) unstable; urgency=high
 +
 +  * mprotect pages PROT_EXEC as CLEAR_CACHE step on amd64-linux
 +  * Prevent recursive malloc calls for OpenBSD error reporting
 +  * Push dummy 0 time for child runtime on windows to be compatible with
 +    other platforms for now
 +  * Make sure pages are mprotected PROT_EXEC for amd64 support
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 13 Apr 2004 21:00:22 +0000
 +
 +gcl (2.6.1-36) unstable; urgency=low
 +
 +  * Improve optimize-maximum-pages algorithm
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue,  6 Apr 2004 03:23:40 +0000
 +
 +gcl (2.6.1-35) unstable; urgency=low
 +
 +  * Fix sigcontext autodetection on sparc
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun,  4 Apr 2004 19:26:48 +0000
 +
 +gcl (2.6.1-34) unstable; urgency=low
 +
 +  * Fix GNU_LD autodetection in configure.in
 +  * Eliminate C_INCLUDE_PATH from shell script wrapper
 +  * Use lisp rather than 'system touch' to make empty map file in
 +    compiler::link
 +  * fix small bug when info is passed bad second argument
 +  * Don't try to open map file if doesn't stat (macosx)
 +  * Add earlier forgotten branch patch to sfaslbfd.c for macosx
 +  * Backport new eval-when keyword support from 2.7 to run random tester
 +  * Perhormance improvement to gcl_seqlib.lsp -- no inner loop over
 +    bignums
 +  * Proper contblock/relblock determination when expanding string
 +    streams
 +  * Proper string type determination for *link-array*
 +  * .ini files depend on plt.h
 +  * plttest.c cannot depend on include.h
 +  * Address longstanding FIXmE in gensym, so that two strings are not
 +    allocated for each gensym
 +  * Fix rare infinite loop bug in array.c
 +  * Import si::info into 'user
 +  * , -> # as sed separator
 +  * Minro warning removals and fixups
 +  * Binary searches through ordered arrays of referred and changed
 +    variables for dramatic compiler performance improvement in the large
 +    case -- support declarations and thereby optimizations of the form
 +    (declare ((vector t) foo)), etc.
 +  * Better 'time macro
 +  * rebuild pcl_gaz* files
 +  * cleanup room report and give more space to modern large heaps
 +  * room report formatting
 +  * Properly gensymmed time macro
 +  * Allow for white space chars in compiled filenames
 +  * Autodetect and work around sbrk randomization, e.g. on Fedora 1
 +  * Probe for sbrk before probing for randomized sbrk
 +  * Openbsd changes -- maximize data seg resource if possible, avoid
 +    mallocing error message when allocation routines fails
 +  * Fix sigcontext configure tests
 +  * Rename loop-finish -> sloop-finish in sloop package so that sloop
 +    and ansi loop can be used simultaneously
 +  * Handle arguments which are zero in LCM
 +  * Fix typo in configure.in
 +  * Improved dotimes macro which avoids unnecessary fixnum garbage
 +    generation
 +  * Backport of ignorable declaration keyword for new dotimes macro
 +  * si::*OPTIMIZE-MAXIMUM-PAGES* support
 +  * rebuild pcl generated lisp files
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat,  3 Apr 2004 19:27:18 +0000
 +
 +gcl (2.6.1-33) unstable; urgency=low
 +
 +  * Remove extraneous symbols from plt.h, autodetect and correct for
 +    leading underscore in object symbols
 +  * complete readline version detection commit
 +  * Backport support for new eval-when keywords
 +  * Autodetect GNU ld and add -Wl,-Map only when appropriate
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 10 Mar 2004 22:51:44 +0000
 +
 +gcl (2.6.1-32) unstable; urgency=low
 +
 +  * Try to automatically determine the form used for the explicitly
 +    compiled in external function addresses in plt.c
 +  * No need to explicitly write cr-lf on windows
 +  * Autodetection of machine on FreeBSD
 +  * Updated defs and h files for FreeBSD courtesy of Mark Murray
 +  * Minor ifdefs needed for FreeBSD
 +  * Refer to exported non-static C stub of fSmake_vector1 in plt.c
 +    (needed on ia64)
 +  * Readline 4.1/4.3 configure magic
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue,  9 Mar 2004 01:58:43 +0000
 +
 +gcl (2.6.1-31) unstable; urgency=low
 +
 +  * Adjustments to vs_top reset logic to clear (hopefully last)
 +    remaining bug found by the random-tester
 +  * Allow args-info-referred-vars to match replaced vars, clearing bug
 +    report submitted by Matt Kauffman
 +  * Rework plt code yet again to be compatible with compiler::link for
 +    axiom, and mingw32
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  8 Mar 2004 12:16:46 +0000
 +
 +gcl (2.6.1-30) unstable; urgency=low
 +
 +  * Fix rsym generated symbol tables for 64 bit platforms
 +  * Make sure 'unwind' in frame.c does nt go below frs_org
 +  * Do not define symbols with no value, either in bfd/rsym, or in
 +    plt.c.  Generates a clear and explicit error of an undefined symbol
 +    when we've missed an address
 +  * Define the external symbols known to be written at present in plt.c
 +  * fix some more compiler errors found by the random tester -- all
 +    related to proper unwinding of temporary reductions of vs_top from
 +    te local supremum
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat,  6 Mar 2004 02:05:59 +0000
 +
 +gcl (2.6.1-29) unstable; urgency=low
 +
 +  * Remove implicit dependency on gawk, optimize plt.c a little
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed,  3 Mar 2004 16:08:30 +0000
 +
 +gcl (2.6.1-28) unstable; urgency=low
 +
 +  * make sure bfd fasload initializes dum.sm.sm_object1 for
 +    read_fasl_vector
 +  * When a tagbody contains ccb reference tags, and hence i itself
 +    marked ccb, mark all the clb tags therein ccb too, as the tagbody
 +    environment will be consed in c2tagbody-ccb.  FIXME -- review this
 +    logic carefully
 +  * fix typoe in o/sfaslbfd.c
 +  * Add code to unwind redefinitions of the stack supremum in c2expr-top
 +    (used in c2multiple-value-prog1 and c2multiple-value-call in
 +    evaluating arguments) on non-local exit
 +  * Use new temporarry variables holding lisp stack  supremum for lint
 +  * Eliminate extraneous warning message when allocating fewer pages
 +    than already allocated
 +  * Rework internal plt symbol address capture
 +  * Cleanup sfaslelf compiler warning
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed,  3 Mar 2004 00:27:08 +0000
 +
 +gcl (2.6.1-27) unstable; urgency=low
 +
 +  * Modify default banner slightly
 +  * Homebrew plt-like mechanism for ensuring that valid internal
 +    addresses exist to which undefined symbols in compiled lisp objects
 +    referring to external shared libraries can be relocated
 +  * Make configure demand gettext when choosing --enable-locbfd
 +  * Make sure references to ldb1, a stub conventionally optimized away,
 +    can be resonled when optimization is turned off
 +  * completion_matches ->  rl_completion_matches in gcl_readline.d,
 +    which is what is exported in the headers
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 27 Feb 2004 23:50:49 +0000
 +
 +gcl (2.6.1-26) unstable; urgency=low
 +
 +  * Rework compiler::*ld-libs*, compiler::link, and unixport/makefile to
 +    accomodate mingw need for firstfile.o and lastfile.o
 +  * Remove incompatible -fomit-frame-pointer when compiling with -pg
 +    profiling
 +  * Load sys-proclaim.lisp files forimproved linking and smaller object
 +    size across the board, install same for use with compiler::link
 +  * Use pathnames instead of strings in compiler::link, also in image
 +    init files, for Windows
 +  * small mod to unixport/makefile re filtering of firstfile and
 +    lastfile
 +  * Backport zero divisor error cnditions from HEAD for
 +    floor,ceiling,truncate
 +  * Default to debug mode on hppa to work around gcc compiler
 +    optimization bugs
 +  * Add missing m4 and automake files in binutils directory to enable
 +    automake and autoconf here
 +  * Add mach-o specific files from cvs head to local bfd tree
 +  * Add bfd/po makefiles
 +  * Macosx defaults in configure.in
 +  * bfd make and configure file changes to handle mach-o backend
 +  * *gcl-version* -> *gcl-minor-version*,*gcl-extra-version*
 +  * Support for more informative banner reading features list
 +  * Support for both sigbus and sigsegv in sgbc.c as is customary in .h
 +    files
 +  * mach-o compatible changes in sfaslbfd.c
 +  * Support for new debugging section names in sfaslelf.c
 +  * powerpc-macosx h and defs files from cvs head
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 25 Feb 2004 23:08:59 +0000
 +
 +gcl (2.6.1-25) unstable; urgency=low
 +
 +  * rl_putc_em a carriage return after invoking readline to ensure the
 +    prompt in rl_putc_em_line is cleared.
 +  * use standard sgc fault recovery element for hppa as recommended by
 +    hppa kernel experts
 +  * Store banner in si::*system-banner* for possible modification
 +  in compatibly licensed programs
 +  * exit with -1 when standard in ends in lisp debug mode
 +  * Backport macosx files from cvs HEAD
 +  * Document system return codes
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 13 Feb 2004 20:44:54 +0000
 +
 +gcl (2.6.1-24) unstable; urgency=low
 +
 +  * Revert unixport/makefile link order fix for windows, breaks
 +    compiler::link, find another way
 +  * runtime SGC fault recovery test
 +  * Protect read/fread in case SGC is enabled with safe (restartable)
 +    versions
 +  * SGC on for arm and hppa
 +  * remove fast-link workaround now fixed for windows
 +  * Backport HEAD makefile changes to clean .{c,h,data} files and
 +    new_decl.h, remove said from repository (generated files)
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 12 Feb 2004 05:56:29 +0000
 +
 +gcl (2.6.1-23) unstable; urgency=low
 +
 +  * Remove calls to init-readline with new automatic readline setup
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 27 Jan 2004 20:27:20 +0000
 +
 +gcl (2.6.1-22) unstable; urgency=low
 +
 +  * Build depend on emacs21 | emacsen
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 23 Jan 2004 22:01:15 +0000
 +
 +gcl (2.6.1-21) unstable; urgency=low
 +
 +  * Automatic readline initialization
 +  * Add watch file
 +  * Prevent circular error loops
 +  * Prevent automatic optimization added to CFLAGS by autoconf
 +  * Rework documentation installation in and outside of Debian
 +  * Support user deined predicates at an elementary level in the form
 +    '(satisfies foop) in gcl_predlib.lsp
 +  * Install binary gcd algorithm for ~10% performance increase
 +  * Rescale some default allocation parameters -- bignum allocation by
 +    relblocks by default, default growth parameters are 1 (min),
 +    0.1*MAXPAGE (max), 0.5 (increase), 0.3 (percent free), holepage is
 +    4*MAXPAGE/1024, INIT_HOLEPAGE, INIT_NRBPAGE and RB_GETA scale
 +    accordingly
 +  * Clean windows/sysdir.bat
 +  * Check for zero args in new gcd code
 +  * Default hole is maxpages/10, holesize configure option added
 +  * Fix syntax errors in older reloaction code: sfaslelf.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 16 Jan 2004 16:57:50 +0000
 +
 +gcl (2.6.1-20) unstable; urgency=low
 +
 +  * Fix gcl-doc doc-base files
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 30 Dec 2003 22:30:39 +0000
 +
 +gcl (2.6.1-19) unstable; urgency=low
 +
 +  * Fix bug in compiler::c2labels in which *ccb-vs* was missing a ocal
 +    rebind
 +  * Remove duplicate tags from compiled C switch statements
 +  * Minor merges for DARWIN support
 +  * Path to configure to make --enable-emacsdir work
 +  * Check for readline/readline.h header before configuring for readline
 +  * Improve system bfd library location detection
 +  * Make sure external gmp lib is compatible via __GNU_MP_VERSION, else
 +    backoff to local gmp build;  prepend externally defined CFLAGS into
 +    output CFLAGS, FINAL_CFLAGS, and NIFLAGS
 +  * Remove --enable-gmp configure option; gmp is required for GCL
 +  * Use --enable-emacsdir in debian/rules, make sure --enable-emacsdir
 +    and --enable-infodir work when arg contains ${prefix}
 +  * Fix typo in chap-6.texi
 +  * Make sure to export SGC define from config.h to cmpinclude.h -- Now
 +    that we used optimized structures in the compiler, we need at least
 +    the definition of SGC_TOUCH there to prevent GBC errors.  FIXME --
 +    handle header dependencies more robustly.  Thanks to Robert Boyer
 +    for the report
 +  * Improve SGC define extraction for cmpinclude.h
 +  * Fix variable reference errors which were occurring for compiled
 +    local functions defined within closure-generating or other
 +    environment stack pushing functions when safety is set to 3 (thanks
 +    Paul Dietz for the report.).  When constructing local functions and
 +    closures within a 'mother' function, *ccb-vs* will hold the number
 +    of closure environments stacked at the point of each closure
 +    creation or call to a local function.  This value is stored as the
 +    cadr of a list pushed onto *local-funs*, and is read when writing
 +    out the C code for the local function or closure, where it is used
 +    to initialize *ccb-vs* and *initial-ccb-vs* for subsequent
 +    processing.  The latter is used as the reference point when
 +    addressing variables in wt-ccb-vs, as the former could be still
 +    further incremented within the closure or local function itself.
 +    Local functions as opposed to closures do not increment *ccb-vs* and
 +    do not push the environment.  When a local function is defined
 +    within a closure-generating flet/labels, or a tagbody or block which
 +    pushes the environment, the value of *ccb-vs* written to the list
 +    corresponding to the local function can be erroneously incremented
 +    beyond the *initial-ccb-vs* value established before any environment
 +    pushing operations were processed.  It is this latter value which is
 +    appropriate for use in wt-ccb-vs, as the local functions, unlike the
 +    closures, receive an environment level with the mother generating
 +    function.  We therefore push *initial-ccb-vs* onto the end the list
 +    pushed onto *local-funs* only when defining a local function, and use
 +    it to initialize an added optional variable initialize-ccb-vs in
 +    t3local-fun and t3local-dcfun, which default to the original ccb-vs.
 +    We then bind *initial-ccb-vs* to this new optional parameter instead
 +    of the former *ccb-vs, which was only appropriate for closures.
 +  * Put in rudimentary logic for the selection of stack vs. heap storage
 +    for bignums depending on the frame context.  FIXME, this logic is
 +    too conservative at present.  SETQ_II and SETQ_IO take an additional
 +    parameter which is malloc when *unwind-exit* is bound and contains
 +    'frame and  alloca otherwise.  New macro bignum-expansion-storage.
 +    FIXME, ensure that IDECL does not need similar modification.
 +  * Cleanup a few compiler warnings in the compiler
 +  * Cleanup compiler warning in alloc.c
 +  * Eliminate unneeded transformatio of contniguous pages to other pages
 +    on save-system.
 +  * malloc -> gcl_gmp_alloc in recent setjmp frame protected bignum
 +    allocation
 +  * Add -Wa,--execstack if on an exec-shield enabled system, can be
 +    explicitly added otherwise by setting the CFLAGS variable before the
 +    configure step
 +  * Better execstack flag handling in configure
 +  * Allow for commas in CFLAGS in sed command writing *cc*
 +  * Preliminary gprof profiling support
 +  * Rework html documentation generation and installation, Closes:
 +    #221774
 +  * Remove parentheses from setf class-name info node in chap-7.texi
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 30 Dec 2003 16:26:45 +0000
 +
 +gcl (2.6.1-18) unstable; urgency=low
 +
 +  * Portability patches to makefiles to support non-GNU grep (no -q),
 +    and non-bash sh, C_INCLUDE_PATH=...;export C_INCLUDE_PATH
 +  * copy the global *info* parameter in c1flet and c1labels to prevent
 +    accumulation of old data -- FIXME -- make sure there are no other
 +    copies required, and eventually replace this global parameter with
 +    local variables
 +  * Turn on some optimization on hppa, -O only
 +  * Make all C defined functions installed into lisp static functions to
 +    work around dynamic function descriptors on ia64, Closes: #217484,
 +    Closes: #204789, (STATIC_FUNCTION_POINTERS define in config.h)
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu,  6 Nov 2003 15:40:25 +0000
 +
 +gcl (2.6.1-17) unstable; urgency=low
 +
 +  * Repair weak symbol addition to the bfd symbol table in sfasli.c
 +  * Be more thorough about adding fun-info to call-local info in
 +    gcl_cmpflet.lsp, accompanying simplifications in gcl_cmpeval.lsp
 +    (call-global lists have info updated by args already in (c1args args
 +    info)), small changes in add-info in gcl_cmpinline.lsp, FIXME --
 +    study rational for *info* special variable in certain places as
 +    opposed to more common copy-info
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 30 Oct 2003 20:03:22 -0500
 +
 +gcl (2.6.1-16) unstable; urgency=low
 +
 +  * Fix sh syntax in debian/gcl.sh
 +  * init_or_load1 -> gcl_init_or_load1 in xgcl-2/sysinit.lsp
 +  * Load weak symbols as well as undefined symbols in
 +    bfd_build_symbol_table, for the purposes of the static build
 +    possibility
 +  * Map t and nil stream indicators properly in optimized compiled
 +    references to read_char1 and read_byte1 (in read.d)
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 23 Oct 2003 16:43:15 +0000
 +
 +gcl (2.6.1-15) unstable; urgency=low
 +
 +  * Remove imod/ifloor functions in cmpaux.c and directly inline their
 +    fixed equivalents in gcl_cmpopt.lsp
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 13 Oct 2003 15:04:24 +0000
 +
 +gcl (2.6.1-14) unstable; urgency=low
 +
 +  * generate less garbage in add-info (gcl_cmpinline.lsp), enabling
 +    maxima compile to complete in a finite time :-)
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 10 Oct 2003 22:14:04 +0000
 +
 +gcl (2.6.1-13) unstable; urgency=low
 +
 +  * Fix compiler optimization bug in gcl_cmpopt.lsp -- missing parens
 +    around inliner for max and min
 +  * collect info structures for local functions in flet and labels
 +    processing (gcl_cmpflet.lsp), and pass upwards to call-local and
 +    call-global (gcl_cmpeval.lsp) to fix certain inlining bugs in via
 +    more proper operation of args-info-changed-vars (gcl_cmpinline.lsp,
 +    inline-args, gcl_cmplet.lsp, c2let)
 +  * Fix an obviou int overflow in ifloor (o/cmpaux.c), handle more
 +    proper fixnum/integer determination from declarations later
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 10 Oct 2003 02:34:11 +0000
 +
 +gcl (2.6.1-12) unstable; urgency=low
 +
 +  * Restore mpz_to_mpz{1} in gmp_big.c, can be written by compiler
 +  * tk8.4 patches
 +  * Prevent destructive modification of bignum arguments in log_op/mp_op
 +    in gmp_big.c
 +  * Make sure to push stack variables onto newly allocated C variable
 +    when inlining args and args cause side effects, in inline-args,
 +    gcl_cmpinline.lsp
 +  * Fix bug related to gcc-3.3 fixes in set_exponent in num_co.c
 +  * Remove pcl_methods.c patch. as is apparently no longer needed, TODO
 +    -- make sure VOL modifier is inserted where needed to prevent
 +    longjmp clobbers
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu,  2 Oct 2003 14:26:43 +0000
 +
 +gcl (2.6.1-11) unstable; urgency=low
 +
 +  * Add compilation step of compiling all lsp and cmpnew .lsp files from
 +    an interpreted only saved_pre_gcl before the creation of saved_gcl -
 +    - this enables us to use full optimization on these files while
 +    getting the STREF constants right on 32bit and 64bit
 +  * remove 'attic' from comment in gcl_loop.lsp
 +  * configure changes for sizeof(struct contblock) detection
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 24 Sep 2003 16:09:44 +0000
 +
 +gcl (2.6.1-10) unstable; urgency=low
 +
 +  * Mac OSX GET_FULL_PATH_SELF
 +  * Preliminary subtypep checking for 'satisfies
 +  * preliminary 'satisfies support in subtypep, more predicate type
 +    pairs and reverse checking
 +  * small compiler change to remove unused C variables from optimized
 +    compiled macros
 +  * Optional compiler init file is called gcl_cmpinit
 +  * fasdmacros.lsp -> gcl_fasdmacros.lsp
 +  * All cmpinit.lsp files named gcl_cmpinit.lsp; allow full lisp
 +    optimization in all directories
 +  * collectfn -> gcl_collectfn in lsp/gcl_auto.lsp
 +  * collectfn -> gcl_collectfn in cmpnew/gcl_make-fn.lsp
 +  * Make sure makefiles can generate sys-proclaim.lsp, regenerate these
 +    files and recompile from lsp
 +  * Rebuild with opts enabled
 +  * Iterate sys-proclaim/rebuild generation once more
 +  * Iterate sys-proclaim/rebuild for pcl and clcs
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 23 Sep 2003 19:33:27 +0000
 +
 +gcl (2.6.1-9) unstable; urgency=low
 +
 +  * Close streams in fasldlsym.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 16 Sep 2003 14:57:20 +0000
 +
 +gcl (2.6.1-8) unstable; urgency=low
 +
 +  * Add processor flag variable to flags in configure.in
 +  * Autoadd full path to kcl_self to enable save-system when user moves
 +    executable and calls without script wrapper
 +  * Add special variables si::*collect-binary-modules* and si::*binary-
 +    modules* as a facility for discovering the list of fasloaded objects
 +    preceding a save-system is required for a subsequent compiler::link
 +  * Add collectfn.lsp to distro
 +  * Rename some files and init_ functions to eliminate namespace
 +    conflicts when building images with compiler::link
 +  * Enable compressed info reading
 +  * Make sure no opt flags are set when enable debug is specified
 +  * Use NIFlAGS to compile new_init with lower opts on ppc to work
 +    around gcc bug, restore full opts to other files
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 14 Sep 2003 02:18:28 +0000
 +
 +gcl (2.6.1-7) unstable; urgency=low
 +
 +  * Fix permissions bug in temporary gzipped file handling
 +  * Propagate control changes correctly with package extension
 +  * Newer standards
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue,  9 Sep 2003 17:06:56 +0000
 +
 +gcl (2.6.1-6) unstable; urgency=low
 +
 +  * Remove build-dependency on autoconf as a temporary work around to
 +    Debian autoconf's dependency bug on emacsen-common
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue,  9 Sep 2003 15:29:06 +0000
 +
 +gcl (2.6.1-5) unstable; urgency=low
 +
 +  * Redefine temporary files in elisp/makefile
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  8 Sep 2003 21:49:09 +0000
 +
 +gcl (2.6.1-4) unstable; urgency=low
 +
 +  * Fix to sfasli.c to avoid defining symbols in other than *UND*
 +    sections
 +  * Remove some 64 bit warnings
 +  * Turn off def_static on ia64 for now -- its broken
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat,  6 Sep 2003 17:22:10 +0000
 +
 +gcl (2.6.1-3) unstable; urgency=low
 +
 +  * Fix static detection fr ia64; contblock size detection on arm
 +  * Fix gcc verion checking in gmp3 subconfigure, esp. for arm
 +  * Escape all sgc code with #ifdef SGC
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  5 Sep 2003 21:32:47 +0000
 +
 +gcl (2.6.1-2) unstable; urgency=low
 +
 +  * Add windows/install.lsp to clean target
 +  * Add in macosx files to stable and cvs head
 +  * Fix bad debelper postinst, Closes: #208765
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  5 Sep 2003 13:15:11 +0000
 +
 +gcl (2.6.1-1) unstable; urgency=low
 +
 +  * New upstream release
 +  * Type-punning warning fixes
 +  * small_fixnum overflow fixes
 +  * off by one fix in cerror
 +  * Fix compiler error which had not recognized defpackage as a package
 +    operation
 +  * Fix tkl.lisp call to open-named-socket
 +  * Make values-list and nreconc signal errors when they should on
 +    dotted lists.
 +  * Avoid use of windows.h types as macros.
 +  * New config.{sub,guess}
 +  * Windows installer updates from CVS HEAD
 +  * fix potential longjmp clobber in read.d;add some windows files to
 +    main makefile clean target;
 +  * Darwin revealed fixes to usig.c and unixtime.c
 +  * Fix gbc time calculation in case of recursive gbc calls
 +  * Run patch_sharp in LSharp_exclamation_reader to handle new case of
 +    defpackage ops at head of fasl vector, required for maxima build
 +  * Special symbol Dotnil has ordinary list Cnil for plist and hpack
 +  * Small fixes for profiling support
 +  * Restore pp() function for debugging; print out undefined symbol
 +    names
 +  * Small patch for fix xgcl demo (thanks  Michael Koehne)
 +  * Better bfd symbol table strategy
 +  * Fix bfd table symbol counting for combined_table profiling
 +  * amd64 linux support
 +  * O6 -> O3
 +  * static linking on ia64 to work around current mechanism for runtime
 +    generated function descriptors
 +  * enable-static configure option
 +  * Fix debian/gcl-doc.docs for latest texinfo file splitting policy,
 +    Closes: #206017
 +  * Fix typo in o/sfasli.c
 +  * Rework debian package structure to handle stable and cvs packages
 +    simultaneously
 +  * Add gazonk*.lsp to clean target
 +  * syntax fix to lsp/gprof.hc
 +  * Add support for SGC contblock pages
 +  * Fixes to debian/rules
 +  * Remove unused definitions of Vcs
 +  * Increase default maxpages and stack sizes
 +  * Maintain a persisten *system-directory* binding
 +  * Push installed /h directory onto -I flags on cc command line
 +  * Escape old in-package behavior with #ifdef ANSI_COMMON_LISP
 +  * define HAVE_XDR in linux.h
 +  * reduce resolution of contblock mark_table in gbc.c to match new
 +    minimum granularity introduced via CPTR_ALIGN
 +  * Remove exit function in main.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu,  4 Sep 2003 02:20:52 +0000
 +
 +gcl (2.5.3-2) unstable; urgency=low
 +
 +  * gcc-3.3 all platforms
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  7 Jul 2003 16:10:25 +0000
 +
 +gcl (2.5.3-1) unstable; urgency=low
 +
 +  * New upstream release
 +  * Restore object_to_float and object_to_double, cmpaux.c, Closes: #195470.
 +  * Remove obsolete functiion multiply-bignum-stack from documentation,
 +    si-defs.texi
 +  * Unstatic object_to_float, object_to_double
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  2 Jun 2003 12:38:03 -0400
 +
 +gcl (2.5.2-1) unstable; urgency=low
 +
 +  * New upstream release
 +  * Cleanup xdrfuns.c for Axiom
 +  * Reenable xgcl build
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 20 Mar 2003 09:15:54 -0500
 +
 +gcl (2.5.1-1) unstable; urgency=high
 +
 +  * some optimization now on hppa
 +  * Add RELEASE-2.5.1 file
 +  * Add dedication notice to the memory of W. Schelter
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun,  2 Mar 2003 10:20:26 -0500
 +
 +gcl (2.5.0.cvs20020625-80) unstable; urgency=low
 +
 +  * enable japi configure flag, defaults to no
 +  * enable -mlongcall on ppc when using gcc 3.3 or higher
 +  * int -> fixnum in DEFUN function arguments for safety -- ensures
 +    pointers and integers passed by lisp are of same size
 +  * MYmake_fixnum macro simplification
 +  * ufixnum typedef
 +  * Prototypes for cmod et.al. -- restoring maxima build on ia64
 +  * Fix unaligned access message on ia64 generated by DFLT_aet_fix
 +  * Integer va_arg uses fixnum
 +  * Define __*i3 symbols used by GCL, supplied by libc, and written into
 +    some GCL compiled objects, restores ARM build with ANSI image
 +  * num_log.c miscompilation on ia64 apparently fixed, Closes: #156291
 +  * Ensure cmpinclude.h up to date in main makefile
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat,  1 Mar 2003 17:33:29 -0500
 +
 +gcl (2.5.0.cvs20020625-79) unstable; urgency=low
 +
 +  * Fix Debian package install bug
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 27 Feb 2003 23:17:55 -0500
 +
 +gcl (2.5.0.cvs20020625-78) unstable; urgency=low
 +
 +  * Add config.log config.status and config.cache to clean target
 +  * Remove xgcl-2/debian directory
 +  * Update clcs/sys-proclaim.lisp
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 27 Feb 2003 18:48:38 -0500
 +
 +gcl (2.5.0.cvs20020625-77) unstable; urgency=low
 +
 +  * Lintian cleanups
 +  * Don't strip libansi_gcl.a, need .data at end of .o, as with libgcl.a
 +  * Take newlines out of doc string for init-cmp-anon
 +  * Cleanup gcc-3.2 compiler warning
 +  * 64 bit STREF fixes
 +  * pcl and clcs need to have C rebuilt afresh, as 64 bit machines write
 +    different STREF offsets into the C files
 +  * Rework Debian package build a bit
 +  * README.Debian explaining the toggling of the ANSI image
 +  * Typo in debian/rules
 +  * Remove debian/gcl.conffiles
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 27 Feb 2003 15:56:11 -0500
 +
 +gcl (2.5.0.cvs20020625-76) unstable; urgency=low
 +
 +  * Debian Priority is optional
 +  * Configure lowest common denominator on m68k to m68020 -- gcc-3.2
 +    can't handle m68000 -- no __mulsi3
 +  * Fix bit array bug
 +  * Add upgraded-array-element-type
 +  * Misc typep and subtypep fixes
 +  * Proper error handling in certain array.c functions
 +  * First needs exactly one arg
 +  * Proper error handlin in LAST
 +  * bit array allocation fixes in num_log.c
 +  * eliminate Iapply_fun_n1
 +  * Dummy system find-class in traditional image, overwritten by pcl
 +    version in ANSI
 +  * Invalid variable is a program error, not a symbol is a type error
 +  * Attempt at uninterned symbol support as slot names
 +  * defstruct changes for ANSI conc-name handling
 +  * Rework ansi build to follow existing pattern for traditional image,
 +    enabling preliminary ansi support on dlopen systems
 +  * Fix broken mingw probe in main makefile
 +  * Rename pcl and clcs files to avoid init name conflict on dlopen
 +    systems
 +  * sys-proclaim for clcs
 +  * Compiler goto indentation
 +  * Compiler pointer cast in call_or_link_closure
 +  * *keep-gaz* compiler variable to save anonymously generated lisp
 +  * si::init-cmp-anon function to initialize anonymously generated and
 +    compiled lisp from .text section of running executable
 +  * Debian/rules builds and ships both images
 +  * Check for small fixnum in make_fixnum macro
 +  * Pass real integers to array functions to minimize fixnum garbage
 +  * Larger SHARP_EQ_CONTEXT_SIZE in read.d
 +  * Shadowing-import instead of import dummy symbols into common-lisp in
 +    ansi_cl.lisp
 +  * Rework object definition in makefiles
 +  * Remove old gmp directory
 +  * Remove old tests directory
 +  * Reinsert JAPI configuration
 +  * Spruce up clean target
 +  * Use saved_gcl to recompile cmpnew files
 +  * Toggle ansi image with GCL_ANSI environment variable
 +  * Version 2.5.1
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 26 Feb 2003 21:31:04 -0500
 +
 +gcl (2.5.0.cvs20020625-75) unstable; urgency=low
 +
 +  * Export truename for dlopen systems
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 14 Feb 2003 23:31:15 -0500
 +
 +gcl (2.5.0.cvs20020625-74) unstable; urgency=low
 +
 +  * Remove duplicates in apropos a la clisp
 +  * Use static where possible, remove unused functions, decrease global
 +    symbol count by about 1/3 (~ 600 global functions)
 +  * Inline optimize cmod,cplus,ctimes and cdifference like maxima
 +  * eliminate make-pure-array from lfun_list.lsp, not defined
 +  * Prototypes for all possible compiler generated function calls
 +  * relative symlink for cmpinclude.h in Debian package
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 14 Feb 2003 20:17:31 -0500
 +
 +gcl (2.5.0.cvs20020625-73) unstable; urgency=low
 +
 +  * typep fixes for class types
 +  * m68k Build-depend on gcc-2.95 as a temporary work around to bug
 +    179807
 +  * gcc-3.2 warning cleanups
 +  * bfd_boolean syntax support for newer binutils
 +  * gcc-3.2 on powerpc can't yet handle -O2 and higher
 +  * Reenable gcc-3.2 for m68k and do some guesswork in configure
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 10 Feb 2003 13:47:00 -0500
 +
 +gcl (2.5.0.cvs20020625-72) unstable; urgency=high
 +
 +  * Fix to siLbit_array_op for 0 dimension arrays
 +  * Fixed aref of short-float vector
 +  * nconc can take dotted lists
 +  * tailp returns t if first arg is nil
 +  * Repair nconc and tailp fixes
 +  * varargs->stdarg for gcc 3.3 and higher
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun,  9 Feb 2003 16:57:33 -0500
 +
 +gcl (2.5.0.cvs20020625-71) unstable; urgency=high
 +
 +  * ansi changes to sloop.lsp and conditions.lisp to fix symbol tests
 +  * :definition-before-pcl -> definition-before-pcl
 +  * Allow spaces in pathnames
 +  * Significant fixes to gmp_num_log.c affecting bitwise ops on bignums
 +  * Fix test segfault arising from faulty structure-type-included-type-
 +    name in gcl-low.lisp ; Thanks Peter
 +  * aref1 -> row-major-aref
 +  * Fixes to certain numerical functions to handle denormalized floating
 +    point numbers
 +  * Number of argument check in IapplyVector
 +  * Print offset bit vectors correctly
 +  * Correct precision for formatting short and long doubles
 +  * Added si::modf
 +  * Do not trigger error in IapplyVector if max args is zero
 +  * Fixes to with-package-iterator to cleanup compiler warnings
 +  * :invalid-variable is a type error
 +  * No max arg checking if &key or &rest present
 +  * proper defun declarations in listlib.lsp
 +  * class specifiers in typep, subtypep and coerce
 +  * Corrections to allow-other-key processing in bind.c
 +  * eval sfuns with argument error checking (in one place)
 +  * copy-structure takes only one arg
 +  * si::classp, si::class-of, and si::class-precedence-list overwritten
 +    by pcl analogs when compiling ansi
 +  * recompiled core lsp and compiler files
 +  * restore dvi and html doc build for non-mingw
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 24 Jan 2003 13:55:11 -0500
 +
 +gcl (2.5.0.cvs20020625-70) unstable; urgency=high
 +
 +  * loop fixes
 +  * configure fixes
 +  * :common-lisp in *features*
 +  * :definition-before-clcs -> definition-before-clcs
 +  * protect against sgc segfault within fread in fasdump.c -- fixes m68k
 +    acl2 build
 +  * SGC for s390
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu,  5 Dec 2002 08:02:17 -0500
 +
 +gcl (2.5.0.cvs20020625-69) unstable; urgency=high
 +
 +  * eval fix
 +  * \-mlong-calls for arm
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 25 Nov 2002 08:35:27 -0500
 +
 +gcl (2.5.0.cvs20020625-68) unstable; urgency=high
 +
 +  * enable emacsdir configure option
 +  * reordered configure X lib detection for solaris
 +  * redo integer declarations for gmp bignums to avoid compiler warnings
 +  * Clear large and negative count errors for remove/delete
 +  * Loop error fixes
 +  * cache flush with page granularity on m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 21 Nov 2002 17:44:30 -0500
 +
 +gcl (2.5.0.cvs20020625-67) unstable; urgency=high
 +
 +  * Align cache flushes for powerpc and m68k on 32 byte boundaries,
 +    should fix acl2 build
 +  * Removed diagnostic SIGILL trapping in cmpaux.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 12 Nov 2002 23:25:49 -0500
 +
 +gcl (2.5.0.cvs20020625-66) unstable; urgency=high
 +
 +  * Fix SIGILL trap in cmpaux.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 11 Nov 2002 11:14:07 -0500
 +
 +gcl (2.5.0.cvs20020625-65) unstable; urgency=high
 +
 +  * Miscellaneous Freebsd patches
 +  * non-recursive with-package-iterator
 +  * map-into fill-pointer fixes
 +  * changes to the user-init mechanism for portable acl2 build
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 10 Nov 2002 12:33:59 -0500
 +
 +gcl (2.5.0.cvs20020625-64) unstable; urgency=low
 +
 +  * Fix epsilon calculations again to reenable arm build
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  1 Nov 2002 07:08:33 -0500
 +
 +gcl (2.5.0.cvs20020625-63) unstable; urgency=low
 +
 +  * Add versioned dependency on the gcc used to build gcl
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 29 Oct 2002 16:20:22 -0500
 +
 +gcl (2.5.0.cvs20020625-62) unstable; urgency=low
 +
 +  * with-package-iterator modifications
 +  * with-package-iterator uses labels to correctly provide for recursion
 +  * Fix doc directory problem with install target in info/makefile
 +  * Fix info dir setting in configure
 +  * Priority extra
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 28 Oct 2002 23:45:07 -0500
 +
 +gcl (2.5.0.cvs20020625-61) unstable; urgency=low
 +
 +  * Placeholder support for optional condition in find-restart
 +  * defpackage error on importing non-existent symbols
 +  * working with-package-iterator macro
 +  * various package errors reported as :package-error
 +  * Destructuring-bind fixes
 +  * delete-package error fix
 +  * pcl functions use pcl-destructuring-bind for now -- fix later
 +  * Trigger error if function calls use too many 'values'
 +  * Maximum values increased to 50
 +  * Enable previously failing tests in multiple-value-{setq,prog1}.lsp
 +  * prototype for system_time_zone_helper
 +  * Initial changes for solaris support
 +  * make -> $(MAKE) in makefiles
 +  * Incorporated main GCL (ANSI) Lisp Documentation in distribution
 +
 + -- Camm Maguire <camm@m.enhanced.com>  Mon, 28 Oct 2002 04:31:33 -0500
 +
 +gcl (2.5.0.cvs20020625-60) unstable; urgency=low
 +
 +  * Still better acosh, courtesy of Barton Willis
 +  * Better epsilon contant determination in ieee case
 +  * Implicit tagbody in do-symbols and do-all-symbols
 +  * Better epsilon handling in ieee case
 +  * Add setf (values ... support
 +  * invalid-function errors are type errors
 +  * ecase and ccase take t and otherwise clauses
 +  * ECASE/CCASE test fixes
 +  * setf values fixes to use setf instead of setq when target value is
 +    not a symbol
 +  * ETYPECASE/CTYPECASE can take t and otherwise
 +  * Backout of restart-clusters export
 +  * fix handler.lisp
 +  * Fix to bfd/GBC interaction
 +
 + -- Camm Maguire <camm@m.enhanced.com>  Wed, 23 Oct 2002 08:38:08 -0400
 +
 +gcl (2.5.0.cvs20020625-59) unstable; urgency=low
 +
 +  * wrong number of arguments, keyword errors in lambda list bindings,
 +    are program errors
 +  * acosh fix at -1.0
 +  * New config.sub and config.guess files and automatic updates in
 +    binutils, gmp, and gmp3 subdirs
 +
 + -- Camm Maguire <camm@m.enhanced.com>  Wed, 16 Oct 2002 11:38:56 -0400
 +
 +gcl (2.5.0.cvs20020625-58) unstable; urgency=low
 +
 +  * GENSYM fixes
 +  * add complement and constantly
 +  * import certain symbols into common-lisp package
 +  * Fix makefile bug in install target
 +  * Prepend instead of overwrite C_INCLUDE_PATH in shell wrapper
 +  * More shell variable fixes in main makefile
 +  * Corrected order of push and pushnew
 +  * Set bfd_error appropriately
 +  * Report function for package-error in condition-definitions.lisp;fix
 +    internal-package-error deinition and handling;export *restart-
 +    clusters* to user error code specified in handler-case;package-error
 +    error formatting changes;dummy optional argument added to compute-
 +    restarts (for now);Paul Dietz patch to defpackage.lsp fixing several
 +    tests (thanks);export/unexport error handling fixes
 +  * Recompile c,h and data files
 +  * Fix number of argument errors in debug.lsp;documentation support for
 +    packages in defpackage.lsp and module.lsp;do-symbols loops over
 +    inherited symbols too in packlib.lsp
 +  * Reworked EXTRAS variable handling in unixport/makefile
 +  * Build-depend on autotools-dev and automatic update of config.sub and
 +    config.guess;newer config.sub and config.guess in cvs tree; Closes:
 +    #164526
 +  * Remove stray comments in package.d
 +  * elt errors of type type error
 +  * bad-sequence limit returns type error
 +
 + -- Camm Maguire <camm@m.enhanced.com>  Tue, 15 Oct 2002 15:39:19 -0400
 +
 +gcl (2.5.0.cvs20020625-57) unstable; urgency=low
 +
 +  * Capitalization changes to names of special characters;graphic-char-p
 +    fix
 +  * fix shadowing of existing symbols in package.d
 +  * (simple-)base-string not a subtype of (simple-)vector
 +  * add package-error condition(preliminary);hash conditions only by the
 +    error name, not the format string;pass error types for both
 +    correctable and non-correctable situations;eliminate duplicate
 +    loading of clcs/package.lisp;Allow t doc-types in documentation
 +    (returning nil) for now;fix final type errors in predlib.lsp
 +    (regarding base-string);other error functions to pass continuable
 +    errors (needs cleaning up);package designators can be
 +    characters;delete-package added;make-package doesn't :use lisp by
 +    default;in-package returns error if package does not exist instead
 +    of making the package(relatively big change -- need to address
 +    instances of in-package in .lsp code);call make-package on relevant
 +    packages in init_gcl.lsp.in and pcl/sys-package.lisp;
 +  * \-ffunction-sections for hppa with no-optimization -- enables first
 +    maxima build here
 +  * separate lisp variables to specify optimization flags for level 2
 +    and 3
 +  * symbol-name throws a type error on bad input
 +  * tk8.2 -> tk8.3
 +  * Fix bug in main makefile
 +  * Newlines at end of test files
 +
 + -- Camm Maguire <camm@m.enhanced.com>  Wed,  9 Oct 2002 15:04:41 -0400
 +
 +gcl (2.5.0.cvs20020625-56) unstable; urgency=high
 +
 +  * ansi-test corrections; extra-libs option to LINK function; LINK doc
 +    change; subtypep and string changes to pass more tests
 +  * Add method-combination and structure-object symbols for ansi;remove
 +    unused variables in debug.lsp;remove in-package system from
 +    defstruct.lsp;make-keyword and defmacro temporary function
 +    placeholders in destructuring_bind.lsp;predlib changes to fix ansi-
 +    test type errors;break-call takes 2 args (sys-proclaim.lisp);char
 +    and char-set protected by string dimension not fillpointer in
 +    string.d;fix bug in string.d:member_char for vector types;redefine
 +    slot reader and writer functions in pcl/impl/gcl/gcl-low.lisp
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat,  5 Oct 2002 14:33:46 -0400
 +
 +gcl (2.5.0.cvs20020625-55) unstable; urgency=high
 +
 +  * Add LINK documentation to info pages
 +  * 0 length last support
 +  * make-sequence error check for 'null type and non-zero size
 +  * Dotted-list support in member
 +  * Reworked dotnil definitions and support macros
 +  * add compile-file-pathname
 +  * setup C_INCLUDE_PATH env variable in gcl shell wrapper
 +  * POSITIVE-FIXNUM variable type,simple-error->type error where
 +    indicated by various ansi tests, eq->eql in ldiff and tailp;proper
 +    lists only in member et. al.
 +  * rev keyword for member1 to reverse test arguments
 +  * specific-error function to pass a given type of error from lisp
 +  * set-exclusive-or preserves order of test arguments
 +  * type-errors where appropriate in make-sequence
 +  * nil keys accepted in remove/delete et.al.
 +  * Reworked linking command line to ensure that certain symbols are
 +    resolved in libgcl.a as opposed to certain system libraries, e.g.
 +    gmp
 +  * new gmp for m68k;no -ffloat-store for m68k a requested by user due
 +    to performance impact (will alter test results in maxima
 +    accordingly)
 +  * libgclp.a for objects to be overriden by the C library if necessary
 +  * readably support
 +  * boolean type
 +  * Missing ansi type support
 +  * subtype code for boolean
 +  * add missing ansi types as known types
 +  * other preliminary subtype code for missing ansi types
 +  * rework result-type check in make-sequence
 +  * :element-type support in make-string (preliminary)
 +  * (char ignores fill-pointer
 +  * remove -O4 from debian/rules
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu,  3 Oct 2002 01:52:45 -0400
 +
 +gcl (2.5.0.cvs20020625-54) unstable; urgency=high
 +
 +  * Fix delete et. al. :from-end error; typo in gbc.c
 +  * character and string-char equal in type hierarchy
 +  * concatenate/make-sequence fixes
 +  * merge takes nil key argument
 +  * make-sequence checks size against result type
 +  * install endp macro for dotted list support
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 24 Sep 2002 14:57:44 -0400
 +
 +gcl (2.5.0.cvs20020625-53) unstable; urgency=high
 +
 +  * Sleep with (in principle) microsecond precision
 +  * nth-value macro added
 +  * \-ffloat\-store and warning cleanups for m68k
 +  * Compile hppa with debugging, will get a build but a broken one, ok
 +    for now, Closes: #159591
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 20 Sep 2002 09:48:35 -0400
 +
 +gcl (2.5.0.cvs20020625-52) unstable; urgency=high
 +
 +  * Fixed gcc version bug in debian/rules
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 12 Sep 2002 18:00:50 -0400
 +
 +gcl (2.5.0.cvs20020625-51) unstable; urgency=high
 +
 +  * static gmp for m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 12 Sep 2002 09:33:03 -0400
 +
 +gcl (2.5.0.cvs20020625-50) unstable; urgency=high
 +
 +  * Reworked static gmp target for new libgcl.a;gcc-3.2 for
 +    hppa,ia64,and arm;libgmp2-dev for m68k;no rsym with
 +    dynsysbfd;build_symbol_table earlier to shrink table size;
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 12 Sep 2002 00:39:17 -0400
 +
 +gcl (2.5.0.cvs20020625-49) unstable; urgency=high
 +
 +  * Use old gmp for m68k until can pin down test failure with gmp3
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 10 Sep 2002 00:36:10 -0400
 +
 +gcl (2.5.0.cvs20020625-48) unstable; urgency=high
 +
 +  * Rework build and install so that custom images can be made without
 +    the source tree, even when using dlopen
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  9 Sep 2002 23:26:47 -0400
 +
 +gcl (2.5.0.cvs20020625-47) unstable; urgency=high
 +
 +  * Install cmpinclude.h in system include directory
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 29 Aug 2002 23:31:55 -0400
 +
 +gcl (2.5.0.cvs20020625-46) unstable; urgency=high
 +
 +  * Keep a *much* smaller piece of gmp.h in cmpinclude.h, reducing image
 +    size by almost 100k
 +  * Check for _SHORT_LIMB and _LONG_LONG_LIMB in configure
 +  * Remove build specific include directories from compile command in
 +    final executable
 +  * Include local regexp.h explicitly in cmpinclude.h, to eliminate
 +    intereference with system regexp.h, and to fix bug in which gcl
 +    compilation depended on existing build directories
 +  * Correctly add directory paths to extra gmp file targets in
 +    unixport/makefile for m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 29 Aug 2002 21:56:28 -0400
 +
 +gcl (2.5.0.cvs20020625-45) unstable; urgency=high
 +
 +  * Fix typo in rshift target for m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 28 Aug 2002 18:02:00 -0400
 +
 +gcl (2.5.0.cvs20020625-44) unstable; urgency=high
 +
 +  * Handle second argument to last; treat dotted lists correctly in
 +    ldiff et. al., tailp fix
 +  * optional key argument for assoc-if et.al.;eval getf deflt if in setf
 +  * Fix infinite loop in assoc-if et.al.
 +  * X_LIBS and X_CFLAGS determination in configure script
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 21 Aug 2002 18:22:37 -0400
 +
 +gcl (2.5.0.cvs20020625-43) unstable; urgency=high
 +
 +  * Larger ihs stack;fix array-total-size-limit;check negative
 +    fillp;allow #P
 +  * don't make common_lisp package when not configuring with --enable-
 +    ansi
 +  * Patch gmp3/mpn/m68k/{l,r}shift.asm, restore gmp3 to m68k build
 +  * Dynamic libgmp support, overriding with patched functions from local
 +    source where necessary
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 18 Aug 2002 12:10:55 -0400
 +
 +gcl (2.5.0.cvs20020625-42) unstable; urgency=high
 +
 +  * copy ansidecl.h and symcat.h in h/ for local bfd builds
 +  * localize bfd.h includes to sfaslbfd.c
 +  * take bfd/po out of the build loop
 +  * import xgcl-2, but don't build by default
 +  * oldgmp configure option, and made default for m68k as temporary
 +    workaround
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 12 Aug 2002 23:49:09 -0400
 +
 +gcl (2.5.0.cvs20020625-41) unstable; urgency=high
 +
 +  * Minor rules revision for i164
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 11 Aug 2002 13:49:03 -0400
 +
 +gcl (2.5.0.cvs20020625-40) unstable; urgency=high
 +
 +  * revamp CONST configure test for certain bfd versions
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 11 Aug 2002 12:31:35 -0400
 +
 +gcl (2.5.0.cvs20020625-39) unstable; urgency=high
 +
 +  * gcc-3.1 for ia64 fixes a compilation bug in num_co.c for -O3 and
 +    higher -- code takes address of a variable kept in a register
 +  * compile num_log.c with -O only on ia64 to work around compiler bug
 +
 + -- Camm Maguire <camm@enhanced.com>  Sun, 11 Aug 2002 08:53:03 -0400
 +
 +gcl (2.5.0.cvs20020625-38) unstable; urgency=high
 +
 +  * check for long c statck addresses, fixing NULL_OR_ON_C_STACK macro
 +    for ia64
 +  * Remove error in clean target
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 10 Aug 2002 13:20:08 -0400
 +
 +gcl (2.5.0.cvs20020625-37) unstable; urgency=high
 +
 +  * Replace tmpnam and mktemp with less dangerous mkstemp
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  9 Aug 2002 19:45:52 -0400
 +
 +gcl (2.5.0.cvs20020625-36) unstable; urgency=high
 +
 +  * Fix rsym compilation when not using bfd
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  9 Aug 2002 19:10:16 -0400
 +
 +gcl (2.5.0.cvs20020625-35) unstable; urgency=high
 +
 +  * Don't build bfd/po subdir
 +  * Build-depend on automake and gettext
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  9 Aug 2002 14:36:58 -0400
 +
 +gcl (2.5.0.cvs20020625-34) unstable; urgency=high
 +
 +  * fix zero length array support
 +  * reverse configure order for bfd and libiberty
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  9 Aug 2002 11:52:38 -0400
 +
 +gcl (2.5.0.cvs20020625-33) unstable; urgency=high
 +
 +  * chmod +x for subconfigures
 +  * dlopen for appropriate arches in debian/rules
 +  * add custreloc configure option
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  9 Aug 2002 10:16:55 -0400
 +
 +gcl (2.5.0.cvs20020625-32) unstable; urgency=high
 +
 +  * Local bfd build option to prepare for arch-specific patches
 +  * Try default gmp3 build on m68k
 +  * Fix merge-pathnames
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  9 Aug 2002 00:13:16 -0400
 +
 +gcl (2.5.0.cvs20020625-31) unstable; urgency=high
 +
 +  * #undef bool in object.h for some gcc-3.1 installations
 +  * New number_tan implementation using real tan, so optimized compiled
 +    code will find symbol in -lm
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue,  6 Aug 2002 18:37:52 -0400
 +
 +gcl (2.5.0.cvs20020625-30) unstable; urgency=high
 +
 +  * fix bug in cmpif.lsp and recompile compiler
 +  * \-O6 \-fomit\-frame\-pointer for Linux, speed gain of ~ 10%
 +  * clean saved_gcl_pcl
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  5 Aug 2002 16:34:33 -0400
 +
 +gcl (2.5.0.cvs20020625-29) unstable; urgency=high
 +
 +  * Back out of hppa assembler register flush for hppa, apparently issue
 +    is cleared by long/object function declaration fix
 +  * Remove ansi2knr.1 man page, Closes: #155067
 +  * hppa still has gc leak, possibly due to faulty setjmp.  Try Lamont
 +    Jones' latest assembler to flush regs
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  2 Aug 2002 20:50:21 -0400
 +
 +gcl (2.5.0.cvs20020625-28) unstable; urgency=high
 +
 +  * SGC support for alpha
 +  * generic gmp3 build for m68k
 +  * compiler changes to declare all functions as returning object, with
 +    functions that actually return long being cast appropriately
 +  * back out of m68k hack in eval.c and funlink.c
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri,  2 Aug 2002 18:22:04 -0400
 +
 +gcl (2.5.0.cvs20020625-27) unstable; urgency=high
 +
 +  * Use generic lshift.c in gmp3 for m68k
 +  * use SGC for ia64
 +  * m68k workaround, cast (object(*)()) to (long(*)()) in funlink.c and
 +    eval.c
 +  * GBC register spiil asm for hppa
 +  * fix hash_equal declaration error in hash.d
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu,  1 Aug 2002 18:12:49 -0400
 +
 +gcl (2.5.0.cvs20020625-26) unstable; urgency=high
 +
 +  * Remove extra load of tkl.o in install target of main makefile
 +  * gcc-3.1 for hppa
 +  * Remove gcc version spec for m68k
 +  * \-fPIC for hppa, needed for dlopen
 +  * cleanup gcc 3.1 warning in funlink.c
 +  * cc instead of ld for -shared linking in fasldlsym.c (needed for
 +    hppa)
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 31 Jul 2002 18:46:54 -0400
 +
 +gcl (2.5.0.cvs20020625-25) unstable; urgency=high
 +
 +  * Move chmod +x gmp3/* into debian/rules
 +  * Remove gclm.bat from Debian package
 +  * Build-Depend on autoconf, Closes: #154909
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 31 Jul 2002 09:44:20 -0400
 +
 +gcl (2.5.0.cvs20020625-24) unstable; urgency=high
 +
 +  * chmod +x gmp3/configure
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 31 Jul 2002 07:55:17 -0400
 +
 +gcl (2.5.0.cvs20020625-23) unstable; urgency=high
 +
 +  * 64bit SGC support
 +  * SGC on by default for sparc-linux and mips(el)-linux
 +  * Optimized logxor funtion
 +  * Check for MP_LIMB_SIZE in fasdump.c, for 64bit support
 +  * gbc fix for ia64
 +  * gmp3 import for ia64
 +  * system bzero, bcmp, and bcopy function prototypes
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 30 Jul 2002 23:11:58 -0400
 +
 +gcl (2.5.0.cvs20020625-22) unstable; urgency=high
 +
 +  * ElfW macros in rsym*.c for 64bit
 +  * Allow for 8 byte gmp mp_limbs
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 25 Jul 2002 18:52:37 -0400
 +
 +gcl (2.5.0.cvs20020625-21) unstable; urgency=high
 +
 +  * Support for dlopen object loading where bfd is not yet working --
 +    ./configure --enable-dlopen
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 25 Jul 2002 15:08:05 -0400
 +
 +gcl (2.5.0.cvs20020625-20) unstable; urgency=high
 +
 +  * Cleanups for --disable-bfd option
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 24 Jul 2002 15:05:28 -0400
 +
 +gcl (2.5.0.cvs20020625-19) unstable; urgency=high
 +
 +  * 64bit fixes
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 24 Jul 2002 12:16:42 -0400
 +
 +gcl (2.5.0.cvs20020625-18) unstable; urgency=high
 +
 +  * misc. lintian cleanups, mostly for 64 bit
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 23 Jul 2002 23:35:03 -0400
 +
 +gcl (2.5.0.cvs20020625-17) unstable; urgency=high
 +
 +  * Fixed typeo in error.c preventing arm compilation
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 22 Jul 2002 17:18:18 -0400
 +
 +gcl (2.5.0.cvs20020625-16) unstable; urgency=high
 +
 +  * Fix bad on_stack_list_vector args
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 22 Jul 2002 16:10:16 -0400
 +
 +gcl (2.5.0.cvs20020625-15) unstable; urgency=high
 +
 +  * More lint changes for sundry arches
 +  * Fixed bug in Iapply_ap
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 20 Jul 2002 23:40:33 -0400
 +
 +gcl (2.5.0.cvs20020625-14) unstable; urgency=high
 +
 +  * include stdarg.h when defining _GNU_SOURCE
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 20 Jul 2002 18:47:43 -0400
 +
 +gcl (2.5.0.cvs20020625-13) unstable; urgency=high
 +
 +  * Proper va_dcl declarations
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 20 Jul 2002 10:40:02 -0400
 +
 +gcl (2.5.0.cvs20020625-12) unstable; urgency=high
 +
 +  * cvs updates for missing ptrdiff_t
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 20 Jul 2002 08:41:37 -0400
 +
 +gcl (2.5.0.cvs20020625-11) unstable; urgency=high
 +
 +  * cvs changes to compile cleanly with -Wall
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat, 20 Jul 2002 02:59:33 -0400
 +
 +gcl (2.5.0.cvs20020625-10) unstable; urgency=high
 +
 +  * Architecture any, though still have some issues
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 12 Jul 2002 19:02:09 -0400
 +
 +gcl (2.5.0.cvs20020625-9) unstable; urgency=high
 +
 +  * cvs commits for 64bit support
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 12 Jul 2002 18:01:21 -0400
 +
 +gcl (2.5.0.cvs20020625-8) unstable; urgency=high
 +
 +  * NULL_OR_ON_C_STACK macro correction for m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 12 Jul 2002 14:37:48 -0400
 +
 +gcl (2.5.0.cvs20020625-7) unstable; urgency=high
 +
 +  * arm is bigendian
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 10 Jul 2002 18:04:22 -0400
 +
 +gcl (2.5.0.cvs20020625-6) unstable; urgency=high
 +
 +  * cvs updates for arm build
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue,  9 Jul 2002 16:09:26 -0400
 +
 +gcl (2.5.0.cvs20020625-5) unstable; urgency=high
 +
 +  * CC environment variable setting in debian/rules to aid in porting
 +  * gcc 2.95 for m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Sat,  6 Jul 2002 23:00:23 -0400
 +
 +gcl (2.5.0.cvs20020625-4) unstable; urgency=high
 +
 +  * gcc 3.0 for arm
 +  * cachectl header for m68k
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  1 Jul 2002 15:47:53 -0400
 +
 +gcl (2.5.0.cvs20020625-3) unstable; urgency=high
 +
 +  * Better libbfd detection for arm/alpha
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 26 Jun 2002 17:27:21 -0400
 +
 +gcl (2.5.0.cvs20020625-2) unstable; urgency=high
 +
 +  * s390 support
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 25 Jun 2002 21:25:35 -0400
 +
 +gcl (2.5.0.cvs20020625-1) unstable; urgency=high
 +
 +  * CVS updates, new s390 arch
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 25 Jun 2002 19:26:36 -0400
 +
 +gcl (2.5.0.cvs20020610-2) unstable; urgency=high
 +
 +  * cvs updates
 +
 + -- Camm Maguire <camm@enhanced.com>  Thu, 13 Jun 2002 08:42:32 -0400
 +
 +gcl (2.5.0.cvs20020610-1) unstable; urgency=high
 +
 +  * cvs updates
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 12 Jun 2002 23:04:57 -0400
 +
 +gcl (2.5.0.cvs20020523-2) unstable; urgency=high
 +
 +  * configure updates for better tk detection
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 24 May 2002 18:50:22 -0400
 +
 +gcl (2.5.0.cvs20020523-1) unstable; urgency=high
 +
 +  * New upstream release
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 24 May 2002 18:50:22 -0400
 +
 +gcl (2.5.0.cvs20020429-1) unstable; urgency=high
 +
 +  * Build-Depend on tk8.2-dev, Closes: #144330
 +  * New cvs updates
 +  * Added sparc to arch list, Closes: #143465
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon, 29 Apr 2002 23:07:36 -0400
 +
 +gcl (2.5.0.cvs20020219-2) unstable; urgency=medium
 +
 +  * flavor ->debian-emacs-flavor in emacsen-startup
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  4 Mar 2002 14:29:59 -0500
 +
 +gcl (2.5.0.cvs20020219-1) unstable; urgency=medium
 +
 +  * Updated package descriptions, Closes: #134402
 +  * Static linking of libbfd, Closes: #134647
 +  * Gcl currently only available on i386, arm and m68k as specified in
 +    the Architecture control field, Closes: #133912
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 19 Feb 2002 12:04:29 -0500
 +
 +gcl (2.5.0.cvs-3) unstable; urgency=medium
 +
 +  * Build-depend on texi2html, Closes: #133699
 +
 + -- Camm Maguire <camm@enhanced.com>  Wed, 13 Feb 2002 16:22:35 -0500
 +
 +gcl (2.5.0.cvs-2) unstable; urgency=medium
 +
 +  * Put in versioned dependency on binutils for libbfd support, rebuilt
 +    with latest binutils, Closes: #133004
 +
 + -- Camm Maguire <camm@enhanced.com>  Tue, 12 Feb 2002 13:19:12 -0500
 +
 +gcl (2.5.0.cvs-1) unstable; urgency=medium
 +
 +  * Latest patches from CVS, enabling libbfd relocations, among other
 +    things
 +  * /etc/emacs/site-start.d/50gcl.el as conffile, Closes: #132137
 +  * limited arm and m68k support
 +
 + -- Camm Maguire <camm@enhanced.com>  Mon,  4 Feb 2002 09:32:29 -0500
 +
 +gcl (2.5.0-1) unstable; urgency=medium
 +
 +  * New maintainer
 +  * New upstream release
 +  * New release so far builds only on i386, Closes: #116070, Closes:
 +    #123371
 +  * New release so far builds only on i386, Closes: #115041
 +  * Gcl must currently use its own copy of gmp, as the upstream version
 +    of gmp uses malloc, which interferes with gcl's garbage collection
 +    and relocation scheme.  The change from malloc to alloca has been
 +    suggested to upstream gmp developers. Closes: #108910
 +  * Tcl/Tk support now in. Closes: #113197
 +
 + -- Camm Maguire <camm@enhanced.com>  Fri, 21 Dec 2001 00:03:43 -0500
 +
 +gcl (2.4.0-3) unstable; urgency=medium
 +
 +  * Make gcl use libgmp3 package. (closes: #108910)
 +  * Remove tk support. (closes: #108909)
 +  * Fix stupid missing dependency line. (closes: #108907, #108908)
 +  * Removed readme.mingw from the debian package, this package is not compiled under
 +    mingw (windows gcc port).
 +  * Close ITA bug. (closes: #112312)
 +
 + -- Baruch Even <baruch@debian.org>  Sat, 22 Sep 2001 00:27:14 +0300
 +
 +gcl (2.4.0-2) unstable; urgency=low
 +
 +  * Change tclsh Build-Depends to tcl8.0 because apt is broken. (closes: #99261)
 +
 + -- JP Sugarbroad <taral@taral.net>  Wed, 30 May 2001 14:34:53 -0500
 +
 +gcl (2.4.0-1) unstable; urgency=low
 +
 +  * New upstream release
 +
 + -- JP Sugarbroad <taral@taral.net>  Sun, 13 May 2001 20:31:01 -0500
 +
 +gcl (2.3.7+beta3-3) unstable; urgency=low
 +
 +  * Move gcl-doc to section doc (closes: #78666)
 +
 + -- JP Sugarbroad <taral@taral.net>  Sun, 13 May 2001 20:26:28 -0500
 +
 +gcl (2.3.7+beta3-2) unstable; urgency=low
 +
 +  * Remove alpha from arch list
 +  * Move tcl/tk from Depends to Suggests
 +
 + -- JP Sugarbroad <taral@taral.net>  Fri,  4 May 2001 16:24:11 -0500
 +
 +gcl (2.3.7+beta3-1) unstable; urgency=low
 +
 +  * New maintainer
 +  * Repackaged with debhelper (closes: #42045, #86097, #91475, #91478)
 +  * New upstream release (closes: #59577, #71096)
 +  * Added sparc+alpha, removed m68k (closes: #87407)
 +
 + -- JP Sugarbroad <taral@taral.net>  Mon, 30 Apr 2001 19:07:49 -0500
 +
 +gcl (2.2.1-6) unstable; urgency=low
 +
 +  * Disable stripping of "saved_gcl" binary. (#45778)
 +
 + -- Steve Dunham <dunham@debian.org>  Fri, 24 Sep 1999 14:39:15 -0400
 +
 +gcl (2.2.1-5) unstable; urgency=low
 +
 +  * Fix m68k build
 +
 + -- Steve Dunham <dunham@debian.org>  Tue,  6 Jul 1999 09:45:09 -0400
 +
 +gcl (2.2.1-4) unstable; urgency=low
 +
 +  * Fix bug #31718
 +
 + -- Steve Dunham <dunham@debian.org>  Fri,  2 Jul 1999 11:11:12 -0400
 +
 +gcl (2.2.1-3) unstable; urgency=low
 +
 +  * Add m68k patches
 +
 + -- Steve Dunham <dunham@debian.org>  Wed, 16 Dec 1998 14:25:46 -0500
 +
 +gcl (2.2.1-2) unstable; urgency=low
 +
 +  * Compile against libc6.  New maintainer.
 +
 + -- Steve Dunham <dunham@cps.msu.edu>  Wed,  5 Nov 1997 10:09:12 -0500
 +
 +gcl (2.2.1-1) unstable; urgency=low
 +
 +  * New upstream release; suggests tcl76, tk42.
 +  * gcl-doc contains gcl-si and gcl-tk info pages.
 +  * debian/rules: clean target removes temporary files from h and o
 +    subdirectories (bug #5984).
 +
 + -- Karl Sackett <krs@debian.org>  Fri, 3 Jan 1997 10:16:40 -0600
 +
 +gcl (2.2-5) unstable; urgency=low
 +
 +  * Converted package to 2.1.1.0 standard.
 +  * Stripped gcltkaux (bug #5074).
 +  * gcl-si and gcl-tk info pages converted to HTML.
 +
 + -- Karl Sackett <krs@debian.org>  Tue, 5 Nov 1996 13:30:30 -0600
 +
 +2.2-4
 +        * add-defs: patched locates for tk.tcl, init.tcl 
 +        * gcl-tk/tkAppInit.c: patched for tk4.1 support
 +        * gcl-tk/tkMain.c: patched for tk4.1 support
 +2.2-3
 +        * Debian support files now partily architecture independent.
 +          There are, however, no add-defs files except for 386-linux.
 +        * Rebuilt package to correct corrupted upload problem.
 +2.2-2
 +        * Removed tk support from distribution.  This was written to
 +          use tk-3.6 and doesn't support tk-4.0 or tk-4.1.  I am not aware
 +          of any plans to upgrade the code. (Closes bug #2865)
 +2.2-1
 +        * Added Debian support files
 +        * h/386-linux.defs: set OFLAG = -O2
 +        * h/386-linux.h: undid patch that swaped signal.h for sigcontext.h
diff --cc debian/compat
index 7ed6ff82de6bcc2a78243fc9c54d3ef5ac14da69,0000000000000000000000000000000000000000..ec635144f60048986bc560c5576355344005e6e7
mode 100644,000000..100644
--- /dev/null
@@@ -1,1 -1,0 +1,1 @@@
- 5
++9
diff --cc debian/control
index 7cf8eb640c36046d0f3e431f18a58e945d641747,0000000000000000000000000000000000000000..e1e6d4649f1b3a6883fd573d4a1eb4fb24e6ab9b
mode 100644,000000..100644
--- /dev/null
@@@ -1,39 -1,0 +1,39 @@@
- Build-Depends: debhelper (>= 5 ), libreadline-dev, m4, tk8.6-dev, libgmp-dev, autotools-dev, libxmu-dev, libxaw7-dev, po-debconf, zlib1g-dev
- Standards-Version: 3.9.5
 +Source: gcl
 +Section: lisp
 +Priority: optional
 +Maintainer: Camm Maguire <camm@debian.org>
 +Homepage: http://gnu.org/software/gcl
++Build-Depends: debhelper (>= 5), libreadline-dev, m4, tk8.6-dev, libgmp-dev, autotools-dev, libxmu-dev, libxaw7-dev, po-debconf, zlib1g-dev, tcl
++Standards-Version: 4.4.1
 +
 +Package: gcl
 +Architecture: any
 +Depends: ${shlibs:Depends}, ${misc:Depends}, ${gcc}, debconf (>= 1.2.0), emacs24 | emacsen, ucf
 +Breaks: emacsen-common (<< 2.0.0)
 +Suggests: gcl-doc
 +Description: GNU Common Lisp compiler
 + GNU Common Lisp (GCL) is a Common Lisp compiler and interpreter
 + implemented in C, and complying mostly with the standard set 
 + forth in the book "Common Lisp, the Language I".  It attempts
 + to strike a useful middle ground in performance and portability
 + from its design around C.
 + .
 + This package contains the Lisp system itself.  Documentation 
 + is provided in the gcl-doc package.
 +
 +Package: gcl-doc
 +Section: doc
 +Architecture: all
 +Conflicts: gclinfo
 +Replaces: gclinfo
 +Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends}
 +Description: Documentation for GNU Common Lisp
 + GNU Common Lisp (GCL) is a Common Lisp compiler and interpreter
 + implemented in C, and complying mostly with the standard set 
 + forth in the book "Common Lisp, the Language I".  It attempts
 + to strike a useful middle ground in performance and portability
 + from its design around C.
 + .
 + This package contains Documentation in info format of both the
 + system internals, as well as the graphical interface currently
 + implemented in Tcl/Tk.
diff --cc debian/control.
index 7cf8eb640c36046d0f3e431f18a58e945d641747,0000000000000000000000000000000000000000..e1e6d4649f1b3a6883fd573d4a1eb4fb24e6ab9b
mode 100644,000000..100644
--- /dev/null
@@@ -1,39 -1,0 +1,39 @@@
- Build-Depends: debhelper (>= 5 ), libreadline-dev, m4, tk8.6-dev, libgmp-dev, autotools-dev, libxmu-dev, libxaw7-dev, po-debconf, zlib1g-dev
- Standards-Version: 3.9.5
 +Source: gcl
 +Section: lisp
 +Priority: optional
 +Maintainer: Camm Maguire <camm@debian.org>
 +Homepage: http://gnu.org/software/gcl
++Build-Depends: debhelper (>= 5), libreadline-dev, m4, tk8.6-dev, libgmp-dev, autotools-dev, libxmu-dev, libxaw7-dev, po-debconf, zlib1g-dev, tcl
++Standards-Version: 4.4.1
 +
 +Package: gcl
 +Architecture: any
 +Depends: ${shlibs:Depends}, ${misc:Depends}, ${gcc}, debconf (>= 1.2.0), emacs24 | emacsen, ucf
 +Breaks: emacsen-common (<< 2.0.0)
 +Suggests: gcl-doc
 +Description: GNU Common Lisp compiler
 + GNU Common Lisp (GCL) is a Common Lisp compiler and interpreter
 + implemented in C, and complying mostly with the standard set 
 + forth in the book "Common Lisp, the Language I".  It attempts
 + to strike a useful middle ground in performance and portability
 + from its design around C.
 + .
 + This package contains the Lisp system itself.  Documentation 
 + is provided in the gcl-doc package.
 +
 +Package: gcl-doc
 +Section: doc
 +Architecture: all
 +Conflicts: gclinfo
 +Replaces: gclinfo
 +Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends}
 +Description: Documentation for GNU Common Lisp
 + GNU Common Lisp (GCL) is a Common Lisp compiler and interpreter
 + implemented in C, and complying mostly with the standard set 
 + forth in the book "Common Lisp, the Language I".  It attempts
 + to strike a useful middle ground in performance and portability
 + from its design around C.
 + .
 + This package contains Documentation in info format of both the
 + system internals, as well as the graphical interface currently
 + implemented in Tcl/Tk.
index 9b44298a82b911335b53c6df32974088699aaae7,0000000000000000000000000000000000000000..36d5b5cba5b7781f1b805e3b7360a4b84eabfaeb
mode 100644,000000..100644
--- /dev/null
@@@ -1,39 -1,0 +1,39 @@@
- Build-Depends: debhelper (>= 5 ), libreadline-dev, m4, tk8.6-dev, libgmp-dev, autotools-dev, libxmu-dev, libxaw7-dev, po-debconf, zlib1g-dev
- Standards-Version: 3.9.5
 +Source: gclcvs
 +Section: lisp
 +Priority: optional
 +Maintainer: Camm Maguire <camm@debian.org>
 +Homepage: http://gnu.org/software/gcl
++Build-Depends: debhelper (>= 5), libreadline-dev, m4, tk8.6-dev, libgmp-dev, autotools-dev, libxmu-dev, libxaw7-dev, po-debconf, zlib1g-dev, tcl
++Standards-Version: 4.4.1
 +
 +Package: gclcvs
 +Architecture: any
 +Depends: ${shlibs:Depends}, ${misc:Depends}, ${gcc}, debconf (>= 1.2.0), emacs24 | emacsen, ucf
 +Breaks: emacsen-common (<< 2.0.0)
 +Suggests: gclcvs-doc
 +Description: GNU Common Lisp compiler, CVS snapshot
 + GNU Common Lisp (GCL) is a Common Lisp compiler and interpreter
 + implemented in C, and complying mostly with the standard set 
 + forth in the book "Common Lisp, the Language I".  It attempts
 + to strike a useful middle ground in performance and portability
 + from its design around C.
 + .
 + This package contains the Lisp system itself.  Documentation 
 + is provided in the gclcvs-doc package.
 +
 +Package: gclcvs-doc
 +Section: doc
 +Architecture: all
 +Conflicts: gclinfo
 +Replaces: gclinfo
 +Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends}
 +Description: Documentation for GNU Common Lisp, CVS snapshot
 + GNU Common Lisp (GCL) is a Common Lisp compiler and interpreter
 + implemented in C, and complying mostly with the standard set 
 + forth in the book "Common Lisp, the Language I".  It attempts
 + to strike a useful middle ground in performance and portability
 + from its design around C.
 + .
 + This package contains Documentation in info format of both the
 + system internals, as well as the graphical interface currently
 + implemented in Tcl/Tk.
index df94ce97c8fafd08bd370c80b60011ef7e320219,0000000000000000000000000000000000000000..35cdb23423d16a93cf26b7f60f22f19f5ffed25e
mode 100644,000000..100644
--- /dev/null
@@@ -1,2 -1,0 +1,9 @@@
- gcl: unstripped-binary-or-object
- gcl: binary-compiled-with-profiling-enabled
++gcl: binary-compiled-with-profiling-enabled usr/lib/gcl-2.6.12-prof/unixport/saved_ansi_gcl
++gcl: binary-compiled-with-profiling-enabled usr/lib/gcl-2.6.12-prof/unixport/saved_gcl
++gcl: binary-compiled-with-profiling-enabled usr/lib/gcl-2.6.12/unixport/saved_ansi_gcl
++gcl: binary-compiled-with-profiling-enabled usr/lib/gcl-2.6.12/unixport/saved_gcl
++gcl: hardening-no-pie usr/lib/gcl-2.6.12-prof/unixport/saved_ansi_gcl
++gcl: hardening-no-pie usr/lib/gcl-2.6.12-prof/unixport/saved_gcl
++gcl: hardening-no-pie usr/lib/gcl-2.6.12/unixport/saved_ansi_gcl
++gcl: hardening-no-pie usr/lib/gcl-2.6.12/unixport/saved_gcl
++gcl: emacsen-common-without-dh-elpa
index a36b24076aab94f348576458957817f03b35ff2d,0000000000000000000000000000000000000000..5360f7dc69f55a07bd5a086a0e476e0de658bd36
mode 100644,000000..100644
--- /dev/null
@@@ -1,18 -1,0 +1,22 @@@
++#!/bin/sh
++
++set -e
++
 +case "$1" in
 +    purge)
 +          for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist;  do
 +              rm -f /etc/default/gcl@EXT@$ext
 +          done
 +          
 +          rm -f /etc/default/gcl@EXT@
 +          
 +          if which ucf >/dev/null; then
 +              ucf --purge /etc/default/gcl@EXT@
 +          fi        
 +          if which ucfr >/dev/null; then
 +              ucfr --purge gcl@EXT@ /etc/default/gcl@EXT@
 +          fi       
 +          ;;
 +esac
 +
 +#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2599262b9631ff3233b6ee03654876fa30cd0213
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13167 @@@
++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.
++ .
++ gcl (2.6.12-2) unstable; urgency=medium
++ .
++   * Version_2_6_13pre1
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/clcs/package.lisp
+++++ gcl-2.6.12/clcs/package.lisp
++@@ -20,3 +20,4 @@
++ (defvar *this-package* (find-package :conditions))
++ 
++ 
+++(import 'si::(clines defentry defcfun object void int double))
++--- gcl-2.6.12.orig/clcs/sys-proclaim.lisp
+++++ gcl-2.6.12/clcs/sys-proclaim.lisp
++@@ -1,45 +1,46 @@
++ 
++-(IN-PACKAGE "CONDITIONS") 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) T) CONDITION-CLASS-P IS-WARNING CONDITIONP
++-            IS-CONDITION ESCAPE-SPECIAL-CASES-REPLACE
++-            SIMPLE-CONDITION-CLASS-P INTERNAL-SIMPLE-CONDITION-CLASS-P)) 
++-(PROCLAIM '(FTYPE (FUNCTION (*) *) CLCS-COMPILE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) T) ASSERT-REPORT SYMCAT COERCE-TO-FN
++-            SLOT-SYM)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T *) *) CLCS-LOAD CLCS-OPEN CLCS-COMPILE-FILE
++-            MAKE-CONDITION)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) (*)) SIMPLE-ASSERTION-FAILURE)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T T) T) ACCUMULATE-CASES)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T) T)
++-            |(PCL::FAST-METHOD PRINT-OBJECT (CONDITION T))|)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T) *) ASSERT-PROMPT)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T) *)
++-            |(PCL::FAST-METHOD PRINT-OBJECT (INTERNAL-WARNING T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-SLOT T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (END-OF-FILE T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (FILE-ERROR T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (ARITHMETIC-ERROR T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (SIMPLE-CONDITION T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (ABORT-FAILURE T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (CASE-FAILURE T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (UNDEFINED-FUNCTION T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (PRINT-NOT-READABLE T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (INTERNAL-ERROR T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (PACKAGE-ERROR T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (CELL-ERROR T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (INTERNAL-CONDITION T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (STREAM-ERROR T))|
++-            COERCE-TO-CONDITION
++-            |(PCL::FAST-METHOD PRINT-OBJECT (TYPE-ERROR T))|
++-            |(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-VARIABLE T))|)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION NIL T) REVERT-CLCS-SYMBOLS INSTALL-CLCS-SYMBOLS
++-            READ-EVALUATED-FORM)) 
++-(MAPC (LAMBDA (COMPILER::X)
++-        (SETF (GET COMPILER::X 'SYSTEM::PROCLAIMED-CLOSURE) T))
++-      '(INSTALL-SYMBOL REVERT-SYMBOL)) 
++\ No newline at end of file
+++(COMMON-LISP::IN-PACKAGE "CONDITIONS") 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         CONDITIONS::IS-WARNING CONDITIONS::DEFAULT-REPORT
+++         CONDITIONS::IS-CONDITION CONDITIONS::CONDITIONP)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ARITHMETIC-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PACKAGE-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (INTERNAL-CONDITION T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNDEFINED-FUNCTION T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-SLOT T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-VARIABLE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CASE-FAILURE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PRINT-NOT-READABLE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (SIMPLE-CONDITION T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ABORT-FAILURE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (TYPE-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CELL-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (FILE-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (END-OF-FILE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (STREAM-ERROR T))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CONDITION T))|
+++         CONDITIONS::|(PCL::FAST-METHOD MAKE-LOAD-FORM (CONDITION))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         CONDITIONS::COERCE-TO-FN CONDITIONS::SLOT-SYM)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMMON-LISP::MAKE-CONDITION)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpbind.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpbind.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'bds-bind 'set-bds-bind 'set-loc)
++ 
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpblock.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpblock.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'block 'c1block 'c1special)
++ (si:putprop 'block 'c2block 'c2)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpcall.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpcall.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (defvar *ifuncall* nil)
++ 
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpcatch.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpcatch.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'catch 'c1catch 'c1special)
++ (si:putprop 'catch 'c2catch 'c2)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpenv.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpenv.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (defvar *safe-compile* nil)
++ (defvar *compiler-check-args* nil)
++@@ -337,7 +337,7 @@
++       readtable sequence short-float simple-array simple-bit-vector
++       simple-string simple-vector single-float standard-char stream string
++       dynamic-extent :dynamic-extent
++-      string-char symbol t vector signed-byte unsigned-byte)
+++      symbol t vector signed-byte unsigned-byte)
++      (proclaim-var (car decl) (cdr decl)))
++     (otherwise
++      (unless (member (car decl) *alien-declarations*)
++@@ -366,6 +366,12 @@
++           (t
++            (warn "The variable name ~s is not a symbol." var)))))
++ 
+++(defun mexpand-deftype (tp &aux (l (listp tp))(i (when l (cdr tp)))(tp (if l (car tp) tp)))
+++  (when (symbolp tp)
+++    (let ((fn (get tp 'si::deftype-definition)))
+++      (when fn
+++     (apply fn i)))))
+++
++ (defun c1body (body doc-p &aux (ss nil) (is nil) (ts nil) (others nil)
++                     doc form)
++   (loop
++@@ -383,10 +389,8 @@
++ ;;; 20040320 CM              
++              (cmpck (not (consp decl))
++                     "The declaration ~s is illegal." decl)
++-             (let* ((dtype (car decl)))
++-;; Can process user deftypes here in the future -- 20040318 CM
++-;;                  (dft (and (symbolp dtype) (get dtype 'si::deftype-definition)))
++-;;                  (dtype (or (and dft (funcall dft)) dtype)))
+++             (let* ((dtype (car decl))
+++                    (dtype (or (mexpand-deftype dtype) dtype)))
++                (if (consp dtype)
++                  (let ((stype (car dtype)))
++                    (cmpck (or (not (symbolp stype)) (cdddr dtype)) "The declaration ~s is illegal." decl)
++@@ -449,7 +453,7 @@
++                               integer keyword list long-float nil null number package pathname
++                               random-state ratio rational readtable sequence simple-array
++                               simple-bit-vector simple-string simple-base-string simple-vector single-float
++-                              standard-char stream string string-char symbol t vector
+++                              standard-char stream string symbol t vector
++                               signed-byte unsigned-byte)
++                       (let ((type (type-filter stype)))
++                         (when type
++@@ -667,7 +671,7 @@
++       readtable sequence short-float simple-array simple-bit-vector
++       simple-string simple-vector single-float standard-char stream string
++       dynamic-extent :dynamic-extent
++-      string-char symbol t vector signed-byte unsigned-byte)
+++      symbol t vector signed-byte unsigned-byte)
++      (let ((type (type-filter (car decl))))
++           (dolist** (var (cdr decl) t)
++             (if (symbolp var)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpeval.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpeval.lsp
++@@ -23,9 +23,9 @@
++ 
++ (export '(si::define-compiler-macro
++        si::undef-compiler-macro
++-          si::define-inline-function) 'system)
+++          si::define-inline-function) :system)
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'progn 'c1progn 'c1special)
++ (si:putprop 'progn 'c2progn 'c2)
++@@ -180,9 +180,8 @@
++                              
++ 
++ (defun result-type-from-args(f args &aux tem)
++-  (when (and (setq tem (get f 'return-type))
++-             (not (eq tem '*))
++-          (not (consp tem)))
+++  (when (if (setq tem (get f 'return-type))
+++             (and (not (eq tem '*)) (not (consp tem))) t)
++     (dolist (v '(inline-always inline-unsafe))
++       (dolist (w (get f v))
++      (fix-opt w)
++@@ -486,19 +485,22 @@
++ 
++ (defun c1structure-ref1 (form name index &aux (info (make-info)))
++   ;;; Explicitly called from c1expr and c1structure-ref.
++-  (declare (special  *aet-types*))
++   (cond (*safe-compile* (c1expr `(si::structure-ref ,form ',name ,index)))
++-     (t
++-  (let* ((sd (get name 'si::s-data))
++-      (aet-type (aref (si::s-data-raw sd) index))
++-      )
++-    (setf (info-type info) (type-filter (aref *aet-types* aet-type)))
++-    (list 'structure-ref info
++-       (c1expr* form info)
++-       (add-symbol name)
++-       index sd)
++-    
++-    ))))
+++     ((let* ((sd (get name 'si::s-data))
+++             (aet-type (aref (si::s-data-raw sd) index))
+++             (sym (find-symbol (si::string-concatenate
+++                                (or (si::s-data-conc-name sd) "")
+++                                (car (nth index (si::s-data-slot-descriptions sd))))))
+++             (tp (if sym (get-return-type sym) '*))
+++             (tp (type-filter (type-and tp (aref *aet-types* aet-type)))))
+++
+++        (setf (info-type info) (if (and (eq name 'si::s-data) (= index 2));;FIXME -- this belongs somewhere else.  CM 20050106
+++                                   '(vector unsigned-char)
+++                                   tp))
+++        (list 'structure-ref info
+++              (c1expr* form info)
+++              (add-symbol name)
+++              index sd)))))
++ 
++ (defun coerce-loc-structure-ref (arg type-wanted &aux (form (cdr arg)))
++   (let* ((sd (fourth form))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpflet.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpflet.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'flet 'c1flet 'c1special)
++ (si:putprop 'flet 'c2flet 'c2)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpfun.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpfun.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'princ 'c1princ 'c1)
++ (si:putprop 'princ 'c2princ 'c2)
++@@ -565,7 +565,7 @@
++                    (equal (third type) '(*)))))
++          (setq tem (si::best-array-element-type
++                     (second type)))
++-         (cond ((eq tem 'string-char) `(stringp ,x))
+++         (cond ((eq tem 'character) `(stringp ,x))
++                ((eq tem 'bit) `(bit-vector-p ,x))
++                ((setq tem (position tem *aet-types*))
++                 `(the boolean (vector-type ,x ,tem)))))
++@@ -803,7 +803,7 @@
++ 
++ 
++ (defvar *aet-types*
++-  #(T STRING-CHAR SIGNED-CHAR FIXNUM SHORT-FLOAT LONG-FLOAT
+++  #(T CHARACTER SIGNED-CHAR FIXNUM SHORT-FLOAT LONG-FLOAT
++                      SIGNED-CHAR
++                      UNSIGNED-CHAR SIGNED-SHORT UNSIGNED-SHORT))
++ 
++@@ -811,7 +811,7 @@
++ (defun aet-c-type (type)
++   (ecase type
++     ((t) "object")
++-    ((string-char signed-char) "char")
+++    ((character signed-char) "char")
++     (fixnum "fixnum")
++     (unsigned-char "unsigned char")
++     (unsigned-short "unsigned short")
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpif.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpif.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'if 'c1if 'c1special)
++ (si:putprop 'if 'c2if 'c2)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpinline.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpinline.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ ;;; Pass 1 generates the internal form
++ ;;;  ( id  info-object . rest )
++--- gcl-2.6.12.orig/cmpnew/gcl_cmplabel.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmplabel.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (defvar *last-label* 0)
++ (defvar *exit*)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmplam.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmplam.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ ;;; During Pass1, a lambda-list
++ ;;;
++--- gcl-2.6.12.orig/cmpnew/gcl_cmplet.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmplet.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ (eval-when (compile)
++   (or (fboundp 'write-block-open) (load "cmplet.lsp")))
++ 
++--- gcl-2.6.12.orig/cmpnew/gcl_cmploc.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmploc.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (defvar *value-to-go*)
++ 
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -24,7 +24,7 @@
++ ;;;          *****************
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ 
++ (export '(*compile-print* *compile-verbose*))
++@@ -49,7 +49,11 @@
++ (defvar *cmpinclude* "\"cmpinclude.h\"")
++ ;;If the following is a string, then it is inserted instead of
++ ;; the include file cmpinclude.h, EXCEPT for system-p calls.
++-(defvar *cmpinclude-string* t)
+++(defvar *cmpinclude-string* 
+++  (si::file-to-string 
+++   (namestring
+++    (make-pathname :directory (append (pathname-directory si::*system-directory*) (list :parent "h"))
+++                :name "cmpinclude" :type "h"))))
++ 
++ 
++ ;; Let the user write dump c-file etc to  /dev/null.
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmap.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmap.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'mapcar 'c1mapcar 'c1)
++ (si:putprop 'maplist 'c1maplist 'c1)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmulti.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmulti.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'multiple-value-call 'c1multiple-value-call 'c1special)
++ (si:putprop 'multiple-value-call 'c2multiple-value-call 'c2)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpopt.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpopt.lsp
++@@ -1,4 +1,4 @@
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ ;; The optimizers have been redone to allow more flags
++ ;; The old style optimizations  correspond to the first 2
++@@ -136,8 +136,11 @@
++    (get 'system:aset 'inline-unsafe))
++ (push '(((array t) fixnum t) t #.(flags set)"(#0)->v.v_self[#1]= (#2)")
++    (get 'system:aset 'inline-unsafe))
++-(push '(((array string-char) fixnum character) character #.(flags rfa set)"(#0)->ust.ust_self[#1]= (#2)")
+++(push '(((array character) fixnum character) character #.(flags rfa set)"(#0)->ust.ust_self[#1]= (#2)")
++    (get 'system:aset 'inline-unsafe))
+++(push '(((array bit) fixnum fixnum) fixnum #.(flags rfa)
+++     "({object _o=(#0);fixnum _i=(#1)+_o->bv.bv_offset;char _c=1<<BIT_ENDIAN(_i&0x7),*_d=_o->bv.bv_self+(_i>>3);bool _b=(#2);if (_b) *_d|=_c; else *_d&=~_c;_b;})")
+++   (get 'si::aset 'inline-unsafe))
++ (push '(((array fixnum) fixnum fixnum) fixnum #.(flags set rfa)"(#0)->fixa.fixa_self[#1]= (#2)")
++    (get 'system:aset 'inline-unsafe))
++ (push '(((array signed-short) fixnum fixnum) fixnum #.(flags rfa set)"((short *)(#0)->ust.ust_self)[#1]=(#2)")
++@@ -159,7 +162,7 @@
++ (push '(((array t) fixnum fixnum t) t #.(flags set)
++   "@0;(#0)->a.a_self[(#1)*(#0)->a.a_dims[1]+#2]= (#3)")
++    (get 'system:aset 'inline-unsafe))
++-(push '(((array string-char) fixnum fixnum character) character
+++(push '(((array character) fixnum fixnum character) character
++      #.(flags rfa set)
++   "@0;(#0)->ust.ust_self[(#1)*(#0)->a.a_dims[1]+#2]= (#3)")
++    (get 'system:aset 'inline-unsafe))
++@@ -433,7 +436,9 @@
++    (get 'aref 'inline-unsafe))
++ (push '(((array t) fixnum) t #.(flags)"(#0)->v.v_self[#1]")
++    (get 'aref 'inline-unsafe))
++-(push '(((array string-char) fixnum) character #.(flags rfa)"(#0)->ust.ust_self[#1]")
+++(push '(((array character) fixnum) character #.(flags rfa)"(#0)->ust.ust_self[#1]")
+++   (get 'aref 'inline-unsafe))
+++(push '(((array bit) fixnum) fixnum #.(flags rfa)"({object _o=(#0);fixnum _i=(#1)+(_o)->bv.bv_offset;(_o->bv.bv_self[_i>>3]>>BIT_ENDIAN(_i&0x7))&0x1;})")
++    (get 'aref 'inline-unsafe))
++ (push '(((array fixnum) fixnum) fixnum #.(flags rfa)"(#0)->fixa.fixa_self[#1]")
++    (get 'aref 'inline-unsafe))
++@@ -456,7 +461,7 @@
++ (push '(((array t) fixnum fixnum) t #.(flags )
++   "@0;(#0)->a.a_self[(#1)*(#0)->a.a_dims[1]+#2]")
++    (get 'aref 'inline-unsafe))
++-(push '(((array string-char) fixnum fixnum) character #.(flags rfa)
+++(push '(((array character) fixnum fixnum) character #.(flags rfa)
++   "@0;(#0)->ust.ust_self[(#1)*(#0)->a.a_dims[1]+#2]")
++    (get 'aref 'inline-unsafe))
++ (push '(((array fixnum) fixnum fixnum) fixnum #.(flags rfa)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpspecial.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpspecial.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'quote 'c1quote 'c1special)
++ (si:putprop 'function 'c1function 'c1special)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptag.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptag.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ (import 'si::switch)
++ (import 'si::switch-finish)
++ 
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptest.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptest.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (defun self-compile ()
++  (with-open-file (log "lsplog" :direction :output)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptop.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptop.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (defvar *objects* (make-hash-table :test 'eq))
++ ;(defvar *objects* nil)
++@@ -572,7 +572,7 @@
++ (defun make-inline-string (cfun args fname)
++   (if (null args)
++       (format nil "~d()" (c-function-name "LI" cfun fname))
++-      (let ((o (make-array 100 :element-type 'string-char :fill-pointer 0
+++      (let ((o (make-array 100 :element-type 'character :fill-pointer 0
++                         :adjustable t )))
++            (format o "~d(" (c-function-name "LI" cfun fname))
++            (do ((l args (cdr l))
++@@ -696,7 +696,7 @@
++       )))
++ 
++ (defun si::add-debug (fname x)
++-  (si::putprop fname x  'si::debug))
+++  (si::putprop fname x  'si::debugger))
++ 
++ (defun t3init-fun (fname cfun lambda-expr doc)
++ 
++@@ -1237,10 +1237,10 @@
++                       (si::fixnump (cdr (var-ref va))))
++                  (setf (nth (cdr (var-ref va)) locals)
++                        (var-name va))))
++-      (setf (get fname 'si::debug) locals)
++-      (let ((locals (get fname 'si::debug)))
+++      (setf (get fname 'si::debugger) locals)
+++      (let ((locals (get fname 'si::debugger)))
++      (if (and locals (or (cdr locals) (not (null (car locals)))))
++-         (add-init `(si::debug ',fname ',locals) )
+++         (add-init `(debug ',fname ',locals) )
++          ))
++       ))))
++ 
++@@ -1406,7 +1406,7 @@
++      ((and (consp form)
++            (symbolp (car form))
++            (or (eq (car form) 'setq)
++-               (not (special-form-p (car form))))
+++               (not (special-operator-p (car form))))
++            (do ((v (cdr form) (and (consp v) (cdr v)))
++                 (i 1 (the fixnum (+ 1 i))))
++                ((or (>= i 1000)
++@@ -1457,7 +1457,7 @@
++ (setf (get 'si::define-structure 't1) 't1define-structure)
++ 
++ (defun t1define-structure (args)
++-  (maybe-eval t `(si::define-structure ,@args ,(not (maybe-eval nil nil))))
+++  (maybe-eval t `(si::define-structure ,@(copy-tree args) ,(not (maybe-eval nil nil))));FIXME
++   (t1ordinary (cons 'si::define-structure args)))
++ 
++ 
++@@ -1484,7 +1484,7 @@
++     (cond ((stringp s) (push s body))
++           ((consp s)
++            (cond ((symbolp (car s))
++-                  (cmpck (special-form-p (car s))
+++                  (cmpck (special-operator-p (car s))
++                          "Special form ~s is not allowed in defCfun." (car s))
++                   (push (list (cons (car s) (parse-cvspecs (cdr s)))) body))
++                  ((and (consp (car s)) (symbolp (caar s))
++@@ -1493,7 +1493,7 @@
++                                     (not (endp (cddar s)))
++                                     (endp (cdr s))
++                                     (not (endp (cddr s))))
++-                                (special-form-p (caar s)))))
+++                                (special-operator-p (caar s)))))
++                   (push (cons (cons (caar s)
++                                     (if (eq (caar s) 'quote)
++                                         (list (add-object (cadar s)))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptype.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptype.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ ;;; CL-TYPE is any valid type specification of Common Lisp.
++ ;;;
++@@ -51,7 +51,7 @@
++   (let ((type (type-of thing)))
++     (case type
++       ((fixnum short-float long-float) type)
++-      ((string-char standard-char character) 'character)
+++      ((standard-char character) 'character)
++       ((string bit-vector) type)
++       (vector (list 'vector (array-element-type thing)))
++       (array (list 'array (array-element-type thing)))
++@@ -82,7 +82,7 @@
++                              (and (consp (caddr type))
++                                   (= (length (caddr type)) 1))))
++                        (case element-type
++-                         (string-char 'string)
+++                         (character 'string)
++                          (bit 'bit-vector)
++                          (t (list 'vector element-type))))
++                       (t (list 'array element-type))))
++@@ -109,8 +109,8 @@
++                         ((subtypep type '(vector long-float))
++                          '(vector long-float))
++                         ((subtypep type '(array t)) '(array t))
++-                        ((subtypep type '(array string-char))
++-                         '(array string-char))
+++                        ((subtypep type '(array character))
+++                         '(array character))
++                         ((subtypep type '(array bit)) '(array bit))
++                         ((subtypep type '(array fixnum)) '(array fixnum))
++                         ((subtypep type '(array short-float))
++@@ -142,11 +142,13 @@
++         ((eq type1 t) type2)
++      ((eq type2 'object) type1)
++         ((eq type2 t) type1)
++-        ((consp type1)
+++        ((subtypep type2 type1) type2)
+++     ((subtypep type1 type2) type1)
+++     ((consp type1)
++          (case (car type1)
++                (array
++                 (case (cadr type1)
++-                      (string-char (if (eq type2 'string) type2 nil))
+++                      (character (if (eq type2 'string) type2 nil))
++                       (bit (if (eq type2 'bit-vector) type2 nil))
++                       (t (if (and (consp type2)
++                                   (eq (car type2) 'vector)
++@@ -160,7 +162,7 @@
++         (t (case type1
++                  (string
++                   (if (and (consp type2) (eq (car type2) 'array)
++-                           (eq (cadr type2) 'string-char))
+++                           (eq (cadr type2) 'character))
++                       type1 nil))
++                  (bit-vector
++                   (if (and (consp type2) (eq (car type2) 'array)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmputil.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmputil.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (export '(*suppress-compiler-warnings*
++           *suppress-compiler-notes*
++@@ -204,7 +204,7 @@
++       (do-macro-expansion '(macroexpand-1) form)
++     form))
++ 
++-(defun cmp-expand-macro (fd fname args &aux env (form (cons fname args)))
+++(defun cmp-expand-macro (fd fname args &aux (form (cons fname args)))
++   (if (macro-def-p form)
++       (do-macro-expansion `(funcall *macroexpand-hook* ',fd) form)
++     form))
++@@ -214,7 +214,7 @@
++ (defun cmp-toplevel-eval (form)
++    (let* ((si::*ihs-base* si::*ihs-top*)
++           (si::*ihs-top* (1- (si::ihs-top)))
++-          (*break-enable* *compiler-break-enable*)
+++          (si::*break-enable* *compiler-break-enable*)
++           (si::*break-hidden-packages*
++            (cons (find-package 'compiler)
++                  si::*break-hidden-packages*)))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpvar.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpvar.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'var 'c2var 'c2)
++ (si:putprop 'location 'c2location 'c2)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpvs.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpvs.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (si:putprop 'vs 'set-vs 'set-loc)
++ (si:putprop 'vs 'wt-vs 'wt-loc)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpwt.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpwt.lsp
++@@ -19,7 +19,7 @@
++ ;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (eval-when (compile eval)
++   (require 'FASDMACROS "../cmpnew/gcl_fasdmacros.lsp")
++--- gcl-2.6.12.orig/cmpnew/gcl_collectfn.lsp
+++++ gcl-2.6.12/cmpnew/gcl_collectfn.lsp
++@@ -13,7 +13,7 @@
++ ;; Additionally cross reference information about functions in the system is
++ ;; collected.
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ (import 'sloop::sloop)
++ 
++ (defstruct fn
++--- gcl-2.6.12.orig/cmpnew/gcl_lfun_list.lsp
+++++ gcl-2.6.12/cmpnew/gcl_lfun_list.lsp
++@@ -3,7 +3,7 @@
++ ;; and making the arglists correct if they have optional args.
++ ;;
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (DEFSYSFUN 'GENSYM "Lgensym" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'SUBSEQ "Lsubseq" '(T T *) 'T NIL NIL) 
++@@ -129,7 +129,7 @@
++ (DEFSYSFUN 'STRING-NOT-GREATERP "Lstring_not_greaterp" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING> "Lstring_g" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'FINISH-OUTPUT "Lfinish_output" '(*) 'T NIL NIL) 
++-(DEFSYSFUN 'SPECIAL-FORM-P "Lspecial_form_p" '(T) 'T NIL T) 
+++(DEFSYSFUN 'SPECIAL-OPERATOR-P "Lspecial_operator_p" '(T) 'T NIL T) 
++ (DEFSYSFUN 'STRINGP "Lstringp" '(T) 'T NIL T) 
++ (DEFSYSFUN 'GET-INTERNAL-RUN-TIME "Lget_internal_run_time" 'NIL 'T NIL
++     NIL) 
++@@ -303,7 +303,7 @@
++ (DEFSYSFUN '= "Lall_the_same" '(T *) 'T NIL T) 
++ (DEFSYSFUN 'GENTEMP "Lgentemp" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'RENAME-PACKAGE "Lrename_package" '(T T *) 'T NIL NIL) 
++-(DEFSYSFUN 'COMMONP "Lcommonp" '(T) 'T NIL T) 
+++(DEFSYSFUN 'COMMONP "siLcommonp" '(T) 'T NIL T) 
++ (DEFSYSFUN 'NUMBERP "Lnumberp" '(T) 'T NIL T) 
++ (DEFSYSFUN 'COPY-READTABLE "Lcopy_readtable" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'RANDOM-STATE-P "Lrandom_state_p" '(T) 'T NIL T) 
++@@ -365,7 +365,7 @@
++ (DEFSYSFUN 'ASSOC-IF "Lassoc_if" '(T T) 'T NIL NIL) 
++ (DEFSYSFUN 'GET-PROPERTIES "Lget_properties" '(T T) '* NIL NIL) 
++ (DEFSYSFUN 'STRING<= "Lstring_le" '(T T *) 'T NIL NIL) 
++-(DEFSYSFUN 'EVALHOOK "Levalhook" '(T T T *) 'T NIL NIL) 
+++(DEFSYSFUN 'EVALHOOK "siLevalhook" '(T T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'FILE-WRITE-DATE "Lfile_write_date" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'LOGCOUNT "Llogcount" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'MERGE-PATHNAMES "Lmerge_pathnames" '(T *) 'T NIL NIL) 
++--- gcl-2.6.12.orig/cmpnew/gcl_make_ufun.lsp
+++++ gcl-2.6.12/cmpnew/gcl_make_ufun.lsp
++@@ -20,13 +20,13 @@
++ 
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (defvar gazonk (make-package 'symbol-table :use nil))
++ (defvar eof (cons nil nil))
++ (defvar *Ufun-out*)
++ 
++-(defvar *str* (make-array 128 :element-type 'string-char :fill-pointer 0))
+++(defvar *str* (make-array 128 :element-type 'character :fill-pointer 0))
++ 
++ (defun make-Ufun (in-files &key (out-file "Ufun_list.lsp"))
++   (with-open-file (*Ufun-out* out-file :direction :output)
++--- gcl-2.6.12.orig/cmpnew/gcl_nocmpinc.lsp
+++++ gcl-2.6.12/cmpnew/gcl_nocmpinc.lsp
++@@ -1,6 +1,6 @@
++ 
++ 
++-(in-package 'compiler)
+++(in-package :compiler)
++ 
++ (defvar *cmpinclude-string* nil)
++ 
++@@ -20,4 +20,4 @@
++ 
++       
++       
++-  
++\ No newline at end of file
+++  
++--- gcl-2.6.12.orig/cmpnew/sys-proclaim.lisp
+++++ gcl-2.6.12/cmpnew/sys-proclaim.lisp
++@@ -1,168 +1,377 @@
++ 
++-(IN-PACKAGE "COMPILER") 
++-(MAPC (LAMBDA (X) (SETF (GET X 'PROCLAIMED-CLOSURE) T))
++-      '(CMP-TMP-MACRO COMPILE DISASSEMBLE CMP-ANON)) 
++-(PROCLAIM '(FTYPE (FUNCTION (STRING *) T) TS)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) T) VAR-REP-LOC C1FUNOB C1STRUCTURE-REF
++-            T1PROGN GET-RETURN-TYPE ADD-REG1 C1VAR C1ECASE
++-            C1SHARP-COMMA C1ASH LTVP CTOP-WRITE C2FUNCTION
++-            DECLARATION-TYPE C1TERPRI C1FUNCALL VAR-REGISTER C1ASSOC
++-            CONS-TO-LISTA WT-LIST C1NTHCDR-CONDITION
++-            C1MULTIPLE-VALUE-CALL CHECK-DOWNWARD TYPE-FILTER
++-            C2TAGBODY-LOCAL BLK-NAME C1FSET T1DEFENTRY C1MEMBER
++-            C1GETHASH C2GO-CCB SCH-LOCAL-FUN C1RPLACD C1RPLACA-NTHCDR
++-            INLINE-POSSIBLE C1MAPC C2VAR WT-FUNCALL-C C1ADD-GLOBALS
++-            FUN-NAME SAVE-FUNOB FUN-CFUN PROCLAIM TAG-REF-CCB
++-            FIXNUM-LOC-P UNWIND-NO-EXIT WT-H1 MAXARGS C1GO INFO-P TAG-P
++-            C1AND INLINE-TYPE VAR-REF-CCB C1MULTIPLE-VALUE-BIND C1THE
++-            C2DM-RESERVE-VL WT-DOWNWARD-CLOSURE-MACRO VAR-NAME C1THROW
++-            INFO-TYPE C1ASH-CONDITION LTVP-EVAL CHARACTER-LOC-P
++-            C2DOWNWARD-FUNCTION C1EXPR C1TAGBODY BLK-REF INFO-VOLATILE
++-            VAR-REF CONSTANT-FOLD-P WT-DATA-PACKAGE-OPERATION FUN-P
++-            VAR-LOC C1PROGN C1NTHCDR VOLATILE TAG-UNWIND-EXIT
++-            REPLACE-CONSTANT NAME-TO-SD SET-TOP C1GET PUSH-ARGS
++-            FUN-REF-CCB INLINE-BOOLE3-STRING C1SETQ C1LOCAL-CLOSURE
++-            CLINK GET-INCLUDED SET-PUSH-CATCH-FRAME FUNCTION-ARG-TYPES
++-            T2DECLARE OBJECT-TYPE CHECK-VREF COPY-INFO
++-            T1DEFINE-STRUCTURE C1BOOLE3 FUN-LEVEL C1NTH C2GET FIX-OPT
++-            C1OR FUNCTION-RETURN-TYPE T1DEFUN T1CLINES FLAGS-POS
++-            SAVE-AVMA WT-DOWN C2GO-CLB C1SWITCH WT-SWITCH-CASE
++-            C1FUNCTION C2RPLACD C1LABELS C1MULTIPLE-VALUE-SETQ WT-VV
++-            C2TAGBODY-CLB WT-CADR C1MAPCAR MACRO-DEF-P T1DEFMACRO
++-            SET-RETURN THE-PARAMETER BLK-REF-CCB AET-C-TYPE
++-            PUSH-ARGS-LISPCALL WRITE-BLOCK-OPEN SET-UP-VAR-CVS TAG-VAR
++-            INFO-SP-CHANGE ADD-LOOP-REGISTERS C1MULTIPLE-VALUE-PROG1
++-            WT-VS C2LOCATION C1COMPILER-LET T3CLINES RESULT-TYPE
++-            PROCLAMATION C1MAPL C1PRINC TAG-LABEL C2FUNCALL-AUX BLK-VAR
++-            TAG-REF-CLB C2TAGBODY-CCB VERIFY-DATA-VECTOR C1MAPCAN
++-            BLK-EXIT WT-VS-BASE REGISTER UNDEFINED-VARIABLE
++-            SYSTEM:UNDEF-COMPILER-MACRO C1BLOCK C1MAPLIST
++-            ARGS-CAUSE-SIDE-EFFECT C2BIND C1LET WT-SYMBOL-FUNCTION
++-            CMP-MACRO-FUNCTION WT1 C1MEMQ BLK-REF-CLB ADD-ADDRESS
++-            GET-LOCAL-ARG-TYPES C1UNWIND-PROTECT REP-TYPE ADD-CONSTANT
++-            C1IF C1QUOTE C1FMLA-CONSTANT WT-DATA1 NAME-SD1 BLK-P
++-            C1CATCH CMP-MACROEXPAND SHORT-FLOAT-LOC-P T3ORDINARY
++-            C1LENGTH NEED-TO-SET-VS-POINTERS C1DOWNWARD-FUNCTION C1FLET
++-            TAG-SWITCH TAG-REF PARSE-CVSPECS TAG-NAME VAR-P VAR-KIND
++-            C1VREF C2GETHASH LONG-FLOAT-LOC-P C1MAPCON C1NTH-CONDITION
++-            WT-FUNCTION-LINK WT-VAR-DECL C1STACK-LET ADD-SYMBOL T1DEFLA
++-            C2EXPR* C1LOAD-TIME-VALUE C1DM-BAD-KEY C1PROGV FSET-FN-NAME
++-            C2VALUES FUN-REF C2VAR-KIND C1PSETQ VARARG-P T1ORDINARY
++-            C2GO-LOCAL C1LET* C2DM-RESERVE-V PUSH-DATA-INCF
++-            C1DEFINE-STRUCTURE DEFAULT-INIT MDELETE-FILE
++-            C1BOOLE-CONDITION C2RPLACA C1VALUES GET-ARG-TYPES WT-CAR
++-            FUN-INFO C1DECLARE C1STRUCTURE-SET WT-VS* CMP-MACROEXPAND-1
++-            SCH-GLOBAL GET-LOCAL-RETURN-TYPE C1EVAL-WHEN C2TAGBODY-BODY
++-            C1APPLY C1LOCAL-FUN C1MACROLET ADD-OBJECT C1RETURN-FROM
++-            SAFE-SYSTEM RESET-INFO-TYPE T1DEFCFUN C1RPLACA WT-CDR
++-            VAR-TYPE T1MACROLET C1LIST-NTH INFO-CHANGED-ARRAY
++-            INFO-REFERRED-ARRAY BLK-VALUE-TO-GO ADD-OBJECT2 WT-CCB-VS)) 
++-(PROCLAIM '(FTYPE (FUNCTION (*) *) INLINE-BOOLE3)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) FIXNUM) F-TYPE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T (VECTOR T) FIXNUM T) FIXNUM) PUSH-ARRAY)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T (VECTOR T) FIXNUM FIXNUM T) FIXNUM)
++-            BSEARCHLEQ)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) *) C2EXPR WT-FIXNUM-LOC WT-LONG-FLOAT-LOC
++-            C2OR WT-SHORT-FLOAT-LOC CMP-EVAL C2PROGN WT-TO-STRING
++-            SET-LOC CMP-TOPLEVEL-EVAL VV-STR T1EXPR T1EVAL-WHEN WT-LOC
++-            C2AND WT-CHARACTER-LOC)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (*) T) FCALLN-INLINE MAKE-BLK MAKE-FUN
++-            LIST*-INLINE WT-CLINK COMPILE-FILE C2FSET MAKE-TAG CS-PUSH
++-            LIST-INLINE MAKE-VAR COMPILER-COMMAND MAKE-INFO)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (STRING FIXNUM FIXNUM) T) DASH-TO-UNDERSCORE-INT)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T) *) C2COMPILER-LET C2FLET C2LABELS C2IF
++-            WT-INLINE)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T *) *) T3DEFUN-AUX)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T) *) C1DM-V C2RETURN-FROM C2DM C1DM-VL
++-            C2APPLY-OPTIMIZE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) T) C2APPLY C2RETURN-CCB C2BIND-INIT
++-            PROCLAIM-VAR PRIN1-CMP C2LAMBDA-EXPR-WITH-KEY
++-            SYSTEM::ADD-DEBUG C2LAMBDA-EXPR-WITHOUT-KEY C2STACK-LET
++-            MULTIPLE-VALUE-CHECK C1DECL-BODY COMPILER-CC C1EXPR*
++-            C2MULTIPLE-VALUE-PROG1 CO1VECTOR-PUSH
++-            ARGS-INFO-CHANGED-VARS C2DM-BIND-INIT C1PROGN*
++-            CO1WRITE-CHAR COERCE-LOC WT-FIXNUM-VALUE IS-REP-REFERRED
++-            C2MULTIPLE-VALUE-CALL CO1SPECIAL-FIX-DECL INLINE-PROC
++-            WT-CHARACTER-VALUE SET-VS C2PSETQ T3SHARP-COMMA
++-            STRUCT-TYPE-OPT WT-MAKE-DCLOSURE C2DM-BIND-VL SET-JUMP-TRUE
++-            DO-MACRO-EXPANSION CO1SCHAR C2BLOCK-CLB
++-            C2LIST-NTH-IMMEDIATE C2DM-BIND-LOC WT-LONG-FLOAT-VALUE
++-            CO1CONS COMPILER-CLEAR-COMPILER-PROPERTIES C2EXPR-TOP
++-            ARGS-INFO-REFERRED-VARS C2MEMBER!2 C2MULTIPLE-VALUE-SETQ
++-            C2SETQ ADD-DEBUG-INFO GET-INLINE-LOC RESULT-TYPE-FROM-ARGS
++-            C2BIND-LOC CO1STRUCTURE-PREDICATE C1ARGS SHIFT<< UNWIND-BDS
++-            MAYBE-EVAL C2UNWIND-PROTECT TYPE-AND C2CALL-LOCAL C2THROW
++-            CO1TYPEP SET-BDS-BIND C1SETQ1 C2CATCH TYPE>= C1LAMBDA-FUN
++-            NEED-TO-PROTECT C2ASSOC!2 CO1READ-BYTE CO1LDB
++-            CONVERT-CASE-TO-SWITCH FAST-READ MAKE-USER-INIT
++-            CO1CONSTANT-FOLD C1FMLA CHECK-FNAME-ARGS
++-            COERCE-LOC-STRUCTURE-REF WT-SHORT-FLOAT-VALUE C2BLOCK-CCB
++-            ADD-INFO CAN-BE-REPLACED CO1READ-CHAR C2CALL-LAMBDA
++-            CFAST-WRITE PUSH-CHANGED-VARS SHIFT>> JUMPS-TO-P CO1SUBLIS
++-            C1CONSTANT-VALUE C2RETURN-CLB WT-VAR CHECK-END C2EXPR-TOP*
++-            WT-V*-MACROS SET-JUMP-FALSE CMPFIX-ARGS SET-DBIND
++-            CO1WRITE-BYTE CO1EQL COMPILER-DEF-HOOK WT-REQUIREDS)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T *) *) COMPILE-FILE1)) 
++-(PROCLAIM '(FTYPE (FUNCTION (FIXNUM FIXNUM) T) MLIN)) 
++-(PROCLAIM '(FTYPE (FUNCTION (STRING) T) DASH-TO-UNDERSCORE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) FIXNUM) PROCLAIMED-ARGD ANALYZE-REGS1
++-            ANALYZE-REGS)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T FIXNUM) T) MEMOIZED-HASH-EQUAL)) 
++-(PROCLAIM '(FTYPE (FUNCTION ((VECTOR T)) T) COPY-ARRAY)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) *) C2BLOCK-LOCAL C1SYMBOL-FUN C1BODY
++-            C2BLOCK C2DECL-BODY C2RETURN-LOCAL NCONC-FILES
++-            WT-INLINE-LOC COMPILER-BUILD)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T *) T) WT-CVAR C1LAMBDA-EXPR UNWIND-EXIT
++-            CMPWARN WT-COMMENT WT-INTEGER-LOC CMPERR ADD-INIT
++-            FAST-LINK-PROCLAIMED-TYPE-P CMPNOTE C1CASE INIT-NAME)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T) T) T3DEFUN-VARARG C2STRUCTURE-REF
++-            C2CALL-UNKNOWN-GLOBAL C1MAKE-VAR C2SWITCH WT-GLOBAL-ENTRY
++-            C2CALL-GLOBAL T3INIT-FUN MY-CALL T3DEFUN-NORMAL)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T) T) CJT WT-INLINE-INTEGER CMP-EXPAND-MACRO
++-            CHECK-FORM-TYPE SET-VAR C2CASE ADD-FUNCTION-PROCLAMATION
++-            INLINE-TYPE-MATCHES T3DEFCFUN C2MAPCAN AND-FORM-TYPE
++-            C2PROGV C1DM WT-INLINE-CHARACTER C2MULTIPLE-VALUE-BIND
++-            C2FUNCALL-SFUN C2LET MYSUB C-FUNCTION-NAME WT-MAKE-CCLOSURE
++-            C2GO WT-INLINE-COND ADD-FAST-LINK C1STRUCTURE-REF1 C2MAPCAR
++-            BOOLE3 TOO-FEW-ARGS FIX-DOWN-ARGS COMPILER-PASS2
++-            GET-INLINE-INFO C2LET* WT-INLINE-SHORT-FLOAT
++-            WT-IF-PROCLAIMED C2PRINC ASSIGN-DOWN-VARS
++-            WT-INLINE-LONG-FLOAT C2TAGBODY C1MAP-FUNCTIONS CHECK-VDECL
++-            MAKE-INLINE-STRING WT-INLINE-FIXNUM C2MAPC CAN-BE-REPLACED*
++-            SUBLIS1-INLINE TOO-MANY-ARGS ADD-FUNCTION-DECLARATION CJF)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T *) T) T3LOCAL-DCFUN T3LOCAL-FUN)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T) T) T2DEFUN T3DEFUN C2STRUCTURE-SET
++-            C1APPLY-OPTIMIZE T3DEFUN-LOCAL-ENTRY)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T *) T) WT-SIMPLE-CALL GET-OUTPUT-PATHNAME)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T *) T) INLINE-ARGS C2FUNCALL C2LAMBDA-EXPR
++-            LINK)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T) T) T3DEFMACRO DEFSYSFUN T2DEFENTRY
++-            T2DEFMACRO T3DEFENTRY)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION NIL T) WT-DATA-BEGIN PRINT-COMPILER-INFO
++-            GAZONK-NAME CCB-VS-PUSH INC-INLINE-BLOCKS
++-            PRINT-CURRENT-FORM C1NIL WT-DATA-FILE
++-            ADD-LOAD-TIME-SHARP-COMMA CVS-PUSH RESET-TOP WT-CVARS
++-            BABOON WT-FASD-DATA-FILE WT-DATA-END INIT-ENV
++-            TAIL-RECURSION-POSSIBLE WFS-ERROR C1T VS-PUSH
++-            WT-NEXT-VAR-ARG WT-FIRST-VAR-ARG WT-C-PUSH
++-            CLOSE-INLINE-BLOCKS)) 
++\ No newline at end of file
+++(COMMON-LISP::IN-PACKAGE "COMPILER") 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::STRING COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMPILER::TS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         COMPILER::C1MULTIPLE-VALUE-BIND COMPILER::C1VALUES
+++         COMPILER::C1RPLACA COMPILER::FUN-P
+++         COMPILER::FUNCTION-ARG-TYPES COMPILER::C1STRUCTURE-REF
+++         COMPILER::GET-RETURN-TYPE COMPILER::WT-FUNCALL-C
+++         COMPILER::MACRO-DEF-P COMPILER::T1DEFUN COMPILER::C1ASSOC
+++         COMPILER::SET-UP-VAR-CVS COMPILER::C2FUNCTION
+++         COMPILER::C1DM-BAD-KEY COMPILER::ADD-OBJECT
+++         COMPILER::WT-SWITCH-CASE COMPILER::VARARG-P
+++         COMPILER::C1TAGBODY COMPILER::C2GET COMPILER::VAR-REF
+++         COMPILER::SCH-LOCAL-FUN COMPILER::ADD-SYMBOL
+++         COMPILER::TAG-UNWIND-EXIT COMPILER::C1MULTIPLE-VALUE-SETQ
+++         COMPILER::C1PRINC COMPILER::WT-VAR-DECL COMPILER::C1QUOTE
+++         COMPILER::C2RPLACD COMPILER::CHECK-VREF
+++         COMPILER::PUSH-ARGS-LISPCALL COMPILER::C1MAPLIST
+++         COMPILER::ADD-REG1 COMPILER::C1OR COMPILER::WT-SYMBOL-FUNCTION
+++         COMPILER::TAG-P COMPILER::SAFE-SYSTEM COMPILER::C1ECASE
+++         COMPILER::LTVP COMPILER::GET-INCLUDED COMPILER::INFO-P
+++         COMPILER::FUN-INFO COMPILER::C1LOAD-TIME-VALUE
+++         COMPILER::GET-LOCAL-ARG-TYPES COMPILER::BLK-P
+++         COMPILER::BLK-EXIT COMPILER::C2VAR-KIND COMPILER::C2LOCATION
+++         COMPILER::WT1 COMPILER::WT-CCB-VS
+++         COMPILER::WT-DOWNWARD-CLOSURE-MACRO COMPILER::BLK-REF-CCB
+++         COMPILER::UNDEFINED-VARIABLE COMPILER::C1MULTIPLE-VALUE-CALL
+++         COMPILER::VAR-LOC COMPILER::C1SETQ COMPILER::C1NTH-CONDITION
+++         COMPILER::C2RPLACA COMPILER::FUN-REF COMPILER::C2VAR
+++         COMPILER::WT-CAR COMPILER::WT-LIST COMPILER::WRITE-BLOCK-OPEN
+++         COMPILER::INFO-VOLATILE COMPILER::GET-LOCAL-RETURN-TYPE
+++         COMPILER::AET-C-TYPE COMPILER::PUSH-ARGS COMPILER::TAG-REF-CLB
+++         COMPILER::BLK-REF COMPILER::VAR-P COMPILER::C1ADD-GLOBALS
+++         COMPILER::T3ORDINARY COMPILER::ADD-OBJECT2 COMPILER::SET-TOP
+++         COMPILER::T1DEFLA COMPILER::C1FUNCTION COMPILER::T3CLINES
+++         COMPILER::T1DEFCFUN COMPILER::C1VREF COMPILER::C1ASH
+++         COMPILER::BLK-NAME COMPILER::WT-CADR COMPILER::WT-DOWN
+++         COMPILER::C1TERPRI COMPILER::C2GETHASH COMPILER::C2GO-CCB
+++         COMPILER::SAVE-FUNOB COMPILER::T2DECLARE COMPILER::FUN-REF-CCB
+++         COMPILER::C1MAPCAR COMPILER::T1DEFMACRO
+++         COMPILER::C2TAGBODY-LOCAL COMPILER::C1STACK-LET
+++         COMPILER::INFO-TYPE COMPILER::T1MACROLET COMPILER::C1LET*
+++         COMPILER::C1RPLACD COMPILER::DECLARATION-TYPE
+++         COMPILER::T1ORDINARY COMPILER::C2EXPR* COMPILER::C1LOCAL-FUN
+++         COMPILER::WT-DATA-PACKAGE-OPERATION
+++         COMPILER::C1BOOLE-CONDITION SYSTEM::UNDEF-COMPILER-MACRO
+++         COMPILER::C2TAGBODY-BODY COMPILER::C1NTHCDR COMPILER::C1VAR
+++         COMPILER::C1MULTIPLE-VALUE-PROG1 COMPILER::C1NTHCDR-CONDITION
+++         COMPILER::CONSTANT-FOLD-P COMPILER::C1UNWIND-PROTECT
+++         COMPILER::PROCLAMATION COMPILER::C1NTH COMPILER::C1RETURN-FROM
+++         COMPILER::INFO-SP-CHANGE COMPILER::C1LENGTH
+++         COMPILER::CMP-MACRO-FUNCTION COMPILER::BLK-REF-CLB
+++         COMPILER::NAME-TO-SD COMPILER::CTOP-WRITE COMPILER::C1MAPCON
+++         COMPILER::C1FUNOB COMPILER::FIX-OPT COMPILER::C1RPLACA-NTHCDR
+++         COMPILER::C1FLET COMPILER::RESULT-TYPE COMPILER::C1CATCH
+++         COMPILER::C2DM-RESERVE-V COMPILER::VAR-NAME
+++         COMPILER::CMP-MACROEXPAND COMPILER::VERIFY-DATA-VECTOR
+++         COMPILER::T1CLINES COMPILER::C1MAPL COMPILER::T1DEFENTRY
+++         COMPILER::TAG-REF-CCB COMPILER::WT-VS
+++         COMPILER::LONG-FLOAT-LOC-P COMPILER::C1MAPCAN
+++         COMPILER::OBJECT-TYPE COMPILER::ADD-ADDRESS
+++         COMPILER::RESET-INFO-TYPE COMPILER::C1BOOLE3 COMPILER::C1MEMQ
+++         COMPILER::C1DEFINE-STRUCTURE COMPILER::TYPE-FILTER
+++         COMPILER::UNWIND-NO-EXIT COMPILER::C1FMLA-CONSTANT
+++         COMPILER::C2DM-RESERVE-VL COMPILER::C1FSET COMPILER::LTVP-EVAL
+++         COMPILER::C1GO COMPILER::WT-VV COMPILER::INFO-CHANGED-ARRAY
+++         COMPILER::C1FUNCALL COMPILER::C2TAGBODY-CCB
+++         COMPILER::TAG-LABEL COMPILER::VAR-KIND COMPILER::WT-VS*
+++         COMPILER::VAR-TYPE COMPILER::C2GO-LOCAL COMPILER::REGISTER
+++         COMPILER::T1PROGN COMPILER::C1BLOCK COMPILER::TAG-SWITCH
+++         COMPILER::VAR-REP-LOC COMPILER::C2BIND
+++         COMPILER::SET-PUSH-CATCH-FRAME COMPILER::COPY-INFO
+++         COMPILER::C1LIST-NTH COMPILER::CONS-TO-LISTA
+++         COMPILER::FUN-LEVEL COMPILER::C1DOWNWARD-FUNCTION
+++         COMPILER::THE-PARAMETER COMPILER::C2VALUES COMPILER::C1LABELS
+++         COMPILER::MAXARGS COMPILER::VAR-REF-CCB COMPILER::MDELETE-FILE
+++         COMPILER::WT-FUNCTION-LINK COMPILER::SAVE-AVMA
+++         COMPILER::VOLATILE COMPILER::ADD-CONSTANT COMPILER::C1APPLY
+++         COMPILER::C1GETHASH COMPILER::FUN-NAME COMPILER::DEFAULT-INIT
+++         COMPILER::CLINK COMPILER::WT-CDR COMPILER::PARSE-CVSPECS
+++         COMPILER::REP-TYPE COMPILER::C2GO-CLB
+++         COMPILER::ARGS-CAUSE-SIDE-EFFECT COMPILER::PUSH-DATA-INCF
+++         COMPILER::SCH-GLOBAL COMPILER::C1STRUCTURE-SET
+++         COMPILER::TAG-NAME COMPILER::INFO-REFERRED-ARRAY
+++         COMPILER::C1EXPR COMPILER::C1GET COMPILER::BLK-VAR
+++         COMPILER::TAG-REF COMPILER::C1MAPC COMPILER::SET-RETURN
+++         COMPILER::SHORT-FLOAT-LOC-P COMPILER::C1DECLARE
+++         COMPILER::WT-DATA1 COMPILER::FLAGS-POS
+++         COMPILER::BLK-VALUE-TO-GO COMPILER::NAME-SD1
+++         COMPILER::C2DOWNWARD-FUNCTION COMPILER::C1SHARP-COMMA
+++         COMPILER::INLINE-POSSIBLE COMPILER::WT-H1
+++         COMPILER::FIXNUM-LOC-P COMPILER::C1LET COMPILER::C1IF
+++         COMPILER::C1THE COMPILER::FUNCTION-RETURN-TYPE
+++         COMPILER::GET-ARG-TYPES COMPILER::INLINE-TYPE
+++         COMPILER::FUN-CFUN COMPILER::TAG-VAR COMPILER::CHARACTER-LOC-P
+++         COMPILER::CHECK-DOWNWARD COMPILER::C1PSETQ
+++         COMPILER::INLINE-BOOLE3-STRING COMPILER::C1THROW
+++         COMPILER::FSET-FN-NAME COMPILER::T1DEFINE-STRUCTURE
+++         COMPILER::NEED-TO-SET-VS-POINTERS COMPILER::C1PROGN
+++         COMPILER::C2FUNCALL-AUX COMPILER::C1MACROLET COMPILER::C1AND
+++         COMPILER::WT-VS-BASE COMPILER::ADD-LOOP-REGISTERS
+++         COMPILER::VAR-REGISTER COMPILER::C1PROGV COMPILER::C1SWITCH
+++         COMPILER::C1MEMBER COMPILER::C2TAGBODY-CLB
+++         COMPILER::CMP-MACROEXPAND-1 COMMON-LISP::PROCLAIM
+++         COMPILER::C1ASH-CONDITION COMPILER::C1EVAL-WHEN
+++         COMPILER::C1LOCAL-CLOSURE COMPILER::REPLACE-CONSTANT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         COMPILER::INLINE-BOOLE3)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         COMPILER::C2DM COMPILER::C1DM-V COMPILER::C1DM-VL
+++         COMPILER::C2RETURN-FROM COMPILER::C2APPLY-OPTIMIZE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         COMPILER::WT-INLINE COMPILER::C2IF COMPILER::C2LABELS
+++         COMPILER::C2FLET)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMPILER::T3DEFUN-AUX)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         COMPILER::F-TYPE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::STRING) COMMON-LISP::T)
+++         COMPILER::DASH-TO-UNDERSCORE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMPILER::INIT-NAME COMPILER::ADD-INIT COMPILER::C1LAMBDA-EXPR
+++         COMPILER::WT-CVAR COMPILER::C1CASE COMPILER::WT-COMMENT
+++         COMPILER::CMPERR COMPILER::WT-INTEGER-LOC COMPILER::CMPNOTE
+++         COMPILER::FAST-LINK-PROCLAIMED-TYPE-P COMPILER::UNWIND-EXIT
+++         COMPILER::CMPWARN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         COMPILER::C2RETURN-LOCAL COMPILER::C2BLOCK-LOCAL
+++         COMPILER::NCONC-FILES COMPILER::C1SYMBOL-FUN COMPILER::C2BLOCK
+++         COMPILER::C1BODY COMPILER::COMPILER-BUILD
+++         COMPILER::C2DECL-BODY COMPILER::WT-INLINE-LOC)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'SYSTEM::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(COMPILER::CMP-ANON COMMON-LISP::COMPILE COMPILER::CMP-TMP-MACRO
+++         COMMON-LISP::DISASSEMBLE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T (COMMON-LISP::VECTOR COMMON-LISP::T)
+++                 COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM
+++                 COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         COMPILER::BSEARCHLEQ)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T (COMMON-LISP::VECTOR COMMON-LISP::T)
+++                 COMMON-LISP::FIXNUM COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         COMPILER::PUSH-ARRAY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMPILER::AND-FORM-TYPE COMPILER::SET-VAR COMPILER::C2LET*
+++         COMPILER::COMPILER-PASS2 COMPILER::ADD-FUNCTION-DECLARATION
+++         COMPILER::BOOLE3 COMPILER::C1MAP-FUNCTIONS
+++         COMPILER::TOO-MANY-ARGS COMPILER::CHECK-FORM-TYPE
+++         COMPILER::C2LET COMPILER::C-FUNCTION-NAME
+++         COMPILER::WT-INLINE-SHORT-FLOAT COMPILER::FIX-DOWN-ARGS
+++         COMPILER::C2PRINC COMPILER::WT-IF-PROCLAIMED
+++         COMPILER::ADD-FAST-LINK COMPILER::C2MULTIPLE-VALUE-BIND
+++         COMPILER::C2MAPCAN COMPILER::CJT COMPILER::CHECK-VDECL
+++         COMPILER::INLINE-TYPE-MATCHES COMPILER::WT-INLINE-LONG-FLOAT
+++         COMPILER::C2GO COMPILER::CAN-BE-REPLACED* COMPILER::MYSUB
+++         COMPILER::ASSIGN-DOWN-VARS COMPILER::C2MAPC
+++         COMPILER::WT-INLINE-INTEGER COMPILER::GET-INLINE-INFO
+++         COMPILER::CJF COMPILER::TOO-FEW-ARGS COMPILER::T3DEFCFUN
+++         COMPILER::CMP-EXPAND-MACRO COMPILER::WT-MAKE-CCLOSURE
+++         COMPILER::C2FUNCALL-SFUN COMPILER::C1DM
+++         COMPILER::WT-INLINE-COND COMPILER::C2TAGBODY
+++         COMPILER::WT-INLINE-CHARACTER COMPILER::C2PROGV
+++         COMPILER::C2MAPCAR COMPILER::C1STRUCTURE-REF1 COMPILER::C2CASE
+++         COMPILER::ADD-FUNCTION-PROCLAMATION
+++         COMPILER::MAKE-INLINE-STRING COMPILER::SUBLIS1-INLINE
+++         COMPILER::WT-INLINE-FIXNUM)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMPILER::C2LAMBDA-EXPR COMPILER::C2FUNCALL COMPILER::LINK
+++         COMPILER::INLINE-ARGS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMPILER::C2STRUCTURE-REF COMPILER::WT-GLOBAL-ENTRY
+++         COMPILER::T3DEFUN-VARARG COMPILER::T3DEFUN-NORMAL
+++         COMPILER::C2CALL-GLOBAL COMPILER::C1MAKE-VAR
+++         COMPILER::C2CALL-UNKNOWN-GLOBAL COMPILER::C2SWITCH
+++         COMPILER::T3INIT-FUN COMPILER::MY-CALL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMPILER::DEFSYSFUN COMPILER::T2DEFMACRO COMPILER::T2DEFENTRY
+++         COMPILER::T3DEFMACRO COMPILER::T3DEFENTRY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMPILER::T2DEFUN COMPILER::C1APPLY-OPTIMIZE COMPILER::T3DEFUN
+++         COMPILER::C2STRUCTURE-SET COMPILER::T3DEFUN-LOCAL-ENTRY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMPILER::WT-SIMPLE-CALL COMPILER::GET-OUTPUT-PATHNAME)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMPILER::T3LOCAL-FUN COMPILER::T3LOCAL-DCFUN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         COMPILER::C2PROGN COMPILER::WT-LONG-FLOAT-LOC COMPILER::C2EXPR
+++         COMPILER::WT-FIXNUM-LOC COMPILER::WT-CHARACTER-LOC
+++         COMPILER::C2AND COMPILER::T1EXPR COMPILER::CMP-TOPLEVEL-EVAL
+++         COMPILER::WT-SHORT-FLOAT-LOC COMPILER::C2OR COMPILER::WT-LOC
+++         COMPILER::CMP-EVAL COMPILER::T1EVAL-WHEN COMPILER::SET-LOC
+++         COMPILER::VV-STR COMPILER::WT-TO-STRING)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         COMPILER::MAKE-FUN COMPILER::MAKE-BLK
+++         COMMON-LISP::COMPILE-FILE COMPILER::FCALLN-INLINE
+++         COMPILER::MAKE-INFO COMPILER::CS-PUSH COMPILER::MAKE-VAR
+++         COMPILER::LIST-INLINE COMPILER::C2FSET COMPILER::WT-CLINK
+++         COMPILER::COMPILER-COMMAND COMPILER::MAKE-TAG
+++         COMPILER::LIST*-INLINE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION ((COMMON-LISP::VECTOR COMMON-LISP::T))
+++             COMMON-LISP::T)
+++         COMPILER::COPY-ARRAY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMPILER::C2EXPR-TOP COMPILER::CO1SUBLIS
+++         COMPILER::C2CALL-LAMBDA COMPILER::GET-INLINE-LOC
+++         COMPILER::CHECK-END COMPILER::C2PSETQ COMPILER::TYPE-AND
+++         COMPILER::TYPE>= COMPILER::C2MULTIPLE-VALUE-PROG1
+++         COMPILER::CO1SCHAR SYSTEM::ADD-DEBUG COMPILER::C2BLOCK-CCB
+++         COMPILER::C2DM-BIND-VL COMPILER::MAKE-USER-INIT
+++         COMPILER::NEED-TO-PROTECT COMPILER::FAST-READ
+++         COMPILER::RESULT-TYPE-FROM-ARGS COMPILER::C2BIND-INIT
+++         COMPILER::JUMPS-TO-P COMPILER::C2MEMBER!2
+++         COMPILER::C2CALL-LOCAL COMPILER::C2BLOCK-CLB
+++         COMPILER::ARGS-INFO-CHANGED-VARS COMPILER::INLINE-PROC
+++         COMPILER::C2THROW COMPILER::C1DECL-BODY
+++         COMPILER::WT-MAKE-DCLOSURE COMPILER::CO1WRITE-CHAR
+++         COMPILER::C1SETQ1 COMPILER::SET-JUMP-FALSE COMPILER::CO1CONS
+++         COMPILER::CO1VECTOR-PUSH COMPILER::SET-VS COMPILER::SHIFT>>
+++         COMPILER::COERCE-LOC-STRUCTURE-REF COMPILER::WT-FIXNUM-VALUE
+++         COMPILER::C2CATCH COMPILER::C2RETURN-CCB COMPILER::MAYBE-EVAL
+++         COMPILER::C2ASSOC!2 COMPILER::C2DM-BIND-INIT
+++         COMPILER::C2STACK-LET COMPILER::C2LAMBDA-EXPR-WITH-KEY
+++         COMPILER::ARGS-INFO-REFERRED-VARS
+++         COMPILER::C2MULTIPLE-VALUE-SETQ COMPILER::C1PROGN*
+++         COMPILER::WT-LONG-FLOAT-VALUE COMPILER::C2MULTIPLE-VALUE-CALL
+++         COMPILER::WT-SHORT-FLOAT-VALUE COMPILER::CO1CONSTANT-FOLD
+++         COMPILER::C1CONSTANT-VALUE COMPILER::C1EXPR*
+++         COMPILER::CO1SPECIAL-FIX-DECL COMPILER::C2RETURN-CLB
+++         COMPILER::CMPFIX-ARGS COMPILER::PROCLAIM-VAR COMPILER::C2APPLY
+++         COMPILER::DO-MACRO-EXPANSION COMPILER::CFAST-WRITE
+++         COMPILER::PRIN1-CMP COMPILER::SHIFT<< COMPILER::WT-REQUIREDS
+++         COMPILER::C2EXPR-TOP* COMPILER::UNWIND-BDS
+++         COMPILER::MULTIPLE-VALUE-CHECK COMPILER::COERCE-LOC
+++         COMPILER::STRUCT-TYPE-OPT COMPILER::CO1READ-CHAR
+++         COMPILER::ADD-DEBUG-INFO COMPILER::C2LIST-NTH-IMMEDIATE
+++         COMPILER::WT-VAR COMPILER::C2LAMBDA-EXPR-WITHOUT-KEY
+++         COMPILER::CHECK-FNAME-ARGS COMPILER::CAN-BE-REPLACED
+++         COMPILER::WT-CHARACTER-VALUE COMPILER::C2UNWIND-PROTECT
+++         COMPILER::SET-DBIND COMPILER::T3SHARP-COMMA
+++         COMPILER::IS-REP-REFERRED COMPILER::C1FMLA
+++         COMPILER::WT-V*-MACROS COMPILER::C2DM-BIND-LOC
+++         COMPILER::C2BIND-LOC
+++         COMPILER::COMPILER-CLEAR-COMPILER-PROPERTIES
+++         COMPILER::ADD-INFO COMPILER::C2SETQ
+++         COMPILER::PUSH-CHANGED-VARS COMPILER::CO1STRUCTURE-PREDICATE
+++         COMPILER::SET-BDS-BIND COMPILER::SET-JUMP-TRUE
+++         COMPILER::CO1READ-BYTE COMPILER::C1LAMBDA-FUN
+++         COMPILER::CO1TYPEP COMPILER::CONVERT-CASE-TO-SWITCH
+++         COMPILER::COMPILER-DEF-HOOK COMPILER::CO1LDB COMPILER::C1ARGS
+++         COMPILER::CO1WRITE-BYTE COMPILER::CO1EQL
+++         COMPILER::COMPILER-CC)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM) COMMON-LISP::T)
+++         COMPILER::MLIN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMPILER::COMPILE-FILE1)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         COMPILER::WT-DATA-BEGIN COMPILER::WT-C-PUSH COMPILER::WT-CVARS
+++         COMPILER::C1T COMPILER::CVS-PUSH COMPILER::WT-DATA-FILE
+++         COMPILER::ADD-LOAD-TIME-SHARP-COMMA
+++         COMPILER::CLOSE-INLINE-BLOCKS COMPILER::WT-FASD-DATA-FILE
+++         COMPILER::GAZONK-NAME COMPILER::WFS-ERROR
+++         COMPILER::WT-NEXT-VAR-ARG COMPILER::WT-FIRST-VAR-ARG
+++         COMPILER::C1NIL COMPILER::WT-DATA-END COMPILER::RESET-TOP
+++         COMPILER::TAIL-RECURSION-POSSIBLE
+++         COMPILER::PRINT-COMPILER-INFO COMPILER::CCB-VS-PUSH
+++         COMPILER::BABOON COMPILER::INIT-ENV
+++         COMPILER::PRINT-CURRENT-FORM COMPILER::VS-PUSH
+++         COMPILER::INC-INLINE-BLOCKS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::FIXNUM)
+++             COMMON-LISP::T)
+++         COMPILER::MEMOIZED-HASH-EQUAL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         COMPILER::PROCLAIMED-ARGD COMPILER::ANALYZE-REGS1
+++         COMPILER::ANALYZE-REGS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::STRING COMMON-LISP::FIXNUM
+++                 COMMON-LISP::FIXNUM)
+++             COMMON-LISP::T)
+++         COMPILER::DASH-TO-UNDERSCORE-INT)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -7569,9 +7569,6 @@ fi
++ 
++ if test "$enable_ansi" = "yes" ; then
++      SYSTEM=ansi_gcl
++-
++-$as_echo "#define ANSI_COMMON_LISP 1" >>confdefs.h
++-
++      CLSTANDARD=ANSI
++ else
++      SYSTEM=gcl
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -2112,7 +2112,6 @@ AC_ARG_ENABLE(ansi,[--enable-ansi builds
++ 
++ if test "$enable_ansi" = "yes" ; then
++      SYSTEM=ansi_gcl
++-     AC_DEFINE(ANSI_COMMON_LISP,1,[compile ansi compliant image])
++      CLSTANDARD=ANSI
++ else
++      SYSTEM=gcl
++--- gcl-2.6.12.orig/h/amd64-linux.h
+++++ gcl-2.6.12/h/amd64-linux.h
++@@ -21,3 +21,4 @@
++ #define C_GC_OFFSET 4
++ 
++ #define RELOC_H "elf64_i386_reloc.h"
+++#define MAX_CODE_ADDRESS (1L<<31)/*large memory model broken gcc 4.8*/
++--- gcl-2.6.12.orig/h/att_ext.h
+++++ gcl-2.6.12/h/att_ext.h
++@@ -145,8 +145,8 @@ object simple_lispcall();
++ object simple_lispcall_no_event();
++ object simple_symlispcall();
++ object simple_symlispcall_no_event();
++-EXTER object Vevalhook;
++-EXTER object Vapplyhook;
+++EXTER object siVevalhook;
+++EXTER object siVapplyhook;
++ object ieval();
++ object ifuncall(object,int,...);
++ object ifuncall1();
++@@ -301,13 +301,13 @@ EXTER object sLquote;
++ 
++ EXTER object sLlambda;
++ 
++-EXTER object sLlambda_block;
++-EXTER object sLlambda_closure;
++-EXTER object sLlambda_block_closure;
+++EXTER object sSlambda_block;
+++EXTER object sSlambda_closure;
+++EXTER object sSlambda_block_closure;
++ 
++ EXTER object sLfunction;
++-EXTER object sLmacro;
++-EXTER object sLtag;
+++EXTER object sSmacro;
+++EXTER object sStag;
++ EXTER object sLblock;
++ 
++ 
++@@ -359,9 +359,6 @@ object shift_integer();
++ /*  package.d  */
++ EXTER object lisp_package;
++ EXTER object user_package;
++-#ifdef ANSI_COMMON_LISP
++-EXTER object common_lisp_package;
++-#endif
++ EXTER object keyword_package;
++ EXTER object system_package;
++ EXTER object sLApackageA;
++@@ -565,15 +562,13 @@ EXTER object sSfunction_documentation;
++ /*  typespec.c  */
++ EXTER object sLcommon,sLnull,sLcons,sLlist,sLsymbol,sLarray,sLvector,sLbit_vector,sLstring;
++ EXTER object sLsequence,sLsimple_array,sLsimple_vector,sLsimple_bit_vector,sLsimple_string;
++-EXTER object sLcompiled_function,sLpathname,sLcharacter,sLnumber,sLrational,sLfloat,sLstring_char;
+++EXTER object sLcompiled_function,sLpathname,sLcharacter,sLnumber,sLrational,sLfloat;
++ EXTER object sLinteger,sLreal,sLratio,sLshort_float,sLstandard_char,sLfixnum,sLpositive_fixnum, sLcomplex;
++ EXTER object sLsingle_float,sLpackage,sLbignum,sLrandom_state,sLdouble_float,sLstream,sLbit,sLreadtable;
++ EXTER object sLlong_float,sLhash_table,sLstructure,sLboolean;
++ EXTER object sLdivision_by_zero,sLfloating_point_inexact,sLfloating_point_invalid_operation;
++ EXTER object sLfloating_point_overflow,sLfloating_point_underflow;
++ 
++-/* #ifdef ANSI_COMMON_LISP */
++-/* new ansi types */
++ EXTER object sLarithmetic_error,sLbase_char,sLbase_string,sLbroadcast_stream,sLbuilt_in_class;
++ EXTER object sLcell_error,sLclass,sLconcatenated_stream,sLcondition,sLcontrol_error;
++ EXTER object sLecho_stream,sLend_of_file,sLerror,sLextended_char,sLfile_error,sLfile_stream;
++@@ -584,7 +579,6 @@ EXTER object sLstandard_generic_function
++ EXTER object sLstream_error,sLstring_stream,sLstructure_class,sLstyle_warning,sLsynonym_stream;
++ EXTER object sLtwo_way_stream,sLtype_error,sLunbound_slot,sLunbound_variable,sLundefined_function,sLwarning;
++ EXTER object sLmethod_combination,sLstructure_object;
++-/* #endif */
++ 
++ EXTER object sLsatisfies;
++ EXTER object sLmember;
++@@ -595,10 +589,10 @@ EXTER object sLvalues;
++ EXTER object sLmod;
++ EXTER object sLsigned_byte;
++ EXTER object sLunsigned_byte;
++-EXTER object sLsigned_char;
++-EXTER object sLunsigned_char;
++-EXTER object sLsigned_short;
++-EXTER object sLunsigned_short;
+++EXTER object sSsigned_char;
+++EXTER object sSunsigned_char;
+++EXTER object sSsigned_short;
+++EXTER object sSunsigned_short;
++ EXTER object sLA;
++ EXTER object sLplusp;
++ EXTER object TSor_symbol_string;
++--- gcl-2.6.12.orig/h/compdefs.h
+++++ gcl-2.6.12/h/compdefs.h
++@@ -114,3 +114,4 @@ stp_ordinary
++ SIGNED_CHAR(x)
++ FEerror(x,y...)
++ FEwrong_type_argument(x,y)
+++BIT_ENDIAN(x)
++--- gcl-2.6.12.orig/h/elf64_i386_reloc.h
+++++ gcl-2.6.12/h/elf64_i386_reloc.h
++@@ -8,5 +8,6 @@
++       add_val(where,~0L,s+a);
++       break;
++     case R_X86_64_PC32:
+++      massert(ovchks(s+a-p,~MASK(32)));                
++       add_val(where,MASK(32),s+a-p);
++       break;
++--- gcl-2.6.12.orig/h/lu.h
+++++ gcl-2.6.12/h/lu.h
++@@ -94,12 +94,12 @@ struct symbol {
++   object s_dbind;
++   void (*s_sfdef) ();
++   char *s_self;
+++  short s_stype;
+++  short s_mflag;
++   int s_fillp;
++   object s_gfdef;
++   object s_plist;
++   object s_hpack;
++-  short s_stype;
++-  short s_mflag;
++   SPAD;
++ 
++ };
++@@ -142,6 +142,7 @@ struct hashtable {
++   int ht_nent;
++   int ht_size;
++   short ht_test;
+++  short ht_static;
++   SPAD;
++ 
++ };
++@@ -152,10 +153,10 @@ struct array {
++   short a_rank;
++   short a_elttype;
++   object *a_self;
++-  short a_adjustable;
++-  short a_offset;
++   int a_dim;
++   int *a_dims;
+++  short a_adjustable;
+++  short a_offset;
++   SPAD;
++ 
++ };
++@@ -168,8 +169,8 @@ struct vector {
++   short v_hasfillp;
++   short v_elttype;
++   object *v_self;
++-  int v_fillp;
++   int v_dim;
+++  int v_fillp;
++   short v_adjustable;
++   short v_offset;
++   SPAD;
++@@ -181,8 +182,8 @@ struct string {
++   short st_hasfillp;
++   short st_adjustable;
++   char *st_self;
++-  int st_fillp;
++   int st_dim;
+++  int st_fillp;
++ };
++ 
++ struct ustring {
++@@ -191,8 +192,8 @@ struct ustring {
++   short ust_hasfillp;
++   short ust_adjustable;
++   unsigned char *ust_self;
++-  int ust_fillp;
++   int ust_dim;
+++  int ust_fillp;
++ };
++ 
++ struct bitvector {
++@@ -201,8 +202,8 @@ struct bitvector {
++   short bv_hasfillp;
++   short bv_elttype;
++   char *bv_self;
++-  int bv_fillp;
++   int bv_dim;
+++  int bv_fillp;
++   short bv_adjustable;
++   short bv_offset;
++   SPAD;
++@@ -214,10 +215,10 @@ struct fixarray {
++   short fixa_rank;
++   short fixa_elttype;
++   fixnum *fixa_self;
++-  short fixa_adjustable;
++-  short fixa_offset;
++   int fixa_dim;
++   int *fixa_dims;
+++  short fixa_adjustable;
+++  short fixa_offset;
++   SPAD;
++ };
++ 
++@@ -227,10 +228,10 @@ struct sfarray {
++   short sfa_rank;
++   short sfa_elttype;
++   shortfloat *sfa_self;
++-  short sfa_adjustable;
++-  short sfa_offset;
++   int sfa_dim;
++   int *sfa_dims;
+++  short sfa_adjustable;
+++  short sfa_offset;
++   SPAD;
++ };
++ 
++@@ -240,10 +241,10 @@ struct lfarray {
++   short lfa_rank;
++   short lfa_elttype;
++   longfloat *lfa_self;
++-  short lfa_adjustable;
++-  short lfa_offset;
++   int lfa_dim;
++   int *lfa_dims;
+++  short lfa_adjustable;
+++  short lfa_offset;
++   SPAD;
++ };
++ 
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -22,9 +22,6 @@ void segmentation_catcher();
++ EXTER int gc_enabled, saving_system;
++ 
++ EXTER object lisp_package,user_package;
++-#ifdef ANSI_COMMON_LISP
++-EXTER object common_lisp_package;
++-#endif
++ EXTER char *core_end;
++ EXTER int catch_fatal;
++ EXTER long real_maxpage;
++@@ -105,6 +102,7 @@ void old(void) \
++ #define make_function(a_,b_) make_function_internal(a_,FFN(b_))
++ #define make_si_function(a_,b_) make_si_function_internal(a_,FFN(b_))
++ #define make_special_form(a_,b_) make_special_form_internal(a_,FFN(b_))
+++#define make_si_special_form(a_,b_) make_si_special_form_internal(a_,FFN(b_))
++ #define make_si_sfun(a_,b_,c_) make_si_sfun_internal(a_,FFN(b_),c_)
++ #define STATD static
++ #else
++@@ -114,6 +112,7 @@ void old(void) \
++ #define make_function(a_,b_) make_function_internal(a_,b_)
++ #define make_si_function(a_,b_) make_si_function_internal(a_,b_)
++ #define make_special_form(a_,b_) make_special_form_internal(a_,b_)
+++#define make_si_special_form(a_,b_) make_si_special_form_internal(a_,b_)
++ #define make_si_sfun(a_,b_,c_) make_si_sfun_internal(a_,b_,c_)
++ #define STATD
++ #endif
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -77,7 +77,7 @@ Foundation, 675 Mass Ave, Cambridge, MA
++      Definition of the type of LISP objects.
++ */
++ typedef union int_object iobject;
++-union int_object {object o; fixnum i;};
+++union int_object {object *o; fixnum i;};
++ 
++ #define      SMALL_FIXNUM_LIMIT      1024
++ 
++@@ -150,6 +150,12 @@ enum aelttype {                  /*  array element type
++ #define SET_BV_OFFSET(x,val) ((type_of(x)==t_bitvector ? x->bv.bv_offset = val : \
++                     type_of(x)== t_array ? x->a.a_offset=val : (abort(),0)))
++ 
+++#if !defined(DOUBLE_BIGENDIAN)
+++#define BIT_ENDIAN(a_) (7-(a_))
+++#else
+++#define BIT_ENDIAN(a_) (a_)
+++#endif
+++
++ 
++ #define S_DATA(x) ((struct s_data *)((x)->str.str_self))
++ #define SLOT_TYPE(def,i) (((S_DATA(def))->raw->ust.ust_self[i]))
++@@ -304,9 +310,9 @@ EXTER struct typemanager tm_table[ 32  /
++ /*
++      Contiguous block header.
++ */
++-EXTER bool prefer_low_mem_contblock;
+++EXTER ufixnum contblock_lim;
++ struct contblock {           /*  contiguous block header  */
++-     int     cb_size;        /*  size in bytes  */
+++     ufixnum cb_size;        /*  size in bytes  */
++      struct contblock
++              *cb_link;       /*  contiguous block link  */
++ };
++@@ -324,7 +330,6 @@ EXTER struct contblock *old_cb_pointer;
++ /*
++      Variables for memory management.
++ */
++-EXTER long ncb;                      /*  number of contblocks  */
++ #define ncbpage tm_table[t_contiguous].tm_npage
++ #define maxcbpage tm_table[t_contiguous].tm_maxpage
++ #define cbgbccount tm_table[t_contiguous].tm_gbccount  
++@@ -337,15 +342,12 @@ EXTER long holepage;                    /*  hole pages  *
++ EXTER long new_holepage,starting_hole_div,starting_relb_heap_mult;
++   
++ 
++-#ifdef SGC
++-EXTER char *old_rb_start;                    /*  read-only relblock start  */
++-#endif
++ EXTER char *rb_start;                        /*  relblock start  */
++ EXTER char *rb_end;                  /*  relblock end  */
++ EXTER char *rb_limit;                        /*  relblock limit  */
++ EXTER char *rb_pointer;              /*  relblock pointer  */
++-EXTER char *rb_start1;               /*  relblock start in copy space  */
++-EXTER char *rb_pointer1;             /*  relblock pointer in copy space  */
+++/* EXTER char *rb_start1;            /\*  relblock start in copy space  *\/ */
+++/* EXTER char *rb_pointer1;          /\*  relblock pointer in copy space  *\/ */
++ 
++ EXTER char *heap_end;                        /*  heap end  */
++ EXTER char *core_end;                        /*  core end  */
++--- gcl-2.6.12.orig/h/page.h
+++++ gcl-2.6.12/h/page.h
++@@ -21,9 +21,6 @@
++ #define PTR_ALIGN SIZEOF_LONG
++ #endif
++ 
++-#define ROUND_UP_PTR(n)      (((long)(n) + (PTR_ALIGN-1)) & ~(PTR_ALIGN-1))
++-#define ROUND_DOWN_PTR(n) (((long)(n)  & ~(PTR_ALIGN-1)))
++-
++ /* minimum size required for contiguous pointers */
++ #if PTR_ALIGN < SIZEOF_CONTBLOCK
++ #define CPTR_SIZE SIZEOF_CONTBLOCK
++@@ -31,9 +28,10 @@
++ #define CPTR_SIZE PTR_ALIGN
++ #endif
++ 
++-#define ROUND_UP_PTR_CONT(n) (((long)(n) + (CPTR_SIZE-1)) & ~(CPTR_SIZE-1))
++-#define ROUND_DOWN_PTR_CONT(n) (((long)(n)  & ~(CPTR_SIZE-1)))
++-
+++#define FLR(x,r) (((x))&~(r-1))
+++#define CEI(x,r) FLR((x)+(r-1),r)
+++#define PFLR(x,r) ((void *)FLR((ufixnum)x,r))
+++#define PCEI(x,r) ((void *)CEI((ufixnum)x,r))
++ 
++ #ifdef SGC
++ 
++@@ -47,33 +45,25 @@
++ 
++ #define SGC_WRITABLE  (SGC_PERM_WRITABLE | SGC_PAGE_FLAG)
++ 
++-#define WRITABLE_PAGE_P(p)  IS_WRITABLE(p)
++-#define ON_WRITABLE_PAGE(x) WRITABLE_PAGE_P(page(x))
++-
++-#define  IF_WRITABLE(x,if_code) ({if (IS_WRITABLE(page(x))) {if_code;}})/*FIXME maxpage*/
++-
++-#define sgc_mark_object(x) IF_WRITABLE(x,if(!is_marked(x)) sgc_mark_object1(x))
++-
++ /* When not 0, the free lists in the type manager are freelists
++    on SGC_PAGE's, for those types supporting sgc.
++    Marking and sweeping is done specially */
++    
++ int sgc_on;
++ 
+++#define SGC_WHOLE_PAGE /* disallow old data on sgc pages*/
++ 
+++#ifndef SGC_WHOLE_PAGE
++ /* for the S field of the FIRSTWORD */
++ enum sgc_type { SGC_NORMAL,   /* not allocated since the last sgc */
++                 SGC_RECENT    /* allocated since last sgc */
++              };
++-
+++#define SGC_OR_M(x)  (!TYPEWORD_TYPE_P(pageinfo(x)->type)  ? pageinfo(x)->sgc_flags&SGC_PAGE_FLAG : ((object)x)->d.s)
+++#endif
++ 
++ #define TM_BASE_TYPE_P(i) (tm_table[i].tm_type == i)
++ 
++-/* check if a relblock address is new relblock */
++-#define SGC_RELBLOCK_P(x)  ((char *)(x) >= rb_start)
++-
++ /* is this an sgc cell? encompasses all free cells.  Used where cell cannot yet be marked */
++-#define SGC_OR_M(x)  (!TYPEWORD_TYPE_P(pageinfo(x)->type)  ? pageinfo(x)->sgc_flags&SGC_PAGE_FLAG : ((object)x)->d.s)
++ 
++ #ifndef SIGPROTV
++ #define SIGPROTV SIGSEGV
++@@ -107,28 +97,26 @@ extern fixnum writable_pages;
++ 
++ #define CLEAR_WRITABLE(i) set_writable(i,0)
++ #define SET_WRITABLE(i) set_writable(i,1)
++-#define IS_WRITABLE(i) is_writable(i)
+++#define WRITABLE_PAGE_P(i) is_writable(i)
+++#define CACHED_WRITABLE_PAGE_P(i) is_writable_cached(i)
+++#define ON_WRITABLE_PAGE(x) WRITABLE_PAGE_P(page(x))
+++#define ON_WRITABLE_PAGE_CACHED(x) CACHED_WRITABLE_PAGE_P(page(x))
+++
++ 
++ 
++ EXTER long first_data_page,real_maxpage,phys_pages,available_pages;
++-EXTER void *data_start;
+++EXTER void *data_start,*initial_sbrk;
++ 
++ #if !defined(IN_MAIN) && defined(SGC)
++ #include "writable.h"
++ #endif
++ 
++-#ifdef SGC
++-#define REAL_RB_START (sgc_enabled ? old_rb_start : rb_start)
++-#else
++-#define REAL_RB_START rb_start
++-#endif
++-
++ #define CB_BITS     CPTR_SIZE*CHAR_SIZE
++ #define ceil(a_,b_) (((a_)+(b_)-1)/(b_))
++ #define npage(m_)   ceil(m_,PAGESIZE)
++ #define cpage(m_)   ({ufixnum _m=(m_);ceil(sizeof(struct pageinfo)+_m+2*ceil(_m,(CB_BITS-2)),PAGESIZE);})
++ #define mbytes(p_)  ceil((p_)*PAGESIZE-sizeof(struct pageinfo),CB_BITS)
++-#define tpage(tm_,m_) (tm_->tm_type==t_relocatable ? npage(m_-(rb_limit-rb_pointer)) : (tm_->tm_type==t_contiguous ? cpage(m_) : npage(m_)))
+++#define tpage(tm_,m_) (tm_->tm_type==t_relocatable ? npage(m_-(rb_limit-rb_pointer)+1) : (tm_->tm_type==t_contiguous ? cpage(m_) : npage(m_)))
++ 
++ #define CB_DATA_SIZE(z_)   ({fixnum _z=(z_);_z*PAGESIZE-2*mbytes(_z)-sizeof(struct pageinfo);})
++ #define CB_MARK_START(pi_) ((void *)(pi_)+sizeof(struct pageinfo))
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -7,7 +7,7 @@
++ /* alloc.c:364:OF */ extern object on_stack_cons (object x, object y); /* (x, y) object x; object y; */
++ /* alloc.c:376:OF */ extern object fSallocated (object typ); /* (typ) object typ; */
++ /* alloc.c:401:OF */ extern object fSreset_number_used (object typ); /* (typ) object typ; */
++-/* alloc.c:480:OF */ extern void insert_contblock (char *p, int s); /* (p, s) char *p; int s; */
+++/* alloc.c:480:OF */ extern void insert_contblock (void *p, ufixnum s); /* (p, s) char *p; int s; */
++ /* alloc.c:480:OF */ extern void insert_maybe_sgc_contblock (char *p, int s); /* (p, s) char *p; int s; */
++ /* alloc.c:611:OF */ extern void set_maxpage (void); /* () */
++ /* alloc.c:635:OF */ extern void gcl_init_alloc (void *); /* () */
++@@ -124,6 +124,7 @@ struct key {short n,allow_other_keys;
++ /* cfun.c:299:OF */ extern object make_si_sfun_internal (char *s, object (*f)(), int argd); /* (s, f, argd) char *s; int (*f)(); int argd; */
++ /* cfun.c:322:OF */ extern object make_si_function_internal (char *s, void (*f) ()); /* (s, f) char *s; int (*f)(); */
++ /* cfun.c:341:OF */ extern object make_special_form_internal (char *s, void (*f)()); /* (s, f) char *s; int (*f)(); */
+++/* cfun.c:341:OF */ extern object make_si_special_form_internal (char *s, void (*f)()); /* (s, f) char *s; int (*f)(); */
++ /* cfun.c:352:OF */ extern object fScompiled_function_name (object fun); /* (fun) object fun; */
++ /* cfun.c:371:OF */ extern void turbo_closure (object fun); /* (fun) object fun; */
++ /* cfun.c:392:OF */ extern object fSturbo_closure (object funobj); /* (funobj) object funobj; */
++@@ -467,7 +468,7 @@ typedef void (*funcvoid)(void);
++ /* regexp.c:1588:OF */ extern void regerror (char *s); /* (s) char *s; */
++ /* regexpr.c:48:OF */ extern object fSmatch_beginning (fixnum i); /* (i) int i; */
++ /* regexpr.c:57:OF */ extern object fSmatch_end (fixnum i); /* (i) int i; */
++-/* save.c:17:OF */ extern void Lsave (void); /* () */
+++/* save.c:17:OF */ extern void siLsave (void); /* () */
++ #include <unistd.h>
++ /* sbrk.c:9:OF */ /*  extern void * sbrk (int n); */ /* (n) int n; */
++ /* strcspn.c:3:OF */ /*  extern size_t strcspn (const char *s1, const char *s2); */ /* (s1, s2) char *s1; char *s2; */
++@@ -862,9 +863,6 @@ void
++ Lstandard_char_p(void);
++ 
++ void
++-Lstring_char_p(void);
++-
++-void
++ Lchar_code(void);
++ 
++ void
++@@ -955,9 +953,6 @@ void
++ Lstandard_char_p(void);
++ 
++ void
++-Lstring_char_p(void);
++-
++-void
++ Lcharacter(void);
++ 
++ void
++@@ -1405,7 +1400,6 @@ void Lforce_output(void);
++ void Lnthcdr(void);
++ void Llogior(void);
++ void Lchar_downcase(void);
++-void Lstring_char_p(void);
++ void Lstream_element_type(void);
++ void Lpackage_used_by_list(void);
++ void Ldivide(void);
++@@ -1923,3 +1917,21 @@ rl_stream_p(FILE *f);
++ 
++ void
++ sigint(void);
+++
+++void
+++allocate_code_block_reserve(void);
+++
+++inline void
+++resize_hole(ufixnum,enum type);
+++
+++inline void *
+++alloc_contblock_no_gc(size_t);
+++
+++inline void
+++reset_contblock_freelist(void);
+++
+++inline void
+++empty_relblock(void);
+++
+++fixnum
+++check_avail_pages(void);
++--- gcl-2.6.12.orig/h/symbol.h
+++++ gcl-2.6.12/h/symbol.h
++@@ -23,6 +23,6 @@ object sLquote;
++ 
++ object sLlambda;
++ 
++-object sLlambda_block;
++-object sLlambda_closure;
++-object sLlambda_block_closure;
+++object sSlambda_block;
+++object sSlambda_closure;
+++object sSlambda_block_closure;
++--- gcl-2.6.12.orig/h/writable.h
+++++ gcl-2.6.12/h/writable.h
++@@ -1,11 +1,16 @@
+++EXTER fixnum last_page;
+++EXTER int last_result;
+++
++ EXTER inline int
++-set_writable(fixnum i,fixnum m) {
+++set_writable(fixnum i,bool m) {
++ 
++   fixnum j;
++   object v;
++ 
++-  if (i<first_data_page || i>=page(core_end))
++-    error("out of core in set_writable");
+++  last_page=last_result=0;
+++
+++  if (i<first_data_page || i>=page(heap_end))
+++    error("out of heap in set_writable");
++ 
++   if ((v=sSAwritableA ? sSAwritableA->s.s_dbind : Cnil)==Cnil)
++     error("no wrimap in set_writable");
++@@ -16,13 +21,13 @@ set_writable(fixnum i,fixnum m) {
++   if ((void *)wrimap!=(void *)v->v.v_self)
++     error("set_writable called in gc");
++ 
+++  writable_pages+=m-((wrimap[j/8]>>(j%8))&0x1);
+++
++   if (m)
++     wrimap[j/8]|=(1<<(j%8));
++   else
++     wrimap[j/8]&=~(1<<(j%8));
++ 
++-  writable_pages+=m ? 1 : -1;
++-
++   return 0;
++ 
++ }
++@@ -35,13 +40,24 @@ is_writable(fixnum i) {
++ 
++   if (i<first_data_page || i>=page(core_end))
++     return 0;
++-
+++  
++   if ((v=sSAwritableA ? sSAwritableA->s.s_dbind : Cnil)==Cnil)
++     return 1;
++-
+++  
++   if ((j=i-first_data_page)<0 || j>=v->v.v_dim)
++     return 1;
++-
+++  
++   return (wrimap[j/8]>>(j%8))&0x1;
+++  
+++}
+++
+++EXTER inline int
+++is_writable_cached(fixnum i) {
+++
+++  if (last_page==i)
+++    return last_result;
+++
+++  last_page=i;
+++  return last_result=is_writable(i);
++ 
++ }
++--- gcl-2.6.12.orig/info/form.texi
+++++ gcl-2.6.12/info/form.texi
++@@ -8,18 +8,6 @@ List of all the lambda-list keywords use
++ 
++ @end defvr
++ 
++-@defun GET-SETF-METHOD (form)
++-Package:LISP
++-
++-Returns the five values (or five 'gangs') constituting the SETF method for
++-FORM.  See the doc of DEFINE-SETF-METHOD for the meanings of the gangs.  It
++-is an error if the third value (i.e., the list of store variables) is not a
++-one-element list.  See the doc of GET-SETF-METHOD-MULTIPLE-VALUE for
++-comparison.
++-
++-
++-@end defun
++-
++ @deffn {Special Form} THE 
++ Package:LISP
++ 
++--- gcl-2.6.12.orig/lsp/gcl_arraylib.lsp
+++++ gcl-2.6.12/lsp/gcl_arraylib.lsp
++@@ -22,23 +22,7 @@
++ ;;;;                            array routines
++ 
++ 
++-(in-package 'lisp)
++-
++-
++-(export '(make-array array-displacement vector
++-          array-element-type array-rank array-dimension
++-          array-dimensions
++-          array-in-bounds-p array-row-major-index
++-          adjustable-array-p
++-          bit sbit 
++-          bit-and bit-ior bit-xor bit-eqv bit-nand bit-nor
++-          bit-andc1 bit-andc2 bit-orc1 bit-orc2 bit-not
++-          array-has-fill-pointer-p fill-pointer
++-          vector-push vector-push-extend vector-pop
++-          adjust-array upgraded-array-element-type))
++-
++-(in-package 'system)
++-
+++(in-package :si)
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++ 
++@@ -47,7 +31,7 @@
++   (or (gethash type *baet-hash*)
++       (setf (gethash type *baet-hash*)
++          (if type
++-             (car (member type '(string-char bit signed-char unsigned-char signed-short unsigned-short
+++             (car (member type '(character bit signed-char unsigned-char signed-short unsigned-short
++                                      fixnum short-float long-float t)
++                           :test 'subtypep)) t)))))
++       
++--- gcl-2.6.12.orig/lsp/gcl_auto.lsp
+++++ gcl-2.6.12/lsp/gcl_auto.lsp
++@@ -1,4 +1,4 @@
++-(in-package 'si)
+++(in-package :si)
++ ;;; Autoloaders.
++ 
++ 
++--- gcl-2.6.12.orig/lsp/gcl_auto_new.lsp
+++++ gcl-2.6.12/lsp/gcl_auto_new.lsp
++@@ -1,4 +1,4 @@
++-(in-package 'si)
+++(in-package :si)
++ ;;; Autoloaders.
++ 
++ 
++@@ -67,8 +67,7 @@
++ (autoload 'ftruncate '|gcl_numlib|)
++ #-unix (autoload 'get-decoded-time '|gcl_mislib|)
++ #+aosvs (autoload 'get-universal-time '|gcl_mislib|)
++-(autoload 'get-setf-method '|gcl_setf|)
++-(autoload 'get-setf-method-multiple-value '|gcl_setf|)
+++(autoload 'get-setf-expansion '|gcl_setf|)
++ (autoload 'inspect '|gcl_describe|)
++ (autoload 'intersection '|gcl_listlib|)
++ (autoload 'isqrt '|gcl_numlib|)
++--- gcl-2.6.12.orig/lsp/gcl_autoload.lsp
+++++ gcl-2.6.12/lsp/gcl_autoload.lsp
++@@ -21,8 +21,9 @@
++ ;;;;    AUTOLOAD
++ 
++ 
++-;;; Go into LISP.
++-(in-package 'lisp)
+++(in-package :si)
+++
+++(export '(clines defentry defcfun object void int double))
++ 
++ ;(defvar *features*)
++ 
++@@ -127,13 +128,13 @@
++ 
++ ;;; Allocator.
++ 
++-(import 'si::allocate)
++-(export '(allocate
+++;(import 'si::allocate)
+++;(export '(allocate
++        ;allocated-pages maximum-allocatable-pages
++           ;allocate-contiguous-pages
++           ;allocated-contiguous-pages maximum-contiguous-pages
++           ;allocate-relocatable-pages allocated-relocatable-pages 
++-          sfun gfun cfun cclosure spice structure))
+++;          sfun gfun cfun cclosure spice structure))
++ 
++ ;(defvar type-character-alist
++ ;             '((cons . #\.)
++@@ -279,12 +280,12 @@
++             ncbpage maxcbpage (if (zerop cbgbccount) nil cbgbccount) ncb)
++     (format t "~9T~D~35Thole~%" holepage)
++     (format t "~8D/~D~19T~6,1F%~@[~8D~]~35Trelocatable~%~%"
++-            nrbpage maxrbpage (/ rbused 0.01 (+ rbused rbfree))
+++            nrbpage maxrbpage (if (zerop (+ rbused rbfree)) 0.0 (/ rbused 0.01 (+ rbused rbfree)))
++             (if (zerop rbgbccount) nil rbgbccount))
++     (format t "~10D pages for cells~%~%" npage)
++     (format t "~10D total pages in core~%" (+ npage ncbpage nrbpage))
++     (format t "~10D current core maximum pages~%" (+ maxnpage maxcbpage maxrbpage))
++-    (format t "~10D pages reserved for gc~%" maxrbpage)
+++    (format t "~10D pages reserved for gc~%" nrbpage)
++     (format t "~10D pages available for adding to core~%" leftpage)
++     (format t "~10D pages reserved for core exhaustion~%~%" (- maxpage (+ maxnpage maxcbpage (ash maxrbpage 1) leftpage)))
++     (format t "~10D maximum pages~%" maxpage)
++@@ -411,8 +412,8 @@ Good luck!                                 The GCL Development Team"
++ (setf (get 'with-output-to-string 'si:pretty-print-format) 1)
++ 
++ 
++-(in-package 'si)
+++(in-package :si)
++ 
++ (defvar *lib-directory* (namestring (truename "../")))
++ 
++-(import '(*lib-directory* *load-path* *system-directory*) 'si::user) 
+++(import '(*lib-directory* *load-path* *system-directory*) :user) 
++--- gcl-2.6.12.orig/lsp/gcl_debug.lsp
+++++ gcl-2.6.12/lsp/gcl_debug.lsp
++@@ -1,8 +1,8 @@
++ ;;Copyright William F. Schelter 1990, All Rights Reserved 
++ 
++ 
++-(In-package "SYSTEM")
++-(import 'sloop::sloop)
+++(In-package :si)
+++(import '(sloop::sloop))
++ 
++ (eval-when (compile eval)
++   (proclaim '(optimize (safety 2) (space 3)))
++@@ -98,7 +98,7 @@
++       (cond ((compiled-function-p fun)
++              (setq name (compiled-function-name fun)))
++             (t (setq name fun)))
++-         (if (symbolp name)(setq args (get name 'debug)))
+++         (if (symbolp name)(setq args (get name 'debugger)))
++       (let ((next (ihs-vs (f + 1 *current-ihs*))))
++         (cond (next
++                (format *debug-io* ">> ~a():" name)
++@@ -583,7 +583,7 @@
++ ;; in other common lisps this should be a string output stream.
++ 
++ (defvar *display-string*
++-  (make-array 100 :element-type 'string-char :fill-pointer 0 :adjustable t))
+++  (make-array 100 :element-type 'character :fill-pointer 0 :adjustable t))
++ 
++ (defun display-env (n env)
++   (do ((v (reverse env) (cdr v)))
++@@ -625,7 +625,7 @@
++        (mv-values nil j))
++     (let
++      ((na  (ihs-fname j)))
++-      (cond ((special-form-p na))
+++      (cond ((special-operator-p na))
++          ((get na 'dbl-invisible))
++          ((fboundp na)(return (mv-values na j)))))))
++ 
++@@ -677,7 +677,7 @@
++                                      (vs (1+ k))
++                                      (vs (+ k 2)))
++                                )))))))
++-      ((special-form-p na) nil)
+++      ((special-operator-p na) nil)
++       ((get na 'dbl-invisible))
++       ((fboundp na)
++        (mv-values i na nil nil
++@@ -717,7 +717,7 @@
++                                    (end (min (ihs-vs (1+ ihs)) (vs-top))))
++   (format *display-string* "")
++   (do ((i base )
++-       (v (get (ihs-fname ihs) 'debug) (cdr v)))
+++       (v (get (ihs-fname ihs) 'debugger) (cdr v)))
++       ((or (fb >= i end)(fb > (fill-pointer *display-string*) plength)))
++     (format *display-string* "~a~@[~d~]=~s~@[,~]"
++          (or (car v)  'loc) (if (not (car v)) (f - i base)) (vs i)
++--- gcl-2.6.12.orig/lsp/gcl_defmacro.lsp
+++++ gcl-2.6.12/lsp/gcl_defmacro.lsp
++@@ -22,11 +22,7 @@
++ ;;;;         defines SI:DEFMACRO*, the defmacro preprocessor
++ 
++ 
++-(in-package 'lisp)
++-(export '(&whole &environment &body))
++-
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (eval-when (compile) (proclaim '(optimize (safety 2) (space 3))))
++--- gcl-2.6.12.orig/lsp/gcl_defstruct.lsp
+++++ gcl-2.6.12/lsp/gcl_defstruct.lsp
++@@ -22,21 +22,13 @@
++ ;;;;        The structure routines.
++ 
++ 
++-(in-package 'lisp)
++-(export 'defstruct)
++-
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++ 
++ 
++ 
++-;(in-package 'system)
++-
++-
++-
++ (defvar *accessors* (make-array 10 :adjustable t))
++ (defvar *list-accessors* (make-array 2 :adjustable t))
++ (defvar *vector-accessors* (make-array 2 :adjustable t))
++@@ -99,7 +91,10 @@
++                    (setq dont-overwrite t)
++                    )
++                   (t  (setf (get access-function 'structure-access)
++-                            (cons (if type type name) offset)))))))
+++                            (cons (if type type name) offset))
+++                      (when slot-type
+++                        (proclaim `(ftype (function (,name) ,slot-type) ,access-function)))
+++                      )))))
++     nil))
++ 
++ 
++@@ -504,7 +499,7 @@
++       ;bootstrapping code!
++       (setq def (make-s-data-structure
++                   (make-array (* leng (size-of t))
++-                              :element-type 'string-char :static t)
+++                              :element-type 'character :static t)
++                   (make-t-type leng nil slot-descriptions)
++                   *standard-slot-positions*
++                   slot-descriptions
++@@ -569,9 +564,7 @@
++            (setf (symbol-function predicate)
++                  #'(lambda (x)
++                      (si::structure-subtype-p x name))))
++-       (setf (get predicate 'compiler::co1)
++-             'compiler::co1structure-predicate)
++-       (setf (get predicate 'struct-predicate) name)
+++       (proclaim `(ftype (function (,name) t) ,predicate));FIXME boolean is unboxed
++        )
++   ) nil)
++ 
++--- gcl-2.6.12.orig/lsp/gcl_describe.lsp
+++++ gcl-2.6.12/lsp/gcl_describe.lsp
++@@ -22,12 +22,7 @@
++ ;;;;                           DESCRIBE and INSPECT
++ 
++ 
++-(in-package 'lisp)
++-
++-(export '(describe inspect))
++-
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++@@ -191,7 +186,6 @@
++ (defun inspect-character (character)
++   (format t
++           (cond ((standard-char-p character) "~S - standard character")
++-                ((string-char-p character) "~S - string character")
++                 (t "~S - character"))
++           character)
++   (inspect-print "code:  #x~X" (char-code character))
++@@ -353,7 +347,7 @@
++                (find-package "SYSTEM")
++                *package*)))
++ 
++-    (cond ((special-form-p symbol)
+++    (cond ((special-operator-p symbol)
++            (doc1 (or (documentation symbol 'function) "")
++                  (if (macro-function symbol)
++                      "[Special form and Macro]"
++--- gcl-2.6.12.orig/lsp/gcl_destructuring_bind.lsp
+++++ gcl-2.6.12/lsp/gcl_destructuring_bind.lsp
++@@ -8,9 +8,7 @@
++ ;;; in DEFMACRO are the reason this isn't as easy as it sounds.
++ ;;;
++ 
++-(in-package 'lisp)
++-
++-(export '(destructuring-bind))
+++(in-package :si)
++ 
++ (defvar *arg-tests* ()
++   "A list of tests that do argument counting at expansion time.")
++--- gcl-2.6.12.orig/lsp/gcl_doc-file.lsp
+++++ gcl-2.6.12/lsp/gcl_doc-file.lsp
++@@ -13,7 +13,7 @@
++      for w in-package v
++      when  (setq doc (documentation w 'function))
++      do (format st "\1fF~a~%~ain ~a package:~a" w
++-                (cond ((special-form-p w) "Special Form ")
+++                (cond ((special-operator-p w) "Special Form ")
++                       ((functionp w) "Function ")
++                       ((macro-function w) "Macro ")
++                       (t ""))
++--- gcl-2.6.12.orig/lsp/gcl_evalmacros.lsp
+++++ gcl-2.6.12/lsp/gcl_evalmacros.lsp
++@@ -20,11 +20,7 @@
++ ;;;; evalmacros.lsp
++ 
++ 
++-(in-package "LISP")
++-
++-(export '(defvar defparameter defconstant))
++-
++-(in-package "SYSTEM")
+++(in-package :si)
++ 
++ 
++ (eval-when (compile) (proclaim '(optimize (safety 2) (space 3))))
++--- gcl-2.6.12.orig/lsp/gcl_export.lsp
+++++ gcl-2.6.12/lsp/gcl_export.lsp
++@@ -21,313 +21,468 @@
++ ;;;;
++ ;;;;                    Exporting external symbols of LISP package
++ 
++-
++-(in-package 'lisp)
++-
+++(in-package :common-lisp)
++ 
++ (export '(
++-
++-&whole
++-&environment
++-&body
++-*
++-**
++-***
++-*break-enable*
++-*break-on-warnings*
++-*features*
++-*modules*
++-+
++-++
++-+++
++--
++-/
++-//
++-///
++-COMMON
++-KYOTO
++-KCL
++-abs
++-acos
++-acosh
++-adjust-array
++-adjustable-array-p
++-apropos
++-apropos-list
++-array-dimension
++-array-dimensions
++-array-element-type
++-array-has-fill-pointer-p
++-array-in-bounds-p
++-array-rank
++-array-row-major-index
++-asin
++-asinh
++-assert
++-atanh
++-bit
++-bit-and
++-bit-andc1
++-bit-andc2
++-bit-eqv
++-bit-ior
++-bit-nand
++-bit-nor
++-bit-not
++-bit-orc1
++-bit-orc2
++-bit-xor
++-break
++-byte
++-byte-position
++-byte-size
++-ccase
++-cerror
++-check-type
++-cis
++-coerce
++-compile
++-compile-file
++-concatenate
++-cosh
++-count
++-count-if
++-count-if-not
++-ctypecase
++-decf
++-declaim
++-decode-universal-time
++-defconstant
++-define-modify-macro
++-define-setf-method
++-defparameter
++-defsetf
++-defstruct
++-deftype
++-defvar
++-delete
++-delete-duplicates
++-delete-if
++-delete-if-not
++-deposit-field
++-describe
++-disassemble
++-do*
++-do-all-symbols
++-do-external-symbols
++-do-symbols
++-documentation
++-dolist
++-dotimes
++-dpb
++-dribble
++-ecase
++-ed
++-eighth
++-encode-universal-time
++-error
++-etypecase
++-eval-when
++-every
++-fceiling
++-ffloor
++-fifth
++-fill
++-fill-pointer
++-find
++-find-all-symbols
++-find-if
++-find-if-not
++-first
++-format
++-fourth
++-fround
++-ftruncate
++-get-decoded-time
++-get-setf-method
++-get-setf-method-multiple-value
++-get-universal-time
++-getf
++-ignore
++-ignorable
++-incf
++-inspect
++-intersection
++-isqrt
++-ldb
++-ldb-test
++-lisp-implementation-type
++-logandc1
++-logandc2
++-lognand
++-lognor
++-lognot
++-logorc1
++-logorc2
++-logtest
++-long-site-name
++-machine-instance
++-machine-type
++-machine-version
++-make-array
++-make-sequence
++-map
++-mask-field
++-merge
++-mismatch
++-mod
++-multiple-value-setq
++-nintersection
++-ninth
++-notany
++-notevery
++-nset-difference
++-nset-exclusive-or
++-nsubstitute
++-nsubstitute-if
++-nsubstitute-if-not
++-nunion
++-phase
++-pop
++-position
++-position-if
++-position-if-not
++-prin1-to-string
++-princ-to-string
++-prog*
++-provide
++-psetf
++-push
++-pushnew
++-rational
++-rationalize
++-real
++-read-from-string
++-reduce
++-rem
++-remf
++-remove
++-remove-duplicates
++-remove-if
++-remove-if-not
++-replace
++-require
++-rotatef
++-room
++-sbit
++-search
++-second
++-set-difference
++-set-exclusive-or
++-setf
++-seventh
++-shiftf
++-short-site-name
++-signum
++-sinh
++-sixth
++-software-type
++-software-version
++-some
++-sort
++-stable-sort
++-step
++-structure
++-subsetp
++-substitute
++-substitute-if
++-substitute-if-not
++-subtypep
++-tanh
++-tenth
++-third
++-time
++-trace
++-type
++-typecase
++-typep
++-union
++-untrace
++-variable
++-vector
++-vector-pop
++-vector-push
++-vector-push-extend
++-warn
++-with-input-from-string
++-with-open-file
++-with-open-stream
++-with-output-to-string
++-write-to-string
++-y-or-n-p
++-yes-or-no-p
++-
++-proclaim
++-proclamation
++-special
++-type
++-ftype
++-function
++-inline
++-notinline
++-ignore
++-optimize
++-speed
++-space
++-safety
++-compilation-speed
++-declaration
++-
++-*eval-when-compile*
++-
++-clines
++-defcfun
++-defentry
++-defla
++-
++-void
++-object
++-char
++-int
++-float
++-double
++-
++-define-compiler-macro
++-compiler-macro
++-compiler-macro-function
++-
++-with-compilation-unit
++-with-standard-io-syntax
++-*print-lines*
++-*print-miser-width*
++-*print-pprint-dispatch*
++-*print-right-margin*
++-
++-*read-eval*
++-
++-dynamic-extent
++-
++-loop
++-check-type assert typecase etypecase ctypecase case ecase ccase
++-
++-restart-bind restart-case with-condition-restarts muffle-warning continue abort
++-                    store-value use-value
++-                    restart restart-name restart-function restart-report-function
++-                    restart-interactive-function restart-test-function
++-                    compute-restarts find-restart invoke-restart invoke-restart-interactively
++-                    with-simple-restart signal
++-
++-simple-condition simple-error simple-warning invoke-debugger *debugger-hook* *break-on-signals*
++-
++-handler-case handler-bind ignore-errors define-condition make-condition
++-       condition warning serious-condition simple-condition-format-control simple-condition-format-arguments
++-       storage-condition stack-overflow storage-exhausted type-error
++-       type-error-datum type-error-expected-type simple-type-error
++-       program-error control-error stream-error stream-error-stream
++-       end-of-file file-error file-error-pathname cell-error cell-error-name
++-       unbound-variable undefined-function arithmetic-error
++-       arithmetic-error-operation arithmetic-error-operands
++-       package-error package-error-package
++-       division-by-zero floating-point-overflow floating-point-underflow
++-
++-))
+++       &allow-other-keys            *print-miser-width*          
+++       &aux                         *print-pprint-dispatch*      
+++       &body                        *print-pretty*               
+++       &environment                 *print-radix*                
+++       &key                         *print-readably*             
+++       &optional                    *print-right-margin*         
+++       &rest                        *query-io*                   
+++       &whole                       *random-state*               
+++       *                            *read-base*                  
+++       **                           *read-default-float-format*  
+++       ***                          *read-eval*                  
+++       *break-on-signals*           *read-suppress*              
+++       *compile-file-pathname*      *readtable*                  
+++       *compile-file-truename*      *standard-input*             
+++       *compile-print*              *standard-output*            
+++       *compile-verbose*            *terminal-io*                
+++       *debug-io*                   *trace-output*               
+++       *debugger-hook*              +                            
+++       *default-pathname-defaults*  ++                           
+++       *error-output*               +++                          
+++       *features*                   -                            
+++       *gensym-counter*             /                            
+++       *load-pathname*              //                           
+++       *load-print*                 ///                          
+++       *load-truename*              /=                           
+++       *load-verbose*               1+                           
+++       *macroexpand-hook*           1-                           
+++       *modules*                    <                            
+++       *package*                    <=                           
+++       *print-array*                =                            
+++       *print-base*                 >                            
+++       *print-case*                 >=                           
+++       *print-circle*               abort                        
+++       *print-escape*               abs                          
+++       *print-gensym*               acons                        
+++       *print-length*               acos                         
+++       *print-level*                acosh                        
+++       *print-lines*                add-method                   
+++       
+++       adjoin                      atom          boundp                    
+++       adjust-array                base-char     break                     
+++       adjustable-array-p          base-string   broadcast-stream          
+++       allocate-instance           bignum        broadcast-stream-streams  
+++       alpha-char-p                bit           built-in-class            
+++       alphanumericp               bit-and       butlast                   
+++       and                         bit-andc1     byte                      
+++       append                      bit-andc2     byte-position             
+++       apply                       bit-eqv       byte-size                 
+++       apropos                     bit-ior       caaaar                    
+++       apropos-list                bit-nand      caaadr                    
+++       aref                        bit-nor       caaar                     
+++       arithmetic-error            bit-not       caadar                    
+++       arithmetic-error-operands   bit-orc1      caaddr                    
+++       arithmetic-error-operation  bit-orc2      caadr                     
+++       array                       bit-vector    caar                      
+++       array-dimension             bit-vector-p  cadaar                    
+++       array-dimension-limit       bit-xor       cadadr                    
+++       array-dimensions            block         cadar                     
+++       array-displacement          boole         caddar                    
+++       array-element-type          boole-1       cadddr                    
+++       array-has-fill-pointer-p    boole-2       caddr                     
+++       array-in-bounds-p           boole-and     cadr                      
+++       array-rank                  boole-andc1   call-arguments-limit      
+++       array-rank-limit            boole-andc2   call-method               
+++       array-row-major-index       boole-c1      call-next-method          
+++       array-total-size            boole-c2      car                       
+++       array-total-size-limit      boole-clr     case                      
+++       arrayp                      boole-eqv     catch                     
+++       ash                         boole-ior     ccase                     
+++       asin                        boole-nand    cdaaar                    
+++       asinh                       boole-nor     cdaadr                    
+++       assert                      boole-orc1    cdaar                     
+++       assoc                       boole-orc2    cdadar                    
+++       assoc-if                    boole-set     cdaddr                    
+++       assoc-if-not                boole-xor     cdadr                     
+++       atan                        boolean       cdar                      
+++       atanh                       both-case-p   cddaar                    
+++       
+++       cddadr             clear-input                  copy-tree                  
+++       cddar              clear-output                 cos                        
+++       cdddar             close                        cosh                       
+++       cddddr             clrhash                      count                      
+++       cdddr              code-char                    count-if                   
+++       cddr               coerce                       count-if-not               
+++       cdr                compilation-speed            ctypecase                  
+++       ceiling            compile                      debug                      
+++       cell-error         compile-file                 decf                       
+++       cell-error-name    compile-file-pathname        declaim                    
+++       cerror             compiled-function            declaration                
+++       change-class       compiled-function-p          declare                    
+++       char               compiler-macro               decode-float               
+++       char-code          compiler-macro-function      decode-universal-time      
+++       char-code-limit    complement                   defclass                   
+++       char-downcase      complex                      defconstant                
+++       char-equal         complexp                     defgeneric                 
+++       char-greaterp      compute-applicable-methods   define-compiler-macro      
+++       char-int           compute-restarts             define-condition           
+++       char-lessp         concatenate                  define-method-combination  
+++       char-name          concatenated-stream          define-modify-macro        
+++       char-not-equal     concatenated-stream-streams  define-setf-expander       
+++       char-not-greaterp  cond                         define-symbol-macro        
+++       char-not-lessp     condition                    defmacro                   
+++       char-upcase        conjugate                    defmethod                  
+++       char/=             cons                         defpackage                 
+++       char<              consp                        defparameter               
+++       char<=             constantly                   defsetf                    
+++       char=              constantp                    defstruct                  
+++       char>              continue                     deftype                    
+++       char>=             control-error                defun                      
+++       character          copy-alist                   defvar                     
+++       characterp         copy-list                    delete                     
+++       check-type         copy-pprint-dispatch         delete-duplicates          
+++       cis                copy-readtable               delete-file                
+++       class              copy-seq                     delete-if                  
+++       class-name         copy-structure               delete-if-not              
+++       class-of           copy-symbol                  delete-package             
+++       
+++       denominator                    eq                   
+++       deposit-field                  eql                  
+++       describe                       equal                
+++       describe-object                equalp               
+++       destructuring-bind             error                
+++       digit-char                     etypecase            
+++       digit-char-p                   eval                 
+++       directory                      eval-when            
+++       directory-namestring           evenp                
+++       disassemble                    every                
+++       division-by-zero               exp                  
+++       do                             export               
+++       do*                            expt                 
+++       do-all-symbols                 extended-char        
+++       do-external-symbols            fboundp              
+++       do-symbols                     fceiling             
+++       documentation                  fdefinition          
+++       dolist                         ffloor               
+++       dotimes                        fifth                
+++       double-float                   file-author          
+++       double-float-epsilon           file-error           
+++       double-float-negative-epsilon  file-error-pathname  
+++       dpb                            file-length          
+++       dribble                        file-namestring      
+++       dynamic-extent                 file-position        
+++       ecase                          file-stream          
+++       echo-stream                    file-string-length   
+++       echo-stream-input-stream       file-write-date      
+++       echo-stream-output-stream      fill                 
+++       ed                             fill-pointer         
+++       eighth                         find                 
+++       elt                            find-all-symbols     
+++       encode-universal-time          find-class           
+++       end-of-file                    find-if              
+++       endp                           find-if-not          
+++       enough-namestring              find-method          
+++       ensure-directories-exist       find-package         
+++       ensure-generic-function        find-restart         
+++       
+++       find-symbol                       get-internal-run-time        
+++       finish-output                     get-macro-character          
+++       first                             get-output-stream-string     
+++       fixnum                            get-properties               
+++       flet                              get-setf-expansion           
+++       float                             get-universal-time           
+++       float-digits                      getf                         
+++       float-precision                   gethash                      
+++       float-radix                       go                           
+++       float-sign                        graphic-char-p               
+++       floating-point-inexact            handler-bind                 
+++       floating-point-invalid-operation  handler-case                 
+++       floating-point-overflow           hash-table                   
+++       floating-point-underflow          hash-table-count             
+++       floatp                            hash-table-p                 
+++       floor                             hash-table-rehash-size       
+++       fmakunbound                       hash-table-rehash-threshold  
+++       force-output                      hash-table-size              
+++       format                            hash-table-test              
+++       formatter                         host-namestring              
+++       fourth                            identity                     
+++       fresh-line                        if                           
+++       fround                            ignorable                    
+++       ftruncate                         ignore                       
+++       ftype                             ignore-errors                
+++       funcall                           imagpart                     
+++       function                          import                       
+++       function-keywords                 in-package                   
+++       function-lambda-expression        incf                         
+++       functionp                         initialize-instance          
+++       gcd                               inline                       
+++       generic-function                  input-stream-p               
+++       gensym                            inspect                      
+++       gentemp                           integer                      
+++       get                               integer-decode-float         
+++       get-decoded-time                  integer-length               
+++       get-dispatch-macro-character      integerp                     
+++       get-internal-real-time            interactive-stream-p         
+++       
+++       intern                                  lisp-implementation-type            
+++       internal-time-units-per-second          lisp-implementation-version         
+++       intersection                            list                                
+++       invalid-method-error                    list*                               
+++       invoke-debugger                         list-all-packages                   
+++       invoke-restart                          list-length                         
+++       invoke-restart-interactively            listen                              
+++       isqrt                                   listp                               
+++       keyword                                 load                                
+++       keywordp                                load-logical-pathname-translations  
+++       labels                                  load-time-value                     
+++       lambda                                  locally                             
+++       lambda-list-keywords                    log                                 
+++       lambda-parameters-limit                 logand                              
+++       last                                    logandc1                            
+++       lcm                                     logandc2                            
+++       ldb                                     logbitp                             
+++       ldb-test                                logcount                            
+++       ldiff                                   logeqv                              
+++       least-negative-double-float             logical-pathname                    
+++       least-negative-long-float               logical-pathname-translations       
+++       least-negative-normalized-double-float  logior                              
+++       least-negative-normalized-long-float    lognand                             
+++       least-negative-normalized-short-float   lognor                              
+++       least-negative-normalized-single-float  lognot                              
+++       least-negative-short-float              logorc1                             
+++       least-negative-single-float             logorc2                             
+++       least-positive-double-float             logtest                             
+++       least-positive-long-float               logxor                              
+++       least-positive-normalized-double-float  long-float                          
+++       least-positive-normalized-long-float    long-float-epsilon                  
+++       least-positive-normalized-short-float   long-float-negative-epsilon         
+++       least-positive-normalized-single-float  long-site-name                      
+++       least-positive-short-float              loop                                
+++       least-positive-single-float             loop-finish                         
+++       length                                  lower-case-p                        
+++       let                                     machine-instance                    
+++       let*                                    machine-type                        
+++       
+++       machine-version                mask-field                  
+++       macro-function                 max                         
+++       macroexpand                    member                      
+++       macroexpand-1                  member-if                   
+++       macrolet                       member-if-not               
+++       make-array                     merge                       
+++       make-broadcast-stream          merge-pathnames             
+++       make-concatenated-stream       method                      
+++       make-condition                 method-combination          
+++       make-dispatch-macro-character  method-combination-error    
+++       make-echo-stream               method-qualifiers           
+++       make-hash-table                min                         
+++       make-instance                  minusp                      
+++       make-instances-obsolete        mismatch                    
+++       make-list                      mod                         
+++       make-load-form                 most-negative-double-float  
+++       make-load-form-saving-slots    most-negative-fixnum        
+++       make-method                    most-negative-long-float    
+++       make-package                   most-negative-short-float   
+++       make-pathname                  most-negative-single-float  
+++       make-random-state              most-positive-double-float  
+++       make-sequence                  most-positive-fixnum        
+++       make-string                    most-positive-long-float    
+++       make-string-input-stream       most-positive-short-float   
+++       make-string-output-stream      most-positive-single-float  
+++       make-symbol                    muffle-warning              
+++       make-synonym-stream            multiple-value-bind         
+++       make-two-way-stream            multiple-value-call         
+++       makunbound                     multiple-value-list         
+++       map                            multiple-value-prog1        
+++       map-into                       multiple-value-setq         
+++       mapc                           multiple-values-limit       
+++       mapcan                         name-char                   
+++       mapcar                         namestring                  
+++       mapcon                         nbutlast                    
+++       maphash                        nconc                       
+++       mapl                           next-method-p               
+++       maplist                        nil                         
+++       
+++       nintersection         package-error                  
+++       ninth                 package-error-package          
+++       no-applicable-method  package-name                   
+++       no-next-method        package-nicknames              
+++       not                   package-shadowing-symbols      
+++       notany                package-use-list               
+++       notevery              package-used-by-list           
+++       notinline             packagep                       
+++       nreconc               pairlis                        
+++       nreverse              parse-error                    
+++       nset-difference       parse-integer                  
+++       nset-exclusive-or     parse-namestring               
+++       nstring-capitalize    pathname                       
+++       nstring-downcase      pathname-device                
+++       nstring-upcase        pathname-directory             
+++       nsublis               pathname-host                  
+++       nsubst                pathname-match-p               
+++       nsubst-if             pathname-name                  
+++       nsubst-if-not         pathname-type                  
+++       nsubstitute           pathname-version               
+++       nsubstitute-if        pathnamep                      
+++       nsubstitute-if-not    peek-char                      
+++       nth                   phase                          
+++       nth-value             pi                             
+++       nthcdr                plusp                          
+++       null                  pop                            
+++       number                position                       
+++       numberp               position-if                    
+++       numerator             position-if-not                
+++       nunion                pprint                         
+++       oddp                  pprint-dispatch                
+++       open                  pprint-exit-if-list-exhausted  
+++       open-stream-p         pprint-fill                    
+++       optimize              pprint-indent                  
+++       or                    pprint-linear                  
+++       otherwise             pprint-logical-block           
+++       output-stream-p       pprint-newline                 
+++       package               pprint-pop                     
+++       
+++       pprint-tab                 read-char                   
+++       pprint-tabular             read-char-no-hang           
+++       prin1                      read-delimited-list         
+++       prin1-to-string            read-from-string            
+++       princ                      read-line                   
+++       princ-to-string            read-preserving-whitespace  
+++       print                      read-sequence               
+++       print-not-readable         reader-error                
+++       print-not-readable-object  readtable                   
+++       print-object               readtable-case              
+++       print-unreadable-object    readtablep                  
+++       probe-file                 real                        
+++       proclaim                   realp                       
+++       prog                       realpart                    
+++       prog*                      reduce                      
+++       prog1                      reinitialize-instance       
+++       prog2                      rem                         
+++       progn                      remf                        
+++       program-error              remhash                     
+++       progv                      remove                      
+++       provide                    remove-duplicates           
+++       psetf                      remove-if                   
+++       psetq                      remove-if-not               
+++       push                       remove-method               
+++       pushnew                    remprop                     
+++       quote                      rename-file                 
+++       random                     rename-package              
+++       random-state               replace                     
+++       random-state-p             require                     
+++       rassoc                     rest                        
+++       rassoc-if                  restart                     
+++       rassoc-if-not              restart-bind                
+++       ratio                      restart-case                
+++       rational                   restart-name                
+++       rationalize                return                      
+++       rationalp                  return-from                 
+++       read                       revappend                   
+++       read-byte                  reverse                     
+++       
+++       room                          simple-bit-vector                  
+++       rotatef                       simple-bit-vector-p                
+++       round                         simple-condition                   
+++       row-major-aref                simple-condition-format-arguments  
+++       rplaca                        simple-condition-format-control    
+++       rplacd                        simple-error                       
+++       safety                        simple-string                      
+++       satisfies                     simple-string-p                    
+++       sbit                          simple-type-error                  
+++       scale-float                   simple-vector                      
+++       schar                         simple-vector-p                    
+++       search                        simple-warning                     
+++       second                        sin                                
+++       sequence                      single-float                       
+++       serious-condition             single-float-epsilon               
+++       set                           single-float-negative-epsilon      
+++       set-difference                sinh                               
+++       set-dispatch-macro-character  sixth                              
+++       set-exclusive-or              sleep                              
+++       set-macro-character           slot-boundp                        
+++       set-pprint-dispatch           slot-exists-p                      
+++       set-syntax-from-char          slot-makunbound                    
+++       setf                          slot-missing                       
+++       setq                          slot-unbound                       
+++       seventh                       slot-value                         
+++       shadow                        software-type                      
+++       shadowing-import              software-version                   
+++       shared-initialize             some                               
+++       shiftf                        sort                               
+++       short-float                   space                              
+++       short-float-epsilon           special                            
+++       short-float-negative-epsilon  special-operator-p                 
+++       short-site-name               speed                              
+++       signal                        sqrt                               
+++       signed-byte                   stable-sort                        
+++       signum                        standard                           
+++       simple-array                  standard-char                      
+++       simple-base-string            standard-char-p                    
+++       
+++       standard-class             sublis                      
+++       standard-generic-function  subseq                      
+++       standard-method            subsetp                     
+++       standard-object            subst                       
+++       step                       subst-if                    
+++       storage-condition          subst-if-not                
+++       store-value                substitute                  
+++       stream                     substitute-if               
+++       stream-element-type        substitute-if-not           
+++       stream-error               subtypep                    
+++       stream-error-stream        svref                       
+++       stream-external-format     sxhash                      
+++       streamp                    symbol                      
+++       string                     symbol-function             
+++       string-capitalize          symbol-macrolet             
+++       string-downcase            symbol-name                 
+++       string-equal               symbol-package              
+++       string-greaterp            symbol-plist                
+++       string-left-trim           symbol-value                
+++       string-lessp               symbolp                     
+++       string-not-equal           synonym-stream              
+++       string-not-greaterp        synonym-stream-symbol       
+++       string-not-lessp           t                           
+++       string-right-trim          tagbody                     
+++       string-stream              tailp                       
+++       string-trim                tan                         
+++       string-upcase              tanh                        
+++       string/=                   tenth                       
+++       string<                    terpri                      
+++       string<=                   the                         
+++       string=                    third                       
+++       string>                    throw                       
+++       string>=                   time                        
+++       stringp                    trace                       
+++       structure                  translate-logical-pathname  
+++       structure-class            translate-pathname          
+++       structure-object           tree-equal                  
+++       style-warning              truename                    
+++       
+++       truncate                             values-list               
+++       two-way-stream                       variable                  
+++       two-way-stream-input-stream          vector                    
+++       two-way-stream-output-stream         vector-pop                
+++       type                                 vector-push               
+++       type-error                           vector-push-extend        
+++       type-error-datum                     vectorp                   
+++       type-error-expected-type             warn                      
+++       type-of                              warning                   
+++       typecase                             when                      
+++       typep                                wild-pathname-p           
+++       unbound-slot                         with-accessors            
+++       unbound-slot-instance                with-compilation-unit     
+++       unbound-variable                     with-condition-restarts   
+++       undefined-function                   with-hash-table-iterator  
+++       unexport                             with-input-from-string    
+++       unintern                             with-open-file            
+++       union                                with-open-stream          
+++       unless                               with-output-to-string     
+++       unread-char                          with-package-iterator     
+++       unsigned-byte                        with-simple-restart       
+++       untrace                              with-slots                
+++       unuse-package                        with-standard-io-syntax   
+++       unwind-protect                       write                     
+++       update-instance-for-different-class  write-byte                
+++       update-instance-for-redefined-class  write-char                
+++       upgraded-array-element-type          write-line                
+++       upgraded-complex-part-type           write-sequence            
+++       upper-case-p                         write-string              
+++       use-package                          write-to-string           
+++       use-value                            y-or-n-p                  
+++       user-homedir-pathname                yes-or-no-p               
+++       values                               zerop))
++--- gcl-2.6.12.orig/lsp/gcl_fpe.lsp
+++++ gcl-2.6.12/lsp/gcl_fpe.lsp
++@@ -1,8 +1,8 @@
++-(in-package :fpe :use '(:lisp))
+++(in-package :fpe)
++ 
++ (import 'si::(disassemble-instruction feenableexcept fedisableexcept fld *fixnum *float *double
++                                    +fe-list+ +mc-context-offsets+ floating-point-error 
++-                                   function-by-address))
+++                                   function-by-address clines defentry))
++ (export '(break-on-floating-point-exceptions read-instruction))
++ 
++ (eval-when
++--- gcl-2.6.12.orig/lsp/gcl_info.lsp
+++++ gcl-2.6.12/lsp/gcl_info.lsp
++@@ -1,4 +1,4 @@
++-(in-package "SI"  )
+++(in-package :si)
++ 
++ (eval-when (compile eval)
++ (defmacro while (test &body body)
++@@ -11,7 +11,7 @@
++ (eval-when (compile eval load)
++ (defun sharp-u-reader (stream subchar arg)
++   subchar arg
++-  (let ((tem (make-array 10 :element-type 'string-char :fill-pointer 0)))
+++  (let ((tem (make-array 10 :element-type 'character :fill-pointer 0)))
++     (or (eql (read-char stream) #\")
++      (error "sharp-u-reader reader needs a \" right after it"))
++     (loop
++@@ -44,7 +44,7 @@
++    (or (and (<= 0 start ) (<= start len))
++        (error "illegal file start ~a" start))
++    (let ((tem (make-array (- len start)
++-                       :element-type 'string-char)))
+++                       :element-type 'character)))
++      (if (> start 0) (file-position st start))
++      (si::fread tem 0 (length tem) st) tem)))
++ 
++@@ -105,7 +105,7 @@
++           ((> extra 0)
++            (setq tem 
++                  (make-array (f + (length x) extra)
++-                             :element-type 'string-char :fill-pointer 0))
+++                             :element-type 'character :fill-pointer 0))
++            (setq i 0)
++            (go AGAIN))
++           (t (setq tem x)))
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -22,21 +22,7 @@
++ ;;;;        The IO library.
++ 
++ 
++-(in-package 'lisp)
++-
++-
++-(export '(with-open-stream with-input-from-string with-output-to-string 
++-                        ensure-directories-exist wild-pathname-p
++-                        read-byte write-byte read-sequence write-sequence))
++-(export '(read-from-string))
++-(export '(write-to-string prin1-to-string princ-to-string))
++-(export 'with-open-file)
++-(export '(y-or-n-p yes-or-no-p))
++-(export 'dribble)
++-
++-
++-(in-package 'system)
++-
+++(in-package :si)
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++ 
++--- gcl-2.6.12.orig/lsp/gcl_listlib.lsp
+++++ gcl-2.6.12/lsp/gcl_listlib.lsp
++@@ -25,13 +25,7 @@
++ ; rather than recursion, as needed for large data sets.
++ 
++ 
++-(in-package 'lisp)
++-
++-(export '(union nunion intersection nintersection
++-          set-difference nset-difference set-exclusive-or nset-exclusive-or
++-          subsetp nth nth-value nthcdr first second third fourth fifth sixth seventh eighth ninth tenth))
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ (eval-when (compile)
++   (proclaim '(optimize (safety 0) (space 3)))
++--- gcl-2.6.12.orig/lsp/gcl_mislib.lsp
+++++ gcl-2.6.12/lsp/gcl_mislib.lsp
++@@ -20,15 +20,7 @@
++ ;;;; This file is IMPLEMENTATION-DEPENDENT.
++ 
++ 
++-(in-package 'lisp)
++-
++-
++-(export 'time)
++-(export '(reset-sys-paths decode-universal-time encode-universal-time compile-file-pathname complement constantly))
++-
++-
++-(in-package 'system)
++-
+++(in-package :si)
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++ 
++@@ -37,13 +29,13 @@
++   (let ((real-start (gensym)) (real-end (gensym)) (gbc-time-start (gensym))
++      (gbc-time (gensym)) (x (gensym)) (run-start (gensym)) (run-end (gensym))
++      (child-run-start (gensym)) (child-run-end (gensym)))
++-  `(let (,real-start ,real-end (,gbc-time-start (si::gbc-time)) ,gbc-time ,x)
+++  `(let (,real-start ,real-end (,gbc-time-start (gbc-time)) ,gbc-time ,x)
++      (setq ,real-start (get-internal-real-time))
++      (multiple-value-bind (,run-start ,child-run-start) (get-internal-run-time)
++-       (si::gbc-time 0)
+++       (gbc-time 0)
++        (setq ,x (multiple-value-list ,form))
++-       (setq ,gbc-time (si::gbc-time))
++-       (si::gbc-time (+ ,gbc-time-start ,gbc-time))
+++       (setq ,gbc-time (gbc-time))
+++       (gbc-time (+ ,gbc-time-start ,gbc-time))
++        (multiple-value-bind (,run-end ,child-run-end) (get-internal-run-time)
++       (setq ,real-end (get-internal-real-time))
++       (fresh-line *trace-output*)
++@@ -139,7 +131,7 @@ x))
++          *gcl-major-version* *gcl-minor-version* *gcl-extra-version*
++          (if (member :ansi-cl *features*) "ANSI" "CLtL1")
++          (if (member :gprof *features*) "profiling" "")
++-         (si::gcl-compile-time)
+++         (gcl-compile-time)
++          "Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)"
++          "Binary License: "
++          (if gpled-modules (format nil "GPL due to GPL'ed components: ~a" gpled-modules)
++@@ -150,13 +142,13 @@ x))
++ 
++  (defun lisp-implementation-version nil
++    (format nil "GCL ~a.~a.~a"
++-        si::*gcl-major-version*
++-        si::*gcl-minor-version*
++-        si::*gcl-extra-version*))
+++        *gcl-major-version*
+++        *gcl-minor-version*
+++        *gcl-extra-version*))
++ 
++ (defun objlt (x y)
++   (declare (object x y))
++-  (let ((x (si::address x)) (y (si::address y)))
+++  (let ((x (address x)) (y (address y)))
++     (declare (fixnum x y))
++     (if (< y 0)
++      (if (< x 0) (< x y) t)
++@@ -164,10 +156,10 @@ x))
++ 
++ (defun reset-sys-paths (s)
++   (declare (string s))
++-  (setq si::*lib-directory* s)
++-  (setq si::*system-directory* (si::string-concatenate s "unixport/"))
+++  (setq *lib-directory* s)
+++  (setq *system-directory* (string-concatenate s "unixport/"))
++   (let (nl)
++     (dolist (l '("cmpnew/" "gcl-tk/" "lsp/" "xgcl-2/"))
++-      (push (si::string-concatenate s l) nl))
++-    (setq si::*load-path* nl))
+++      (push (string-concatenate s l) nl))
+++    (setq *load-path* nl))
++   nil)
++--- gcl-2.6.12.orig/lsp/gcl_module.lsp
+++++ gcl-2.6.12/lsp/gcl_module.lsp
++@@ -22,13 +22,7 @@
++ ;;;;                            module routines
++ 
++ 
++-(in-package 'lisp)
++-
++-(export '(*modules* provide require))
++-(export 'documentation)
++-(export '(variable function structure type setf))
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (eval-when (compile) (proclaim '(optimize (safety 2) (space 3))))
++--- gcl-2.6.12.orig/lsp/gcl_numlib.lsp
+++++ gcl-2.6.12/lsp/gcl_numlib.lsp
++@@ -22,20 +22,7 @@
++ ;;;;                           number routines
++ 
++ 
++-(in-package 'lisp)
++-(export
++- '(isqrt abs phase signum cis asin acos sinh cosh tanh
++-   asinh acosh atanh
++-   rational rationalize
++-   ffloor fround ftruncate fceiling
++-   lognand lognor logandc1 logandc2 logorc1 logorc2
++-   lognot logtest
++-   byte byte-size byte-position
++-   ldb ldb-test mask-field dpb deposit-field
++-   ))
++-
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++--- gcl-2.6.12.orig/lsp/gcl_packlib.lsp
+++++ gcl-2.6.12/lsp/gcl_packlib.lsp
++@@ -22,14 +22,7 @@
++ ;;;;                    package routines
++ 
++ 
++-(in-package 'lisp)
++-
++-
++-(export '(find-all-symbols do-symbols do-external-symbols do-all-symbols with-package-iterator))
++-(export '(apropos apropos-list))
++-
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++@@ -121,7 +114,7 @@
++ (defun print-symbol-apropos (symbol)
++   (prin1 symbol)
++   (when (fboundp symbol)
++-        (if (special-form-p symbol)
+++        (if (special-operator-p symbol)
++             (princ "  Special form")
++             (if (macro-function symbol)
++                 (princ "  Macro")
++--- gcl-2.6.12.orig/lsp/gcl_predlib.lsp
+++++ gcl-2.6.12/lsp/gcl_predlib.lsp
++@@ -22,9 +22,7 @@
++ ;;;;                              predicate routines
++ 
++ 
++-(in-package 'system)
++-
++-(export '(lisp::deftype lisp::typep lisp::subtypep lisp::coerce) 'lisp)
+++(in-package :si)
++ 
++ (eval-when (compile)
++ (proclaim '(optimize (safety 2) (space 3)))
++@@ -87,7 +85,7 @@
++ (deftype vector (&optional element-type size)
++   `(array ,element-type (,size)))
++ (deftype string (&optional size)
++-  `(vector string-char ,size))
+++  `(vector character ,size))
++ (deftype base-string (&optional size)
++   `(vector base-char ,size))
++ (deftype bit-vector (&optional size)
++@@ -96,7 +94,7 @@
++ (deftype simple-vector (&optional size)
++   `(simple-array t (,size)))
++ (deftype simple-string (&optional size)
++-  `(simple-array string-char (,size)))
+++  `(simple-array character (,size)))
++ (deftype simple-base-string (&optional size)
++   `(simple-array base-char (,size)))
++ (deftype simple-bit-vector (&optional size)
++@@ -206,8 +204,8 @@
++     (ratio (eq (type-of object) 'ratio))
++     (standard-char
++      (and (characterp object) (standard-char-p object)))
++-    ((base-char string-char)
++-     (and (characterp object) (string-char-p object)))
+++    ((base-char character)
+++     (characterp object))
++     (integer
++      (and (integerp object) (in-interval-p object i)))
++     (rational
++@@ -309,7 +307,7 @@
++                    signed-char unsigned-char signed-short unsigned-short
++                    number integer bignum rational ratio float method-combination
++                    short-float single-float double-float long-float complex
++-                   character standard-char string-char real 
+++                   character standard-char character real 
++                    package stream pathname readtable hash-table random-state
++                    structure array simple-array function compiled-function
++                    arithmetic-error base-char base-string broadcast-stream 
++@@ -583,23 +581,23 @@
++                     (if (sub-interval-p '(* *) i2) (values t t) (values nil t)))
++                    (t (values nil ntp2))))
++                 (standard-char
++-         (if (member t2 '(base-char string-char character))
+++         (if (member t2 '(base-char character character))
++              (values t t)
++              (values nil ntp2)))
++                 (base-char
++-         (if (member t2 '(character string-char))
+++         (if (member t2 '(character character))
++              (values t t)
++              (values nil ntp2)))
++                 (extended-char
++-         (if (member t2 '(character string-char))
+++         (if (member t2 '(character character))
++              (values t t)
++              (values nil ntp2)))
++-        (string-char
+++        (character
++          (if (eq t2 'character)
++              (values t t)
++              (values nil ntp2)))
++         (character
++-         (if (eq t2 'string-char)
+++         (if (eq t2 'character)
++              (values t t)
++              (values nil ntp2)))
++         (integer
++@@ -635,7 +633,7 @@
++                             (unless (or (equal (car i1) (car i2))
++                                         ; FIXME
++                                         (and (eq (car i1) 'base-char)
++-                                             (eq (car i2) 'string-char)))
+++                                             (eq (car i2) 'character)))
++                                     ;; Unless the element type matches,
++                                     ;;  return NIL T.
++                                     ;; Is this too strict?
++@@ -658,7 +656,7 @@
++                             (unless (or (equal (car i1) (car i2))
++                                         ; FIXME
++                                         (and (eq (car i1) 'base-char)
++-                                             (eq (car i2) 'string-char)))
+++                                             (eq (car i2) 'character)))
++                                     (return-from subtypep
++                                                  (values nil t)))))
++                 (when (or (endp (cdr i1)) (eq (cadr i1) '*))
++--- gcl-2.6.12.orig/lsp/gcl_profile.lsp
+++++ gcl-2.6.12/lsp/gcl_profile.lsp
++@@ -1,5 +1,5 @@
++ 
++-(in-package 'si)
+++(in-package :si)
++ (use-package "SLOOP")
++ 
++ ;; Sample Usage:
++--- gcl-2.6.12.orig/lsp/gcl_seq.lsp
+++++ gcl-2.6.12/lsp/gcl_seq.lsp
++@@ -22,11 +22,7 @@
++ ;;;;                           sequence routines
++ 
++ 
++-(in-package 'lisp)
++-
++-(export '(make-sequence concatenate map some every notany notevery))
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++@@ -40,7 +36,7 @@
++                 (if iesp
++                     (make-list size :initial-element initial-element)
++                     (make-list size))))
++-              ((or (eq type 'simple-string) (eq type 'string)) 'string-char)
+++              ((or (eq type 'simple-string) (eq type 'string)) 'character)
++               ((or (eq type 'simple-bit-vector) (eq type 'bit-vector)) 'bit)
++               ((or (eq type 'simple-vector) (eq type 'vector)) t)
++               (t
++--- gcl-2.6.12.orig/lsp/gcl_seqlib.lsp
+++++ gcl-2.6.12/lsp/gcl_seqlib.lsp
++@@ -22,24 +22,7 @@
++ ;;;;                           sequence routines
++ 
++ 
++-(in-package 'lisp)
++-
++-
++-(export '(reduce fill replace
++-          remove remove-if remove-if-not
++-          delete delete-if delete-if-not
++-          count count-if count-if-not
++-          substitute substitute-if substitute-if-not
++-          nsubstitute nsubstitute-if nsubstitute-if-not
++-          find find-if find-if-not
++-          position position-if position-if-not
++-          remove-duplicates delete-duplicates
++-          mismatch search
++-       with-hash-table-iterator
++-          sort stable-sort merge map-into))
++-
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (proclaim '(optimize (safety 2) (space 3)))
++--- gcl-2.6.12.orig/lsp/gcl_serror.lsp
+++++ gcl-2.6.12/lsp/gcl_serror.lsp
++@@ -100,6 +100,8 @@
++           args))))
++      ("unknown error")))
++ 
+++(defvar *break-on-warnings* nil)
+++
++ (defun warn (datum &rest arguments)
++   (declare (optimize (safety 2)))
++   (let ((c (process-error datum arguments 'simple-warning)))
++--- gcl-2.6.12.orig/lsp/gcl_setf.lsp
+++++ gcl-2.6.12/lsp/gcl_setf.lsp
++@@ -22,16 +22,7 @@
++ ;;;;                                setf routines
++ 
++ 
++-(in-package 'lisp)
++-
++-
++-(export '(setf psetf shiftf rotatef
++-          define-modify-macro defsetf
++-          getf remf incf decf push pushnew pop
++-          define-setf-method get-setf-method get-setf-method-multiple-value))
++-
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ 
++ (eval-when (compile) (proclaim '(optimize (safety 2) (space 3))))
++@@ -86,10 +77,10 @@
++           ',access-fn))
++ 
++ 
++-;;; GET-SETF-METHOD.
+++;;; GET-SETF-EXPANSION.
++ ;;; It just calls GET-SETF-METHOD-MULTIPLE-VALUE
++ ;;;  and checks the number of the store variable.
++-(defun get-setf-method (form &optional env)
+++(defun get-setf-expansion (form &optional env)
++   (multiple-value-bind (vars vals stores store-form access-form)
++       (get-setf-method-multiple-value form env)
++     (unless (= (list-length stores) 1)
++@@ -218,7 +209,7 @@
++ 
++ (define-setf-method getf (&environment env place indicator &optional default)
++   (multiple-value-bind (vars vals stores store-form access-form)
++-      (get-setf-method place env)
+++      (get-setf-expansion place env)
++     (let ((itemp (gensym)) (store (gensym)))
++       (values `(,@vars ,itemp)
++               `(,@vals ,indicator)
++@@ -234,7 +225,7 @@
++ 
++ (define-setf-method the (&environment env type form)
++   (multiple-value-bind (vars vals stores store-form access-form)
++-      (get-setf-method form env)
+++      (get-setf-expansion form env)
++     (let ((store (gensym)))
++       (values vars vals (list store)
++            `(let ((,(car stores) (the ,type ,store))) ,store-form)
++@@ -246,7 +237,7 @@
++             (null (cddr fn)))
++        (error "Can't get the setf-method of ~S." fn))
++   (multiple-value-bind (vars vals stores store-form access-form)
++-      (get-setf-method (cons (cadr fn) rest) env)
+++      (get-setf-expansion (cons (cadr fn) rest) env)
++     (unless (eq (car (last store-form)) (car (last vars)))
++             (error "Can't get the setf-method of ~S." fn))
++     (values vars vals stores
++@@ -261,7 +252,7 @@
++                (null (cddr fn)))
++     (error "Can't get the setf-method of ~S." fn))
++   (multiple-value-bind (vars vals stores store-form access-form)
++-      (get-setf-method (cons (cadr fn) rest) env)
+++      (get-setf-expansion (cons (cadr fn) rest) env)
++     (cond ((eq (car (last store-form)) (car (last vars)))
++            (values vars vals stores
++                    `(apply #',(car store-form) ,@(cdr store-form))
++@@ -277,7 +268,7 @@
++ 
++ (define-setf-method char-bit (&environment env char name)
++   (multiple-value-bind (temps vals stores store-form access-form)
++-      (get-setf-method char env)
+++      (get-setf-expansion char env)
++     (let ((ntemp (gensym))
++        (store (gensym))
++        (stemp (first stores)))
++@@ -290,7 +281,7 @@
++ 
++ (define-setf-method ldb (&environment env bytespec int)
++   (multiple-value-bind (temps vals stores store-form access-form)
++-      (get-setf-method int env)
+++      (get-setf-expansion int env)
++     (let ((btemp (gensym))
++        (store (gensym))
++        (stemp (first stores)))
++@@ -303,7 +294,7 @@
++ 
++ (define-setf-method mask-field (&environment env bytespec int)
++   (multiple-value-bind (temps vals stores store-form access-form)
++-      (get-setf-method int env)
+++      (get-setf-expansion int env)
++     (let ((btemp (gensym))
++        (store (gensym))
++        (stemp (first stores)))
++@@ -346,7 +337,7 @@
++         (setf-structure-access (cadr place) (car g) (cdr g) newvalue))))
++           
++   (multiple-value-bind (vars vals stores store-form access-form)
++-      (get-setf-method place env)
+++      (get-setf-expansion place env)
++     (declare (ignore access-form))
++     `(let* ,(mapcar #'list
++                  (append vars stores)
++@@ -397,7 +388,7 @@
++               nil))
++         (when (endp (cdr r)) (error "~S is an illegal PSETF form." rest))
++         (multiple-value-bind (vars vals stores store-form access-form)
++-            (get-setf-method (car r) env)
+++            (get-setf-expansion (car r) env)
++              (declare (ignore access-form))
++           (setq store-forms (cons store-form store-forms))
++           (setq pairs
++@@ -426,7 +417,7 @@
++          ,@store-forms
++          ,g))
++     (multiple-value-bind (vars vals stores1 store-form access-form)
++-     (get-setf-method (car r) env)
+++     (get-setf-expansion (car r) env)
++       (setq pairs (nconc pairs (mapcar #'list vars vals)))
++       (setq stores (cons (car stores1) stores))
++       (setq store-forms (cons store-form store-forms))
++@@ -451,7 +442,7 @@
++          nil
++          ))
++     (multiple-value-bind (vars vals stores1 store-form access-form)
++-     (get-setf-method (car r) env)
+++     (get-setf-expansion (car r) env)
++       (setq pairs (nconc pairs (mapcar #'list vars vals)))
++       (setq stores (cons (car stores1) stores))
++       (setq store-forms (cons store-form store-forms))
++@@ -480,7 +471,7 @@
++                (let ((access-form reference))
++                  (list 'setq reference ,update-form))))
++        (multiple-value-bind (vars vals stores store-form access-form)
++-        (get-setf-method reference env)
+++        (get-setf-expansion reference env)
++          (list 'let*
++             (mapcar #'list
++                     (append vars stores)
++@@ -492,7 +483,7 @@
++ 
++ (defmacro remf (&environment env place indicator)
++   (multiple-value-bind (vars vals stores store-form access-form)
++-      (get-setf-method place env)
+++      (get-setf-expansion place env)
++     `(let* ,(mapcar #'list vars vals)
++        (multiple-value-bind (,(car stores) flag)
++            (si:rem-f ,access-form ,indicator)
++@@ -508,7 +499,7 @@
++       (return-from push `(let* ((,myitem ,item))
++                         (setq ,place (cons ,myitem ,place)))))
++     (multiple-value-bind (vars vals stores store-form access-form)
++-                      (get-setf-method place env)
+++                      (get-setf-expansion place env)
++                       `(let* ,(mapcar #'list
++                                       (append (list myitem) vars stores)
++                                       (append (list   item) vals (list (list 'cons myitem access-form))))
++@@ -520,7 +511,7 @@
++         (return-from pushnew `(let* ((,myitem ,item))
++                                 (setq ,place (adjoin ,myitem ,place ,@rest))))))
++     (multiple-value-bind (vars vals stores store-form access-form)
++-                      (get-setf-method place env)
+++                      (get-setf-expansion place env)
++                       `(let* ,(mapcar #'list
++                                       (append (list myitem) vars stores)
++                                       (append (list   item) vals
++@@ -535,7 +526,7 @@
++                 (setq ,place (cdr ,place))
++                 ,temp))))
++   (multiple-value-bind (vars vals stores store-form access-form)
++-      (get-setf-method place env)
+++      (get-setf-expansion place env)
++     `(let* ,(mapcar #'list
++                  (append vars stores)
++                  (append vals (list (list 'cdr access-form))))
++--- gcl-2.6.12.orig/lsp/gcl_sloop.lsp
+++++ gcl-2.6.12/lsp/gcl_sloop.lsp
++@@ -71,7 +71,7 @@
++ ;;; some other package.
++ 
++ 
++-(in-package "SLOOP"  :use '(LISP))  
+++(in-package "SLOOP"  :use '(:LISP))  
++ (eval-when (compile eval load)
++ 
++ (export '(loop-return sloop def-loop-collect def-loop-map
++--- gcl-2.6.12.orig/lsp/gcl_stack-problem.lsp
+++++ gcl-2.6.12/lsp/gcl_stack-problem.lsp
++@@ -1,4 +1,4 @@
++-(in-package 'si)
+++(in-package :si)
++ 
++ (defvar *old-handler* #'si::universal-error-handler)
++ 
++--- gcl-2.6.12.orig/lsp/gcl_top.lsp
+++++ gcl-2.6.12/lsp/gcl_top.lsp
++@@ -24,24 +24,14 @@
++ ;;;;  Revised on July 11, by Carl Hoffman.
++ 
++ 
++-(in-package "LISP")
++-;(export 'lisp)
++-(export '(+ ++ +++ - * ** *** / // ///))
++-(export '(break warn))
++-(export '*break-on-warnings*)
++-(export '*break-enable*)
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ (export '*break-readtable*)
++ (export '(loc *debug-print-level*))
++ 
++ (export '(vs ihs-vs ihs-fun frs-vs frs-bds frs-ihs bds-var bds-val super-go))
++ 
++-(eval-when 
++-    (compile)
++-  (proclaim '(optimize (safety 2) (space 3)))
++-  (defvar *command-args* nil))
+++(defvar *command-args* nil)
++ 
++ (defvar +)
++ (defvar ++)
++@@ -75,8 +65,6 @@
++ (defvar *break-enable* t)
++ (defvar *break-message* "")
++ 
++-(defvar *break-on-warnings* nil)
++-
++ (defvar *break-readtable* nil)
++ 
++ (defvar *top-level-hook* nil)
++@@ -330,7 +318,7 @@
++                      (lambda-block-closure (cddddr fun))
++                      (t (cond
++                       ((and (symbolp (car fun))
++-                            (or (special-form-p(car fun))
+++                            (or (special-operator-p(car fun))
++                                 (fboundp (car fun))))
++                        (car fun))
++                       (t '(:zombi))))))
++@@ -384,7 +372,7 @@
++              (lambda-block-closure (nth 4 fun))
++              (lambda-closure 'lambda-closure)
++              (t (if (and (symbolp (car fun))
++-                      (or (special-form-p (car fun))
+++                      (or (special-operator-p (car fun))
++                           (fboundp (car fun))))
++                  (car fun) :zombi)
++                  )))
++--- gcl-2.6.12.orig/lsp/gcl_trace.lsp
+++++ gcl-2.6.12/lsp/gcl_trace.lsp
++@@ -27,13 +27,7 @@
++ ;; If you are working in another package you should (import 'si::arglist)
++ ;; to avoid typing the si::
++ 
++-(in-package 'lisp)
++-
++-(export '(trace untrace))
++-(export 'step)
++-
++-
++-(in-package 'system)
+++(in-package :si)
++ 
++ ;;(proclaim '(optimize (safety 2) (space 3)))
++ 
++@@ -169,7 +163,7 @@
++   (when (null (fboundp fname))
++         (format *trace-output* "The function ~S is not defined.~%" fname)
++         (return-from trace-one nil))
++-  (when (special-form-p fname)
+++  (when (special-operator-p fname)
++         (format *trace-output* "~S is a special form.~%" fname)
++         (return-from trace-one nil))
++   (when (macro-function fname)
++--- gcl-2.6.12.orig/lsp/sys-proclaim.lisp
+++++ gcl-2.6.12/lsp/sys-proclaim.lisp
++@@ -1,294 +1,522 @@
++ 
++-(IN-PACKAGE "SYSTEM") 
++-(MAPC (LAMBDA (COMPILER::X)
++-        (SETF (GET COMPILER::X 'PROCLAIMED-CLOSURE) T))
++-      '(SI-CLASS-PRECEDENCE-LIST BREAK-ON-FLOATING-POINT-EXCEPTIONS
++-           SI-FIND-CLASS AUTOLOAD SI-CLASS-NAME TRACE-ONE SI-CLASSP
++-           SIMPLE-CONDITION-CLASS-P CONDITIONP MAKE-ACCESS-FUNCTION
++-           UNTRACE-ONE WARNINGP DEFINE-STRUCTURE CONDITION-CLASS-P
++-           SI-CLASS-OF AUTOLOAD-MACRO)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) (VALUES T T)) LISP::MAKE-KEYWORD)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) T) S-DATA-HAS-HOLES CONSTANTLY
++-            COMPUTING-ARGS-P ANSI-LOOP::LOOP-PATH-PREPOSITION-GROUPS
++-            ANSI-LOOP::LOOP-COLLECTOR-NAME FIRST INSPECT-SYMBOL
++-            CONTEXT-P ANSI-LOOP::LOOP-MAKE-PSETQ TENTH
++-            COMPILER-MACRO-FUNCTION ANSI-LOOP::LOOP-COLLECTOR-DATA
++-            ARRAY-DIMENSIONS ASINH FPE::XMM-LOOKUP KNOWN-TYPE-P
++-            CONTEXT-VEC CONTEXT-HASH SHOW-ENVIRONMENT
++-            CHECK-DECLARATIONS BKPT-FILE-LINE PROVIDE
++-            ANSI-LOOP::LOOP-PATH-P DWIM RESTART-P FPE::LOOKUP ACOSH
++-            PRINT-SYMBOL-APROPOS SIGNUM ANSI-LOOP::LOOP-UNIVERSE-ANSI
++-            IHS-NOT-INTERPRETED-ENV BYTE-SIZE THIRD RESTART-FUNCTION
++-            ANSI-LOOP::LOOP-UNIVERSE-TYPE-KEYWORDS DO-F
++-            ANSI-LOOP::LOOP-EMIT-BODY COSH S-DATA-CONC-NAME
++-            INSTREAM-STREAM-NAME PATCH-SHARP INSPECT-STRING
++-            S-DATA-INCLUDES SHOW-BREAK-POINT FPE::GREF
++-            FIND-KCL-TOP-RESTART RESTART-REPORT-FUNCTION S-DATA-NAMED
++-            S-DATA-CONSTRUCTORS S-DATA-P SLOOP::PARSE-LOOP
++-            INSPECT-STRUCTURE BKPT-FORM PHASE SETUP-INFO
++-            ANSI-LOOP::LOOP-UNIVERSE-TYPE-SYMBOLS
++-            RESET-TRACE-DECLARATIONS SLOOP::SLOOP-SLOOP-MACRO EIGHTH
++-            SECOND SLOOP::TRANSLATE-NAME
++-            ANSI-LOOP::LOOP-MINIMAX-FLAG-VARIABLE NINTH
++-            ANSI-LOOP::LOOP-COLLECTOR-P MAKE-KCL-TOP-RESTART
++-            SEARCH-STACK ANSI-LOOP::LOOP-COLLECTOR-DTYPE ACOS
++-            ANSI-LOOP::LOOP-MAXMIN-COLLECTION MAKE-DEFPACKAGE-FORM
++-            INSPECT-NUMBER SINH ANSI-LOOP::LOOP-HACK-ITERATION
++-            INSTREAM-STREAM WALK-THROUGH PRINT-IHS SIXTH S-DATA-FROZEN
++-            INSPECT-CHARACTER SLOOP::RETURN-SLOOP-MACRO
++-            FREEZE-DEFSTRUCT NEXT-STACK-FRAME
++-            SLOOP::LOOP-COLLECT-KEYWORD-P DM-BAD-KEY
++-            COMPILE-FILE-PATHNAME SEVENTH
++-            ANSI-LOOP::LOOP-CODE-DUPLICATION-THRESHOLD
++-            SLOOP::PARSE-LOOP-INITIALLY TERMINAL-INTERRUPT
++-            ANSI-LOOP::LOOP-EMIT-FINAL-VALUE FRS-KIND CHECK-TRACE-SPEC
++-            CONTEXT-SPICE ANSI-LOOP::DESTRUCTURING-SIZE
++-            ANSI-LOOP::LOOP-MINIMAX-OPERATIONS INSPECT-VECTOR ATANH
++-            ANSI-LOOP::LOOP-PATH-NAMES S-DATA-OFFSET
++-            SLOOP::REPEAT-SLOOP-MACRO FIND-ALL-SYMBOLS
++-            ANSI-LOOP::LOOP-PATH-FUNCTION REWRITE-RESTART-CASE-CLAUSE
++-            ANSI-LOOP::LOOP-COLLECTOR-CLASS
++-            RESTART-INTERACTIVE-FUNCTION DM-KEY-NOT-ALLOWED
++-            INSPECT-PACKAGE S-DATA-PRINT-FUNCTION NODE-OFFSET
++-            RESTART-NAME RATIONAL NORMALIZE-TYPE
++-            SLOOP::SUBSTITUTE-SLOOP-BODY FIFTH INFO-GET-TAGS S-DATA-RAW
++-            RE-QUOTE-STRING SHORT-NAME LOGNOT INSPECT-ARRAY
++-            TRACE-ONE-PREPROCESS SIMPLE-ARRAY-P FIND-DOCUMENTATION
++-            BKPT-FUNCTION ANSI-LOOP::LOOP-PATH-USER-DATA EVAL-FEATURE
++-            ANSI-LOOP::LOOP-MINIMAX-INFINITY-DATA ABS S-DATA-STATICP
++-            ANSI-LOOP::LOOP-MINIMAX-TEMP-VARIABLE INSERT-BREAK-POINT
++-            S-DATA-DOCUMENTATION PRINT-FRS IHS-VISIBLE GET-INSTREAM
++-            INFO-GET-FILE GET-NEXT-VISIBLE-FUN DBL-EVAL FOURTH
++-            ANSI-LOOP::LOOP-COLLECTOR-HISTORY BYTE-POSITION
++-            ANSI-LOOP::LOOP-TYPED-INIT ASIN
++-            ANSI-LOOP::LOOP-COLLECTOR-TEMPVARS FIX-LOAD-PATH BKPT-FILE
++-            VECTOR-POP IDESCRIBE UNIQUE-ID
++-            ANSI-LOOP::LOOP-UNIVERSE-ITERATION-KEYWORDS
++-            ANSI-LOOP::LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
++-            SLOOP::POINTER-FOR-COLLECT FPE::ST-LOOKUP
++-            ANSI-LOOP::LOOP-CONSTANTP ANSI-LOOP::LOOP-UNIVERSE-KEYWORDS
++-            ADD-TO-HOTLIST ANSI-LOOP::LOOP-DO-THEREIS
++-            ANSI-LOOP::LOOP-LIST-COLLECTION S-DATA-TYPE
++-            SLOOP::LOOP-LET-BINDINGS
++-            ANSI-LOOP::LOOP-PATH-INCLUSIVE-PERMITTED
++-            BREAK-FORWARD-SEARCH-STACK ISQRT S-DATA-SLOT-POSITION
++-            BREAK-BACKWARD-SEARCH-STACK
++-            ANSI-LOOP::MAKE-ANSI-LOOP-UNIVERSE RESTART-TEST-FUNCTION
++-            INVOKE-DEBUGGER SLOOP::PARSE-NO-BODY
++-            ANSI-LOOP::LOOP-MAKE-DESETQ
++-            ANSI-LOOP::LOOP-CONSTRUCT-RETURN COMPLEMENT
++-            ANSI-LOOP::LOOP-UNIVERSE-FOR-KEYWORDS TANH INSTREAM-P
++-            NODES-FROM-INDEX ANSI-LOOP::LOOP-PSEUDO-BODY
++-            S-DATA-INCLUDED ANSI-LOOP::LOOP-MINIMAX-TYPE
++-            NUMBER-OF-DAYS-FROM-1900 INFO-NODE-FROM-POSITION
++-            ANSI-LOOP::LOOP-MINIMAX-ANSWER-VARIABLE
++-            ANSI-LOOP::LOOP-MINIMAX-P BEST-ARRAY-ELEMENT-TYPE
++-            S-DATA-NAME SLOOP::AVERAGING-SLOOP-MACRO
++-            ANSI-LOOP::LOOP-UNIVERSE-PATH-KEYWORDS CIS SEQTYPE
++-            LEAP-YEAR-P GET-BYTE-STREAM-NCHARS IHS-FNAME
++-            ANSI-LOOP::LOOP-UNIVERSE-P INSPECT-CONS
++-            S-DATA-SLOT-DESCRIPTIONS)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (*) *) INFO-ERROR BREAK-PREVIOUS BREAK-NEXT
++-            CONTINUE BREAK-LOCAL SHOW-BREAK-VARIABLES BREAK-BDS
++-            MUFFLE-WARNING DBL-BACKTRACE ANSI-LOOP::LOOP-OPTIONAL-TYPE
++-            IHS-BACKTRACE BREAK-QUIT BREAK-VS)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (FIXNUM) FIXNUM) FPE::FE-ENABLE DBL-WHAT-FRAME)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) FIXNUM) INSTREAM-LINE FPE::REG-LOOKUP
++-            S-DATA-SIZE S-DATA-LENGTH THE-START)) 
++-(PROCLAIM '(FTYPE (FUNCTION (FIXNUM) T) PUSH-CONTEXT GET-CONTEXT)) 
++-(PROCLAIM '(FTYPE (FUNCTION (STRING FIXNUM) FIXNUM) ATOI)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (*) T) ANSI-LOOP::MAKE-STANDARD-LOOP-UNIVERSE
++-            MAYBE-CLEAR-INPUT ANSI-LOOP::MAKE-LOOP-MINIMAX-INTERNAL
++-            DRIBBLE ANSI-LOOP::MAKE-LOOP-COLLECTOR
++-            ANSI-LOOP::MAKE-LOOP-UNIVERSE Y-OR-N-P COMPUTE-RESTARTS
++-            DESCRIBE-ENVIRONMENT TRANSFORM-KEYWORDS
++-            SLOOP::PARSE-LOOP-DECLARE MAKE-RESTART MAKE-INSTREAM
++-            ANSI-LOOP::LOOP-GENTEMP DBL-READ LOC CURRENT-STEP-FUN
++-            VECTOR YES-OR-NO-P BREAK
++-            ANSI-LOOP::LOOP-DISALLOW-CONDITIONAL STEP-INTO MAKE-CONTEXT
++-            ANSI-LOOP::MAKE-LOOP-PATH MAKE-S-DATA BREAK-LOCALS ABORT
++-            SLOOP::PARSE-LOOP-WITH STEP-NEXT)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) *) PRINC-TO-STRING GET-&ENVIRONMENT DESCRIBE
++-            INSPECT ANSI-LOOP::NAMED-VARIABLE WAITING
++-            ANSI-LOOP::LOOP-OPTIMIZATION-QUANTITIES PRIN1-TO-STRING
++-            BREAK-LEVEL-INVOKE-RESTART END-WAITING
++-            ANSI-LOOP::LOOP-LIST-STEP ALOAD INSTREAM-NAME
++-            INVOKE-RESTART-INTERACTIVELY FIND-DECLARATIONS BREAK-GO
++-            INSPECT-OBJECT INFO-SUBFILE)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T FIXNUM T T) T) BIGNTHCDR)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T FIXNUM FIXNUM T T) T) QUICK-SORT)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T) *) SHARP-S-READER SHARP---READER
++-            ANSI-LOOP::LOOP-GET-COLLECTION-INFO SHARP-+-READER
++-            LIST-MERGE-SORT LISP::VERIFY-KEYWORDS READ-INSPECT-COMMAND
++-            RESTART-PRINT)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T *) *) REDUCE SUBTYPEP SORT
++-            SLOOP::FIND-IN-ORDERED-LIST STABLE-SORT LISP::PARSE-BODY)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T *) *) LISP::PARSE-DEFMACRO-LAMBDA-LIST
++-            LISP::PARSE-DEFMACRO)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T T *) *) MASET)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T T T) *) LISP::PUSH-OPTIONAL-BINDING)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T *) *) DECODE-UNIVERSAL-TIME STEPPER USE-VALUE
++-            FROUND INFO SHOW-INFO INVOKE-RESTART FCEILING
++-            PARSE-BODY-HEADER ENSURE-DIRECTORIES-EXIST PRINT-DOC
++-            APROPOS-DOC WRITE-TO-STRING FFLOOR NLOAD BREAK-FUNCTION
++-            REQUIRE APROPOS GET-SETF-METHOD APROPOS-LIST
++-            ANSI-LOOP::LOOP-CONSTANT-FOLD-IF-POSSIBLE STORE-VALUE
++-            GET-SETF-METHOD-MULTIPLE-VALUE READ-FROM-STRING
++-            WILD-PATHNAME-P FTRUNCATE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) T) QUOTATION-READER
++-            SLOOP::IN-PACKAGE-SLOOP-MAP SLOOP::NEVER-SLOOP-COLLECT
++-            MATCH-DIMENSIONS OBJLT ANSI-LOOP::LOOP-TEQUAL DBL-UP
++-            GET-INFO-CHOICES NTHCDR ANSI-LOOP::LOOP-DECLARE-VARIABLE
++-            ANSI-LOOP::MAKE-LOOP-MINIMAX LDB
++-            OVERWRITE-SLOT-DESCRIPTIONS GET-LINE-OF-FORM DOCUMENTATION
++-            DM-NTH ANSI-LOOP::LOOP-LOOKUP-KEYWORD DM-NTH-CDR
++-            SLOOP::=-SLOOP-FOR LIST-DELQ SET-DIR LOGANDC2
++-            SLOOP::IN-FRINGE-SLOOP-MAP DISPLAY-COMPILED-ENV SET-BACK
++-            SLOOP::LOGXOR-SLOOP-COLLECT LEFT-PARENTHESIS-READER
++-            ANSI-LOOP::LOOP-DO-IF FPE::%-READER LDB-TEST
++-            COMPILER::COMPILER-DEF-HOOK BYTE
++-            SLOOP::IN-CAREFULLY-SLOOP-FOR INCREMENT-CURSOR
++-            IN-INTERVAL-P LISP::LOOKUP-KEYWORD SUPER-GO WRITE-BYTE
++-            ANSI-LOOP::LOOP-DO-WHILE READ-INSTRUCTION LOGANDC1
++-            SLOOP::THEREIS-SLOOP-COLLECT COERCE-TO-STRING LOGORC2
++-            SEQUENCE-CURSOR LOGNOR FPE::READ-OPERANDS
++-            SLOOP::MAXIMIZE-SLOOP-COLLECT ALL-MATCHES
++-            SLOOP::IN-TABLE-SLOOP-MAP SLOOP::COLLATE-SLOOP-COLLECT
++-            CHECK-SEQ-START-END BREAK-STEP-NEXT FPE::RF
++-            SLOOP::PARSE-LOOP-MAP VECTOR-PUSH FPE::PAREN-READER
++-            FPE::0-READER ANSI-LOOP::LOOP-TASSOC SETF-HELPER
++-            SETF-EXPAND SLOOP::MINIMIZE-SLOOP-COLLECT ADD-FILE LOGORC1
++-            SLOOP::COUNT-SLOOP-COLLECT SLOOP::MAKE-VALUE
++-            PARSE-SLOT-DESCRIPTION SLOOP::DESETQ1
++-            ANSI-LOOP::LOOP-DO-ALWAYS SLOOP::L-EQUAL GET-MATCH
++-            SLOOP::SUM-SLOOP-COLLECT DM-V BREAK-STEP-INTO LOGNAND NTH
++-            SUBSTRINGP INFO-AUX SUB-INTERVAL-P *BREAK-POINTS* SAFE-EVAL
++-            ANSI-LOOP::HIDE-VARIABLE-REFERENCES COERCE
++-            ANSI-LOOP::LOOP-NOTE-MINIMAX-OPERATION CONDITION-PASS
++-            GET-NODES ANSI-LOOP::LOOP-TMEMBER
++-            SLOOP::ALWAYS-SLOOP-COLLECT DISPLAY-ENV SLOOP::THE-TYPE
++-            ANSI-LOOP::LOOP-MAYBE-BIND-FORM ITERATE-OVER-BKPTS LOGTEST
++-            LISP::KEYWORD-SUPPLIED-P)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T T T T T T) *) TRACE-CALL)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION NIL *) GCL-TOP-LEVEL SIMPLE-BACKTRACE
++-            BREAK-CURRENT BREAK-MESSAGE ANSI-LOOP::LOOP-DO-FOR
++-            BREAK-HELP)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (STRING) T) RESET-SYS-PATHS
++-            COERCE-SLASH-TERMINATED)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) FIXNUM) RELATIVE-LINE GET-NODE-INDEX
++-            ANSI-LOOP::DUPLICATABLE-CODE-P THE-END)) 
++-(PROCLAIM '(FTYPE (FUNCTION (FIXNUM T) T) SMALLNTHCDR)) 
++-(PROCLAIM '(FTYPE (FUNCTION (FIXNUM FIXNUM) FIXNUM) ROUND-UP)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T *) T)
++-            ANSI-LOOP::LOOP-COLLECT-PREPOSITIONAL-PHRASES SBIT
++-            INFO-SEARCH PROCESS-ARGS LIST-MATCHES ARRAY-ROW-MAJOR-INDEX
++-            FIND-RESTART SLOOP::LOOP-ADD-TEMPS ANSI-LOOP::LOOP-WARN
++-            ANSI-LOOP::LOOP-ERROR BAD-SEQ-LIMIT ARRAY-IN-BOUNDS-P
++-            MAKE-ARRAY SIGNAL BIT PROCESS-SOME-ARGS CONCATENATE ERROR
++-            REMOVE-DUPLICATES SLOOP::ADD-FROM-DATA READ-BYTE
++-            FILE-SEARCH FILE-TO-STRING UPGRADED-ARRAY-ELEMENT-TYPE WARN
++-            BREAK-LEVEL BIT-NOT NTH-STACK-FRAME DELETE-DUPLICATES)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) *) ANSI-LOOP::ESTIMATE-CODE-SIZE-1 NEWLINE
++-            FIND-DOC RESTART-REPORT ANSI-LOOP::ESTIMATE-CODE-SIZE
++-            NEW-SEMI-COLON-READER)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T *) T) NOTANY BIT-ORC1
++-            ANSI-LOOP::LOOP-CHECK-DATA-TYPE REMOVE BIT-ANDC1
++-            INTERNAL-COUNT-IF-NOT READ-SEQUENCE SUBSETP
++-            VECTOR-PUSH-EXTEND TYPEP CERROR REPLACE COUNT-IF
++-            NSET-DIFFERENCE DELETE REMOVE-IF NSET-EXCLUSIVE-OR
++-            PROCESS-ERROR INTERNAL-COUNT SLOOP::IN-ARRAY-SLOOP-FOR
++-            SEARCH MAKE-SEQUENCE ADJUST-ARRAY BIT-NAND FIND-IF
++-            NINTERSECTION FILL BIT-ORC2 BIT-XOR UNION DELETE-IF-NOT
++-            SLOOP::PARSE-LOOP-MACRO WRITE-SEQUENCE SOME COUNT-IF-NOT
++-            MAP-INTO FIND FIND-IF-NOT BIT-NOR BIT-ANDC2 POSITION-IF
++-            NOTEVERY NUNION SET-DIFFERENCE INTERSECTION POSITION-IF-NOT
++-            EVERY POSITION FIND-IHS BIT-EQV REMOVE-IF-NOT MISMATCH
++-            BIT-AND INTERNAL-COUNT-IF DELETE-IF COUNT BREAK-CALL
++-            SET-EXCLUSIVE-OR SLOOP::LOOP-ADD-BINDING BIT-IOR)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T) T) ANSI-LOOP::LOOP-FOR-IN
++-            FLOATING-POINT-ERROR CHECK-TRACE-ARGS
++-            ANSI-LOOP::HIDE-VARIABLE-REFERENCE SETF-EXPAND-1
++-            MAKE-BREAK-POINT FPE::REF SHARP-A-READER SHARP-U-READER DPB
++-            DM-VL CHECK-S-DATA ANSI-LOOP::LOOP-MAKE-ITERATION-VARIABLE
++-            APPLY-DISPLAY-FUN ANSI-LOOP::LOOP-STANDARD-EXPANSION
++-            ANSI-LOOP::LOOP-TRANSLATE DEPOSIT-FIELD
++-            ANSI-LOOP::LOOP-ANSI-FOR-EQUALS
++-            SLOOP::LOOP-PARSE-ADDITIONAL-COLLECTIONS
++-            ANSI-LOOP::LOOP-FOR-ON GET-SLOT-POS
++-            ANSI-LOOP::PRINT-LOOP-UNIVERSE DEFMACRO* WARN-VERSION
++-            RESTART-CASE-EXPRESSION-CONDITION MAKE-T-TYPE
++-            ANSI-LOOP::LOOP-SUM-COLLECTION ANSI-LOOP::LOOP-FOR-BEING
++-            ANSI-LOOP::LOOP-FOR-ACROSS)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T *) T) CHECK-TYPE-SYMBOL
++-            ANSI-LOOP::LOOP-HASH-TABLE-ITERATION-PATH NSUBSTITUTE-IF
++-            SUBSTITUTE-IF
++-            ANSI-LOOP::LOOP-PACKAGE-SYMBOLS-ITERATION-PATH NSUBSTITUTE
++-            ANSI-LOOP::LOOP-SEQUENCE-ELEMENTS-PATH
++-            LISP::PUSH-LET-BINDING ANSI-LOOP::ADD-LOOP-PATH
++-            SUBSTITUTE-IF-NOT MAP SLOOP::LOOP-DECLARE-BINDING
++-            SUBSTITUTE ANSI-LOOP::LOOP-MAKE-VARIABLE NSUBSTITUTE-IF-NOT
++-            COMPLETE-PROP)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T) T) LISP::DO-ARG-COUNT-ERROR
++-            LISP::PUSH-SUB-LIST-BINDING)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T) T) MAKE-CONSTRUCTOR MAKE-PREDICATE
++-            DO-BREAK-LEVEL)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T *) T) PRINT-STACK-FRAME MERGE
++-            SLOOP::DEF-LOOP-INTERNAL)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T FIXNUM) T) SHARP-EQ-READER
++-            SHARP-SHARP-READER)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T) T) CALL-TEST COERCE-TO-CONDITION
++-            FIND-LINE-IN-FUN ANSI-LOOP::LOOP-FOR-ARITHMETIC MAYBE-BREAK
++-            SLOOP::FIRST-USE-SLOOP-FOR SLOOP::FIRST-SLOOP-FOR
++-            SETF-STRUCTURE-ACCESS)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T T T T T *) T) ENCODE-UNIVERSAL-TIME)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T T T T T) T)
++-            ANSI-LOOP::LOOP-SEQUENCER)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T T T T *) T) UNIVERSAL-ERROR-HANDLER)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION NIL T) ANSI-LOOP::LOOP-DO-NAMED
++-            SLOOP::LOOP-UN-POP ANSI-LOOP::LOOP-DO-INITIALLY
++-            SLOOP::PARSE-LOOP-WHEN SLOOP::LOOP-POP SLOOP::LOOP-PEEK
++-            SLOOP::PARSE-LOOP-DO SET-ENV ANSI-LOOP::LOOP-DO-REPEAT
++-            READ-EVALUATED-FORM ANSI-LOOP::LOOP-DO-RETURN
++-            ANSI-LOOP::LOOP-GET-FORM ANSI-LOOP::LOOP-DO-FINALLY
++-            SET-CURRENT DEFAULT-SYSTEM-BANNER DM-TOO-FEW-ARGUMENTS
++-            ANSI-LOOP::LOOP-DO-DO SLOOP::PARSE-ONE-WHEN-CLAUSE
++-            DEFAULT-INFO-HOTLIST KCL-TOP-RESTARTS TYPE-ERROR
++-            SET-UP-TOP-LEVEL INSPECT-INDENT GET-INDEX-NODE
++-            ALL-TRACE-DECLARATIONS DBL ANSI-LOOP::LOOP-GET-PROGN
++-            INIT-BREAK-POINTS STEP-READ-LINE
++-            ANSI-LOOP::LOOP-ITERATION-DRIVER GET-SIG-FN-NAME
++-            SETUP-LINEINFO CLEANUP ANSI-LOOP::LOOP-WHEN-IT-VARIABLE
++-            ANSI-LOOP::LOOP-DO-WITH SHOW-RESTARTS
++-            SLOOP::PARSE-LOOP-COLLECT INSPECT-READ-LINE
++-            DM-TOO-MANY-ARGUMENTS INSPECT-INDENT-1
++-            ANSI-LOOP::LOOP-POP-SOURCE TEST-ERROR SLOOP::PARSE-LOOP1
++-            ANSI-LOOP::LOOP-CONTEXT ANSI-LOOP::LOOP-BIND-BLOCK
++-            WINE-TMP-REDIRECT ILLEGAL-BOA SLOOP::PARSE-LOOP-FOR
++-            TOP-LEVEL LISP-IMPLEMENTATION-VERSION GET-TEMP-DIR)) 
++\ No newline at end of file
+++(COMMON-LISP::IN-PACKAGE "SYSTEM") 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         ANSI-LOOP::LOOP-EMIT-FINAL-VALUE SYSTEM::INSPECT-CHARACTER
+++         SYSTEM::INSPECT-STRUCTURE SYSTEM::PRINT-IHS
+++         SYSTEM::RESTART-FUNCTION COMMON-LISP::TANH COMMON-LISP::FIFTH
+++         SLOOP::PARSE-LOOP-INITIALLY SYSTEM::NEXT-STACK-FRAME
+++         SYSTEM::IDESCRIBE SYSTEM::PROCESS-ARGS SYSTEM::LEAP-YEAR-P
+++         SLOOP::AVERAGING-SLOOP-MACRO SYSTEM::FIX-LOAD-PATH
+++         SLOOP::SUBSTITUTE-SLOOP-BODY SYSTEM::RESTART-REPORT-FUNCTION
+++         COMMON-LISP::NINTH SLOOP::SLOOP-SLOOP-MACRO
+++         SYSTEM::S-DATA-CONSTRUCTORS SYSTEM::FREEZE-DEFSTRUCT
+++         COMMON-LISP::EIGHTH SYSTEM::FIND-DOCUMENTATION
+++         ANSI-LOOP::LOOP-PSEUDO-BODY COMMON-LISP::RATIONAL
+++         ANSI-LOOP::LOOP-EMIT-BODY COMMON-LISP::ASIN
+++         COMMON-LISP::COMPILE-FILE-PATHNAME SYSTEM::S-DATA-P
+++         SYSTEM::BKPT-FUNCTION SYSTEM::TRACE-ONE-PREPROCESS
+++         COMMON-LISP::LOGNOT SYSTEM::SIMPLE-ARRAY-P SYSTEM::BKPT-FILE
+++         SYSTEM::S-DATA-STATICP COMMON-LISP::ISQRT SYSTEM::INSTREAM-P
+++         COMMON-LISP::SEVENTH SYSTEM::S-DATA-NAMED
+++         ANSI-LOOP::LOOP-PATH-PREPOSITION-GROUPS SYSTEM::INSPECT-NUMBER
+++         COMMON-LISP::ATANH SYSTEM::RESTART-TEST-FUNCTION
+++         SYSTEM::S-DATA-INCLUDES SYSTEM::S-DATA-HAS-HOLES
+++         SYSTEM::CONTEXT-VEC FPE::XMM-LOOKUP SYSTEM::S-DATA-RAW
+++         ANSI-LOOP::LOOP-UNIVERSE-KEYWORDS
+++         SYSTEM::RESTART-INTERACTIVE-FUNCTION
+++         ANSI-LOOP::LOOP-UNIVERSE-ITERATION-KEYWORDS
+++         ANSI-LOOP::LOOP-COLLECTOR-NAME ANSI-LOOP::LOOP-PATH-NAMES
+++         ANSI-LOOP::LOOP-MINIMAX-ANSWER-VARIABLE
+++         SYSTEM::S-DATA-INCLUDED SYSTEM::S-DATA-SLOT-DESCRIPTIONS
+++         SYSTEM::S-DATA-OFFSET SLOOP::REPEAT-SLOOP-MACRO
+++         SYSTEM::S-DATA-PRINT-FUNCTION ANSI-LOOP::LOOP-PATH-USER-DATA
+++         COMMON-LISP::FIND-ALL-SYMBOLS COMMON-LISP::FIRST
+++         SYSTEM::GET-BYTE-STREAM-NCHARS SYSTEM::BKPT-FORM
+++         SYSTEM::NODES-FROM-INDEX SYSTEM::INSPECT-SYMBOL
+++         SYSTEM::KNOWN-TYPE-P ANSI-LOOP::LOOP-MINIMAX-TEMP-VARIABLE
+++         SYSTEM::MAKE-DEFPACKAGE-FORM COMMON-LISP::ARRAY-DIMENSIONS
+++         SYSTEM::INSERT-BREAK-POINT SLOOP::PARSE-LOOP
+++         ANSI-LOOP::LOOP-PATH-INCLUSIVE-PERMITTED
+++         ANSI-LOOP::LOOP-UNIVERSE-PATH-KEYWORDS SYSTEM::SHORT-NAME
+++         SYSTEM::CHECK-TRACE-SPEC ANSI-LOOP::DESTRUCTURING-SIZE
+++         SYSTEM::BEST-ARRAY-ELEMENT-TYPE SYSTEM::CONTEXT-HASH
+++         COMMON-LISP::SIXTH SYSTEM::IHS-VISIBLE SYSTEM::INSPECT-ARRAY
+++         COMMON-LISP::BYTE-SIZE ANSI-LOOP::LOOP-COLLECTOR-CLASS
+++         ANSI-LOOP::LOOP-HACK-ITERATION
+++         ANSI-LOOP::LOOP-CONSTRUCT-RETURN SYSTEM::S-DATA-SLOT-POSITION
+++         ANSI-LOOP::LOOP-MINIMAX-FLAG-VARIABLE SYSTEM::INSPECT-STRING
+++         COMMON-LISP::PROVIDE COMMON-LISP::CIS
+++         ANSI-LOOP::LOOP-MINIMAX-OPERATIONS
+++         SYSTEM::BREAK-BACKWARD-SEARCH-STACK
+++         ANSI-LOOP::LOOP-COLLECTOR-DTYPE
+++         SYSTEM::IHS-NOT-INTERPRETED-ENV SYSTEM::SEARCH-STACK
+++         COMMON-LISP::TENTH ANSI-LOOP::LOOP-DO-THEREIS
+++         ANSI-LOOP::LOOP-MAXMIN-COLLECTION
+++         ANSI-LOOP::LOOP-MINIMAX-INFINITY-DATA
+++         ANSI-LOOP::LOOP-MAKE-PSETQ SYSTEM::ADD-TO-HOTLIST
+++         SYSTEM::INSPECT-CONS ANSI-LOOP::LOOP-UNIVERSE-TYPE-SYMBOLS
+++         SYSTEM::INSPECT-VECTOR COMMON-LISP::CONSTANTLY
+++         SYSTEM::REWRITE-RESTART-CASE-CLAUSE SYSTEM::DM-BAD-KEY
+++         SYSTEM::PRINT-SYMBOL-APROPOS SYSTEM::FRS-KIND FPE::ST-LOOKUP
+++         COMMON-LISP::FOURTH SYSTEM::TERMINAL-INTERRUPT
+++         SYSTEM::DM-KEY-NOT-ALLOWED SYSTEM::UNIQUE-ID
+++         SYSTEM::S-DATA-FROZEN SLOOP::POINTER-FOR-COLLECT
+++         SYSTEM::INSPECT-PACKAGE SYSTEM::DBL-EVAL
+++         ANSI-LOOP::LOOP-MINIMAX-TYPE ANSI-LOOP::LOOP-UNIVERSE-ANSI
+++         ANSI-LOOP::LOOP-UNIVERSE-TYPE-KEYWORDS SYSTEM::DWIM
+++         SYSTEM::INSTREAM-STREAM-NAME SLOOP::RETURN-SLOOP-MACRO
+++         SYSTEM::PATCH-SHARP SYSTEM::CONTEXT-P SYSTEM::INFO-GET-FILE
+++         SYSTEM::RESTART-P COMMON-LISP::COSH COMMON-LISP::SINH
+++         SYSTEM::GET-NEXT-VISIBLE-FUN SYSTEM::CHECK-DECLARATIONS
+++         SYSTEM::GET-INSTREAM
+++         ANSI-LOOP::LOOP-CODE-DUPLICATION-THRESHOLD SYSTEM::S-DATA-NAME
+++         ANSI-LOOP::LOOP-UNIVERSE-FOR-KEYWORDS
+++         SYSTEM::S-DATA-DOCUMENTATION SYSTEM::SHOW-BREAK-POINT
+++         COMMON-LISP::ACOS COMMON-LISP::INVOKE-DEBUGGER
+++         SYSTEM::BKPT-FILE-LINE ANSI-LOOP::LOOP-COLLECTOR-DATA
+++         COMMON-LISP::THIRD SYSTEM::S-DATA-CONC-NAME
+++         COMMON-LISP::SIGNUM
+++         ANSI-LOOP::LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
+++         SYSTEM::NORMALIZE-TYPE ANSI-LOOP::LOOP-TYPED-INIT
+++         ANSI-LOOP::LOOP-PATH-FUNCTION SYSTEM::INFO-NODE-FROM-POSITION
+++         COMMON-LISP::ASINH SYSTEM::RE-QUOTE-STRING
+++         SLOOP::LOOP-COLLECT-KEYWORD-P SYSTEM::PRINT-FRS
+++         SYSTEM::EVAL-FEATURE ANSI-LOOP::LOOP-COLLECTOR-P
+++         ANSI-LOOP::LOOP-COLLECTOR-HISTORY
+++         ANSI-LOOP::LOOP-LIST-COLLECTION
+++         SYSTEM::BREAK-FORWARD-SEARCH-STACK COMMON-LISP::RESTART-NAME
+++         SLOOP::PARSE-NO-BODY ANSI-LOOP::LOOP-UNIVERSE-P
+++         SYSTEM::NUMBER-OF-DAYS-FROM-1900 SYSTEM::NODE-OFFSET
+++         ANSI-LOOP::LOOP-MINIMAX-P SYSTEM::IHS-FNAME FPE::LOOKUP
+++         SLOOP::LOOP-LET-BINDINGS FPE::GREF COMMON-LISP::PHASE
+++         COMMON-LISP::BYTE-POSITION SYSTEM::INSTREAM-STREAM
+++         ANSI-LOOP::LOOP-PATH-P SYSTEM::SEQTYPE COMMON-LISP::ACOSH
+++         COMMON-LISP::ABS COMMON-LISP::COMPLEMENT
+++         ANSI-LOOP::LOOP-CONSTANTP SYSTEM::WALK-THROUGH
+++         SYSTEM::SETUP-INFO SYSTEM::COMPUTING-ARGS-P
+++         SYSTEM::CONTEXT-SPICE SYSTEM::MAKE-KCL-TOP-RESTART
+++         COMMON-LISP::COMPILER-MACRO-FUNCTION
+++         ANSI-LOOP::LOOP-MAKE-DESETQ SYSTEM::SHOW-ENVIRONMENT
+++         SLOOP::TRANSLATE-NAME SYSTEM::INFO-GET-TAGS
+++         COMMON-LISP::SECOND SYSTEM::RESET-TRACE-DECLARATIONS
+++         SYSTEM::S-DATA-TYPE SYSTEM::FIND-KCL-TOP-RESTART
+++         ANSI-LOOP::MAKE-ANSI-LOOP-UNIVERSE SYSTEM::DO-F
+++         ANSI-LOOP::LOOP-COLLECTOR-TEMPVARS COMMON-LISP::VECTOR-POP)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         SYSTEM::IHS-BACKTRACE SYSTEM::BREAK-NEXT SYSTEM::BREAK-QUIT
+++         SYSTEM::SHOW-BREAK-VARIABLES SYSTEM::BREAK-BDS
+++         COMMON-LISP::MUFFLE-WARNING SYSTEM::BREAK-PREVIOUS
+++         SYSTEM::INFO-ERROR ANSI-LOOP::LOOP-OPTIONAL-TYPE
+++         SYSTEM::DBL-BACKTRACE SYSTEM::BREAK-LOCAL SYSTEM::BREAK-VS
+++         COMMON-LISP::CONTINUE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM)
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::DBL-WHAT-FRAME FPE::FE-ENABLE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMMON-LISP::SUBTYPEP COMMON-LISP::REDUCE SYSTEM::PARSE-BODY
+++         COMMON-LISP::STABLE-SORT COMMON-LISP::SORT
+++         SLOOP::FIND-IN-ORDERED-LIST)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::VERIFY-KEYWORDS SYSTEM::RESTART-PRINT
+++         ANSI-LOOP::LOOP-GET-COLLECTION-INFO SYSTEM::LIST-MERGE-SORT
+++         SYSTEM::READ-INSPECT-COMMAND SYSTEM::SHARP---READER
+++         SYSTEM::SHARP-+-READER SYSTEM::SHARP-S-READER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::PUSH-OPTIONAL-BINDING)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::PARSE-DEFMACRO-LAMBDA-LIST SYSTEM::PARSE-DEFMACRO)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::TRACE-CALL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::MASET)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         FPE::REG-LOOKUP SYSTEM::INSTREAM-LINE SYSTEM::THE-START
+++         SYSTEM::S-DATA-LENGTH SYSTEM::S-DATA-SIZE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
+++         SYSTEM::PUSH-CONTEXT SYSTEM::GET-CONTEXT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
+++         SYSTEM::BREAK-CURRENT SYSTEM::GCL-TOP-LEVEL
+++         SYSTEM::BREAK-MESSAGE SYSTEM::BREAK-RESUME
+++         ANSI-LOOP::LOOP-DO-FOR SYSTEM::SIMPLE-BACKTRACE
+++         SYSTEM::BREAK-HELP)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::STRING) COMMON-LISP::T)
+++         SYSTEM::COERCE-SLASH-TERMINATED SYSTEM::RESET-SYS-PATHS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMMON-LISP::BIT COMMON-LISP::READ-BYTE
+++         COMMON-LISP::CONCATENATE SYSTEM::INFO-SEARCH
+++         COMMON-LISP::ARRAY-IN-BOUNDS-P ANSI-LOOP::LOOP-ERROR
+++         ANSI-LOOP::LOOP-WARN COMMON-LISP::REMOVE-DUPLICATES
+++         SYSTEM::BAD-SEQ-LIMIT SYSTEM::PROCESS-SOME-ARGS
+++         ANSI-LOOP::LOOP-COLLECT-PREPOSITIONAL-PHRASES
+++         SLOOP::LOOP-ADD-TEMPS COMMON-LISP::BIT-NOT COMMON-LISP::SIGNAL
+++         SYSTEM::NTH-STACK-FRAME COMMON-LISP::ARRAY-ROW-MAJOR-INDEX
+++         COMMON-LISP::MAKE-ARRAY SYSTEM::FILE-SEARCH
+++         SYSTEM::LIST-MATCHES COMMON-LISP::FIND-RESTART
+++         SYSTEM::BREAK-LEVEL COMMON-LISP::DELETE-DUPLICATES
+++         SLOOP::ADD-FROM-DATA COMMON-LISP::ERROR COMMON-LISP::WARN
+++         SYSTEM::FILE-TO-STRING
+++         COMMON-LISP::UPGRADED-ARRAY-ELEMENT-TYPE COMMON-LISP::SBIT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::FIND-DOC SYSTEM::RESTART-REPORT
+++         ANSI-LOOP::ESTIMATE-CODE-SIZE-1 SYSTEM::NEWLINE
+++         ANSI-LOOP::ESTIMATE-CODE-SIZE SYSTEM::NEW-SEMI-COLON-READER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
+++         SYSTEM::MAKE-KEYWORD)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'SYSTEM::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(SYSTEM::SI-CLASS-PRECEDENCE-LIST SYSTEM::SI-CLASSP
+++         SYSTEM::SIMPLE-CONDITION-CLASS-P SYSTEM::UNTRACE-ONE
+++         SYSTEM::CONDITIONP SYSTEM::CONDITION-CLASS-P
+++         SYSTEM::MAKE-ACCESS-FUNCTION SYSTEM::SI-CLASS-NAME
+++         SYSTEM::AUTOLOAD-MACRO SYSTEM::AUTOLOAD SYSTEM::SI-CLASS-OF
+++         SYSTEM::WARNINGP SYSTEM::DEFINE-STRUCTURE
+++         FPE::BREAK-ON-FLOATING-POINT-EXCEPTIONS SYSTEM::SI-FIND-CLASS
+++         SYSTEM::TRACE-ONE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SYSTEM::QUICK-SORT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SYSTEM::BIGNTHCDR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         ANSI-LOOP::LOOP-MAKE-ITERATION-VARIABLE ANSI-LOOP::LOOP-FOR-IN
+++         SYSTEM::DEFMACRO* SYSTEM::APPLY-DISPLAY-FUN
+++         SYSTEM::WARN-VERSION ANSI-LOOP::HIDE-VARIABLE-REFERENCE
+++         SYSTEM::SHARP-U-READER ANSI-LOOP::LOOP-FOR-ACROSS
+++         SYSTEM::DM-VL SYSTEM::GET-SLOT-POS
+++         SYSTEM::RESTART-CASE-EXPRESSION-CONDITION
+++         SYSTEM::CHECK-TRACE-ARGS ANSI-LOOP::LOOP-FOR-ON FPE::REF
+++         ANSI-LOOP::PRINT-LOOP-UNIVERSE ANSI-LOOP::LOOP-ANSI-FOR-EQUALS
+++         SYSTEM::SETF-EXPAND-1 ANSI-LOOP::LOOP-SUM-COLLECTION
+++         ANSI-LOOP::LOOP-STANDARD-EXPANSION SYSTEM::MAKE-T-TYPE
+++         COMMON-LISP::DEPOSIT-FIELD SYSTEM::MAKE-BREAK-POINT
+++         ANSI-LOOP::LOOP-FOR-BEING ANSI-LOOP::LOOP-TRANSLATE
+++         SYSTEM::SHARP-A-READER COMMON-LISP::DPB
+++         SYSTEM::FLOATING-POINT-ERROR SYSTEM::CHECK-S-DATA
+++         SLOOP::LOOP-PARSE-ADDITIONAL-COLLECTIONS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SLOOP::FIRST-USE-SLOOP-FOR SYSTEM::COERCE-TO-CONDITION
+++         SLOOP::FIRST-SLOOP-FOR ANSI-LOOP::LOOP-FOR-ARITHMETIC
+++         SYSTEM::MAYBE-BREAK SYSTEM::SETF-STRUCTURE-ACCESS
+++         SYSTEM::CALL-TEST SYSTEM::FIND-LINE-IN-FUN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMMON-LISP::COUNT-IF COMMON-LISP::BIT-ANDC2
+++         COMMON-LISP::REMOVE SYSTEM::INTERNAL-COUNT-IF
+++         SLOOP::LOOP-ADD-BINDING COMMON-LISP::MAP-INTO
+++         COMMON-LISP::FIND-IF COMMON-LISP::NSET-DIFFERENCE
+++         COMMON-LISP::UNION COMMON-LISP::NUNION
+++         COMMON-LISP::MAKE-SEQUENCE COMMON-LISP::NOTANY
+++         COMMON-LISP::POSITION COMMON-LISP::DELETE-IF
+++         COMMON-LISP::BIT-ORC2 COMMON-LISP::REPLACE COMMON-LISP::DELETE
+++         SYSTEM::BREAK-CALL COMMON-LISP::NINTERSECTION
+++         COMMON-LISP::POSITION-IF SYSTEM::FIND-IHS COMMON-LISP::BIT-AND
+++         COMMON-LISP::DELETE-IF-NOT ANSI-LOOP::LOOP-CHECK-DATA-TYPE
+++         COMMON-LISP::REMOVE-IF COMMON-LISP::READ-SEQUENCE
+++         SLOOP::PARSE-LOOP-MACRO COMMON-LISP::BIT-NAND
+++         SYSTEM::INTERNAL-COUNT-IF-NOT COMMON-LISP::SUBSETP
+++         COMMON-LISP::VECTOR-PUSH-EXTEND COMMON-LISP::EVERY
+++         COMMON-LISP::SOME COMMON-LISP::WRITE-SEQUENCE
+++         COMMON-LISP::MISMATCH COMMON-LISP::SET-EXCLUSIVE-OR
+++         COMMON-LISP::REMOVE-IF-NOT COMMON-LISP::BIT-NOR
+++         COMMON-LISP::BIT-XOR COMMON-LISP::BIT-EQV COMMON-LISP::SEARCH
+++         COMMON-LISP::SET-DIFFERENCE COMMON-LISP::FILL
+++         COMMON-LISP::CERROR COMMON-LISP::ADJUST-ARRAY
+++         COMMON-LISP::BIT-ORC1 SYSTEM::INTERNAL-COUNT
+++         COMMON-LISP::TYPEP SYSTEM::PROCESS-ERROR
+++         COMMON-LISP::COUNT-IF-NOT COMMON-LISP::INTERSECTION
+++         SLOOP::IN-ARRAY-SLOOP-FOR COMMON-LISP::FIND-IF-NOT
+++         COMMON-LISP::BIT-ANDC1 COMMON-LISP::POSITION-IF-NOT
+++         COMMON-LISP::NOTEVERY COMMON-LISP::NSET-EXCLUSIVE-OR
+++         COMMON-LISP::FIND COMMON-LISP::COUNT COMMON-LISP::BIT-IOR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SYSTEM::PUSH-SUB-LIST-BINDING SYSTEM::DO-ARG-COUNT-ERROR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         ANSI-LOOP::ADD-LOOP-PATH COMMON-LISP::MAP
+++         ANSI-LOOP::LOOP-HASH-TABLE-ITERATION-PATH
+++         ANSI-LOOP::LOOP-PACKAGE-SYMBOLS-ITERATION-PATH
+++         COMMON-LISP::SUBSTITUTE COMMON-LISP::NSUBSTITUTE
+++         COMMON-LISP::NSUBSTITUTE-IF-NOT ANSI-LOOP::LOOP-MAKE-VARIABLE
+++         COMMON-LISP::SUBSTITUTE-IF-NOT
+++         ANSI-LOOP::LOOP-SEQUENCE-ELEMENTS-PATH
+++         SYSTEM::PUSH-LET-BINDING COMMON-LISP::SUBSTITUTE-IF
+++         SYSTEM::CHECK-TYPE-SYMBOL SLOOP::LOOP-DECLARE-BINDING
+++         SYSTEM::COMPLETE-PROP COMMON-LISP::NSUBSTITUTE-IF)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SYSTEM::MAKE-PREDICATE SYSTEM::DO-BREAK-LEVEL
+++         SYSTEM::MAKE-CONSTRUCTOR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         SYSTEM::UNIVERSAL-ERROR-HANDLER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::FIXNUM)
+++             COMMON-LISP::T)
+++         SYSTEM::SHARP-SHARP-READER SYSTEM::SHARP-EQ-READER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         SLOOP::DEF-LOOP-INTERNAL SYSTEM::PRINT-STACK-FRAME
+++         COMMON-LISP::MERGE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMMON-LISP::ENCODE-UNIVERSAL-TIME)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         ANSI-LOOP::LOOP-SEQUENCER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::STRING COMMON-LISP::FIXNUM)
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::ATOI)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         SYSTEM::DESCRIBE-ENVIRONMENT SYSTEM::STEP-NEXT
+++         COMMON-LISP::BREAK COMMON-LISP::ABORT SYSTEM::MAKE-S-DATA
+++         ANSI-LOOP::MAKE-LOOP-COLLECTOR SLOOP::PARSE-LOOP-DECLARE
+++         ANSI-LOOP::LOOP-GENTEMP SYSTEM::MAKE-INSTREAM
+++         SYSTEM::MAYBE-CLEAR-INPUT
+++         ANSI-LOOP::MAKE-LOOP-MINIMAX-INTERNAL COMMON-LISP::Y-OR-N-P
+++         SYSTEM::CURRENT-STEP-FUN ANSI-LOOP::LOOP-DISALLOW-CONDITIONAL
+++         COMMON-LISP::DRIBBLE SYSTEM::MAKE-RESTART
+++         SLOOP::PARSE-LOOP-WITH SYSTEM::LOC COMMON-LISP::YES-OR-NO-P
+++         SYSTEM::TRANSFORM-KEYWORDS SYSTEM::MAKE-CONTEXT
+++         COMMON-LISP::COMPUTE-RESTARTS SYSTEM::DBL-READ
+++         SYSTEM::STEP-INTO ANSI-LOOP::MAKE-LOOP-UNIVERSE
+++         SYSTEM::BREAK-LOCALS ANSI-LOOP::MAKE-STANDARD-LOOP-UNIVERSE
+++         COMMON-LISP::VECTOR ANSI-LOOP::MAKE-LOOP-PATH)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         ANSI-LOOP::LOOP-LIST-STEP SYSTEM::INSPECT-OBJECT
+++         COMMON-LISP::DESCRIBE ANSI-LOOP::LOOP-OPTIMIZATION-QUANTITIES
+++         SYSTEM::BREAK-GO SYSTEM::GET-&ENVIRONMENT
+++         COMMON-LISP::PRINC-TO-STRING SYSTEM::WAITING
+++         SYSTEM::INSTREAM-NAME ANSI-LOOP::NAMED-VARIABLE
+++         COMMON-LISP::PRIN1-TO-STRING SYSTEM::INFO-SUBFILE
+++         COMMON-LISP::INSPECT SYSTEM::END-WAITING
+++         SYSTEM::FIND-DECLARATIONS
+++         COMMON-LISP::INVOKE-RESTART-INTERACTIVELY
+++         SYSTEM::BREAK-LEVEL-INVOKE-RESTART SYSTEM::ALOAD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         ANSI-LOOP::MAKE-LOOP-MINIMAX COMMON-LISP::LDB
+++         SYSTEM::LIST-DELQ FPE::RF SLOOP::L-EQUAL
+++         ANSI-LOOP::LOOP-DECLARE-VARIABLE SYSTEM::DISPLAY-COMPILED-ENV
+++         SYSTEM::SET-BACK ANSI-LOOP::HIDE-VARIABLE-REFERENCES
+++         SYSTEM::GET-LINE-OF-FORM SYSTEM::BREAK-STEP-INTO
+++         SLOOP::THE-TYPE SLOOP::COUNT-SLOOP-COLLECT
+++         SYSTEM::KEYWORD-SUPPLIED-P COMMON-LISP::LOGANDC2
+++         ANSI-LOOP::LOOP-MAYBE-BIND-FORM SYSTEM::SET-DIR
+++         SYSTEM::COERCE-TO-STRING COMMON-LISP::VECTOR-PUSH
+++         SYSTEM::DM-NTH-CDR SLOOP::IN-FRINGE-SLOOP-MAP
+++         SLOOP::MAXIMIZE-SLOOP-COLLECT SYSTEM::ADD-FILE
+++         SYSTEM::ALL-MATCHES SYSTEM::DM-NTH
+++         SLOOP::IN-CAREFULLY-SLOOP-FOR SYSTEM::PARSE-SLOT-DESCRIPTION
+++         ANSI-LOOP::LOOP-LOOKUP-KEYWORD FPE::0-READER
+++         ANSI-LOOP::LOOP-TMEMBER COMPILER::COMPILER-DEF-HOOK
+++         SYSTEM::INFO-AUX COMMON-LISP::NTH SYSTEM::QUOTATION-READER
+++         SYSTEM::CHECK-SEQ-START-END COMMON-LISP::LOGNAND
+++         SYSTEM::SUBSTRINGP COMMON-LISP::LOGORC2
+++         ANSI-LOOP::LOOP-NOTE-MINIMAX-OPERATION SYSTEM::SAFE-EVAL
+++         ANSI-LOOP::LOOP-DO-IF SLOOP::THEREIS-SLOOP-COLLECT
+++         SYSTEM::MATCH-DIMENSIONS SYSTEM::GET-MATCH
+++         SYSTEM::SUB-INTERVAL-P FPE::PAREN-READER
+++         SLOOP::IN-TABLE-SLOOP-MAP COMMON-LISP::LOGTEST
+++         SLOOP::LOGXOR-SLOOP-COLLECT SYSTEM::DM-V
+++         SYSTEM::GET-INFO-CHOICES SLOOP::COLLATE-SLOOP-COLLECT
+++         SYSTEM::BREAK-STEP-NEXT ANSI-LOOP::LOOP-TEQUAL
+++         COMMON-LISP::WRITE-BYTE COMMON-LISP::NTHCDR
+++         SYSTEM::SETF-HELPER SLOOP::NEVER-SLOOP-COLLECT SLOOP::DESETQ1
+++         ANSI-LOOP::LOOP-DO-WHILE COMMON-LISP::DOCUMENTATION
+++         FPE::%-READER SYSTEM::IN-INTERVAL-P SLOOP::SUM-SLOOP-COLLECT
+++         SYSTEM::OBJLT COMMON-LISP::LDB-TEST SLOOP::PARSE-LOOP-MAP
+++         SYSTEM::GET-NODES SLOOP::MAKE-VALUE SYSTEM::CONDITION-PASS
+++         SLOOP::IN-PACKAGE-SLOOP-MAP SYSTEM::INCREMENT-CURSOR
+++         ANSI-LOOP::LOOP-DO-ALWAYS SYSTEM::DISPLAY-ENV SYSTEM::SUPER-GO
+++         SLOOP::MINIMIZE-SLOOP-COLLECT COMMON-LISP::LOGNOR
+++         COMMON-LISP::LOGANDC1 COMMON-LISP::BYTE SYSTEM::DBL-UP
+++         SYSTEM::ITERATE-OVER-BKPTS COMMON-LISP::LOGORC1
+++         FPE::READ-OPERANDS SLOOP::ALWAYS-SLOOP-COLLECT
+++         SYSTEM::SETF-EXPAND SYSTEM::OVERWRITE-SLOT-DESCRIPTIONS
+++         SYSTEM::*BREAK-POINTS* SYSTEM::LOOKUP-KEYWORD
+++         ANSI-LOOP::LOOP-TASSOC SYSTEM::LEFT-PARENTHESIS-READER
+++         SLOOP::=-SLOOP-FOR FPE::READ-INSTRUCTION COMMON-LISP::COERCE
+++         SYSTEM::SEQUENCE-CURSOR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMMON-LISP::FFLOOR SYSTEM::BREAK-FUNCTION
+++         COMMON-LISP::APROPOS-LIST COMMON-LISP::DECODE-UNIVERSAL-TIME
+++         SYSTEM::STEPPER COMMON-LISP::REQUIRE SYSTEM::APROPOS-DOC
+++         SYSTEM::PRINT-DOC SYSTEM::INFO COMMON-LISP::USE-VALUE
+++         COMMON-LISP::WRITE-TO-STRING COMMON-LISP::FCEILING
+++         SYSTEM::GET-SETF-METHOD
+++         ANSI-LOOP::LOOP-CONSTANT-FOLD-IF-POSSIBLE SYSTEM::NLOAD
+++         COMMON-LISP::ENSURE-DIRECTORIES-EXIST
+++         COMMON-LISP::WILD-PATHNAME-P COMMON-LISP::FTRUNCATE
+++         COMMON-LISP::FROUND SYSTEM::PARSE-BODY-HEADER
+++         COMMON-LISP::INVOKE-RESTART SYSTEM::SHOW-INFO
+++         COMMON-LISP::READ-FROM-STRING
+++         SYSTEM::GET-SETF-METHOD-MULTIPLE-VALUE COMMON-LISP::APROPOS
+++         COMMON-LISP::STORE-VALUE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         ANSI-LOOP::LOOP-DO-WITH SYSTEM::WINE-TMP-REDIRECT
+++         SLOOP::PARSE-ONE-WHEN-CLAUSE COMMON-LISP::TYPE-ERROR
+++         SYSTEM::INSPECT-INDENT SYSTEM::SET-CURRENT SYSTEM::TEST-ERROR
+++         SLOOP::LOOP-POP ANSI-LOOP::LOOP-DO-REPEAT
+++         ANSI-LOOP::LOOP-GET-PROGN SYSTEM::DM-TOO-FEW-ARGUMENTS
+++         ANSI-LOOP::LOOP-CONTEXT SYSTEM::READ-EVALUATED-FORM
+++         SYSTEM::ALL-TRACE-DECLARATIONS
+++         COMMON-LISP::LISP-IMPLEMENTATION-VERSION
+++         SYSTEM::DEFAULT-SYSTEM-BANNER ANSI-LOOP::LOOP-DO-RETURN
+++         SYSTEM::INSPECT-INDENT-1 SYSTEM::STEP-READ-LINE
+++         SYSTEM::SET-ENV SYSTEM::DM-TOO-MANY-ARGUMENTS
+++         ANSI-LOOP::LOOP-BIND-BLOCK SLOOP::PARSE-LOOP1
+++         ANSI-LOOP::LOOP-DO-NAMED SLOOP::PARSE-LOOP-COLLECT
+++         SYSTEM::KCL-TOP-RESTARTS SYSTEM::INSPECT-READ-LINE
+++         SYSTEM::SET-UP-TOP-LEVEL SYSTEM::SHOW-RESTARTS SYSTEM::DBL
+++         SLOOP::PARSE-LOOP-FOR ANSI-LOOP::LOOP-ITERATION-DRIVER
+++         ANSI-LOOP::LOOP-WHEN-IT-VARIABLE ANSI-LOOP::LOOP-DO-DO
+++         SYSTEM::DEFAULT-INFO-HOTLIST SYSTEM::GET-TEMP-DIR
+++         ANSI-LOOP::LOOP-POP-SOURCE SLOOP::LOOP-UN-POP
+++         SYSTEM::TOP-LEVEL ANSI-LOOP::LOOP-DO-FINALLY
+++         ANSI-LOOP::LOOP-DO-INITIALLY SYSTEM::GET-INDEX-NODE
+++         SYSTEM::SETUP-LINEINFO SLOOP::PARSE-LOOP-WHEN SYSTEM::CLEANUP
+++         ANSI-LOOP::LOOP-GET-FORM SLOOP::PARSE-LOOP-DO
+++         SYSTEM::INIT-BREAK-POINTS SLOOP::LOOP-PEEK
+++         SYSTEM::GET-SIG-FN-NAME SYSTEM::ILLEGAL-BOA)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SYSTEM::SMALLNTHCDR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::THE-END ANSI-LOOP::DUPLICATABLE-CODE-P
+++         SYSTEM::RELATIVE-LINE SYSTEM::GET-NODE-INDEX)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM)
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::ROUND-UP)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -68,7 +68,7 @@ sbrk1(n)
++ long starting_hole_div=10;
++ long starting_relb_heap_mult=2;
++ long new_holepage;
++-long resv_pages=40;
+++long resv_pages=0;
++ 
++ #ifdef BSD
++ #include <sys/time.h>
++@@ -186,14 +186,45 @@ int reserve_pages_for_signal_handler=30;
++    If not in_signal_handler then try to keep a minimum of
++    reserve_pages_for_signal_handler pages on hand in the hole
++  */
+++
+++inline void
+++empty_relblock(void) {
+++
+++  object o=sSAleaf_collection_thresholdA->s.s_dbind;
+++  
+++  sSAleaf_collection_thresholdA->s.s_dbind=make_fixnum(0);
+++  for (;rb_pointer!=rb_start&&rb_pointer!=rb_end;)
+++    GBC(t_relocatable);
+++  sSAleaf_collection_thresholdA->s.s_dbind=o;
+++
+++}
+++
+++inline void
+++resize_hole(ufixnum hp,enum type tp) {
+++  
+++  char *new_start=heap_end+hp*PAGESIZE;
+++  char *start=rb_pointer<rb_end ? rb_start : rb_end;
+++  ufixnum size=rb_pointer-start;
+++
+++  if ((new_start<start && new_start+size>=start) || (new_start<start+size && new_start+size>=start+size)) {
+++    fprintf(stderr,"Toggling relblock when resizing hole to %lu\n",hp);
+++    fflush(stderr);
+++    tm_table[t_relocatable].tm_adjgbccnt--;
+++    GBC(t_relocatable);
+++    return resize_hole(hp,tp);
+++  }
+++
+++  holepage=hp;
+++  tm_of(tp)->tm_adjgbccnt--;
+++  GBC(tp);
+++  
+++}
+++
++ inline void *
++ alloc_page(long n) {
++ 
++-  void *e=heap_end;
++   fixnum d,m;
++-#ifdef SGC
++-  int in_sgc=sgc_enabled;
++-#endif
+++
++   if (n>=0) {
++ 
++     if (n>(holepage - (in_signal_handler? 0 :
++@@ -215,25 +246,8 @@ eg to add 20 more do (si::set-hole-size
++       d=d<0 ? 0 : d;
++       d=new_holepage<d ? new_holepage : d;
++       
++-      holepage = d + n;
+++      resize_hole(d+n,t_relocatable);
++ 
++-#ifdef SGC
++-      if (in_sgc) sgc_quit();
++-#endif
++-
++-      GBC(t_relocatable);
++-      tm_table[t_relocatable].tm_adjgbccnt--;/* hole overrun is not a call for more relocatable */
++-
++-
++-#ifdef SGC
++-      /* starting sgc can use up some pages
++-      and may move heap end, so start over
++-      */
++-      if (in_sgc) {
++-     sgc_start();
++-     return alloc_page(n);
++-      }
++-#endif
++     }
++ 
++     holepage -= n;
++@@ -244,9 +258,12 @@ eg to add 20 more do (si::set-hole-size
++       core_end+=PAGESIZE*n;
++     }
++ 
++-    heap_end+=PAGESIZE*n;
+++    {
+++      void *e=heap_end;
+++      heap_end+=PAGESIZE*n;
++ 
++-    return(e);
+++      return(e);
+++    }
++ 
++   }
++ 
++@@ -256,13 +273,13 @@ eg to add 20 more do (si::set-hole-size
++   m=(core_end-heap_end)/PAGESIZE;
++ 
++   if (n<=m)
++-    return(e);
+++    return(heap_end);
++ 
++   IF_ALLOCATE_ERR error("Can't allocate.  Good-bye!");
++ 
++   core_end+=PAGESIZE*(n-m);
++ 
++-  return(e);
+++  return(heap_end);
++ 
++ }
++ 
++@@ -272,16 +289,37 @@ eg to add 20 more do (si::set-hole-size
++ 
++ struct pageinfo *cell_list_head=NULL,*cell_list_tail=NULL;;
++ 
+++inline ufixnum
+++sum_maxpages(void) {
+++
+++  ufixnum i,j;
+++
+++  for (i=t_start,j=0;i<t_other;i++)
+++    j+=tm_table[i].tm_maxpage;
+++
+++  return j+tm_table[t_relocatable].tm_maxpage;
+++
+++}
+++
+++fixnum
+++check_avail_pages(void) {
+++  
+++  return real_maxpage-page(data_start ? data_start : sbrk(0))-available_pages-resv_pages-sum_maxpages();
+++
+++}
+++
+++
++ inline fixnum
++ set_tm_maxpage(struct typemanager *tm,fixnum n) {
++   
++   fixnum r=tm->tm_type==t_relocatable,j=tm->tm_maxpage,z=(n-j)*(r ? 2 : 1);
++   if (z>available_pages) return 0;
++-  if (r && 2*n+page(REAL_RB_START)>real_maxpage) return 0;
+++  if (r && 2*n+page(rb_start)>real_maxpage) return 0;
++   available_pages-=z;
++-  tm->tm_adjgbccnt*=((double)j)/n;
+++  tm->tm_adjgbccnt*=((double)j+1)/(n+1);
++   tm->tm_maxpage=n;
++-  return n;
+++  /* massert(!check_avail_pages()); */
+++  return 1;
++ }
++   
++ 
++@@ -317,8 +355,11 @@ add_page_to_freelist(char *p, struct typ
++ 
++  if (sgc_enabled && tm->tm_sgc)
++    pp->sgc_flags=SGC_PAGE_FLAG;
+++
+++#ifndef SGC_WHOLE_PAGE
++  if (TYPEWORD_TYPE_P(pp->type))
++    x->d.s=(sgc_enabled && tm->tm_sgc) ? SGC_RECENT : SGC_NORMAL;
+++#endif
++ 
++  /* array headers must be always writable, since a write to the
++     body does not touch the header.   It may be desirable if there
++@@ -410,17 +451,61 @@ grow_linear(fixnum old, fixnum fract, fi
++ DEFVAR("*OPTIMIZE-MAXIMUM-PAGES*",sSAoptimize_maximum_pagesA,SI,sLnil,"");
++ #define OPTIMIZE_MAX_PAGES (sSAoptimize_maximum_pagesA ==0 || sSAoptimize_maximum_pagesA->s.s_dbind !=sLnil) 
++ DEFVAR("*NOTIFY-OPTIMIZE-MAXIMUM-PAGES*",sSAnotify_optimize_maximum_pagesA,SI,sLnil,"");
++-#define MMAX_PG(a_) (a_)->tm_maxpage
+++#define MMAX_PG(a_) (a_)->tm_maxpage-(a_)->tm_alt_npage
+++
+++static int
+++rebalance_maxpages(struct typemanager *my_tm,fixnum z) {
+++
+++  fixnum d;
+++  ufixnum i,j;
+++  
+++  
+++  d=(z-my_tm->tm_maxpage)*(my_tm->tm_type==t_relocatable ? 2 : 1);
+++  j=sum_maxpages();
+++
+++  if (j+d>phys_pages) {
+++
+++    ufixnum k=0;
+++
+++    for (i=t_start;i<t_other;i++)
+++      if (tm_table+i!=my_tm)
+++     k+=(tm_table[i].tm_maxpage-tm_table[i].tm_npage)*(i==t_relocatable ? 2 : 1);
+++
+++    d=d>k+phys_pages-j ? k+phys_pages-j : d;
+++    if (d<=0)
+++      return 0;
+++
+++    for (i=t_start;i<t_other;i++)
+++      if (tm_table[i].tm_npage) {
+++     if (tm_table+i==my_tm) {
+++       massert(set_tm_maxpage(tm_table+i,z));
+++     } else {
+++       massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage+(1.0-(double)(j+d-phys_pages)/k)*(tm_table[i].tm_maxpage-tm_table[i].tm_npage)));
+++     }
+++      }
+++    
+++    /* for (i=t_start;i<t_other;i++) */
+++    /*   if (tm_table[i].tm_npage && tm_table[i].tm_npage>((double)phys_pages/(j+d))*(tm_table+i==my_tm ? z : tm_table[i].tm_maxpage)) */
+++    /*       return 0; */
+++    /* for (i=t_start;i<t_other;i++) */
+++    /*   if (tm_table[i].tm_npage) */
+++    /*       massert(set_tm_maxpage(tm_table+i,((double)phys_pages/(j+d))*(tm_table+i==my_tm ? z : tm_table[i].tm_maxpage))); */
+++
+++    return 1;
+++    
+++  } else
+++
+++    return set_tm_maxpage(my_tm,z);
+++
+++}
+++
++ inline long
++ opt_maxpage(struct typemanager *my_tm) {
++ 
++   double x=0.0,y=0.0,z,r;
++   long mmax_page;
++   struct typemanager *tm,*tme;
++-  long mro=0,tro=0;
++-
++-  if (phys_pages>0 && page(heap_end)-first_data_page+nrbpage>=phys_pages)
++-    return 0;
+++  long mro=0,tro=0,j;
++ 
++   if (page(core_end)>0.8*real_maxpage)
++     return 0;
++@@ -437,22 +522,27 @@ opt_maxpage(struct typemanager *my_tm) {
++   }
++ #endif
++ 
++-  z=my_tm->tm_adjgbccnt-1;
+++  z=my_tm->tm_adjgbccnt/* -1 */;
++   z/=(1+x-0.9*my_tm->tm_adjgbccnt);
++   z*=(y-mmax_page)*mmax_page;
++   z=sqrt(z);
++   z=z-mmax_page>available_pages ? mmax_page+available_pages : z;
++-  my_tm->tm_opt_maxpage=(long)z>my_tm->tm_opt_maxpage ? (long)z : my_tm->tm_opt_maxpage;
+++  my_tm->tm_opt_maxpage=(long)(z+my_tm->tm_alt_npage)>my_tm->tm_opt_maxpage ? (long)(z+my_tm->tm_alt_npage) : my_tm->tm_opt_maxpage;
++ 
++   if (z<=mmax_page)
++     return 0;
++ 
++   r=((x-my_tm->tm_adjgbccnt)+ my_tm->tm_adjgbccnt*mmax_page/z)*(y-mmax_page+z);
++   r/=x*y;
+++
+++  j=r<=0.95 && rebalance_maxpages(my_tm,z+mro+my_tm->tm_alt_npage);
+++
++   if (sSAnotify_optimize_maximum_pagesA->s.s_dbind!=sLnil)
++-    printf("[type %u max %lu(%lu) opt %lu   y %lu(%lu) gbcrat %f sav %f]\n",
++-        my_tm->tm_type,mmax_page,mro,(long)z,(long)y,tro,(my_tm->tm_adjgbccnt-1)/(1+x-0.9*my_tm->tm_adjgbccnt),r);
++-  return r<=0.95 && set_tm_maxpage(my_tm,z+mro) ? 1 : 0;
+++    printf("[type %u max %lu(%lu) opt %lu   y %lu(%lu) gbcrat %f sav %f  new %lu sum %lu phys %lu]\n",
+++        my_tm->tm_type,mmax_page,mro,(long)z,(long)y,tro,(my_tm->tm_adjgbccnt/* -1 */)/(1+x-0.9*my_tm->tm_adjgbccnt),r,
+++        my_tm->tm_maxpage,sum_maxpages(),phys_pages);
+++
+++  return j ? 1 : 0;
++ 
++ }
++ 
++@@ -483,41 +573,200 @@ Use ALLOCATE to expand the space.",
++ #else
++ #define TOTAL_THIS_TYPE(tm) (tm->tm_nppage * tm->tm_npage)
++ #endif
++-bool prefer_low_mem_contblock=FALSE;
+++
+++static object cbv=Cnil;
+++#define cbsrch1 ((struct contblock ***)cbv->v.v_self)
+++#define cbsrche (cbsrch1+cbv->v.v_fillp)
+++
+++static inline void
+++expand_contblock_index_space(void) {
+++
+++  if (cbv==Cnil) {
+++    cbv=(VFUN_NARGS=4,fSmake_vector1(make_fixnum(16),make_fixnum(aet_fix),Cnil,make_fixnum(0)));
+++    cbv->v.v_self[0]=(object)&cb_pointer;
+++    enter_mark_origin(&cbv);
+++  }
+++
+++  if (cbv->v.v_fillp+1==cbv->v.v_dim) {
+++
+++    void *v=alloc_relblock(2*cbv->v.v_dim*sizeof(fixnum));
+++
+++    memcpy(v,cbv->v.v_self,cbv->v.v_dim*sizeof(fixnum));
+++    cbv->v.v_self=v;
+++    cbv->v.v_dim*=2;
+++
+++  }
+++
+++}
+++
+++static inline void *
+++expand_contblock_index(struct contblock ***cbppp) {
+++
+++  ufixnum i=cbppp-cbsrch1;
+++
+++  expand_contblock_index_space();
+++
+++  cbppp=cbsrch1+i;
+++  memmove(cbppp+1,cbppp,(cbsrche-cbppp+1)*sizeof(*cbppp));
+++  cbv->v.v_fillp++;
+++
+++  return cbppp;
+++
+++}
+++
+++static inline void
+++contract_contblock_index(struct contblock ***cbppp) {
+++
+++  memmove(cbppp+1,cbppp+2,(cbsrche-cbppp-1)*sizeof(*cbppp));
+++  cbv->v.v_fillp--;
+++
+++}
+++
+++static inline int
+++cbcomp(const void *v1,const void *v2) {
+++
+++  ufixnum u1=(**(struct contblock ** const *)v1)->cb_size;
+++  ufixnum u2=(**(struct contblock ** const *)v2)->cb_size;
+++
+++  return u1<u2 ? -1 : (u1==u2 ? 0 : 1);
+++
+++}
+++
+++static inline void *
+++bsearchleq(void *i,void *v1,size_t n,size_t s,int (*c)(const void *,const void *)) {
+++
+++  ufixnum nn=n>>1;
+++  void *v=v1+nn*s;
+++  int j=c(i,v);
+++
+++  if (nn)
+++    return !j ? v : (j>0 ? bsearchleq(i,v,n-nn,s,c) : bsearchleq(i,v1,nn,s,c));
+++  else
+++    return j<=0 ? v : v+s;
+++
+++}
+++                  
+++
+++static inline struct contblock ***
+++find_cbppp(struct contblock *cbp) {
+++
+++  struct contblock **cbpp=&cbp;
+++
+++  return cbsrche==cbsrch1 ? cbsrch1 : bsearchleq(&cbpp,cbsrch1,cbsrche-cbsrch1,sizeof(*cbsrch1),cbcomp);
+++
+++}
+++
+++static inline struct contblock ***
+++find_cbppp_by_n(ufixnum n) {
+++
+++  struct contblock cb={n,NULL};
+++
+++  return find_cbppp(&cb);
+++
+++}
+++
+++static inline struct contblock **
+++find_cbpp(struct contblock ***cbppp,ufixnum n) {
+++
+++  return *cbppp;
+++
+++}
+++
+++
+++static inline struct contblock **
+++find_contblock(ufixnum n,void **p) {
+++
+++  *p=find_cbppp_by_n(n);
+++  return find_cbpp(*p,n);
+++}
+++
+++inline void
+++print_cb(int print) {
+++
+++  struct contblock *cbp,***cbppp,**cbpp=&cb_pointer;
+++  ufixnum k;
+++  
+++  for (cbp=cb_pointer,cbppp=cbsrch1;cbp;cbppp++) {
+++    massert(cbppp<cbsrche);
+++    massert(*cbppp);
+++    massert(**cbppp==cbp);
+++    for (k=0;cbp && cbp->cb_size==(**cbppp)->cb_size;cbpp=&cbp->cb_link,cbp=cbp->cb_link,k++);
+++    if (print)
+++      fprintf(stderr,"%lu %p %p %lu %lu\n",cbppp-cbsrch1,*cbppp,**cbppp,(**cbppp)->cb_size,k);
+++  }
+++  massert(cbppp==cbsrche);
+++  massert(*cbppp==cbpp);
+++  massert(!**cbppp);
+++
+++  fflush(stderr);
+++
+++}
+++  
+++inline void
+++insert_contblock(void *p,ufixnum s) {
+++
+++  struct contblock *cbp=p,**cbpp,***cbppp;
+++
+++  cbpp=find_contblock(s,(void **)&cbppp);
+++
+++  cbp->cb_size=s;
+++  cbp->cb_link=*cbpp;
+++  *cbpp=cbp;
+++  
+++  if ((!cbp->cb_link || cbp->cb_link->cb_size!=s)) {
+++    cbppp=expand_contblock_index(cbppp);
+++    cbppp[1]=&cbp->cb_link;
+++  }
+++
+++}
+++
+++static inline void
+++delete_contblock(void *p,struct contblock **cbpp) {
+++
+++  struct contblock ***cbppp=p;
+++  ufixnum s=(*cbpp)->cb_size;
+++
+++  (*cbpp)=(*cbpp)->cb_link;
+++
+++  if ((!(*cbpp) || (*cbpp)->cb_size!=s))
+++    contract_contblock_index(cbppp);
+++
+++}
+++
+++inline void
+++reset_contblock_freelist(void) {
+++
+++  cb_pointer=NULL;
+++  cbv->v.v_fillp=0;
+++  
+++}
++ 
++ inline void *
++ alloc_from_freelist(struct typemanager *tm,fixnum n) {
++ 
++-  void *p,*v,*vp;
++-  struct contblock **cbpp;
++-  fixnum i;
+++  void *p;
++ 
++   switch (tm->tm_type) {
++ 
++   case t_contiguous:
++-    for (cbpp= &cb_pointer,v=(void *)-1,vp=NULL; (*cbpp)!=NULL; cbpp= &(*cbpp)->cb_link)
++-      if ((*cbpp)->cb_size >= n) {
++-     if (!prefer_low_mem_contblock) {
++-       vp=cbpp;
++-       break;
++-     } else if ((void *)(*cbpp)<v) {
++-       v=*cbpp;
++-       vp=cbpp;
++-     }
+++    {
+++      void *pp;
+++      struct contblock **cbpp=find_contblock(n,&pp);
+++      
+++      if ((p=*cbpp)) {
+++     ufixnum s=(*cbpp)->cb_size;
+++     delete_contblock(pp,cbpp);
+++     if (n<s)
+++       insert_contblock(p+n,s-n);
++       }
++-    if (vp) {
++-      cbpp=vp;
++-      p=(void *)(*cbpp);
++-      i=(*cbpp)->cb_size-n;
++-      *cbpp=(*cbpp)->cb_link;
++-      --ncb;
++-      insert_contblock(p+n,i);
++-      return(p);
+++      return p;
++     }
++     break;
++ 
++   case t_relocatable:
++-    if (rb_limit-rb_pointer>=n)
+++    if (rb_pointer>rb_end && rb_pointer+n>rb_limit && rb_pointer+n<rb_end+nrbpage*PAGESIZE)
+++      rb_limit=rb_pointer+n;
+++    if (rb_limit-rb_pointer>n)
++       return ((rb_pointer+=n)-n);
++     break;
++ 
++@@ -554,7 +803,7 @@ too_full_p(struct typemanager *tm) {
++ 
++   switch (tm->tm_type) {
++   case t_relocatable:
++-    return 100*(rb_limit-rb_pointer)<pf*(rb_limit-rb_start);
+++    return 100*(rb_limit-rb_pointer)<pf*(rb_end-rb_start);
++     break;
++   case t_contiguous:
++     for (cbp=cb_pointer,k=0;cbp;cbp=cbp->cb_link) k+=cbp->cb_size;
++@@ -575,7 +824,7 @@ too_full_p(struct typemanager *tm) {
++ inline void *
++ alloc_after_gc(struct typemanager *tm,fixnum n) {
++ 
++-  if (tm->tm_npage+tpage(tm,n)>=tm->tm_maxpage && GBC_enable) {
+++  if (tm->tm_npage+tpage(tm,n)>tm->tm_maxpage && GBC_enable) {
++ 
++     switch (jmp_gmp) {
++     case 0: /* not in gmp call*/
++@@ -618,11 +867,16 @@ add_pages(struct typemanager *tm,fixnum
++ 
++   case t_relocatable:
++ 
+++    if (rb_pointer>rb_end) {
+++      fprintf(stderr,"Moving relblock low before expanding relblock pages\n");
+++      fflush(stderr);
+++      GBC(t_relocatable);
+++    }
++     nrbpage+=m;
++-    rb_end=heap_end+(holepage+nrbpage)*PAGESIZE;
++-    rb_limit=rb_end-2*RB_GETA;
+++    rb_end+=m*PAGESIZE;
+++    rb_limit+=m*PAGESIZE;
++ 
++-    alloc_page(-(nrbpage+holepage));
+++    alloc_page(-(2*nrbpage+holepage));
++ 
++     break;
++ 
++@@ -656,7 +910,7 @@ alloc_after_adding_pages(struct typemana
++ 
++   }
++ 
++-  m=tm->tm_maxpage-tm->tm_npage;
+++  /* m=tm->tm_maxpage-tm->tm_npage; */
++   add_pages(tm,m);
++ 
++   return alloc_from_freelist(tm,n);
++@@ -670,15 +924,15 @@ alloc_after_reclaiming_pages(struct type
++ 
++   if (tm->tm_type>=t_end) return NULL;
++ 
++-  reloc_min=npage(rb_pointer-REAL_RB_START);
+++  reloc_min=npage(rb_pointer-rb_start);
++ 
++   if (m<2*(nrbpage-reloc_min)) {
++ 
++     set_tm_maxpage(tm_table+t_relocatable,reloc_min);
++     nrbpage=reloc_min;
++ 
++-    GBC(t_relocatable);
++     tm_table[t_relocatable].tm_adjgbccnt--;
+++    GBC(t_relocatable);
++ 
++     return alloc_after_adding_pages(tm,n);
++ 
++@@ -742,13 +996,31 @@ alloc_object(enum type t)  {
++ 
++ inline void *
++ alloc_contblock(size_t n) {
++-  return alloc_mem(tm_of(t_contiguous),ROUND_UP_PTR_CONT(n));
+++  return alloc_mem(tm_of(t_contiguous),CEI(n,CPTR_SIZE));
+++}
+++
+++inline void *
+++alloc_contblock_no_gc(size_t n) {
+++
+++  struct typemanager *tm=tm_of(t_contiguous);
+++  void *p;
+++  
+++  n=CEI(n,CPTR_SIZE);
+++  
+++  if ((p=alloc_from_freelist(tm,n)))
+++    return p;
+++
+++  if (tpage(tm,n)<(rb_start-heap_end)>>PAGEWIDTH && (p=alloc_after_adding_pages(tm,n)))
+++    return p;
+++
+++  return NULL;
+++
++ }
++ 
++ inline void *
++ alloc_relblock(size_t n) {
++ 
++-  return alloc_mem(tm_of(t_relocatable),ROUND_UP_PTR(n));
+++  return alloc_mem(tm_of(t_relocatable),CEI(n,PTR_ALIGN));
++ 
++ }
++ 
++@@ -789,7 +1061,7 @@ DEFUNM_NEW("ALLOCATED",object,fSallocate
++   tm = & tm_table[tm->tm_type];
++   if (tm->tm_type == t_relocatable)
++     { tm->tm_npage = (rb_end-rb_start)/PAGESIZE;
++-      tm->tm_nfree = rb_end -rb_pointer;
+++      tm->tm_nfree = rb_limit -rb_pointer;
++     }
++   else if (tm->tm_type == t_contiguous)
++     { int cbfree =0;
++@@ -808,45 +1080,6 @@ DEFUNM_NEW("ALLOCATED",object,fSallocate
++           ));
++ }
++  
++-/* DEFUN_NEW("RESET-NUMBER-USED",object,fSreset_number_used,SI,0,1,NONE,OO,OO,OO,OO,(object typ),"") */
++-/* {int i; */
++-/*  if (VFUN_NARGS == 1) */
++-/*    { tm_table[t_from_type(typ)].tm_nused = 0;} */
++-/*  else */
++-/*  for (i=0; i <= t_relocatable ; i++) */
++-/*    { tm_table[i].tm_nused = 0;} */
++-/*   RETURN1(sLnil); */
++-/* } */
++-
++-#define IN_CONTBLOCK_P(p,pi) ((void *)p>=(void *)pi && (void *)p<(void *)pi+pi->in_use*PAGESIZE)
++-
++-/* SGC cont pages: explicit free calls can come at any time, and we
++-   must make sure to add the newly deallocated block to the right
++-   list.  CM 20030827*/
++-#ifdef SGC
++-void
++-insert_maybe_sgc_contblock(char *p,int s) {
++-
++-  struct contblock *tmp_cb_pointer;
++-  struct pageinfo *pi;
++-
++-  for (pi=contblock_list_head;pi && !IN_CONTBLOCK_P(p,pi);pi=pi->next);
++-  massert(pi);
++-
++-  if (sgc_enabled && ! (pi->sgc_flags&SGC_PAGE_FLAG)) {
++-    tmp_cb_pointer=cb_pointer;
++-    cb_pointer=old_cb_pointer;
++-    sgc_enabled=0;
++-    insert_contblock(p,s);
++-    sgc_enabled=1;
++-    old_cb_pointer=cb_pointer;
++-    cb_pointer=tmp_cb_pointer;
++-  } else
++-    insert_contblock(p,s);
++-
++-}
++-#endif
++-
++ #ifdef SGC_CONT_DEBUG
++ extern void overlap_check(struct contblock *,struct contblock *);
++ #endif
++@@ -856,78 +1089,17 @@ DEFUN_NEW("PRINT-FREE-CONTBLOCK-LIST",ob
++   struct contblock *cbp,*cbp1;
++ 
++   for (cbp=cb_pointer;cbp;cbp=cbp->cb_link) {
++-    printf("%p %d\n",cbp,cbp->cb_size);
+++    printf("%p %lu\n",cbp,cbp->cb_size);
++     for (cbp1=cbp;cbp1;cbp1=cbp1->cb_link) 
++       if ((void *)cbp+cbp->cb_size==(void *)cbp1 ||
++        (void *)cbp1+cbp1->cb_size==(void *)cbp)
++-     printf("  adjacent to %p %d\n",cbp1,cbp1->cb_size);
+++     printf("  adjacent to %p %lu\n",cbp1,cbp1->cb_size);
++   }
++ 
++   return Cnil;
++ 
++ }
++ 
++-void
++-insert_contblock(char *p, int s) {
++-
++-  struct contblock **cbpp, *cbp;
++-  
++-  /* SGC cont pages: This used to return when s<CBMINSIZE, but we need
++-     to be able to sweep small (e.g. bignum) contblocks.  FIXME:
++-     should never be called with s<=0 to begin with.  CM 20030827*/
++-  if (s<=0)
++-    return;
++-  ncb++;
++-  cbp = (struct contblock *)p;
++-  /* SGC cont pages: allocated sizes may not be zero mod CPTR_SIZE,
++-     e.g. string fillp, but alloc_contblock rounded up the allocation
++-     like this, which we follow here.  CM 20030827 */
++-  cbp->cb_size = ROUND_UP_PTR_CONT(s);
++-
++-  for (cbpp=&cb_pointer;*cbpp;) {
++-    if ((void *)(*cbpp)+(*cbpp)->cb_size==(void *)cbp) {
++-      /* printf("Merge contblock %p %d %p %d\n",cbp,cbp->cb_size,*cbpp,(*cbpp)->cb_size); */
++-      /* fflush(stdout); */
++-      (*cbpp)->cb_size+=cbp->cb_size;
++-      cbp=*cbpp;
++-      *cbpp=(*cbpp)->cb_link;
++-    } else if ((void *)(*cbpp)==(void *)cbp+cbp->cb_size) {
++-      /* printf("Merge contblock %p %d %p %d\n",cbp,cbp->cb_size,*cbpp,(*cbpp)->cb_size); */
++-      /* fflush(stdout); */
++-      cbp->cb_size+=(*cbpp)->cb_size;
++-      *cbpp=(*cbpp)->cb_link;
++-    } else
++-      cbpp=&(*cbpp)->cb_link;
++-  }
++-  s=cbp->cb_size;
++-  
++-  for (cbpp = &cb_pointer;  *cbpp;  cbpp = &((*cbpp)->cb_link))
++-    if ((*cbpp)->cb_size >= s) {
++-#ifdef SGC_CONT_DEBUG
++-      if (*cbpp==cbp) {
++-     fprintf(stderr,"Trying to install a circle at %p\n",cbp);
++-     exit(1);
++-      }
++-      if (sgc_enabled) 
++-     overlap_check(old_cb_pointer,cb_pointer);
++-#endif
++-      cbp->cb_link = *cbpp;
++-      *cbpp = cbp;
++-#ifdef SGC_CONT_DEBUG
++-      if (sgc_enabled) 
++-     overlap_check(old_cb_pointer,cb_pointer);
++-#endif
++-      return;
++-    }
++-  cbp->cb_link = NULL;
++-  *cbpp = cbp;
++-#ifdef SGC_CONT_DEBUG
++-  if (sgc_enabled) 
++-    overlap_check(old_cb_pointer,cb_pointer);
++-#endif
++-
++-}
++-
++ /* Add a tm_distinct field to prevent page type sharing if desired.
++    Not used now, as its never desirable from an efficiency point of
++    view, and as the only known place one must separate is cons and
++@@ -961,7 +1133,7 @@ init_tm(enum type t, char *name, int els
++     return;
++   }
++   tm_table[(int)t].tm_type = t;
++-  tm_table[(int)t].tm_size = elsize ? ROUND_UP_PTR(elsize) : 1;
+++  tm_table[(int)t].tm_size = elsize ? CEI(elsize,PTR_ALIGN) : 1;
++   tm_table[(int)t].tm_nppage = (PAGESIZE-sizeof(struct pageinfo))/tm_table[(int)t].tm_size;
++   tm_table[(int)t].tm_free = OBJNULL;
++   tm_table[(int)t].tm_nfree = 0;
++@@ -1096,13 +1268,19 @@ gcl_init_alloc(void *cs_start) {
++ 
++   update_real_maxpage();
++ 
++-  if (gcl_alloc_initialized) return;
+++  if (gcl_alloc_initialized) {
+++    massert(rb_start==heap_end &&rb_end==heap_end && rb_limit==heap_end && rb_pointer==heap_end);
+++    holepage=new_holepage;
+++    alloc_page(-holepage);
+++    rb_start=rb_end=rb_limit=rb_pointer=heap_end+(holepage<<PAGEWIDTH);
+++    return;
+++  }
++   
++ #ifdef INIT_ALLOC  
++   INIT_ALLOC;
++ #endif  
++ 
++-  data_start=heap_end;
+++  initial_sbrk=data_start=heap_end;
++   first_data_page=page(data_start);
++   
++   holepage=new_holepage;
++@@ -1118,40 +1296,39 @@ gcl_init_alloc(void *cs_start) {
++      Gave each page type at least some sgc pages by default.  Of
++      course changeable by allocate-sgc.  CM 20030827 */
++ 
++-  init_tm(t_cons, ".CONS", sizeof(struct cons), 65536 ,50,0 );
++-  init_tm(t_fixnum, "NFIXNUM",sizeof(struct fixnum_struct), 8192,20,0);
++-  init_tm(t_structure, "SSTRUCTURE", sizeof(struct structure), 5461,1,0 );
++-  init_tm(t_cfun, "fCFUN", sizeof(struct cfun), 4096,1,0  );
++-  init_tm(t_sfun, "gSFUN", sizeof(struct sfun),409,1,0 );
++-  init_tm(t_string, "\"STRING", sizeof(struct string), 5461,1,0  );
++-  init_tm(t_array, "aARRAY", sizeof(struct array), 4681,1,0 );
++-  init_tm(t_symbol, "|SYMBOL", sizeof(struct symbol), 3640,1,0 );
++-  init_tm(t_bignum, "BBIGNUM", sizeof(struct bignum), 2730,1,0 );
++-  init_tm(t_ratio, "RRATIONAL", sizeof(struct ratio), 170,1,0 );
++-  init_tm(t_shortfloat, "FSHORT-FLOAT",sizeof(struct shortfloat_struct), 256 ,1,0);
++-  init_tm(t_longfloat, "LLONG-FLOAT",sizeof(struct longfloat_struct), 170 ,1,0);
++-  init_tm(t_complex, "CCOMPLEX", sizeof(struct ocomplex), 170 ,1,0);
++-  init_tm(t_character,"#CHARACTER",sizeof(struct character), 256 ,1,0);
++-  init_tm(t_package, ":PACKAGE", sizeof(struct package), 2*PAGESIZE / sizeof(struct package),1,0);
++-  init_tm(t_hashtable, "hHASH-TABLE", sizeof(struct hashtable), 78,1,0 );
++-  init_tm(t_vector, "vVECTOR", sizeof(struct vector), 146 ,1,0);
++-  init_tm(t_bitvector, "bBIT-VECTOR", sizeof(struct bitvector), 73 ,1,0);
++-  init_tm(t_stream, "sSTREAM", sizeof(struct stream), 78 ,1,0);
++-  init_tm(t_random, "$RANDOM-STATE", sizeof(struct random), 256 ,1,0);
++-  init_tm(t_readtable, "rREADTABLE", sizeof(struct readtable), 256 ,1,0);
++-  init_tm(t_pathname, "pPATHNAME", sizeof(struct pathname), 73 ,1,0);
++-  init_tm(t_cclosure, "cCCLOSURE", sizeof(struct cclosure), 85 ,1,0);
++-  init_tm(t_closure, "cCLOSURE", sizeof(struct cclosure), 85 ,1,0);
++-  init_tm(t_vfun, "VVFUN", sizeof(struct vfun), 102 ,1,0);
+++  init_tm(t_cons, ".CONS", sizeof(struct cons), 0 ,50,0 );
+++  init_tm(t_fixnum, "NFIXNUM",sizeof(struct fixnum_struct), 0,20,0);
+++  init_tm(t_structure, "SSTRUCTURE", sizeof(struct structure),0,1,0 );
+++  init_tm(t_cfun, "fCFUN", sizeof(struct cfun),0,1,0  );
+++  init_tm(t_sfun, "gSFUN", sizeof(struct sfun),0,1,0 );
+++  init_tm(t_string, "\"STRING", sizeof(struct string),0,1,0  );
+++  init_tm(t_array, "aARRAY", sizeof(struct array),0,1,0 );
+++  init_tm(t_symbol, "|SYMBOL", sizeof(struct symbol),0,1,0 );
+++  init_tm(t_bignum, "BBIGNUM", sizeof(struct bignum),0,1,0 );
+++  init_tm(t_ratio, "RRATIONAL", sizeof(struct ratio),0,1,0 );
+++  init_tm(t_shortfloat, "FSHORT-FLOAT",sizeof(struct shortfloat_struct),0 ,1,0);
+++  init_tm(t_longfloat, "LLONG-FLOAT",sizeof(struct longfloat_struct),0 ,1,0);
+++  init_tm(t_complex, "CCOMPLEX", sizeof(struct ocomplex),0 ,1,0);
+++  init_tm(t_character,"#CHARACTER",sizeof(struct character),0 ,1,0);
+++  init_tm(t_package, ":PACKAGE", sizeof(struct package),0,1,0);
+++  init_tm(t_hashtable, "hHASH-TABLE", sizeof(struct hashtable),0,1,0 );
+++  init_tm(t_vector, "vVECTOR", sizeof(struct vector),0 ,1,0);
+++  init_tm(t_bitvector, "bBIT-VECTOR", sizeof(struct bitvector),0 ,1,0);
+++  init_tm(t_stream, "sSTREAM", sizeof(struct stream),0 ,1,0);
+++  init_tm(t_random, "$RANDOM-STATE", sizeof(struct random),0 ,1,0);
+++  init_tm(t_readtable, "rREADTABLE", sizeof(struct readtable),0 ,1,0);
+++  init_tm(t_pathname, "pPATHNAME", sizeof(struct pathname),0 ,1,0);
+++  init_tm(t_cclosure, "cCCLOSURE", sizeof(struct cclosure),0 ,1,0);
+++  init_tm(t_closure, "cCLOSURE", sizeof(struct closure),0 ,1,0);
+++  init_tm(t_vfun, "VVFUN", sizeof(struct vfun),0 ,1,0);
++   init_tm(t_gfun, "gGFUN", sizeof(struct sfun), 0 ,1,0);
++   init_tm(t_afun, "AAFUN", sizeof(struct sfun), 0 ,1,0);
++-  init_tm(t_cfdata, "cCFDATA", sizeof(struct cfdata), 102 ,1,0);
++-  init_tm(t_spice, "!SPICE", sizeof(struct spice), 4096 ,1,0);
+++  init_tm(t_cfdata, "cCFDATA", sizeof(struct cfdata),0 ,1,0);
+++  init_tm(t_spice, "!SPICE", sizeof(struct spice),0 ,1,0);
++   init_tm(t_relocatable, "%RELOCATABLE-BLOCKS", 0,0,20,1);
++   init_tm(t_contiguous, "_CONTIGUOUS-BLOCKS", 0,0,20,1);
++   
++   
++-  ncb = 0;
++   ncbpage = 0;
++   set_tm_maxpage(tm_table+t_contiguous,1);
++ #ifdef GCL_GPROF
++@@ -1162,7 +1339,7 @@ gcl_init_alloc(void *cs_start) {
++   set_tm_maxpage(tm_table+t_relocatable,1);
++   nrbpage=0;
++ 
++-  alloc_page(-(holepage + nrbpage));
+++  alloc_page(-(holepage + 2*nrbpage));
++   
++   rb_start = rb_pointer = heap_end + PAGESIZE*holepage;
++   rb_end = rb_start + PAGESIZE*nrbpage;
++@@ -1171,6 +1348,8 @@ gcl_init_alloc(void *cs_start) {
++   tm_table[(int)t_relocatable].tm_sgc = 50;
++ #endif
++   
+++  expand_contblock_index_space();
+++
++   gcl_alloc_initialized=1;
++   
++ }
++@@ -1554,7 +1733,7 @@ static char *baby_malloc(n)
++ {
++   char *res= last_baby;
++   int m;
++-  n = ROUND_UP_PTR(n);
+++  n = CEI(n,PTR_ALIGN);
++    m = n+ sizeof(int);
++   if ((res +m-baby_malloc_data) > sizeof(baby_malloc_data))
++     {
++@@ -1642,11 +1821,11 @@ free(void *ptr) {
++   for (p = &malloc_list,pp=*p; pp && !endp(pp);  p = &((pp)->c.c_cdr),pp=pp->c.c_cdr)
++     if ((pp)->c.c_car->st.st_self == ptr) {
++       /* SGC contblock pages: Its possible this is on an old page CM 20030827 */
++-#ifdef SGC
++-      insert_maybe_sgc_contblock((pp)->c.c_car->st.st_self,(pp)->c.c_car->st.st_dim);
++-#else
++-      insert_contblock((pp)->c.c_car->st.st_self,(pp)->c.c_car->st.st_dim);
++-#endif
+++/* #ifdef SGC */
+++/*       insert_maybe_sgc_contblock((pp)->c.c_car->st.st_self,(pp)->c.c_car->st.st_dim); */
+++/* #else */
+++/*       insert_contblock((pp)->c.c_car->st.st_self,(pp)->c.c_car->st.st_dim); */
+++/* #endif */
++       (pp)->c.c_car->st.st_self = NULL;
++       *p = pp->c.c_cdr;
++ #ifdef GCL_GPROF
++@@ -1707,11 +1886,11 @@ realloc(void *ptr, size_t size) {
++      for (i = 0;  i < size;  i++)
++        x->st.st_self[i] = ((char *)ptr)[i];
++ /* SGC contblock pages: Its possible this is on an old page CM 20030827 */
++-#ifdef SGC
++-     insert_maybe_sgc_contblock(ptr, j);
++-#else
++-     insert_contblock(ptr, j);
++-#endif
+++/* #ifdef SGC */
+++/*   insert_maybe_sgc_contblock(ptr, j); */
+++/* #else */
+++/*   insert_contblock(ptr, j); */
+++/* #endif */
++      return(x->st.st_self);
++       }
++     }
++--- gcl-2.6.12.orig/o/array.c
+++++ gcl-2.6.12/o/array.c
++@@ -457,15 +457,15 @@ static longfloat DFLT_aet_lf = 0.0;
++ static object Iname_t = sLt;
++ static struct { char * dflt; object *namep;} aet_types[] =
++ {   {(char *)        &DFLT_aet_object,       &Iname_t,},     /*  t  */
++-    {(char *)        &DFLT_aet_ch, &sLstring_char,},/*  string-char  */
+++    {(char *)        &DFLT_aet_ch, &sLcharacter,},/*  character  */
++     {(char *)        &DFLT_aet_fix, &sLbit,},                /*  bit  */
++     {(char *)        &DFLT_aet_fix,  &sLfixnum,},    /*  fixnum  */
++     {(char *)        &DFLT_aet_sf, &sLshort_float,},                 /*  short-float  */
++     {(char *)        &DFLT_aet_lf, &sLlong_float,},  /*  long-float  */
++-    {(char *)        &DFLT_aet_char,&sLsigned_char,},               /* signed char */
++-    {(char *)    &DFLT_aet_char,&sLunsigned_char,},               /* unsigned char */
++-    {(char *)        &DFLT_aet_short,&sLsigned_short,},              /* signed short */
++-    {(char *)        &DFLT_aet_short, &sLunsigned_short},    /*  unsigned short   */
+++    {(char *)        &DFLT_aet_char,&sSsigned_char,},               /* signed char */
+++    {(char *)   &DFLT_aet_char,&sSunsigned_char,},               /* unsigned char */
+++    {(char *)        &DFLT_aet_short,&sSsigned_short,},              /* signed short */
+++    {(char *)        &DFLT_aet_short, &sSunsigned_short},    /*  unsigned short   */
++      };
++ 
++ DEFUN_NEW("GET-AELTTYPE",object,fSget_aelttype,SI,1,1,NONE,OO,OO,OO,OO,(object x),"")
++--- gcl-2.6.12.orig/o/assignment.c
+++++ gcl-2.6.12/o/assignment.c
++@@ -172,7 +172,7 @@ DEFUNO_NEW("FSET",object,fSfset,SI
++              sym->s.s_mflag = FALSE;
++      } else if (car(function) == sLspecial)
++              FEerror("Cannot define a special form.", 0);
++-     else if (function->c.c_car == sLmacro) {
+++     else if (function->c.c_car == sSmacro) {
++              sym->s.s_gfdef = function->c.c_cdr;
++              sym->s.s_mflag = TRUE;
++      } else {
++--- gcl-2.6.12.orig/o/bind.c
+++++ gcl-2.6.12/o/bind.c
++@@ -918,8 +918,8 @@ parse_key_new_new(int n, object *base, s
++  /* from here down identical to parse_key_rest */
++  new = new + n ;
++   {int j=keys->n;
++-   object *p= (object *)(keys->defaults);
++-   while (--j >=0) base[j]=p[j];
+++   object **p= (object **)(keys->defaults);
+++   while (--j >=0) base[j]=*(p[j]);
++  }
++  {if (n==0){ return 0;}
++  {int allow = keys->allow_other_keys;
++@@ -939,7 +939,7 @@ parse_key_new_new(int n, object *base, s
++      new = new -2;
++      k = *new;
++      while(--i >= 0)
++-       {if ((*(ke++)).o == k)
+++       {if (*(*(ke++)).o == k)
++        {base[i]= new[1];
++         n=n-2;
++         goto top;
++@@ -1026,8 +1026,7 @@ parse_key_rest_new(object rest, int n, o
++     
++  new = new + n ;
++   {int j=keys->n;
++-   object *p= (object *)(keys->defaults);
++-   while (--j >=0) base[j]=p[j];
+++   while (--j >=0) base[j]=*keys->defaults[j].o;
++  }
++  {if (n==0){ return 0;}
++  {int allow = keys->allow_other_keys;
++@@ -1047,7 +1046,7 @@ parse_key_rest_new(object rest, int n, o
++      new = new -2;
++      k = *new;
++      while(--i >= 0)
++-       {if ((*(ke++)).o == k)
+++       {if (*(*(ke++)).o == k)
++        {base[i]= new[1];
++         n=n-2;
++         goto top;
++@@ -1066,18 +1065,19 @@ parse_key_rest_new(object rest, int n, o
++   return -1;
++ }}}
++ 
+++static object foo[2]={Cnil,OBJNULL};
++   
++ void
++ set_key_struct(struct key *ks, object data)
++ {int i=ks->n;
++  while (--i >=0)
++-   {ks->keys[i].o =   data->cfd.cfd_self[ ks->keys[i].i ];
+++   {ks->keys[i].o =   data->cfd.cfd_self+ks->keys[i].i;
++     if (ks->defaults != (void *)Cstd_key_defaults)
++       {fixnum m=ks->defaults[i].i;
++         ks->defaults[i].o=
++-       (m==-2 ? Cnil :
++-        m==-1 ? OBJNULL :
++-        data->cfd.cfd_self[m]);}
+++       (m==-2 ? foo :
+++        m==-1 ? foo+1 :
+++        data->cfd.cfd_self+m);}
++ }}
++ 
++ #undef AUX
++--- gcl-2.6.12.orig/o/cfun.c
+++++ gcl-2.6.12/o/cfun.c
++@@ -306,6 +306,15 @@ make_special_form_internal(char *s, void
++      return(x);
++ }
++ 
+++object
+++make_si_special_form_internal(char *s, void (*f)())
+++{
+++     object x;
+++     x = make_si_ordinary(s);
+++     x->s.s_sfdef = f;
+++     return(x);
+++}
+++
++ DEFUN_NEW("COMPILED-FUNCTION-NAME",object,fScompiled_function_name,SI
++    ,1,1,NONE,OO,OO,OO,OO,(object fun),"")
++ 
++--- gcl-2.6.12.orig/o/character.d
+++++ gcl-2.6.12/o/character.d
++@@ -50,14 +50,6 @@ Foundation, 675 Mass Ave, Cambridge, MA
++      @(return Cnil)
++ @)
++ 
++-@(defun string_char_p (c)
++-@
++-     check_type_character(&c);
++-     if (char_font(c) != 0 || char_bits(c) != 0)
++-             @(return Cnil)
++-     @(return Ct)
++-@)
++-
++ @(defun alpha_char_p (c)
++      int i;
++ @
++@@ -358,18 +350,6 @@ BEGIN:
++      @(return `make_fixnum(char_code(c))`)
++ @)
++ 
++-@(defun char_bits (c)
++-@
++-     check_type_character(&c);
++-     @(return `small_fixnum(char_bits(c))`)
++-@)
++-
++-@(defun char_font (c)
++-@
++-     check_type_character(&c);
++-     @(return `small_fixnum(char_font(c))`)
++-@)
++-
++ @(defun code_char (c &o (b `make_fixnum(0)`) (f `make_fixnum(0)`))
++      object x;
++ @
++@@ -393,29 +373,6 @@ BEGIN:
++      @(return x)
++ @)
++ 
++-@(defun make_char (c &o (b `make_fixnum(0)`) (f `make_fixnum(0)`))
++-     object x;
++-     int code;
++-@
++-     check_type_character(&c);
++-     code = char_code(c);
++-     check_type_non_negative_integer(&b);
++-     check_type_non_negative_integer(&f);
++-     if (type_of(b) == t_bignum)
++-             @(return Cnil)
++-     if (type_of(f) == t_bignum)
++-             @(return Cnil)
++-     if (fix(b)>=CHBITSLIM || fix(f)>=CHFONTLIM)
++-             @(return Cnil)
++-     if (fix(b) == 0 && fix(f) == 0)
++-             @(return `code_char(code)`)
++-     x = alloc_object(t_character);
++-     char_code(x) = code;
++-     char_bits(x) = fix(b);
++-     char_font(x) = fix(f);
++-     @(return x)
++-@)
++-
++ @(defun char_upcase (c)
++ @
++      check_type_character(&c);
++@@ -489,30 +446,6 @@ int w, r;
++      @(return `make_fixnum(i)`)
++ @)
++ 
++-@(defun int_char (x)
++-     int i, c, b, f;
++-@
++-     check_type_non_negative_integer(&x);
++-     if (type_of(x) == t_bignum)
++-             @(return Cnil)
++-     i = fix(x);
++-     c = i % CHCODELIM;
++-     i /= CHCODELIM;
++-     b = i % CHBITSLIM;
++-     i /= CHBITSLIM;
++-     f = i % CHFONTLIM;
++-     i /= CHFONTLIM;
++-     if (i > 0)
++-             @(return Cnil)
++-     if (b == 0 && f == 0)
++-             @(return `code_char(c)`)
++-     x = alloc_object(t_character);
++-     char_code(x) = c;
++-     char_bits(x) = b;
++-     char_font(x) = f;
++-     @(return x)
++-@)
++-
++ @(defun char_name (c)
++ @
++      check_type_character(&c);
++@@ -563,18 +496,6 @@ int w, r;
++      @(return Cnil)
++ @)
++ 
++-@(defun char_bit (c n)
++-@
++-     check_type_character(&c);
++-     FEerror("Cannot get char-bit of ~S.", 1, c);
++-@)
++-
++-@(defun set_char_bit (c n v)
++-@
++-     check_type_character(&c);
++-     FEerror("Cannot set char-bit of ~S.", 1, c);
++-@)
++-
++ void
++ gcl_init_character()
++ {
++@@ -599,8 +520,8 @@ gcl_init_character()
++ #endif
++ 
++      make_constant("CHAR-CODE-LIMIT", make_fixnum(CHCODELIM));
++-     make_constant("CHAR-FONT-LIMIT", make_fixnum(CHFONTLIM));
++-     make_constant("CHAR-BITS-LIMIT", make_fixnum(CHBITSLIM));
+++     make_si_constant("CHAR-FONT-LIMIT", make_fixnum(CHFONTLIM));
+++     make_si_constant("CHAR-BITS-LIMIT", make_fixnum(CHBITSLIM));
++ 
++      STreturn = make_simple_string("Return");
++      enter_mark_origin(&STreturn);
++@@ -620,18 +541,97 @@ gcl_init_character()
++      STnewline = make_simple_string("Newline");
++      enter_mark_origin(&STnewline);
++ 
++-     make_constant("CHAR-CONTROL-BIT", make_fixnum(0));
++-     make_constant("CHAR-META-BIT", make_fixnum(0));
++-     make_constant("CHAR-SUPER-BIT", make_fixnum(0));
++-     make_constant("CHAR-HYPER-BIT", make_fixnum(0));
+++     make_si_constant("CHAR-CONTROL-BIT", make_fixnum(0));
+++     make_si_constant("CHAR-META-BIT", make_fixnum(0));
+++     make_si_constant("CHAR-SUPER-BIT", make_fixnum(0));
+++     make_si_constant("CHAR-HYPER-BIT", make_fixnum(0));
+++
++ }
++ 
+++@(defun make_char (c &o (b `make_fixnum(0)`) (f `make_fixnum(0)`))
+++     object x;
+++     int code;
+++@
+++     check_type_character(&c);
+++     code = char_code(c);
+++     check_type_non_negative_integer(&b);
+++     check_type_non_negative_integer(&f);
+++     if (type_of(b) == t_bignum)
+++             @(return Cnil)
+++     if (type_of(f) == t_bignum)
+++             @(return Cnil)
+++     if (fix(b)>=CHBITSLIM || fix(f)>=CHFONTLIM)
+++             @(return Cnil)
+++     if (fix(b) == 0 && fix(f) == 0)
+++             @(return `code_char(code)`)
+++     x = alloc_object(t_character);
+++     char_code(x) = code;
+++     char_bits(x) = fix(b);
+++     char_font(x) = fix(f);
+++     @(return x)
+++@)
+++
+++@(defun char_bits (c)
+++@
+++     check_type_character(&c);
+++     @(return `small_fixnum(char_bits(c))`)
+++@)
+++
+++@(defun char_font (c)
+++@
+++     check_type_character(&c);
+++     @(return `small_fixnum(char_font(c))`)
+++@)
+++
+++@(defun char_bit (c n)
+++@
+++     check_type_character(&c);
+++     FEerror("Cannot get char-bit of ~S.", 1, c);
+++@)
+++
+++@(defun set_char_bit (c n v)
+++@
+++     check_type_character(&c);
+++     FEerror("Cannot set char-bit of ~S.", 1, c);
+++@)
+++
+++@(defun string_char_p (c)
+++@
+++     check_type_character(&c);
+++     if (char_font(c) != 0 || char_bits(c) != 0)
+++             @(return Cnil)
+++     @(return Ct)
+++@)
+++
+++@(defun int_char (x)
+++     int i, c, b, f;
+++@
+++     check_type_non_negative_integer(&x);
+++     if (type_of(x) == t_bignum)
+++             @(return Cnil)
+++     i = fix(x);
+++     c = i % CHCODELIM;
+++     i /= CHCODELIM;
+++     b = i % CHBITSLIM;
+++     i /= CHBITSLIM;
+++     f = i % CHFONTLIM;
+++     i /= CHFONTLIM;
+++     if (i > 0)
+++             @(return Cnil)
+++     if (b == 0 && f == 0)
+++             @(return `code_char(c)`)
+++     x = alloc_object(t_character);
+++     char_code(x) = c;
+++     char_bits(x) = b;
+++     char_font(x) = f;
+++     @(return x)
+++@)
+++
++ void
++ gcl_init_character_function()
++ {
++      make_function("STANDARD-CHAR-P", Lstandard_char_p);
++      make_function("GRAPHIC-CHAR-P", Lgraphic_char_p);
++-     make_function("STRING-CHAR-P", Lstring_char_p);
++      make_function("ALPHA-CHAR-P", Lalpha_char_p);
++      make_function("UPPER-CASE-P", Lupper_case_p);
++      make_function("LOWER-CASE-P", Llower_case_p);
++@@ -652,17 +652,18 @@ gcl_init_character_function()
++      make_function("CHAR-NOT-LESSP", Lchar_not_lessp);
++      make_function("CHARACTER", Lcharacter);
++      make_function("CHAR-CODE", Lchar_code);
++-     make_function("CHAR-BITS", Lchar_bits);
++-     make_function("CHAR-FONT", Lchar_font);
++      make_function("CODE-CHAR", Lcode_char);
++-     make_function("MAKE-CHAR", Lmake_char);
++      make_function("CHAR-UPCASE", Lchar_upcase);
++      make_function("CHAR-DOWNCASE", Lchar_downcase);
++      make_function("DIGIT-CHAR", Ldigit_char);
++      make_function("CHAR-INT", Lchar_int);
++-     make_function("INT-CHAR", Lint_char);
++      make_function("CHAR-NAME", Lchar_name);
++      make_function("NAME-CHAR", Lname_char);
++-     make_function("CHAR-BIT", Lchar_bit);
++-     make_function("SET-CHAR-BIT", Lset_char_bit);
+++     make_si_function("INT-CHAR", Lint_char);
+++     make_si_function("MAKE-CHAR", Lmake_char);
+++     make_si_function("CHAR-BITS", Lchar_bits);
+++     make_si_function("CHAR-FONT", Lchar_font);
+++     make_si_function("CHAR-BIT", Lchar_bit);
+++     make_si_function("SET-CHAR-BIT", Lset_char_bit);
+++     make_si_function("STRING-CHAR-P", Lstring_char_p);
++ }
++--- gcl-2.6.12.orig/o/cmpaux.c
+++++ gcl-2.6.12/o/cmpaux.c
++@@ -48,7 +48,7 @@ DEFUNO_NEW("SPECIALP",object,fSspecialp,
++      RETURN1(sym);
++ }
++ 
++-DEF_ORDINARY("DEBUG",sSdebug,SI,"");
+++DEF_ORDINARY("DEBUGGER",sSdebugger,SI,"");
++ 
++ DEFUN_NEW("DEFVAR1",object,fSdefvar1,SI
++        ,2,3,NONE,OO,OO,OO,OO,(object sym,object val,...),"")
++@@ -71,10 +71,10 @@ DEFUN_NEW("DEFVAR1",object,fSdefvar1,SI
++       }
++ 
++ 
++-DEFUN_NEW("DEBUG",object,fSdebug,SI
+++DEFUN_NEW("DEBUG",object,fLdebug,LISP
++        ,2,2,NONE,OO,OO,OO,OO,(object sym,object val),"")
++ { /* 2 args */
++-  putprop(sym,val,sSdebug);
+++  putprop(sym,val,sSdebugger);
++   RETURN1(sym);
++ }
++ 
++--- gcl-2.6.12.orig/o/error.c
+++++ gcl-2.6.12/o/error.c
++@@ -67,27 +67,27 @@ ihs_function_name(object x)
++              y = x->c.c_car;
++              if (y == sLlambda)
++                      return(sLlambda);
++-             if (y == sLlambda_closure)
++-                     return(sLlambda_closure);
++-             if (y == sLlambda_block || y == sSlambda_block_expanded) {
+++             if (y == sSlambda_closure)
+++                     return(sSlambda_closure);
+++             if (y == sSlambda_block || y == sSlambda_block_expanded) {
++                      x = x->c.c_cdr;
++                      if (type_of(x) != t_cons)
++-                             return(sLlambda_block);
+++                             return(sSlambda_block);
++                      return(x->c.c_car);
++              }
++-             if (y == sLlambda_block_closure) {
+++             if (y == sSlambda_block_closure) {
++                      x = x->c.c_cdr;
++                      if (type_of(x) != t_cons)
++-                             return(sLlambda_block_closure);
+++                             return(sSlambda_block_closure);
++                      x = x->c.c_cdr;
++                      if (type_of(x) != t_cons)
++-                             return(sLlambda_block_closure);
+++                             return(sSlambda_block_closure);
++                      x = x->c.c_cdr;
++                      if (type_of(x) != t_cons)
++-                             return(sLlambda_block_closure);
+++                             return(sSlambda_block_closure);
++                      x = x->c.c_cdr;
++                      if (type_of(x) != t_cons)
++-                             return(sLlambda_block_closure);
+++                             return(sSlambda_block_closure);
++                      return(x->c.c_car);
++              }
++              /* a general special form */
++--- gcl-2.6.12.orig/o/eval.c
+++++ gcl-2.6.12/o/eval.c
++@@ -227,7 +227,7 @@ funcall(object fun)
++        c = FALSE;
++        fun = fun->c.c_cdr;
++ 
++-     }else if (x == sLlambda_block) {
+++     }else if (x == sSlambda_block) {
++        b = TRUE;
++        c = FALSE;
++        if(sSlambda_block_expanded->s.s_dbind!=OBJNULL)
++@@ -237,14 +237,14 @@ funcall(object fun)
++ 
++ 
++      
++-     } else if (x == sLlambda_closure) {
+++     } else if (x == sSlambda_closure) {
++              b = FALSE;
++              c = TRUE;
++              fun = fun->c.c_cdr;
++      } else if (x == sLlambda) {
++              b = c = FALSE;
++              fun = fun->c.c_cdr;
++-     } else if (x == sLlambda_block_closure) {
+++     } else if (x == sSlambda_block_closure) {
++              b = c = TRUE;
++              fun = fun->c.c_cdr;
++      } else
++@@ -644,13 +644,13 @@ EVAL:
++ 
++      vs_check;
++ 
++-     if (Vevalhook->s.s_dbind != Cnil && eval1 == 0)
+++     if (siVevalhook->s.s_dbind != Cnil && eval1 == 0)
++      {
++              bds_ptr old_bds_top = bds_top;
++-             object hookfun = symbol_value(Vevalhook);
+++             object hookfun = symbol_value(siVevalhook);
++              /*  check if Vevalhook is unbound  */
++ 
++-             bds_bind(Vevalhook, Cnil);
+++             bds_bind(siVevalhook, Cnil);
++              form = Ifuncall_n(hookfun,2,form,list(3,lex_env[0],lex_env[1],lex_env[2]));
++              bds_unwind(old_bds_top);
++              return form;
++@@ -721,7 +721,7 @@ APPLICATION:
++      for (x = lex_env[1];  type_of(x) == t_cons;  x = x->c.c_cdr)
++              if (x->c.c_car->c.c_car == fun) {
++                      x = x->c.c_car;
++-                     if (MMcadr(x) == sLmacro) {
+++                     if (MMcadr(x) == sSmacro) {
++                              x = MMcaddr(x);
++                              goto EVAL_MACRO;
++                      }
++@@ -755,10 +755,10 @@ EVAL_ARGS:
++        vs_top = ++top;
++        form = MMcdr(form);}
++        n =top - base; /* number of args */
++-     if (Vapplyhook->s.s_dbind != Cnil) {
+++     if (siVapplyhook->s.s_dbind != Cnil) {
++        base[0]= (object)n;
++        base[0] = c_apply_n(list,n+1,base);
++-       x = Ifuncall_n(Vapplyhook->s.s_dbind,3,
+++       x = Ifuncall_n(siVapplyhook->s.s_dbind,3,
++                       x, /* the function */
++                       base[0], /* the arg list */
++                       list(3,lex_env[0],lex_env[1],lex_env[2]));
++@@ -775,7 +775,7 @@ EVAL_ARGS:
++ 
++ LAMBDA:
++      if (type_of(fun) == t_cons && MMcar(fun) == sLlambda) {
++-       x = listA(4,sLlambda_closure,lex_env[0],lex_env[1],lex_env[2],Mcdr(fun));
+++       x = listA(4,sSlambda_closure,lex_env[0],lex_env[1],lex_env[2],Mcdr(fun));
++        goto EVAL_ARGS;
++      }
++      FEinvalid_function(fun);
++@@ -805,13 +805,13 @@ EVAL:
++ 
++      vs_check;
++ 
++-     if (Vevalhook->s.s_dbind != Cnil && eval1 == 0)
+++     if (siVevalhook->s.s_dbind != Cnil && eval1 == 0)
++      {
++              bds_ptr old_bds_top = bds_top;
++-             object hookfun = symbol_value(Vevalhook);
++-             /*  check if Vevalhook is unbound  */
+++             object hookfun = symbol_value(siVevalhook);
+++             /*  check if siVevalhook is unbound  */
++ 
++-             bds_bind(Vevalhook, Cnil);
+++             bds_bind(siVevalhook, Cnil);
++              vs_base = vs_top;
++              vs_push(form);
++              vs_push(lex_env[0]);
++@@ -903,7 +903,7 @@ APPLICATION:
++      for (x = lex_env[1];  type_of(x) == t_cons;  x = x->c.c_cdr)
++              if (x->c.c_car->c.c_car == fun) {
++                      x = x->c.c_car;
++-                     if (MMcadr(x) == sLmacro) {
+++                     if (MMcadr(x) == sSmacro) {
++                              x = MMcaddr(x);
++                              goto EVAL_MACRO;
++                      }
++@@ -940,7 +940,7 @@ EVAL_ARGS:
++              form = MMcdr(form);
++      }
++      vs_base = base;
++-     if (Vapplyhook->s.s_dbind != Cnil) {
+++     if (siVapplyhook->s.s_dbind != Cnil) {
++              call_applyhook(fun);
++              return;
++      }
++@@ -959,7 +959,7 @@ LAMBDA:
++              temporary = make_cons(lex_env[2], fun->c.c_cdr);
++              temporary = make_cons(lex_env[1], temporary);
++              temporary = make_cons(lex_env[0], temporary);
++-             x = make_cons(sLlambda_closure, temporary);
+++             x = make_cons(sSlambda_closure, temporary);
++              vs_push(x);
++              goto EVAL_ARGS;
++      }
++@@ -972,7 +972,7 @@ call_applyhook(object fun)
++      object ah;
++      object *v;
++ 
++-     ah = symbol_value(Vapplyhook);
+++     ah = symbol_value(siVapplyhook);
++      v = vs_base + 1;
++      vs_push(Cnil);
++      while (vs_top > v)
++@@ -1040,7 +1040,7 @@ DEFUNOM_NEW("EVAL",object,fLeval,LISP
++      return Ivs_values();
++ }
++ 
++-LFD(Levalhook)(void)
+++LFD(siLevalhook)(void)
++ {
++      object env;
++      bds_ptr old_bds_top = bds_top;
++@@ -1062,15 +1062,15 @@ LFD(Levalhook)(void)
++              vs_push(car(env));
++      } else
++              too_many_arguments();
++-     bds_bind(Vevalhook, vs_base[1]);
++-     bds_bind(Vapplyhook, vs_base[2]);
+++     bds_bind(siVevalhook, vs_base[1]);
+++     bds_bind(siVapplyhook, vs_base[2]);
++      eval1 = 1;
++      eval(vs_base[0]);
++      lex_env = lex;
++      bds_unwind(old_bds_top);
++ }
++ 
++-LFD(Lapplyhook)(void)
+++LFD(siLapplyhook)(void)
++ {
++ 
++      object env;
++@@ -1094,8 +1094,8 @@ LFD(Lapplyhook)(void)
++              vs_push(car(env));
++      } else
++              too_many_arguments();
++-     bds_bind(Vevalhook, vs_base[2]);
++-     bds_bind(Vapplyhook, vs_base[3]);
+++     bds_bind(siVevalhook, vs_base[2]);
+++     bds_bind(siVapplyhook, vs_base[3]);
++      z = vs_top;
++      for (l = vs_base[1];  !endp(l);  l = l->c.c_cdr)
++              vs_push(l->c.c_car);
++@@ -1392,15 +1392,15 @@ gcl_init_eval(void)
++         make_constant("CALL-ARGUMENTS-LIMIT", make_fixnum(64));
++ 
++ 
++-     Vevalhook = make_special("*EVALHOOK*", Cnil);
++-     Vapplyhook = make_special("*APPLYHOOK*", Cnil);
+++     siVevalhook = make_si_special("*EVALHOOK*", Cnil);
+++     siVapplyhook = make_si_special("*APPLYHOOK*", Cnil);
++ 
++ 
++      three_nils.nil3_self[0] = Cnil;
++      three_nils.nil3_self[1] = Cnil;
++      three_nils.nil3_self[2] = Cnil;
++ 
++-     make_function("EVALHOOK", Levalhook);
++-     make_function("APPLYHOOK", Lapplyhook);
+++     make_si_function("EVALHOOK", siLevalhook);
+++     make_si_function("APPLYHOOK", siLapplyhook);
++ 
++ }
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -345,14 +345,14 @@ getd(str)
++ #define READ_BYTE1() getc(fas_stream)
++ 
++ #define GET8(varx ) \
++- do{unsigned long var=(unsigned long)READ_BYTE1();  \
++-   var |=  ((unsigned long)READ_BYTE1() << SIZE_BYTE); \
++-   var |=  ((unsigned long)READ_BYTE1() << (2*SIZE_BYTE)); \
++-   var |=  ((unsigned long)READ_BYTE1() << (3*SIZE_BYTE)); \
++-   var |=  ((unsigned long)READ_BYTE1() << (4*SIZE_BYTE)); \
++-   var |=  ((unsigned long)READ_BYTE1() << (5*SIZE_BYTE)); \
++-   var |=  ((unsigned long)READ_BYTE1() << (6*SIZE_BYTE)); \
++-   var |=  ((unsigned long)READ_BYTE1() << (7*SIZE_BYTE)); \
+++ do{unsigned long long var=READ_BYTE1();  \
+++   var |=  ((unsigned long long)READ_BYTE1() << SIZE_BYTE); \
+++   var |=  ((unsigned long long)READ_BYTE1() << (2*SIZE_BYTE)); \
+++   var |=  ((unsigned long long)READ_BYTE1() << (3*SIZE_BYTE)); \
+++   var |=  ((unsigned long long)READ_BYTE1() << (4*SIZE_BYTE)); \
+++   var |=  ((unsigned long long)READ_BYTE1() << (5*SIZE_BYTE)); \
+++   var |=  ((unsigned long long)READ_BYTE1() << (6*SIZE_BYTE)); \
+++   var |=  ((unsigned long long)READ_BYTE1() << (7*SIZE_BYTE)); \
++    DPRINTF("{8byte:varx= %ld}", var); \
++      varx=var;} while (0)
++ 
++@@ -386,7 +386,7 @@ getd(str)
++ #define GETFIX(v_) Join(GET,SIZEOF_LONG)(v_)
++ 
++ #define PUT8(varx ) \
++- do{unsigned long var= varx ; \
+++ do{unsigned long long var= varx ; \
++      DPRINTF("{8byte:varx= %ld}", var); \
++        WRITE_BYTEI(var,0); \
++      WRITE_BYTEI(var,1); \
++@@ -808,7 +808,7 @@ write_fasd(object obj)
++      {int l = MP(obj)->_mp_size;
++      int m = (l >= 0 ? l : -l);
++       
++-     unsigned long *u = (unsigned long *) MP(obj)->_mp_d;
+++     mp_limb_t *u = MP(obj)->_mp_d;
++      /* fix this */
++      /* if (sizeof(mp_limb_t) != 4) { FEerror("fix for gmp",0);} */
++      PUT4(l);
++@@ -1279,7 +1279,7 @@ read_fasd1(int i, object *loc)
++       case DP( d_bignum:)
++      {int j,m;
++       object tem;
++-      unsigned long *u;
+++      mp_limb_t *u;
++       GET4(j);
++ #ifdef GMP
++       tem = new_bignum();
++@@ -1287,7 +1287,7 @@ read_fasd1(int i, object *loc)
++       _mpz_realloc(MP(tem),m);
++       MP(tem)->_mp_size = j;
++       j = m;
++-      u = (unsigned long *) MP(tem)->_mp_d;
+++      u = MP(tem)->_mp_d;
++ #else         
++         { BEGIN_NO_INTERRUPT;
++       tem = alloc_object(t_bignum);
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -268,7 +268,7 @@ BEGIN:
++              return(strm->sm.sm_object0);
++ 
++      case smm_socket:
++-         return (sLstring_char);
+++         return (sLcharacter);
++          
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++@@ -295,10 +295,10 @@ BEGIN:
++              return(stream_element_type(STREAM_INPUT_STREAM(strm)));
++ 
++      case smm_string_input:
++-             return(sLstring_char);
+++             return(sLcharacter);
++ 
++      case smm_string_output:
++-             return(sLstring_char);
+++             return(sLcharacter);
++ 
++      default:
++              error("illegal stream mode");
++@@ -512,7 +512,7 @@ object if_exists, if_does_not_exist;
++      x->sm.sm_fp = fp;
++ 
++      x->sm.sm_buffer = 0;
++-     x->sm.sm_object0 = (unzipped ? make_cons(sSAallow_gzipped_fileA,unzipped) : sLstring_char);
+++     x->sm.sm_object0 = (unzipped ? make_cons(sSAallow_gzipped_fileA,unzipped) : sLcharacter);
++      x->sm.sm_object1 = fn;
++      x->sm.sm_int0 = x->sm.sm_int1 = 0;
++      vs_push(x);
++@@ -1715,7 +1715,7 @@ LFD(Lstream_element_type)()
++ 
++ @(static defun open (filename
++            &key (direction sKinput)
++-                (element_type sLstring_char)
+++                (element_type sLcharacter)
++                 (if_exists Cnil iesp)
++                 (if_does_not_exist Cnil idnesp)
++            &aux strm)
++@@ -1800,7 +1800,7 @@ LFD(Lfile_length)()
++              vs_base[0] = make_fixnum(i);
++ }
++ 
++-object sSAload_pathnameA;
+++object sLAload_pathnameA;
++ DEFVAR("*COLLECT-BINARY-MODULES*",sSAcollect_binary_modulesA,SI,sLnil,"");
++ DEFVAR("*BINARY-MODULES*",sSAbinary_modulesA,SI,Cnil,"");
++ 
++@@ -1861,7 +1861,7 @@ DEFVAR("*BINARY-MODULES*",sSAbinary_modu
++              }
++              package = symbol_value(sLApackageA);
++              bds_bind(sLApackageA, package);
++-             bds_bind(sSAload_pathnameA,fasl_filename);
+++             bds_bind(sLAload_pathnameA,fasl_filename);
++              if (sSAcollect_binary_modulesA->s.s_dbind==Ct) {
++                object _x=sSAbinary_modulesA->s.s_dbind;
++                object _y=Cnil;
++@@ -1920,7 +1920,7 @@ DEFVAR("*BINARY-MODULES*",sSAbinary_modu
++              flush_stream(PRINTstream);
++      }
++      package = symbol_value(sLApackageA);
++-     bds_bind(sSAload_pathnameA,pathname);
+++     bds_bind(sLAload_pathnameA,pathname);
++      bds_bind(sLApackageA, package);
++      bds_bind(sLAstandard_inputA, strm);
++      frs_push(FRS_PROTECT, Cnil);
++@@ -2534,7 +2534,7 @@ gcl_init_file(void)
++      standard_input->sm.sm_mode = (short)smm_input;
++      standard_input->sm.sm_fp = stdin;
++      standard_input->sm.sm_buffer = 0;
++-     standard_input->sm.sm_object0 = sLstring_char;
+++     standard_input->sm.sm_object0 = sLcharacter;
++      standard_input->sm.sm_object1
++ #ifdef UNIX
++      = make_simple_string("stdin");
++@@ -2546,7 +2546,7 @@ gcl_init_file(void)
++      standard_output->sm.sm_mode = (short)smm_output;
++      standard_output->sm.sm_fp = stdout;
++      standard_output->sm.sm_buffer = 0;
++-     standard_output->sm.sm_object0 = sLstring_char;
+++     standard_output->sm.sm_object0 = sLcharacter;
++      standard_output->sm.sm_object1
++ #ifdef UNIX
++      = make_simple_string("stdout");
++@@ -2571,7 +2571,7 @@ gcl_init_file(void)
++ }
++ 
++ DEFVAR("*IGNORE-EOF-ON-TERMINAL-IO*",sSAignore_eof_on_terminal_ioA,SI,Cnil,"");
++-DEFVAR("*LOAD-PATHNAME*",sSAload_pathnameA,SI,Cnil,"");
+++DEFVAR("*LOAD-PATHNAME*",sLAload_pathnameA,LISP,Cnil,"");
++ DEFVAR("*LOAD-VERBOSE*",sLAload_verboseA,LISP,Ct,"");
++ 
++ DEF_ORDINARY("ABORT",sKabort,KEYWORD,"");
++--- gcl-2.6.12.orig/o/funlink.c
+++++ gcl-2.6.12/o/funlink.c
++@@ -19,7 +19,7 @@ typedef object (*object_func)();
++ static int     
++ vpush_extend(void *,object);
++ 
++-object sLAlink_arrayA;
+++object sSAlink_arrayA;
++ int Rset = 0;
++ 
++ DEFVAR("*LINK-LIST*",sSAlink_listA,SI,0,"");
++@@ -67,8 +67,8 @@ call_or_link(object sym, void **link) {
++   if (Rset==0)
++     funcall(fun);
++   else if (type_of(fun) == t_cfun) {
++-    (void) vpush_extend( link,sLAlink_arrayA->s.s_dbind);
++-    (void) vpush_extend( *link,sLAlink_arrayA->s.s_dbind);    
+++    (void) vpush_extend( link,sSAlink_arrayA->s.s_dbind);
+++    (void) vpush_extend( *link,sSAlink_arrayA->s.s_dbind);    
++     *link = (void *) (fun->cf.cf_self);
++     (*(void (*)())(fun->cf.cf_self))();
++   } else {
++@@ -89,8 +89,8 @@ call_or_link_closure(object sym, void **
++  }
++  if (type_of(fun) == t_cclosure && (fun->cc.cc_turbo)) {
++    if (Rset) {
++-     (void) vpush_extend( link,sLAlink_arrayA->s.s_dbind);
++-     (void) vpush_extend( *link,sLAlink_arrayA->s.s_dbind);
+++     (void) vpush_extend( link,sSAlink_arrayA->s.s_dbind);
+++     (void) vpush_extend( *link,sSAlink_arrayA->s.s_dbind);
++      *ptr = (void *)fun;
++      *link = (void *) (fun->cf.cf_self);
++      MMccall(fun);
++@@ -105,8 +105,8 @@ call_or_link_closure(object sym, void **
++  /* can't do this if invoking foo(a) is illegal when foo is not defined
++     to take any arguments.   In the majority of C's this is legal */
++  else if (type_of(fun) == t_cfun) {
++-   (void) vpush_extend(link,sLAlink_arrayA->s.s_dbind);
++-   (void) vpush_extend(*link,sLAlink_arrayA->s.s_dbind);      
+++   (void) vpush_extend(link,sSAlink_arrayA->s.s_dbind);
+++   (void) vpush_extend(*link,sSAlink_arrayA->s.s_dbind);      
++    *link = (void *)fun->cf.cf_self;
++    (*(void (*)())fun->cf.cf_self)();
++  } else {
++@@ -129,7 +129,7 @@ vpush_extend(void *item, object ar)
++     return(ar->v.v_fillp = ind);}
++        else
++     { 
++-      int newdim= ROUND_UP_PTR((2 + (int) (1.3 * ind)));
+++      int newdim= CEI((2 + (int) (1.3 * ind)),PTR_ALIGN);
++       unsigned char *newself;
++       newself = (void *)alloc_relblock(newdim);
++       bcopy(ar->ust.ust_self,newself,ind);
++@@ -180,8 +180,8 @@ is supplied and FLAG is nil, then this f
++  LDEFAULT2: sym = Cnil ;
++  LEND_VARARG: va_end(ap);}
++ 
++-  if (sLAlink_arrayA ==0)    RETURN1(Cnil);
++-  link_ar = sLAlink_arrayA->s.s_dbind;
+++  if (sSAlink_arrayA ==0)    RETURN1(Cnil);
+++  link_ar = sSAlink_arrayA->s.s_dbind;
++   if (link_ar==Cnil && flag==Cnil) RETURN1(Cnil);
++   check_type_array(&link_ar);
++   if (type_of(link_ar) != t_string)
++@@ -339,8 +339,8 @@ call_proc(object sym, void **link, int a
++ 
++     }
++    
++-    (void) vpush_extend(link,sLAlink_arrayA->s.s_dbind);
++-    (void) vpush_extend(*link,sLAlink_arrayA->s.s_dbind);     
+++    (void) vpush_extend(link,sSAlink_arrayA->s.s_dbind);
+++    (void) vpush_extend(*link,sSAlink_arrayA->s.s_dbind);     
++     *link = (void *)fn;
++ 
++   AFTER_LINK:        
++@@ -443,8 +443,8 @@ call_proc_new(object sym, void **link, i
++ 
++     }
++    
++-    (void) vpush_extend(link,sLAlink_arrayA->s.s_dbind);
++-    (void) vpush_extend(*link,sLAlink_arrayA->s.s_dbind);     
+++    (void) vpush_extend(link,sSAlink_arrayA->s.s_dbind);
+++    (void) vpush_extend(*link,sSAlink_arrayA->s.s_dbind);     
++     *link = (void *)fn;
++ 
++   AFTER_LINK:        
++@@ -607,7 +607,7 @@ FFN(mv_ref)(unsigned int i)
++ #include "xdrfuns.c"
++ 
++ DEF_ORDINARY("CDEFN",sScdefn,SI,"");
++-DEFVAR("*LINK-ARRAY*",sLAlink_arrayA,LISP,Cnil,"");
+++DEFVAR("*LINK-ARRAY*",sSAlink_arrayA,SI,Cnil,"");
++ 
++ void
++ gcl_init_links(void)
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -24,7 +24,7 @@
++   IMPLEMENTATION-DEPENDENT
++ */
++ 
++-#define      DEBUG
+++/* #define   DEBUG */
++ 
++ #define IN_GBC
++ #define NEED_MP_H
++@@ -45,7 +45,7 @@ static void
++ sgc_mark_phase(void);
++ 
++ static fixnum
++-sgc_count_writable(void);
+++sgc_count_read_only(void);
++ 
++ #endif
++ 
++@@ -55,10 +55,6 @@ mark_c_stack(jmp_buf, int, void (*)(void
++ static void
++ mark_contblock(void *, int);
++ 
++-static void
++-mark_object(object);
++-
++-
++ /* the following in line definitions seem to be twice as fast (at
++    least on mc68020) as going to the assembly function calls in bitop.c so
++    since this is more portable and faster lets use them --W. Schelter
++@@ -75,6 +71,31 @@ mark_object(object);
++ #error Do not recognize CPTR_SIZE
++ #endif
++ 
+++void *
+++cb_in(void *p) {
+++  struct contblock **cbpp;
+++  int i;
+++  
+++  for (cbpp=&cb_pointer,i=0;*cbpp;cbpp=&((*cbpp)->cb_link),i++) {
+++    if ((void *)*cbpp<=p && ((void *)(*cbpp)+(*cbpp)->cb_size) >p)
+++      return *cbpp;
+++  }
+++  return NULL;
+++}
+++
+++int
+++cb_print(void) {
+++  struct contblock **cbpp;
+++  int i;
+++  
+++  for (cbpp=&cb_pointer,i=0;*cbpp;cbpp=&((*cbpp)->cb_link),i++) {
+++    fprintf(stderr,"%lu at %p\n",(*cbpp)->cb_size,*cbpp);
+++    fflush(stderr);
+++  }
+++  fprintf(stderr,"%u blocks\n",i);
+++  return 0;
+++}
+++
++ #ifdef CONTBLOCK_MARK_DEBUG
++ int
++ cb_check(void) {
++@@ -121,13 +142,48 @@ off_check(void *v,void *ve,fixnum i,stru
++ }
++ #endif
++ 
+++void **contblock_stack_list=NULL;
+++
+++static inline bool
+++pageinfo_p(void *v) {
+++
+++  struct pageinfo *pi=v;
+++
+++  return pi->magic==PAGE_MAGIC && pi->type<=t_contiguous &&
+++    (!pi->next || (void *)pi->next>=v+(pi->type==t_contiguous ? pi->in_use : 1)*PAGESIZE);
+++
+++}
+++    
+++static inline bool
+++in_contblock_stack_list(void *p,void ***ap) {
+++  void **a;
+++  for (a=*ap;a && a[0]>p;a=a[1]);
+++  *ap=a;
+++  /* if (a && a[0]==p) fprintf(stderr,"Skipping %p\n",p); */
+++  return a && a[0]==p;
+++}
++ 
++ inline struct pageinfo *
++ get_pageinfo(void *x) {
++-  struct pageinfo *v=contblock_list_head;void *vv;
++-  for (;(vv=v) && (vv>=x || vv+v->in_use*PAGESIZE<=x);v=v->next);
++-  return v;
+++
+++  void *p=pageinfo(x),**a=contblock_stack_list;
+++  struct pageinfo *v;
+++
+++  for (;!pageinfo_p(p) || in_contblock_stack_list(p,&a);p-=PAGESIZE);
+++
+++  v=p;
+++  massert(v->type==t_contiguous && p+v->in_use*PAGESIZE>x);
+++
+++  return p;
+++
++ }
+++  
+++/* inline struct pageinfo * */
+++/* get_pageinfo(void *x) { */
+++/*   struct pageinfo *v=contblock_list_head;void *vv; */
+++/*   for (;(vv=v) && (vv>=x || vv+v->in_use*PAGESIZE<=x);v=v->next); */
+++/*   return v; */
+++/* } */
++ 
++ inline char
++ get_bit(char *v,struct pageinfo *pi,void *x) {
++@@ -300,21 +356,6 @@ enter_mark_origin(object *p) {
++ 
++ }
++ 
++-inline void
++-mark_cons(object x) {
++-  
++-  do {
++-    object d=x->c.c_cdr;
++-    mark(x);
++-    mark_object(x->c.c_car);
++-    x=d;
++-    if (NULL_OR_ON_C_STACK(x) || is_marked_or_free(x))/*catches Cnil*/
++-      return;
++-  } while (cdr_listp(x));
++-  mark_object(x);
++-
++-}
++-
++ /* Whenever two arrays are linked together by displacement,
++    if one is live, the other will be made live */
++ #define mark_displaced_field(ar) mark_object(ar->a.a_displaced)
++@@ -336,27 +377,17 @@ mark_link_array(void *v,void *ve) {
++   if (NULL_OR_ON_C_STACK(v))
++     return;
++ 
++-  if (sLAlink_arrayA->s.s_dbind==Cnil)
+++  if (sSAlink_arrayA->s.s_dbind==Cnil)
++     return;
++ 
++-  p=(void *)sLAlink_arrayA->s.s_dbind->v.v_self;
++-  pe=(void *)p+sLAlink_arrayA->s.s_dbind->v.v_fillp;
++-
++-  if (is_marked(sLAlink_arrayA->s.s_dbind) && COLLECT_RELBLOCK_P
++-#ifdef SGC
++-      && (!sgc_enabled || SGC_RELBLOCK_P(sLAlink_arrayA->s.s_dbind->v.v_self))
++-#endif
++-      ) {
++-    fixnum j=rb_pointer1-rb_pointer;
++-    p=(void *)p+j;
++-    pe=(void *)pe+j;
++-  }
+++  p=(void *)sSAlink_arrayA->s.s_dbind->v.v_self;
+++  pe=(void *)p+sSAlink_arrayA->s.s_dbind->v.v_fillp;
++ 
++   for (;p<pe;p+=2)
++     if (*p>=v && *p<ve) {
++       massert(!LINK_ARRAY_MARKED(p));
++ #ifdef SGC
++-      if(!sgc_enabled || IS_WRITABLE(page(p)))
+++      if(!sgc_enabled || WRITABLE_PAGE_P(page(p)))
++ #endif
++      MARK_LINK_ARRAY(p);
++     }
++@@ -368,11 +399,11 @@ prune_link_array(void) {
++ 
++   void **p,**pe,**n,**ne;
++ 
++-  if (sLAlink_arrayA->s.s_dbind==Cnil)
+++  if (sSAlink_arrayA->s.s_dbind==Cnil)
++     return;
++ 
++-  ne=n=p=(void *)sLAlink_arrayA->s.s_dbind->v.v_self;
++-  pe=(void *)p+sLAlink_arrayA->s.s_dbind->v.v_fillp;
+++  ne=n=p=(void *)sSAlink_arrayA->s.s_dbind->v.v_self;
+++  pe=(void *)p+sSAlink_arrayA->s.s_dbind->v.v_fillp;
++ 
++   while (p<pe) {
++     if (*p) {
++@@ -382,7 +413,7 @@ prune_link_array(void) {
++       p+=2;
++   }
++ 
++-  sLAlink_arrayA->s.s_dbind->v.v_fillp=(ne-n)*sizeof(*n);
+++  sSAlink_arrayA->s.s_dbind->v.v_fillp=(ne-n)*sizeof(*n);
++ 
++ }
++ 
++@@ -392,11 +423,11 @@ sweep_link_array(void) {
++ 
++   void ***p,***pe;
++ 
++-  if (sLAlink_arrayA->s.s_dbind==Cnil)
+++  if (sSAlink_arrayA->s.s_dbind==Cnil)
++     return;
++ 
++-  p=(void *)sLAlink_arrayA->s.s_dbind->v.v_self;
++-  pe=(void *)p+sLAlink_arrayA->s.s_dbind->v.v_fillp;
+++  p=(void *)sSAlink_arrayA->s.s_dbind->v.v_self;
+++  pe=(void *)p+sSAlink_arrayA->s.s_dbind->v.v_fillp;
++   for (;p<pe;p+=2)
++     if (*p) {
++       if (LINK_ARRAY_MARKED(p))
++@@ -411,42 +442,120 @@ sweep_link_array(void) {
++ 
++ }
++ 
++-static void
++-mark_object(object x) {
++-  
++-  fixnum i,j;
++-  object *p;
++-  char *cp;
++-  enum type tp;
++-  
++- BEGIN:
++-  /* if the body of x is in the c stack, its elements
++-     are marked anyway by the c stack mark carefully, and
++-     if this x is somehow hanging around in a cons that
++-     should be dead, we dont want to mark it. -wfs
++-  */
+++DEFVAR("*LEAF-COLLECTION-THRESHOLD*",sSAleaf_collection_thresholdA,SI,make_fixnum(0),"");
+++
+++#define MARK_LEAF_DATA_ALIGNED(a_,b_,c_,d_) mark_leaf_data(a_,(void **)&b_,c_,d_)
+++#define MARK_LEAF_DATA(a_,b_,c_) MARK_LEAF_DATA_ALIGNED(a_,b_,c_,1)
+++
+++static inline bool
+++marking(void *p) {
+++  return (sgc_enabled ? ON_WRITABLE_PAGE_CACHED(p) : !NULL_OR_ON_C_STACK(p));
+++}
+++
+++static inline bool
+++collecting(void *p) {
+++  return (p<(void *)heap_end ? what_to_collect==t_contiguous : COLLECT_RELBLOCK_P);
+++}
+++
+++static ufixnum ngc_thresh;
+++static union {struct dummy d;ufixnum f;} rst={.f=-1};
+++/* static object lcv=Cnil; */
+++
+++static inline void
+++mark_leaf_data(object x,void **pp,ufixnum s,ufixnum r) {
+++
+++  void *p=*pp,*dp/* ,*dpe */;
++   
++-  if (NULL_OR_ON_C_STACK(x) || is_marked_or_free(x))
+++  if (!marking(p)||!collecting(p))
++     return;
++ 
++-  tp=type_of(x);
+++  /* if (lcv!=Cnil && !collecting(lcv->st.st_self) && */
+++  /*     (dp=PCEI(lcv->st.st_self,r)) && dp+s<=(dpe=lcv->st.st_self+lcv->st.st_dim) */
+++  /*     && x && x->d.st>=ngc_thresh) { */
+++
+++  if (what_to_collect!=t_contiguous && 
+++      x && x->d.st>=ngc_thresh &&
+++      (dp=alloc_contblock_no_gc(s))) {
+++    
+++    /* fprintf(stderr,"Promoting %p,%lu to %p\n",p,s,dp); */
+++    /* fflush(stderr); */
+++
+++    *pp=memcpy(dp,p,s);
+++    /* lcv->st.st_fillp=lcv->st.st_dim=(dpe-(void *)(lcv->st.st_self=dp+s)); */
+++    x->d.st=0;
++ 
++-  if (tp==t_cons) {
++-    mark_cons(x);
++     return;
+++
+++  } 
+++
+++  if (x && x->d.st<rst.d.st) x->d.st++;
+++
+++  if (p>=(void *)heap_end)
+++    *pp=(void *)copy_relblock(p,s);
+++  else
+++    mark_contblock(p,s);
+++
+++}
+++
+++static void mark_object1(object);
+++#define mark_object(x) if (marking(x)) mark_object1(x)
+++    
+++static inline void
+++mark_object_address(object *o,int f) {
+++
+++  static ufixnum lp;
+++  static ufixnum lr;
+++
+++  ufixnum p=page(o);
+++  
+++  if (lp!=p || !f) {
+++    lp=p;
+++    lr=sgc_enabled ? WRITABLE_PAGE_P(lp) : 1;
++   }
++ 
+++  if (lr)
+++    mark_object(*o);
+++
+++}
+++
+++static inline void
+++mark_object_array(object *o,object *oe) {
+++  int f=0;
+++
+++  if (o)
+++    for (;o<oe;o++,f=1)
+++      mark_object_address(o,f);
+++
+++}
+++
+++
+++static void
+++mark_object1(object x) {
+++  
+++  fixnum i,j=0;/*FIXME*/
+++
+++  if (is_marked_or_free(x))
+++    return;
+++
++   mark(x);
++ 
++-  switch (tp) {
+++  switch (type_of(x)) {
+++
+++  case t_cons:
+++    mark_object(x->c.c_car);
+++    mark_object(Scdr(x));/*FIXME*/
+++    break;
++ 
++   case t_fixnum:
++     break;
++     
+++  case t_bignum:
+++    MARK_LEAF_DATA(x,MP_SELF(x),MP_ALLOCATED(x)*MP_LIMB_SIZE);
+++    break;
+++
++   case t_ratio:
++     mark_object(x->rat.rat_num);
++-    x = x->rat.rat_den;
++-    goto BEGIN;
+++    mark_object(x->rat.rat_den);
++     
++   case t_shortfloat:
++     break;
++@@ -456,8 +565,7 @@ mark_object(object x) {
++     
++   case t_complex:
++     mark_object(x->cmp.cmp_imag);
++-    x = x->cmp.cmp_real;
++-    goto BEGIN;
+++    mark_object(x->cmp.cmp_real);
++     
++   case t_character:
++     break;
++@@ -466,13 +574,7 @@ mark_object(object x) {
++     mark_object(x->s.s_plist);
++     mark_object(x->s.s_gfdef);
++     mark_object(x->s.s_dbind);
++-    if (x->s.s_self == NULL)
++-      break;
++-    if (inheap(x->s.s_self)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock(x->s.s_self,x->s.s_fillp);
++-    } else if (COLLECT_RELBLOCK_P)
++-     x->s.s_self = copy_relblock(x->s.s_self, x->s.s_fillp);
+++    MARK_LEAF_DATA(x,x->s.s_self,x->s.s_fillp);
++     break;
++     
++   case t_package:
++@@ -481,197 +583,88 @@ mark_object(object x) {
++     mark_object(x->p.p_shadowings);
++     mark_object(x->p.p_uselist);
++     mark_object(x->p.p_usedbylist);
++-    if (what_to_collect != t_contiguous)
++-      break;
++-    if (x->p.p_internal != NULL)
++-      mark_contblock((char *)(x->p.p_internal),
++-                  x->p.p_internal_size*sizeof(object));
++-    if (x->p.p_external != NULL)
++-      mark_contblock((char *)(x->p.p_external),
++-                  x->p.p_external_size*sizeof(object));
+++    mark_object_array(x->p.p_internal,x->p.p_internal+x->p.p_internal_size);
+++    MARK_LEAF_DATA(x,x->p.p_internal,x->p.p_internal_size*sizeof(object));
+++    mark_object_array(x->p.p_external,x->p.p_external+x->p.p_external_size);
+++    MARK_LEAF_DATA(x,x->p.p_external,x->p.p_external_size*sizeof(object));
++     break;
++     
++   case t_hashtable:
++     mark_object(x->ht.ht_rhsize);
++     mark_object(x->ht.ht_rhthresh);
++-    if (x->ht.ht_self == NULL)
++-      break;
++-    for (i = 0, j = x->ht.ht_size;  i < j;  i++) {
++-      mark_object(x->ht.ht_self[i].hte_key);
++-      mark_object(x->ht.ht_self[i].hte_value);
++-    }
++-    if (inheap(x->ht.ht_self)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock((char *)x->ht.ht_self,j*sizeof(struct htent));
++-    } else if (COLLECT_RELBLOCK_P)
++-      x->ht.ht_self=(void *)copy_relblock((char *)x->ht.ht_self,j*sizeof(struct htent));;
+++    if (x->ht.ht_self)
+++      for (i=0;i<x->ht.ht_size;i++)
+++     if (x->ht.ht_self[i].hte_key!=OBJNULL) {
+++       mark_object_address(&x->ht.ht_self[i].hte_key,i);
+++       mark_object_address(&x->ht.ht_self[i].hte_value,i+1);
+++     }
+++    MARK_LEAF_DATA(x,x->ht.ht_self,x->ht.ht_size*sizeof(*x->ht.ht_self));
++     break;
++     
++   case t_array:
++-    if ((x->a.a_displaced) != Cnil)
++-      mark_displaced_field(x);
++-    if (x->a.a_dims != NULL) {
++-      if (inheap(x->a.a_dims)) {
++-     if (what_to_collect == t_contiguous)
++-       mark_contblock((char *)(x->a.a_dims),sizeof(int)*x->a.a_rank);
++-      } else if (COLLECT_RELBLOCK_P)
++-     x->a.a_dims = (int *) copy_relblock((char *)(x->a.a_dims),sizeof(int)*x->a.a_rank);
++-    }
++-    if ((enum aelttype)x->a.a_elttype == aet_ch)
++-      goto CASE_STRING;
++-    if ((enum aelttype)x->a.a_elttype == aet_bit)
++-      goto CASE_BITVECTOR;
++-    if ((enum aelttype)x->a.a_elttype == aet_object)
++-      goto CASE_GENERAL;
++-    
++-  CASE_SPECIAL:
++-    cp = (char *)(x->fixa.fixa_self);
++-    if (cp == NULL)
++-      break;
++-    /* set j to the size in char of the body of the array */
++-    
++-    switch((enum aelttype)x->a.a_elttype){
++-#define  ROUND_RB_POINTERS_DOUBLE \
++-{int tem =  ((long)rb_pointer1) & (sizeof(double)-1); \
++-   if (tem) \
++-     { rb_pointer +=  (sizeof(double) - tem); \
++-       rb_pointer1 +=  (sizeof(double) - tem); \
++-     }}
+++    MARK_LEAF_DATA(x,x->a.a_dims,sizeof(int)*x->a.a_rank);
+++
+++  case t_vector:
+++  case t_bitvector:
+++
+++    switch(j ? j : (enum aelttype)x->v.v_elttype) {
+++
++     case aet_lf:
++-      j= sizeof(longfloat)*x->lfa.lfa_dim;
++-      if ((COLLECT_RELBLOCK_P) &&  !(inheap(cp)))
++-     ROUND_RB_POINTERS_DOUBLE;/*FIXME gc space violation*/
+++      j= sizeof(longfloat)*x->v.v_dim;
+++      if ((COLLECT_RELBLOCK_P) &&  (void *)x->v.v_self>=(void *)heap_end)
+++     rb_pointer=PCEI(rb_pointer,sizeof(double));             /*FIXME GC space violation*/
++       break;
+++
+++    case aet_bit:
+++#define W_SIZE (8*sizeof(fixnum))
+++      j= sizeof(fixnum)*((BV_OFFSET(x) + x->bv.bv_dim + W_SIZE -1)/W_SIZE);
+++      break;
+++
++     case aet_char:
++     case aet_uchar:
++-      j=sizeof(char)*x->a.a_dim;
+++      j=sizeof(char)*x->v.v_dim;
++       break;
+++
++     case aet_short:
++     case aet_ushort:
++-      j=sizeof(short)*x->a.a_dim;
+++      j=sizeof(short)*x->v.v_dim;
++       break;
+++
+++    case aet_object:
+++      if (x->v.v_displaced->c.c_car==Cnil)
+++     mark_object_array(x->v.v_self,x->v.v_self+x->v.v_dim);
+++
++     default:
++-      j=sizeof(fixnum)*x->fixa.fixa_dim;}
++-    
++-    goto COPY;
++-    
++-  CASE_GENERAL:
++-    p = x->a.a_self;
++-    if (p == NULL
++-#ifdef HAVE_ALLOCA
++-     || (char *)p >= core_end
++-#endif  
++-     )
++-      break;
++-    j=0;
++-    if (x->a.a_displaced->c.c_car == Cnil)
++-      for (i = 0, j = x->a.a_dim;  i < j;  i++)
++-     mark_object(p[i]);
++-    cp = (char *)p;
++-    j *= sizeof(object);
++-  COPY:
++-    if (inheap(cp)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock(cp, j);
++-    } else if (COLLECT_RELBLOCK_P) {
++-      if (x->a.a_displaced == Cnil) {
++-#ifdef HAVE_ALLOCA
++-     if (!NULL_OR_ON_C_STACK(cp))  /* only if body of array not on C stack */
++-#endif                         
++-       x->a.a_self = (object *)copy_relblock(cp, j);
++-      } else if (x->a.a_displaced->c.c_car == Cnil) {
++-     i = (long)(object *)copy_relblock(cp, j)  - (long)(x->a.a_self);
++-     adjust_displaced(x, i);
++-      }
+++      j=sizeof(fixnum)*x->v.v_dim;
+++
++     }
++-    break;
++-    
++-  case t_vector:
++-    if ((x->v.v_displaced) != Cnil)
++-      mark_displaced_field(x);
++-    if ((enum aelttype)x->v.v_elttype == aet_object)
++-      goto CASE_GENERAL;
++-    else
++-      goto CASE_SPECIAL;
++-    
++-  case t_bignum:
++-#ifndef GMP_USE_MALLOC
++-    if ((int)what_to_collect >= (int)t_contiguous) {
++-      j = MP_ALLOCATED(x);
++-      cp = (char *)MP_SELF(x);
++-      if (cp == 0)
++-     break;
++-#ifdef PARI
++-      if (j != lg(MP(x))  &&
++-       /* we don't bother to zero this register,
++-          and its contents may get over written */
++-       ! (x == big_register_1 &&
++-          (int)(cp) <= top &&
++-          (int) cp >= bot))
++-     printf("bad length 0x%x ",x);
++-#endif
++-      j = j * MP_LIMB_SIZE;
++-      if (inheap(cp)) {
++-     if (what_to_collect == t_contiguous)
++-       mark_contblock(cp, j);
++-      } else if (COLLECT_RELBLOCK_P) {
++-     MP_SELF(x) = (void *) copy_relblock(cp, j);}}
++-#endif /* not GMP_USE_MALLOC */
++-    break;
++-    
++-  CASE_STRING:
++-  case t_string:
++-    if ((x->st.st_displaced) != Cnil)
++-      mark_displaced_field(x);
++-    j = x->st.st_dim;
++-    cp = x->st.st_self;
++-    if (cp == NULL)
++-      break;
++-  COPY_STRING:
++-    if (inheap(cp)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock(cp, j);
++-    } else if (COLLECT_RELBLOCK_P) {
++-      if (x->st.st_displaced == Cnil)
++-     x->st.st_self = copy_relblock(cp, j);
++-      else if (x->st.st_displaced->c.c_car == Cnil) {
++-     i = copy_relblock(cp, j) - cp;
++-     adjust_displaced(x, i);
+++
+++  case t_string:/*FIXME*/
+++    j=j ? j : x->st.st_dim;
+++
+++    if (x->v.v_displaced->c.c_car==Cnil) {
+++      void *p=x->v.v_self;
+++      MARK_LEAF_DATA(x,x->v.v_self,j);
+++      if (x->v.v_displaced!=Cnil) {
+++     j=(void *)x->v.v_self-p;
+++     x->v.v_self=p;
+++     adjust_displaced(x,j);
++       }
++-    }
+++    } 
+++    mark_object(x->v.v_displaced);
++     break;
++     
++-  CASE_BITVECTOR:
++-  case t_bitvector:
++-    if ((x->bv.bv_displaced) != Cnil)
++-      mark_displaced_field(x);
++-    /* We make bitvectors multiple of sizeof(int) in size allocated
++-       Assume 8 = number of bits in char */
++-    
++-#define W_SIZE (8*sizeof(fixnum))
++-    j= sizeof(fixnum) *
++-      ((BV_OFFSET(x) + x->bv.bv_dim + W_SIZE -1)/W_SIZE);
++-    cp = x->bv.bv_self;
++-    if (cp == NULL)
++-      break;
++-    goto COPY_STRING;
++-    
++   case t_structure:
++-    mark_object(x->str.str_def);
++-    p = x->str.str_self;
++-    if (p == NULL)
++-      break;
++     {
++       object def=x->str.str_def;
++-      unsigned char * s_type = &SLOT_TYPE(def,0);
++-      unsigned short *s_pos= & SLOT_POS(def,0);
++-      for (i = 0, j = S_DATA(def)->length;  i < j;  i++)
++-     if (s_type[i]==0) mark_object(STREF(object,x,s_pos[i]));
++-      if (inheap(x->str.str_self)) {
++-     if (what_to_collect == t_contiguous)
++-       mark_contblock((char *)p,S_DATA(def)->size);
++-      } else if (COLLECT_RELBLOCK_P)
++-     x->str.str_self = (object *)copy_relblock((char *)p, S_DATA(def)->size);
+++      unsigned char *s_type= &SLOT_TYPE(def,0);
+++      unsigned short *s_pos= &SLOT_POS(def,0);
+++      mark_object(x->str.str_def);
+++      if (x->str.str_self)
+++     for (i=0,j=S_DATA(def)->length;i<j;i++)
+++       if (s_type[i]==0)
+++         mark_object_address(&STREF(object,x,s_pos[i]),i);
+++      MARK_LEAF_DATA(x,x->str.str_self,S_DATA(def)->size);
++     }
++     break;
++     
++@@ -684,12 +677,11 @@ mark_object(object x) {
++     case smm_probe:
++       mark_object(x->sm.sm_object0);
++       mark_object(x->sm.sm_object1);
++-      if (what_to_collect == t_contiguous &&
++-       x->sm.sm_fp &&
++-       x->sm.sm_buffer)
++-     mark_contblock(x->sm.sm_buffer, BUFSIZ);
+++      if (x->sm.sm_fp) {
+++     MARK_LEAF_DATA(x,x->sm.sm_buffer,BUFSIZ);
+++      }
++       break;
++-      
+++    
++     case smm_synonym:
++       mark_object(x->sm.sm_object0);
++       break;
++@@ -720,44 +712,20 @@ mark_object(object x) {
++     }
++     break;
++     
++-#define MARK_CP(a_,b_) {fixnum _t=(b_);if (inheap(a_)) {\
++-     if (what_to_collect == t_contiguous) mark_contblock((void *)(a_),_t); \
++-      } else if (COLLECT_RELBLOCK_P) (a_)=(void *)copy_relblock((void *)(a_),_t);}
++-
++-#define MARK_MP(a_) {if ((a_)->_mp_d) \
++-                        MARK_CP((a_)->_mp_d,(a_)->_mp_alloc*MP_LIMB_SIZE);}
++-
++   case t_random:
++-    if ((int)what_to_collect >= (int)t_contiguous) {
++-      MARK_MP(x->rnd.rnd_state._mp_seed);
++-#if __GNU_MP_VERSION < 4 || (__GNU_MP_VERSION  == 4 && __GNU_MP_VERSION_MINOR < 2)
++-      if (x->rnd.rnd_state._mp_algdata._mp_lc) {
++-     MARK_MP(x->rnd.rnd_state._mp_algdata._mp_lc->_mp_a);
++-     if (!x->rnd.rnd_state._mp_algdata._mp_lc->_mp_m2exp) MARK_MP(x->rnd.rnd_state._mp_algdata._mp_lc->_mp_m);
++-     MARK_CP(x->rnd.rnd_state._mp_algdata._mp_lc,sizeof(*x->rnd.rnd_state._mp_algdata._mp_lc));
++-      }
++-#endif
++-    }
+++    MARK_LEAF_DATA_ALIGNED(x,x->rnd.rnd_state._mp_seed->_mp_d,x->rnd.rnd_state._mp_seed->_mp_alloc*MP_LIMB_SIZE,MP_LIMB_SIZE);
++     break;
++     
++   case t_readtable:
++-    if (x->rt.rt_self == NULL)
++-      break;
++-    if (what_to_collect == t_contiguous)
++-      mark_contblock((char *)(x->rt.rt_self),
++-                  RTABSIZE*sizeof(struct rtent));
++-    for (i = 0;  i < RTABSIZE;  i++) {
++-      mark_object(x->rt.rt_self[i].rte_macro);
++-      if (x->rt.rt_self[i].rte_dtab != NULL) {
++-     /**/
++-     if (what_to_collect == t_contiguous)
++-       mark_contblock((char *)(x->rt.rt_self[i].rte_dtab),
++-                      RTABSIZE*sizeof(object));
++-     for (j = 0;  j < RTABSIZE;  j++)
++-       mark_object(x->rt.rt_self[i].rte_dtab[j]);
++-     /**/
+++    if (x->rt.rt_self) {
+++      for (i=0;i<RTABSIZE;i++)
+++     mark_object_address(&x->rt.rt_self[i].rte_macro,i);
+++      for (i=0;i<RTABSIZE;i++) {
+++     mark_object_array(x->rt.rt_self[i].rte_dtab,x->rt.rt_self[i].rte_dtab+RTABSIZE);
+++     MARK_LEAF_DATA(x,x->rt.rt_self[i].rte_dtab,RTABSIZE*sizeof(object));
++       }
++     }
+++    MARK_LEAF_DATA(x,x->rt.rt_self,RTABSIZE*sizeof(struct rtent));
++     break;
++     
++   case t_pathname:
++@@ -770,13 +738,8 @@ mark_object(object x) {
++     break;
++     
++   case t_closure:
++-    { 
++-      int i ;
++-      for (i= 0 ; i < x->cl.cl_envdim ; i++)
++-     mark_object(x->cl.cl_env[i]);
++-      if (COLLECT_RELBLOCK_P)
++-     x->cl.cl_env=(void *)copy_relblock((void *)x->cl.cl_env,x->cl.cl_envdim*sizeof(object));
++-    }
+++    mark_object_array(x->cl.cl_env,x->cl.cl_env+x->cl.cl_envdim);
+++    MARK_LEAF_DATA(x,x->cl.cl_env,x->cl.cl_envdim*sizeof(object));
++     
++   case t_cfun:
++   case t_sfun:
++@@ -789,48 +752,40 @@ mark_object(object x) {
++     
++   case t_cfdata:
++     
++-    if (x->cfd.cfd_self != NULL)
++-      {int i=x->cfd.cfd_fillp;
++-      while(i-- > 0)
++-     mark_object(x->cfd.cfd_self[i]);}
++-    if (what_to_collect == t_contiguous) {
++-      mark_contblock(x->cfd.cfd_start, x->cfd.cfd_size);
+++    mark_object_array(x->cfd.cfd_self,x->cfd.cfd_self+x->cfd.cfd_fillp);
+++    if (what_to_collect == t_contiguous)
++       mark_link_array(x->cfd.cfd_start,x->cfd.cfd_start+x->cfd.cfd_size);
++-    }
+++    MARK_LEAF_DATA(NULL,x->cfd.cfd_start,x->cfd.cfd_size);/*Code cannot move*/
++     break;
++-  case t_cclosure:
+++
+++ case t_cclosure:
++     mark_object(x->cc.cc_name);
++     mark_object(x->cc.cc_env);
++     mark_object(x->cc.cc_data);
++-    if (x->cc.cc_turbo!=NULL) {
++-      mark_object(*(x->cc.cc_turbo-1));
++-      if (COLLECT_RELBLOCK_P)
++-     x->cc.cc_turbo=(void *)copy_relblock((char *)(x->cc.cc_turbo-1),(1+fix(*(x->cc.cc_turbo-1)))*sizeof(object))+sizeof(object);
+++    if (x->cc.cc_turbo) {
+++      x->cc.cc_turbo--;
+++      mark_object_array(x->cc.cc_turbo,x->cc.cc_turbo+fix(x->cc.cc_turbo[0]));
+++      MARK_LEAF_DATA(x,x->cc.cc_turbo,(1+fix(x->cc.cc_turbo[0]))*sizeof(*x->cc.cc_turbo));
+++      x->cc.cc_turbo++;
++     }
++     break;
++     
++   case t_spice:
++     break;
++-  default:
+++
+++ default:
++ #ifdef DEBUG
++     if (debug)
++       printf("\ttype = %d\n", type_of(x));
++ #endif
++     error("mark botch");
+++
++   }
+++
++ }
++ 
++ static long *c_stack_where;
++ 
++-void **contblock_stack_list=NULL;
++-
++-#define PAGEINFO_P(pi) (pi->magic==PAGE_MAGIC && pi->type<=t_contiguous)
++-
++-#ifdef SGC
++-static void
++-sgc_mark_object1(object);
++-#endif
++-
++ static void
++ mark_stack_carefully(void *topv, void *bottomv, int offset) {
++ 
++@@ -865,10 +820,9 @@ mark_stack_carefully(void *topv, void *b
++     
++     pageoffset=v-(void *)pagetochar(p);
++     pi=pagetoinfo(p);
++-    if (!PAGEINFO_P(pi)) continue;
+++    if (!pageinfo_p(pi)) continue;
++     
++-    for (a=contblock_stack_list;a && a[0]!=pi;a=a[1]);
++-    if (a) continue;
+++    if ((a=contblock_stack_list) && in_contblock_stack_list(pi,&a)) continue;
++ 
++     tm=tm_of(pi->type);
++     if (tm->tm_type>=t_end) continue;
++@@ -879,13 +833,10 @@ mark_stack_carefully(void *topv, void *b
++ 
++     if (is_marked_or_free(x)) continue;
++ 
++-#ifdef SGC
++-    if (sgc_enabled)
++-      sgc_mark_object(x);
++-    else
++-#endif
++-      mark_object(x);
+++    mark_object(x);
+++
++   }
+++
++ }
++ 
++ 
++@@ -930,10 +881,6 @@ mark_phase(void) {
++   
++   for (pp = pack_pointer;  pp != NULL;  pp = pp->p_link)
++     mark_object((object)pp);
++-#ifdef KCLOVM
++-  if (ovm_process_created)
++-    mark_all_stacks();
++-#endif
++   
++ #ifdef DEBUG
++   if (debug) {
++@@ -947,18 +894,18 @@ mark_phase(void) {
++     (int)what_to_collect < (int)t_contiguous) {
++   */
++   
++-  {int size;
+++  /* {int size; */
++   
++-  for (pp = pack_pointer;  pp != NULL;  pp = pp->p_link) {
++-    size = pp->p_internal_size;
++-    if (pp->p_internal != NULL)
++-      for (i = 0;  i < size;  i++)
++-     mark_object(pp->p_internal[i]);
++-    size = pp->p_external_size;
++-    if (pp->p_external != NULL)
++-      for (i = 0;  i < size;  i++)
++-     mark_object(pp->p_external[i]);
++-  }}
+++  /* for (pp = pack_pointer;  pp != NULL;  pp = pp->p_link) { */
+++  /*   size = pp->p_internal_size; */
+++  /*   if (pp->p_internal != NULL) */
+++  /*     for (i = 0;  i < size;  i++) */
+++  /*         mark_object(pp->p_internal[i]); */
+++  /*   size = pp->p_external_size; */
+++  /*   if (pp->p_external != NULL) */
+++  /*     for (i = 0;  i < size;  i++) */
+++  /*         mark_object(pp->p_external[i]); */
+++  /* }} */
++   
++   /* mark the c stack */
++ #ifndef N_RECURSION_REQD
++@@ -1055,42 +1002,27 @@ mark_c_stack(jmp_buf env1, int n, void (
++ #ifndef C_GC_OFFSET
++ #define C_GC_OFFSET 0
++ #endif
++-    {
++-      struct pageinfo *v,*tv;void **a;
++-      fixnum i;
++-      for (v=contblock_list_head,contblock_stack_list=NULL;v;v=v->next)
++-     for (i=1;i<v->in_use;i++) {
++-       tv=pagetoinfo(page(v)+i);
++-       if (PAGEINFO_P(tv)) {
++-         a=contblock_stack_list;
++-         /* printf("%p\n",tv); */
++-         contblock_stack_list=alloca(2*sizeof(a));
++-         contblock_stack_list[0]=tv;
++-         contblock_stack_list[1]=a;
++-       }}
++-
++-      if (&where > cs_org)
++-     (*fn)(0,cs_org,C_GC_OFFSET);
++-      else
++-     (*fn)(cs_org,0,C_GC_OFFSET);
+++    if (&where > cs_org)
+++      (*fn)(0,cs_org,C_GC_OFFSET);
+++    else
+++      (*fn)(cs_org,0,C_GC_OFFSET);
++ 
++-      contblock_stack_list=NULL;
++-    }}
+++  }
++   
++ #if defined(__ia64__)
++-    {
++-       extern void * __libc_ia64_register_backing_store_base;
++-       void * bst=GC_save_regs_in_stack();
++-       void * bsb=__libc_ia64_register_backing_store_base;
++-
++-       if (bsb>bst)
++-          (*fn)(bsb,bst,C_GC_OFFSET);
++-       else
++-          (*fn)(bst,bsb,C_GC_OFFSET);
++-       
++-    }
+++  {
+++    extern void * __libc_ia64_register_backing_store_base;
+++    void * bst=GC_save_regs_in_stack();
+++    void * bsb=__libc_ia64_register_backing_store_base;
+++    
+++    if (bsb>bst)
+++      (*fn)(bsb,bst,C_GC_OFFSET);
+++    else
+++      (*fn)(bst,bsb,C_GC_OFFSET);
+++    
+++  }
++ #endif
++-
+++  
++ }
++ 
++ static void
++@@ -1136,12 +1068,10 @@ static void
++ contblock_sweep_phase(void) {
++ 
++   STATIC char *s, *e, *p, *q;
++-  STATIC struct contblock *cbp;
++   STATIC struct pageinfo *v;
+++    
+++  reset_contblock_freelist();
++   
++-  cb_pointer = NULL;
++-  ncb = 0;
++-
++   for (v=contblock_list_head;v;v=v->next) {
++     bool z;
++ 
++@@ -1163,7 +1093,7 @@ contblock_sweep_phase(void) {
++ #ifdef DEBUG
++   if (debug) {
++     for (cbp = cb_pointer; cbp != NULL; cbp = cbp->cb_link)
++-      printf("%d-byte contblock\n", cbp->cb_size);
+++      printf("%lud-byte contblock\n", cbp->cb_size);
++     fflush(stdout);
++   }
++ #endif
++@@ -1175,7 +1105,6 @@ contblock_sweep_phase(void) {
++ 
++ int (*GBC_enter_hook)() = NULL;
++ int (*GBC_exit_hook)() = NULL;
++-char *old_rb_start;
++ 
++ /* void */
++ /* ttss(void) { */
++@@ -1201,10 +1130,6 @@ fixnum fault_pages=0;
++ void
++ GBC(enum type t) {
++ 
++-  long i,j;
++-#ifdef SGC
++-  int in_sgc = sgc_enabled;
++-#endif
++ #ifdef DEBUG
++   int tm=0;
++ #endif
++@@ -1216,6 +1141,26 @@ GBC(enum type t) {
++     t=t_contiguous;
++   }
++ 
+++  ngc_thresh=fix(sSAleaf_collection_thresholdA->s.s_dbind);
+++
+++  { /*FIXME try to get this below the setjmp in mark_c_stack*/
+++    struct pageinfo *v,*tv;
+++    ufixnum i;
+++    void *a;
+++    
+++    for (v=contblock_list_head,contblock_stack_list=NULL;v;v=v->next)
+++      for (i=1;i<v->in_use;i++) {
+++     tv=pagetoinfo(page(v)+i);
+++     if (pageinfo_p(tv)) {
+++       a=contblock_stack_list;
+++       /* fprintf(stderr,"pushing %p\n",tv); */
+++       contblock_stack_list=alloca(2*sizeof(a));
+++       contblock_stack_list[0]=tv;
+++       contblock_stack_list[1]=a;
+++     }
+++      }
+++  }
+++  
++   if (in_signal_handler && t == t_relocatable)
++     error("cant gc relocatable in signal handler");
++   
++@@ -1241,10 +1186,8 @@ GBC(enum type t) {
++          close_stream(o);
++      }
++ 
++-    t = t_relocatable; gc_time = -1;
++-#ifdef SGC
++-    if(sgc_enabled) sgc_quit();
++-#endif    
+++    /* t = t_relocatable; */
+++    gc_time = -1;
++     }
++ 
++ 
++@@ -1257,10 +1200,15 @@ GBC(enum type t) {
++   tm_table[(int)t].tm_gbccount++;
++   tm_table[(int)t].tm_adjgbccnt++;
++   
+++  if (sSAnotify_gbcA->s.s_dbind != Cnil
++ #ifdef DEBUG
++-  if (debug || (sSAnotify_gbcA->s.s_dbind != Cnil)) {
++-    
++-    if (gc_time < 0) gc_time=0;
+++      || debug
+++#endif
+++      ) {
+++
+++    if (gc_time < 0)
+++      gc_time=0;
+++
++ #ifdef SGC
++     printf("[%s for %ld %s pages..",
++         (sgc_enabled ? "SGC" : "GC"),
++@@ -1272,48 +1220,33 @@ GBC(enum type t) {
++         (tm_of(t)->tm_npage),
++         (tm_table[(int)t].tm_name)+1);
++ #endif
+++
++ #ifdef SGC
++     if(sgc_enabled)
++-      printf("(%ld faulted pages, %ld writable, %ld read only)..",fault_pages,sgc_count_writable(),
++-          (page(core_end)-first_data_page)-(page(old_rb_start)-page(heap_end))-sgc_count_writable());
+++      printf("(%ld faulted pages, %ld writable, %ld read only)..",
+++          fault_pages,(page(core_end)-first_data_page)-(page(rb_start)-page(heap_end))-sgc_count_read_only(),
+++          sgc_count_read_only());
++ #endif         
+++
++     fflush(stdout);
+++
++   }
++-#endif
+++
++   if (gc_time >=0 && !gc_recursive++) {gc_start=runtime();}
++   
++-  /* maxpage = page(heap_end); */
++-  
++   if (COLLECT_RELBLOCK_P) {
++ 
++-    i=rb_pointer-REAL_RB_START+PAGESIZE;/*FIXME*/
++-
++-#ifdef SGC
++-    if (sgc_enabled==0)
++-#endif
++-      rb_start = heap_end + PAGESIZE*holepage;
+++    char *new_start=heap_end+holepage*PAGESIZE,*new_end=new_start+nrbpage*PAGESIZE;
++     
++-    rb_end = heap_end + (holepage + nrbpage) *PAGESIZE;
++-    
++-    if (rb_start < rb_pointer)
++-      rb_start1 = (char *)
++-     ((long)(rb_pointer + PAGESIZE-1) & -(unsigned long)PAGESIZE);
++-    else
++-      rb_start1 = rb_start;
++-    
++-    /* as we walk through marking data, we replace the
++-       relocatable pointers
++-       in objects by the rb_pointer, advance that
++-       by the size, and copy the actual
++-       data there to rb_pointer1, and advance it by the size
++-       at the end [rb_start1,rb_pointer1] is copied
++-       to [rb_start,rb_pointer]
++-    */
++-    rb_pointer = rb_start;  /* where the new relblock will start */
++-    rb_pointer1 = rb_start1;/* where we will copy it to during gc*/
++-    
++-    i = (rb_end < (rb_start1 + i) ? (rb_start1 + i) : rb_end) - heap_end;
++-    alloc_page(-(i + PAGESIZE - 1)/PAGESIZE);
+++    if (new_start!=rb_start) {
+++      rb_pointer=new_start;
+++      rb_limit=new_end;
+++    } else {
+++      rb_pointer=(rb_pointer<rb_end) ? rb_end : rb_start;
+++      rb_limit=rb_pointer+(new_end-new_start);
+++    }
+++
+++    alloc_page(-(holepage+2*nrbpage));
++     
++   }
++   
++@@ -1326,14 +1259,7 @@ GBC(enum type t) {
++ #endif
++ #ifdef SGC
++   if(sgc_enabled)
++-    { if (t < t_end && tm_of(t)->tm_sgc == 0)
++-      {sgc_quit();
++-      if (sSAnotify_gbcA->s.s_dbind != Cnil)
++-     {fprintf(stdout, " (doing full gc)");
++-     fflush(stdout);}
++-      mark_phase();}
++-    else
++-      sgc_mark_phase();}
+++    sgc_mark_phase();
++   else
++ #endif       
++     mark_phase();
++@@ -1365,27 +1291,16 @@ GBC(enum type t) {
++ #endif
++   
++   if (COLLECT_RELBLOCK_P) {
+++
+++    rb_start = heap_end + PAGESIZE*holepage;
+++    rb_end = heap_end + (holepage + nrbpage) *PAGESIZE;
++     
++-    if (rb_start < rb_start1) {
++-      j = (rb_pointer-rb_start + PAGESIZE - 1)/PAGESIZE;
++-      memmove(rb_start,rb_start1,j*PAGESIZE);
++-    }
++-    
+++
++ #ifdef SGC
++     if (sgc_enabled)
++       wrimap=(void *)sSAwritableA->s.s_dbind->v.v_self;
++ #endif
++ 
++-#ifdef SGC
++-    /* we don't know which pages have relblock on them */
++-    if(sgc_enabled) {
++-      fixnum i;
++-      for (i=page(rb_start);i<page(rb_pointer+PAGESIZE-1);i++)
++-     massert(IS_WRITABLE(i));
++-    }    
++-#endif               
++-    rb_limit = rb_end - 2*RB_GETA;
++-    
++   }
++ 
++   if (t == t_contiguous) {
++@@ -1410,6 +1325,54 @@ GBC(enum type t) {
++ #endif
++   }
++   
+++
+++/*   { */
+++/*     static int promoting; */
+++/*     if (!promoting && promotion_pointer>promotion_pointer1) { */
+++/*       object *p,st; */
+++/*       promoting=1; */
+++/*       st=alloc_simple_string(""); */
+++/*       for (p=promotion_pointer1;p<promotion_pointer;p++) { */
+++/*   fixnum j; */
+++/*   object x=*p; */
+++     
+++/*   if (type_of(x)==t_string) */
+++
+++/*     j=x->st.st_dim; */
+++
+++/*   else switch (x->v.v_elttype) { */
+++
+++/*     case aet_lf: */
+++/*       j=sizeof(longfloat)*x->v.v_dim; */
+++/*       break; */
+++/*     case aet_bit: */
+++/* #define W_SIZE (8*sizeof(fixnum)) */
+++/*       j=sizeof(fixnum)*((BV_OFFSET(x) + x->bv.bv_dim + W_SIZE -1)/W_SIZE); */
+++/*       break; */
+++/*     case aet_char: */
+++/*     case aet_uchar: */
+++/*       j=sizeof(char)*x->v.v_dim; */
+++/*       break; */
+++/*     case aet_short: */
+++/*     case aet_ushort: */
+++/*       j=sizeof(short)*x->v.v_dim; */
+++/*       break; */
+++/*     default: */
+++/*       j=sizeof(fixnum)*x->v.v_dim; */
+++/*     } */
+++
+++/*   st->st.st_dim=j; */
+++/*   st->st.st_self=alloc_contblock(st->st.st_dim); */
+++/*   fprintf(stderr,"Promoting vector leaf bytes %lu at %p, %p -> %p\n",j,x,x->v.v_self,st->st.st_self); */
+++/*   fflush(stderr); */
+++/*   memcpy(st->st.st_self,x->v.v_self,st->st.st_dim); */
+++/*   x->v.v_self=(void *)st->st.st_self; */
+++/*       } */
+++/*       promoting=0; */
+++/*     } */
+++/*   } */
+++     
+++
++ #ifdef DEBUG
++   if (debug) {
++     for (i = 0, j = 0;  i < (int)t_end;  i++) {
++@@ -1437,11 +1400,6 @@ GBC(enum type t) {
++   
++   interrupt_enable = TRUE;
++   
++-#ifdef SGC
++-  if (in_sgc && sgc_enabled==0)
++-    sgc_start();
++-#endif
++-  
++   if (GBC_exit_hook != NULL)
++     (*GBC_exit_hook)();
++   
++@@ -1468,6 +1426,23 @@ GBC(enum type t) {
++     
++   }
++ 
+++  /* {static int mv; */
+++  /*   if (!mv  && COLLECT_RELBLOCK_P) { */
+++  /*     mv=1; */
+++  /*     if (relb_copied) { */
+++  /*         sSAstatic_promotion_areaA->s.s_dbind=(VFUN_NARGS=4,fSmake_vector1(make_fixnum(relb_copied),make_fixnum(aet_char),Ct,make_fixnum(0))); */
+++  /*         fprintf(stderr,"Making static promotion area %lu bytes\n",relb_copied); */
+++  /*         fflush(stderr); */
+++  /*         relb_copied=0; */
+++  /*     } else { */
+++  /*         fprintf(stderr,"Releasing static promotion area\n"); */
+++  /*         fflush(stderr); */
+++  /*         sSAstatic_promotion_areaA->s.s_dbind=Cnil; */
+++  /*     } */
+++  /*     mv=0; */
+++  /*   } */
+++  /* } */
+++
++   collect_both=0;
++ 
++   END_NO_INTERRUPT;
++@@ -1524,11 +1499,16 @@ FFN(siLroom_report)(void) {
++   vs_push(make_fixnum(available_pages));
++   vs_push(make_fixnum(ncbpage));
++   vs_push(make_fixnum(maxcbpage));
++-  vs_push(make_fixnum(ncb));
+++  {
+++    ufixnum ncb;
+++    struct contblock *cbp;
+++    for (ncb=0,cbp=cb_pointer;cbp;cbp=cbp->cb_link,ncb++);
+++    vs_push(make_fixnum(ncb));
+++  }
++   vs_push(make_fixnum(cbgbccount));
++   vs_push(make_fixnum(holepage));
++-  vs_push(make_fixnum(rb_pointer - rb_start));
++-  vs_push(make_fixnum(rb_end - rb_pointer));
+++  vs_push(make_fixnum(rb_pointer - (rb_pointer<rb_end ? rb_start : rb_end)));
+++  vs_push(make_fixnum((rb_pointer<rb_end ? rb_end : (rb_end+(rb_end-rb_start))) - rb_pointer));
++   vs_push(make_fixnum(nrbpage));
++   vs_push(make_fixnum(maxrbpage));
++   vs_push(make_fixnum(rbgbccount));
++@@ -1567,18 +1547,15 @@ FFN(siLreset_gbc_count)(void) {
++ */
++ 
++ static char *
++-copy_relblock(char *p, int s)
++-{ char *res = rb_pointer;
++- char *q = rb_pointer1;
++- s = ROUND_UP_PTR(s);
+++copy_relblock(char *p, int s) {
+++ char *q = rb_pointer;
+++
+++ s = CEI(s,PTR_ALIGN);
++  rb_pointer += s;
++- rb_pointer1 += s;
++- 
++- memmove(q,p,s);
++- /* while (--s >= 0) */
++- /*   { *q++ = *p++;} */
++- 
++- return res;
+++ memmove(q,p,s);/*FIXME memcpy*/
+++
+++ return q;
+++
++ }
++ 
++ 
++@@ -1595,18 +1572,124 @@ mark_contblock(void *p, int s) {
++   q = p + s;
++   /* SGC cont pages: contblock pages must be no smaller than
++      sizeof(struct contblock).  CM 20030827 */
++-  x = (char *)ROUND_DOWN_PTR_CONT(p);
++-  y = (char *)ROUND_UP_PTR_CONT(q);
+++  x = (char *)PFLR(p,CPTR_SIZE);
+++  y = (char *)PCEI(q,CPTR_SIZE);
++   v=get_pageinfo(x);
++ #ifdef SGC
++   if (!sgc_enabled || (v->sgc_flags&SGC_PAGE_FLAG))
++ #endif
++-    set_mark_bits(v,x,y);
+++     set_mark_bits(v,x,y);
+++ }
+++ 
+++DEFUN_NEW("CONTIGUOUS-REPORT",object,fScontiguous_report,SI,1,1,NONE,OO,OO,OO,OO,(void),"") {
+++  
+++  struct contblock **cbpp;
+++  struct pageinfo *v;
+++  ufixnum i,j,k,s;
+++  struct typemanager *tm=tm_of(t_cfdata);
+++  void *p;
+++  
+++  for (i=j=0,cbpp=&cb_pointer;(*cbpp);) {
+++    for (k=0,s=(*cbpp)->cb_size,p=*cbpp;*cbpp && (*cbpp)->cb_size==s;i+=(*cbpp)->cb_size,j++,k++,cbpp=&(*cbpp)->cb_link);
+++    fprintf(stderr,"%lu %lu starting at %p\n",k,s,p);
+++  }
+++  fprintf(stderr,"\nTotal free %lu in %lu pieces\n\n",i,j);
+++  
+++  for (i=j=0,v=contblock_list_head;v;i+=v->in_use,j++,v=v->next) 
+++    fprintf(stderr,"%lu pages at %p\n",(unsigned long)v->in_use,v);
+++  fprintf(stderr,"\nTotal pages %lu in %lu pieces\n\n",i,j);
+++  
+++  for (i=j=0,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) {
+++       fprintf(stderr,"%lu code bytes at %p\n",(unsigned long)o->cfd.cfd_size,o->cfd.cfd_start);
+++       i+=o->cfd.cfd_size;
+++       j++;
+++     }
+++      }
+++    }
+++  fprintf(stderr,"\nTotal code bytes %lu in %lu pieces\n",i,j);
+++  
+++  for (i=j=0,v=cell_list_head;v;v=v->next) {
+++    struct typemanager *tm=tm_of(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;
+++      void *d=NULL;
+++      ufixnum s=0;
+++      if (!is_free(o)) {
+++     switch (type_of(o)) {
+++     case t_array:
+++     case t_vector:
+++       d=o->a.a_self;
+++       s=o->a.a_dim*sizeof(object);
+++       break;
+++     case t_hashtable:
+++       d=o->ht.ht_self;
+++       s=o->ht.ht_size*sizeof(object)*2;
+++       break;
+++     case t_symbol:
+++       d=o->s.s_self;
+++       s=o->s.s_fillp;
+++       break;
+++     case t_string:
+++     case t_bitvector:
+++       d=o->a.a_self;
+++       s=o->a.a_dim;
+++       break;
+++     case t_package:
+++       d=o->p.p_external;
+++       s=(o->p.p_external_size+o->p.p_internal_size)*sizeof(object);
+++       break;
+++     case t_bignum:
+++       d=o->big.big_mpz_t._mp_d;
+++       s=o->big.big_mpz_t._mp_alloc*MP_LIMB_SIZE;
+++       break;
+++     case t_structure:
+++       d=o->str.str_self;
+++       s=S_DATA(o->str.str_def)->length*sizeof(object);
+++       break;
+++     case t_random:
+++       d=o->rnd.rnd_state._mp_seed->_mp_d;
+++       s=o->rnd.rnd_state._mp_seed->_mp_alloc*MP_LIMB_SIZE;
+++       break;
+++     case t_cclosure:
+++       d=o->cc.cc_turbo;
+++       s=fix(o->cc.cc_turbo[-1]);
+++       break;
+++     case t_cfdata:
+++       d=o->cfd.cfd_start;
+++       s=o->cfd.cfd_size;
+++       break;
+++     case t_readtable:
+++       d=o->rt.rt_self;
+++       s=RTABSIZE*(sizeof(struct rtent));/*FIXME*/
+++       break;
+++     default:
+++       break;
+++     }
+++     if (d>=data_start && d<(void *)heap_end && s) {
+++       fprintf(stderr,"%lu %s bytes at %p\n",s,tm_table[type_of(o)].tm_name,d);
+++       i+=s;
+++       j++;
+++     }
+++      }
+++    }
+++  }
+++  fprintf(stderr,"\nTotal leaf bytes %lu in %lu pieces\n",i,j);
+++  
+++  return Cnil;
+++
++ }
++ 
++-DEFUN_NEW("GBC",object,fLgbc,LISP,1,1,NONE,OO,OO,OO,OO,(object x0),"") {
+++DEFUN_NEW("GBC",object,fSgbc,SI,1,1,NONE,OO,OO,OO,OO,(object x0),"") {
++ 
++-  /* 1 args */
+++   /* 1 args */
++   
++   if (x0 == Ct)
++     GBC(t_other);
++@@ -1650,5 +1733,5 @@ gcl_init_GBC(void) {
++ #ifdef SGC
++   make_si_function("SGC-ON",siLsgc_on);
++ #endif
++-
+++  
++ }
++--- gcl-2.6.12.orig/o/gmp.c
+++++ gcl-2.6.12/o/gmp.c
++@@ -18,12 +18,12 @@ static void *gcl_gmp_realloc(void *oldme
++   MP_SELF(big_gcprotect)=0;
++   bcopy(old,new,oldsize);
++ /* SGC contblock pages: Its possible this is on an old page CM 20030827 */
++-  if (inheap(oldmem)) 
++-#ifdef SGC
++-    insert_maybe_sgc_contblock(oldmem,oldsize);
++-#else
++-    insert_contblock(oldmem,oldsize);
++-#endif
+++/*   if (inheap(oldmem))  */
+++/* #ifdef SGC */
+++/*     insert_maybe_sgc_contblock(oldmem,oldsize); */
+++/* #else */
+++/*     insert_contblock(oldmem,oldsize); */
+++/* #endif */
++ 
++   return new;
++ }
++--- gcl-2.6.12.orig/o/hash.d
+++++ gcl-2.6.12/o/hash.d
++@@ -30,6 +30,7 @@ object sLequal;
++ object sKsize;
++ object sKrehash_size;
++ object sKrehash_threshold;
+++object sKstatic;
++ 
++ #define MHSH(a_) ((a_) & ~(1UL<<(sizeof(a_)*CHAR_SIZE-1)))
++ 
++@@ -295,8 +296,9 @@ object hashtable;
++              hashtable->ht.ht_rhthresh =
++              make_fixnum(fix(hashtable->ht.ht_rhthresh) +
++                          (new_size - old->ht.ht_size));
++-     hashtable->ht.ht_self =
++-     (struct htent *)alloc_relblock(new_size * sizeof(struct htent));
+++     hashtable->ht.ht_self = hashtable->ht.ht_static ? 
+++       (struct htent *)alloc_contblock(new_size * sizeof(struct htent)) : 
+++       (struct htent *)alloc_relblock(new_size * sizeof(struct htent));
++      for (i = 0;  i < new_size;  i++) {
++              hashtable->ht.ht_self[i].hte_key = OBJNULL;
++              hashtable->ht.ht_self[i].hte_value = OBJNULL;
++@@ -322,6 +324,7 @@ DEFVAR("*DEFAULT-HASH-TABLE-REHASH-THRES
++                             `sSAdefault_hash_table_rehash_sizeA->s.s_dbind`)
++                            (rehash_threshold
++                             `sSAdefault_hash_table_rehash_thresholdA->s.s_dbind`)
+++                           (static `Cnil`)
++                       &aux h)
++      enum httest htt=0;
++      int i;
++@@ -363,9 +366,11 @@ DEFVAR("*DEFAULT-HASH-TABLE-REHASH-THRES
++      h->ht.ht_rhsize = rehash_size;
++      h->ht.ht_rhthresh = rehash_threshold;
++         h->ht.ht_nent = 0;
+++        h->ht.ht_static = static!=Cnil ? 1 : 0;
++      h->ht.ht_self = NULL;
++-     h->ht.ht_self = (struct htent *)
++-     alloc_relblock(fix(size) * sizeof(struct htent));
+++     h->ht.ht_self = h->ht.ht_static ?
+++       (struct htent *)alloc_contblock(fix(size) * sizeof(struct htent)) :
+++       (struct htent *)alloc_relblock(fix(size) * sizeof(struct htent));
++      for(i = 0;  i < fix(size);  i++) {
++              h->ht.ht_self[i].hte_key = OBJNULL;
++              h->ht.ht_self[i].hte_value = OBJNULL;
++@@ -547,6 +552,7 @@ gcl_init_hash()
++      sKtest = make_keyword("TEST");
++      sKrehash_size = make_keyword("REHASH-SIZE");
++      sKrehash_threshold = make_keyword("REHASH-THRESHOLD");
+++     sKstatic = make_keyword("STATIC");
++      
++      make_function("MAKE-HASH-TABLE", Lmake_hash_table);
++      make_function("HASH-TABLE-P", Lhash_table_p);
++--- gcl-2.6.12.orig/o/let.c
+++++ gcl-2.6.12/o/let.c
++@@ -226,7 +226,7 @@ is an illegal function definition in FLE
++              top[0] = MMcons(lex[2], def);
++              top[0] = MMcons(lex[1], top[0]);
++              top[0] = MMcons(lex[0], top[0]);
++-             top[0] = MMcons(sLlambda_block_closure, top[0]);
+++             top[0] = MMcons(sSlambda_block_closure, top[0]);
++              lex_fun_bind(MMcar(def), top[0]);
++              def_list = MMcdr(def_list);
++      }
++@@ -262,7 +262,7 @@ is an illegal function definition in LAB
++              top[0] = MMcons(Cnil, top[0]);
++              top[1] = MMcons(top[0], top[1]);
++              top[0] = MMcons(lex[0], top[0]);
++-             top[0] = MMcons(sLlambda_block_closure, top[0]);
+++             top[0] = MMcons(sSlambda_block_closure, top[0]);
++              lex_fun_bind(MMcar(def), top[0]);
++              def_list = MMcdr(def_list);
++      }
++@@ -315,8 +315,8 @@ gcl_init_let(void)
++      make_special_form("LET", Flet);
++      make_special_form("LET*", FletA);
++      make_special_form("MULTIPLE-VALUE-BIND", Fmultiple_value_bind);
++-     make_special_form("COMPILER-LET", Fcompiler_let);
++      make_special_form("FLET",Fflet);
++      make_special_form("LABELS",Flabels);
++      make_special_form("MACROLET",Fmacrolet);
+++     make_si_special_form("COMPILER-LET", Fcompiler_let);
++ }
++--- gcl-2.6.12.orig/o/lex.c
+++++ gcl-2.6.12/o/lex.c
++@@ -58,7 +58,7 @@ lex_macro_bind(object name, object exp_f
++ {
++      object *top = vs_top;
++      vs_push(make_cons(exp_fun, Cnil));
++-     top[0] = make_cons(sLmacro, top[0]);
+++     top[0] = make_cons(sSmacro, top[0]);
++      top[0] = make_cons(name, top[0]);
++      lex_env[1]=make_cons(top[0], lex_env[1]);                         
++      vs_top = top;
++@@ -70,7 +70,7 @@ lex_tag_bind(object tag, object id)
++      object *top = vs_top;
++ 
++      vs_push(make_cons(id, Cnil));
++-     top[0] = make_cons(sLtag, top[0]);
+++     top[0] = make_cons(sStag, top[0]);
++      top[0] = make_cons(tag, top[0]);
++      lex_env[2] =make_cons(top[0], lex_env[2]);
++      vs_top = top;
++@@ -95,7 +95,7 @@ lex_tag_sch(object tag)
++      object alist = lex_env[2];
++ 
++      while (!endp(alist)) {
++-             if (eql(MMcaar(alist), tag) && MMcadar(alist) == sLtag)
+++             if (eql(MMcaar(alist), tag) && MMcadar(alist) == sStag)
++                      return(MMcar(alist));
++              alist = MMcdr(alist);
++      }
++@@ -120,10 +120,10 @@ gcl_init_lex(void)
++ {
++ /*   sLfunction = make_ordinary("FUNCTION"); */
++ /*   enter_mark_origin(&sLfunction); */
++-     sLmacro = make_ordinary("MACRO");
++-     enter_mark_origin(&sLmacro);
++-     sLtag = make_ordinary("TAG");
++-     enter_mark_origin(&sLtag);
+++     sSmacro = make_si_ordinary("MACRO");
+++     enter_mark_origin(&sSmacro);
+++     sStag = make_si_ordinary("TAG");
+++     enter_mark_origin(&sStag);
++      sLblock =  make_ordinary("BLOCK");
++      enter_mark_origin(&sLblock);
++ }
++--- gcl-2.6.12.orig/o/macros.c
+++++ gcl-2.6.12/o/macros.c
++@@ -161,7 +161,7 @@ macro_def(object form)
++                      return(head->s.s_gfdef);
++              else
++                      return(Cnil);
++-     else if (MMcadr(fd) == sLmacro)
+++     else if (MMcadr(fd) == sSmacro)
++              return(MMcaddr(fd));
++      else
++              return(Cnil);
++@@ -279,7 +279,7 @@ macro_expand(object form)
++                      exp_fun = head->s.s_gfdef;
++              else
++                      return(form);
++-     else if (MMcadr(fd) == sLmacro)
+++     else if (MMcadr(fd) == sSmacro)
++              exp_fun = MMcaddr(fd);
++      else
++              return(form);
++@@ -316,7 +316,7 @@ LOOP:
++                      exp_fun = head->s.s_gfdef;
++              else
++                      goto END;
++-     else if (MMcadr(fd) == sLmacro)
+++     else if (MMcadr(fd) == sSmacro)
++              exp_fun = MMcaddr(fd);
++      else
++              goto END;
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -182,30 +182,41 @@ get_phys_pages_no_malloc(void) {
++ #else 
++ 
++ ufixnum
++-get_phys_pages_no_malloc(void) {
++-  int l;
+++get_proc_meminfo_value_in_pages(const char *k) {
+++  int l,m;
++   char b[PAGESIZE],*c;
++-  const char *k="MemTotal:",*f="/proc/meminfo";
++-  ufixnum res=0,n;
+++  ufixnum n;
++   
++-  if ((l=open(f,O_RDONLY))!=-1) {
++-    if ((n=read(l,b,sizeof(b)))<sizeof(b) && 
++-     !(b[n]=0) && 
++-     (c=strstr(b,k)) && 
++-     sscanf(c+strlen(k),"%lu",&n)==1)
++-      res=n;
++-    close(l);
++-  }
++-  return res>>(PAGEWIDTH-10);
+++  massert((l=open("/proc/meminfo",O_RDONLY))!=-1);
+++  massert((n=read(l,b,sizeof(b)))<sizeof(b));
+++  b[n]=0;
+++  massert(!close(l));
+++  massert((c=strstr(b,k)));
+++  c+=strlen(k);
+++  massert(sscanf(c,"%lu%n",&n,&m)==1);
+++  massert(!strncmp(c+m," kB\n",4));
+++  return n>>(PAGEWIDTH-10);
+++}
+++  
+++ufixnum
+++get_phys_pages_no_malloc(char freep) {
+++  return freep ? 
+++    get_proc_meminfo_value_in_pages("MemFree:")+
+++    get_proc_meminfo_value_in_pages("Buffers:")+
+++    get_proc_meminfo_value_in_pages("Cached:") :
+++    get_proc_meminfo_value_in_pages("MemTotal:");
++ }
++ 
++ #endif
++ 
+++void *initial_sbrk=NULL;
+++
++ int
++ update_real_maxpage(void) {
++ 
++   ufixnum i,j,k;
++   void *end,*cur,*beg;
+++  ufixnum free_phys_pages=get_phys_pages_no_malloc(1),maxpages;
++ #ifdef __MINGW32__
++   static fixnum n;
++ 
++@@ -215,6 +226,8 @@ update_real_maxpage(void) {
++   }
++ #endif
++ 
+++  phys_pages=get_phys_pages_no_malloc(1);
+++
++   massert(cur=sbrk(0));
++   beg=data_start ? data_start : cur;
++   for (i=0,j=(1L<<log_maxpage_bound);j>PAGESIZE;j>>=1)
++@@ -225,30 +238,46 @@ update_real_maxpage(void) {
++       }
++   massert(!mbrk(cur));
++ 
++-  phys_pages=get_phys_pages_no_malloc();
+++/*   phys_pages=get_phys_pages_no_malloc(0); */
++ 
++-#ifdef BRK_DOES_NOT_GUARANTEE_ALLOCATION
++-  if (phys_pages>0 && real_maxpage>phys_pages+page(beg)) real_maxpage=phys_pages+page(beg);
++-#endif
+++/* #ifdef BRK_DOES_NOT_GUARANTEE_ALLOCATION */
+++/*   if (phys_pages>0 && real_maxpage>phys_pages+page(beg)) real_maxpage=phys_pages+page(beg); */
+++/* #endif */
+++
+++  maxpages=real_maxpage-page(beg);
++ 
++-  available_pages=real_maxpage-page(beg);
+++  free_phys_pages=free_phys_pages>maxpages ? maxpages : free_phys_pages;
+++
+++  resv_pages=available_pages=0;
+++  available_pages=check_avail_pages();
+++  
++   for (i=t_start,j=0;i<t_other;i++) {
++-    k=tm_table[i].tm_maxpage;
++-    if (tm_table[i].tm_type==t_relocatable)
++-      k*=2;
++-    else
++-      j+=k;
++-    available_pages-=k;
+++    massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage));
+++    j+=tm_table[i].tm_maxpage;
++   }
++   resv_pages=40<available_pages ? 40 : available_pages;
++   available_pages-=resv_pages;
+++  
+++  if (sSAoptimize_maximum_pagesA && sSAoptimize_maximum_pagesA->s.s_dbind!=Cnil) {
++ 
++-  new_holepage=available_pages/starting_hole_div;
++-  k=available_pages/20;
++-  j*=starting_relb_heap_mult;
++-  j=j<k ? j : k;
++-  if (maxrbpage<j)
++-    set_tm_maxpage(tm_table+t_relocatable,j);
+++    for (i=t_start,j=0;i<t_relocatable;i++)
+++      j+=tm_table[i].tm_maxpage;
+++    
+++    if (j<free_phys_pages) {
+++      for (i=t_start,k=0;i<t_relocatable;i++)
+++     if (tm_table[i].tm_maxpage) {
+++       massert(set_tm_maxpage(tm_table+i,((double)0.7*free_phys_pages/j)*tm_table[i].tm_maxpage));
+++       k+=tm_table[i].tm_maxpage;
+++     }
+++      set_tm_maxpage(tm_table+t_relocatable,(free_phys_pages-k)>>1);
+++    }
+++    
+++    new_holepage=0;
+++    for (i=t_start;i<t_relocatable;i++)
+++      new_holepage+=tm_table[i].tm_maxpage-tm_table[i].tm_npage;
+++    
+++  } else
+++    new_holepage=available_pages/starting_hole_div;
++ 
++   return 0;
++ 
++@@ -257,25 +286,13 @@ update_real_maxpage(void) {
++ static int
++ minimize_image(void) {
++ 
++-#ifdef SGC
++-  int in_sgc=sgc_enabled;
++-#else
++-  int in_sgc=0;
++-#endif
++   extern long new_holepage;
++-  fixnum old_holepage=new_holepage,i;
++-  void *new;
++-  
++-  if (in_sgc) sgc_quit();
++-  holepage=new_holepage=1;
++-  GBC(t_relocatable);
++-  if (in_sgc) sgc_start();
++-  new = (void *)(((((ufixnum)rb_pointer)+ PAGESIZE-1)/PAGESIZE)*PAGESIZE);
++-  core_end = new;
++-  rb_end=rb_limit=new;
++-  set_tm_maxpage(tm_table+t_relocatable,(nrbpage=((char *)new-REAL_RB_START)/PAGESIZE));
++-  new_holepage=old_holepage;
+++  fixnum i;
++   
+++  empty_relblock();
+++  holepage=nrbpage=0;
+++  core_end=rb_start=rb_end=rb_limit=rb_pointer=heap_end;
+++
++ #ifdef GCL_GPROF
++   gprof_cleanup();
++ #endif
++@@ -301,7 +318,7 @@ DEFUN_NEW("SET-LOG-MAXPAGE-BOUND",object
++   l=l<def ? l : def;
++   end=data_start+(1L<<l)-PAGESIZE;
++   GBC(t_relocatable);
++-  dend=heap_end+PAGESIZE+(((rb_pointer-REAL_RB_START)+PAGESIZE-1)&(-PAGESIZE));
+++  dend=heap_end+PAGESIZE+CEI(rb_pointer-(rb_pointer<rb_end ? rb_start : rb_end),PAGESIZE);
++   if (end >= dend) {
++     minimize_image();
++     log_maxpage_bound=l;
++@@ -352,6 +369,8 @@ gcl_mprotect(void *v,unsigned long l,int
++ }
++ #endif
++ 
+++DEFVAR("*CODE-BLOCK-RESERVE*",sSAcode_block_reserveA,SI,Cnil,"");
+++
++ int
++ main(int argc, char **argv, char **envp) {
++ 
++@@ -430,9 +449,10 @@ main(int argc, char **argv, char **envp)
++     gcl_init_readline_function();
++ #endif
++ #ifdef NEED_STACK_CHK_GUARD
++-  __stack_chk_guard=random_ulong();/*Cannot be safely set inside a function which returns*/
+++    __stack_chk_guard=random_ulong();/*Cannot be safely set inside a function which returns*/
++ #endif
++-
+++    allocate_code_block_reserve();
+++  
++   }
++ 
++ #ifdef _WIN32
++@@ -549,22 +569,10 @@ initlisp(void) {
++      import(Ct, lisp_package);
++      export(Ct, lisp_package);
++ 
++-#ifdef ANSI_COMMON_LISP
++-/*   Cnil->s.s_hpack = common_lisp_package; */
++-     import(Cnil, common_lisp_package);
++-     export(Cnil, common_lisp_package);
++-
++-/*   Ct->s.s_hpack = common_lisp_package; */
++-     import(Ct, common_lisp_package);
++-     export(Ct, common_lisp_package);
++-#endif
++-
++-/*   sLquote = make_ordinary("QUOTE"); */
++-/*   sLfunction = make_ordinary("FUNCTION"); */
++      sLlambda = make_ordinary("LAMBDA");
++-     sLlambda_block = make_ordinary("LAMBDA-BLOCK");
++-     sLlambda_closure = make_ordinary("LAMBDA-CLOSURE");
++-     sLlambda_block_closure = make_ordinary("LAMBDA-BLOCK-CLOSURE");
+++     sSlambda_block = make_si_ordinary("LAMBDA-BLOCK");
+++     sSlambda_closure = make_si_ordinary("LAMBDA-CLOSURE");
+++     sSlambda_block_closure = make_si_ordinary("LAMBDA-BLOCK-CLOSURE");
++      sLspecial = make_ordinary("SPECIAL");
++ 
++      
++@@ -702,7 +710,7 @@ segmentation_catcher(int i) {
++ /*   error("end of file"); */
++ /* } */
++ 
++-DEFUNO_NEW("BYE",object,fLbye,LISP
+++DEFUNO_NEW("BYE",object,fSbye,SI
++        ,0,1,NONE,OO,OO,OO,OO,void,Lby,(object exitc),"")
++ {    int n=VFUN_NARGS;
++      int exit_code;
++@@ -714,9 +722,9 @@ DEFUNO_NEW("BYE",object,fLbye,LISP
++ }
++ 
++ 
++-DEFUN_NEW("QUIT",object,fLquit,LISP
+++DEFUN_NEW("QUIT",object,fSquit,SI
++        ,0,1,NONE,OO,OO,OO,OO,(object exitc),"")
++-{    return FFN(fLbye)(exitc); }
+++{    return FFN(fSbye)(exitc); }
++  
++ /* DEFUN_NEW("EXIT",object,fLexit,LISP */
++ /*        ,0,1,NONE,OI,OO,OO,OO,(fixnum exitc),"") */
++@@ -976,8 +984,8 @@ FFN(siLsave_system)(void) {
++ 
++   saving_system = FALSE;
++ 
++-  Lsave();
++-  alloc_page(-(holepage+nrbpage));
+++  siLsave();
+++  alloc_page(-(holepage+2*nrbpage));
++ 
++ }
++ 
++@@ -990,7 +998,7 @@ DEFVAR("*COMMAND-ARGS*",sSAcommand_argsA
++ static void
++ init_main(void) {
++ 
++-  make_function("BY", Lby);
+++  make_si_function("BY", Lby);
++   make_si_function("ARGC", siLargc);
++   make_si_function("ARGV", siLargv);
++   
++--- gcl-2.6.12.orig/o/package.d
+++++ gcl-2.6.12/o/package.d
++@@ -1159,17 +1159,12 @@ gcl_init_package()
++ {
++ 
++      lisp_package
++-     = make_package(make_simple_string("LISP"),
++-                    Cnil, Cnil,47,509);
+++     = make_package(make_simple_string("COMMON-LISP"),
+++                    list(2,make_simple_string("CL"),make_simple_string("LISP")),Cnil,47,509);
++      user_package
++-     = make_package(make_simple_string("USER"),
++-                    Cnil,
+++     = make_package(make_simple_string("COMMON-LISP-USER"),
+++                    list(2,make_simple_string("CL-USER"),make_simple_string("USER")),
++                     make_cons(lisp_package, Cnil),509,97);
++-#ifdef ANSI_COMMON_LISP
++-     common_lisp_package
++-     = make_package(make_simple_string("COMMON-LISP"),
++-                    Cnil, Cnil,47,509);
++-#endif
++      keyword_package
++      = make_package(make_simple_string("KEYWORD"),
++                     Cnil, Cnil,11,509);
++--- gcl-2.6.12.orig/o/predicate.c
+++++ gcl-2.6.12/o/predicate.c
++@@ -341,9 +341,9 @@ DEFUNO_NEW("FUNCTIONP",object,fLfunction
++                      x0 = Cnil; }
++      else if (t == t_cons) {
++              x = x0->c.c_car;
++-             if (x == sLlambda || x == sLlambda_block ||
+++             if (x == sLlambda || x == sSlambda_block ||
++                  x == sSlambda_block_expanded ||
++-                 x == sLlambda_closure || x == sLlambda_block_closure)
+++                 x == sSlambda_closure || x == sSlambda_block_closure)
++                      x0 = Ct;
++              else
++                      x0 = Cnil;
++@@ -358,6 +358,14 @@ fLfunctionp(object x) {
++ #endif
++ 
++ 
+++DEFUNO_NEW("COMMONP",object,fScommonp,SI,1,1,NONE,OO,OO,OO,OO,void,siLcommonp,(object x0),"") {
+++  if (type_of(x0) != t_spice)
+++    x0 = Ct;
+++  else
+++    x0 = Cnil;
+++  RETURN1(x0);
+++}
+++
++ DEFUNO_NEW("COMPILED-FUNCTION-P",object,fLcompiled_function_p,LISP
++    ,1,1,NONE,OO,OO,OO,OO,void,Lcompiled_function_p,(object x0),"")
++ 
++@@ -377,18 +385,6 @@ DEFUNO_NEW("COMPILED-FUNCTION-P",object,
++              x0 = Ct;
++      else
++              x0 = Cnil;
++-RETURN1(x0);}
++-
++-DEFUNO_NEW("COMMONP",object,fLcommonp,LISP
++-   ,1,1,NONE,OO,OO,OO,OO,void,Lcommonp,(object x0),"")
++-
++-{
++-     /* 1 args */;
++-
++-     if (type_of(x0) != t_spice)
++-             x0 = Ct;
++-     else
++-             x0 = Cnil;
++ RETURN1(x0);}
++ 
++ DEFUN_NEW("EQ",object,fLeq,LISP,2,2,NONE,OO,OO,OO,OO,(object x0,object x1),"") {
++--- gcl-2.6.12.orig/o/read.d
+++++ gcl-2.6.12/o/read.d
++@@ -2152,7 +2152,8 @@ LFD(Lreadtablep)()
++              rdtbl->rt.rt_self[c].rte_chattrib
++              = cat_terminating;
++      rdtbl->rt.rt_self[c].rte_macro = fnc;
++-     @(return Ct)
+++        SGC_TOUCH(rdtbl);
+++        @(return Ct)
++ @)
++ 
++ @(defun get_macro_character (chr &optional (rdtbl `current_readtable()`))
++--- gcl-2.6.12.orig/o/reference.c
+++++ gcl-2.6.12/o/reference.c
++@@ -82,7 +82,7 @@ LFD(Lsymbol_function)(void)
++              FEundefined_function(sym);
++      if (sym->s.s_mflag) {
++              vs_push(sym->s.s_gfdef);
++-             vs_base[0] = sLmacro;
+++             vs_base[0] = sSmacro;
++              stack_cons();
++              return;
++      }
++@@ -131,7 +131,7 @@ FFN(Ffunction)(object form)
++              vs_base[0] = MMcons(lex_env[2], vs_base[0]);
++              vs_base[0] = MMcons(lex_env[1], vs_base[0]);
++              vs_base[0] = MMcons(lex_env[0], vs_base[0]);
++-             vs_base[0] = MMcons(sLlambda_closure, vs_base[0]);
+++             vs_base[0] = MMcons(sSlambda_closure, vs_base[0]);
++      } else
++              FEinvalid_function(fun);
++ }
++@@ -173,7 +173,7 @@ LFD(Lmacro_function)(void)
++              vs_base[0] = Cnil;
++ }
++ 
++-LFD(Lspecial_form_p)(void)
+++LFD(Lspecial_operator_p)(void)
++ {
++      check_arg(1);
++      if (type_of(vs_base[0]) != t_symbol)
++@@ -194,7 +194,6 @@ gcl_init_reference(void)
++      make_function("SYMBOL-VALUE", Lsymbol_value);
++      make_function("BOUNDP", Lboundp);
++      make_function("MACRO-FUNCTION", Lmacro_function);
++-     make_function("SPECIAL-FORM-P", Lspecial_form_p);
++-     make_function("SPECIAL-OPERATOR-P", Lspecial_form_p);
+++     make_function("SPECIAL-OPERATOR-P", Lspecial_operator_p);
++ }
++ 
++--- gcl-2.6.12.orig/o/run_process.c
+++++ gcl-2.6.12/o/run_process.c
++@@ -432,7 +432,7 @@ enum smmode smm;
++      stream->sm.sm_fp = fp;
++      stream->sm.sm_buffer = 0;
++ 
++-     stream->sm.sm_object0 = sLstring_char;
+++     stream->sm.sm_object0 = sLcharacter;
++      stream->sm.sm_object1 = host_l;
++      stream->sm.sm_int0 = stream->sm.sm_int1 = 0;
++      vs_push(stream);
++--- gcl-2.6.12.orig/o/save.c
+++++ gcl-2.6.12/o/save.c
++@@ -16,11 +16,12 @@ memory_save(char *original_file, char *s
++ extern void _cleanup();
++ #endif
++ 
++-LFD(Lsave)(void) {
+++LFD(siLsave)(void) {
++ 
++   char filename[256];
++   extern char *kcl_self;
++-
+++  extern void *initial_sbrk;
+++  
++   check_arg(1);
++   check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++   coerce_to_filename(vs_base[0], filename);
++@@ -33,7 +34,8 @@ LFD(Lsave)(void) {
++   
++   raw_image=FALSE;
++   cs_org=0;
++-
+++  initial_sbrk=core_end;
+++  
++ #ifdef MEMORY_SAVE
++   MEMORY_SAVE(kcl_self,filename);
++ #else          
++--- gcl-2.6.12.orig/o/sfaslbfd.c
+++++ gcl-2.6.12/o/sfaslbfd.c
++@@ -212,7 +212,7 @@ fasload(object faslfile) {
++ 
++     set_type_of(&dum,t_stream);
++     dum.sm.sm_mode=smm_input;
++-    dum.sm.sm_object0=sLstring_char;
+++    dum.sm.sm_object0=sLcharacter;
++ 
++     link_callbacks.add_archive_element=madd_archive_element;
++     link_callbacks.multiple_definition=mmultiple_definition;
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -58,7 +58,7 @@ License for more details.
++ #define  LOAD_SYM(sym) ({ul _b=ELF_ST_BIND(sym->st_info),_t=ELF_ST_TYPE(sym->st_info);       \
++       sym->st_value && (_b==STB_GLOBAL || _b==STB_WEAK || (_t>=STT_LOPROC && _t<=STT_HIPROC));})
++ 
++-#define MASK(n) (~(~0L << (n)))
+++#define MASK(n) (~(~0ULL << (n)))
++ 
++ 
++ 
++@@ -242,6 +242,46 @@ relocate_symbols(Sym *sym,Sym *syme,Shdr
++   
++ }
++ 
+++#ifndef MAX_CODE_ADDRESS
+++#define MAX_CODE_ADDRESS -1UL
+++#endif
+++
+++static void *
+++alloc_memory(ul sz) {
+++
+++  void *v;
+++
+++  if (sSAcode_block_reserveA &&
+++      sSAcode_block_reserveA->s.s_dbind!=Cnil && sSAcode_block_reserveA->s.s_dbind->st.st_dim>=sz) {
+++    
+++    v=sSAcode_block_reserveA->s.s_dbind->st.st_self;
+++    sSAcode_block_reserveA->s.s_dbind->st.st_self+=sz;
+++    sSAcode_block_reserveA->s.s_dbind->st.st_dim-=sz;
+++    sSAcode_block_reserveA->s.s_dbind->st.st_fillp=sSAcode_block_reserveA->s.s_dbind->st.st_dim;
+++    
+++  } else
+++    v=alloc_contblock(sz);
+++
+++  massert(v && (ul)(v+sz)<MAX_CODE_ADDRESS);
+++
+++  return v;
+++
+++}
+++
+++void
+++allocate_code_block_reserve(void) {
+++
+++  const char *s=getenv("GCL_CODESPACE");
+++  ul n;
+++
+++  if (!s || sscanf(s,"%lu",&n)!=1)
+++    return;
+++
+++  sSAcode_block_reserveA->s.s_dbind=alloc_simple_string(n);
+++  sSAcode_block_reserveA->s.s_dbind->st.st_self=alloc_memory(n);
+++
+++}
+++
++ static object
++ load_memory(Shdr *sec1,Shdr *sece,void *v1,ul **got,ul **gote) {
++ 
++@@ -275,9 +315,7 @@ load_memory(Shdr *sec1,Shdr *sece,void *
++   memory->cfd.cfd_size=sz;
++   memory->cfd.cfd_self=0;
++   memory->cfd.cfd_start=0;
++-  prefer_low_mem_contblock=TRUE;
++-  memory->cfd.cfd_start=alloc_contblock(sz);
++-  prefer_low_mem_contblock=FALSE;
+++  memory->cfd.cfd_start=alloc_memory(sz);
++ 
++   a=(ul)memory->cfd.cfd_start;
++   a=(a+ma)&~ma;
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -7,9 +7,6 @@
++     
++ */
++ 
++-static void
++-sgc_mark_object1(object);
++-
++ #ifdef BSD
++ /* ulong may have been defined in mp.h but the define is no longer needed */
++ #undef ulong
++@@ -51,81 +48,12 @@ int gclmprotect ( void *addr, size_t len
++ 
++ #include <signal.h>
++ 
++-/*  void segmentation_catcher(void); */
++-
++-
++-#define sgc_mark_pack_list(u)      \
++-do {register object xtmp = u;  \
++- while (xtmp != Cnil) \
++-   {if (ON_WRITABLE_PAGE(xtmp)) {mark(xtmp);}        \
++-     sgc_mark_object(xtmp->c.c_car); \
++-     xtmp=Scdr(xtmp);}}while(0) 
++-
++-
++ #ifdef SDEBUG
++ object sdebug;
++ joe1(){;}
++ joe() {;}     
++ #endif
++ 
++-/* static void */
++-/* sgc_mark_cons(object x) { */
++-  
++-/*   cs_check(x); */
++-  
++-/*   /\*  x is already marked.  *\/ */
++-  
++-/*  BEGIN: */
++-/* #ifdef SDEBUG */
++-/*   if(x==sdebug) joe1(); */
++-/* #endif */
++-/*   sgc_mark_object(x->c.c_car); */
++-/* #ifdef OLD */
++-/*   IF_WRITABLE(x->c.c_car, goto MARK_CAR;); */
++-/*   goto MARK_CDR; */
++-  
++-/*  MARK_CAR: */
++-/*   if (!is_marked_or_free(x->c.c_car)) { */
++-/*     if (consp(x->c.c_car)) { */
++-/*       mark(x->c.c_car); */
++-/*       sgc_mark_cons(x->c.c_car); */
++-/*     } else */
++-/*       sgc_mark_object1(x->c.c_car);} */
++-/*  MARK_CDR:   */
++-/* #endif */
++-/*   /\* if (is_imm_fixnum(x->c.c_cdr)) return; *\/ */
++-/*   x = Scdr(x); */
++-/*   IF_WRITABLE(x, goto WRITABLE_CDR;); */
++-/*   return; */
++-/*  WRITABLE_CDR: */
++-/*   if (is_marked_or_free(x)) return; */
++-/*   if (consp(x)) { */
++-/*     mark(x); */
++-/*     goto BEGIN; */
++-/*   } */
++-/*   sgc_mark_object1(x); */
++-/* } */
++-
++-inline void
++-sgc_mark_cons(object x) {
++-  
++-  do {
++-    object d=x->c.c_cdr;
++-    mark(x);
++-    sgc_mark_object(x->c.c_car);
++-    x=d;
++-    if (!IS_WRITABLE(page(x)) || is_marked_or_free(x))/*catches Cnil*/
++-      return;
++-  } while (cdr_listp(x));
++-  sgc_mark_object(x);
++-
++-}
++-
++-/* Whenever two arrays are linked together by displacement,
++-   if one is live, the other will be made live */
++-#define sgc_mark_displaced_field(ar) sgc_mark_object(ar->a.a_displaced)
++-
++-
++ /* structures and arrays of type t, need to be marked if their
++    bodies are not write protected even if the headers are.
++    So we should keep these on pages particular to them.
++@@ -134,415 +62,6 @@ sgc_mark_cons(object x) {
++    This takes only 1.47 as opposed to 1.33 microseconds per set.
++ */
++ static void
++-sgc_mark_object1(object x) {
++-
++-  fixnum i,j;
++-  object *p;
++-  char *cp;
++-  enum type tp;
++-  
++-  cs_check(x);
++- BEGIN:
++-#ifdef SDEBUG
++-  if (x == OBJNULL || !ON_WRITABLE_PAGE(x))
++-    return;
++-  IF_WRITABLE(x,goto OK);
++-  joe();
++- OK:
++-#endif 
++-  if (is_marked_or_free(x))
++-    return;
++-#ifdef SDEBUG
++-  if(x==sdebug) joe1();
++-#endif
++-  
++-  tp=type_of(x);
++-
++-  if (tp==t_cons) {
++-    sgc_mark_cons(x);
++-    return;
++-  }
++-
++-  mark(x);
++-
++-  switch (tp) {
++-
++-  case t_fixnum:
++-    break;
++-    
++-  case t_ratio:
++-    sgc_mark_object(x->rat.rat_num);
++-    x = x->rat.rat_den;
++-    IF_WRITABLE(x,if(!is_marked_or_free(x)) goto BEGIN);
++-    
++-  case t_shortfloat:
++-    break;
++-    
++-  case t_longfloat:
++-    break;
++-    
++-  case t_complex:
++-    sgc_mark_object(x->cmp.cmp_imag);
++-    x = x->cmp.cmp_real;
++-    IF_WRITABLE(x,if(!is_marked_or_free(x)) goto BEGIN);
++-    
++-  case t_character:
++-    break;
++-    
++-  case t_symbol:
++-    IF_WRITABLE(x->s.s_plist,if(!is_marked_or_free(x->s.s_plist))
++-    {/* mark(x->s.s_plist); */
++-    sgc_mark_cons(x->s.s_plist);});
++-    sgc_mark_object(x->s.s_gfdef);
++-    sgc_mark_object(x->s.s_dbind);
++-    if (x->s.s_self == NULL)
++-      break;
++-    /* to do */
++-    if (inheap(x->s.s_self)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock(x->s.s_self,x->s.s_fillp);
++-    } else if (SGC_RELBLOCK_P(x->s.s_self) && COLLECT_RELBLOCK_P)
++-      x->s.s_self = copy_relblock(x->s.s_self, x->s.s_fillp);
++-    break;
++-    
++-  case t_package:
++-    sgc_mark_object(x->p.p_name);
++-    sgc_mark_object(x->p.p_nicknames);
++-    sgc_mark_object(x->p.p_shadowings);
++-    sgc_mark_object(x->p.p_uselist);
++-    sgc_mark_object(x->p.p_usedbylist);
++-    if (what_to_collect == t_contiguous) {
++-      if (x->p.p_internal != NULL)
++-     mark_contblock((char *)(x->p.p_internal),
++-                    x->p.p_internal_size*sizeof(object));
++-      if (x->p.p_external != NULL)
++-     mark_contblock((char *)(x->p.p_external),
++-                    x->p.p_external_size*sizeof(object));
++-    }
++-    break;
++-    
++-  case t_hashtable:
++-    sgc_mark_object(x->ht.ht_rhsize);
++-    sgc_mark_object(x->ht.ht_rhthresh);
++-    if (x->ht.ht_self == NULL)
++-      break;
++-    for (i = 0, j = x->ht.ht_size;  i < j;  i++) {
++-      if (ON_WRITABLE_PAGE(&x->ht.ht_self[i])) {
++-     sgc_mark_object(x->ht.ht_self[i].hte_key);
++-     sgc_mark_object(x->ht.ht_self[i].hte_value);
++-      }
++-    }
++-    if (inheap(x->ht.ht_self)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock((char *)(x->ht.ht_self),j * sizeof(struct htent));
++-    } else if (SGC_RELBLOCK_P(x->ht.ht_self) && COLLECT_RELBLOCK_P)
++-      x->ht.ht_self=(void *)copy_relblock((char *)x->ht.ht_self,j*sizeof(struct htent));;
++-    break;
++-    
++-  case t_array:
++-    if ((x->a.a_displaced) != Cnil)
++-      sgc_mark_displaced_field(x);
++-    if (x->a.a_dims != NULL) {
++-      if (inheap(x->a.a_dims)) {
++-     if (what_to_collect == t_contiguous)
++-       mark_contblock((char *)(x->a.a_dims),sizeof(int)*x->a.a_rank);
++-      } else if (SGC_RELBLOCK_P(x->a.a_dims) && COLLECT_RELBLOCK_P)
++-     x->a.a_dims = (int *) copy_relblock((char *)(x->a.a_dims),sizeof(int)*x->a.a_rank);
++-    }
++-    if ((enum aelttype)x->a.a_elttype == aet_ch)
++-      goto CASE_STRING;
++-    if ((enum aelttype)x->a.a_elttype == aet_bit)
++-      goto CASE_BITVECTOR;
++-    if ((enum aelttype)x->a.a_elttype == aet_object)
++-      goto CASE_GENERAL;
++-    
++-  CASE_SPECIAL:
++-    cp = (char *)(x->fixa.fixa_self);
++-    if (cp == NULL)
++-      break;
++-    /* set j to the size in char of the body of the array */
++-    
++-    switch((enum aelttype)x->a.a_elttype){
++-    case aet_lf:
++-      j= sizeof(longfloat)*x->lfa.lfa_dim;
++-      if ((COLLECT_RELBLOCK_P) && !(inheap(cp)) && SGC_RELBLOCK_P(x->a.a_self))
++-     ROUND_RB_POINTERS_DOUBLE;/*FIXME gc space violation*/
++-      break;
++-    case aet_char:
++-    case aet_uchar:
++-      j=sizeof(char)*x->a.a_dim;
++-      break;
++-    case aet_short:
++-    case aet_ushort:
++-      j=sizeof(short)*x->a.a_dim;
++-      break;
++-    default:
++-      j=sizeof(fixnum)*x->fixa.fixa_dim;}
++-    
++-    goto COPY;
++-    
++-  CASE_GENERAL:
++-    p = x->a.a_self;
++-    if (p == NULL
++-#ifdef HAVE_ALLOCA
++-     || (char *)p >= core_end
++-#endif  
++-     
++-     )
++-      break;
++-    j=0;
++-    if (x->a.a_displaced->c.c_car == Cnil)
++-      for (i = 0, j = x->a.a_dim;  i < j;  i++)
++-     if (ON_WRITABLE_PAGE(&p[i]))
++-       sgc_mark_object(p[i]);
++-    cp = (char *)p;
++-    j *= sizeof(object);
++-  COPY:
++-    if (inheap(cp)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock(cp, j);
++-    } else if (SGC_RELBLOCK_P(cp) && COLLECT_RELBLOCK_P) {
++-      if (x->a.a_displaced == Cnil) {
++-#ifdef HAVE_ALLOCA
++-     if (!NULL_OR_ON_C_STACK(cp))  /* only if body of array not on C stack */
++-#endif                         
++-       x->a.a_self = (object *)copy_relblock(cp, j);
++-      } else if (x->a.a_displaced->c.c_car == Cnil) {
++-     i = (long)(object *)copy_relblock(cp, j) - (long)(x->a.a_self);
++-     adjust_displaced(x, i);
++-      }
++-    }
++-    break;
++-    
++-  case t_vector:
++-    if ((x->v.v_displaced) != Cnil)
++-      sgc_mark_displaced_field(x);
++-    if ((enum aelttype)x->v.v_elttype == aet_object)
++-      goto CASE_GENERAL;
++-    else
++-      goto CASE_SPECIAL;
++-    
++-  case t_bignum:
++-#ifdef SDEBUG
++-    if (TYPE_MAP(page(x->big.big_self)) < t_contiguous)
++-     printf("bad body for %x (%x)\n",x,cp);
++-#endif
++-#ifndef GMP_USE_MALLOC
++-    j = MP_ALLOCATED(x);
++-    cp = (char *)MP_SELF(x);
++-    if (cp == 0)
++-      break;
++-    j = j * MP_LIMB_SIZE;
++-    if (inheap(cp)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock(cp, j);
++-    } else if (SGC_RELBLOCK_P(cp) && COLLECT_RELBLOCK_P)
++-      MP_SELF(x) = (void *) copy_relblock(cp, j);
++-#endif /* not GMP_USE_MALLOC */
++-    break;
++-    
++-    
++-  CASE_STRING:
++-  case t_string:
++-    if ((x->st.st_displaced) != Cnil)
++-      sgc_mark_displaced_field(x);
++-    j = x->st.st_dim;
++-    cp = x->st.st_self;
++-    if (cp == NULL)
++-      break;
++-    
++-  COPY_STRING:
++-    if (inheap(cp)) {
++-      if (what_to_collect == t_contiguous)
++-     mark_contblock(cp, j);
++-    } else if (SGC_RELBLOCK_P(cp) && COLLECT_RELBLOCK_P) {
++-      if (x->st.st_displaced == Cnil)
++-     x->st.st_self = copy_relblock(cp, j);
++-      else if (x->st.st_displaced->c.c_car == Cnil) {
++-     i = copy_relblock(cp, j) - cp;
++-     adjust_displaced(x, i);
++-      }
++-    }
++-    break;
++-    
++-  CASE_BITVECTOR:
++-  case t_bitvector:
++-    if ((x->bv.bv_displaced) != Cnil)
++-      sgc_mark_displaced_field(x);
++-    /* We make bitvectors multiple of sizeof(int) in size allocated
++-       Assume 8 = number of bits in char */
++-    
++-#define W_SIZE (8*sizeof(fixnum))
++-    j= sizeof(fixnum) *
++-      ((BV_OFFSET(x) + x->bv.bv_dim + W_SIZE -1)/W_SIZE);
++-    cp = x->bv.bv_self;
++-    if (cp == NULL)
++-      break;
++-    goto COPY_STRING;
++-    
++-  case t_structure:
++-    sgc_mark_object(x->str.str_def);
++-    p = x->str.str_self;
++-    if (p == NULL)
++-      break;
++-    {
++-      object def=x->str.str_def;
++-      unsigned char  *s_type = &SLOT_TYPE(def,0);
++-      unsigned short *s_pos  = &SLOT_POS (def,0);
++-      for (i = 0, j = S_DATA(def)->length;  i < j;  i++)
++-     if (s_type[i]==0 && ON_WRITABLE_PAGE(&STREF(object,x,s_pos[i])))
++-       sgc_mark_object(STREF(object,x,s_pos[i]));
++-      if (inheap(x->str.str_self)) {
++-     if (what_to_collect == t_contiguous)
++-       mark_contblock((char *)p,S_DATA(def)->size);
++-      } else if (SGC_RELBLOCK_P(p) && (COLLECT_RELBLOCK_P))
++-     x->str.str_self = (object *) copy_relblock((char *)p, S_DATA(def)->size);
++-    }
++-    break;
++-    
++-  case t_stream:
++-    switch (x->sm.sm_mode) {
++-    case smm_input:
++-    case smm_output:
++-    case smm_io:
++-    case smm_socket:  
++-    case smm_probe:
++-      sgc_mark_object(x->sm.sm_object0);
++-      sgc_mark_object(x->sm.sm_object1);
++-      if (what_to_collect == t_contiguous &&
++-       x->sm.sm_fp &&
++-       x->sm.sm_buffer)
++-     mark_contblock(x->sm.sm_buffer, BUFSIZ);
++-      break;
++-      
++-    case smm_synonym:
++-      sgc_mark_object(x->sm.sm_object0);
++-      break;
++-      
++-    case smm_broadcast:
++-    case smm_concatenated:
++-      sgc_mark_object(x->sm.sm_object0);
++-      break;
++-      
++-    case smm_two_way:
++-    case smm_echo:
++-      sgc_mark_object(x->sm.sm_object0);
++-      sgc_mark_object(x->sm.sm_object1);
++-      break;
++-      
++-    case smm_string_input:
++-    case smm_string_output:
++-      sgc_mark_object(x->sm.sm_object0);
++-      break;
++-#ifdef USER_DEFINED_STREAMS
++-    case smm_user_defined:
++-      sgc_mark_object(x->sm.sm_object0);
++-      sgc_mark_object(x->sm.sm_object1);
++-      break;
++-#endif
++-    default:
++-      error("mark stream botch");
++-    }
++-    break;
++-    
++-#define SGC_MARK_CP(a_,b_) {fixnum _t=(b_);if (inheap((a_))) {\
++-     if (what_to_collect == t_contiguous) mark_contblock((void *)(a_),_t); \
++-      } else if (SGC_RELBLOCK_P((a_)) && COLLECT_RELBLOCK_P) (a_)=(void *)copy_relblock((void *)(a_),_t);}
++-
++-#define SGC_MARK_MP(a_) {if ((a_)->_mp_d) SGC_MARK_CP((a_)->_mp_d,(a_)->_mp_alloc*MP_LIMB_SIZE);}
++-
++-  case t_random:
++-    SGC_MARK_MP(x->rnd.rnd_state._mp_seed);
++-#if __GNU_MP_VERSION < 4 || (__GNU_MP_VERSION == 4 && __GNU_MP_VERSION_MINOR < 2)
++-    if (x->rnd.rnd_state._mp_algdata._mp_lc) {
++-      SGC_MARK_MP(x->rnd.rnd_state._mp_algdata._mp_lc->_mp_a);
++-      if (!x->rnd.rnd_state._mp_algdata._mp_lc->_mp_m2exp) SGC_MARK_MP(x->rnd.rnd_state._mp_algdata._mp_lc->_mp_m);
++-      SGC_MARK_CP(x->rnd.rnd_state._mp_algdata._mp_lc,sizeof(*x->rnd.rnd_state._mp_algdata._mp_lc));
++-    }
++-#endif
++-    break;
++-    
++-  case t_readtable:
++-    if (x->rt.rt_self == NULL)
++-      break;
++-    if (what_to_collect == t_contiguous)
++-      mark_contblock((char *)(x->rt.rt_self),RTABSIZE*sizeof(struct rtent));
++-    for (i = 0;  i < RTABSIZE;  i++) {
++-      sgc_mark_object(x->rt.rt_self[i].rte_macro);
++-      if (x->rt.rt_self[i].rte_dtab != NULL) {
++-     if (what_to_collect == t_contiguous)
++-       mark_contblock((char *)(x->rt.rt_self[i].rte_dtab),RTABSIZE*sizeof(object));
++-     for (j = 0;  j < RTABSIZE;  j++)
++-       sgc_mark_object(x->rt.rt_self[i].rte_dtab[j]);
++-      }
++-    }
++-    break;
++-    
++-  case t_pathname:
++-    sgc_mark_object(x->pn.pn_host);
++-    sgc_mark_object(x->pn.pn_device);
++-    sgc_mark_object(x->pn.pn_directory);
++-    sgc_mark_object(x->pn.pn_name);
++-    sgc_mark_object(x->pn.pn_type);
++-    sgc_mark_object(x->pn.pn_version);
++-    break;
++-    
++-  case t_closure:
++-    { 
++-      int i ;
++-      for (i= 0 ; i < x->cl.cl_envdim ; i++) 
++-     sgc_mark_object(x->cl.cl_env[i]);
++-      if (SGC_RELBLOCK_P(x->cl.cl_env) && COLLECT_RELBLOCK_P)
++-     x->cl.cl_env=(void *)copy_relblock((void *)x->cl.cl_env,x->cl.cl_envdim*sizeof(object));
++-
++-    }
++-    
++-  case t_cfun:
++-  case t_sfun:
++-  case t_vfun:
++-  case t_afun:
++-  case t_gfun:
++-    sgc_mark_object(x->cf.cf_name);
++-    sgc_mark_object(x->cf.cf_data);
++-    break;
++-    
++-  case t_cfdata:
++-    
++-    if (x->cfd.cfd_self != NULL) {
++-      int i=x->cfd.cfd_fillp;
++-      while(i-- > 0)
++-     sgc_mark_object(x->cfd.cfd_self[i]);
++-    }
++-    if (what_to_collect == t_contiguous) {
++-      mark_contblock(x->cfd.cfd_start, x->cfd.cfd_size);
++-      mark_link_array(x->cfd.cfd_start,x->cfd.cfd_start+x->cfd.cfd_size);
++-    }
++-    break;
++-  case t_cclosure:
++-    sgc_mark_object(x->cc.cc_name);
++-    sgc_mark_object(x->cc.cc_env);
++-    sgc_mark_object(x->cc.cc_data);
++-    if (x->cc.cc_turbo!=NULL) {
++-      sgc_mark_object(*(x->cc.cc_turbo-1));
++-      if (SGC_RELBLOCK_P(x->cc.cc_turbo) && COLLECT_RELBLOCK_P)
++-     x->cc.cc_turbo=(void *)copy_relblock((char *)(x->cc.cc_turbo-1),(1+fix(*(x->cc.cc_turbo-1)))*sizeof(object))+sizeof(object);
++-    }
++-    break;
++-    
++-  case t_spice:
++-    break;
++-    
++-  default:
++-#ifdef DEBUG
++-    if (debug)
++-      printf("\ttype = %d\n", type_of(x));
++-#endif
++-    error("mark botch");
++-  }
++-  
++-}
++-
++-static void
++ sgc_mark_phase(void) {
++ 
++   STATIC fixnum i, j;
++@@ -552,8 +71,8 @@ sgc_mark_phase(void) {
++   STATIC ihs_ptr ihsp;
++   STATIC struct pageinfo *v;
++   
++-  sgc_mark_object(Cnil->s.s_plist);
++-  sgc_mark_object(Ct->s.s_plist);
+++  mark_object(Cnil->s.s_plist);
+++  mark_object(Ct->s.s_plist);
++   
++   /* mark all non recent data on writable pages */
++   {
++@@ -563,15 +82,17 @@ sgc_mark_phase(void) {
++     
++     for (v=cell_list_head;v;v=v->next) {
++       i=page(v);
++-      if (!WRITABLE_PAGE_P(i)) continue;
+++      if (v->sgc_flags&SGC_PAGE_FLAG || !WRITABLE_PAGE_P(i)) continue;
++ 
++       t=v->type;
++       tm=tm_of(t);
++       p=pagetochar(i);
++       for (j = tm->tm_nppage; --j >= 0; p += tm->tm_size) {
++      object x = (object) p; 
++-     if (SGC_OR_M(x)) continue;
++-     sgc_mark_object1(x);
+++#ifndef SGC_WHOLE_PAGE
+++     if (TYPEWORD_TYPE_P(v->type) && x->d.s) continue;
+++#endif
+++     mark_object1(x);
++       }
++     }
++   }
++@@ -595,24 +116,24 @@ sgc_mark_phase(void) {
++   mark_stack_carefully(MVloc+(sizeof(MVloc)/sizeof(object)),MVloc,0);
++ 
++   for (bdp = bds_org;  bdp<=bds_top;  bdp++) {
++-    sgc_mark_object(bdp->bds_sym);
++-    sgc_mark_object(bdp->bds_val);
+++    mark_object(bdp->bds_sym);
+++    mark_object(bdp->bds_val);
++   }
++   
++   for (frp = frs_org;  frp <= frs_top;  frp++)
++-    sgc_mark_object(frp->frs_val);
+++    mark_object(frp->frs_val);
++   
++   for (ihsp = ihs_org;  ihsp <= ihs_top;  ihsp++)
++-    sgc_mark_object(ihsp->ihs_function);
+++    mark_object(ihsp->ihs_function);
++   
++   for (i = 0;  i < mark_origin_max;  i++)
++-    sgc_mark_object(*mark_origin[i]);
+++    mark_object(*mark_origin[i]);
++   for (i = 0;  i < mark_origin_block_max;  i++)
++     for (j = 0;  j < mark_origin_block[i].mob_size;  j++)
++-      sgc_mark_object(mark_origin_block[i].mob_addr[j]);
+++      mark_object(mark_origin_block[i].mob_addr[j]);
++   
++   for (pp = pack_pointer;  pp != NULL;  pp = pp->p_link)
++-    sgc_mark_object((object)pp);
+++    mark_object((object)pp);
++ #ifdef KCLOVM
++   if (ovm_process_created)
++     sgc_mark_all_stacks();
++@@ -624,20 +145,6 @@ sgc_mark_phase(void) {
++     fflush(stdout);
++   }
++ #endif       
++-  {
++-    int size;
++-  
++-    for (pp = pack_pointer;  pp != NULL;  pp = pp->p_link) {
++-      size = pp->p_internal_size;
++-      if (pp->p_internal != NULL)
++-     for (i = 0;  i < size;  i++)
++-       sgc_mark_pack_list(pp->p_internal[i]);
++-      size = pp->p_external_size;
++-      if (pp->p_external != NULL)
++-     for (i = 0;  i < size;  i++)
++-       sgc_mark_pack_list(pp->p_external[i]);
++-    }
++-  }
++   
++   mark_c_stack(0,N_RECURSION_REQD,mark_stack_carefully);
++   
++@@ -657,9 +164,6 @@ sgc_sweep_phase(void) {
++ 
++     tm = tm_of((enum type)v->type);
++     
++-    if (!WRITABLE_PAGE_P(page(v))) 
++-      continue;
++-
++     p = pagetochar(page(v));
++     f = tm->tm_free;
++     k = 0;
++@@ -678,14 +182,18 @@ sgc_sweep_phase(void) {
++        continue;
++      }
++ 
++-     if (TYPEWORD_TYPE_P(pageinfo(x)->type) && x->d.s == SGC_NORMAL)
+++#ifndef SGC_WHOLE_PAGE
+++     if (TYPEWORD_TYPE_P(v->type) && x->d.s == SGC_NORMAL)
++        continue;
+++#endif
++      
++      /* it is ok to free x */
++      
++      SET_LINK(x,f);
++      make_free(x);
+++#ifndef SGC_WHOLE_PAGE
++      if (TYPEWORD_TYPE_P(v->type)) x->d.s = SGC_RECENT;
+++#endif
++      f = x;
++      k++;
++ 
++@@ -694,7 +202,7 @@ sgc_sweep_phase(void) {
++       tm->tm_nfree += k;
++       v->in_use-=k;
++ 
++-    } else /*non sgc_page */
+++    } else if (WRITABLE_PAGE_P(page(v))) /*non sgc_page */
++       for (j = tm->tm_nppage; --j >= 0;  p += size) {
++      x = (object)p;
++      if (is_marked(x) && !is_free(x)) {
++@@ -711,9 +219,9 @@ sgc_contblock_sweep_phase(void) {
++ 
++   STATIC char *s, *e, *p, *q;
++   STATIC struct pageinfo *v;
+++    
+++  reset_contblock_freelist();
++   
++-  cb_pointer = NULL;
++-  ncb = 0;
++   for (v=contblock_list_head;v;v=v->next) {
++     bool z;
++ 
++@@ -739,13 +247,6 @@ sgc_contblock_sweep_phase(void) {
++ 
++ }
++ 
++-
++-
++-#define PAGE_ROUND_UP(adr) \
++-    ((char *)(PAGESIZE*(((long)(adr)+PAGESIZE -1) >> PAGEWIDTH)))
++-
++-/* char *old_rb_start; */
++-
++ #undef tm
++ 
++ #ifdef SDEBUG
++@@ -763,11 +264,11 @@ sgc_count(object yy) {
++ 
++ fixnum writable_pages=0;
++ 
++-/* count writable pages excluding the hole */
+++/* count read-only pages */
++ static fixnum
++-sgc_count_writable(void) { 
+++sgc_count_read_only(void) { 
++ 
++-  return page(core_end)-page(rb_start)+writable_pages-(page(old_rb_start)-page(heap_end));
+++  return sgc_enabled ? sSAwritableA->s.s_dbind->v.v_dim-writable_pages : 0;
++ 
++ }
++ 
++@@ -1031,7 +532,11 @@ memprotect_test_reset(void) {
++ /* If opt_maxpage is set, add full pages to the sgc set if needed
++    too. 20040804 CM*/
++ /* #define FSGC(tm) (tm->tm_type==t_cons ? tm->tm_nppage : (tm->tm_opt_maxpage ? 0 : tm->tm_sgc_minfree)) */
+++#ifdef SGC_WHOLE_PAGE
+++#define FSGC(tm) tm->tm_nppage
+++#else
++ #define FSGC(tm) (!TYPEWORD_TYPE_P(tm->tm_type) ? tm->tm_nppage : tm->tm_sgc_minfree)
+++#endif
++ 
++ DEFVAR("*WRITABLE*",sSAwritableA,SI,Cnil,"");
++ 
++@@ -1047,13 +552,16 @@ sgc_start(void) {
++   object omp=sSAoptimize_maximum_pagesA->s.s_dbind;
++   double tmp,scale;
++ 
+++  allocate_more_pages=0;
+++  if (sgc_enabled)
+++    return 1;
+++
++   sSAoptimize_maximum_pagesA->s.s_dbind=Cnil;
++   
++   if (memprotect_result!=memprotect_success && do_memprotect_test())
++     return 0;
++ 
++-  if (sgc_enabled)
++-    return 1;
+++  empty_relblock();
++ 
++   /* Reset maxpage statistics if not invoked automatically on a hole
++      overrun. 20040804 CM*/
++@@ -1193,26 +701,7 @@ sgc_start(void) {
++ 
++   }
++ 
++-  /* Now  allocate the sgc relblock.   We do this as the tail
++-     end of the ordinary rb.     */  
++-  {
++-    char *new;
++-    tm=tm_of(t_relocatable);
++-    
++-    {
++-      old_rb_start=rb_start;
++-      if(((unsigned long)WSGC(tm)) && allocate_more_pages) {
++-     new=alloc_relblock(((unsigned long)WSGC(tm))*PAGESIZE);
++-     /* the above may cause a gc, shifting the relblock */
++-     old_rb_start=rb_start;
++-     new= PAGE_ROUND_UP(new);
++-      } else new=PAGE_ROUND_UP(rb_pointer);
++-      rb_start=rb_pointer=new;
++-    }
++-  }
++-  /* the relblock has been allocated */
++-  
++-  sSAwritableA->s.s_dbind=fSmake_vector1_1((page(rb_start)-first_data_page),aet_bit,Cnil);
+++  sSAwritableA->s.s_dbind=fSmake_vector1_1((page(heap_end)-first_data_page),aet_bit,Ct);
++   wrimap=(void *)sSAwritableA->s.s_dbind->v.v_self;
++ 
++   /* now move the sgc free lists into place.   alt_free should
++@@ -1231,12 +720,16 @@ sgc_start(void) {
++ #endif
++      if (pageinfo(f)->sgc_flags&SGC_PAGE_FLAG) {
++        SET_LINK(f,x);
+++#ifndef SGC_WHOLE_PAGE
++        if (TYPEWORD_TYPE_P(pageinfo(f)->type)) f->d.s = SGC_RECENT;
+++#endif
++        x=f;
++        count++;
++      } else {
++        SET_LINK(f,y);
+++#ifndef SGC_WHOLE_PAGE
++        if (TYPEWORD_TYPE_P(pageinfo(f)->type)) f->d.s = SGC_NORMAL;
+++#endif
++        y=f;
++      }
++      f=next;
++@@ -1253,9 +746,12 @@ sgc_start(void) {
++ 
++     {
++ 
++-      struct contblock *new_cb_pointer=NULL,*tmp_cb_pointer=NULL,**cbpp;
+++      struct contblock **cbpp;
++       void *p=NULL,*pe;
++       struct pageinfo *pi;
+++      
+++      old_cb_pointer=cb_pointer;
+++      reset_contblock_freelist();
++ 
++       for (pi=contblock_list_head;pi;pi=pi->next) {
++      
++@@ -1264,26 +760,17 @@ sgc_start(void) {
++      p=CB_DATA_START(pi);
++      pe=p+CB_DATA_SIZE(pi->in_use);
++      
++-     for (cbpp=&cb_pointer;*cbpp;)
+++     for (cbpp=&old_cb_pointer;*cbpp;)
++        if ((void *)*cbpp>=p && (void *)*cbpp<pe) {
++          void *s=*cbpp,*e=s+(*cbpp)->cb_size,*l=(*cbpp)->cb_link;
++          set_sgc_bits(pi,s,e);
++-         tmp_cb_pointer=cb_pointer;
++-         cb_pointer=new_cb_pointer;
++          insert_contblock(s,e-s);
++-         new_cb_pointer=cb_pointer;
++-         cb_pointer=tmp_cb_pointer;
++          *cbpp=l;
++        } else
++          cbpp=&(*cbpp)->cb_link;
++ 
++       }
++       
++-      /* SGC contblock pages: switch to new free SGC contblock list. CM
++-      20030827 */
++-      old_cb_pointer=cb_pointer;
++-      cb_pointer=new_cb_pointer;
++-      
++ #ifdef SGC_CONT_DEBUG
++       overlap_check(old_cb_pointer,cb_pointer);
++ #endif
++@@ -1315,11 +802,13 @@ sgc_start(void) {
++          SET_WRITABLE(i);
++     }
++ 
++-    for (i=page(heap_end);i<page(old_rb_start);i++)
++-     SET_WRITABLE(i);
++-    tm_of(t_relocatable)->tm_alt_npage=page(rb_start)-page(old_rb_start);
++-    for (i=page(rb_start);i<page(core_end);i++)
+++    {
+++      object v=sSAwritableA->s.s_dbind;
+++      for (i=page(v->v.v_self);i<=page(v->v.v_self+CEI(v->bv.bv_offset+v->v.v_dim-1,8*sizeof(fixnum))/(8*sizeof(fixnum)));i++)
++      SET_WRITABLE(i);
+++    }
+++
+++    tm_of(t_relocatable)->tm_alt_npage=0;
++ 
++     fault_pages=0;
++ 
++@@ -1363,8 +852,7 @@ sgc_quit(void) {
++ 
++   struct typemanager *tm;
++   struct contblock *tmp_cb_pointer,*next;
++-  unsigned long i,j,np;
++-  char *p;
+++  unsigned long i,np;
++   struct pageinfo *v;
++ 
++   memory_protect(0);
++@@ -1379,7 +867,6 @@ sgc_quit(void) {
++   wrimap=NULL;
++ 
++   sgc_enabled=0;
++-  rb_start = old_rb_start;
++ 
++   /* SGC cont pages: restore contblocks, each tmp_cb_pointer coming
++      from the new list is guaranteed not to be on the old. Need to
++@@ -1389,9 +876,7 @@ sgc_quit(void) {
++ #ifdef SGC_CONT_DEBUG
++     overlap_check(old_cb_pointer,cb_pointer);
++ #endif
++-    tmp_cb_pointer=cb_pointer;
++-    cb_pointer=old_cb_pointer;
++-    for (;tmp_cb_pointer;  tmp_cb_pointer=next) {
+++    for (tmp_cb_pointer=old_cb_pointer;tmp_cb_pointer;  tmp_cb_pointer=next) {
++       next=tmp_cb_pointer->cb_link;
++       insert_contblock((void *)tmp_cb_pointer,tmp_cb_pointer->cb_size);
++     }
++@@ -1440,11 +925,13 @@ sgc_quit(void) {
++ 
++   /*FIXME*/
++   /* remove the recent flag from any objects on sgc pages */
++-  for (v=cell_list_head;v;v=v->next) 
+++#ifndef SGC_WHOLE_PAGE
+++  for (v=cell_list_head;v;v=v->next)
++     if (v->type==(tm=tm_of(v->type))->tm_type && TYPEWORD_TYPE_P(v->type) && v->sgc_flags & SGC_PAGE_FLAG)
++       for (p=pagetochar(page(v)),j=tm->tm_nppage;j>0;--j,p+=tm->tm_size)
++-     ((object) p)->d.s=SGC_NORMAL;
++-
+++     ((object) p)->d.s=SGC_NORMAL;
+++#endif
+++  
++   for (v=contblock_list_head;v;v=v->next) 
++     if (v->sgc_flags&SGC_PAGE_FLAG) 
++       bzero(CB_SGCF_START(v),CB_DATA_START(v)-CB_SGCF_START(v));
++@@ -1488,7 +975,6 @@ memprotect_handler(int sig, long code, v
++   faddr = addr;
++ #endif 
++   p = page(faddr);
++-  /* p = ROUND_DOWN_PAGE_NO(p); */
++   if (p >= first_protectable_page
++       && faddr < (void *)core_end
++       && !(WRITABLE_PAGE_P(p))) {
++@@ -1560,10 +1046,10 @@ memory_protect(int on) {
++   INSTALL_MPROTECT_HANDLER;
++ 
++   beg=first_protectable_page;
++-  writable = IS_WRITABLE(beg);
+++  writable = WRITABLE_PAGE_P(beg);
++   for (i=beg ; ++i<= end; ) {
++ 
++-    if (writable==IS_WRITABLE(i) && i<=end) continue;
+++    if (writable==WRITABLE_PAGE_P(i) && i<end) continue;
++ 
++     if (sgc_mprotect(beg,i-beg,writable)) 
++       return -1;
++--- gcl-2.6.12.orig/o/string.d
+++++ gcl-2.6.12/o/string.d
++@@ -403,7 +403,7 @@ LFD(Lstring_not_equal)()   { string_sign
++             char_bits(initial_element) != 0 ||
++             char_font(initial_element) != 0)
++              initial_element
++-             = wrong_type_argument(sLstring_char, initial_element);
+++             = wrong_type_argument(sLcharacter, initial_element);
++      {BEGIN_NO_INTERRUPT;    
++      x = alloc_simple_string(fix(size));
++      x->st.st_self = alloc_relblock(fix(size));
++--- gcl-2.6.12.orig/o/structure.c
+++++ gcl-2.6.12/o/structure.c
++@@ -257,7 +257,7 @@ LFD(siLmake_structure)(void)
++ }
++ 
++ static void
++-FFN(siLcopy_structure)(void)
+++FFN(Lcopy_structure)(void)
++ {
++      object x, y;
++      struct s_data *def;
++@@ -452,7 +452,7 @@ gcl_init_structure_function(void)
++ 
++      make_si_function("MAKE-STRUCTURE", siLmake_structure);
++      make_si_function("MAKE-S-DATA-STRUCTURE",siLmake_s_data_structure);
++-     make_si_function("COPY-STRUCTURE", siLcopy_structure);
+++     make_function("COPY-STRUCTURE", Lcopy_structure);
++      make_si_function("STRUCTURE-NAME", siLstructure_name);
++      /* make_si_function("STRUCTURE-REF", siLstructure_ref); */
++      /* make_si_function("STRUCTURE-DEF", siLstructure_def); */
++--- gcl-2.6.12.orig/o/toplevel.c
+++++ gcl-2.6.12/o/toplevel.c
++@@ -68,12 +68,12 @@ FFN(Fdefun)(object args)
++      }
++      vs_base = vs_top;
++      if (lex_env[0] == Cnil && lex_env[1] == Cnil && lex_env[2] == Cnil) {
++-             vs_push(MMcons(sLlambda_block, args));
+++             vs_push(MMcons(sSlambda_block, args));
++      } else {
++              vs_push(MMcons(lex_env[2], args));
++              vs_base[0] = MMcons(lex_env[1], vs_base[0]);
++              vs_base[0] = MMcons(lex_env[0], vs_base[0]);
++-             vs_base[0] = MMcons(sLlambda_block_closure, vs_base[0]);
+++             vs_base[0] = MMcons(sSlambda_block_closure, vs_base[0]);
++      }
++      {object fname =  clear_compiler_properties(name,vs_base[0]);
++       fname->s.s_gfdef = vs_base[0];
++--- gcl-2.6.12.orig/o/typespec.c
+++++ gcl-2.6.12/o/typespec.c
++@@ -73,7 +73,7 @@ LFD(Ltype_of)(void)
++                      if ((' ' <= i && i < '\177') || i == '\n')
++                              vs_base[0] = sLstandard_char;
++                      else
++-                             vs_base[0] = sLstring_char;
+++                             vs_base[0] = sLcharacter;
++              }
++              break;
++ 
++@@ -176,7 +176,6 @@ LFD(Ltype_of)(void)
++ DEF_ORDINARY("PROCLAIMED-ARG-TYPES",sSproclaimed_arg_types,SI,"");
++ DEF_ORDINARY("PROCLAIMED-RETURN-TYPE",sSproclaimed_return_type,SI,"");
++ DEF_ORDINARY("PROCLAIMED-FUNCTION",sSproclaimed_function,SI,"");
++-DEF_ORDINARY("COMMON",sLcommon,LISP,"");
++ DEF_ORDINARY("NULL",sLnull,LISP,"");
++ DEF_ORDINARY("CONS",sLcons,LISP,"");
++ DEF_ORDINARY("LIST",sLlist,LISP,"");
++@@ -197,7 +196,6 @@ DEF_ORDINARY("CHARACTER",sLcharacter,LIS
++ DEF_ORDINARY("NUMBER",sLnumber,LISP,"");
++ DEF_ORDINARY("RATIONAL",sLrational,LISP,"");
++ DEF_ORDINARY("FLOAT",sLfloat,LISP,"");
++-DEF_ORDINARY("STRING-CHAR",sLstring_char,LISP,"");
++ DEF_ORDINARY("REAL",sLreal,LISP,"");
++ DEF_ORDINARY("INTEGER",sLinteger,LISP,"");
++ DEF_ORDINARY("RATIO",sLratio,LISP,"");
++@@ -205,7 +203,6 @@ DEF_ORDINARY("SHORT-FLOAT",sLshort_float
++ DEF_ORDINARY("STANDARD-CHAR",sLstandard_char,LISP,"");
++ DEF_ORDINARY("BOOLEAN",sLboolean,LISP,"");
++ DEF_ORDINARY("FIXNUM",sLfixnum,LISP,"");
++-DEF_ORDINARY("POSITIVE-FIXNUM",sLpositive_fixnum,LISP,"");
++ DEF_ORDINARY("COMPLEX",sLcomplex,LISP,"");
++ DEF_ORDINARY("SINGLE-FLOAT",sLsingle_float,LISP,"");
++ DEF_ORDINARY("PACKAGE",sLpackage,LISP,"");
++@@ -228,10 +225,10 @@ DEF_ORDINARY("VALUES",sLvalues,LISP,"");
++ DEF_ORDINARY("MOD",sLmod,LISP,"");
++ DEF_ORDINARY("SIGNED-BYTE",sLsigned_byte,LISP,"");
++ DEF_ORDINARY("UNSIGNED-BYTE",sLunsigned_byte,LISP,"");
++-DEF_ORDINARY("SIGNED-CHAR",sLsigned_char,LISP,"");
++-DEF_ORDINARY("UNSIGNED-CHAR",sLunsigned_char,LISP,"");
++-DEF_ORDINARY("SIGNED-SHORT",sLsigned_short,LISP,"");
++-DEF_ORDINARY("UNSIGNED-SHORT",sLunsigned_short,LISP,"");
+++DEF_ORDINARY("SIGNED-CHAR",sSsigned_char,SI,"");
+++DEF_ORDINARY("UNSIGNED-CHAR",sSunsigned_char,SI,"");
+++DEF_ORDINARY("SIGNED-SHORT",sSsigned_short,SI,"");
+++DEF_ORDINARY("UNSIGNED-SHORT",sSunsigned_short,SI,"");
++ DEF_ORDINARY("*",sLA,LISP,"");
++ DEF_ORDINARY("PLUSP",sLplusp,LISP,"");
++ DEF_ORDINARY("DIVISION-BY-ZERO",sLdivision_by_zero,LISP,"");
++@@ -244,8 +241,6 @@ DEF_ORDINARY("UNDEFINED-FUNCTION",sLunde
++ DEF_ORDINARY("UNBOUND-VARIABLE",sLunbound_variable,LISP,"");
++ DEF_ORDINARY("PACKAGE-ERROR",sLpackage_error,LISP,"");
++ 
++-/* #ifdef ANSI_COMMON_LISP */
++-/* New ansi types */
++ DEF_ORDINARY("METHOD-COMBINATION",sLmethod_combination,LISP,"");
++ DEF_ORDINARY("ARITHMETIC-ERROR",sLarithmetic_error,LISP,"");
++ DEF_ORDINARY("BASE-CHAR",sLbase_char,LISP,"");
++@@ -290,7 +285,6 @@ DEF_ORDINARY("TWO-WAY-STREAM",sLtwo_way_
++ DEF_ORDINARY("TYPE-ERROR",sLtype_error,LISP,"");
++ DEF_ORDINARY("UNBOUND-SLOT",sLunbound_slot,LISP,"");
++ DEF_ORDINARY("WARNING",sLwarning,LISP,"");
++-/* #endif */
++ 
++ DEFCONST("CHAR-SIZE",sSchar_size,SI,small_fixnum(CHAR_SIZE),"Size in bits of a character");
++ DEFCONST("SHORT-SIZE",sSshort_size,SI,small_fixnum(CHAR_SIZE*sizeof(short)),"Size in bits of a short integer");
++--- gcl-2.6.12.orig/o/unexelf.c
+++++ gcl-2.6.12/o/unexelf.c
++@@ -634,7 +634,7 @@ find_section (char *name, char *section_
++ static void
++ unexec (char *new_name, char *old_name, unsigned int data_start, unsigned int bss_start, unsigned int entry_address)
++ {
++-  int new_file, old_file, new_file_size;
+++  int new_file, old_file;
++ 
++   /* Pointers to the base of the image of the two files. */
++   caddr_t old_base, new_base;
++@@ -654,17 +654,14 @@ unexec (char *new_name, char *old_name,
++   /* Point to the section name table in the old file */
++   char *old_section_names;
++ 
++-  ElfW(Addr) old_bss_addr, new_bss_addr;
++-  ElfW(Word) old_bss_size, new_data2_size,old_bss_offset;
++-  ElfW(Off)  new_data2_offset;
++-  ElfW(Addr) new_data2_addr;
+++  ElfW(Addr) old_bss_addr, new_bss_addr,new_data2_addr;
+++  ElfW(Off)  old_bss_size, new_data2_size,old_bss_offset,new_data2_offset,old_file_size,new_file_size;
++ 
++   int n, nn;
++   int old_bss_index, old_sbss_index;
++   int old_data_index, new_data2_index;
++   int old_mdebug_index;
++   struct stat stat_buf;
++-  int old_file_size;
++ 
++   /* Open the old file, allocate a buffer of the right size, and read
++      in the file contents.  */
++--- gcl-2.6.12.orig/o/unixsave.c
+++++ gcl-2.6.12/o/unixsave.c
++@@ -140,7 +140,7 @@ char *original_file, *save_file;
++ 
++ extern void _cleanup();
++ 
++-LFD(Lsave)() {
+++LFD(siLsave)() {
++   char filename[256];
++   
++   check_arg(1);
++@@ -159,6 +159,6 @@ LFD(Lsave)() {
++ void
++ gcl_init_unixsave(void)
++ {
++-     make_function("SAVE", Lsave);
+++     make_si_function("SAVE", siLsave);
++ }
++ 
++--- gcl-2.6.12.orig/o/unixsys.c
+++++ gcl-2.6.12/o/unixsys.c
++@@ -169,7 +169,7 @@ msystem(const char *s) {
++ }
++ 
++ static void
++-FFN(Lsystem)(void)
+++FFN(siLsystem)(void)
++ {
++      char command[32768];
++      int i;
++@@ -284,6 +284,6 @@ un_mmap(void *v1,void *ve) {
++ void
++ gcl_init_unixsys(void) {
++ 
++-  make_function("SYSTEM", Lsystem);
+++  make_si_function("SYSTEM", siLsystem);
++ 
++ }
++--- gcl-2.6.12.orig/o/unixtime.c
+++++ gcl-2.6.12/o/unixtime.c
++@@ -282,7 +282,7 @@ DEFUN_NEW("CURRENT-TIMEZONE",object,fScu
++   localtime_r(&_t, &lt);
++   return (object)(gt.tm_hour-lt.tm_hour+24*(gt.tm_yday!=lt.tm_yday ? (gt.tm_year>lt.tm_year||gt.tm_yday>lt.tm_yday ? 1 : -1) : 0));
++ #else
++-  fixnum _t=time(0);
+++  time_t _t=time(0);
++   return (object)(-localtime(&_t)->tm_gmtoff/3600);
++ #endif
++ }
++@@ -296,7 +296,7 @@ DEFUN_NEW("CURRENT-DSTP",object,fScurren
++ #elif defined NO_SYSTEM_TIME_ZONE /*solaris*/
++   return Cnil;
++ #else
++-  fixnum _t=time(0);
+++  time_t _t=time(0);
++   return localtime(&_t)->tm_isdst > 0 ? Ct : Cnil;
++ #endif
++ }
++--- gcl-2.6.12.orig/pcl/defsys.lisp
+++++ gcl-2.6.12/pcl/defsys.lisp
++@@ -52,24 +52,10 @@
++ 
++ (in-package :user)
++ 
++-#+kcl (in-package :walker :use '(:lisp))
++-#+kcl (in-package :iterate :use '(:lisp :walker))
++-#+kcl (in-package :pcl :use '(:walker :iterate :lisp))
+++(load "package.lisp")
++ 
++ (eval-when (compile load eval)
++ 
++-(if (find-package ':walker)
++-    (use-package '(:lisp) ':walker)
++-    (make-package ':walker :use '(:lisp)))
++-
++-(if (find-package ':iterate)
++-    (use-package '(:lisp :walker) ':iterate)
++-    (make-package ':iterate :use '(:lisp :walker)))
++-
++-(if (find-package ':pcl)
++-    (use-package '(:walker :iterate :lisp) ':pcl)
++-    (make-package ':pcl :use '(:walker :iterate :lisp)))
++-
++ (export (intern (symbol-name :iterate)               ;Have to do this here,
++              (find-package :iterate))        ;because in the defsystem
++      (find-package :iterate))                ;(later in this file)
++@@ -90,7 +76,7 @@
++ 
++ (eval-when (compile load eval)
++ (defvar *pcl-proclaim*
++-  '(optimize (speed 3) (safety #+kcl 0 #-kcl 1) (space 0)
+++  '(optimize (speed 3) (safety 1) (space 0)
++              #+lucid (compilation-speed 0)))
++ )
++ 
++@@ -261,7 +247,6 @@ and load your system with:
++          #+Xerox-Medley         (Xerox-Medley xerox)
++          #+TI                   TI 
++          #+(and dec vax common) Vaxlisp
++-         #+KCL                  KCL
++          #+IBCL                 IBCL
++          #+gcl                  gcl
++          #+excl                 (excl franz)
++@@ -305,7 +290,6 @@ and load your system with:
++       #+Cloe-Runtime                      ("l"     . "fasl")
++       #+(and dec common vax (not ultrix)) ("LSP"   . "FAS")
++       #+(and dec common vax ultrix)       ("lsp"   . "fas")
++-      #+KCL                               ("lsp"   . "o")
++       #+IBCL                              ("lsp"   . "o")
++       #+Xerox                             ("lisp"  . "dfasl")
++       #+(and Lucid MC68000)               ("lisp"  . "lbin")
++@@ -675,7 +659,7 @@ and load your system with:
++     ;; 3.0 it's in the LUCID-COMMON-LISP package.
++     ;;
++     #+LUCID (or lucid::*source-pathname* (bad-time))
++-    #+akcl   si:*load-pathname*
+++    #+akcl  *load-pathname*
++     #+cmu17 *load-truename*
++     #-(or Lispm excl Xerox (and dec vax common) LUCID akcl cmu17) nil))
++ 
++--- gcl-2.6.12.orig/pcl/gcl_pcl_pkg.lisp
+++++ gcl-2.6.12/pcl/gcl_pcl_pkg.lisp
++@@ -176,11 +176,8 @@
++   
++   nil))
++ 
++-#+kcl
++-(progn
++-(import '(si:structurep si:structure-def si:structure-ref))
++-(shadow 'lisp:dotimes)
++-)
+++#+kcl(import '(si:structurep si:structure-def si:structure-ref))
+++
++ #+kcl
++ (in-package "SI")
++ #+kcl
++--- gcl-2.6.12.orig/pcl/gcl_pcl_walk.lisp
+++++ gcl-2.6.12/pcl/gcl_pcl_walk.lisp
++@@ -608,7 +608,7 @@
++       (push `(,(car f) .  (function  . (,#'unbound-lexical-function . nil)))
++          lexicals))
++     (dolist (m macros)
++-      (push `(,(car m)  .  (macro . ( ,(cadr m) . nil))) 
+++      (push `(,(car m)  .  (si::macro . ( ,(cadr m) . nil))) 
++          lexicals))
++     (list first lexicals third)))
++ 
++@@ -623,7 +623,7 @@
++   (when env
++      (let ((entry (assoc macro (second env))))
++        (and entry
++-            (eq (cadr entry) 'macro)
+++            (eq (cadr entry) 'si::macro)
++             (caddr entry)))))
++ );#+(or KCL IBCL)
++ 
++@@ -1202,7 +1202,7 @@
++ 
++ #+(or KCL IBCL)
++ (progn
++-  (define-walker-template lambda-block walk-named-lambda);Not really right,
+++  (define-walker-template si::lambda-block walk-named-lambda);Not really right,
++                                                       ;we don't hack block
++                                                       ;names anyways.
++   )
++@@ -1367,7 +1367,7 @@
++                       #+cmu17
++                       (special-operator-p fn)
++                       #-cmu17
++-                      (special-form-p fn))
+++                      (special-operator-p fn))
++                  (error
++                   "~S is a special form, not defined in the CommonLisp.~%~
++                    manual This code walker doesn't know how to walk it.~%~
++--- gcl-2.6.12.orig/pcl/impl/gcl/gcl_pcl_impl_low.lisp
+++++ gcl-2.6.12/pcl/impl/gcl/gcl_pcl_impl_low.lisp
++@@ -277,17 +277,17 @@ static object set_cclosure (object resul
++   (fourth slotd))
++ 
++ (defun renew-sys-files()
++-  ;; packages:
++-  (compiler::get-packages "sys-package.lisp")
++-  (with-open-file (st "sys-package.lisp"
++-                       :direction :output
++-                       :if-exists :append)
++-     (format st "(lisp::in-package \"SI\")
++-(export '(%structure-name
++-          %compiled-function-name
++-          %set-compiled-function-name))
++-(in-package \"PCL\")
++-"))
+++;;   ;; packages:
+++;;   (compiler::get-packages "sys-package.lisp")
+++;;   (with-open-file (st "sys-package.lisp"
+++;;                     :direction :output
+++;;                     :if-exists :append)
+++;;   (format st "(lisp::in-package \"SI\")
+++;; (export '(%structure-name
+++;;           %compiled-function-name
+++;;           %set-compiled-function-name))
+++;; (in-package \"PCL\")
+++;; "))
++ 
++   ;; proclaims
++   (compiler::make-all-proclaims "*.fn")
++--- gcl-2.6.12.orig/pcl/makefile
+++++ gcl-2.6.12/pcl/makefile
++@@ -9,9 +9,7 @@ GFILES:=$(addprefix gcl_pcl_gazonk,$(GFI
++ 
++ AFILES:=$(FILES) $(GFILES)
++ 
++-SETUP='(load "sys-package.lisp")' \
++-     '(setq *features* (delete (quote :kcl) *features*))'\
++-     '(load "defsys.lisp")(push (quote :kcl) *features*)' \
+++SETUP='(load "defsys.lisp")' \
++      '(setq pcl::*default-pathname-extensions* (cons "lisp" "o"))' \
++      '(setq pcl::*pathname-extensions* (cons "lisp" "o"))' \
++      '(load "sys-proclaim.lisp")' \
++--- /dev/null
+++++ gcl-2.6.12/pcl/package.lisp
++@@ -0,0 +1,21 @@
+++(in-package :user)
+++
+++(eval-when (compile load eval)
+++
+++(if (find-package :walker)
+++    (use-package '(:lisp) :walker)
+++  (make-package :walker :use '(:lisp)))
+++
+++(if (find-package :iterate)
+++    (use-package '(:lisp :walker) :iterate)
+++    (make-package :iterate :use '(:lisp :walker)))
+++
+++(if (find-package :pcl)
+++    (use-package '(:walker :iterate :lisp) :pcl)
+++    (make-package :pcl :use '(:walker :iterate :lisp))))
+++
+++(in-package :pcl)
+++(defvar *the-pcl-package* (find-package :pcl))
+++(defun load-truename (&optional errorp) *load-pathname*)
+++(import 'si::(clines defentry defcfun object void int double))
+++(import 'si::compiler-let :walker)
++--- gcl-2.6.12.orig/pcl/sys-proclaim.lisp
+++++ gcl-2.6.12/pcl/sys-proclaim.lisp
++@@ -1,775 +1,1044 @@
++ 
++-(IN-PACKAGE "PCL") 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION NIL T)
++-            INITIALIZE-CHECKING-OR-CACHING-FUNCTION-LIST MAKE-ARG-INFO
++-            RENEW-SYS-FILES ALLOCATE-FUNCALLABLE-INSTANCE-1
++-            SHOW-DFUN-CONSTRUCTORS MAKE-CACHE SHOW-EMF-CALL-TRACE
++-            INITIAL-DISPATCH-DFUN-INFO DISPATCH-DFUN-INFO
++-            IN-THE-COMPILER-P UPDATE-DISPATCH-DFUNS
++-            SHOW-FREE-CACHE-VECTORS NO-METHODS-DFUN-INFO
++-            %%ALLOCATE-INSTANCE--CLASS DEFAULT-METHOD-ONLY-DFUN-INFO
++-            BOOTSTRAP-META-BRAID GET-EFFECTIVE-METHOD-GENSYM
++-            STRUCTURE-FUNCTIONS-EXIST-P LIST-ALL-DFUNS MAKE-CPD
++-            CACHES-TO-ALLOCATE INITIAL-DFUN-INFO
++-            ALLOCATE-FUNCALLABLE-INSTANCE-2 BOOTSTRAP-BUILT-IN-CLASSES)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) *) DEFAULT-CODE-CONVERTER
++-            MAKE-FINAL-DISPATCH-DFUN PROTOTYPES-FOR-MAKE-METHOD-LAMBDA
++-            FIND-STRUCTURE-CLASS EARLY-COLLECT-INHERITANCE
++-            EMIT-ONE-INDEX-WRITERS NET-CODE-CONVERTER
++-            MAKE-DISPATCH-DFUN *NORMALIZE-TYPE COMPILE-IIS-FUNCTIONS
++-            GENERIC-FUNCTION-NAME-P EMIT-IN-CHECKING-CACHE-P
++-            EMIT-ONE-CLASS-READER GET-GENERIC-FUNCTION-INFO
++-            COMPUTE-APPLICABLE-METHODS-EMF ANALYZE-LAMBDA-LIST
++-            EMIT-ONE-INDEX-READERS EARLY-METHOD-FUNCTION PCL-DESCRIBE
++-            TYPE-FROM-SPECIALIZER FIND-WRAPPER METHOD-PROTOTYPE-FOR-GF
++-            SPECIALIZER-FROM-TYPE STRUCTURE-WRAPPER
++-            GET-DISPATCH-FUNCTION EMIT-TWO-CLASS-READER
++-            PARSE-METHOD-GROUP-SPECIFIER CLASS-EQ-TYPE
++-            EMIT-CONSTANT-VALUE EMIT-TWO-CLASS-WRITER
++-            CONVERT-TO-SYSTEM-TYPE PARSE-DEFMETHOD
++-            EMIT-ONE-CLASS-WRITER)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (*) T) |__si::MAKE-CACHING| |__si::MAKE-N-N|
++-            MAKE-INITIALIZE-INFO |__si::MAKE-NO-METHODS|
++-            |__si::MAKE-TWO-CLASS| INTERN-PV-TABLE
++-            |__si::MAKE-ARG-INFO| |__si::MAKE-ONE-INDEX-DFUN-INFO|
++-            FIX-EARLY-GENERIC-FUNCTIONS CALLED-FIN-WITHOUT-FUNCTION
++-            MAKE-FAST-METHOD-CALL STRING-APPEND |__si::MAKE-ONE-INDEX|
++-            |__si::MAKE-INITIAL| |__si::MAKE-CHECKING| ZERO
++-            |__si::MAKE-PV-TABLE| MAKE-PROGN FALSE MAKE-PV-TABLE
++-            WALKER::UNBOUND-LEXICAL-FUNCTION |__si::MAKE-DISPATCH|
++-            USE-PACKAGE-PCL TRUE |__si::MAKE-DEFAULT-METHOD-ONLY|
++-            |__si::MAKE-INITIAL-DISPATCH| |__si::MAKE-CONSTANT-VALUE|
++-            |__si::MAKE-DFUN-INFO| |__si::MAKE-STD-INSTANCE|
++-            MAKE-METHOD-CALL |__si::MAKE-CLASS-PRECEDENCE-DESCRIPTION|
++-            MAKE-FAST-INSTANCE-BOUNDP |__si::MAKE-ACCESSOR-DFUN-INFO|
++-            |STRUCTURE-OBJECT class constructor| |__si::MAKE-CACHE|
++-            |__si::MAKE-ONE-CLASS| PV-WRAPPERS-FROM-PV-ARGS)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) (OR CACHE NULL)) PV-TABLE-CACHE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T *) *) MAKE-METHOD-FUNCTION-INTERNAL
++-            PARSE-METHOD-OR-SPEC MAKE-METHOD-LAMBDA-INTERNAL
++-            COERCE-TO-CLASS MAKE-FINAL-DFUN-INTERNAL GET-FUNCTION
++-            EXTRACT-DECLARATIONS COMPILE-LAMBDA GET-FUNCTION1
++-            MAKE-CACHING-DFUN GET-METHOD-FUNCTION DISPATCH-DFUN-COST
++-            MACROEXPAND-ALL PARSE-SPECIALIZED-LAMBDA-LIST ENSURE-CLASS
++-            WALK-FORM MAKE-INSTANCE-1 GET-DFUN-CONSTRUCTOR
++-            MAP-ALL-CLASSES ENSURE-GENERIC-FUNCTION
++-            MAKE-CONSTANT-VALUE-DFUN)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) T) ACCESSOR-MISS-FUNCTION ADD-TO-CVECTOR
++-            QUALIFIER-CHECK-RUNTIME SET-FUNCTION-PRETTY-ARGLIST
++-            ADD-DIRECT-SUBCLASSES REMOVE-METHOD SET-WRAPPER
++-            DOCTOR-DFUN-FOR-THE-DEBUGGER MAKE-PLIST
++-            SYMBOL-OR-CONS-LESSP MAKE-STD-BOUNDP-METHOD-FUNCTION
++-            UPDATE-CPL METHODS-CONVERTER MAKE-DFUN-ARG-LIST
++-            MAKE-DISCRIMINATING-FUNCTION-ARGLIST
++-            STANDARD-INSTANCE-ACCESS REMTAIL DO-SATISFIES-DEFTYPE
++-            CPL-FORWARD-REFERENCED-CLASS-ERROR FIND-STANDARD-II-METHOD
++-            MAKE-UNORDERED-METHODS-EMF UPDATE-INITIALIZE-INFO-INTERNAL
++-            ADD-METHOD COMPUTE-PV |SETF PCL FIND-CLASS-PREDICATE|
++-            PROCLAIM-DEFMETHOD UPDATE-ALL-PV-TABLE-CACHES
++-            ITERATE::SIMPLE-EXPAND-ITERATE-FORM CLASS-MIGHT-PRECEDE-P
++-            MEC-ALL-CLASSES SET-FUNCALLABLE-INSTANCE-FUNCTION
++-            MAKE-DFUN-LAMBDA-LIST CHECKING-DFUN-INFO
++-            METHOD-FUNCTION-RETURNING-T PV-WRAPPERS-FROM-ALL-WRAPPERS
++-            SET-METHODS ITERATE::MV-SETQ SUPERCLASSES-COMPATIBLE-P
++-            SLOT-EXISTS-P SWAP-WRAPPERS-AND-SLOTS DESCRIBE-PACKAGE
++-            VALUE-FOR-CACHING SAUT-NOT-PROTOTYPE
++-            SET-STANDARD-SVUC-METHOD PLIST-VALUE AUGMENT-TYPE
++-            UPDATE-CLASS N-N-DFUN-INFO VARIABLE-SPECIAL-P
++-            UPDATE-STD-OR-STR-METHODS ADD-FORMS MAKE-CAXR
++-            MAKE-DLAP-LAMBDA-LIST REDIRECT-EARLY-FUNCTION-INTERNAL
++-            GET-KEY-ARG1 EMIT-N-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
++-            MAKE-INTERNAL-READER-METHOD-FUNCTION |SETF PCL FIND-CLASS|
++-            COMPUTE-CALLS PROCLAIM-DEFGENERIC WALKER::NOTE-DECLARATION
++-            SYSTEM:%SET-COMPILED-FUNCTION-NAME VARIABLE-LEXICAL-P
++-            CANONICALIZE-DEFCLASS-OPTION RAISE-METATYPE
++-            PARSE-QUALIFIER-PATTERN SAUT-NOT-CLASS-EQ
++-            MAKE-PV-TABLE-INTERNAL WALKER::ENVIRONMENT-FUNCTION
++-            COMPUTE-APPLICABLE-METHODS-FUNCTION
++-            EMIT-1-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
++-            PV-TABLE-LOOKUP VARIABLE-CLASS
++-            MAKE-FAST-METHOD-CALL-LAMBDA-LIST |SETF PCL GDEFINITION|
++-            NET-CONSTANT-CONVERTER WALKER::VARIABLE-SYMBOL-MACRO-P
++-            SYMBOL-LESSP GF-MAKE-FUNCTION-FROM-EMF
++-            REMOVE-DIRECT-SUBCLASSES UPDATE-INITS
++-            |SETF PCL METHOD-FUNCTION-PLIST| COMPUTE-STD-CPL
++-            CPL-INCONSISTENT-ERROR CHANGE-CLASS-INTERNAL
++-            FIND-SLOT-DEFINITION COMPUTE-LAYOUT NO-SLOT
++-            %SET-CCLOSURE-ENV COMPUTE-CONSTANTS
++-            SET-STRUCTURE-SVUC-METHOD GET-KEY-ARG REMOVE-SLOT-ACCESSORS
++-            MAKE-CDXR MEMF-CONSTANT-CONVERTER BOOTSTRAP-SLOT-INDEX
++-            CLASS-CAN-PRECEDE-P MEC-ALL-CLASSES-INTERNAL
++-            CLASSES-HAVE-COMMON-SUBCLASS-P MAKE-CLASS-PREDICATE
++-            SAUT-NOT-CLASS DESTRUCTURE-INTERNAL
++-            ITERATE::EXTRACT-SPECIAL-BINDINGS MAKE-EARLY-ACCESSOR
++-            MAP-PV-TABLE-REFERENCES-OF MAKE-STD-WRITER-METHOD-FUNCTION
++-            FUNCALLABLE-STANDARD-INSTANCE-ACCESS
++-            METHOD-FUNCTION-RETURNING-NIL MEC-ALL-CLASS-LISTS
++-            ADD-SLOT-ACCESSORS EMIT-1-NIL-DLAP
++-            MAKE-STD-READER-METHOD-FUNCTION
++-            CANONICALIZE-SLOT-SPECIFICATION LIST-EQ REAL-REMOVE-METHOD
++-            WALKER::ENVIRONMENT-MACRO SAUT-NOT-EQL UPDATE-SLOTS
++-            DEAL-WITH-ARGUMENTS-OPTION PRINTING-RANDOM-THING-INTERNAL
++-             WALKER::WALK-REPEAT-EVAL
++-            PV-WRAPPERS-FROM-ALL-ARGS WALKER::NOTE-LEXICAL-BINDING)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) (INTEGER 1 255)) CACHE-NKEYS)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) (INTEGER 1 256)) CACHE-LINE-SIZE)) 
++-(PROCLAIM '(FTYPE (FUNCTION (FIXNUM T T) *) COMPUTE-CACHE-PARAMETERS)) 
++-(PROCLAIM '(FTYPE (FUNCTION (FIXNUM T *) *) FIND-FREE-CACHE-LINE)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) FIELD-TYPE) CACHE-FIELD)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) FUNCTION) CACHE-LIMIT-FN
++-            FAST-METHOD-CALL-FUNCTION METHOD-CALL-FUNCTION)) 
++-(MAPC (LAMBDA (COMPILER::X)
++-        (SETF (GET COMPILER::X 'SYSTEM::PROCLAIMED-CLOSURE) T))
++-      '(TRACE-METHOD-INTERNAL FDEFINE-CAREFULLY DO-STANDARD-DEFSETF-1
++-           REDEFINE-FUNCTION)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (FIXNUM FIXNUM T) FIXNUM)
++-            COMPUTE-PRIMARY-CACHE-LOCATION)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T FIXNUM *) T) GET-CACHE-FROM-CACHE
++-            COMPUTE-PRIMARY-CACHE-LOCATION-FROM-LOCATION)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) (VALUES T T)) MAKE-KEYWORD
++-            MAKE-CLASS-PREDICATE-NAME)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T *) T) FIND-CLASS-PREDICATE FIND-CLASS-CELL
++-            USE-CONSTANT-VALUE-DFUN-P MAKE-EARLY-GF ITERATE::MAYBE-WARN
++-            TRACE-METHOD ALLOCATE-FUNCALLABLE-INSTANCE WALKER::RELIST
++-            UPDATE-DFUN USE-DISPATCH-DFUN-P PV-TABLE-LOOKUP-PV-ARGS
++-            MAKE-WRAPPER EARLY-METHOD-SPECIALIZERS
++-            INITIALIZE-METHOD-FUNCTION MAKE-FINAL-DFUN
++-            WALKER::WALKER-ENVIRONMENT-BIND-1 MAKE-TYPE-PREDICATE-NAME
++-            ALLOCATE-STRUCTURE-INSTANCE MAKE-SPECIALIZABLE
++-            CAPITALIZE-WORDS SET-DFUN ITERATE::FUNCTION-LAMBDA-P
++-            FIND-CLASS INITIALIZE-INTERNAL-SLOT-GFS SET-ARG-INFO
++-            WALKER::RELIST* ALLOCATE-STANDARD-INSTANCE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T) *) SAUT-NOT ENSURE-CLASS-VALUES
++-            EMIT-CHECKING EMIT-DEFAULT-ONLY-FUNCTION EMIT-DEFAULT-ONLY
++-            SAUT-CLASS CLASS-APPLICABLE-USING-CLASS-P EMIT-CACHING
++-            DESTRUCTURE GET-NEW-FUNCTION-GENERATOR-INTERNAL
++-            COMPUTE-TEST MAKE-DIRECT-SLOTD SLOT-NAME-LISTS-FROM-SLOTS
++-            SAUT-EQL INSURE-DFUN CHECK-INITARGS-VALUES
++-            SET-FUNCTION-NAME INITIAL-DFUN COMPUTE-STD-CPL-PHASE-1
++-            *SUBTYPEP COMPUTE-APPLICABLE-METHODS-USING-TYPES
++-            SDFUN-FOR-CACHING INVOKE-EMF SPLIT-DECLARATIONS
++-            GENERATE-FAST-CLASS-SLOT-ACCESS-P COMPUTE-CODE SLOT-VALUE
++-            SPECIALIZER-APPLICABLE-USING-TYPE-P SLOT-BOUNDP
++-            FORM-LIST-TO-LISP ITERATE::PARSE-DECLARATIONS
++-            MAKE-INSTANCE-FUNCTION-TRAP SAUT-PROTOTYPE
++-            MUTATE-SLOTS-AND-CALLS SAUT-AND SAUT-CLASS-EQ
++-            FIND-SUPERCLASS-CHAIN SLOT-UNBOUND-INTERNAL
++-            UPDATE-SLOT-VALUE-GF-INFO SLOT-MAKUNBOUND)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION NIL *) EMIT-N-N-WRITERS EMIT-N-N-READERS
++-            COUNT-ALL-DFUNS)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) T) CHECKING-FUNCTION
++-            METHOD-CALL-CALL-METHOD-ARGS EARLY-COLLECT-CPL
++-            METHOD-FUNCTION-PV-TABLE ECD-OTHER-INITARGS
++-            BOOTSTRAP-CLASS-PREDICATES CONSTANT-SYMBOL-P GDEFINITION
++-            %FBOUNDP INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION
++-            MAKE-INSTANCE-FUNCTION-SYMBOL FGEN-TEST
++-            GF-PRECOMPUTE-DFUN-AND-EMF-P VARIABLE-GLOBALLY-SPECIAL-P
++-            SLOT-INITARGS-FROM-STRUCTURE-SLOTD ARG-INFO-P
++-            STRUCTURE-TYPE-INTERNAL-SLOTDS CCLOSUREP CHECKING-CACHE
++-            GF-LAMBDA-LIST
++-            MAKE-OPTIMIZED-STRUCTURE-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-            STRUCTURE-SVUC-METHOD DISPATCH-CACHE
++-            BOOTSTRAP-ACCESSOR-DEFINITIONS FINAL-ACCESSOR-DFUN-TYPE
++-            SETFBOUNDP ONE-CLASS-P EARLY-GF-P UPDATE-C-A-M-GF-INFO
++-            FGEN-GENSYMS SORT-SLOTS MAKE-CLASS-EQ-PREDICATE N-N-CACHE
++-            SFUN-P DFUN-ARG-SYMBOL
++-            INITIALIZE-INFO-CACHED-DEFAULT-INITARGS-FUNCTION
++-            EARLY-METHOD-STANDARD-ACCESSOR-SLOT-NAME
++-            MAKE-TYPE-PREDICATE SORT-CALLS
++-            MAKE-STRUCTURE-SLOT-BOUNDP-FUNCTION TWO-CLASS-WRAPPER1
++-            USE-DEFAULT-METHOD-ONLY-DFUN-P FGEN-SYSTEM
++-            CACHING-DFUN-COST CPD-CLASS CACHING-CACHE
++-            INITIAL-DISPATCH-P LOOKUP-FGEN
++-            COMPUTE-APPLICABLE-METHODS-EMF-STD-P COMPUTE-LINE-SIZE
++-            GF-INFO-STATIC-C-A-M-EMF FAST-INSTANCE-BOUNDP-P
++-            N-N-ACCESSOR-TYPE KEYWORD-SPEC-NAME DEFAULT-TEST-CONVERTER
++-            RESET-INITIALIZE-INFO INITIAL-P
++-            INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION-SYMBOL
++-            EXPAND-MAKE-INSTANCE-FORM STRUCTURE-SLOT-BOUNDP
++-            STANDARD-SVUC-METHOD TWO-CLASS-INDEX
++-            EARLY-CLASS-PRECEDENCE-LIST MAKE-INITIAL-DFUN GMAKUNBOUND
++-            METHODS-CONTAIN-EQL-SPECIALIZER-P EXPAND-SHORT-DEFCOMBIN
++-            ACCESSOR-DFUN-INFO-CACHE MAKE-CALL-METHODS
++-            STRUCTURE-SLOTD-NAME ALLOCATE-CACHE-VECTOR
++-            RESET-CLASS-INITIALIZE-INFO GET-SETF-FUNCTION-NAME
++-            METHOD-CALL-P LEGAL-CLASS-NAME-P EXTRACT-PARAMETERS
++-            EARLY-SLOT-DEFINITION-NAME ECD-METACLASS DISPATCH-P
++-            METHOD-FUNCTION-PLIST %STD-INSTANCE-SLOTS
++-            CANONICAL-SLOT-NAME CONSTANT-VALUE-DFUN-INFO
++-            FUNCTION-RETURNING-T FUNCTION-PRETTY-ARGLIST
++-            STRUCTURE-TYPE-SLOT-DESCRIPTION-LIST CHECK-WRAPPER-VALIDITY
++-            INITIALIZE-INFO-P CPD-AFTER
++-            MAKE-OPTIMIZED-STRUCTURE-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-            ONE-INDEX-INDEX WALKER::ENV-DECLARATIONS
++-            STRUCTURE-SLOTD-TYPE MAKE-DEFAULT-METHOD-GROUP-DESCRIPTION
++-            EVAL-FORM LIST-DFUN
++-            INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-T-FUNCTION
++-            CACHE-OWNER FAST-METHOD-CALL-PV-CELL DFUN-INFO-P
++-            UPDATE-PV-TABLE-CACHE-INFO EARLY-CLASS-SLOTDS
++-            FUNCTION-RETURNING-NIL ECD-CLASS-NAME
++-            TWO-CLASS-ACCESSOR-TYPE EARLY-CLASS-DEFINITION
++-            FAST-METHOD-CALL-P INITIALIZE-INFO-CACHED-RI-VALID-P
++-            COMPUTE-MCASE-PARAMETERS GF-DFUN-INFO
++-            INITIALIZE-INFO-CACHED-COMBINED-INITARGS-FORM-LIST
++-            EARLY-METHOD-LAMBDA-LIST ONE-CLASS-WRAPPER0
++-            CLASS-PRECEDENCE-DESCRIPTION-P GET-MAKE-INSTANCE-FUNCTIONS
++-            EXPAND-LONG-DEFCOMBIN MAP-SPECIALIZERS
++-            EARLY-CLASS-DIRECT-SUBCLASSES WALKER::ENV-WALK-FORM
++-            STRUCTURE-TYPE-INCLUDED-TYPE-NAME
++-            ONE-INDEX-DFUN-INFO-ACCESSOR-TYPE GBOUNDP ECD-SOURCE
++-            CLASS-FROM-TYPE INITIALIZE-INFO-CACHED-NEW-KEYS
++-            ARG-INFO-NKEYS DEFAULT-CONSTANT-CONVERTER
++-            INITIALIZE-INFO-CACHED-COMBINED-INITIALIZE-FUNCTION
++-            STORE-FGEN EARLY-METHOD-STANDARD-ACCESSOR-P
++-            INTERN-FUNCTION-NAME NET-TEST-CONVERTER ARG-INFO-KEY/REST-P
++-            COMPLICATED-INSTANCE-CREATION-METHOD
++-            FTYPE-DECLARATION-FROM-LAMBDA-LIST
++-            GENERIC-CLOBBERS-FUNCTION DEFAULT-STRUCTUREP
++-            GF-INFO-C-A-M-EMF-STD-P ARG-INFO-VALID-P
++-            FORMAT-CYCLE-REASONS FAST-METHOD-CALL-ARG-INFO
++-            GET-MAKE-INSTANCE-FUNCTION-SYMBOL %STD-INSTANCE-WRAPPER
++-            SLOT-BOUNDP-SYMBOL INITIAL-CACHE
++-            METHOD-FUNCTION-NEEDS-NEXT-METHODS-P
++-            SYSTEM:%COMPILED-FUNCTION-NAME MAKE-CALLS-TYPE-DECLARATION
++-            UPDATE-CLASS-CAN-PRECEDE-P SLOT-READER-SYMBOL FREE-CACHE
++-            DNET-METHODS-P CONSTANT-VALUE-CACHE
++-            GET-BUILT-IN-CLASS-SYMBOL UPDATE-GFS-OF-CLASS
++-            ONE-CLASS-CACHE STD-INSTANCE-P ONE-INDEX-CACHE
++-            STRUCTURE-SLOTD-WRITER-FUNCTION FGEN-GENERATOR-LAMBDA
++-            EXTRACT-SPECIALIZER-NAMES EARLY-SLOT-DEFINITION-LOCATION
++-            DO-STANDARD-DEFSETFS-FOR-DEFCLASS %CCLOSURE-ENV
++-            EARLY-ACCESSOR-METHOD-SLOT-NAME ACCESSOR-DFUN-INFO-P
++-            INFORM-TYPE-SYSTEM-ABOUT-STD-CLASS SLOT-WRITER-SYMBOL
++-            ARG-INFO-KEYWORDS INITIALIZE-INFO-WRAPPER
++-            FAST-METHOD-CALL-NEXT-METHOD-CALL INITIAL-DISPATCH-CACHE
++-            NEXT-WRAPPER-FIELD
++-            INITIALIZE-INFO-CACHED-INITARGS-FORM-LIST CHECKING-P
++-            EXTRACT-REQUIRED-PARAMETERS GET-BUILT-IN-WRAPPER-SYMBOL
++-            INITIALIZE-INFO-CACHED-CONSTANTS
++-            STRUCTURE-SLOTD-READER-FUNCTION EARLY-METHOD-CLASS
++-            STRUCTURE-OBJECT-P DEFAULT-METHOD-ONLY-CACHE
++-            PARSE-SPECIALIZERS INTERN-EQL-SPECIALIZER
++-            COMPILE-LAMBDA-DEFERRED MAKE-CONSTANT-FUNCTION
++-            MAKE-PV-TYPE-DECLARATION ARG-INFO-APPLYP
++-            GET-PV-CELL-FOR-CLASS ONE-INDEX-DFUN-INFO-INDEX
++-            UNENCAPSULATED-FDEFINITION CHECK-CACHE
++-            WALKER::GET-IMPLEMENTATION-DEPENDENT-WALKER-TEMPLATE
++-            INITIALIZE-INFO-KEY ONE-CLASS-INDEX SYSTEM:%STRUCTURE-NAME
++-            SLOT-VECTOR-SYMBOL MAKE-PV-TABLE-TYPE-DECLARATION
++-            TWO-CLASS-CACHE PROCLAIM-INCOMPATIBLE-SUPERCLASSES
++-            BUILT-IN-OR-STRUCTURE-WRAPPER1 ECD-SUPERCLASS-NAMES
++-            STRUCTURE-TYPE CLASS-HAS-A-FORWARD-REFERENCED-SUPERCLASS-P
++-            N-N-P INTERNED-SYMBOL-P DEFAULT-METHOD-ONLY-P
++-            EARLY-CLASS-SLOTS NO-METHODS-P ARG-INFO-NUMBER-OPTIONAL
++-            ONE-INDEX-P GET-MAKE-INSTANCE-FUNCTION EARLY-CLASS-NAME
++-            METHOD-FUNCTION-FROM-FAST-FUNCTION MAKE-PERMUTATION-VECTOR
++-            ONE-CLASS-ACCESSOR-TYPE TWO-CLASS-P BUILT-IN-WRAPPER-OF
++-            FREE-CACHE-VECTOR GET-CACHE-VECTOR ARG-INFO-LAMBDA-LIST
++-            UPDATE-GF-INFO ONE-INDEX-DFUN-INFO-CACHE %SYMBOL-FUNCTION
++-            ACCESSOR-DFUN-INFO-ACCESSOR-TYPE FUNCALLABLE-INSTANCE-P
++-            ECD-CANONICAL-SLOTS EARLY-COLLECT-SLOTS
++-            INITIALIZE-INFO-CACHED-VALID-P UNPARSE-SPECIALIZERS
++-            GF-INFO-FAST-MF-P
++-            MAKE-OPTIMIZED-STRUCTURE-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
++-            EARLY-CLASS-NAME-OF GF-DFUN-CACHE CLASS-PREDICATE
++-            EXTRACT-LAMBDA-LIST CLASS-OF COPY-CACHE SYMBOL-PKG-NAME
++-            ONE-INDEX-DFUN-INFO-P WRAPPER-OF METHOD-FUNCTION-METHOD
++-            CPD-SUPERS DEFAULT-STRUCTURE-INSTANCE-P
++-            STRUCTURE-SLOTD-INIT-FORM EARLY-METHOD-QUALIFIERS
++-            LIST-LARGE-CACHE UPDATE-GF-SIMPLE-ACCESSOR-TYPE TYPE-CLASS
++-            MAKE-EQL-PREDICATE EARLY-GF-NAME UPDATE-ALL-C-A-M-GF-INFO
++-            FLUSH-CACHE-VECTOR-INTERNAL ITERATE::SEQUENCE-ACCESSOR
++-            MAP-ALL-GENERIC-FUNCTIONS STRUCTURE-TYPE-P
++-            FIND-CYCLE-REASONS DEFAULT-STRUCTURE-TYPE
++-            COMPUTE-CLASS-SLOTS WRAPPER-FOR-STRUCTURE
++-            INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-NIL-FUNCTION
++-            USE-CACHING-DFUN-P EARLY-COLLECT-DEFAULT-INITARGS
++-            DEFAULT-SECONDARY-DISPATCH-FUNCTION ONE-INDEX-ACCESSOR-TYPE
++-            WALKER::ENV-WALK-FUNCTION WALKER::ENV-LOCK
++-            STRUCTURE-SLOTD-ACCESSOR-SYMBOL
++-            METHOD-LL->GENERIC-FUNCTION-LL CACHE-P WRAPPER-FIELD
++-            INITIALIZE-INFO-BOUND-SLOTS DEFAULT-CONSTANTP
++-            MAKE-FUNCTION-INLINE COMPUTE-STD-CPL-PHASE-2
++-            CACHING-DFUN-INFO CONSTANT-VALUE-P
++-            WALKER::GET-WALKER-TEMPLATE ARG-INFO-METATYPES COUNT-DFUN
++-            MAKE-INITFUNCTION WALKER::ENV-LEXICAL-VARIABLES PV-TABLEP
++-            COMPILE-LAMBDA-UNCOMPILED UNDEFMETHOD-1
++-            GF-INFO-SIMPLE-ACCESSOR-TYPE FORCE-CACHE-FLUSHES
++-            DFUN-INFO-CACHE GFS-OF-TYPE TWO-CLASS-WRAPPER0
++-            ITERATE::VARIABLES-FROM-LET SHOW-DFUN-COSTS
++-            ARG-INFO-PRECEDENCE FGEN-GENERATOR
++-            RESET-CLASS-INITIALIZE-INFO-1 CACHING-P NO-METHODS-CACHE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (*) *) INVALID-METHOD-ERROR
++-            METHOD-COMBINATION-ERROR UNTRACE-METHOD
++-            UPDATE-MAKE-INSTANCE-FUNCTION-TABLE LIST-LARGE-CACHES)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) LIST) CACHE-OVERFLOW PV-TABLE-SLOT-NAME-LISTS
++-            PV-TABLE-CALL-LIST)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) BOOLEAN) CACHE-VALUEP)) 
++-(PROCLAIM '(FTYPE (FUNCTION NIL FIXNUM) GET-WRAPPER-CACHE-NUMBER)) 
++-(PROCLAIM '(FTYPE (FUNCTION (FIXNUM T) T) %CCLOSURE-ENV-NTHCDR)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T) *)
++-            COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO-INTERNAL
++-            WALK-METHOD-LAMBDA
++-            |(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
++-            |(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
++-            |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
++-            |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
++-            |(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
++-            |(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
++-            |(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
++-            |(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
++-            ADD-METHOD-DECLARATIONS
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
++-            MAKE-TWO-CLASS-ACCESSOR-DFUN
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
++-            |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
++-            |(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-            |(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
++-            |(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
++-            |(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
++-            |(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T T) *)
++-            |(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|
++-            ITERATE::ITERATE-TRANSFORM-BODY)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T *) *) ITERATE::RENAME-LET-BINDINGS
++-            MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE1)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T) *) CONSTANT-VALUE-MISS
++-            EMIT-ONE-OR-N-INDEX-READER/WRITER CACHING-MISS
++-            CACHE-MISS-VALUES
++-            |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
++-            WALKER::WALK-FORM-INTERNAL
++-            GET-OPTIMIZED-STD-ACCESSOR-METHOD-FUNCTION
++-            SLOT-VALUE-USING-CLASS-DFUN SLOT-BOUNDP-USING-CLASS-DFUN
++-            |(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
++-            |(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
++-            |(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
++-            MAKE-FINAL-CONSTANT-VALUE-DFUN CHECK-METHOD-ARG-INFO
++-            MAKE-OPTIMIZED-STD-BOUNDP-METHOD-FUNCTION
++-            MAKE-FINAL-CACHING-DFUN EMIT-READER/WRITER-FUNCTION
++-            SET-SLOT-VALUE
++-            |(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
++-            WALKER::WALK-LET-IF ACCESSOR-VALUES1
++-            |(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
++-            ITERATE::EXPAND-INTO-LET OPTIMIZE-SLOT-VALUE-BY-CLASS-P
++-            ITERATE::RENAME-VARIABLES
++-            EMIT-ONE-OR-N-INDEX-READER/WRITER-FUNCTION CHECKING-MISS
++-            |(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
++-            ACCESSOR-VALUES-INTERNAL GET-CLASS-SLOT-VALUE-1
++-            LOAD-LONG-DEFCOMBIN
++-            |(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
++-            |(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
++-            MAKE-OPTIMIZED-STD-WRITER-METHOD-FUNCTION
++-            |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
++-            MAKE-OPTIMIZED-STD-READER-METHOD-FUNCTION
++-            EMIT-READER/WRITER GENERATING-LISP
++-            MAKE-FINAL-N-N-ACCESSOR-DFUN
++-            |(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
++-            ITERATE::WALK-GATHERING-BODY
++-            |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
++-            GET-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-            CONVERT-METHODS)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T) *) BOOTSTRAP-ACCESSOR-DEFINITION
++-            INITIALIZE-INSTANCE-SIMPLE-FUNCTION
++-            |(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|
++-            ORDER-SPECIALIZERS MAKE-ONE-CLASS-ACCESSOR-DFUN
++-            |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
++-            |(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
++-            GET-ACCESSOR-FROM-SVUC-METHOD-FUNCTION
++-            |(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
++-            SETF-SLOT-VALUE-USING-CLASS-DFUN
++-            GENERATE-DISCRIMINATION-NET
++-            MAKE-FINAL-ONE-INDEX-ACCESSOR-DFUN
++-            |(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
++-            |(FAST-METHOD DESCRIBE-OBJECT (T T))| ACCESSOR-VALUES
++-            LOAD-SHORT-DEFCOMBIN SET-CLASS-SLOT-VALUE-1
++-            |(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
++-            REAL-MAKE-METHOD-LAMBDA EMIT-CHECKING-OR-CACHING-FUNCTION
++-            |(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
++-            |(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
++-            MAKE-SHARED-INITIALIZE-FORM-LIST
++-            |(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
++-            ACCESSOR-MISS |(FAST-METHOD NO-APPLICABLE-METHOD (T))|
++-            MAKE-FINAL-CHECKING-DFUN
++-            |(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
++-            GET-ACCESSOR-METHOD-FUNCTION
++-            |(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
++-            |(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
++-            |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
++-            |(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
++-            |(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
++-            |(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
++-            |(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++-            EMIT-CHECKING-OR-CACHING)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T) *) MEMF-CODE-CONVERTER
++-            |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-            GENERATE-DISCRIMINATION-NET-INTERNAL
++-            DO-SHORT-METHOD-COMBINATION
++-            MAKE-LONG-METHOD-COMBINATION-FUNCTION
++-            CACHE-MISS-VALUES-INTERNAL)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T *) *) MAKE-ONE-INDEX-ACCESSOR-DFUN
++-            WALKER::WALK-DECLARATIONS GET-SECONDARY-DISPATCH-FUNCTION)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T *) *) SLOT-VALUE-OR-DEFAULT NESTED-WALK-FORM
++-            LOAD-DEFGENERIC MAKE-ACCESSOR-TABLE
++-            MAKE-DEFAULT-INITARGS-FORM-LIST
++-            GET-EFFECTIVE-METHOD-FUNCTION MAKE-CHECKING-DFUN
++-            GET-COMPLEX-INITIALIZATION-FUNCTIONS MAKE-N-N-ACCESSOR-DFUN
++-            GET-SIMPLE-INITIALIZATION-FUNCTION MAKE-FINAL-ACCESSOR-DFUN
++-            TYPES-FROM-ARGUMENTS MAKE-EFFECTIVE-METHOD-FUNCTION
++-            COMPUTE-SECONDARY-DISPATCH-FUNCTION)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T T T T T *) *) REAL-MAKE-A-METHOD)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T) SIMPLE-VECTOR) CACHE-VECTOR)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T) T) BOOTSTRAP-MAKE-SLOT-DEFINITION
++-            |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-            LOAD-DEFCLASS MAKE-EARLY-CLASS-DEFINITION
++-            WALKER::WALK-TEMPLATE-HANDLE-REPEAT-1 OPTIMIZE-GF-CALL
++-            EMIT-SLOT-ACCESS REAL-LOAD-DEFCLASS SET-ARG-INFO1)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T) T)
++-            |(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
++-            |(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
++-            |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
++-            |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
++-            EXPAND-EMF-CALL-METHOD
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
++-            COMPUTE-PV-SLOT
++-            |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-            |(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
++-            UPDATE-SLOTS-IN-PV BOOTSTRAP-MAKE-SLOT-DEFINITIONS
++-            WALKER::WALK-TEMPLATE-HANDLE-REPEAT WALKER::WALK-BINDINGS-1
++-            OPTIMIZE-ACCESSOR-CALL REAL-MAKE-METHOD-INITARGS-FORM
++-            |(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
++-            |(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
++-            MAKE-EMF-CACHE MAKE-METHOD-INITARGS-FORM-INTERNAL1
++-            BOOTSTRAP-ACCESSOR-DEFINITIONS1
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
++-            MAKE-INSTANCE-FUNCTION-COMPLEX MAKE-FGEN
++-            |(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
++-            |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
++-            MAKE-FINAL-ORDINARY-DFUN-INTERNAL
++-            |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-            MAKE-INSTANCE-FUNCTION-SIMPLE OPTIMIZE-INSTANCE-ACCESS
++-            MAKE-PARAMETER-REFERENCES
++-            GET-MAKE-INSTANCE-FUNCTION-INTERNAL
++-            |(FAST-METHOD SLOT-UNBOUND (T T T))|
++-            |(FAST-METHOD (SETF DOCUMENTATION) (T T))|
++-            |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
++-            |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-            LOAD-FUNCTION-GENERATOR
++-            |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
++-            |(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
++-            |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
++-            |(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
++-            OPTIMIZE-GENERIC-FUNCTION-CALL)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T *) T) EMIT-FETCH-WRAPPER FILL-CACHE
++-            GET-METHOD CHECK-INITARGS-2-PLIST MAKE-EMF-CALL
++-            CHECK-INITARGS-1 WALKER::WALK-ARGLIST REAL-GET-METHOD
++-            CAN-OPTIMIZE-ACCESS1 CHECK-INITARGS-2-LIST)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T) T) ONE-CLASS-DFUN-INFO
++-            |(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))| SORT-METHODS
++-            OPTIMIZE-GF-CALL-INTERNAL WALKER::WALK-LABELS
++-            |(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
++-            |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
++-            WALKER::WALK-DO
++-            |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
++-            ITERATE::RENAME-AND-CAPTURE-VARIABLES EXPAND-DEFGENERIC
++-            |(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
++-            |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
++-            FLUSH-CACHE-TRAP WALKER::WALK-MACROLET
++-            |(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
++-            |(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
++-            COMPUTE-EFFECTIVE-METHOD OPTIMIZE-SET-SLOT-VALUE
++-            WALKER::WALK-SYMBOL-MACROLET OPTIMIZE-SLOT-BOUNDP
++-            |(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
++-            GET-FUNCTION-GENERATOR FIX-SLOT-ACCESSORS
++-            SET-FUNCTION-NAME-1 WALKER::WALK-LET EMIT-BOUNDP-CHECK
++-            INITIALIZE-INTERNAL-SLOT-GFS* PRINT-CACHE WALKER::WALK-IF
++-            WALKER::WALK-SETQ WALKER::RELIST-INTERNAL
++-            |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
++-            EMIT-1-T-DLAP CAN-OPTIMIZE-ACCESS WALKER::WALK-COMPILER-LET
++-            |(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
++-            |SETF PCL METHOD-FUNCTION-GET|
++-            |(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
++-            GET-NEW-FUNCTION-GENERATOR WALKER::WALK-UNEXPECTED-DECLARE
++-            |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
++-            VARIABLE-DECLARATION
++-            |(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
++-            MAP-ALL-ORDERS ONE-INDEX-DFUN-INFO WALKER::WALK-LAMBDA
++-            |(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
++-            NOTE-PV-TABLE-REFERENCE WALKER::RECONS
++-            STANDARD-COMPUTE-EFFECTIVE-METHOD
++-            |(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
++-            |SETF PCL PLIST-VALUE| EMIT-GREATER-THAN-1-DLAP
++-            MAKE-METHOD-SPEC ITERATE::OPTIMIZE-GATHERING-FORM
++-            OPTIMIZE-SLOT-VALUE PRINT-STD-INSTANCE COMPUTE-PRECEDENCE
++-            WALKER::WALK-TAGBODY WALKER::WALK-NAMED-LAMBDA
++-            |(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
++-            SKIP-FAST-SLOT-ACCESS-P TRACE-EMF-CALL-INTERNAL
++-            |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
++-            |(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
++-            |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
++-            ITERATE::SIMPLE-EXPAND-GATHERING-FORM
++-            |(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
++-            SORT-APPLICABLE-METHODS SKIP-OPTIMIZE-SLOT-VALUE-BY-CLASS-P
++-            OBSOLETE-INSTANCE-TRAP WALKER::WALK-PROG
++-            |(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
++-            INVALIDATE-WRAPPER
++-            |(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
++-            |(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-            |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-            ENTRY-IN-CACHE-P WALKER::WALK-TAGBODY-1
++-            |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
++-            MAKE-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-            |(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
++-            WALKER::WALK-LOCALLY WALKER::WALK-MULTIPLE-VALUE-BIND
++-            |(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
++-            |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
++-            WRAP-METHOD-GROUP-SPECIFIER-BINDINGS WALKER::WALK-LET*
++-            |(FAST-METHOD CLASS-PREDICATE-NAME (T))|
++-            |(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
++-            |(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
++-            EMIT-SLOT-READ-FORM FIRST-FORM-TO-LISP
++-            MAKE-OPTIMIZED-STD-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
++-            |(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
++-            WALKER::WITH-AUGMENTED-ENVIRONMENT-INTERNAL
++-            WALKER::WALK-PROG* WALKER::WALK-FLET
++-            |(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
++-            MAKE-OPTIMIZED-STD-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-            |(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
++-            MAKE-METHOD-INITARGS-FORM-INTERNAL WALKER::WALK-DO*
++-            MAKE-TOP-LEVEL-FORM
++-            |(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
++-            |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
++-            |(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
++-            ITERATE::OPTIMIZE-ITERATE-FORM DECLARE-STRUCTURE
++-            MAKE-DFUN-CALL ITERATE::VARIABLE-SAME-P
++-            |(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-            WALKER::WALK-MULTIPLE-VALUE-SETQ CONVERT-TABLE
++-            |(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
++-            |(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T) T)
++-            |(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
++-            EMIT-CHECKING-OR-CACHING-FUNCTION-PRELIMINARY
++-            |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++-            WALKER::WALK-LET/LET*
++-            |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-            |(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
++-            |(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
++-            MAKE-EFFECTIVE-METHOD-FUNCTION-TYPE
++-            |(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
++-            |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-            |(FAST-METHOD DOCUMENTATION (T))|
++-            |(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
++-            MAYBE-EXPAND-ACCESSOR-FORM BOOTSTRAP-SET-SLOT
++-            |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
++-            WALKER::WALK-TEMPLATE
++-            |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
++-            |(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
++-            |(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
++-            GET-WRAPPERS-FROM-CLASSES
++-            |(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
++-            MAKE-EFFECTIVE-METHOD-FUNCTION1
++-            |(FAST-METHOD PRINT-OBJECT (CLASS T))|
++-            |(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
++-            |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
++-            EXPAND-CACHE EXPAND-DEFCLASS
++-            |(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
++-            |(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
++-            |(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
++-            |(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
++-            |(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
++-            |(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
++-            |(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-            |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-            MAKE-EFFECTIVE-METHOD-FUNCTION-INTERNAL
++-            |(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
++-            |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-            |(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
++-            TWO-CLASS-DFUN-INFO
++-            |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-            |(FAST-METHOD PRINT-OBJECT (T T))|
++-            |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
++-            FILL-CACHE-P MEMF-TEST-CONVERTER
++-            |(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
++-            WALKER::WALK-BINDINGS-2
++-            |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
++-            |(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-            |(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
++-            |(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-            |(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
++-            WALKER::WALK-DO/DO* ADJUST-CACHE
++-            |(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-            |(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-            |(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
++-            OPTIMIZE-READER
++-            |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
++-            |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
++-            |(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
++-            EXPAND-SYMBOL-MACROLET-INTERNAL
++-            |(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
++-            |(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
++-            MAKE-DISPATCH-LAMBDA
++-            |(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
++-            |(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
++-            INITIALIZE-INSTANCE-SIMPLE
++-            |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
++-            OPTIMIZE-WRITER
++-            |(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
++-            |(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
++-            |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
++-            |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-            LOAD-PRECOMPILED-IIS-ENTRY
++-            LOAD-PRECOMPILED-DFUN-CONSTRUCTOR
++-            |(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
++-            |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-            |(FAST-METHOD DOCUMENTATION (DOCUMENTATION-MIXIN))|
++-            WALKER::WALK-PROG/PROG*
++-            |(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
++-            |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
++-            |(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
++-            |(FAST-METHOD MAKE-INSTANCE (CLASS))|
++-            |(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
++-            |(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
++-            |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T *) T) COMPUTE-SECONDARY-DISPATCH-FUNCTION1
++-            FIND-CLASS-PREDICATE-FROM-CELL
++-            ENSURE-GENERIC-FUNCTION-USING-CLASS GET-DECLARATION
++-            METHOD-FUNCTION-GET CPL-ERROR EMIT-MISS
++-            PRECOMPUTE-EFFECTIVE-METHODS GET-METHOD-FUNCTION-PV-CELL
++-            MAP-CACHE EXPAND-EFFECTIVE-METHOD-FUNCTION
++-            MAKE-EMF-FROM-METHOD GET-EFFECTIVE-METHOD-FUNCTION1
++-            REAL-ENSURE-GF-USING-CLASS--GENERIC-FUNCTION
++-            NAMED-OBJECT-PRINT-FUNCTION
++-            MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE PROBE-CACHE
++-            INITIALIZE-INFO REAL-ENSURE-GF-USING-CLASS--NULL
++-            FIND-CLASS-FROM-CELL WALKER::CONVERT-MACRO-TO-LAMBDA
++-            REAL-ADD-METHOD RECORD-DEFINITION)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T *) T) MAKE-DEFMETHOD-FORM
++-            MAKE-DEFMETHOD-FORM-INTERNAL LOAD-DEFMETHOD
++-            EARLY-MAKE-A-METHOD)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T *) T) EMIT-DLAP
++-            GET-SECONDARY-DISPATCH-FUNCTION1)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T FIXNUM) T) COMPUTE-STD-CPL-PHASE-3)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T T T) T)
++-            GET-SECONDARY-DISPATCH-FUNCTION2)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T *) T) REAL-ADD-NAMED-METHOD
++-            EARLY-ADD-NAMED-METHOD FILL-DFUN-CACHE)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T T) T)
++-            |(FAST-METHOD SLOT-MISSING (T T T T))|
++-            LOAD-DEFMETHOD-INTERNAL EXPAND-DEFMETHOD)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T FIXNUM) T) GET-CACHE
++-            FILL-CACHE-FROM-CACHE-P)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T T T T T T T T T *) T)
++-            BOOTSTRAP-INITIALIZE-CLASS)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) FIXNUM) N-N-ACCESSORS-LIMIT-FN
++-            FAST-INSTANCE-BOUNDP-INDEX PV-TABLE-PV-SIZE
++-            ARG-INFO-NUMBER-REQUIRED EARLY-CLASS-SIZE DEFAULT-LIMIT-FN
++-            CHECKING-LIMIT-FN ONE-INDEX-LIMIT-FN CPD-COUNT CACHE-COUNT
++-            PV-CACHE-LIMIT-FN CACHING-LIMIT-FN)) 
++-(PROCLAIM '(FTYPE (FUNCTION (FIXNUM) T) POWER-OF-TWO-CEILING)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T T *) (VALUES T T)) SYMBOL-APPEND)) 
++-(PROCLAIM '(FTYPE (FUNCTION (T STREAM T) T) PRINT-DFUN-INFO)) 
++-(PROCLAIM
++-    '(FTYPE (FUNCTION (T) NON-NEGATIVE-FIXNUM) CACHE-NLINES CACHE-MASK
++-            CACHE-MAX-LOCATION CACHE-SIZE)) 
+++(COMMON-LISP::IN-PACKAGE "PCL") 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FUNCTION)
+++         PCL::CACHE-LIMIT-FN PCL::FAST-METHOD-CALL-FUNCTION
+++         PCL::METHOD-CALL-FUNCTION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         PCL::DISPATCH-DFUN-INFO PCL::DEFAULT-METHOD-ONLY-DFUN-INFO
+++         PCL::MAKE-CACHE PCL::BOOTSTRAP-BUILT-IN-CLASSES
+++         PCL::RENEW-SYS-FILES PCL::SHOW-EMF-CALL-TRACE PCL::MAKE-CPD
+++         PCL::BOOTSTRAP-META-BRAID PCL::CACHES-TO-ALLOCATE
+++         PCL::LIST-ALL-DFUNS PCL::INITIAL-DISPATCH-DFUN-INFO
+++         PCL::INITIAL-DFUN-INFO PCL::%%ALLOCATE-INSTANCE--CLASS
+++         PCL::MAKE-ARG-INFO PCL::ALLOCATE-FUNCALLABLE-INSTANCE-2
+++         PCL::SHOW-FREE-CACHE-VECTORS PCL::UPDATE-DISPATCH-DFUNS
+++         PCL::GET-EFFECTIVE-METHOD-GENSYM PCL::IN-THE-COMPILER-P
+++         PCL::SHOW-DFUN-CONSTRUCTORS PCL::NO-METHODS-DFUN-INFO
+++         PCL::INITIALIZE-CHECKING-OR-CACHING-FUNCTION-LIST
+++         PCL::ALLOCATE-FUNCALLABLE-INSTANCE-1
+++         PCL::STRUCTURE-FUNCTIONS-EXIST-P)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) PCL::FIELD-TYPE)
+++         PCL::CACHE-FIELD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             COMMON-LISP::SIMPLE-VECTOR)
+++         PCL::CACHE-VECTOR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::INTEGER 1 256))
+++         PCL::CACHE-LINE-SIZE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::INTEGER 1 255))
+++         PCL::CACHE-NKEYS)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'SYSTEM::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(PCL::REDEFINE-FUNCTION PCL::DO-STANDARD-DEFSETF-1
+++         PCL::FDEFINE-CAREFULLY PCL::TRACE-METHOD-INTERNAL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
+++         PCL::SYMBOL-APPEND)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         PCL::FAST-METHOD-CALL-NEXT-METHOD-CALL
+++         PCL::GENERIC-CLOBBERS-FUNCTION PCL::STRUCTURE-SLOTD-TYPE
+++         WALKER::GET-WALKER-TEMPLATE PCL::COMPILE-LAMBDA-UNCOMPILED
+++         PCL::EXTRACT-LAMBDA-LIST PCL::DEFAULT-METHOD-ONLY-P
+++         PCL::DISPATCH-CACHE PCL::STRUCTURE-SLOTD-NAME
+++         PCL::FAST-METHOD-CALL-P PCL::SFUN-P
+++         PCL::FTYPE-DECLARATION-FROM-LAMBDA-LIST
+++         PCL::EARLY-CLASS-DEFINITION PCL::CONSTANT-SYMBOL-P
+++         PCL::ARG-INFO-LAMBDA-LIST WALKER::ENV-LEXICAL-VARIABLES
+++         PCL::INTERN-EQL-SPECIALIZER PCL::PARSE-SPECIALIZERS
+++         PCL::%STD-INSTANCE-WRAPPER PCL::UPDATE-ALL-C-A-M-GF-INFO
+++         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITIALIZE-FUNCTION
+++         PCL::STORE-FGEN PCL::COMPUTE-MCASE-PARAMETERS
+++         PCL::INTERNED-SYMBOL-P PCL::MAKE-CALL-METHODS
+++         PCL::USE-CACHING-DFUN-P PCL::LEGAL-CLASS-NAME-P
+++         WALKER::VARIABLE-GLOBALLY-SPECIAL-P PCL::FUNCTION-RETURNING-T
+++         PCL::METHOD-FUNCTION-METHOD PCL::GET-BUILT-IN-CLASS-SYMBOL
+++         PCL::DEFAULT-STRUCTURE-TYPE PCL::GF-DFUN-INFO PCL::CACHING-P
+++         PCL::FREE-CACHE-VECTOR PCL::ONE-CLASS-CACHE
+++         PCL::DEFAULT-TEST-CONVERTER PCL::UNDEFMETHOD-1
+++         PCL::MAKE-INITFUNCTION PCL::GET-CACHE-VECTOR
+++         PCL::CLASS-PRECEDENCE-DESCRIPTION-P PCL::GF-INFO-FAST-MF-P
+++         PCL::ECD-SOURCE PCL::INITIAL-P PCL::ARG-INFO-APPLYP
+++         PCL::ARG-INFO-KEYWORDS
+++         PCL::MAKE-DEFAULT-METHOD-GROUP-DESCRIPTION
+++         PCL::CACHING-DFUN-COST PCL::INITIAL-DISPATCH-P PCL::EVAL-FORM
+++         PCL::MAKE-CONSTANT-FUNCTION PCL::FUNCTION-RETURNING-NIL
+++         PCL::INITIALIZE-INFO-BOUND-SLOTS PCL::FGEN-GENSYMS
+++         PCL::EXPAND-SHORT-DEFCOMBIN WALKER::ENV-LOCK
+++         PCL::INITIALIZE-INFO-CACHED-CONSTANTS
+++         PCL::INITIALIZE-INFO-WRAPPER
+++         PCL::STRUCTURE-TYPE-INCLUDED-TYPE-NAME PCL::TWO-CLASS-INDEX
+++         PCL::ONE-INDEX-ACCESSOR-TYPE
+++         PCL::EARLY-COLLECT-DEFAULT-INITARGS WALKER::ENV-WALK-FORM
+++         PCL::STRUCTURE-TYPE-INTERNAL-SLOTDS PCL::MAKE-FUNCTION-INLINE
+++         PCL::FLUSH-CACHE-VECTOR-INTERNAL
+++         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-T-FUNCTION
+++         PCL::FGEN-GENERATOR PCL::CONSTANT-VALUE-P
+++         PCL::METHOD-FUNCTION-FROM-FAST-FUNCTION
+++         PCL::EARLY-CLASS-PRECEDENCE-LIST PCL::SLOT-BOUNDP-SYMBOL
+++         PCL::ARG-INFO-NUMBER-OPTIONAL
+++         PCL::GF-PRECOMPUTE-DFUN-AND-EMF-P PCL::GET-PV-CELL-FOR-CLASS
+++         PCL::CHECKING-FUNCTION PCL::USE-DEFAULT-METHOD-ONLY-DFUN-P
+++         PCL::INITIAL-DISPATCH-CACHE PCL::STRUCTURE-SVUC-METHOD
+++         PCL::NO-METHODS-CACHE PCL::GF-DFUN-CACHE PCL::%CCLOSURE-ENV
+++         PCL::CONSTANT-VALUE-CACHE PCL::BUILT-IN-WRAPPER-OF
+++         PCL::CLASS-HAS-A-FORWARD-REFERENCED-SUPERCLASS-P
+++         PCL::EARLY-COLLECT-CPL COMMON-LISP::CLASS-OF
+++         PCL::STRUCTURE-SLOTD-ACCESSOR-SYMBOL PCL::SYMBOL-PKG-NAME
+++         PCL::GDEFINITION
+++         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-NIL-FUNCTION
+++         PCL::ACCESSOR-DFUN-INFO-CACHE PCL::EXTRACT-SPECIALIZER-NAMES
+++         PCL::CHECK-WRAPPER-VALIDITY PCL::MAKE-INITIAL-DFUN
+++         PCL::WRAPPER-FIELD PCL::EARLY-SLOT-DEFINITION-LOCATION
+++         PCL::EARLY-GF-P PCL::GF-INFO-STATIC-C-A-M-EMF PCL::LOOKUP-FGEN
+++         PCL::MAKE-PV-TYPE-DECLARATION
+++         PCL::INFORM-TYPE-SYSTEM-ABOUT-STD-CLASS
+++         PCL::EARLY-METHOD-CLASS
+++         PCL::DEFAULT-SECONDARY-DISPATCH-FUNCTION
+++         WALKER::ENV-DECLARATIONS PCL::ALLOCATE-CACHE-VECTOR
+++         PCL::FUNCTION-PRETTY-ARGLIST
+++         PCL::EARLY-CLASS-DIRECT-SUBCLASSES
+++         PCL::COMPUTE-APPLICABLE-METHODS-EMF-STD-P
+++         PCL::MAKE-CLASS-EQ-PREDICATE PCL::ECD-OTHER-INITARGS
+++         PCL::GBOUNDP PCL::METHOD-FUNCTION-PV-TABLE
+++         WALKER::GET-IMPLEMENTATION-DEPENDENT-WALKER-TEMPLATE
+++         PCL::MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::FIND-CYCLE-REASONS PCL::FGEN-TEST
+++         PCL::SLOT-INITARGS-FROM-STRUCTURE-SLOTD PCL::FREE-CACHE
+++         PCL::TYPE-CLASS PCL::INITIAL-CACHE
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS
+++         PCL::STRUCTURE-SLOTD-WRITER-FUNCTION
+++         PCL::INITIALIZE-INFO-CACHED-DEFAULT-INITARGS-FUNCTION
+++         PCL::EARLY-COLLECT-SLOTS PCL::LIST-DFUN
+++         PCL::EXPAND-MAKE-INSTANCE-FORM PCL::N-N-CACHE
+++         PCL::MAKE-TYPE-PREDICATE PCL::INTERN-FUNCTION-NAME
+++         PCL::GET-MAKE-INSTANCE-FUNCTIONS WALKER::ENV-WALK-FUNCTION
+++         PCL::TWO-CLASS-CACHE PCL::MAKE-CALLS-TYPE-DECLARATION
+++         PCL::MAKE-STRUCTURE-SLOT-BOUNDP-FUNCTION
+++         PCL::INITIALIZE-INFO-KEY PCL::GF-LAMBDA-LIST
+++         ITERATE::VARIABLES-FROM-LET PCL::COMPUTE-CLASS-SLOTS
+++         PCL::DFUN-ARG-SYMBOL PCL::CHECKING-P PCL::ARG-INFO-P
+++         PCL::INITIALIZE-INFO-CACHED-RI-VALID-P PCL::CHECKING-CACHE
+++         PCL::METHOD-FUNCTION-PLIST PCL::STRUCTURE-OBJECT-P
+++         PCL::ARG-INFO-PRECEDENCE PCL::ONE-CLASS-INDEX
+++         PCL::STD-INSTANCE-P PCL::STRUCTURE-TYPE-SLOT-DESCRIPTION-LIST
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::EARLY-SLOT-DEFINITION-NAME PCL::UNPARSE-SPECIALIZERS
+++         PCL::STRUCTURE-TYPE-P PCL::ACCESSOR-DFUN-INFO-ACCESSOR-TYPE
+++         PCL::PV-TABLEP PCL::CLASS-FROM-TYPE
+++         PCL::GF-INFO-SIMPLE-ACCESSOR-TYPE PCL::STRUCTURE-TYPE
+++         PCL::MAKE-EQL-PREDICATE PCL::TWO-CLASS-ACCESSOR-TYPE
+++         PCL::DEFAULT-STRUCTURE-INSTANCE-P
+++         PCL::EARLY-METHOD-STANDARD-ACCESSOR-SLOT-NAME
+++         PCL::ONE-INDEX-DFUN-INFO-ACCESSOR-TYPE PCL::GFS-OF-TYPE
+++         PCL::DEFAULT-STRUCTUREP PCL::EARLY-CLASS-NAME-OF
+++         PCL::%STD-INSTANCE-SLOTS PCL::ONE-INDEX-INDEX PCL::WRAPPER-OF
+++         PCL::ARG-INFO-VALID-P PCL::KEYWORD-SPEC-NAME
+++         PCL::METHOD-CALL-P PCL::SHOW-DFUN-COSTS PCL::DFUN-INFO-CACHE
+++         PCL::DEFAULT-CONSTANT-CONVERTER ITERATE::SEQUENCE-ACCESSOR
+++         PCL::COUNT-DFUN PCL::EXPAND-LONG-DEFCOMBIN
+++         PCL::CACHING-DFUN-INFO PCL::INITIALIZE-INFO-CACHED-VALID-P
+++         PCL::FAST-INSTANCE-BOUNDP-P PCL::ARG-INFO-METATYPES
+++         PCL::EXTRACT-PARAMETERS PCL::GF-INFO-C-A-M-EMF-STD-P
+++         PCL::FINAL-ACCESSOR-DFUN-TYPE PCL::GMAKUNBOUND
+++         PCL::FAST-METHOD-CALL-ARG-INFO PCL::COMPUTE-LINE-SIZE
+++         PCL::ONE-INDEX-CACHE PCL::NO-METHODS-P
+++         PCL::COMPUTE-STD-CPL-PHASE-2
+++         PCL::COMPLICATED-INSTANCE-CREATION-METHOD
+++         PCL::MAKE-PERMUTATION-VECTOR PCL::CONSTANT-VALUE-DFUN-INFO
+++         PCL::TWO-CLASS-WRAPPER1 PCL::MAP-ALL-GENERIC-FUNCTIONS
+++         PCL::CLASS-PREDICATE SYSTEM::%STRUCTURE-NAME
+++         PCL::RESET-CLASS-INITIALIZE-INFO
+++         PCL::BUILT-IN-OR-STRUCTURE-WRAPPER1 PCL::EARLY-CLASS-NAME
+++         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::UPDATE-PV-TABLE-CACHE-INFO PCL::SLOT-READER-SYMBOL
+++         PCL::ARG-INFO-NKEYS PCL::METHOD-CALL-CALL-METHOD-ARGS
+++         PCL::CCLOSUREP PCL::DEFAULT-METHOD-ONLY-CACHE
+++         PCL::NEXT-WRAPPER-FIELD PCL::SLOT-WRITER-SYMBOL
+++         PCL::ACCESSOR-DFUN-INFO-P
+++         PCL::GET-MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::EXTRACT-REQUIRED-PARAMETERS PCL::FORMAT-CYCLE-REASONS
+++         PCL::UNENCAPSULATED-FDEFINITION
+++         PCL::GET-BUILT-IN-WRAPPER-SYMBOL PCL::ONE-CLASS-P
+++         PCL::ECD-METACLASS PCL::METHOD-LL->GENERIC-FUNCTION-LL
+++         PCL::PROCLAIM-INCOMPATIBLE-SUPERCLASSES PCL::ONE-INDEX-P
+++         PCL::INITIALIZE-INFO-CACHED-INITARGS-FORM-LIST
+++         PCL::ECD-CANONICAL-SLOTS
+++         PCL::METHOD-FUNCTION-NEEDS-NEXT-METHODS-P
+++         PCL::INITIALIZE-INFO-CACHED-NEW-KEYS
+++         PCL::STRUCTURE-SLOTD-READER-FUNCTION
+++         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITARGS-FORM-LIST
+++         PCL::DISPATCH-P PCL::LIST-LARGE-CACHE
+++         PCL::FAST-METHOD-CALL-PV-CELL PCL::GET-MAKE-INSTANCE-FUNCTION
+++         PCL::DNET-METHODS-P PCL::STRUCTURE-SLOTD-INIT-FORM
+++         PCL::UPDATE-CLASS-CAN-PRECEDE-P PCL::ONE-CLASS-ACCESSOR-TYPE
+++         PCL::RESET-INITIALIZE-INFO PCL::STANDARD-SVUC-METHOD
+++         PCL::DEFAULT-CONSTANTP PCL::UPDATE-C-A-M-GF-INFO
+++         PCL::ONE-INDEX-DFUN-INFO-CACHE PCL::EARLY-CLASS-SLOTS
+++         PCL::CPD-SUPERS PCL::FGEN-GENERATOR-LAMBDA
+++         PCL::ECD-SUPERCLASS-NAMES PCL::ECD-CLASS-NAME PCL::SETFBOUNDP
+++         PCL::GET-SETF-FUNCTION-NAME PCL::DFUN-INFO-P
+++         PCL::SLOT-VECTOR-SYMBOL PCL::INITIALIZE-INFO-P
+++         PCL::TWO-CLASS-P PCL::UPDATE-GF-SIMPLE-ACCESSOR-TYPE
+++         PCL::COPY-CACHE PCL::MAKE-PV-TABLE-TYPE-DECLARATION
+++         PCL::SORT-CALLS PCL::STRUCTURE-SLOT-BOUNDP PCL::%FBOUNDP
+++         PCL::RESET-CLASS-INITIALIZE-INFO-1 PCL::UPDATE-GF-INFO
+++         PCL::WRAPPER-FOR-STRUCTURE PCL::FUNCALLABLE-INSTANCE-P
+++         PCL::CPD-CLASS PCL::EARLY-METHOD-STANDARD-ACCESSOR-P
+++         PCL::SORT-SLOTS PCL::CANONICAL-SLOT-NAME
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
+++         PCL::EARLY-ACCESSOR-METHOD-SLOT-NAME PCL::%SYMBOL-FUNCTION
+++         PCL::EARLY-METHOD-LAMBDA-LIST PCL::ONE-INDEX-DFUN-INFO-INDEX
+++         PCL::N-N-ACCESSOR-TYPE PCL::CACHING-CACHE
+++         PCL::EARLY-CLASS-SLOTDS PCL::ONE-INDEX-DFUN-INFO-P
+++         SYSTEM::%COMPILED-FUNCTION-NAME
+++         PCL::BOOTSTRAP-CLASS-PREDICATES PCL::NET-TEST-CONVERTER
+++         PCL::DO-STANDARD-DEFSETFS-FOR-DEFCLASS PCL::TWO-CLASS-WRAPPER0
+++         PCL::MAP-SPECIALIZERS PCL::EARLY-GF-NAME PCL::N-N-P
+++         PCL::FGEN-SYSTEM PCL::METHODS-CONTAIN-EQL-SPECIALIZER-P
+++         PCL::UPDATE-GFS-OF-CLASS PCL::ONE-CLASS-WRAPPER0
+++         PCL::CPD-AFTER
+++         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION
+++         PCL::CACHE-P PCL::EARLY-METHOD-QUALIFIERS PCL::CHECK-CACHE
+++         PCL::FORCE-CACHE-FLUSHES PCL::CACHE-OWNER
+++         PCL::COMPILE-LAMBDA-DEFERRED PCL::ARG-INFO-KEY/REST-P)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         COMMON-LISP::INVALID-METHOD-ERROR PCL::LIST-LARGE-CACHES
+++         PCL::UPDATE-MAKE-INSTANCE-FUNCTION-TABLE PCL::UNTRACE-METHOD
+++         COMMON-LISP::METHOD-COMBINATION-ERROR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             PCL::NON-NEGATIVE-FIXNUM)
+++         PCL::CACHE-MAX-LOCATION PCL::CACHE-NLINES PCL::CACHE-SIZE
+++         PCL::CACHE-MASK)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::MAKE-INTERNAL-READER-METHOD-FUNCTION
+++         ITERATE::SIMPLE-EXPAND-ITERATE-FORM PCL::ADD-DIRECT-SUBCLASSES
+++         PCL::PROCLAIM-DEFMETHOD PCL::UPDATE-INITIALIZE-INFO-INTERNAL
+++         PCL::RAISE-METATYPE PCL::CLASS-CAN-PRECEDE-P
+++         WALKER::VARIABLE-SPECIAL-P PCL::GF-MAKE-FUNCTION-FROM-EMF
+++         PCL::|SETF PCL METHOD-FUNCTION-PLIST|
+++         PCL::SET-FUNCTION-PRETTY-ARGLIST
+++         PCL::FUNCALLABLE-STANDARD-INSTANCE-ACCESS
+++         PCL::MAKE-DISCRIMINATING-FUNCTION-ARGLIST
+++         PCL::DEAL-WITH-ARGUMENTS-OPTION WALKER::NOTE-DECLARATION
+++         PCL::MAKE-CLASS-PREDICATE PCL::VALUE-FOR-CACHING
+++         PCL::EMIT-1-NIL-DLAP PCL::MAKE-CAXR PCL::SYMBOL-LESSP
+++         PCL::GET-KEY-ARG1 PCL::ADD-FORMS
+++         PCL::EMIT-N-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
+++         PCL::DOCTOR-DFUN-FOR-THE-DEBUGGER
+++         PCL::CLASSES-HAVE-COMMON-SUBCLASS-P PCL::N-N-DFUN-INFO
+++         PCL::CANONICALIZE-SLOT-SPECIFICATION
+++         PCL::REDIRECT-EARLY-FUNCTION-INTERNAL
+++         PCL::UPDATE-STD-OR-STR-METHODS PCL::%SET-CCLOSURE-ENV
+++         PCL::QUALIFIER-CHECK-RUNTIME
+++         PCL::MAKE-STD-READER-METHOD-FUNCTION 
+++         PCL::ADD-SLOT-ACCESSORS PCL::ADD-TO-CVECTOR
+++         PCL::COMPUTE-LAYOUT PCL::DESTRUCTURE-INTERNAL
+++         PCL::SUPERCLASSES-COMPATIBLE-P
+++         PCL::COMPUTE-APPLICABLE-METHODS-FUNCTION ITERATE::MV-SETQ
+++         PCL::COMPUTE-STD-CPL PCL::SET-METHODS PCL::CHECKING-DFUN-INFO
+++         ITERATE::EXTRACT-SPECIAL-BINDINGS PCL::SWAP-WRAPPERS-AND-SLOTS
+++         PCL::CANONICALIZE-DEFCLASS-OPTION PCL::MAKE-CDXR
+++         PCL::PRINTING-RANDOM-THING-INTERNAL COMMON-LISP::ADD-METHOD
+++         PCL::STANDARD-INSTANCE-ACCESS
+++         SYSTEM::%SET-COMPILED-FUNCTION-NAME PCL::FIND-SLOT-DEFINITION
+++         PCL::CLASS-MIGHT-PRECEDE-P
+++         PCL::MAKE-STD-BOUNDP-METHOD-FUNCTION PCL::SAUT-NOT-EQL
+++         PCL::SET-WRAPPER PCL::SET-STANDARD-SVUC-METHOD
+++         PCL::SAUT-NOT-PROTOTYPE PCL::ACCESSOR-MISS-FUNCTION
+++         PCL::NO-SLOT PCL::REMTAIL PCL::PV-WRAPPERS-FROM-ALL-ARGS
+++         PCL::UPDATE-CLASS PCL::AUGMENT-TYPE PCL::MAKE-EARLY-ACCESSOR
+++         PCL::MAKE-PLIST PCL::MEC-ALL-CLASSES-INTERNAL
+++         PCL::MAKE-STD-WRITER-METHOD-FUNCTION
+++         PCL::PARSE-QUALIFIER-PATTERN PCL::MEMF-CONSTANT-CONVERTER
+++         PCL::|SETF PCL FIND-CLASS-PREDICATE|
+++         PCL::MAKE-UNORDERED-METHODS-EMF WALKER::ENVIRONMENT-FUNCTION
+++         PCL::MEC-ALL-CLASS-LISTS PCL::SAUT-NOT-CLASS-EQ
+++         PCL::DO-SATISFIES-DEFTYPE PCL::SET-STRUCTURE-SVUC-METHOD
+++         PCL::MAKE-DLAP-LAMBDA-LIST PCL::METHOD-FUNCTION-RETURNING-T
+++         PCL::COMPUTE-CALLS PCL::REMOVE-SLOT-ACCESSORS
+++         PCL::UPDATE-ALL-PV-TABLE-CACHES PCL::MAKE-DFUN-LAMBDA-LIST
+++         WALKER::NOTE-LEXICAL-BINDING PCL::REMOVE-DIRECT-SUBCLASSES
+++         PCL::MAP-PV-TABLE-REFERENCES-OF PCL::COMPUTE-CONSTANTS
+++         PCL::METHOD-FUNCTION-RETURNING-NIL PCL::METHODS-CONVERTER
+++         PCL::PV-TABLE-LOOKUP PCL::DESCRIBE-PACKAGE
+++         COMMON-LISP::SLOT-EXISTS-P PCL::MAKE-PV-TABLE-INTERNAL
+++         PCL::SAUT-NOT-CLASS PCL::|SETF PCL FIND-CLASS|
+++         PCL::UPDATE-INITS PCL::UPDATE-CPL
+++         PCL::EMIT-1-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
+++         PCL::COMPUTE-PV WALKER::VARIABLE-LEXICAL-P
+++         PCL::PROCLAIM-DEFGENERIC PCL::MAKE-DFUN-ARG-LIST
+++         PCL::GET-KEY-ARG COMMON-LISP::REMOVE-METHOD
+++         PCL::PV-WRAPPERS-FROM-ALL-WRAPPERS PCL::VARIABLE-CLASS
+++         PCL::UPDATE-SLOTS PCL::SYMBOL-OR-CONS-LESSP
+++         PCL::MEC-ALL-CLASSES PCL::LIST-EQ
+++         PCL::SET-FUNCALLABLE-INSTANCE-FUNCTION
+++         WALKER::WALK-REPEAT-EVAL WALKER::ENVIRONMENT-MACRO
+++         WALKER::VARIABLE-SYMBOL-MACRO-P
+++         PCL::MAKE-FAST-METHOD-CALL-LAMBDA-LIST
+++         PCL::BOOTSTRAP-SLOT-INDEX PCL::PLIST-VALUE
+++         PCL::CHANGE-CLASS-INTERNAL PCL::NET-CONSTANT-CONVERTER
+++         PCL::|SETF PCL GDEFINITION| PCL::FIND-STANDARD-II-METHOD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         WALKER::WALK-FORM PCL::MAKE-INSTANCE-1
+++         PCL::EXTRACT-DECLARATIONS PCL::GET-FUNCTION
+++         WALKER::MACROEXPAND-ALL PCL::ALLOCATE-STRUCTURE-INSTANCE
+++         PCL::MAKE-FINAL-DFUN-INTERNAL PCL::GET-METHOD-FUNCTION
+++         PCL::COERCE-TO-CLASS PCL::MAP-ALL-CLASSES PCL::ENSURE-CLASS
+++         PCL::PARSE-METHOD-OR-SPEC COMMON-LISP::ENSURE-GENERIC-FUNCTION
+++         PCL::MAKE-CACHING-DFUN PCL::GET-FUNCTION1
+++         PCL::GET-DFUN-CONSTRUCTOR PCL::MAKE-CONSTANT-VALUE-DFUN
+++         PCL::MAKE-METHOD-FUNCTION-INTERNAL PCL::COMPILE-LAMBDA
+++         PCL::PARSE-SPECIALIZED-LAMBDA-LIST PCL::DISPATCH-DFUN-COST
+++         PCL::MAKE-METHOD-LAMBDA-INTERNAL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
+++         PCL::MAKE-CLASS-PREDICATE-NAME PCL::MAKE-KEYWORD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::FIND-CLASS-FROM-CELL PCL::GET-METHOD-FUNCTION-PV-CELL
+++         PCL::PROBE-CACHE PCL::NAMED-OBJECT-PRINT-FUNCTION
+++         PCL::PRECOMPUTE-EFFECTIVE-METHODS
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE
+++         PCL::GET-EFFECTIVE-METHOD-FUNCTION1 PCL::MAKE-EMF-FROM-METHOD
+++         PCL::EMIT-MISS PCL::REAL-ENSURE-GF-USING-CLASS--NULL
+++         PCL::RECORD-DEFINITION WALKER::CONVERT-MACRO-TO-LAMBDA
+++         PCL::INITIALIZE-INFO PCL::EXPAND-EFFECTIVE-METHOD-FUNCTION
+++         PCL::METHOD-FUNCTION-GET PCL::FIND-CLASS-PREDICATE-FROM-CELL
+++         PCL::ENSURE-GENERIC-FUNCTION-USING-CLASS
+++         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION1 PCL::GET-DECLARATION
+++         PCL::REAL-ENSURE-GF-USING-CLASS--GENERIC-FUNCTION
+++         PCL::MAP-CACHE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
+++         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
+++         WALKER::WALK-PROG/PROG*
+++         PCL::|(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
+++         WALKER::WALK-BINDINGS-2
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
+++         WALKER::WALK-DO/DO*
+++         PCL::|(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++         PCL::|(FAST-METHOD DOCUMENTATION (T))|
+++         PCL::|(FAST-METHOD DOCUMENTATION (DOCUMENTATION-MIXIN))|
+++         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
+++         PCL::INITIALIZE-INSTANCE-SIMPLE PCL::BOOTSTRAP-SET-SLOT
+++         PCL::|(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (CLASS T))|
+++         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
+++         PCL::FILL-CACHE-P
+++         PCL::|(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
+++         PCL::|(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
+++         PCL::OPTIMIZE-WRITER PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-TYPE
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-INTERNAL
+++         PCL::|(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION1
+++         PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
+++         PCL::|(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
+++         PCL::ADJUST-CACHE
+++         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
+++         PCL::LOAD-PRECOMPILED-DFUN-CONSTRUCTOR
+++         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++         PCL::|(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
+++         PCL::MEMF-TEST-CONVERTER
+++         PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
+++         PCL::|(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
+++         WALKER::WALK-TEMPLATE PCL::TWO-CLASS-DFUN-INFO
+++         PCL::EXPAND-CACHE
+++         PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
+++         PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
+++         PCL::GET-WRAPPERS-FROM-CLASSES
+++         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
+++         PCL::|(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++         PCL::LOAD-PRECOMPILED-IIS-ENTRY
+++         PCL::|(FAST-METHOD PRINT-OBJECT (T T))|
+++         PCL::EXPAND-SYMBOL-MACROLET-INTERNAL
+++         PCL::MAYBE-EXPAND-ACCESSOR-FORM
+++         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION-PRELIMINARY
+++         PCL::|(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
+++         PCL::|(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
+++         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++         PCL::EXPAND-DEFCLASS
+++         PCL::|(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
+++         WALKER::WALK-LET/LET* PCL::MAKE-DISPATCH-LAMBDA
+++         PCL::|(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
+++         PCL::OPTIMIZE-READER
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
+++         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++         PCL::|(FAST-METHOD MAKE-INSTANCE (CLASS))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::OPTIMIZE-SET-SLOT-VALUE
+++         PCL::|(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
+++         PCL::MAKE-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
+++         PCL::|(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
+++         PCL::PRINT-CACHE WALKER::WALK-UNEXPECTED-DECLARE
+++         ITERATE::OPTIMIZE-ITERATE-FORM
+++         PCL::|(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
+++         WALKER::WALK-MULTIPLE-VALUE-SETQ PCL::FIRST-FORM-TO-LISP
+++         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
+++         WALKER::WALK-LABELS
+++         PCL::|(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
+++         PCL::ONE-CLASS-DFUN-INFO PCL::GET-FUNCTION-GENERATOR
+++         WALKER::RELIST-INTERNAL PCL::NOTE-PV-TABLE-REFERENCE
+++         WALKER::WALK-LAMBDA PCL::WRAP-METHOD-GROUP-SPECIFIER-BINDINGS
+++         PCL::ONE-INDEX-DFUN-INFO PCL::MAP-ALL-ORDERS
+++         PCL::OPTIMIZE-GF-CALL-INTERNAL PCL::COMPUTE-PRECEDENCE
+++         WALKER::WALK-DO PCL::PRINT-STD-INSTANCE
+++         PCL::OBSOLETE-INSTANCE-TRAP PCL::SORT-APPLICABLE-METHODS
+++         PCL::|(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++         PCL::EMIT-GREATER-THAN-1-DLAP
+++         PCL::|(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++         WALKER::WALK-FLET
+++         PCL::|(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
+++         PCL::|SETF PCL PLIST-VALUE| WALKER::WALK-PROG*
+++         WALKER::VARIABLE-DECLARATION
+++         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
+++         PCL::SKIP-FAST-SLOT-ACCESS-P PCL::SET-FUNCTION-NAME-1
+++         WALKER::WALK-MACROLET PCL::CAN-OPTIMIZE-ACCESS
+++         WALKER::WITH-AUGMENTED-ENVIRONMENT-INTERNAL
+++         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
+++         PCL::|(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
+++         PCL::SKIP-OPTIMIZE-SLOT-VALUE-BY-CLASS-P
+++         PCL::|(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
+++         PCL::|(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
+++         PCL::EMIT-BOUNDP-CHECK PCL::|SETF PCL METHOD-FUNCTION-GET|
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
+++         PCL::MAKE-METHOD-SPEC PCL::FLUSH-CACHE-TRAP WALKER::WALK-IF
+++         PCL::OPTIMIZE-SLOT-BOUNDP
+++         PCL::STANDARD-COMPUTE-EFFECTIVE-METHOD
+++         WALKER::WALK-MULTIPLE-VALUE-BIND
+++         ITERATE::RENAME-AND-CAPTURE-VARIABLES WALKER::WALK-LET*
+++         WALKER::WALK-DO*
+++         PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
+++         PCL::INVALIDATE-WRAPPER
+++         PCL::|(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
+++         PCL::|(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
+++         PCL::MAKE-OPTIMIZED-STD-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
+++         ITERATE::SIMPLE-EXPAND-GATHERING-FORM PCL::ENTRY-IN-CACHE-P
+++         WALKER::WALK-LOCALLY PCL::OPTIMIZE-SLOT-VALUE
+++         PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL
+++         PCL::|(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
+++         PCL::|(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
+++         PCL::TRACE-EMF-CALL-INTERNAL WALKER::WALK-SYMBOL-MACROLET
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
+++         PCL::CONVERT-TABLE
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
+++         PCL::INITIALIZE-INTERNAL-SLOT-GFS*
+++         PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD CLASS-PREDICATE-NAME (T))|
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
+++         PCL::MAKE-OPTIMIZED-STD-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
+++         PCL::|(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
+++         WALKER::WALK-SETQ PCL::EXPAND-DEFGENERIC
+++         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
+++         ITERATE::OPTIMIZE-GATHERING-FORM PCL::FIX-SLOT-ACCESSORS
+++         PCL::EMIT-SLOT-READ-FORM WALKER::WALK-PROG
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
+++         WALKER::WALK-NAMED-LAMBDA PCL::GET-NEW-FUNCTION-GENERATOR
+++         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++         WALKER::WALK-TAGBODY
+++         PCL::|(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
+++         WALKER::WALK-COMPILER-LET PCL::DECLARE-STRUCTURE
+++         WALKER::WALK-LET ITERATE::VARIABLE-SAME-P
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
+++         PCL::EMIT-1-T-DLAP PCL::MAKE-DFUN-CALL
+++         PCL::COMPUTE-EFFECTIVE-METHOD PCL::SORT-METHODS
+++         WALKER::WALK-TAGBODY-1
+++         PCL::|(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
+++         PCL::MAKE-TOP-LEVEL-FORM
+++         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
+++         WALKER::RECONS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::UPDATE-SLOTS-IN-PV PCL::MAKE-INSTANCE-FUNCTION-COMPLEX
+++         PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::GET-MAKE-INSTANCE-FUNCTION-INTERNAL
+++         PCL::|(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
+++         PCL::MAKE-INSTANCE-FUNCTION-SIMPLE
+++         PCL::|(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
+++         PCL::COMPUTE-PV-SLOT PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL1
+++         PCL::|(FAST-METHOD SLOT-UNBOUND (T T T))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
+++         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
+++         PCL::OPTIMIZE-INSTANCE-ACCESS
+++         PCL::|(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
+++         PCL::REAL-MAKE-METHOD-INITARGS-FORM
+++         PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T T))|
+++         PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
+++         PCL::MAKE-FINAL-ORDINARY-DFUN-INTERNAL
+++         PCL::BOOTSTRAP-MAKE-SLOT-DEFINITIONS
+++         PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
+++         PCL::MAKE-PARAMETER-REFERENCES
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
+++         PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::OPTIMIZE-ACCESSOR-CALL
+++         WALKER::WALK-TEMPLATE-HANDLE-REPEAT WALKER::WALK-BINDINGS-1
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS1
+++         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::MAKE-FGEN
+++         PCL::|(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
+++         PCL::|(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
+++         PCL::OPTIMIZE-GENERIC-FUNCTION-CALL
+++         PCL::LOAD-FUNCTION-GENERATOR PCL::MAKE-EMF-CACHE
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
+++         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::EXPAND-EMF-CALL-METHOD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::EXPAND-DEFMETHOD PCL::LOAD-DEFMETHOD-INTERNAL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::FILL-CACHE PCL::CAN-OPTIMIZE-ACCESS1 PCL::MAKE-EMF-CALL
+++         PCL::EMIT-FETCH-WRAPPER PCL::CHECK-INITARGS-2-LIST
+++         PCL::GET-METHOD PCL::CHECK-INITARGS-2-PLIST
+++         PCL::CHECK-INITARGS-1 PCL::REAL-GET-METHOD
+++         WALKER::WALK-ARGLIST)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::GET-SECONDARY-DISPATCH-FUNCTION2)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::LOAD-DEFMETHOD PCL::MAKE-DEFMETHOD-FORM
+++         PCL::EARLY-MAKE-A-METHOD PCL::MAKE-DEFMETHOD-FORM-INTERNAL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::SET-ARG-INFO1 PCL::BOOTSTRAP-MAKE-SLOT-DEFINITION
+++         PCL::LOAD-DEFCLASS PCL::REAL-LOAD-DEFCLASS
+++         PCL::OPTIMIZE-GF-CALL WALKER::WALK-TEMPLATE-HANDLE-REPEAT-1
+++         PCL::EMIT-SLOT-ACCESS PCL::MAKE-EARLY-CLASS-DEFINITION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::EMIT-DLAP PCL::GET-SECONDARY-DISPATCH-FUNCTION1)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::EARLY-ADD-NAMED-METHOD PCL::FILL-DFUN-CACHE
+++         PCL::REAL-ADD-NAMED-METHOD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::BOOTSTRAP-INITIALIZE-CLASS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::FIXNUM)
+++             COMMON-LISP::T)
+++         PCL::COMPUTE-STD-CPL-PHASE-3)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::FIXNUM)
+++             COMMON-LISP::T)
+++         PCL::FILL-CACHE-FROM-CACHE-P PCL::GET-CACHE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::LIST)
+++         PCL::PV-TABLE-CALL-LIST PCL::CACHE-OVERFLOW
+++         PCL::PV-TABLE-SLOT-NAME-LISTS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::FIXNUM COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::COMPUTE-CACHE-PARAMETERS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::FIXNUM COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         PCL::FIND-FREE-CACHE-LINE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::BOOLEAN)
+++         PCL::CACHE-VALUEP)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         PCL::DEFAULT-CODE-CONVERTER PCL::EMIT-IN-CHECKING-CACHE-P
+++         PCL::METHOD-PROTOTYPE-FOR-GF PCL::EMIT-TWO-CLASS-WRITER
+++         PCL::PARSE-METHOD-GROUP-SPECIFIER PCL::EMIT-ONE-CLASS-WRITER
+++         PCL::EMIT-ONE-INDEX-WRITERS PCL::FIND-STRUCTURE-CLASS
+++         PCL::PROTOTYPES-FOR-MAKE-METHOD-LAMBDA PCL::MAKE-DISPATCH-DFUN
+++         PCL::COMPUTE-APPLICABLE-METHODS-EMF PCL::EARLY-METHOD-FUNCTION
+++         PCL::NET-CODE-CONVERTER PCL::GET-DISPATCH-FUNCTION
+++         PCL::STRUCTURE-WRAPPER PCL::FIND-WRAPPER PCL::CLASS-EQ-TYPE
+++         PCL::TYPE-FROM-SPECIALIZER PCL::SPECIALIZER-FROM-TYPE
+++         PCL::PCL-DESCRIBE PCL::PARSE-DEFMETHOD
+++         PCL::ANALYZE-LAMBDA-LIST PCL::EMIT-ONE-CLASS-READER
+++         PCL::EARLY-COLLECT-INHERITANCE PCL::GET-GENERIC-FUNCTION-INFO
+++         PCL::COMPILE-IIS-FUNCTIONS PCL::EMIT-CONSTANT-VALUE
+++         PCL::EMIT-ONE-INDEX-READERS PCL::GENERIC-FUNCTION-NAME-P
+++         PCL::CONVERT-TO-SYSTEM-TYPE PCL::MAKE-FINAL-DISPATCH-DFUN
+++         PCL::EMIT-TWO-CLASS-READER PCL::*NORMALIZE-TYPE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         PCL::|__si::MAKE-CLASS-PRECEDENCE-DESCRIPTION|
+++         PCL::MAKE-FAST-INSTANCE-BOUNDP PCL::MAKE-INITIALIZE-INFO
+++         PCL::|STRUCTURE-OBJECT class constructor|
+++         PCL::|__si::MAKE-CACHE| PCL::|__si::MAKE-DEFAULT-METHOD-ONLY|
+++         PCL::TRUE PCL::|__si::MAKE-PV-TABLE|
+++         PCL::|__si::MAKE-ONE-INDEX| WALKER::UNBOUND-LEXICAL-FUNCTION
+++         PCL::|__si::MAKE-CHECKING| PCL::MAKE-PV-TABLE
+++         PCL::|__si::MAKE-NO-METHODS| PCL::MAKE-METHOD-CALL
+++         PCL::CALLED-FIN-WITHOUT-FUNCTION PCL::USE-PACKAGE-PCL
+++         PCL::INTERN-PV-TABLE PCL::|__si::MAKE-ACCESSOR-DFUN-INFO|
+++         PCL::|__si::MAKE-DISPATCH|
+++         PCL::|__si::MAKE-ONE-INDEX-DFUN-INFO|
+++         PCL::|__si::MAKE-ARG-INFO| PCL::FIX-EARLY-GENERIC-FUNCTIONS
+++         PCL::ZERO PCL::MAKE-PROGN PCL::|__si::MAKE-INITIAL|
+++         PCL::|__si::MAKE-ONE-CLASS| PCL::|__si::MAKE-DFUN-INFO|
+++         PCL::|__si::MAKE-CONSTANT-VALUE|
+++         PCL::|__si::MAKE-STD-INSTANCE| PCL::PV-WRAPPERS-FROM-PV-ARGS
+++         PCL::|__si::MAKE-TWO-CLASS| PCL::|__si::MAKE-N-N|
+++         PCL::|__si::MAKE-CACHING| PCL::FALSE PCL::STRING-APPEND
+++         PCL::|__si::MAKE-INITIAL-DISPATCH| PCL::MAKE-FAST-METHOD-CALL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         PCL::ARG-INFO-NUMBER-REQUIRED PCL::PV-TABLE-PV-SIZE
+++         PCL::CACHE-COUNT PCL::PV-CACHE-LIMIT-FN PCL::CHECKING-LIMIT-FN
+++         PCL::CACHING-LIMIT-FN PCL::N-N-ACCESSORS-LIMIT-FN
+++         PCL::DEFAULT-LIMIT-FN PCL::EARLY-CLASS-SIZE PCL::CPD-COUNT
+++         PCL::ONE-INDEX-LIMIT-FN PCL::FAST-INSTANCE-BOUNDP-INDEX)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
+++         PCL::POWER-OF-TWO-CEILING)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::MAKE-TYPE-PREDICATE-NAME PCL::MAKE-FINAL-DFUN
+++         PCL::CAPITALIZE-WORDS PCL::SET-DFUN ITERATE::MAYBE-WARN
+++         PCL::MAKE-EARLY-GF PCL::USE-DISPATCH-DFUN-P WALKER::RELIST
+++         PCL::MAKE-SPECIALIZABLE PCL::PV-TABLE-LOOKUP-PV-ARGS
+++         PCL::ALLOCATE-STANDARD-INSTANCE
+++         PCL::ALLOCATE-FUNCALLABLE-INSTANCE
+++         PCL::USE-CONSTANT-VALUE-DFUN-P ITERATE::FUNCTION-LAMBDA-P
+++         PCL::UPDATE-DFUN PCL::SET-ARG-INFO
+++         PCL::EARLY-METHOD-SPECIALIZERS PCL::MAKE-WRAPPER
+++         PCL::FIND-CLASS-CELL WALKER::WALKER-ENVIRONMENT-BIND-1
+++         PCL::TRACE-METHOD WALKER::RELIST* COMMON-LISP::FIND-CLASS
+++         PCL::INITIALIZE-INTERNAL-SLOT-GFS PCL::FIND-CLASS-PREDICATE
+++         PCL::INITIALIZE-METHOD-FUNCTION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::SAUT-NOT PCL::INVOKE-EMF PCL::SAUT-PROTOTYPE
+++         PCL::COMPUTE-CODE ITERATE::PARSE-DECLARATIONS
+++         PCL::SDFUN-FOR-CACHING
+++         PCL::COMPUTE-APPLICABLE-METHODS-USING-TYPES
+++         PCL::GET-NEW-FUNCTION-GENERATOR-INTERNAL
+++         PCL::SLOT-NAME-LISTS-FROM-SLOTS PCL::DESTRUCTURE
+++         PCL::SPLIT-DECLARATIONS PCL::MAKE-DIRECT-SLOTD
+++         PCL::FORM-LIST-TO-LISP PCL::EMIT-CHECKING
+++         PCL::CPL-FORWARD-REFERENCED-CLASS-ERROR PCL::COMPUTE-TEST
+++         PCL::SET-FUNCTION-NAME COMMON-LISP::SLOT-BOUNDP PCL::SAUT-AND
+++         PCL::EMIT-CACHING PCL::INITIAL-DFUN
+++         COMMON-LISP::SLOT-MAKUNBOUND COMMON-LISP::SLOT-VALUE
+++         PCL::UPDATE-SLOT-VALUE-GF-INFO
+++         PCL::CLASS-APPLICABLE-USING-CLASS-P
+++         PCL::CPL-INCONSISTENT-ERROR PCL::*SUBTYPEP
+++         PCL::SLOT-UNBOUND-INTERNAL
+++         PCL::GENERATE-FAST-CLASS-SLOT-ACCESS-P
+++         PCL::CHECK-INITARGS-VALUES PCL::ENSURE-CLASS-VALUES
+++         PCL::SAUT-EQL PCL::REAL-REMOVE-METHOD PCL::EMIT-DEFAULT-ONLY
+++         PCL::INSURE-DFUN PCL::EMIT-DEFAULT-ONLY-FUNCTION
+++         PCL::MUTATE-SLOTS-AND-CALLS PCL::FIND-SUPERCLASS-CHAIN
+++         PCL::SAUT-CLASS PCL::MAKE-INSTANCE-FUNCTION-TRAP
+++         PCL::SAUT-CLASS-EQ PCL::COMPUTE-STD-CPL-PHASE-1
+++         PCL::SPECIALIZER-APPLICABLE-USING-TYPE-P)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::OR PCL::CACHE COMMON-LISP::NULL))
+++         PCL::PV-TABLE-CACHE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         WALKER::WALK-DECLARATIONS PCL::GET-SECONDARY-DISPATCH-FUNCTION
+++         PCL::MAKE-ONE-INDEX-ACCESSOR-DFUN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::MAKE-SHARED-INITIALIZE-FORM-LIST PCL::ACCESSOR-MISS
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
+++         PCL::|(FAST-METHOD NO-APPLICABLE-METHOD (T))|
+++         PCL::SET-CLASS-SLOT-VALUE-1
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
+++         PCL::|(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|
+++         PCL::GET-ACCESSOR-FROM-SVUC-METHOD-FUNCTION
+++         PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN
+++         PCL::|(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
+++         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION
+++         PCL::MAKE-FINAL-ONE-INDEX-ACCESSOR-DFUN
+++         PCL::LOAD-SHORT-DEFCOMBIN PCL::EMIT-CHECKING-OR-CACHING
+++         PCL::|(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
+++         PCL::MAKE-FINAL-CHECKING-DFUN
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
+++         PCL::ACCESSOR-VALUES
+++         PCL::|(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
+++         PCL::REAL-MAKE-METHOD-LAMBDA
+++         PCL::|(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
+++         PCL::GET-ACCESSOR-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
+++         PCL::ORDER-SPECIALIZERS
+++         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
+++         PCL::GENERATE-DISCRIMINATION-NET
+++         PCL::|(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
+++         PCL::|(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
+++         PCL::MAKE-ONE-CLASS-ACCESSOR-DFUN
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (T T))|
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITION
+++         PCL::INITIALIZE-INSTANCE-SIMPLE-FUNCTION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::GET-OPTIMIZED-STD-ACCESSOR-METHOD-FUNCTION
+++         PCL::MAKE-OPTIMIZED-STD-WRITER-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
+++         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
+++         PCL::|(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
+++         PCL::MAKE-OPTIMIZED-STD-BOUNDP-METHOD-FUNCTION
+++         PCL::CONVERT-METHODS WALKER::WALK-LET-IF
+++         PCL::EMIT-READER/WRITER-FUNCTION PCL::ACCESSOR-VALUES-INTERNAL
+++         PCL::|(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
+++         PCL::LOAD-LONG-DEFCOMBIN PCL::CHECK-METHOD-ARG-INFO
+++         PCL::ACCESSOR-VALUES1
+++         PCL::|(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
+++         PCL::GENERATING-LISP PCL::MAKE-FINAL-N-N-ACCESSOR-DFUN
+++         WALKER::WALK-FORM-INTERNAL PCL::CONSTANT-VALUE-MISS
+++         PCL::SLOT-VALUE-USING-CLASS-DFUN PCL::CACHING-MISS
+++         PCL::|(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
+++         PCL::SLOT-BOUNDP-USING-CLASS-DFUN PCL::CHECKING-MISS
+++         PCL::|(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
+++         PCL::EMIT-READER/WRITER ITERATE::EXPAND-INTO-LET
+++         PCL::GET-CLASS-SLOT-VALUE-1
+++         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER-FUNCTION
+++         PCL::MAKE-FINAL-CACHING-DFUN
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
+++         PCL::|(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
+++         PCL::GET-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
+++         PCL::OPTIMIZE-SLOT-VALUE-BY-CLASS-P PCL::SET-SLOT-VALUE
+++         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER
+++         ITERATE::RENAME-VARIABLES
+++         PCL::|(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
+++         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
+++         ITERATE::WALK-GATHERING-BODY PCL::CACHE-MISS-VALUES
+++         PCL::MAKE-OPTIMIZED-STD-READER-METHOD-FUNCTION
+++         PCL::MAKE-FINAL-CONSTANT-VALUE-DFUN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::DO-SHORT-METHOD-COMBINATION PCL::MEMF-CODE-CONVERTER
+++         PCL::GENERATE-DISCRIMINATION-NET-INTERNAL
+++         PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::MAKE-LONG-METHOD-COMBINATION-FUNCTION
+++         PCL::CACHE-MISS-VALUES-INTERNAL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
+++         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
+++         PCL::ADD-METHOD-DECLARATIONS
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
+++         PCL::COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO-INTERNAL
+++         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
+++         PCL::MAKE-TWO-CLASS-ACCESSOR-DFUN
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
+++         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
+++         PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
+++         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::WALK-METHOD-LAMBDA
+++         PCL::|(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         PCL::REAL-MAKE-A-METHOD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         PCL::MAKE-DEFAULT-INITARGS-FORM-LIST
+++         PCL::GET-COMPLEX-INITIALIZATION-FUNCTIONS
+++         PCL::SLOT-VALUE-OR-DEFAULT
+++         PCL::GET-SIMPLE-INITIALIZATION-FUNCTION PCL::REAL-ADD-METHOD
+++         PCL::LOAD-DEFGENERIC PCL::CPL-ERROR
+++         PCL::MAKE-FINAL-ACCESSOR-DFUN PCL::MAKE-N-N-ACCESSOR-DFUN
+++         PCL::TYPES-FROM-ARGUMENTS PCL::MAKE-ACCESSOR-TABLE
+++         PCL::MAKE-CHECKING-DFUN WALKER::NESTED-WALK-FORM
+++         PCL::GET-EFFECTIVE-METHOD-FUNCTION
+++         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         ITERATE::ITERATE-TRANSFORM-BODY
+++         PCL::|(FAST-METHOD SLOT-MISSING (T T T T))|
+++         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE1
+++         ITERATE::RENAME-LET-BINDINGS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         PCL::COMPUTE-PRIMARY-CACHE-LOCATION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::COMPUTE-PRIMARY-CACHE-LOCATION-FROM-LOCATION
+++         PCL::GET-CACHE-FROM-CACHE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::%CCLOSURE-ENV-NTHCDR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::STREAM COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::PRINT-DFUN-INFO)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
+++         PCL::COUNT-ALL-DFUNS PCL::EMIT-N-N-WRITERS
+++         PCL::EMIT-N-N-READERS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::FIXNUM)
+++         PCL::GET-WRAPPER-CACHE-NUMBER)) 
++ (IN-PACKAGE "PCL")
++ 
++-(DOLIST (V '(DISASSEMBLE |(FAST-WRITER-METHOD SLOT-OBJECT OPTIONS)|
++-                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION METHODS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT METHODS)|
++-                |(FAST-WRITER-METHOD SLOT-CLASS DIRECT-SLOTS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-SLOTS)|
++-                |(FAST-WRITER-METHOD SLOT-CLASS SLOTS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT SLOTS)|
+++(DOLIST (V '(|(FAST-WRITER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-METHODS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-SUPERCLASSES)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT SLOTS)|
+++                |(FAST-WRITER-METHOD SLOT-CLASS SLOTS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-SLOTS)|
+++                |(FAST-WRITER-METHOD SLOT-CLASS DIRECT-SLOTS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT METHODS)|
+++                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION METHODS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT OPTIONS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-SUBCLASSES)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-SUPERCLASSES)|
++                 ADD-READER-METHOD
++                 SHORT-COMBINATION-IDENTITY-WITH-ONE-ARGUMENT
++-                REMOVE-READER-METHOD |LISP::T class predicate|
++-                EQL-SPECIALIZER-P |(SETF GENERIC-FUNCTION-NAME)|
++-                OBJECT-PLIST SLOT-DEFINITION-DEFSTRUCT-ACCESSOR-SYMBOL
++-                |PCL::STANDARD-METHOD-COMBINATION class predicate|
++-                |PCL::STANDARD-EFFECTIVE-SLOT-DEFINITION class predicate|
++-                |PCL::STANDARD-DIRECT-SLOT-DEFINITION class predicate|
+++                REMOVE-READER-METHOD EQL-SPECIALIZER-P
+++                |(SETF GENERIC-FUNCTION-NAME)| OBJECT-PLIST
+++                SLOT-DEFINITION-DEFSTRUCT-ACCESSOR-SYMBOL
++                 |PCL::STANDARD-SLOT-DEFINITION class predicate|
++-                |PCL::STANDARD-OBJECT class predicate|
+++                |PCL::STANDARD-DIRECT-SLOT-DEFINITION class predicate|
+++                |PCL::STANDARD-EFFECTIVE-SLOT-DEFINITION class predicate|
+++                |PCL::STANDARD-METHOD-COMBINATION class predicate|
++                 |(FAST-READER-METHOD SLOT-OBJECT METHOD)|
++-                |PCL::BUILT-IN-CLASS class predicate| SPECIALIZER-TYPE
++-                |LISP::RATIONAL class predicate|
++-                |LISP::RATIO class predicate| GF-DFUN-STATE
+++                SPECIALIZER-TYPE GF-DFUN-STATE
++                 |(SETF GENERIC-FUNCTION-METHOD-CLASS)|
++-                |(FAST-READER-METHOD STRUCTURE-SLOT-DEFINITION DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DEFSTRUCT-ACCESSOR-SYMBOL)|
+++                |(FAST-READER-METHOD STRUCTURE-SLOT-DEFINITION DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 |(SETF GENERIC-FUNCTION-METHOD-COMBINATION)|
++                 CLASS-DEFSTRUCT-CONSTRUCTOR
++-                |(FAST-READER-METHOD DEFINITION-SOURCE-MIXIN SOURCE)|
++                 |(FAST-READER-METHOD SLOT-OBJECT SOURCE)|
+++                |(FAST-READER-METHOD DEFINITION-SOURCE-MIXIN SOURCE)|
++                 METHOD-FAST-FUNCTION |(SETF GENERIC-FUNCTION-METHODS)|
++                 |(SETF GF-PRETTY-ARGLIST)|
++-                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION ARG-INFO)|
++-                |(FAST-READER-METHOD SLOT-OBJECT ARG-INFO)|
++-                |(FAST-READER-METHOD SLOT-CLASS INITIALIZE-INFO)|
++                 |(FAST-READER-METHOD SLOT-OBJECT INITIALIZE-INFO)|
+++                |(FAST-READER-METHOD SLOT-CLASS INITIALIZE-INFO)|
+++                |(FAST-READER-METHOD SLOT-OBJECT ARG-INFO)|
+++                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION ARG-INFO)|
++                 SPECIALIZERP EXACT-CLASS-SPECIALIZER-P
++-                |(FAST-READER-METHOD PCL-CLASS WRAPPER)|
++                 |(FAST-READER-METHOD SLOT-OBJECT WRAPPER)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION INITARGS)|
+++                |(FAST-READER-METHOD PCL-CLASS WRAPPER)|
++                 |(FAST-READER-METHOD SLOT-OBJECT INITARGS)|
++-                |(FAST-READER-METHOD STRUCTURE-CLASS DEFSTRUCT-CONSTRUCTOR)|
++-                |(FAST-READER-METHOD SLOT-OBJECT DEFSTRUCT-CONSTRUCTOR)|
++-                |(FAST-READER-METHOD SLOT-OBJECT OPERATOR)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION INITARGS)|
++                 |(FAST-READER-METHOD SHORT-METHOD-COMBINATION OPERATOR)|
++-                |LISP::CHARACTER class predicate|
+++                |(FAST-READER-METHOD SLOT-OBJECT OPERATOR)|
+++                |(FAST-READER-METHOD SLOT-OBJECT DEFSTRUCT-CONSTRUCTOR)|
+++                |(FAST-READER-METHOD STRUCTURE-CLASS DEFSTRUCT-CONSTRUCTOR)|
++                 COMPATIBLE-META-CLASS-CHANGE-P
++-                |LISP::SEQUENCE class predicate|
++-                |(FAST-READER-METHOD CLASS CLASS-EQ-SPECIALIZER)|
++                 |(FAST-READER-METHOD SLOT-OBJECT CLASS-EQ-SPECIALIZER)|
+++                |(FAST-READER-METHOD CLASS CLASS-EQ-SPECIALIZER)|
++                 |(BOUNDP READER-FUNCTION)| TRACE-METHOD-INTERNAL
++                 |(BOUNDP PREDICATE-NAME)| |(BOUNDP READERS)|
++                 UPDATE-GF-DFUN |(BOUNDP CLASS-PRECEDENCE-LIST)|
++-                |(BOUNDP ACCESSOR-FLAGS)| |(BOUNDP DOCUMENTATION)|
++-                |(BOUNDP LOCATION)| SPECIALIZER-OBJECT
+++                |(BOUNDP ACCESSOR-FLAGS)| |(BOUNDP LOCATION)|
+++                |(BOUNDP DOCUMENTATION)| SPECIALIZER-OBJECT
++                 |(BOUNDP INCOMPATIBLE-SUPERCLASS-LIST)|
++                 ACCESSOR-METHOD-SLOT-NAME |(BOUNDP SPECIALIZERS)|
++                 |(BOUNDP IDENTITY-WITH-ONE-ARGUMENT)|
++@@ -783,158 +1052,146 @@
++                 CLASS-EQ-SPECIALIZER-P
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT SOURCE)| SLOTS-FETCHER
++                 |(SETF SLOT-ACCESSOR-STD-P)| REMOVE-WRITER-METHOD
++-                |(BOUNDP INITFUNCTION)| |(BOUNDP WRITER-FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT ARG-INFO)|
+++                |(BOUNDP WRITER-FUNCTION)| |(BOUNDP INITFUNCTION)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT INITIALIZE-INFO)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT ARG-INFO)|
++                 STRUCTURE-CLASS-P |(BOUNDP WRITERS)|
++-                |(BOUNDP INITFORM)|
+++                |(BOUNDP INITFORM)| |SETF COMMON-LISP CLASS-NAME|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT WRAPPER)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT INITARGS)|
++-                |LISP::BIT-VECTOR class predicate|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DEFSTRUCT-CONSTRUCTOR)|
++                 UPDATE-CONSTRUCTORS |(BOUNDP SLOT-NAME)|
++                 |(SETF SLOT-DEFINITION-INITARGS)| |(BOUNDP ALLOCATION)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT CLASS-EQ-SPECIALIZER)|
++-                DOCUMENTATION |(BOUNDP GENERIC-FUNCTION)|
++-                |(BOUNDP FUNCTION)| |(BOUNDP LAMBDA-LIST)|
+++                DOCUMENTATION |(BOUNDP FUNCTION)|
+++                |(BOUNDP GENERIC-FUNCTION)| |(BOUNDP LAMBDA-LIST)|
++                 METHOD-PRETTY-ARGLIST |(BOUNDP SLOT-DEFINITION)|
++-                |LISP::ARRAY class predicate|
++                 |(BOUNDP CAN-PRECEDE-LIST)| |(BOUNDP PROTOTYPE)|
++                 CLASS-EQ-SPECIALIZER INFORM-TYPE-SYSTEM-ABOUT-CLASS
++                 |PCL::DEFINITION-SOURCE-MIXIN class predicate|
++-                |(BOUNDP DFUN-STATE)|
++-                |LISP::STRUCTURE-OBJECT class predicate|
++-                |(BOUNDP FROM-DEFCLASS-P)| COMPILE |(READER METHOD)|
++-                |LISP::STANDARD-OBJECT class predicate|
+++                |(BOUNDP DFUN-STATE)| |(BOUNDP FROM-DEFCLASS-P)|
+++                |(READER METHOD)|
++                 |(CALL STANDARD-COMPUTE-EFFECTIVE-METHOD)|
++-                |(BOUNDP FAST-FUNCTION)|
++-                |LISP::COMPLEX class predicate| |(BOUNDP METHOD-CLASS)|
++-                |(READER SOURCE)| |(BOUNDP METHOD-COMBINATION)|
+++                |(BOUNDP FAST-FUNCTION)| |(BOUNDP METHOD-CLASS)|
+++                |(READER SOURCE)| |(BOUNDP INTERNAL-WRITER-FUNCTION)|
++                 |(BOUNDP INTERNAL-READER-FUNCTION)|
++-                |(BOUNDP INTERNAL-WRITER-FUNCTION)|
++-                ACCESSOR-METHOD-CLASS |(BOUNDP DIRECT-METHODS)|
++-                |(BOUNDP DIRECT-SLOTS)| |(BOUNDP BOUNDP-FUNCTION)|
++-                |(BOUNDP DIRECT-SUPERCLASSES)|
++-                |(BOUNDP DIRECT-SUBCLASSES)| |(BOUNDP OPTIONS)|
++-                |(BOUNDP METHODS)| |(WRITER METHOD)|
++-                |LISP::BUILT-IN-CLASS class predicate|
+++                |(BOUNDP METHOD-COMBINATION)| ACCESSOR-METHOD-CLASS
+++                |(BOUNDP DIRECT-SLOTS)| |(BOUNDP DIRECT-METHODS)|
+++                |(BOUNDP BOUNDP-FUNCTION)| |(BOUNDP DIRECT-SUBCLASSES)|
+++                |(BOUNDP DIRECT-SUPERCLASSES)| |(BOUNDP METHODS)|
+++                |(BOUNDP OPTIONS)| |(WRITER METHOD)|
++                 |PCL::DEPENDENT-UPDATE-MIXIN class predicate|
++                 GENERIC-FUNCTION-PRETTY-ARGLIST |(WRITER SOURCE)|
+++                |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
+++                |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
++                 |(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
++-                |(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
++                 |(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
++-                |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
++-                |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
+++                |(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
+++                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
+++                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
+++                |(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
++                 |(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
++                 |(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
++                 |(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
++-                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
++-                |(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
++-                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
++                 MAKE-BOUNDP-METHOD-FUNCTION
++-                |LISP::STRING class predicate|
++                 |(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
++                 |(FAST-METHOD DOCUMENTATION (DOCUMENTATION-MIXIN))|
++                 |PCL::METAOBJECT class predicate|
++-                |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++                 |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++                 |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++                 |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
++-                |(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
++-                |(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
++-                |(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
++-                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
+++                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
+++                |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
+++                |(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
+++                |(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
+++                |(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
+++                |(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
+++                |(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
+++                |(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
+++                |(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
+++                |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
++                 |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
++                 |(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
++-                |(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
+++                |(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
+++                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
++                 |(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
++                 |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
+++                |(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
+++                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++                 |(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
++                 |(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
++-                |(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++                 |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
++-                |(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
++-                |(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
++-                |(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
++-                |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
++-                |(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
++-                |(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
++-                |(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
++                 |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
++-                |(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
++-                |(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
++-                |(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
++-                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
++-                |(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
++-                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++-                |(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
++-                |(FAST-METHOD MAKE-INSTANCE (CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
++-                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
++-                |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
++-                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
++-                |(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
++-                |(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
+++                |(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
++                 |(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
++-                |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
++-                |(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
++-                |(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
++-                |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
++-                |(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
++-                |(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
++-                |(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
++-                |(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
++-                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
++-                |(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
+++                |(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
+++                |(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++                 |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
+++                |(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
+++                |(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
++                 |(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++                |(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
+++                |(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
+++                |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
++                 |(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
++-                |(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
++-                |(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++                |(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
+++                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
+++                |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
+++                |(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
++                 |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
++-                |(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
+++                |(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
+++                |(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
+++                |(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
+++                |(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
+++                |(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
+++                |(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
+++                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
+++                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
+++                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
+++                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
+++                |(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
+++                |(FAST-METHOD MAKE-INSTANCE (CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
+++                |(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
+++                |(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
+++                |(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
+++                |(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
+++                |(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
++                 CLASS-PREDICATE-NAME
++-                |PCL::STRUCTURE-EFFECTIVE-SLOT-DEFINITION class predicate|
++-                |PCL::STRUCTURE-DIRECT-SLOT-DEFINITION class predicate|
++                 |PCL::STRUCTURE-SLOT-DEFINITION class predicate|
++-                |PCL::STRUCTURE-OBJECT class predicate|
++-                |LISP::SYMBOL class predicate|
+++                |PCL::STRUCTURE-DIRECT-SLOT-DEFINITION class predicate|
+++                |PCL::STRUCTURE-EFFECTIVE-SLOT-DEFINITION class predicate|
++                 |PCL::EFFECTIVE-SLOT-DEFINITION class predicate|
++                 |(COMBINED-METHOD SHARED-INITIALIZE)|
++                 LEGAL-QUALIFIERS-P ADD-BOUNDP-METHOD
++-                LEGAL-LAMBDA-LIST-P |LISP::VECTOR class predicate|
++-                |SETF PCL GENERIC-FUNCTION-NAME|
+++                LEGAL-LAMBDA-LIST-P |SETF PCL GENERIC-FUNCTION-NAME|
++                 |(READER READER-FUNCTION)| |(READER PREDICATE-NAME)|
++-                |(READER READERS)| DESCRIBE-OBJECT
++-                |(READER CLASS-PRECEDENCE-LIST)|
++-                |(READER ACCESSOR-FLAGS)| |(READER DOCUMENTATION)|
++-                |(READER LOCATION)| CLASS-INITIALIZE-INFO
+++                |(READER READERS)| |(READER CLASS-PRECEDENCE-LIST)|
+++                |(READER ACCESSOR-FLAGS)| |(READER LOCATION)|
+++                |(READER DOCUMENTATION)| CLASS-INITIALIZE-INFO
++                 |(SETF CLASS-SLOT-VALUE)| MAKE-WRITER-METHOD-FUNCTION
++                 |SETF PCL GF-DFUN-STATE|
++                 |(READER INCOMPATIBLE-SUPERCLASS-LIST)|
++@@ -942,75 +1199,75 @@
++                 |(READER IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(SETF CLASS-INITIALIZE-INFO)|
++                 |(READER PRETTY-ARGLIST)| |(READER DEFSTRUCT-FORM)|
++-                |SETF PCL CLASS-NAME| |SETF PCL SLOT-DEFINITION-NAME|
+++                |SETF PCL SLOT-DEFINITION-NAME|
++                 |(WRITER READER-FUNCTION)|
++                 |(SETF CLASS-DEFSTRUCT-CONSTRUCTOR)|
++                 |(WRITER PREDICATE-NAME)| |(WRITER READERS)|
++-                |(READER INITFUNCTION)| |(READER WRITER-FUNCTION)|
+++                |(READER WRITER-FUNCTION)| |(READER INITFUNCTION)|
++                 INITIALIZE-INTERNAL-SLOT-FUNCTIONS
++-                |SETF PCL SLOT-DEFINITION-TYPE|
++-                |(WRITER CLASS-PRECEDENCE-LIST)| |(READER WRITERS)|
+++                |SETF PCL SLOT-DEFINITION-TYPE| |(READER WRITERS)|
+++                |(WRITER CLASS-PRECEDENCE-LIST)|
++                 |(WRITER ACCESSOR-FLAGS)| |(READER INITFORM)|
++-                METHOD-COMBINATION-P |(WRITER DOCUMENTATION)|
++-                |(WRITER LOCATION)|
+++                METHOD-COMBINATION-P |(WRITER LOCATION)|
+++                |(WRITER DOCUMENTATION)|
++                 |(CALL REAL-ENSURE-GF-USING-CLASS--GENERIC-FUNCTION)|
++-                |SETF PCL METHOD-GENERIC-FUNCTION|
++-                |SETF PCL GENERIC-FUNCTION-METHOD-COMBINATION|
++                 |SETF PCL GENERIC-FUNCTION-METHODS|
++-                |(READER SLOT-NAME)|
+++                |SETF PCL GENERIC-FUNCTION-METHOD-COMBINATION|
+++                |SETF PCL METHOD-GENERIC-FUNCTION| |(READER SLOT-NAME)|
++                 |(WRITER INCOMPATIBLE-SUPERCLASS-LIST)|
++                 |SETF PCL SLOT-ACCESSOR-STD-P|
++                 |(CALL REAL-MAKE-METHOD-INITARGS-FORM)|
++                 |(READER ALLOCATION)| |(WRITER SPECIALIZERS)|
++                 |(CALL REAL-ENSURE-GF-USING-CLASS--NULL)|
++                 |(WRITER IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(SETF METHOD-GENERIC-FUNCTION)| LEGAL-SPECIALIZERS-P
++-                |(WRITER PRETTY-ARGLIST)| |SETF PCL OBJECT-PLIST|
++-                |LISP::FLOAT class predicate| |(WRITER DEFSTRUCT-FORM)|
++-                |(READER GENERIC-FUNCTION)| |(READER FUNCTION)|
+++                |(SETF METHOD-GENERIC-FUNCTION)|
+++                |(WRITER PRETTY-ARGLIST)| LEGAL-SPECIALIZERS-P
+++                |SETF PCL OBJECT-PLIST| |(WRITER DEFSTRUCT-FORM)|
+++                |(READER FUNCTION)| |(READER GENERIC-FUNCTION)|
++                 |(READER LAMBDA-LIST)| |(READER SLOT-DEFINITION)|
++                 |PCL::CLASS-PROTOTYPE-SPECIALIZER class predicate|
++-                |SETF PCL CLASS-DEFSTRUCT-FORM|
++                 |SETF PCL SLOT-DEFINITION-INITFORM|
+++                |SETF PCL CLASS-DEFSTRUCT-FORM|
++                 |(READER CAN-PRECEDE-LIST)|
++                 |SETF PCL GENERIC-FUNCTION-METHOD-CLASS|
++-                |(READER PROTOTYPE)| |(WRITER INITFUNCTION)|
++-                |(WRITER WRITER-FUNCTION)| |(WRITER WRITERS)|
+++                |(READER PROTOTYPE)| |(WRITER WRITER-FUNCTION)|
+++                |(WRITER INITFUNCTION)| |(WRITER WRITERS)|
++                 SLOT-ACCESSOR-STD-P |(WRITER INITFORM)|
++                 |(READER DFUN-STATE)| |(READER FROM-DEFCLASS-P)|
++                 |SETF PCL GF-PRETTY-ARGLIST|
++-                |SETF PCL SLOT-DEFINITION-INITFUNCTION|
++-                |SETF PCL SLOT-DEFINITION-ALLOCATION|
++-                |SETF PCL SLOT-DEFINITION-INTERNAL-WRITER-FUNCTION|
++-                |SETF PCL SLOT-DEFINITION-INTERNAL-READER-FUNCTION|
++-                |SETF PCL SLOT-DEFINITION-BOUNDP-FUNCTION|
++-                |SETF PCL SLOT-DEFINITION-WRITER-FUNCTION|
++-                |SETF PCL SLOT-DEFINITION-READER-FUNCTION|
+++                |SETF PCL SLOT-ACCESSOR-FUNCTION|
++                 |SETF PCL SLOT-DEFINITION-LOCATION|
++-                |SETF PCL SLOT-ACCESSOR-FUNCTION| |(WRITER SLOT-NAME)|
++-                |(BOUNDP NAME)| |(WRITER ALLOCATION)|
++-                |(READER FAST-FUNCTION)| |(READER METHOD-CLASS)|
++-                |(SETF OBJECT-PLIST)| |(READER METHOD-COMBINATION)|
++-                |(READER INTERNAL-READER-FUNCTION)|
+++                |SETF PCL SLOT-DEFINITION-READER-FUNCTION|
+++                |SETF PCL SLOT-DEFINITION-WRITER-FUNCTION|
+++                |SETF PCL SLOT-DEFINITION-BOUNDP-FUNCTION|
+++                |SETF PCL SLOT-DEFINITION-INTERNAL-READER-FUNCTION|
+++                |SETF PCL SLOT-DEFINITION-INTERNAL-WRITER-FUNCTION|
+++                |SETF PCL SLOT-DEFINITION-ALLOCATION|
+++                |SETF PCL SLOT-DEFINITION-INITFUNCTION|
+++                |(WRITER SLOT-NAME)| |(BOUNDP NAME)|
+++                |(READER FAST-FUNCTION)| |(WRITER ALLOCATION)|
+++                |(READER METHOD-CLASS)| |(SETF OBJECT-PLIST)|
++                 |(READER INTERNAL-WRITER-FUNCTION)|
++-                METHOD-COMBINATION-OPTIONS |(READER DIRECT-METHODS)|
++-                |(READER DIRECT-SLOTS)|
++-                |SETF PCL SLOT-DEFINITION-READERS|
++-                |(READER BOUNDP-FUNCTION)| |(WRITER GENERIC-FUNCTION)|
++-                |(WRITER FUNCTION)| |(READER DIRECT-SUPERCLASSES)|
++-                |(READER DIRECT-SUBCLASSES)| |SETF PCL DOCUMENTATION|
++-                |(WRITER LAMBDA-LIST)| |LISP::LIST class predicate|
++-                FUNCALLABLE-STANDARD-CLASS-P |(BOUNDP CLASS)|
+++                |(READER INTERNAL-READER-FUNCTION)|
+++                |(READER METHOD-COMBINATION)|
+++                METHOD-COMBINATION-OPTIONS |(READER DIRECT-SLOTS)|
+++                |(READER DIRECT-METHODS)|
+++                |SETF PCL SLOT-DEFINITION-READERS| |(WRITER FUNCTION)|
+++                |(WRITER GENERIC-FUNCTION)| |(READER BOUNDP-FUNCTION)|
+++                |SETF PCL DOCUMENTATION| |(READER DIRECT-SUBCLASSES)|
+++                |(READER DIRECT-SUPERCLASSES)| |(WRITER LAMBDA-LIST)|
+++                FUNCALLABLE-STANDARD-CLASS-P
++                 |(FAST-WRITER-METHOD SLOT-OBJECT METHOD)|
++-                |(WRITER SLOT-DEFINITION)| |(READER OPTIONS)|
++-                |(READER METHODS)| |(WRITER CAN-PRECEDE-LIST)|
++-                |SETF PCL SLOT-VALUE-USING-CLASS|
+++                |(BOUNDP CLASS)| |(WRITER SLOT-DEFINITION)|
+++                |(READER METHODS)| |(READER OPTIONS)|
+++                |(WRITER CAN-PRECEDE-LIST)|
++                 |SETF PCL SLOT-DEFINITION-CLASS|
++-                |(FAST-WRITER-METHOD STRUCTURE-SLOT-DEFINITION DEFSTRUCT-ACCESSOR-SYMBOL)|
+++                |SETF PCL SLOT-VALUE-USING-CLASS|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DEFSTRUCT-ACCESSOR-SYMBOL)|
++-                |(WRITER PROTOTYPE)| |(BOUNDP OBJECT)| |(BOUNDP TYPE)|
++-                CLASS-CAN-PRECEDE-LIST |SETF PCL CLASS-SLOTS|
++-                |SETF PCL CLASS-DIRECT-SLOTS| SLOT-ACCESSOR-FUNCTION
+++                |(FAST-WRITER-METHOD STRUCTURE-SLOT-DEFINITION DEFSTRUCT-ACCESSOR-SYMBOL)|
+++                |(WRITER PROTOTYPE)| |(BOUNDP TYPE)| |(BOUNDP OBJECT)|
+++                CLASS-CAN-PRECEDE-LIST |SETF PCL CLASS-DIRECT-SLOTS|
+++                |SETF PCL CLASS-SLOTS| SLOT-ACCESSOR-FUNCTION
++                 |(BOUNDP PLIST)|
++                 |SETF PCL CLASS-INCOMPATIBLE-SUPERCLASS-LIST|
++                 |SETF PCL SLOT-DEFINITION-WRITERS|
++@@ -1018,290 +1275,287 @@
++                 |(WRITER DFUN-STATE)| |(WRITER FROM-DEFCLASS-P)|
++                 |(BOUNDP SLOTS)| SLOT-CLASS-P
++                 MAKE-READER-METHOD-FUNCTION LEGAL-METHOD-FUNCTION-P
++-                |(FAST-WRITER-METHOD SLOT-OBJECT ARG-INFO)|
++-                |(FAST-WRITER-METHOD SLOT-CLASS INITIALIZE-INFO)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT INITIALIZE-INFO)|
+++                |(FAST-WRITER-METHOD SLOT-CLASS INITIALIZE-INFO)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT ARG-INFO)|
++                 |PCL::PLIST-MIXIN class predicate|
++                 |(WRITER FAST-FUNCTION)| |(WRITER METHOD-CLASS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT WRAPPER)|
++-                |(WRITER METHOD-COMBINATION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT WRAPPER)| GET-METHOD
+++                |(WRITER INTERNAL-WRITER-FUNCTION)|
++                 |(WRITER INTERNAL-READER-FUNCTION)|
++-                |(WRITER INTERNAL-WRITER-FUNCTION)| GET-METHOD
++-                |(WRITER DIRECT-METHODS)| |(WRITER DIRECT-SLOTS)|
++-                |(FAST-WRITER-METHOD SLOT-DEFINITION INITARGS)|
+++                |(WRITER METHOD-COMBINATION)| |(WRITER DIRECT-SLOTS)|
+++                |(WRITER DIRECT-METHODS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT INITARGS)|
++-                |(FAST-WRITER-METHOD STRUCTURE-CLASS DEFSTRUCT-CONSTRUCTOR)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT DEFSTRUCT-CONSTRUCTOR)|
+++                |(FAST-WRITER-METHOD SLOT-DEFINITION INITARGS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT OPERATOR)|
++-                |(WRITER BOUNDP-FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT DEFSTRUCT-CONSTRUCTOR)|
+++                |(FAST-WRITER-METHOD STRUCTURE-CLASS DEFSTRUCT-CONSTRUCTOR)|
+++                |(WRITER BOUNDP-FUNCTION)| |(WRITER DIRECT-SUBCLASSES)|
++                 |(WRITER DIRECT-SUPERCLASSES)|
++-                |(WRITER DIRECT-SUBCLASSES)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT CLASS-EQ-SPECIALIZER)|
++-                |(WRITER OPTIONS)| |(WRITER METHODS)|
+++                |(WRITER METHODS)| |(WRITER OPTIONS)|
++                 SHORT-METHOD-COMBINATION-P GF-ARG-INFO
++                 SPECIALIZER-METHOD-TABLE MAKE-METHOD-INITARGS-FORM
++                 CLASS-DEFSTRUCT-FORM
++-                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION NAME)|
++-                |(FAST-READER-METHOD SLOT-OBJECT NAME)|
++-                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION DFUN-STATE)|
++-                |(FAST-READER-METHOD SLOT-OBJECT DFUN-STATE)|
++-                |(FAST-READER-METHOD STANDARD-ACCESSOR-METHOD SLOT-NAME)|
++-                |(FAST-READER-METHOD SLOT-OBJECT SLOT-NAME)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION NAME)|
++-                |(FAST-READER-METHOD CLASS NAME)|
++-                |(FAST-READER-METHOD CLASS PREDICATE-NAME)|
++                 |(FAST-READER-METHOD SLOT-OBJECT PREDICATE-NAME)|
++-                |LISP::INTEGER class predicate| GF-PRETTY-ARGLIST
++-                SAME-SPECIALIZER-P
++-                SLOT-DEFINITION-INTERNAL-READER-FUNCTION
++-                SLOT-DEFINITION-INTERNAL-WRITER-FUNCTION
++-                SLOT-DEFINITION-READER-FUNCTION
++-                SLOT-DEFINITION-WRITER-FUNCTION
+++                |(FAST-READER-METHOD CLASS PREDICATE-NAME)|
+++                |(FAST-READER-METHOD CLASS NAME)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION NAME)|
+++                |(FAST-READER-METHOD SLOT-OBJECT SLOT-NAME)|
+++                |(FAST-READER-METHOD STANDARD-ACCESSOR-METHOD SLOT-NAME)|
+++                |(FAST-READER-METHOD SLOT-OBJECT DFUN-STATE)|
+++                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION DFUN-STATE)|
+++                |(FAST-READER-METHOD SLOT-OBJECT NAME)|
+++                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION NAME)|
+++                GF-PRETTY-ARGLIST SAME-SPECIALIZER-P
++                 SLOT-DEFINITION-BOUNDP-FUNCTION
++-                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION METHOD-CLASS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT METHOD-CLASS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT ACCESSOR-FLAGS)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION CLASS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT CLASS)|
++-                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION DOCUMENTATION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT DOCUMENTATION)|
++-                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION METHOD-COMBINATION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT METHOD-COMBINATION)|
++-                |(FAST-READER-METHOD STANDARD-ACCESSOR-METHOD SLOT-DEFINITION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT SLOT-DEFINITION)|
++-                |(FAST-READER-METHOD STANDARD-METHOD GENERIC-FUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT GENERIC-FUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT FUNCTION)|
++-                |(FAST-READER-METHOD STANDARD-METHOD FAST-FUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT FAST-FUNCTION)|
++-                |(FAST-READER-METHOD STANDARD-EFFECTIVE-SLOT-DEFINITION LOCATION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT LOCATION)|
++-                |(FAST-READER-METHOD EFFECTIVE-SLOT-DEFINITION READER-FUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT READER-FUNCTION)|
++-                |(FAST-READER-METHOD EFFECTIVE-SLOT-DEFINITION WRITER-FUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT WRITER-FUNCTION)|
++-                |(FAST-READER-METHOD EFFECTIVE-SLOT-DEFINITION BOUNDP-FUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT BOUNDP-FUNCTION)|
++-                |(FAST-READER-METHOD STRUCTURE-SLOT-DEFINITION INTERNAL-READER-FUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT INTERNAL-READER-FUNCTION)|
++-                |(FAST-READER-METHOD STRUCTURE-SLOT-DEFINITION INTERNAL-WRITER-FUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT INTERNAL-WRITER-FUNCTION)|
++-                |(FAST-READER-METHOD STANDARD-SLOT-DEFINITION ALLOCATION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT ALLOCATION)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION INITFUNCTION)|
++-                |(FAST-READER-METHOD SLOT-OBJECT INITFUNCTION)|
++-                |(FAST-READER-METHOD LONG-METHOD-COMBINATION FUNCTION)|
++-                |(FAST-READER-METHOD TRACED-METHOD FUNCTION)|
+++                SLOT-DEFINITION-WRITER-FUNCTION
+++                SLOT-DEFINITION-READER-FUNCTION
+++                SLOT-DEFINITION-INTERNAL-WRITER-FUNCTION
+++                SLOT-DEFINITION-INTERNAL-READER-FUNCTION
+++                |(FAST-READER-METHOD SLOT-OBJECT CLASS)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION CLASS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT ACCESSOR-FLAGS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT METHOD-CLASS)|
+++                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION METHOD-CLASS)|
++                 |(FAST-READER-METHOD TRACED-METHOD GENERIC-FUNCTION)|
++-                |(FAST-READER-METHOD STANDARD-METHOD SPECIALIZERS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT SPECIALIZERS)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION READERS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT READERS)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION WRITERS)|
+++                |(FAST-READER-METHOD TRACED-METHOD FUNCTION)|
+++                |(FAST-READER-METHOD LONG-METHOD-COMBINATION FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT INITFUNCTION)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION INITFUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT ALLOCATION)|
+++                |(FAST-READER-METHOD STANDARD-SLOT-DEFINITION ALLOCATION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT INTERNAL-WRITER-FUNCTION)|
+++                |(FAST-READER-METHOD STRUCTURE-SLOT-DEFINITION INTERNAL-WRITER-FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT INTERNAL-READER-FUNCTION)|
+++                |(FAST-READER-METHOD STRUCTURE-SLOT-DEFINITION INTERNAL-READER-FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT BOUNDP-FUNCTION)|
+++                |(FAST-READER-METHOD EFFECTIVE-SLOT-DEFINITION BOUNDP-FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT WRITER-FUNCTION)|
+++                |(FAST-READER-METHOD EFFECTIVE-SLOT-DEFINITION WRITER-FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT READER-FUNCTION)|
+++                |(FAST-READER-METHOD EFFECTIVE-SLOT-DEFINITION READER-FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT LOCATION)|
+++                |(FAST-READER-METHOD STANDARD-EFFECTIVE-SLOT-DEFINITION LOCATION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT FAST-FUNCTION)|
+++                |(FAST-READER-METHOD STANDARD-METHOD FAST-FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT GENERIC-FUNCTION)|
+++                |(FAST-READER-METHOD STANDARD-METHOD GENERIC-FUNCTION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT SLOT-DEFINITION)|
+++                |(FAST-READER-METHOD STANDARD-ACCESSOR-METHOD SLOT-DEFINITION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT METHOD-COMBINATION)|
+++                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION METHOD-COMBINATION)|
+++                |(FAST-READER-METHOD SLOT-OBJECT DOCUMENTATION)|
+++                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION DOCUMENTATION)|
++                 |(FAST-READER-METHOD SLOT-OBJECT WRITERS)|
++-                |(FAST-READER-METHOD EQL-SPECIALIZER OBJECT)|
++-                |(FAST-READER-METHOD SLOT-OBJECT OBJECT)|
++-                |(FAST-READER-METHOD CLASS-PROTOTYPE-SPECIALIZER OBJECT)|
++-                |(FAST-READER-METHOD CLASS-EQ-SPECIALIZER OBJECT)|
++-                |(FAST-READER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(FAST-READER-METHOD SHORT-METHOD-COMBINATION IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION TYPE)|
++-                |(FAST-READER-METHOD SLOT-OBJECT TYPE)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION TYPE)|
++-                |(FAST-READER-METHOD PCL-CLASS PROTOTYPE)|
++-                |(FAST-READER-METHOD SLOT-OBJECT PROTOTYPE)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION WRITERS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT READERS)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION READERS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT SPECIALIZERS)|
+++                |(FAST-READER-METHOD STANDARD-METHOD SPECIALIZERS)|
++                 |(FAST-READER-METHOD SPECIALIZER TYPE)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION INITFORM)|
++-                |(FAST-READER-METHOD SLOT-OBJECT INITFORM)|
++-                |(FAST-READER-METHOD STRUCTURE-CLASS DEFSTRUCT-FORM)|
+++                |(FAST-READER-METHOD SLOT-OBJECT PROTOTYPE)|
+++                |(FAST-READER-METHOD PCL-CLASS PROTOTYPE)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION TYPE)|
+++                |(FAST-READER-METHOD SLOT-OBJECT TYPE)|
+++                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION TYPE)|
+++                |(FAST-READER-METHOD SHORT-METHOD-COMBINATION IDENTITY-WITH-ONE-ARGUMENT)|
+++                |(FAST-READER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
+++                |(FAST-READER-METHOD CLASS-EQ-SPECIALIZER OBJECT)|
+++                |(FAST-READER-METHOD CLASS-PROTOTYPE-SPECIALIZER OBJECT)|
+++                |(FAST-READER-METHOD SLOT-OBJECT OBJECT)|
+++                |(FAST-READER-METHOD EQL-SPECIALIZER OBJECT)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++-                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION PRETTY-ARGLIST)|
++-                |(FAST-READER-METHOD SLOT-OBJECT PRETTY-ARGLIST)|
++-                |(FAST-READER-METHOD STANDARD-METHOD LAMBDA-LIST)|
++-                |(FAST-READER-METHOD SLOT-OBJECT LAMBDA-LIST)|
++-                |(FAST-READER-METHOD PCL-CLASS CLASS-PRECEDENCE-LIST)|
++-                |(FAST-READER-METHOD SLOT-OBJECT CLASS-PRECEDENCE-LIST)|
++-                |(FAST-READER-METHOD PCL-CLASS CAN-PRECEDE-LIST)|
++-                |(FAST-READER-METHOD SLOT-OBJECT CAN-PRECEDE-LIST)|
++-                |(FAST-READER-METHOD PCL-CLASS INCOMPATIBLE-SUPERCLASS-LIST)|
++-                |(FAST-READER-METHOD SLOT-OBJECT INCOMPATIBLE-SUPERCLASS-LIST)|
++-                |(FAST-READER-METHOD PLIST-MIXIN PLIST)|
+++                |(FAST-READER-METHOD STRUCTURE-CLASS DEFSTRUCT-FORM)|
+++                |(FAST-READER-METHOD SLOT-OBJECT INITFORM)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION INITFORM)|
++                 |(FAST-READER-METHOD SLOT-OBJECT PLIST)|
++-                |(FAST-READER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++-                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION OPTIONS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT OPTIONS)|
++-                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION METHODS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT METHODS)|
++-                |(FAST-READER-METHOD SLOT-CLASS DIRECT-SLOTS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SLOTS)|
++-                |(FAST-READER-METHOD SLOT-CLASS SLOTS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT SLOTS)|
+++                |(FAST-READER-METHOD PLIST-MIXIN PLIST)|
+++                |(FAST-READER-METHOD SLOT-OBJECT INCOMPATIBLE-SUPERCLASS-LIST)|
+++                |(FAST-READER-METHOD PCL-CLASS INCOMPATIBLE-SUPERCLASS-LIST)|
+++                |(FAST-READER-METHOD SLOT-OBJECT CAN-PRECEDE-LIST)|
+++                |(FAST-READER-METHOD PCL-CLASS CAN-PRECEDE-LIST)|
+++                |(FAST-READER-METHOD SLOT-OBJECT CLASS-PRECEDENCE-LIST)|
+++                |(FAST-READER-METHOD PCL-CLASS CLASS-PRECEDENCE-LIST)|
+++                |(FAST-READER-METHOD SLOT-OBJECT LAMBDA-LIST)|
+++                |(FAST-READER-METHOD STANDARD-METHOD LAMBDA-LIST)|
+++                |(FAST-READER-METHOD SLOT-OBJECT PRETTY-ARGLIST)|
+++                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION PRETTY-ARGLIST)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DIRECT-METHODS)|
++-                |(FAST-READER-METHOD CLASS DIRECT-SUPERCLASSES)|
++-                |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SUPERCLASSES)|
++-                |(FAST-READER-METHOD CLASS DIRECT-SUBCLASSES)|
+++                |(FAST-READER-METHOD SLOT-OBJECT SLOTS)|
+++                |(FAST-READER-METHOD SLOT-CLASS SLOTS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SLOTS)|
+++                |(FAST-READER-METHOD SLOT-CLASS DIRECT-SLOTS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT METHODS)|
+++                |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION METHODS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT OPTIONS)|
+++                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION OPTIONS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SUBCLASSES)|
+++                |(FAST-READER-METHOD CLASS DIRECT-SUBCLASSES)|
+++                |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SUPERCLASSES)|
+++                |(FAST-READER-METHOD CLASS DIRECT-SUPERCLASSES)|
++                 SLOT-DEFINITION-CLASS EQL-SPECIALIZER-OBJECT
++                 |PCL::DIRECT-SLOT-DEFINITION class predicate|
++                 CLASS-CONSTRUCTORS |(BOUNDP WRAPPER)| SLOTS-TO-INSPECT
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT NAME)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT DFUN-STATE)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT SLOT-NAME)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT PREDICATE-NAME)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT SLOT-NAME)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT DFUN-STATE)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT NAME)|
++                 |(BOUNDP DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 SPECIALIZER-DIRECT-GENERIC-FUNCTIONS
++                 |(BOUNDP CLASS-EQ-SPECIALIZER)|
++                 |(SETF SLOT-DEFINITION-NAME)| ADD-WRITER-METHOD
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT METHOD-CLASS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT ACCESSOR-FLAGS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT CLASS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT DOCUMENTATION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT METHOD-COMBINATION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT SLOT-DEFINITION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT GENERIC-FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT FAST-FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT LOCATION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT READER-FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT WRITER-FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT BOUNDP-FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT INTERNAL-READER-FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT INTERNAL-WRITER-FUNCTION)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT ALLOCATION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT ACCESSOR-FLAGS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT METHOD-CLASS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT INITFUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT ALLOCATION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT INTERNAL-WRITER-FUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT INTERNAL-READER-FUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT BOUNDP-FUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT WRITER-FUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT READER-FUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT LOCATION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT FAST-FUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT FUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT GENERIC-FUNCTION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT SLOT-DEFINITION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT METHOD-COMBINATION)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT DOCUMENTATION)|
++                 |(BOUNDP OPERATOR)| |(BOUNDP ARG-INFO)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT SPECIALIZERS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT READERS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT WRITERS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT OBJECT)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT TYPE)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT READERS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT SPECIALIZERS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT PROTOTYPE)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT INITFORM)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT TYPE)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT OBJECT)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++-                |(SETF SLOT-DEFINITION-CLASS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT INITFORM)|
++                 |(SETF SLOT-VALUE-USING-CLASS)|
++-                |(SETF SLOT-DEFINITION-LOCATION)|
++-                |(SETF SLOT-DEFINITION-READER-FUNCTION)|
++-                |(SETF SLOT-DEFINITION-WRITER-FUNCTION)|
++-                |(SETF SLOT-DEFINITION-BOUNDP-FUNCTION)|
++-                |(SETF SLOT-DEFINITION-INTERNAL-READER-FUNCTION)|
++-                |(SETF SLOT-DEFINITION-INTERNAL-WRITER-FUNCTION)|
++-                |(SETF SLOT-DEFINITION-ALLOCATION)|
++-                |(SETF SLOT-DEFINITION-INITFUNCTION)|
+++                |(SETF SLOT-DEFINITION-CLASS)|
++                 |(SETF SLOT-ACCESSOR-FUNCTION)|
+++                |(SETF SLOT-DEFINITION-INITFUNCTION)|
+++                |(SETF SLOT-DEFINITION-ALLOCATION)|
+++                |(SETF SLOT-DEFINITION-INTERNAL-WRITER-FUNCTION)|
+++                |(SETF SLOT-DEFINITION-INTERNAL-READER-FUNCTION)|
+++                |(SETF SLOT-DEFINITION-BOUNDP-FUNCTION)|
+++                |(SETF SLOT-DEFINITION-WRITER-FUNCTION)|
+++                |(SETF SLOT-DEFINITION-READER-FUNCTION)|
+++                |(SETF SLOT-DEFINITION-LOCATION)|
++                 |(BOUNDP DEFSTRUCT-CONSTRUCTOR)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT PRETTY-ARGLIST)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT LAMBDA-LIST)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT CLASS-PRECEDENCE-LIST)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT CAN-PRECEDE-LIST)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT INCOMPATIBLE-SUPERCLASS-LIST)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT PLIST)|
++-                |(SETF SLOT-DEFINITION-READERS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT INCOMPATIBLE-SUPERCLASS-LIST)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT CAN-PRECEDE-LIST)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT CLASS-PRECEDENCE-LIST)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT LAMBDA-LIST)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT PRETTY-ARGLIST)|
++                 |(SETF SLOT-DEFINITION-WRITERS)|
+++                |(SETF SLOT-DEFINITION-READERS)|
++                 |(SETF SLOT-DEFINITION-TYPE)|
++                 |(SETF SLOT-DEFINITION-INITFORM)|
++                 |(BOUNDP INITIALIZE-INFO)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT OPTIONS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT METHODS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SLOTS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT SLOTS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-METHODS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SUPERCLASSES)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-METHODS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT SLOTS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SLOTS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT METHODS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT OPTIONS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SUBCLASSES)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SUPERCLASSES)|
++                 |(FAST-INTERNAL-READER-METHOD STANDARD-GENERIC-FUNCTION ARG-INFO)|
++                 |(BOUNDP INITARGS)| LONG-METHOD-COMBINATION-FUNCTION
++                 GENERIC-FUNCTION-P
++-                |PCL::SLOT-DEFINITION class predicate|
++-                |LISP::NULL class predicate| |(READER NAME)|
++-                |(READER CLASS)| |(FAST-METHOD SLOT-MISSING (T T T T))|
+++                |PCL::SLOT-DEFINITION class predicate| |(READER NAME)|
+++                |(READER CLASS)| |(FAST-METHOD SLOT-UNBOUND (T T T))|
++                 |(FAST-METHOD (SETF DOCUMENTATION) (T T))|
++-                |(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
++-                |(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
++-                |(FAST-METHOD SLOT-UNBOUND (T T T))|
++-                |(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
++-                |(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
++                 |(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
++                 |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
++                 |(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
+++                |(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
++                 |(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
+++                |(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
++                 |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
++-                |(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
+++                |(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
+++                |(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
+++                |(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
+++                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD PRINT-OBJECT (CLASS T))|
+++                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
+++                |(FAST-METHOD PRINT-OBJECT (T T))|
+++                |(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
+++                |(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
+++                |(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
+++                |(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++                |(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
+++                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
+++                |(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
+++                |(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
+++                |(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
+++                |(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
+++                |(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
+++                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
+++                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
+++                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
++                 |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
++                 |(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
+++                |(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
+++                |(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
++                 |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
++-                |(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
++                 |(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
++-                |(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
++-                |(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
++-                |(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (T T))|
++-                |(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
++                 |(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
+++                |(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
++                 |(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (T T))|
++                 |(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
++                 |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
++                 |(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
+++                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
++                 |(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD SLOT-MISSING (T T T T))|
++                 |(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|
++-                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
++-                |(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
++-                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
++-                |(FAST-METHOD PRINT-OBJECT (T T))|
++-                |(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
++-                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-                |(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
++-                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-                |(FAST-METHOD PRINT-OBJECT (CLASS T))|
++-                |(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-                |(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
++-                |(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
++-                |(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
++-                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
++-                |(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-                |(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
++-                |(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
++-                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
++-                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-                |(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
++-                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
++-                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-                LEGAL-SLOT-NAME-P |(READER OBJECT)| |(READER TYPE)|
+++                LEGAL-SLOT-NAME-P |(READER TYPE)| |(READER OBJECT)|
++                 CLASS-WRAPPER |(READER PLIST)|
++-                |(FAST-METHOD NO-APPLICABLE-METHOD (T))|
++-                |(FAST-METHOD DOCUMENTATION (T))|
++                 |(FAST-METHOD CLASS-PREDICATE-NAME (T))|
+++                |(FAST-METHOD DOCUMENTATION (T))|
+++                |(FAST-METHOD NO-APPLICABLE-METHOD (T))|
++                 |(READER SLOTS)| |(WRITER NAME)| DEFINITION-SOURCE
++                 |PCL::SLOT-OBJECT class predicate| DEFAULT-INITARGS
++-                |(WRITER CLASS)| CLASS-SLOT-VALUE |(WRITER OBJECT)|
++-                |(WRITER TYPE)|
+++                |(WRITER CLASS)| CLASS-SLOT-VALUE |(WRITER TYPE)|
+++                |(WRITER OBJECT)|
++                 |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
++                 |(WRITER PLIST)| |(WRITER SLOTS)|
++                 |PCL::DOCUMENTATION-MIXIN class predicate|
++@@ -1309,37 +1563,55 @@
++                 LEGAL-QUALIFIER-P METHOD-P
++                 |PCL::SPECIALIZER-WITH-OBJECT class predicate|
++                 CLASS-SLOT-CELLS
++-                |(COMBINED-METHOD REINITIALIZE-INSTANCE)|
++                 |(COMBINED-METHOD INITIALIZE-INSTANCE)|
+++                |(COMBINED-METHOD REINITIALIZE-INSTANCE)|
++                 STANDARD-ACCESSOR-METHOD-P |(SETF CLASS-NAME)|
++-                STANDARD-METHOD-P STANDARD-READER-METHOD-P
++-                STANDARD-GENERIC-FUNCTION-P |(READER WRAPPER)|
+++                STANDARD-GENERIC-FUNCTION-P STANDARD-READER-METHOD-P
+++                STANDARD-METHOD-P |(READER WRAPPER)|
++                 |(READER DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 |(READER CLASS-EQ-SPECIALIZER)|
++-                COMPUTE-DEFAULT-INITARGS
++                 COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS
++-                |(SETF CLASS-DEFSTRUCT-FORM)|
+++                COMPUTE-DEFAULT-INITARGS |(SETF CLASS-DEFSTRUCT-FORM)|
++                 |(CALL REAL-MAKE-METHOD-LAMBDA)|
++                 |(SETF CLASS-INCOMPATIBLE-SUPERCLASS-LIST)|
++-                |SETF PCL CLASS-SLOT-VALUE| |(SETF CLASS-DIRECT-SLOTS)|
++-                |(SETF CLASS-SLOTS)| DO-STANDARD-DEFSETF-1
++-                |(READER OPERATOR)| |(CALL REAL-ADD-METHOD)|
++-                |(CALL REAL-REMOVE-METHOD)| |(CALL REAL-GET-METHOD)|
+++                |COMMON-LISP::NULL class predicate|
+++                |COMMON-LISP::SYMBOL class predicate|
+++                |COMMON-LISP::CHARACTER class predicate|
+++                |COMMON-LISP::BIT-VECTOR class predicate|
+++                |COMMON-LISP::STRING class predicate|
+++                |COMMON-LISP::VECTOR class predicate|
+++                |COMMON-LISP::ARRAY class predicate|
+++                |COMMON-LISP::CONS class predicate|
+++                |COMMON-LISP::LIST class predicate|
+++                |COMMON-LISP::SEQUENCE class predicate|
+++                |COMMON-LISP::RATIO class predicate|
+++                |COMMON-LISP::INTEGER class predicate|
+++                |COMMON-LISP::RATIONAL class predicate|
+++                |COMMON-LISP::FLOAT class predicate|
+++                |COMMON-LISP::COMPLEX class predicate|
+++                |COMMON-LISP::NUMBER class predicate|
+++                |COMMON-LISP::T class predicate|
+++                |COMMON-LISP::STRUCTURE-OBJECT class predicate|
+++                |COMMON-LISP::STANDARD-OBJECT class predicate|
+++                |COMMON-LISP::BUILT-IN-CLASS class predicate|
+++                |SETF PCL CLASS-SLOT-VALUE| |(SETF CLASS-SLOTS)|
+++                |(SETF CLASS-DIRECT-SLOTS)| DO-STANDARD-DEFSETF-1
+++                |(READER OPERATOR)| |(CALL REAL-GET-METHOD)|
+++                |(CALL REAL-REMOVE-METHOD)| |(CALL REAL-ADD-METHOD)|
++                 |(READER ARG-INFO)| METHOD-COMBINATION-TYPE
++                 |(READER DEFSTRUCT-CONSTRUCTOR)|
++                 |(INTERNAL-READER-METHOD STANDARD-GENERIC-FUNCTION ARG-INFO)|
++                 |(READER INITIALIZE-INFO)| |(WRITER WRAPPER)|
++-                STANDARD-CLASS-P |LISP::NUMBER class predicate|
++-                LEGAL-SPECIALIZER-P
+++                STANDARD-CLASS-P LEGAL-SPECIALIZER-P
++                 |PCL::LONG-METHOD-COMBINATION class predicate|
++                 |(WRITER DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 COMPUTE-SLOT-ACCESSOR-INFO |(READER INITARGS)|
++                 |(WRITER CLASS-EQ-SPECIALIZER)|
++                 STANDARD-BOUNDP-METHOD-P FDEFINE-CAREFULLY
++                 |(SETF DOCUMENTATION)| RAW-INSTANCE-ALLOCATOR
++-                |SETF PCL CLASS-INITIALIZE-INFO|
++                 |SETF PCL SLOT-DEFINITION-DEFSTRUCT-ACCESSOR-SYMBOL|
++-                |(WRITER OPERATOR)| |(WRITER ARG-INFO)|
+++                |SETF PCL CLASS-INITIALIZE-INFO| |(WRITER OPERATOR)|
+++                |(WRITER ARG-INFO)|
++                 COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO
++                 STANDARD-WRITER-METHOD-P
++                 CLASS-INCOMPATIBLE-SUPERCLASS-LIST
++@@ -1349,78 +1621,77 @@
++                 METHOD-COMBINATION-DOCUMENTATION
++                 |SETF PCL SLOT-DEFINITION-INITARGS|
++                 REMOVE-BOUNDP-METHOD ADD-NAMED-METHOD
++-                |(WRITER INITARGS)|
++                 |SETF PCL CLASS-DEFSTRUCT-CONSTRUCTOR|
++-                |LISP::CONS class predicate| |(BOUNDP METHOD)|
++-                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION NAME)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT NAME)|
++-                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION DFUN-STATE)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT DFUN-STATE)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT SLOT-NAME)|
++-                |(FAST-WRITER-METHOD SLOT-DEFINITION NAME)|
++-                |(FAST-WRITER-METHOD CLASS NAME)|
+++                |(WRITER INITARGS)| |(BOUNDP METHOD)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT PREDICATE-NAME)|
+++                |(FAST-WRITER-METHOD CLASS NAME)|
+++                |(FAST-WRITER-METHOD SLOT-DEFINITION NAME)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT SLOT-NAME)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT DFUN-STATE)|
+++                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION DFUN-STATE)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT NAME)|
+++                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION NAME)|
++                 |(BOUNDP SOURCE)| |(SETF GF-DFUN-STATE)|
++                 SHORT-COMBINATION-OPERATOR
++-                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION METHOD-CLASS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT METHOD-CLASS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT ACCESSOR-FLAGS)|
++-                |(FAST-WRITER-METHOD SLOT-DEFINITION CLASS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT CLASS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT DOCUMENTATION)|
++-                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION METHOD-COMBINATION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT METHOD-COMBINATION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT SLOT-DEFINITION)|
++-                |(FAST-WRITER-METHOD STANDARD-METHOD GENERIC-FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT GENERIC-FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT FAST-FUNCTION)|
++-                |(FAST-WRITER-METHOD STANDARD-EFFECTIVE-SLOT-DEFINITION LOCATION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT LOCATION)|
++-                |(FAST-WRITER-METHOD EFFECTIVE-SLOT-DEFINITION READER-FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT READER-FUNCTION)|
++-                |(FAST-WRITER-METHOD EFFECTIVE-SLOT-DEFINITION WRITER-FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT WRITER-FUNCTION)|
++-                |(FAST-WRITER-METHOD EFFECTIVE-SLOT-DEFINITION BOUNDP-FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT BOUNDP-FUNCTION)|
++-                |(FAST-WRITER-METHOD STRUCTURE-SLOT-DEFINITION INTERNAL-READER-FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT INTERNAL-READER-FUNCTION)|
++-                |(FAST-WRITER-METHOD STRUCTURE-SLOT-DEFINITION INTERNAL-WRITER-FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT INTERNAL-WRITER-FUNCTION)|
++-                |(FAST-WRITER-METHOD STANDARD-SLOT-DEFINITION ALLOCATION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT ALLOCATION)|
++-                |(FAST-WRITER-METHOD SLOT-DEFINITION INITFUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT INITFUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-DEFINITION CLASS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT ACCESSOR-FLAGS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT METHOD-CLASS)|
+++                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION METHOD-CLASS)|
++                 |(FAST-WRITER-METHOD TRACED-METHOD GENERIC-FUNCTION)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT SPECIALIZERS)|
++-                |(FAST-WRITER-METHOD SLOT-DEFINITION READERS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT READERS)|
++-                |(FAST-WRITER-METHOD SLOT-DEFINITION WRITERS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT INITFUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-DEFINITION INITFUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT ALLOCATION)|
+++                |(FAST-WRITER-METHOD STANDARD-SLOT-DEFINITION ALLOCATION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT INTERNAL-WRITER-FUNCTION)|
+++                |(FAST-WRITER-METHOD STRUCTURE-SLOT-DEFINITION INTERNAL-WRITER-FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT INTERNAL-READER-FUNCTION)|
+++                |(FAST-WRITER-METHOD STRUCTURE-SLOT-DEFINITION INTERNAL-READER-FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT BOUNDP-FUNCTION)|
+++                |(FAST-WRITER-METHOD EFFECTIVE-SLOT-DEFINITION BOUNDP-FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT WRITER-FUNCTION)|
+++                |(FAST-WRITER-METHOD EFFECTIVE-SLOT-DEFINITION WRITER-FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT READER-FUNCTION)|
+++                |(FAST-WRITER-METHOD EFFECTIVE-SLOT-DEFINITION READER-FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT LOCATION)|
+++                |(FAST-WRITER-METHOD STANDARD-EFFECTIVE-SLOT-DEFINITION LOCATION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT FAST-FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT GENERIC-FUNCTION)|
+++                |(FAST-WRITER-METHOD STANDARD-METHOD GENERIC-FUNCTION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT SLOT-DEFINITION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT METHOD-COMBINATION)|
+++                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION METHOD-COMBINATION)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT DOCUMENTATION)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT WRITERS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT OBJECT)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT TYPE)|
++-                |(FAST-WRITER-METHOD SLOT-DEFINITION TYPE)|
+++                |(FAST-WRITER-METHOD SLOT-DEFINITION WRITERS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT READERS)|
+++                |(FAST-WRITER-METHOD SLOT-DEFINITION READERS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT SPECIALIZERS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT PROTOTYPE)|
+++                |(FAST-WRITER-METHOD SLOT-DEFINITION TYPE)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT TYPE)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT OBJECT)|
++                 REMOVE-NAMED-METHOD
++-                |(FAST-WRITER-METHOD SLOT-DEFINITION INITFORM)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT INITFORM)|
++-                |(FAST-WRITER-METHOD STRUCTURE-CLASS DEFSTRUCT-FORM)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++-                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION PRETTY-ARGLIST)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT PRETTY-ARGLIST)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT LAMBDA-LIST)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT CLASS-PRECEDENCE-LIST)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT CAN-PRECEDE-LIST)|
++-                |(FAST-WRITER-METHOD PCL-CLASS INCOMPATIBLE-SUPERCLASS-LIST)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT INCOMPATIBLE-SUPERCLASS-LIST)|
++-                |(FAST-WRITER-METHOD PLIST-MIXIN PLIST)|
+++                |(FAST-WRITER-METHOD STRUCTURE-CLASS DEFSTRUCT-FORM)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT INITFORM)|
+++                |(FAST-WRITER-METHOD SLOT-DEFINITION INITFORM)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT PLIST)|
+++                |(FAST-WRITER-METHOD PLIST-MIXIN PLIST)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT INCOMPATIBLE-SUPERCLASS-LIST)|
+++                |(FAST-WRITER-METHOD PCL-CLASS INCOMPATIBLE-SUPERCLASS-LIST)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT CAN-PRECEDE-LIST)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT CLASS-PRECEDENCE-LIST)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT LAMBDA-LIST)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT PRETTY-ARGLIST)|
+++                |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION PRETTY-ARGLIST)|
++                 LEGAL-DOCUMENTATION-P CLASS-DIRECT-SUPERCLASSES
++                 CLASS-DIRECT-SUBCLASSES CLASS-DIRECT-DEFAULT-INITARGS
++                 SLOT-DEFINITION-READERS SLOT-VALUE-USING-CLASS
++-                COMPUTE-APPLICABLE-METHODS CLASS-NAME CLASSP
++-                CLASS-PROTOTYPE READER-METHOD-CLASS REMOVE-METHOD
+++                COMPUTE-APPLICABLE-METHODS CLASS-NAME CLASS-PROTOTYPE
+++                CLASSP READER-METHOD-CLASS REMOVE-METHOD
++                 SLOT-DEFINITION-INITFORM
++                 UPDATE-INSTANCE-FOR-REDEFINED-CLASS
++                 UPDATE-INSTANCE-FOR-DIFFERENT-CLASS CHANGE-CLASS
++@@ -1454,5 +1725,6 @@
++                 ENSURE-CLASS-USING-CLASS NO-APPLICABLE-METHOD
++                 SLOT-DEFINITION-WRITERS
++                 COMPUTE-APPLICABLE-METHODS-USING-CLASSES
++-                CLASS-PRECEDENCE-LIST))
+++                CLASS-PRECEDENCE-LIST DISASSEMBLE DESCRIBE-OBJECT
+++                COMPILE))
++   (SETF (GET V 'SYSTEM::PROCLAIMED-CLOSURE) T)) 
++--- gcl-2.6.12.orig/unixport/makefile
+++++ gcl-2.6.12/unixport/makefile
++@@ -69,42 +69,7 @@ $(LSPDIR)/auto_new.lsp: $(LSPDIR)/auto.l
++      [ "$(RL_OBJS)" = "" ] || \
++              echo "(AUTOLOAD 'init-readline '|readline|)" >>$@
++ 
++-init_gcl.lsp.tmp: init_gcl.lsp.in
++-     cp $< $@
++-
++-init_pre_gcl.lsp.tmp: init_pre_gcl.lsp.in
++-     cp $< $@
++-
++-init_mod_gcl.lsp.tmp: init_mod_gcl.lsp.in
++-     cp $< $@
++-
++-init_xgcl.lsp.tmp: init_gcl.lsp.tmp
++-     ln -snf $< $@
++-
++-init_pcl_gcl.lsp.tmp: init_pcl_gcl.lsp.in ../cmpnew/gcl_cmpmain.lsp \
++-             ../pcl/sys-package.lisp ../clcs/package.lisp \
++-             $(shell find ../clcs/ -name "clcs_*.lisp")
++-
++-     awk '/^ *@LI-PCL-PACKAGE@/{i=1;next} {if (i==0) print}' $< >$@
++-#    cat ../cmpnew/gcl_cmpmain.lsp >>$@
++-     cat ../pcl/sys-package.lisp >>$@
++-     awk '/^ *@LI-PCL-PACKAGE@/{i=1;next} {if (i==1) print}' $< >>$@
++-
++-init_ansi_gcl.lsp.tmp: init_ansi_gcl.lsp.in ../cmpnew/gcl_cmpmain.lsp \
++-             ../pcl/sys-package.lisp ../clcs/package.lisp
++-
++-     awk '/^ *@LI-PCL-PACKAGE@/{i=1;next} \
++-             /^ *@LI-CLCS-PACKAGE@/{i=2;next} {if (i==0) print}' $< >$@
++-#    cat ../cmpnew/gcl_cmpmain.lsp >>$@
++-     cat ../pcl/sys-package.lisp >>$@
++-     awk '/^ *@LI-PCL-PACKAGE@/{i=1;next} \
++-             /^ *@LI-CLCS-PACKAGE@/{i=2;next} {if (i==1) print}' $< >>$@
++-     cat ../clcs/package.lisp >>$@
++-     awk '/^ *@LI-PCL-PACKAGE@/{i=1;next} \
++-             /^ *@LI-CLCS-PACKAGE@/{i=2;next} {if (i==2) print}' $< >>$@
++-
++-
++-init_%.lsp: init_%.lsp.tmp
+++sys_init.lsp: sys_init.lsp.in
++ 
++      cat $< | sed \
++              -e "s#@LI-VERS@#(`cat ../majvers`.`cat ../minvers`) `date`#1" \
++@@ -118,14 +83,14 @@ init_%.lsp: init_%.lsp.tmp
++              -e "s#@LI-OPT-TWO@#\"$(O2FLAGS)\"#1" \
++              -e "s#@LI-INIT-LSP@#\"$@\"#1" >$@
++ 
++-saved_%:raw_% $(RSYM) init_%.lsp raw_%_map msys \
+++saved_%:raw_% $(RSYM) sys_init.lsp raw_%_map msys \
++              $(CMPDIR)/gcl_cmpmain.lsp \
++              $(CMPDIR)/gcl_lfun_list.lsp \
++              $(CMPDIR)/gcl_cmpopt.lsp $(HDIR)/cmpinclude.h \
++              $(LSPDIR)/gcl_auto_new.lsp
++ 
++-     cp init_$*.lsp foo
++-     echo " (in-package \"USER\")(system:save-system \"$@\")" >>foo
+++     cp sys_init.lsp foo
+++     echo "(unless si::*quit-tags* (in-package \"USER\")(system:save-system \"$@\"))" >>foo
++      ar x lib$*.a $$(ar t lib$*.a |grep ^gcl_)
++      $(PORTDIR)/raw_$*$(EXE) $(PORTDIR)/ -libdir $(GCLDIR)/ < foo
++ #       check that saved image can be prelinked
++@@ -194,7 +159,7 @@ map_%:
++ clean:
++      rm -rf  saved_*$(EXE) raw_*$(EXE) *.o core a.out $(RSYM) \
++              $(LSPDIR)/auto_new.lsp foo *maxima* init_*.lsp lib*.a gmp* bfd* *.lsp.tmp \
++-             gazonk*.lsp plt*h *_map saved_* lib* raw_* msys out* log* tmp* gcl.script
+++             gazonk*.lsp plt*h *_map saved_* lib* raw_* msys out* log* tmp* gcl.script sys_init.lsp
++ 
++ .INTERMEDIATE: init_ansi_gcl.lsp.tmp init_gcl.lsp.tmp raw_gcl raw_ansi_gcl
++ .PRECIOUS: init_pre_gcl.lsp init_gcl.lsp init_ansi_gcl.lsp
++--- gcl-2.6.12.orig/unixport/sys_ansi_gcl.c
+++++ gcl-2.6.12/unixport/sys_ansi_gcl.c
++@@ -7,6 +7,10 @@ void
++ gcl_init_init()
++ {
++ 
+++  object features;
+++  features=find_symbol(make_simple_string("*FEATURES*"),system_package);
+++  features->s.s_dbind=make_cons(make_keyword("ANSI-CL"),make_cons(make_keyword("COMMON-LISP"),features->s.s_dbind));
+++
++   build_symbol_table();
++ 
++   lsp_init("../lsp/gcl_export.lsp");
++@@ -86,7 +90,7 @@ gcl_init_system(object no_init)
++   ar_check_init(gcl_cmpmain,no_init);
++ 
++ #ifdef HAVE_XGCL
++-  lsp_init("../xgcl-2/sysdef.lisp");
+++  lsp_init("../xgcl-2/package.lisp");
++   ar_check_init(gcl_Xlib,no_init);
++   ar_check_init(gcl_Xutil,no_init);
++   ar_check_init(gcl_X,no_init);
++--- gcl-2.6.12.orig/unixport/sys_gcl.c
+++++ gcl-2.6.12/unixport/sys_gcl.c
++@@ -83,7 +83,7 @@ gcl_init_system(object no_init) {
++   ar_check_init(gcl_cmpmain,no_init);
++ 
++ #ifdef HAVE_XGCL
++-  lsp_init("../xgcl-2/sysdef.lisp");
+++  lsp_init("../xgcl-2/package.lisp");
++   ar_check_init(gcl_Xlib,no_init);
++   ar_check_init(gcl_Xutil,no_init);
++   ar_check_init(gcl_X,no_init);
++--- /dev/null
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -0,0 +1,82 @@
+++(make-package :compiler :use '(:lisp :si))
+++(make-package :sloop :use '(:lisp))
+++(make-package :ansi-loop :use'(:lisp))
+++(make-package :defpackage :use '(:lisp))
+++(make-package :tk :use '(:lisp :sloop))
+++(make-package :fpe :use '(:lisp))
+++(make-package :cltl1-compat)
+++
+++(in-package :system)
+++(use-package :fpe)
+++
+++#+(or pcl ansi-cl)(load "../pcl/package.lisp")
+++#+ansi-cl(load "../clcs/package.lisp")
+++
+++(init-system) 
+++(in-package :si)
+++(gbc t)
+++
+++(unless *link-array*
+++  (setq *link-array* (make-array (ash 1 11) :element-type 'character :fill-pointer 0)))
+++(use-fast-links t)
+++
+++(let* ((x (append (pathname-directory *system-directory*) (list :parent)))
+++       (lsp (append x (list "lsp")))
+++       (cmpnew (append x (list "cmpnew")))
+++       (h (append x (list "h")))
+++       (xgcl-2 (append x (list "xgcl-2")))
+++       (pcl (append x (list "pcl")))
+++       (clcs (append x (list "clcs")))
+++       (gtk (append x (list "gcl-tk"))))
+++  (dolist (d (list lsp cmpnew #-pre-gcl xgcl-2 #+(or pcl ansi-cl) pcl #+ansi-cl clcs))
+++    (load (make-pathname :name "sys-proclaim" :type "lisp" :directory d)))
+++  (load (make-pathname :name "tk-package" :type "lsp" :directory gtk))
+++  (load (make-pathname :name "gcl_lfun_list" :type "lsp" :directory cmpnew))
+++  (load (make-pathname :name "gcl_cmpopt" :type "lsp" :directory cmpnew))
+++  (load (make-pathname :name "gcl_auto_new" :type "lsp" :directory lsp))
+++  
+++  (gbc t))
+++
+++(setf (symbol-function 'clear-compiler-properties)
+++      (symbol-function 'compiler::compiler-clear-compiler-properties))
+++
+++(terpri)
+++(setq *inhibit-macro-special* t)
+++(gbc t)
+++(reset-gbc-count)
+++
+++(defun top-level nil (gcl-top-level))
+++
+++(set-up-top-level)
+++
+++(setq *gcl-extra-version* @LI-EXTVERS@
+++      *gcl-minor-version* @LI-MINVERS@ 
+++      *gcl-major-version* @LI-MAJVERS@)
+++
+++(defvar *system-banner* (default-system-banner))
+++(setq *optimize-maximum-pages* t)
+++
+++(fmakunbound 'init-cmp-anon)
+++(when (fboundp 'user-init) (user-init))
+++(in-package :compiler)
+++(setq *cc* @LI-CC@
+++      *ld* @LI-LD@
+++      *ld-libs* @LI-LD-LIBS@
+++      *opt-three* @LI-OPT-THREE@
+++      *opt-two* @LI-OPT-TWO@
+++      *init-lsp* @LI-INIT-LSP@)
+++
+++(import 'si::(clines defentry defcfun object void int double
+++                  quit bye gbc system commonp
+++                  *break-on-warnings*
+++                  make-char char-bits char-font char-bit set-char-bit string-char-p int-char
+++                  char-font-limit char-bits-limit char-control-bit
+++                  char-meta-bit char-super-bit char-hyper-bit compiler-let) :cltl1-compat)
+++(deftype cltl1-compat::string-char nil 'character)
+++(do-symbols (s :cltl1-compat) (export s :cltl1-compat))
+++
+++#-ansi-cl(use-package :cltl1-compat :lisp)
+++#-ansi-cl(do-symbols (s :cltl1-compat) (export s :lisp)))
+++(export '*load-pathname* :si);For maxima, at least as of 5.34.1
+++
+++#+ansi-cl (use-package :pcl :user)
++--- gcl-2.6.12.orig/unixport/sys_pcl_gcl.c
+++++ gcl-2.6.12/unixport/sys_pcl_gcl.c
++@@ -7,6 +7,10 @@ void
++ gcl_init_init()
++ {
++ 
+++  object features;
+++  features=find_symbol(make_simple_string("*FEATURES*"),system_package);
+++  features->s.s_dbind=make_cons(make_keyword("PCL"),features->s.s_dbind);
+++
++   build_symbol_table();
++ 
++   lsp_init("../lsp/gcl_export.lsp");
++@@ -86,7 +90,7 @@ gcl_init_system(object no_init)
++   ar_check_init(gcl_cmpmain,no_init);
++ 
++ #ifdef HAVE_XGCL
++-  lsp_init("../xgcl-2/sysdef.lisp");
+++  lsp_init("../xgcl-2/package.lisp");
++   ar_check_init(gcl_Xlib,no_init);
++   ar_check_init(gcl_Xutil,no_init);
++   ar_check_init(gcl_X,no_init);
++--- gcl-2.6.12.orig/unixport/sys_pre_gcl.c
+++++ gcl-2.6.12/unixport/sys_pre_gcl.c
++@@ -4,6 +4,10 @@ void
++ gcl_init_init()
++ {
++ 
+++  object features;
+++  features=find_symbol(make_simple_string("*FEATURES*"),system_package);
+++  features->s.s_dbind=make_cons(make_keyword("PRE-GCL"),features->s.s_dbind);
+++
++   build_symbol_table();
++ 
++   lsp_init("../lsp/gcl_export.lsp");
++@@ -80,6 +84,7 @@ gcl_init_system(object no_init)
++   lsp_init("../cmpnew/gcl_cmpvar.lsp");
++   lsp_init("../cmpnew/gcl_cmpvs.lsp");
++   lsp_init("../cmpnew/gcl_cmpwt.lsp");
+++  lsp_init("../cmpnew/gcl_cmpmain.lsp");
++ 
++   
++ }
++--- gcl-2.6.12.orig/xgcl-2/gcl_init_xgcl.lsp
+++++ gcl-2.6.12/xgcl-2/gcl_init_xgcl.lsp
++@@ -36,8 +36,8 @@
++ (progn (allocate 'cons 100) (allocate 'string 40)
++  (system:init-system) (gbc t)
++  (si::multiply-bignum-stack 25)
++- (or lisp::*link-array*
++-  (setq lisp::*link-array*
+++ (or si::*link-array*
+++  (setq si::*link-array*
++      (make-array 500 :element-type 'fixnum :fill-pointer 0)))
++  (use-fast-links t)
++ (setq compiler::*cmpinclude* "<cmpinclude.h>") (load #"../cmpnew/cmpmain.lsp") (gbc t) (load #"../cmpnew/lfun_list.lsp")
++--- gcl-2.6.12.orig/xgcl-2/makefile
+++++ gcl-2.6.12/xgcl-2/makefile
++@@ -4,10 +4,13 @@
++ all: objects #docs
++ 
++ objects: $(LISP)
++-     echo '(load "sysdef.lisp")(xlib::compile-xgcl)' | $(LISP)
+++     echo '(load "sysdef.lisp")(load "sys-proclaim.lisp")(xlib::compile-xgcl)' | $(LISP)
++ 
++ saved_xgcl: $(LISP)
++-     echo '(load "sysdef.lisp")(xlib::compile-xgcl)(xlib::save-xgcl "$@")' | $(LISP)
+++     echo '(load "sysdef.lisp")(load "sys-proclaim.lisp")(xlib::compile-xgcl)(xlib::save-xgcl "$@")' | $(LISP)
+++
+++sys-proclaim.lisp:
+++     echo '(load "sysdef.lisp")(compiler::emit-fn t)(xlib::compile-xgcl)(compiler::make-all-proclaims "*.fn")' | $(LISP)
++ 
++ docs: dwdoc/dwdoccontents.html dwdoc.pdf
++ 
++@@ -22,7 +25,7 @@ dwdoc.pdf: dwdoc.tex
++ 
++ clean:
++      rm -f *.o *.data saved_*  cmpinclude.h dwdoc.aux dwdoc.log gmon.out
++-     rm -f gcl*c gcl*h gcl*data gcl_xrecompile* user-init*
+++     rm -f gcl*c gcl*h gcl*data gcl_xrecompile* user-init* *fn
++ 
++ clean-docs:
++      rm -rf dwdoc dwdoc.pdf
++--- /dev/null
+++++ gcl-2.6.12/xgcl-2/package.lisp
++@@ -0,0 +1 @@
+++(make-package :XLIB :use '(:lisp :system))
++--- /dev/null
+++++ gcl-2.6.12/xgcl-2/sys-proclaim.lisp
++@@ -0,0 +1,287 @@
+++
+++(COMMON-LISP::IN-PACKAGE "COMMON-LISP-USER") 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         XLIB::WINDOW-UNSET XLIB::WINDOW-GET-GEOMETRY
+++         XLIB::WINDOW-SET-INVERT XLIB::WINDOW-FONT-INFO
+++         XLIB::GET-ST-POINT XLIB::EDITMENU-YANK
+++         XLIB::WINDOW-INIT-MOUSE-POLL XLIB::WINDOW-SET-XOR
+++         XLIB::WINDOW-TOP-NEG-Y XLIB::WINDOW-LEFT
+++         XLIB::WINDOW-QUERY-POINTER XLIB::TEXTMENU-DRAW
+++         XLIB::EDITMENU-CARAT XLIB::EDITMENU-DRAW
+++         XLIB::WINDOW-STD-LINE-ATTR XLIB::WINDOW-UNMAP
+++         XLIB::WINDOW-QUERY-POINTER-B XLIB::WINDOW-BACKGROUND
+++         XLIB::EDITMENU-DELETE XLIB::WINDOW-MOVE XLIB::DOWINDOWCOM
+++         XLIB::WINDOW-SYNC XLIB::PICMENU-DRAW XLIB::WINDOW-MAP
+++         XLIB::WINDOW-RESET-COLOR XLIB::EDITMENU-KILL
+++         XLIB::BARMENU-DRAW XLIB::WINDOW-GET-GEOMETRY-B
+++         XLIB::MENU-CLEAR XLIB::WINDOW-RESET XLIB::WINDOW-WFUNCTION
+++         XLIB::MENU-DRAW XLIB::WINDOW-FOREGROUND XLIB::WINDOW-CLEAR
+++         XLIB::EDITMENU-BACKSPACE XLIB::WINDOW-DRAW-BORDER
+++         XLIB::LISP-STRING XLIB::WINDOW-SET-ERASE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         XLIB::OPEN-WINDOW)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         XLIB::WINDOW-GET-ELLIPSE XLIB::EDITMENU-SELECT
+++         XLIB::WINDOW-SET-XCOLOR XLIB::TEXTMENU-SELECT
+++         XLIB::PICMENU-SELECT XLIB::MAKECONT XLIB::WINDOW-GET-CIRCLE
+++         XLIB::MENU XLIB::WINDOW-GET-REGION XLIB::TEXTMENU-SET-TEXT
+++         XLIB::MENU-SELECT XLIB::BARMENU-SELECT
+++         XLIB::PICMENU-CREATE-FROM-SPEC XLIB::PRINTINDEX
+++         XLIB::EDITMENU-EDIT XLIB::MENU-CREATE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         XLIB::BARMENU-UPDATE-VALUE XLIB::WINDOW-FONT-STRING-WIDTH
+++         XLIB::MENU-FIND-ITEM-WIDTH XLIB::WINDOW-STRING-WIDTH
+++         XLIB::PICMENU-BOX-ITEM XLIB::WINDOW-SET-FOREGROUND
+++         XLIB::WINDOW-INVERTAREA XLIB::PICMENU-UNBOX-ITEM
+++         XLIB::PICMENU-DRAW-NAMED-BUTTON XLIB::WINDOW-SET-CURSOR
+++         XLIB::WINDOW-SET-LINE-WIDTH XLIB::PICMENU-DELETE-NAMED-BUTTON
+++         XLIB::EDITMENU-ERASE XLIB::PICMENU-DRAW-BUTTON
+++         XLIB::WINDOW-SET-BACKGROUND)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
+++         XLIB::XINIT XLIB::WINDOW-SCREEN-HEIGHT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
+++         XLIB::WINDOW-CIRCLE-RADIUS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-XOR-BOX-XY XLIB::WINDOW-DRAW-BOX-CORNERS
+++         XLIB::WINDOW-DRAW-LINE-XY XLIB::WINDOW-DRAW-ARROW2-XY
+++         XLIB::WINDOW-DRAW-ARROW-XY XLIB::WINDOW-DRAW-ELLIPSE-XY
+++         XLIB::WINDOW-ERASE-BOX-XY XLIB::WINDOW-DRAW-BOX-XY
+++         XLIB::WINDOW-DRAW-ARROWHEAD-XY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-COPY-AREA-XY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-PRETTYPRINTAT XLIB::MENU-UNBOX-ITEM
+++         XLIB::WINDOW-PRINTAT XLIB::WINDOW-DRAW-CROSSHAIRS-XY
+++         XLIB::WINDOW-MOVETO-XY XLIB::WINDOW-INVERT-AREA
+++         XLIB::WINDOW-DRAW-DOT-XY XLIB::WINDOW-DRAW-CARAT
+++         XLIB::WINDOW-ERASE-AREA XLIB::MENU-BOX-ITEM
+++         XLIB::WINDOW-DRAW-CROSS-XY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-DRAW-CIRCLE-XY XLIB::WINDOW-PRINT-LINE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-PRETTYPRINTAT-XY XLIB::WINDOW-DRAW-CIRCLE-PT
+++         XLIB::EDITMENU-DISPLAY XLIB::WINDOW-PRINTAT-XY
+++         XLIB::WINDOW-PROCESS-CHAR-EVENT XLIB::MENU-DISPLAY-ITEM)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-ADJ-BOX-XY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-DRAW-ARC-XY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-DRAW-ELLIPSE-PT XLIB::WINDOW-ERASE-AREA-XY
+++         XLIB::WINDOW-INVERT-AREA-XY XLIB::WINDOW-DRAW-VECTOR-PT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-DRAW-LINE XLIB::WINDOW-DRAW-BOX
+++         XLIB::WINDOW-DRAW-CIRCLE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-DRAW-RCBOX-XY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-DRAW-LATEX-XY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-SET-LINE-ATTR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-DRAW-BOX-LINE-XY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         XLIB::WINDOW-POSITIVE-Y XLIB::WINDOW-STRING-EXTENTS
+++         XLIB::MENU-CHOOSE XLIB::WINDOW-SET-FONT XLIB::PUSHFONT
+++         XLIB::WINDOW-STRING-HEIGHT XLIB::WORDLIST<
+++         XLIB::EDITMENU-LINE-Y XLIB::MENU-ITEM-Y
+++         XLIB::MENU-FIND-ITEM-HEIGHT XLIB::XFERCHARS
+++         XLIB::WINDOW-CENTEROFFSET XLIB::MENU-FIND-ITEM-Y
+++         XLIB::EDITMENU-CHAR XLIB::MENU-ITEM-VALUE
+++         XLIB::MENU-FIND-ITEM)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         XLIB::WINDOW-FREE-COLOR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         XLIB::SEARCHFORALPHA XLIB::SAFE-CHAR XLIB::WINDOW-XINIT
+++         XLIB::WINDOW-MENU XLIB::WINDOW-INIT-KEYMAP XLIB::PARSE-INT
+++         XLIB::WINDOW-DESTROY-SELECTED-WINDOW
+++         XLIB::WINDOW-GET-MOUSE-POSITION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::FIXNUM)
+++         XLIB::FLUSHLINE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         XLIB::PICMENU-BUTTON-CONTAINSXY? XLIB::MENU-MOVETO-XY
+++         XLIB::WINDOW-GET-BOX-SIZE XLIB::PRINTINDEXN
+++         XLIB::WINDOW-GET-LINE-POSITION
+++         XLIB::PICMENU-SET-NAMED-BUTTON-COLOR XLIB::EDITMENU-SETXY
+++         XLIB::MENU-SELECT-B XLIB::MENU-REPOSITION-LINE
+++         XLIB::WINDOW-GET-VECTOR-END)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         XLIB::WINDOW-CREATE XLIB::WINDOW-TRACK-MOUSE
+++         XLIB::PICMENU-ITEM-POSITION XLIB::WINDOW-GET-CHARS
+++         XLIB::TEXTMENU-CREATE XLIB::EDITMENU-CREATE XLIB::TOHTML
+++         XLIB::WINDOW-SET-COLOR XLIB::MENU-ITEM-POSITION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         XLIB::WINDOW-INPUT-STRING XLIB::PICMENU-CREATE-SPEC
+++         XLIB::WINDOW-SET-COLOR-RGB XLIB::WINDOW-PRINT-LINES
+++         XLIB::PICMENU-CREATE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         XLIB::WINDOW-GET-ICON-POSITION XLIB::BARMENU-CREATE
+++         XLIB::WINDOW-GET-LATEX-POSITION XLIB::WINDOW-GET-BOX-POSITION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         XLIB::WINDOW-EDIT XLIB::WINDOW-TRACK-MOUSE-IN-REGION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         XLIB::WINDOW-ADJUST-BOX-SIDE XLIB::EDITMENU-EDIT-FN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         XLIB::WINDOW-GET-BOX-LINE-POSITION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         XLIB::WINDOW-DESTROY XLIB::EDITMENU-CALCULATE-SIZE
+++         XLIB::STRINGIFY XLIB::DOLINE XLIB::PUSHENV
+++         XLIB::WINDOW-POLL-MOUSE XLIB::WINDOW-FONT XLIB::WINDOW-SIZE
+++         XLIB::EDITMENU-END XLIB::WINDOW-PAINT XLIB::WINDOW-GEOMETRY
+++         XLIB::MENU-DESTROY XLIB::WINDOW-LABEL
+++         XLIB::PICMENU-CALCULATE-SIZE XLIB::POPENV XLIB::WINDOW-PARENT
+++         XLIB::WINDOW-WAIT-UNMAP XLIB::EDITMENU-INIT
+++         XLIB::WINDOW-GET-POINT XLIB::MENU-SELECT!
+++         XLIB::MENU-CALCULATE-SIZE XLIB::BARMENU-INIT XLIB::DOCOMMAND
+++         XLIB::MENU-INIT XLIB::WINDOW-OPEN XLIB::EDITMENU-META-B
+++         XLIB::WINDOW-GET-RAW-CHAR XLIB::WINDOW-DRAWABLE-HEIGHT
+++         XLIB::MENU-REPOSITION XLIB::WINDOW-YPOSITION
+++         XLIB::EDITMENU-ALPHANUMBERICP XLIB::EDITMENU-NEXT
+++         XLIB::MENU-SIZE XLIB::EDITMENU-PREVIOUS XLIB::EDITMENU-FORWARD
+++         XLIB::EDITMENU-BEGINNING XLIB::PICMENU-DESTROY
+++         XLIB::WINDOW-RESET-GEOMETRY XLIB::WINDOW-GCONTEXT
+++         XLIB::EDITMENU-BACKWARD XLIB::TERMLINE
+++         XLIB::WINDOW-DRAWABLE-WIDTH XLIB::WINDOW-GET-CROSSHAIRS
+++         XLIB::BARMENU-CALCULATE-SIZE XLIB::WINDOW-CHAR-DECODE
+++         XLIB::DOTABULAR XLIB::PICMENU-INIT XLIB::WINDOW-WAIT-EXPOSURE
+++         XLIB::PARSE-WORD XLIB::TEXTMENU-INIT XLIB::SEARCHFOR
+++         XLIB::MENU-OFFSET XLIB::MENU-ADJUST-OFFSET
+++         XLIB::WINDOW-SET-COPY XLIB::TEXTMENU-CALCULATE-SIZE
+++         XLIB::WINDOW-GET-CROSS XLIB::EDITMENU-META-F
+++         XLIB::WINDOW-GET-CLICK XLIB::EDITMENU-CURRENT-CHAR
+++         XLIB::DOHTML XLIB::WINDOW-CLOSE XLIB::EDITMENU-RETURN
+++         XLIB::WINDOW-CODE-CHAR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         XLIB::WINDOW-FORCE-OUTPUT)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/xgcl-2/sysdef.lisp
+++++ gcl-2.6.12/xgcl-2/sysdef.lisp
++@@ -19,9 +19,8 @@
++ ; Some of the files that interface to the Xlib are adapted from DEC/MIT files.
++ ; See the file dec.copyright for details.
++ 
++-(make-package :XLIB)
+++(load "package.lisp")
++ (in-package :XLIB)
++-(sys::use-package '(:lisp :system :sys))
++ 
++ (defvar *files* '( "gcl_Xlib"
++       "gcl_Xutil"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8d55df80134e25658c93dc9c01280b7d09739f3f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1168 @@@
++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.
++ .
++ gcl (2.6.12-10) unstable; urgency=medium
++ .
++   * rebuild in clean sid environment
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/bin/dpp.c
+++++ gcl-2.6.12/bin/dpp.c
++@@ -430,7 +430,8 @@ put_declaration()
++ {
++      int i;
++ 
++-     fprintf(out, "\tint narg;\n");
+++     if (nopt || rest_flag || key_flag)
+++       fprintf(out, "\tint narg;\n");
++      fprintf(out, "\tregister object *DPPbase=vs_base;\n");
++      
++      for (i = 0;  i < nopt;  i++)
++@@ -453,12 +454,12 @@ put_declaration()
++              fprintf(out, "#define\t%s\tDPPbase[%d+%d+2*%d+%d]\n",
++                      aux[i].a_var, nreq, nopt, nkey, i);
++      fprintf(out, "\n");
++-     fprintf(out, "\tnarg = vs_top - vs_base;\n");
++      if (nopt == 0 && !rest_flag && !key_flag)
++              fprintf(out, "\tcheck_arg(%d);\n", nreq);
++      else {
++-             fprintf(out, "\tif (narg < %d)\n", nreq);
++-             fprintf(out, "\t\ttoo_few_arguments();\n");
+++       fprintf(out, "\tnarg = vs_top - vs_base;\n");
+++       fprintf(out, "\tif (narg < %d)\n", nreq);
+++       fprintf(out, "\t\ttoo_few_arguments();\n");
++      }
++      for (i = 0;  i < nopt;  i++)
++              if (optional[i].o_svar != NULL) {
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpfun.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpfun.lsp
++@@ -976,9 +976,13 @@
++         (wt-nl "}}")
++         (wt-nl "vs_top=(vs_base=base+" base ")+" (- *vs* base) ";")
++         (unwind-exit 'fun-val nil (cons 'values 2))))
++-     ((unwind-exit (get-inline-loc `((t t) t #.(flags rfa) 
++-                                     ,(concatenate 'string
++-                                                   "({struct htent *_z=gethash"
++-                                                   (if *safe-compile* "_with_check" "")
++-                                                   "(#0,#1);_z->hte_key==OBJNULL ? (#2) : _z->hte_value;})"))
++-                                     args)))))
+++     ((let ((*inline-blocks* 0)
+++            (*restore-avma*  *restore-avma*)
+++            (fd `((t t) t #.(flags rfa) 
+++                  ,(concatenate 'string
+++                                "({struct htent *_z=gethash"
+++                                (if *safe-compile* "_with_check" "")
+++                                "(#0,#1);_z->hte_key==OBJNULL ? (#2) : _z->hte_value;})")))) 
+++        (save-avma fd)
+++        (unwind-exit (get-inline-loc fd args))
+++        (close-inline-blocks)))))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptag.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptag.lsp
++@@ -62,6 +62,7 @@
++      ((and (eq (car clause) 'go)
++            (tag-p (setq tem (cadddr (cdr clause))))
++            (eq (tag-name tem) tag-name)))
+++     ((eq (car clause) 'location) nil)
++      (t (or (jumps-to-p (car clause) tag-name)
++             (jumps-to-p (cdr clause) tag-name)))))
++ 
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4171,18 +4171,52 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
++ #fi
++ # subst GCC not only under 386-linux, but where available -- CM
++ 
+++TCFLAGS="-fsigned-char"
+++
++ if test "$GCC" = "yes" ; then
++ 
++-   TCFLAGS="-Wall -fsigned-char"
+++   TCFLAGS="$TCFLAGS -Wall"
++ 
++-   #FIXME -Wno-unused-but-set-variable when time
++-   TMPF=-Wno-unused-but-set-variable
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAG $TMPF" >&5
++-$as_echo_n "checking for CFLAG $TMPF... " >&6; }
++-   CFLAGS_ORI=$CFLAGS
++-   CFLAGS="$CFLAGS $TMPF"
+++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang" >&5
+++$as_echo_n "checking for clang... " >&6; }
++ 
++ if test "$cross_compiling" = yes; then :
+++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+++as_fn_error $? "cannot run test program while cross compiling
+++See \`config.log' for more details" "$LINENO" 5; }
+++else
+++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+++/* end confdefs.h.  */
+++
+++
+++             int main() {
+++             return
+++             #ifdef __clang__
+++             0
+++             #else
+++             1
+++             #endif
+++             ;}
+++_ACEOF
+++if ac_fn_c_try_run "$LINENO"; then :
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++$as_echo "yes" >&6; }
+++      clang="yes"
+++      TCFLAGS="$TCFLAGS -Wno-builtin-requires-header -Wno-empty-body"
+++
+++$as_echo "#define CLANG 1" >>confdefs.h
+++
+++else
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+++$as_echo "no" >&6; }
+++      #FIXME -Wno-unused-but-set-variable when time
+++      TMPF=-Wno-unused-but-set-variable
+++      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAG $TMPF" >&5
+++$as_echo_n "checking for CFLAG $TMPF... " >&6; }
+++      CFLAGS_ORI=$CFLAGS
+++      CFLAGS="$CFLAGS $TMPF"
+++      if test "$cross_compiling" = yes; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++ else
++@@ -4201,11 +4235,14 @@ rm -f core *.core core.conftest.* gmon.o
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-   CFLAGS=$CFLAGS_ORI
+++      CFLAGS=$CFLAGS_ORI
+++fi
+++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+++  conftest.$ac_objext conftest.beam conftest.$ac_ext
+++fi
++ 
++-else
++-   TCFLAGS="-fsigned-char"
++ fi
+++
++ if test "$GCC" = "yes" ; then
++      TCFLAGS="$TCFLAGS -pipe"
++      case $use in
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -483,21 +483,37 @@ AC_SUBST(CC)
++ #fi
++ # subst GCC not only under 386-linux, but where available -- CM
++ 
++-if test "$GCC" = "yes" ; then
+++TCFLAGS="-fsigned-char"
++ 
++-   TCFLAGS="-Wall -fsigned-char"
+++if test "$GCC" = "yes" ; then
++ 
++-   #FIXME -Wno-unused-but-set-variable when time
++-   TMPF=-Wno-unused-but-set-variable
++-   AC_MSG_CHECKING([for CFLAG $TMPF])
++-   CFLAGS_ORI=$CFLAGS
++-   CFLAGS="$CFLAGS $TMPF"
++-   AC_TRY_RUN([int main() {return 0;}],TCFLAGS="$TCFLAGS $TMPF";AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
++-   CFLAGS=$CFLAGS_ORI
+++   TCFLAGS="$TCFLAGS -Wall"
++ 
++-else
++-   TCFLAGS="-fsigned-char"
+++   AC_MSG_CHECKING([for clang])
+++   AC_RUN_IFELSE([
+++     AC_LANG_SOURCE([[
+++             int main() {
+++             return
+++             #ifdef __clang__
+++             0
+++             #else
+++             1
+++             #endif
+++             ;}]])],
+++     [AC_MSG_RESULT([yes])
+++      clang="yes"
+++      TCFLAGS="$TCFLAGS -Wno-builtin-requires-header -Wno-empty-body"
+++      AC_DEFINE([CLANG],[1],[running clang compiler])],      
+++     [AC_MSG_RESULT([no])
+++      #FIXME -Wno-unused-but-set-variable when time
+++      TMPF=-Wno-unused-but-set-variable
+++      AC_MSG_CHECKING([for CFLAG $TMPF])
+++      CFLAGS_ORI=$CFLAGS
+++      CFLAGS="$CFLAGS $TMPF"
+++      AC_TRY_RUN([int main() {return 0;}],TCFLAGS="$TCFLAGS $TMPF";AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
+++      CFLAGS=$CFLAGS_ORI])
++ fi
+++
++ if test "$GCC" = "yes" ; then
++      TCFLAGS="$TCFLAGS -pipe"
++      case $use in
++--- gcl-2.6.12.orig/gcl-tk/comm.c
+++++ gcl-2.6.12/gcl-tk/comm.c
++@@ -183,7 +183,7 @@ int m;
++     { bcopy(sfd->valid_data,sfd->read_buffer,sfd->valid_data_size);
++       sfd->valid_data=sfd->read_buffer;}
++    /* there is at least a packet size of space available */   
++-  if ((fix(FFN(fScheck_fd_for_input)(sfd->fd,sfd->write_timeout))>0));
+++  if ((fix(FFN(fScheck_fd_for_input)(sfd->fd,sfd->write_timeout))>0))
++      again:
++         {char *start = sfd->valid_data+sfd->valid_data_size;
++         nread = SAFE_READ(sfd->fd,start,
++--- gcl-2.6.12.orig/gcl-tk/guis.c
+++++ gcl-2.6.12/gcl-tk/guis.c
++@@ -455,7 +455,7 @@ struct connection_state *sfd;
++   int tot;
++   struct message_header *msg;
++   msg = (struct message_header *) buf;
++-  m= read1(sfd,msg,MESSAGE_HEADER_SIZE,DEFAULT_TIMEOUT_FOR_TK_READ);
+++  m= read1(sfd,(void *)msg,MESSAGE_HEADER_SIZE,DEFAULT_TIMEOUT_FOR_TK_READ);
++   if (m == MESSAGE_HEADER_SIZE)
++     {
++      if ( msg->magic1!=MAGIC1
++@@ -468,7 +468,7 @@ struct connection_state *sfd;
++       if (tot >= bufleng)
++          {msg = (void *)malloc(tot+1);
++        bcopy(buf,msg,MESSAGE_HEADER_SIZE);}
++-     m = read1(sfd,&(msg->body),
+++      m = read1(sfd,(void *)&(msg->body),
++                 body_length,DEFAULT_TIMEOUT_FOR_TK_READ);
++      if (m == body_length)
++        { return msg;}}
++--- gcl-2.6.12.orig/h/compbas.h
+++++ gcl-2.6.12/h/compbas.h
++@@ -4,7 +4,7 @@
++ #define EXTER extern
++ #endif
++ #ifndef INLINE
++-#if defined(__GNUC__) && __GNUC__ <= 4
+++#if (defined(__GNUC__) && __GNUC__ <= 4) && !defined __clang__
++ #define INLINE extern inline
++ #else
++ #define INLINE inline
++--- gcl-2.6.12.orig/h/fixnum.h
+++++ gcl-2.6.12/h/fixnum.h
++@@ -13,7 +13,7 @@
++ #define           is_imm_fix(a_)        INT_IN_BITS(a_,LOW_SHFT-1)
++ #elif defined (IM_FIX_BASE) && defined(IM_FIX_LIM)
++ #define      make_imm_fixnum(a_)        ((object)((a_)+(IM_FIX_BASE+(IM_FIX_LIM>>1))))
++-#define       fix_imm_fixnum(a_)        (((fixnum)(a_))-(IM_FIX_BASE+(IM_FIX_LIM>>1)))
+++#define       fix_imm_fixnum(a_)        ((fixnum)(((fixnum)(a_))-(IM_FIX_BASE+(IM_FIX_LIM>>1))))
++ #define      mark_imm_fixnum(a_)        ((a_)=((object)(((fixnum)(a_)) | IM_FIX_LIM)))
++ #define    unmark_imm_fixnum(a_)        ((a_)=((object)(((fixnum)(a_)) &~ IM_FIX_LIM)))
++ #define        is_imm_fixnum(a_)        (((ufixnum)(a_))>=IM_FIX_BASE)
++--- gcl-2.6.12.orig/h/gclincl.h.in
+++++ gcl-2.6.12/h/gclincl.h.in
++@@ -9,9 +9,6 @@
++ /* punt guess for no randomize value */
++ #undef ADDR_NO_RANDOMIZE
++ 
++-/* compile ansi compliant image */
++-#undef ANSI_COMMON_LISP
++-
++ /* binding stack size */
++ #undef BDSSIZE
++ 
++@@ -21,6 +18,9 @@
++ /* can prevent sbrk from returning random values */
++ #undef CAN_UNRANDOMIZE_SBRK
++ 
+++/* running clang compiler */
+++#undef CLANG
+++
++ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
++    systems. This function is required for `alloca.c' support on those systems.
++    */
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -342,7 +342,8 @@ EXTER long holepage;                      /*  hole pages  *
++ EXTER long new_holepage,starting_hole_div,starting_relb_heap_mult;
++   
++ 
++-EXTER char *rb_start;                        /*  relblock start  */
+++EXTER char *new_rb_start;            /*  desired relblock start after next gc  */
+++EXTER char *rb_start;                /*  relblock start  */
++ EXTER char *rb_end;                  /*  relblock end  */
++ EXTER char *rb_limit;                        /*  relblock limit  */
++ EXTER char *rb_pointer;              /*  relblock pointer  */
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1946,3 +1946,12 @@ get_pageinfo(void *);
++ 
++ void
++ add_page_to_freelist(char *, struct typemanager *);
+++
+++ufixnum
+++sum_maxpages(void);
+++
+++void
+++resize_hole(ufixnum,enum type);
+++
+++void
+++setup_rb(void);
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -325,14 +325,29 @@ empty_relblock(void) {
++ 
++ }
++ 
++-static inline void
+++void
+++setup_rb(void) {
+++
+++  int init=new_rb_start!=rb_start || rb_pointer>=rb_end;
+++
+++  rb_start=new_rb_start;
+++  rb_end=rb_start+(nrbpage<<PAGEWIDTH);
+++  rb_pointer=init ? rb_start : rb_end;
+++  rb_limit=rb_pointer+(nrbpage<<PAGEWIDTH);
+++
+++  alloc_page(-(2*nrbpage+((new_rb_start-heap_end)>>PAGEWIDTH)));
+++ 
+++}
+++  
+++void
++ resize_hole(ufixnum hp,enum type tp) {
++   
++-  char *new_start=heap_end+hp*PAGESIZE;
++   char *start=rb_pointer<rb_end ? rb_start : rb_end;
++   ufixnum size=rb_pointer-start;
++ 
++-  if ((new_start<start && new_start+size>=start) || (new_start<start+size && new_start+size>=start+size)) {
+++  new_rb_start=heap_end+hp*PAGESIZE;
+++  
+++  if ((new_rb_start<start && new_rb_start+size>=start) || (new_rb_start<start+size && new_rb_start+size>=start+size)) {
++     fprintf(stderr,"Toggling relblock when resizing hole to %lu\n",hp);
++     fflush(stderr);
++     tm_table[t_relocatable].tm_adjgbccnt--;
++@@ -340,9 +355,11 @@ resize_hole(ufixnum hp,enum type tp) {
++     return resize_hole(hp,tp);
++   }
++ 
++-  holepage=hp;
++-  tm_of(tp)->tm_adjgbccnt--;
++-  GBC(tp);
+++  if (size) {
+++    tm_of(tp)->tm_adjgbccnt--;
+++    GBC(tp);
+++  } else
+++    setup_rb();
++   
++ }
++ 
++@@ -355,7 +372,7 @@ alloc_page(long n) {
++   
++   if (!s) {
++ 
++-    if (nn>holepage) {
+++    if (nn>((rb_start-heap_end)>>PAGEWIDTH)) {
++ 
++ 
++       fixnum d=available_pages-nn;
++@@ -373,12 +390,11 @@ alloc_page(long n) {
++   e=heap_end;
++   v=e+nn*PAGESIZE;
++ 
++-  if (!s) {
+++  if (!s)
++ 
++-    holepage -= nn;
++     heap_end=v;
++ 
++-  } else if (v>(void *)core_end) {
+++  else if (v>(void *)core_end) {
++     
++     massert(!mbrk(v));
++     core_end=v;
++@@ -395,7 +411,7 @@ alloc_page(long n) {
++ 
++ struct pageinfo *cell_list_head=NULL,*cell_list_tail=NULL;;
++ 
++-static inline ufixnum
+++ufixnum
++ sum_maxpages(void) {
++ 
++   ufixnum i,j;
++@@ -516,7 +532,7 @@ rebalance_maxpages(struct typemanager *m
++      k+=(tm_table[i].tm_maxpage-tm_table[i].tm_npage)*(i==t_relocatable ? 2 : 1);
++ 
++     e=e>k ? k : e;
++-    if (e+phys_pages-j<=0)
+++    if (e+phys_pages<=j)
++       return 0;
++ 
++     f=k ? 1.0-(double)e/k : 1.0;
++@@ -895,17 +911,20 @@ add_pages(struct typemanager *tm,fixnum
++ 
++   case t_relocatable:
++ 
++-    if (rb_pointer>rb_end) {
+++    if (rb_pointer>rb_end && m>((rb_start-heap_end)>>PAGEWIDTH)) {
++       fprintf(stderr,"Moving relblock low before expanding relblock pages\n");
++       fflush(stderr);
++       tm_table[t_relocatable].tm_adjgbccnt--;
++       GBC(t_relocatable);
++     }
++     nrbpage+=m;
++-    rb_end+=m*PAGESIZE;
++     rb_limit+=m*PAGESIZE;
+++    if (rb_pointer>rb_end)
+++      rb_start-=m*PAGESIZE;
+++    else
+++      rb_end+=m*PAGESIZE;
++ 
++-    alloc_page(-(2*nrbpage+holepage));
+++    alloc_page(-(2*nrbpage+((rb_start-heap_end)>>PAGEWIDTH)));
++ 
++     break;
++ 
++@@ -1116,7 +1135,7 @@ DEFUNM_NEW("ALLOCATED",object,fSallocate
++ { struct typemanager *tm=(&tm_table[t_from_type(typ)]);
++   tm = & tm_table[tm->tm_type];
++   if (tm->tm_type == t_relocatable)
++-    { tm->tm_npage = (rb_end-rb_start)/PAGESIZE;
+++    { tm->tm_npage = (rb_end-rb_start)>>PAGEWIDTH;
++       tm->tm_nfree = rb_limit -rb_pointer;
++     }
++   else if (tm->tm_type == t_contiguous)
++@@ -1242,11 +1261,8 @@ object malloc_list=Cnil;
++ 
++ void
++ maybe_set_hole_from_maxpages(void) {
++-  if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start) {
++-    holepage=new_holepage;
++-    alloc_page(-holepage);
++-    rb_start=rb_end=rb_limit=rb_pointer=heap_end+(holepage<<PAGEWIDTH);
++-  }
+++  if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start)
+++    resize_hole(new_holepage,t_relocatable);
++ }
++ 
++ void
++@@ -1345,11 +1361,9 @@ gcl_init_alloc(void *cs_start) {
++   initial_sbrk=data_start=heap_end;
++   first_data_page=page(data_start);
++   
++-  holepage=new_holepage;
++-
++ #ifdef GCL_GPROF
++-  if (holepage<textpage)
++-     holepage=textpage;
+++  if (new_holepage<textpage)
+++     new_holepage=textpage;
++ #endif
++ 
++   /* Unused (at present) tm_distinct flag added.  Note that if cons
++@@ -1401,12 +1415,8 @@ gcl_init_alloc(void *cs_start) {
++ 
++   set_tm_maxpage(tm_table+t_relocatable,1);
++   nrbpage=0;
++-
++-  alloc_page(-(holepage + 2*nrbpage));
++   
++-  rb_start = rb_pointer = heap_end + PAGESIZE*holepage;
++-  rb_end = rb_start + PAGESIZE*nrbpage;
++-  rb_limit = rb_end - 2*RB_GETA;
+++  resize_hole(new_holepage,t_relocatable);
++ #ifdef SGC   
++   tm_table[(int)t_relocatable].tm_sgc = 50;
++ #endif
++@@ -1912,7 +1922,7 @@ void *
++ realloc(void *ptr, size_t size) {
++ 
++   object x;
++-  int i, j;
+++  int i;
++   /* was allocated by baby_malloc */
++ #ifdef BABY_MALLOC_SIZE      
++   if (ptr >= (void*)baby_malloc_data && ptr - (void*)baby_malloc_data <BABY_MALLOC_SIZE)
++@@ -1938,17 +1948,10 @@ realloc(void *ptr, size_t size) {
++      x->st.st_fillp = size;
++      return(ptr);
++       } else {
++-     j = x->st.st_dim;
++      x->st.st_self = alloc_contblock(size);
++      x->st.st_fillp = x->st.st_dim = size;
++      for (i = 0;  i < size;  i++)
++        x->st.st_self[i] = ((char *)ptr)[i];
++-/* SGC contblock pages: Its possible this is on an old page CM 20030827 */
++-/* #ifdef SGC */
++-/*   insert_maybe_sgc_contblock(ptr, j); */
++-/* #else */
++-/*   insert_contblock(ptr, j); */
++-/* #endif */
++      return(x->st.st_self);
++       }
++     }
++--- gcl-2.6.12.orig/o/assignment.c
+++++ gcl-2.6.12/o/assignment.c
++@@ -259,7 +259,7 @@ DEFUNO_NEW("FMAKUNBOUND",object,fLfmakun
++ static void
++ FFN(Fsetf)(object form)
++ {
++-     object result,*t,*t1;
+++     object *t,*t1;
++      if (endp(form)) {
++              vs_base = vs_top;
++              vs_push(Cnil);
++@@ -269,7 +269,7 @@ FFN(Fsetf)(object form)
++                      vs_top = top;
++                      if (endp(MMcdr(form)))
++                      FEinvalid_form("No value for ~S.", form->c.c_car);
++-                     result = setf(MMcar(form), MMcadr(form));
+++                     setf(MMcar(form), MMcadr(form));
++                      form = MMcddr(form);
++              } while (!endp(form));
++              t=vs_base;
++--- gcl-2.6.12.orig/o/cfun.c
+++++ gcl-2.6.12/o/cfun.c
++@@ -343,7 +343,8 @@ turbo_closure(object fun)
++ 
++   if(1)/*(fun->cc.cc_turbo==NULL)*/
++     {BEGIN_NO_INTERRUPT;
++-     for (n = 0, l = fun->cc.cc_env;  !endp(l);  n++, l = l->c.c_cdr);
+++     for (n = 0, l = fun->cc.cc_env;  !endp(l);  n++, l = l->c.c_cdr)
+++       ;
++     {
++      block= AR_ALLOC(alloc_relblock,(1+n),object);
++      *block=make_fixnum(n);
++--- gcl-2.6.12.orig/o/format.c
+++++ gcl-2.6.12/o/format.c
++@@ -170,6 +170,22 @@ object sSAindent_formatted_outputA;
++                      fmt_string = old_fmt_string ; \
++                         fmt_paramp = old_fmt_paramp 
++ 
+++#define      fmt_old1        VOL object old_fmt_stream; \
+++                     VOL int old_ctl_origin; \
+++                     VOL int old_ctl_index; \
+++                     VOL int old_ctl_end; \
+++                     jmp_bufp   VOL old_fmt_jmp_bufp; \
+++                     VOL int old_fmt_indents; \
+++                     VOL object old_fmt_string ; \
+++                        VOL format_parameter *old_fmt_paramp
+++#define      fmt_save1       old_fmt_stream = fmt_stream; \
+++                     old_ctl_origin = ctl_origin; \
+++                     old_ctl_index = ctl_index; \
+++                     old_ctl_end = ctl_end; \
+++                     old_fmt_jmp_bufp = fmt_jmp_bufp; \
+++                     old_fmt_indents = fmt_indents; \
+++                     old_fmt_string = fmt_string ; \
+++                        old_fmt_paramp = fmt_paramp
++ #define      fmt_restore1    fmt_stream = old_fmt_stream; \
++                      ctl_origin = old_ctl_origin; \
++                      ctl_index = old_ctl_index; \
++@@ -1776,7 +1792,7 @@ fmt_case(bool colon, bool atsign)
++ {
++      VOL object x;
++      VOL int i, j;
++-     fmt_old;
+++     fmt_old1;
++      jmp_buf fmt_jmp_buf0;
++      int up_colon;
++      bool b;
++@@ -1787,7 +1803,7 @@ fmt_case(bool colon, bool atsign)
++      j = fmt_skip();
++      if (ctl_string[--j] != ')' || ctl_string[--j] != '~')
++              fmt_error("~) expected");
++-     fmt_save;
+++     fmt_save1;
++      fmt_jmp_bufp = &fmt_jmp_buf0;
++      if ((up_colon = setjmp(*fmt_jmp_bufp)))
++              ;
++@@ -1850,7 +1866,7 @@ fmt_conditional(bool colon, bool atsign)
++      object x;
++      int n=0;
++      bool done;
++-     fmt_old;
+++     fmt_old1;
++ 
++      fmt_not_colon_atsign(colon, atsign);
++      if (colon) {
++@@ -1863,11 +1879,11 @@ fmt_conditional(bool colon, bool atsign)
++              if (ctl_string[--k] != ']' || ctl_string[--k] != '~')
++                      fmt_error("~] expected");
++              if (fmt_advance() == Cnil) {
++-                     fmt_save;
+++                     fmt_save1;
++                      format(fmt_stream, ctl_origin + i, j - i);
++                      fmt_restore1;
++              } else {
++-                     fmt_save;
+++                     fmt_save1;
++                      format(fmt_stream, ctl_origin + j + 2, k - (j + 2));
++                      fmt_restore1;
++              }
++@@ -1880,7 +1896,7 @@ fmt_conditional(bool colon, bool atsign)
++                      ;
++              else {
++                      --fmt_index;
++-                     fmt_save;
+++                     fmt_save1;
++                      format(fmt_stream, ctl_origin + i, j - i);
++                      fmt_restore1;
++              }
++@@ -1899,7 +1915,7 @@ fmt_conditional(bool colon, bool atsign)
++                      for (k = j;  ctl_string[--k] != '~';)
++                              ;
++                      if (n == 0) {
++-                             fmt_save;
+++                             fmt_save1;
++                              format(fmt_stream, ctl_origin + i, k - i);
++                              fmt_restore1;
++                              done = TRUE;
++@@ -1925,7 +1941,7 @@ fmt_conditional(bool colon, bool atsign)
++              if (ctl_string[--j] != ']' || ctl_string[--j] != '~')
++                      fmt_error("~] expected");
++              if (!done) {
++-                     fmt_save;
+++                     fmt_save1;
++                      format(fmt_stream, ctl_origin + i, j - i);
++                      fmt_restore1;
++              }
++@@ -2062,7 +2078,7 @@ fmt_justification(volatile bool colon, b
++ {
++      int mincol=0, colinc=0, minpad=0, padchar=0;
++      object fields[FORMAT_DIRECTIVE_LIMIT];
++-     fmt_old;
+++     fmt_old1;
++      jmp_buf fmt_jmp_buf0;
++      VOL int i,j,n,j0;
++      int k,l,m,l0;
++@@ -2089,7 +2105,7 @@ fmt_justification(volatile bool colon, b
++                      ;
++              fields[n] = make_string_output_stream(64);
++              vs_push(fields[n]);
++-             fmt_save;
+++             fmt_save1;
++              fmt_jmp_bufp = &fmt_jmp_buf0;
++              if ((up_colon = setjmp(*fmt_jmp_bufp))) {
++                      --n;
++@@ -2116,7 +2132,7 @@ fmt_justification(volatile bool colon, b
++                      special = 1;
++                      for (j = j0;  ctl_string[j] != '~';  --j)
++                              ;
++-                     fmt_save;
+++                     fmt_save1;
++                      format(fmt_stream, ctl_origin + j, j0 - j + 2);
++                      fmt_restore1;
++                      spare_spaces = fmt_spare_spaces;
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -24,7 +24,7 @@
++   IMPLEMENTATION-DEPENDENT
++ */
++ 
++-/* #define   DEBUG */
+++#define      DEBUG
++ 
++ #define IN_GBC
++ #define NEED_MP_H
++@@ -149,15 +149,6 @@ pageinfo_p(void *v) {
++ 
++ }
++     
++-static inline bool
++-in_contblock_stack_list(void *p,void ***ap) {
++-  void **a;
++-  for (a=*ap;a && a[0]>p;a=a[1]);
++-  *ap=a;
++-  /* if (a && a[0]==p) fprintf(stderr,"Skipping %p\n",p); */
++-  return a && a[0]==p;
++-}
++-
++ static inline char
++ get_bit(char *v,struct pageinfo *pi,void *x) {
++   void *ve=CB_DATA_START(pi);
++@@ -168,15 +159,15 @@ get_bit(char *v,struct pageinfo *pi,void
++   return (v[i]>>s)&0x1;
++ }
++ 
++-static inline void
++-set_bit(char *v,struct pageinfo *pi,void *x) {
++-  void *ve=CB_DATA_START(pi);
++-  fixnum off=(x-ve)>>LOG_BYTES_CONTBLOCK,i=off>>LOG_BITS_CHAR,s=off&~(~0UL<<LOG_BITS_CHAR);
++-#ifdef CONTBLOCK_MARK_DEBUG
++-  off_check(v,ve,i,pi);
++-#endif
++-  v[i]|=(1UL<<s);
++-}
+++/* static inline void */
+++/* set_bit(char *v,struct pageinfo *pi,void *x) { */
+++/*   void *ve=CB_DATA_START(pi); */
+++/*   fixnum off=(x-ve)>>LOG_BYTES_CONTBLOCK,i=off>>LOG_BITS_CHAR,s=off&~(~0UL<<LOG_BITS_CHAR); */
+++/* #ifdef CONTBLOCK_MARK_DEBUG */
+++/*   off_check(v,ve,i,pi); */
+++/* #endif */
+++/*   v[i]|=(1UL<<s); */
+++/* } */
++ 
++ #define bit_get(v,i,s) ((v[i]>>s)&0x1)
++ #define bit_set(v,i,s) (v[i]|=(1UL<<s))
++@@ -237,10 +228,10 @@ get_mark_bit(struct pageinfo *pi,void *x
++   return get_bit(CB_MARK_START(pi),pi,x);
++ }
++ 
++-static inline void
++-set_mark_bit(struct pageinfo *pi,void *x) {
++-  set_bit(CB_MARK_START(pi),pi,x);
++-}
+++/* static inline void */
+++/* set_mark_bit(struct pageinfo *pi,void *x) { */
+++/*   set_bit(CB_MARK_START(pi),pi,x); */
+++/* } */
++ 
++ static inline void *
++ get_mark_bits(struct pageinfo *pi,void *x) {
++@@ -252,15 +243,17 @@ set_mark_bits(struct pageinfo *pi,void *
++   set_bits(CB_MARK_START(pi),pi,x1,x2);
++ }
++ 
+++#ifdef SGC
+++
++ static inline char
++ get_sgc_bit(struct pageinfo *pi,void *x) {
++   return get_bit(CB_SGCF_START(pi),pi,x);
++ }
++ 
++-static inline void
++-set_sgc_bit(struct pageinfo *pi,void *x) {
++-  set_bit(CB_SGCF_START(pi),pi,x);
++-}
+++/* static inline void */
+++/* set_sgc_bit(struct pageinfo *pi,void *x) { */
+++/*   set_bit(CB_SGCF_START(pi),pi,x); */
+++/* } */
++ 
++ static inline void *
++ get_sgc_bits(struct pageinfo *pi,void *x) {
++@@ -272,6 +265,8 @@ set_sgc_bits(struct pageinfo *pi,void *x
++   set_bits(CB_SGCF_START(pi),pi,x1,x2);
++ }
++ 
+++#endif
+++
++ #ifdef KCLOVM
++ void mark_all_stacks();
++ bool ovm_process_created; 
++@@ -1067,7 +1062,7 @@ contblock_sweep_phase(void) {
++ 
++     z=get_mark_bit(v,s);
++     for (p=s;p<e;) {
++-      q=get_bits(CB_MARK_START(v),v,p);
+++      q=get_mark_bits(v,p);
++       if (!z)
++      insert_contblock(p,q-p);
++       z=1-z;
++@@ -1107,6 +1102,19 @@ int (*GBC_exit_hook)() = NULL;
++ 
++ fixnum fault_pages=0;
++ 
+++static ufixnum
+++count_contblocks(void) {
+++
+++  ufixnum ncb;
+++  struct contblock *cbp;
+++
+++  for (ncb=0,cbp=cb_pointer;cbp;cbp=cbp->cb_link,ncb++);
+++
+++  return ncb;
+++  
+++}
+++ 
+++
++ void
++ GBC(enum type t) {
++ 
++@@ -1196,21 +1204,8 @@ GBC(enum type t) {
++ 
++   if (gc_time >=0 && !gc_recursive++) {gc_start=runtime();}
++   
++-  if (COLLECT_RELBLOCK_P) {
++-
++-    char *new_start=heap_end+holepage*PAGESIZE,*new_end=new_start+nrbpage*PAGESIZE;
++-    
++-    if (new_start!=rb_start) {
++-      rb_pointer=new_start;
++-      rb_limit=new_end;
++-    } else {
++-      rb_pointer=(rb_pointer<rb_end) ? rb_end : rb_start;
++-      rb_limit=rb_pointer+(new_end-new_start);
++-    }
++-
++-    alloc_page(-(holepage+2*nrbpage));
++-    
++-  }
+++  if (COLLECT_RELBLOCK_P)
+++    setup_rb();
++   
++ #ifdef DEBUG
++   if (debug) {
++@@ -1254,8 +1249,8 @@ GBC(enum type t) {
++   
++   if (COLLECT_RELBLOCK_P) {
++ 
++-    rb_start = heap_end + PAGESIZE*holepage;
++-    rb_end = heap_end + (holepage + nrbpage) *PAGESIZE;
+++    /* rb_start = new_rb_start; */
+++    /* rb_end = rb_start + nrbpage*PAGESIZE; */
++     
++ 
++ #ifdef SGC
++@@ -1332,6 +1327,7 @@ GBC(enum type t) {
++ 
++ #ifdef DEBUG
++   if (debug) {
+++    int i,j;
++     for (i = 0, j = 0;  i < (int)t_end;  i++) {
++       if (tm_table[i].tm_type == (enum type)i) {
++      printf("%13s: %8ld used %8ld free %4ld/%ld pages\n",
++@@ -1346,8 +1342,8 @@ GBC(enum type t) {
++             tm_table[i].tm_name,
++             tm_table[(int)tm_table[i].tm_type].tm_name);
++     }
++-    printf("contblock: %ld blocks %ld pages\n", ncb, ncbpage);
++-    printf("hole: %ld pages\n", holepage);
+++    printf("contblock: %ld blocks %ld pages\n", count_contblocks(), ncbpage);
+++    printf("hole: %ld pages\n", ((rb_start-heap_end)>>PAGEWIDTH));
++     printf("relblock: %ld bytes used %ld bytes free %ld pages\n",
++         (long)(rb_pointer - rb_start), (long)(rb_end - rb_pointer), nrbpage);
++     printf("GBC ended\n");
++@@ -1425,10 +1421,10 @@ FFN(siLheap_report)(void) {
++   i=sizeof(fixnum)*CHAR_SIZE-2;
++   i=1<<i;
++   vs_push(make_fixnum(((unsigned long)cs_base+i-1)&-i));
++-  vs_push(make_fixnum(abs(cs_base-cs_org)));
+++  vs_push(make_fixnum(labs(cs_base-cs_org)));
++   vs_push(make_fixnum((CSTACK_DIRECTION+1)>>1));
++   vs_push(make_fixnum(CSTACK_ALIGNMENT));
++-  vs_push(make_fixnum(abs(cs_limit-cs_org)));/*CSSIZE*/
+++  vs_push(make_fixnum(labs(cs_limit-cs_org)));/*CSSIZE*/
++ #if defined(IM_FIX_BASE) && defined(IM_FIX_LIM)
++ #ifdef LOW_IM_FIX
++   vs_push(make_fixnum(-LOW_IM_FIX));
++@@ -1456,14 +1452,9 @@ FFN(siLroom_report)(void) {
++   vs_push(make_fixnum(available_pages));
++   vs_push(make_fixnum(ncbpage));
++   vs_push(make_fixnum(maxcbpage));
++-  {
++-    ufixnum ncb;
++-    struct contblock *cbp;
++-    for (ncb=0,cbp=cb_pointer;cbp;cbp=cbp->cb_link,ncb++);
++-    vs_push(make_fixnum(ncb));
++-  }
+++  vs_push(make_fixnum(count_contblocks()));
++   vs_push(make_fixnum(cbgbccount));
++-  vs_push(make_fixnum(holepage));
+++  vs_push(make_fixnum((rb_start-heap_end)>>PAGEWIDTH));
++   vs_push(make_fixnum(rb_pointer - (rb_pointer<rb_end ? rb_start : rb_end)));
++   vs_push(make_fixnum((rb_pointer<rb_end ? rb_end : (rb_end+(rb_end-rb_start))) - rb_pointer));
++   vs_push(make_fixnum(nrbpage));
++--- gcl-2.6.12.orig/o/hash.d
+++++ gcl-2.6.12/o/hash.d
++@@ -152,7 +152,7 @@ BEGIN:
++   if (depth++ <=3)
++     switch ((tx=type_of(x))) {
++     case t_cons:
++-      h^=ihash_equal(x->c.c_car,depth)^rtb[abs(depth%(sizeof(rtb)/sizeof(*rtb)))];
+++      h^=ihash_equal(x->c.c_car,depth)^rtb[abs((int)(depth%(sizeof(rtb)/sizeof(*rtb))))];/*FIXME: clang faulty warning*/
++       x = x->c.c_cdr;
++       goto BEGIN;
++       break;
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -207,11 +207,19 @@ get_proc_meminfo_value_in_pages(const ch
++   
++ static ufixnum
++ get_phys_pages_no_malloc(char freep) {
++-  return freep ? 
+++  ufixnum k=freep ? 
++     get_proc_meminfo_value_in_pages("MemFree:")+
++     get_proc_meminfo_value_in_pages("Buffers:")+
++     get_proc_meminfo_value_in_pages("Cached:") :
++     get_proc_meminfo_value_in_pages("MemTotal:");
+++  const char *e=getenv("GCL_MEM_MULTIPLE");
+++  if (e) {
+++    double d;
+++    massert(sscanf(e,"%lf",&d)==1);
+++    massert(d>=0.0);
+++    k*=d;
+++  }
+++  return k;
++ }
++ 
++ #endif
++@@ -221,9 +229,9 @@ void *initial_sbrk=NULL;
++ int
++ update_real_maxpage(void) {
++ 
++-  ufixnum i,j,k;
+++  ufixnum i,j;
++   void *end,*cur,*beg;
++-  ufixnum free_phys_pages=get_phys_pages_no_malloc(1),maxpages;
+++  ufixnum maxpages;
++ #ifdef __MINGW32__
++   static fixnum n;
++ 
++@@ -233,7 +241,7 @@ update_real_maxpage(void) {
++   }
++ #endif
++ 
++-  phys_pages=get_phys_pages_no_malloc(1);
+++  phys_pages=get_phys_pages_no_malloc(0);
++ 
++   massert(cur=sbrk(0));
++   beg=data_start ? data_start : cur;
++@@ -253,15 +261,14 @@ update_real_maxpage(void) {
++ 
++   maxpages=real_maxpage-page(beg);
++ 
++-  free_phys_pages=free_phys_pages>maxpages ? maxpages : free_phys_pages;
+++  phys_pages=phys_pages>maxpages ? maxpages : phys_pages;
++ 
++   resv_pages=available_pages=0;
++   available_pages=check_avail_pages();
++   
++-  for (i=t_start,j=0;i<t_other;i++) {
+++  for (i=t_start;i<t_other;i++)
++     massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage));
++-    j+=tm_table[i].tm_maxpage;
++-  }
+++
++   resv_pages=40<available_pages ? 40 : available_pages;
++   available_pages-=resv_pages;
++   
++@@ -270,13 +277,11 @@ update_real_maxpage(void) {
++     for (i=t_start,j=0;i<t_relocatable;i++)
++       j+=tm_table[i].tm_maxpage;
++     
++-    if (j<free_phys_pages) {
++-      for (i=t_start,k=0;i<t_relocatable;i++)
++-     if (tm_table[i].tm_maxpage) {
++-       massert(set_tm_maxpage(tm_table+i,((double)0.7*free_phys_pages/j)*tm_table[i].tm_maxpage));
++-       k+=tm_table[i].tm_maxpage;
++-     }
++-      set_tm_maxpage(tm_table+t_relocatable,(free_phys_pages-k)>>1);
+++    if (j<phys_pages) {
+++      for (i=t_start;i<t_relocatable;i++)
+++     if (tm_table[i].tm_maxpage)
+++       massert(set_tm_maxpage(tm_table+i,((double)0.7*phys_pages/j)*tm_table[i].tm_maxpage));
+++      set_tm_maxpage(tm_table+t_relocatable,(phys_pages+(tm_table[t_relocatable].tm_maxpage<<1)-sum_maxpages())>>1);
++     }
++     
++     new_holepage=0;
++@@ -297,15 +302,15 @@ minimize_image(void) {
++   fixnum i;
++   
++   empty_relblock();
++-  holepage=nrbpage=0;
++-  core_end=rb_start=rb_end=rb_limit=rb_pointer=heap_end;
+++  nrbpage=0;
+++  resize_hole(0,t_relocatable);
++ 
++ #ifdef GCL_GPROF
++   gprof_cleanup();
++ #endif
++   
++ #if defined(BSD) || defined(ATT)  
++-  mbrk(core_end);
+++  mbrk(core_end=heap_end);
++ #endif
++   
++   cbgbccount = tm_table[t_contiguous].tm_adjgbccnt = tm_table[t_contiguous].tm_opt_maxpage = 0;
++@@ -992,7 +997,6 @@ FFN(siLsave_system)(void) {
++   saving_system = FALSE;
++ 
++   siLsave();
++-  alloc_page(-(holepage+2*nrbpage));
++ 
++ }
++ 
++--- gcl-2.6.12.orig/o/nfunlink.c
+++++ gcl-2.6.12/o/nfunlink.c
++@@ -212,19 +212,24 @@ IapplyVector(object fun, int nargs, obje
++     else { abase = vs_top;
++         for (i=0; i < nargs ; i++, atypes >>= F_TYPE_WIDTH)
++           { object next = base[i];
++-            int atyp = atypes & MASK_RANGE(0,F_TYPE_WIDTH);
++-            if (atyp == F_object)
++-              next = next;
++-            else if (atyp == F_int)
++-              { ASSURE_TYPE(next,t_fixnum);
++-                next = COERCE_F_TYPE(next,F_object,F_int);}
++-            else if (atyp == F_shortfloat)
++-              { ASSURE_TYPE(next,t_shortfloat);
++-                next = COERCE_F_TYPE(next,F_object,F_shortfloat);}
++-            else if (atyp == F_double_ptr)
++-              { ASSURE_TYPE(next,t_longfloat);
++-                next = COERCE_F_TYPE(next,F_object,F_double_ptr);}
++-            else {FEerror("cant get here!",0);}
+++            switch (atypes & MASK_RANGE(0,F_TYPE_WIDTH)) {
+++            case F_object:
+++              break;
+++            case F_int:
+++              ASSURE_TYPE(next,t_fixnum);
+++              next = COERCE_F_TYPE(next,F_object,F_int);
+++              break;
+++            case F_shortfloat:
+++              ASSURE_TYPE(next,t_shortfloat);
+++              next = COERCE_F_TYPE(next,F_object,F_shortfloat);
+++              break;
+++            case F_double_ptr:
+++              ASSURE_TYPE(next,t_longfloat);
+++              next = COERCE_F_TYPE(next,F_object,F_double_ptr);
+++              break;
+++            default:
+++              FEerror("cant get here!",0);
+++            }
++             vs_push(next);}
++ 
++       }
++--- gcl-2.6.12.orig/o/nsocket.c
+++++ gcl-2.6.12/o/nsocket.c
++@@ -204,7 +204,7 @@ CreateSocket(int port, char *host, int s
++                                  * attempt to do an async connect. Otherwise
++                                  * do a synchronous connect or bind. */
++ {
++-    int status, sock, asyncConnect, curState, origState;
+++    int status, sock, /* asyncConnect,  */curState, origState;
++     struct sockaddr_in sockaddr;     /* socket address */
++     struct sockaddr_in mysockaddr;   /* Socket address for client */
++ 
++@@ -230,7 +230,7 @@ CreateSocket(int port, char *host, int s
++ 
++     fcntl(sock, F_SETFD, FD_CLOEXEC);
++     
++-    asyncConnect = 0;
+++    /* asyncConnect = 0; */
++     status = 0;
++     if (server) {
++ 
++@@ -285,7 +285,7 @@ CreateSocket(int port, char *host, int s
++                     sizeof(sockaddr));
++             if (status < 0) {
++                 if (errno == EINPROGRESS) {
++-                    asyncConnect = 1;
+++                    /* asyncConnect = 1; */
++                     status = 0;
++                 }
++             }
++--- gcl-2.6.12.orig/o/prelink.c
+++++ gcl-2.6.12/o/prelink.c
++@@ -5,8 +5,14 @@
++ extern FILE *stdin __attribute__((weak));
++ extern FILE *stderr __attribute__((weak));
++ extern FILE *stdout __attribute__((weak));
+++
+++#if RL_READLINE_VERSION < 0x0600
+++extern Function              *rl_completion_entry_function __attribute__((weak));
+++extern char          *rl_readline_name __attribute__((weak));
+++#else
++ extern rl_compentry_func_t *rl_completion_entry_function __attribute__((weak));
++ extern const char *rl_readline_name __attribute__((weak));
+++#endif
++ 
++ void
++ prelink_init(void) {
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -341,7 +341,7 @@ truncate_double(char *b,double d,int dp)
++   for (p=c1;*p && *p!='e';p++);
++   pp=p>c1 && p[-1]!='.' ? p-1 : p;
++   for (;pp>c1 && pp[-1]=='0';pp--);
++-  strcpy(pp,p);
+++  memmove(pp,p,1+strlen(p));
++   if (pp!=p && COMP(c1,&pp,d,dp))
++     k=truncate_double(n=c1,d,dp);
++ 
++--- gcl-2.6.12.orig/o/read.d
+++++ gcl-2.6.12/o/read.d
++@@ -2476,6 +2476,7 @@ object in;
++ 
++         /* to prevent longjmp clobber */
++         i=(long)&vsp;
+++     i+=i;
++      vsp=&vspo;
++      old_READtable = READtable;
++      old_READdefault_float_format = READdefault_float_format;
++--- gcl-2.6.12.orig/o/run_process.c
+++++ gcl-2.6.12/o/run_process.c
++@@ -354,7 +354,6 @@ static int open_connection(host,server)
++ char *host;
++ int  server;
++ {
++-     int res;
++      int pid;
++      int     sock;
++      struct  hostent *hp;
++@@ -396,9 +395,9 @@ int       server;
++      }
++ 
++ #ifdef OVM_IO
++-     res = fcntl(sock,F_SETFL,FASYNC | FNDELAY);
+++     fcntl(sock,F_SETFL,FASYNC | FNDELAY);
++ #else
++-     res = fcntl(sock,F_SETFL,FASYNC);
+++     fcntl(sock,F_SETFL,FASYNC);
++ #endif
++      return(sock);
++ }
++--- gcl-2.6.12.orig/o/sockets.c
+++++ gcl-2.6.12/o/sockets.c
++@@ -338,7 +338,7 @@ DEFUN_NEW("OUR-READ-WITH-OFFSET",object,
++        OO,OI,II,OO,(object fd,object buffer,fixnum offset,fixnum nbytes,fixnum timeout),
++       "Read from STATE-FD into string BUFFER putting data at OFFSET and reading NBYTES, waiting for TIMEOUT before failing")
++ 
++-{ return make_fixnum(read1(OBJ_TO_CONNECTION_STATE(fd),&((buffer)->ust.ust_self[offset]),nbytes,timeout));
+++{ return make_fixnum(read1(OBJ_TO_CONNECTION_STATE(fd),&((buffer)->st.st_self[offset]),nbytes,timeout));
++ }
++ 
++ 
++--- gcl-2.6.12.orig/o/unexelf.c
+++++ gcl-2.6.12/o/unexelf.c
++@@ -660,7 +660,7 @@ unexec (char *new_name, char *old_name,
++   int n, nn;
++   int old_bss_index, old_sbss_index;
++   int old_data_index, new_data2_index;
++-  int old_mdebug_index;
+++  /* int old_mdebug_index; */
++   struct stat stat_buf;
++ 
++   /* Open the old file, allocate a buffer of the right size, and read
++@@ -703,8 +703,8 @@ unexec (char *new_name, char *old_name,
++ 
++   /* Find the mdebug section, if any.  */
++ 
++-  old_mdebug_index = find_section (".mdebug", old_section_names,
++-                                old_name, old_file_h, old_section_h, 1);
+++  /* old_mdebug_index = find_section (".mdebug", old_section_names, */
+++  /*                                    old_name, old_file_h, old_section_h, 1); */
++ 
++   /* Find the old .bss section.  Figure out parameters of the new
++    * data2 and bss sections.
++--- gcl-2.6.12.orig/xgcl-2/gcl_general.lsp
+++++ gcl-2.6.12/xgcl-2/gcl_general.lsp
++@@ -61,7 +61,7 @@
++ 
++ ;; General routines.
++ (defCfun "object lisp_string(object a_string, fixnum c_string) " 0
++-  "extern long strlen(const char *);"
+++  "extern unsigned long strlen(const char *);"
++   "fixnum len = strlen((void *)c_string);"
++   "a_string->st.st_dim = len;"
++   "a_string->st.st_fillp = len;"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f019ef789de631915d6ee9879eaad31ae6446289
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,103 @@@
++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.
++ .
++ gcl (2.6.12-12) unstable; urgency=medium
++ .
++   * Version_2_6_13pre13
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1918,7 +1918,7 @@ void
++ allocate_code_block_reserve(void);
++ 
++ void *
++-alloc_contblock_no_gc(size_t);
+++alloc_contblock_no_gc(size_t,char *);
++ 
++ void
++ reset_contblock_freelist(void);
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -1047,7 +1047,7 @@ alloc_contblock(size_t n) {
++ }
++ 
++ void *
++-alloc_contblock_no_gc(size_t n) {
+++alloc_contblock_no_gc(size_t n,char *limit) {
++ 
++   struct typemanager *tm=tm_of(t_contiguous);
++   void *p;
++@@ -1057,7 +1057,7 @@ alloc_contblock_no_gc(size_t n) {
++   if ((p=alloc_from_freelist(tm,n)))
++     return p;
++ 
++-  if (tpage(tm,n)<(rb_start-heap_end)>>PAGEWIDTH && (p=alloc_after_adding_pages(tm,n)))
+++  if (tpage(tm,n)<(limit-heap_end)>>PAGEWIDTH && (p=alloc_after_adding_pages(tm,n)))
++     return p;
++ 
++   return NULL;
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -431,29 +431,21 @@ collecting(void *p) {
++ 
++ static ufixnum ngc_thresh;
++ static union {struct dummy d;ufixnum f;} rst={.f=-1};
++-/* static object lcv=Cnil; */
+++static void *static_promotion_limit;
++ 
++ static inline void
++ mark_leaf_data(object x,void **pp,ufixnum s,ufixnum r) {
++ 
++-  void *p=*pp,*dp/* ,*dpe */;
+++  void *p=*pp,*dp;
++   
++   if (!marking(p)||!collecting(p))
++     return;
++ 
++-  /* if (lcv!=Cnil && !collecting(lcv->st.st_self) && */
++-  /*     (dp=PCEI(lcv->st.st_self,r)) && dp+s<=(dpe=lcv->st.st_self+lcv->st.st_dim) */
++-  /*     && x && x->d.st>=ngc_thresh) { */
++-
++   if (what_to_collect!=t_contiguous && 
++       x && x->d.st>=ngc_thresh &&
++-      (dp=alloc_contblock_no_gc(s))) {
+++      (dp=alloc_contblock_no_gc(s,static_promotion_limit))) {
++     
++-    /* fprintf(stderr,"Promoting %p,%lu to %p\n",p,s,dp); */
++-    /* fflush(stderr); */
++-
++     *pp=memcpy(dp,p,s);
++-    /* lcv->st.st_fillp=lcv->st.st_dim=(dpe-(void *)(lcv->st.st_self=dp+s)); */
++     x->d.st=0;
++ 
++     return;
++@@ -1204,8 +1196,10 @@ GBC(enum type t) {
++ 
++   if (gc_time >=0 && !gc_recursive++) {gc_start=runtime();}
++   
++-  if (COLLECT_RELBLOCK_P)
+++  if (COLLECT_RELBLOCK_P) {
+++    static_promotion_limit=rb_start<new_rb_start ? rb_start : new_rb_start;/*do not allow static promotion to go past this point*/
++     setup_rb();
+++  }
++   
++ #ifdef DEBUG
++   if (debug) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..107f3381bb2866bfe86e7b37ed7f3bf791636e76
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2585 @@@
++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.
++ .
++ gcl (2.6.12-12) unstable; urgency=medium
++ .
++   * Version_2_6_13pre13
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -2915,10 +2915,10 @@ case $canonical in
++              use=386-macosx
++      if test "$build_cpu" = "x86_64" ; then
++         CFLAGS="-m64 $CFLAGS";
++-        LDFLAGS="-m64 -Wl,-headerpad,72 $LDFLAGS";
+++        LDFLAGS="-m64 -Wl,-headerpad,72 -Wl,-no_pie $LDFLAGS";
++      else
++         CFLAGS="-m32 $CFLAGS";
++-        LDFLAGS="-m32  -Wl,-headerpad,56 $LDFLAGS";
+++        LDFLAGS="-m32  -Wl,-headerpad,56 -Wl,-no_pie $LDFLAGS";
++         fi;;
++ 
++      alpha-dec-osf)
++@@ -4203,7 +4203,7 @@ if ac_fn_c_try_run "$LINENO"; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++       clang="yes"
++-      TCFLAGS="$TCFLAGS -Wno-builtin-requires-header -Wno-empty-body"
+++      TCFLAGS="$TCFLAGS -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign"
++ 
++ $as_echo "#define CLANG 1" >>confdefs.h
++ 
++@@ -4246,7 +4246,12 @@ fi
++ if test "$GCC" = "yes" ; then
++      TCFLAGS="$TCFLAGS -pipe"
++      case $use in
++-          *mingw*|*gnuwin*)
+++          *mingw*)
+++#            echo "WARNING: Remove -fno-zero-initialized-in-bss from makedefs if gcc less than 3.3.1."
+++#            echo "         It is otherwise needed for the Unexec stuff to work."
+++#            if test "$enable_debug" = "yes" ; then TCFLAGS="$TCFLAGS -gstabs" ; fi
+++             TCFLAGS="$TCFLAGS -fno-zero-initialized-in-bss -mms-bitfields";;
+++          *gnuwin*)
++ #            echo "WARNING: Remove -fno-zero-initialized-in-bss from makedefs if gcc less than 3.3.1."
++ #            echo "         It is otherwise needed for the Unexec stuff to work."
++ #            if test "$enable_debug" = "yes" ; then TCFLAGS="$TCFLAGS -gstabs" ; fi
++@@ -5193,7 +5198,7 @@ $as_echo_n "checking \"for leading under
++ cat>foo.c <<EOFF
++ #include <math.h>
++ #include <stdio.h>
++-int main() {FILE *f;double d=0.0;getc(f);cos(d);return 0;}
+++int main() {FILE *f;double d=0.0;getc(f);d=cos(d);return 0;}
++ EOFF
++ $CC -c foo.c -o foo.o
++ if nm foo.o |grep " U " | grep "_cos" >/dev/null || nm foo.o |grep " U " | grep " _getc" >/dev/null ; then
++@@ -6071,7 +6076,50 @@ $as_echo "$ac_cv_lib_tirpc_xdr_double" >
++ if test "x$ac_cv_lib_tirpc_xdr_double" = xyes; then :
++ 
++ $as_echo "#define HAVE_XDR 1" >>confdefs.h
++- TLIBS="$TLIBS -ltirpc"
+++
+++                     TLIBS="$TLIBS -ltirpc" TCFLAGS="$TCFLAGS -I/usr/include/tirpc"
+++else
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdr_double in -lgssrpc" >&5
+++$as_echo_n "checking for xdr_double in -lgssrpc... " >&6; }
+++if ${ac_cv_lib_gssrpc_xdr_double+:} false; then :
+++  $as_echo_n "(cached) " >&6
+++else
+++  ac_check_lib_save_LIBS=$LIBS
+++LIBS="-lgssrpc  $LIBS"
+++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+++/* end confdefs.h.  */
+++
+++/* Override any GCC internal prototype to avoid an error.
+++   Use char because int might match the return type of a GCC
+++   builtin and then its argument prototype would still apply.  */
+++#ifdef __cplusplus
+++extern "C"
+++#endif
+++char xdr_double ();
+++int
+++main ()
+++{
+++return xdr_double ();
+++  ;
+++  return 0;
+++}
+++_ACEOF
+++if ac_fn_c_try_link "$LINENO"; then :
+++  ac_cv_lib_gssrpc_xdr_double=yes
+++else
+++  ac_cv_lib_gssrpc_xdr_double=no
+++fi
+++rm -f core conftest.err conftest.$ac_objext \
+++    conftest$ac_exeext conftest.$ac_ext
+++LIBS=$ac_check_lib_save_LIBS
+++fi
+++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssrpc_xdr_double" >&5
+++$as_echo "$ac_cv_lib_gssrpc_xdr_double" >&6; }
+++if test "x$ac_cv_lib_gssrpc_xdr_double" = xyes; then :
+++
+++$as_echo "#define HAVE_XDR 1" >>confdefs.h
+++
+++                     TLIBS="$TLIBS -lgssrpc" TCFLAGS="$TCFLAGS -I/usr/include/gssrpc"
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdr_double in -lrpc" >&5
++ $as_echo_n "checking for xdr_double in -lrpc... " >&6; }
++@@ -6112,7 +6160,8 @@ $as_echo "$ac_cv_lib_rpc_xdr_double" >&6
++ if test "x$ac_cv_lib_rpc_xdr_double" = xyes; then :
++ 
++ $as_echo "#define HAVE_XDR 1" >>confdefs.h
++- TLIBS="$TLIBS -lrpc"
+++
+++                     TLIBS="$TLIBS -lrpc" TCFLAGS="$TCFLAGS -I/usr/include/rpc"
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdr_double in -loncrpc" >&5
++ $as_echo_n "checking for xdr_double in -loncrpc... " >&6; }
++@@ -6153,7 +6202,10 @@ $as_echo "$ac_cv_lib_oncrpc_xdr_double"
++ if test "x$ac_cv_lib_oncrpc_xdr_double" = xyes; then :
++ 
++ $as_echo "#define HAVE_XDR 1" >>confdefs.h
++- TLIBS="$TLIBS -loncrpc"
+++
+++                     TLIBS="$TLIBS -loncrpc" TCFLAGS="$TCFLAGS -I/usr/include/oncrpc"
+++fi
+++
++ fi
++ 
++ fi
++@@ -6870,7 +6922,6 @@ else
++ 
++              #include <stdio.h>
++              #include <stdlib.h>
++-             void gprof_cleanup() {};
++              int main(int argc,char **argv,char **envp) {
++              #include "h/unrandomize.h"
++              return 0;}
++@@ -6899,7 +6950,6 @@ else
++ /* end confdefs.h.  */
++ #include <stdio.h>
++                  #include <stdlib.h>
++-                 void gprof_cleanup() {};
++                  int main(int argc,char * argv[],char * envp[]) {
++                      FILE *f;
++                      #ifdef CAN_UNRANDOMIZE_SBRK
++@@ -6930,7 +6980,6 @@ else
++ /* end confdefs.h.  */
++ #include <stdio.h>
++                  #include <stdlib.h>
++-                 void gprof_cleanup() {};
++                  int main(int argc,char * argv[],char * envp[]) {
++                      FILE *f;
++                      #ifdef CAN_UNRANDOMIZE_SBRK
++@@ -6997,7 +7046,6 @@ else
++            return (void *)&i;
++         }
++ 
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      void *v ;
++      FILE *fp = fopen("conftest1","w");
++@@ -7055,7 +7103,6 @@ else
++            return (void *)&i;
++         }
++ 
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      void *v ;
++      FILE *fp = fopen("conftest1","w");
++@@ -7108,7 +7155,6 @@ else
++ 
++      #include <stdio.h>
++      #include <stdlib.h>
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      #ifdef CAN_UNRANDOMIZE_SBRK
++      #include "h/unrandomize.h"
++@@ -7147,7 +7193,6 @@ else
++ 
++      #include <stdio.h>
++      #include <stdlib.h>
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      void *b,*c;
++      FILE *fp = fopen("conftest1","w");
++@@ -7200,7 +7245,6 @@ else
++      return (void *)&i;
++      }
++ 
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      char *b;
++      FILE *fp = fopen("conftest1","w");
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -195,10 +195,10 @@ case $canonical in
++              use=386-macosx
++      if test "$build_cpu" = "x86_64" ; then 
++         CFLAGS="-m64 $CFLAGS";
++-        LDFLAGS="-m64 -Wl,-headerpad,72 $LDFLAGS"; 
+++        LDFLAGS="-m64 -Wl,-headerpad,72 -Wl,-no_pie $LDFLAGS"; 
++      else 
++         CFLAGS="-m32 $CFLAGS";
++-        LDFLAGS="-m32  -Wl,-headerpad,56 $LDFLAGS"; 
+++        LDFLAGS="-m32  -Wl,-headerpad,56 -Wl,-no_pie $LDFLAGS"; 
++         fi;;
++      
++      alpha-dec-osf)
++@@ -502,7 +502,7 @@ if test "$GCC" = "yes" ; then
++              ;}]])],
++      [AC_MSG_RESULT([yes])
++       clang="yes"
++-      TCFLAGS="$TCFLAGS -Wno-builtin-requires-header -Wno-empty-body"
+++      TCFLAGS="$TCFLAGS -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign"
++       AC_DEFINE([CLANG],[1],[running clang compiler])],      
++      [AC_MSG_RESULT([no])
++       #FIXME -Wno-unused-but-set-variable when time
++@@ -517,7 +517,12 @@ fi
++ if test "$GCC" = "yes" ; then
++      TCFLAGS="$TCFLAGS -pipe"
++      case $use in
++-          *mingw*|*gnuwin*)
+++          *mingw*)
+++#            echo "WARNING: Remove -fno-zero-initialized-in-bss from makedefs if gcc less than 3.3.1."
+++#            echo "         It is otherwise needed for the Unexec stuff to work."
+++#            if test "$enable_debug" = "yes" ; then TCFLAGS="$TCFLAGS -gstabs" ; fi
+++             TCFLAGS="$TCFLAGS -fno-zero-initialized-in-bss -mms-bitfields";;
+++          *gnuwin*)
++ #            echo "WARNING: Remove -fno-zero-initialized-in-bss from makedefs if gcc less than 3.3.1."
++ #            echo "         It is otherwise needed for the Unexec stuff to work."
++ #            if test "$enable_debug" = "yes" ; then TCFLAGS="$TCFLAGS -gstabs" ; fi
++@@ -889,7 +894,7 @@ AC_MSG_CHECKING("for leading underscore
++ cat>foo.c <<EOFF
++ #include <math.h>
++ #include <stdio.h>
++-int main() {FILE *f;double d=0.0;getc(f);cos(d);return 0;}
+++int main() {FILE *f;double d=0.0;getc(f);d=cos(d);return 0;}
++ EOFF
++ $CC -c foo.c -o foo.o
++ if nm foo.o |grep " U " | grep "_cos" >/dev/null || nm foo.o |grep " U " | grep " _getc" >/dev/null ; then
++@@ -1160,9 +1165,14 @@ fi
++ 
++ if test "$enable_xdr" = "yes" ; then
++    AC_CHECK_FUNC(xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions]),
++-        AC_CHECK_LIB(tirpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions]) TLIBS="$TLIBS -ltirpc",
++-        AC_CHECK_LIB(rpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions]) TLIBS="$TLIBS -lrpc",
++-        AC_CHECK_LIB(oncrpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions]) TLIBS="$TLIBS -loncrpc"))))
+++        AC_CHECK_LIB(tirpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
+++                     TLIBS="$TLIBS -ltirpc" TCFLAGS="$TCFLAGS -I/usr/include/tirpc",
+++        AC_CHECK_LIB(gssrpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
+++                     TLIBS="$TLIBS -lgssrpc" TCFLAGS="$TCFLAGS -I/usr/include/gssrpc",
+++        AC_CHECK_LIB(rpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
+++                     TLIBS="$TLIBS -lrpc" TCFLAGS="$TCFLAGS -I/usr/include/rpc",
+++        AC_CHECK_LIB(oncrpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
+++                     TLIBS="$TLIBS -loncrpc" TCFLAGS="$TCFLAGS -I/usr/include/oncrpc")))))
++ fi
++ 
++ 
++@@ -1442,7 +1452,6 @@ if test "$HAVE_SBRK" = "1" ; then
++      AC_LANG_SOURCE([[
++              #include <stdio.h>
++              #include <stdlib.h>
++-             void gprof_cleanup() {};
++              int main(int argc,char **argv,char **envp) {
++              #include "h/unrandomize.h"
++              return 0;}]])],
++@@ -1453,7 +1462,6 @@ if test "$HAVE_SBRK" = "1" ; then
++      AC_MSG_CHECKING([that sbrk is (now) non-random])
++      AC_TRY_RUN([#include <stdio.h>
++                  #include <stdlib.h>
++-                 void gprof_cleanup() {};
++                  int main(int argc,char * argv[],char * envp[]) {
++                      FILE *f;
++                      #ifdef CAN_UNRANDOMIZE_SBRK
++@@ -1468,7 +1476,6 @@ if test "$HAVE_SBRK" = "1" ; then
++      fi
++      AC_TRY_RUN([#include <stdio.h>
++                  #include <stdlib.h>
++-                 void gprof_cleanup() {};
++                  int main(int argc,char * argv[],char * envp[]) {
++                      FILE *f;
++                      #ifdef CAN_UNRANDOMIZE_SBRK
++@@ -1552,7 +1559,6 @@ AC_RUN_IFELSE([AC_LANG_SOURCE([[
++            return (void *)&i;
++         }
++ 
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      void *v ;
++      FILE *fp = fopen("conftest1","w");
++@@ -1586,7 +1592,6 @@ AC_RUN_IFELSE([AC_LANG_SOURCE([[
++            return (void *)&i;
++         }
++ 
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      void *v ;
++      FILE *fp = fopen("conftest1","w");
++@@ -1615,7 +1620,6 @@ AC_MSG_CHECKING(NEG_CSTACK_ADDRESS)
++ AC_RUN_IFELSE([AC_LANG_SOURCE([[
++      #include <stdio.h>
++      #include <stdlib.h>
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      #ifdef CAN_UNRANDOMIZE_SBRK
++      #include "h/unrandomize.h"
++@@ -1632,7 +1636,6 @@ AC_MSG_CHECKING([finding CSTACK_ALIGNMEN
++ AC_RUN_IFELSE([AC_LANG_SOURCE([[
++      #include <stdio.h>
++      #include <stdlib.h>
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      void *b,*c;
++      FILE *fp = fopen("conftest1","w");
++@@ -1661,7 +1664,6 @@ AC_RUN_IFELSE([AC_LANG_SOURCE([[
++      return (void *)&i;
++      }
++ 
++-     void gprof_cleanup() {};
++      int main(int argc,char **argv,char **envp) {
++      char *b;
++      FILE *fp = fopen("conftest1","w");
++--- gcl-2.6.12.orig/h/mingw.h
+++++ gcl-2.6.12/h/mingw.h
++@@ -243,3 +243,6 @@ extern int mingwlisten(FILE *);
++ #include <limits.h>
++ 
++ 
+++#define NO_FILE_LOCKING /*FIXME*/
+++
+++#define sleep(n) Sleep(1000*n)
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -340,15 +340,68 @@ EXTER long holepage;                    /*  hole pages  *
++ #define maxrbpage tm_table[t_relocatable].tm_maxpage
++ #define rbgbccount tm_table[t_relocatable].tm_gbccount
++ EXTER long new_holepage,starting_hole_div,starting_relb_heap_mult;
++-  
+++
+++EXTER ufixnum recent_allocation,wait_on_abort;
+++EXTER double gc_alloc_min,mem_multiple,gc_page_min,gc_page_max;
+++EXTER bool multiprocess_memory_pool;
++ 
++ EXTER char *new_rb_start;            /*  desired relblock start after next gc  */
++ EXTER char *rb_start;                /*  relblock start  */
++ EXTER char *rb_end;                  /*  relblock end  */
++ EXTER char *rb_limit;                        /*  relblock limit  */
++ EXTER char *rb_pointer;              /*  relblock pointer  */
++-/* EXTER char *rb_start1;            /\*  relblock start in copy space  *\/ */
++-/* EXTER char *rb_pointer1;          /\*  relblock pointer in copy space  *\/ */
+++
+++#ifndef INLINE
+++#define INLINE
+++#endif
+++
+++INLINE ufixnum
+++rb_size(void) {
+++  return rb_end-rb_start;
+++}
+++
+++INLINE bool
+++rb_high(void) {
+++  return rb_pointer>=rb_end&&rb_size();
+++}
+++
+++INLINE char *
+++rb_begin(void) {
+++  return rb_high() ? rb_end : rb_start;
+++}
+++
+++INLINE bool
+++rb_emptyp(void) {
+++  return rb_pointer == rb_begin();
+++}
+++
+++INLINE ufixnum
+++ufmin(ufixnum a,ufixnum b) {
+++  return a<=b ? a : b;
+++}
+++
+++INLINE ufixnum
+++ufmax(ufixnum a,ufixnum b) {
+++  return a>=b ? a : b;
+++}
+++
+++#include <unistd.h>
+++#include <stdio.h>
+++#include <stdarg.h>
+++INLINE int
+++emsg(const char *s,...) {
+++  va_list args;
+++  ufixnum n=0;
+++  void *v=NULL;
+++  va_start(args,s);
+++  n=vsnprintf(v,n,s,args)+1;
+++  va_end(args);
+++  v=alloca(n);
+++  va_start(args,s);
+++  vsnprintf(v,n,s,args);
+++  va_end(args);
+++  return write(2,v,n-1) ? n : -1;
+++}
++ 
++ EXTER char *heap_end;                        /*  heap end  */
++ EXTER char *core_end;                        /*  core end  */
++--- /dev/null
+++++ gcl-2.6.12/h/pool.h
++@@ -0,0 +1,170 @@
+++static ufixnum
+++data_pages(void) {
+++
+++  return page(2*(rb_end-rb_start)+((void *)heap_end-data_start));
+++
+++}
+++  
+++#ifndef NO_FILE_LOCKING
+++
+++#include <sys/types.h>
+++#include <sys/stat.h>
+++#include <fcntl.h>
+++#include <sys/mman.h>
+++#include <errno.h>
+++
+++static int pool=-1;
+++static struct pool {
+++  ufixnum pid;
+++  ufixnum n;
+++  ufixnum s;
+++} *Pool;
+++
+++static struct flock pl;
+++
+++static const char *gcl_pool="/tmp/gcl_pool";
+++
+++static int
+++set_lock(void) {
+++  
+++  errno=0;
+++  if (fcntl(pool,F_SETLKW,&pl)) {
+++    if (errno==EINTR)
+++      set_lock();
+++    return -1;
+++  }
+++  return 0;
+++
+++}
+++  
+++static void
+++lock_pool(void) {
+++
+++  pl.l_type=F_WRLCK;
+++  massert(!set_lock());
+++
+++}
+++
+++static void
+++unlock_pool(void) {
+++
+++  pl.l_type=F_UNLCK;
+++  massert(!set_lock());
+++
+++}
+++
+++static void
+++register_pool(int s) {
+++  lock_pool();
+++  Pool->n+=s;
+++  Pool->s+=s*data_pages();
+++  unlock_pool();
+++}
+++  
+++static void
+++open_pool(void) {
+++
+++  if (pool==-1) {
+++
+++    struct flock f;
+++
+++    massert((pool=open(gcl_pool,O_CREAT|O_RDWR,0644))!=-1);
+++    massert(!ftruncate(pool,sizeof(struct pool)));
+++    massert((Pool=mmap(NULL,sizeof(struct pool),PROT_READ|PROT_WRITE,MAP_SHARED,pool,0))!=(void *)-1);
+++
+++    pl.l_type=F_WRLCK;
+++    pl.l_whence=SEEK_SET;
+++    pl.l_start=sizeof(Pool->pid);;
+++    pl.l_len=0;
+++
+++    f=pl;
+++    f.l_start=0;
+++    f.l_len=sizeof(Pool->pid);
+++    
+++    if (!fcntl(pool,F_SETLK,&f)) {
+++
+++      Pool->pid=getpid();
+++
+++      lock_pool();
+++      Pool->n=0;
+++      Pool->s=0;
+++      unlock_pool();
+++
+++      f.l_type=F_UNLCK;
+++      massert(!fcntl(pool,F_SETLK,&f));
+++
+++      fprintf(stderr,"Initializing pool\n");
+++      fflush(stderr);
+++
+++    }
+++
+++    f.l_type=F_RDLCK;
+++    massert(!fcntl(pool,F_SETLK,&f));
+++
+++    register_pool(1);
+++    massert(!atexit(close_pool));
+++
+++  }
+++
+++}
+++#endif
+++
+++void
+++close_pool(void) {
+++
+++#ifndef NO_FILE_LOCKING
+++  if (pool!=-1) {
+++    register_pool(-1);
+++    massert(!close(pool));
+++    massert(!munmap(Pool,sizeof(struct pool)));
+++    pool=-1;
+++  }
+++#endif
+++  
+++}
+++
+++static void
+++update_pool(fixnum val) {
+++
+++#ifndef NO_FILE_LOCKING
+++  if (multiprocess_memory_pool) {
+++    open_pool();
+++    lock_pool();
+++    Pool->s+=val;
+++    unlock_pool();
+++  }
+++#endif
+++  
+++}
+++
+++static ufixnum
+++get_pool(void) {
+++
+++  ufixnum s;
+++
+++#ifndef NO_FILE_LOCKING
+++  if (multiprocess_memory_pool) {
+++
+++    open_pool();
+++    lock_pool();
+++    s=Pool->s;
+++    unlock_pool();
+++    
+++  } else
+++#endif
+++    
+++    s=data_pages();
+++
+++  return s;
+++  
+++}
+++
+++
+++static void
+++pool_check(void) {
+++
+++  /* if (pool!=-1) */
+++  /*   massert(get_pool()==data_pages() */
+++  /*             ||!fprintf(stderr,"%lu %lu %lu\n",get_pool(),page((void *)heap_end-data_start),page(((rb_end-rb_start))))); */
+++
+++}
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1951,7 +1951,16 @@ ufixnum
++ sum_maxpages(void);
++ 
++ void
++-resize_hole(ufixnum,enum type);
+++resize_hole(ufixnum,enum type,bool);
++ 
++ void
++-setup_rb(void);
+++setup_rb(bool);
+++
+++void
+++close_pool(void);
+++
+++void
+++gcl_cleanup(int);
+++
+++void
+++do_gcl_abort(void);
++--- gcl-2.6.12.orig/h/unrandomize.h
+++++ gcl-2.6.12/h/unrandomize.h
++@@ -49,10 +49,10 @@
++      }
++      n[k]="GCL_UNRANDOMIZE=t";
++      n[k+1]=0;
++-#ifdef GCL_GPROF
++-     gprof_cleanup();
++-#endif
++      errno=0;
+++#ifdef HAVE_GCL_CLEANUP      
+++     gcl_cleanup(0);
+++#endif
++      execve(*a,a,n);
++      printf("execve failure %d\n",errno);
++      exit(-1);
++--- gcl-2.6.12.orig/lsp/gcl_top.lsp
+++++ gcl-2.6.12/lsp/gcl_top.lsp
++@@ -89,7 +89,7 @@
++ 
++     (when (boundp '*system-banner*)
++       (format t *system-banner*)
++-      (format t "Temporary directory for compiler files set to ~a~%" *tmp-dir*))
+++      (format t "Temporary directory for compiler files:~%~a~%" *tmp-dir*))
++ 
++     (loop
++       (setq +++ ++ ++ + + -)
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -38,6 +38,8 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ static int
++ t_from_type(object);
++ 
+++#include "pool.h"
+++
++ 
++ DEFVAR("*AFTER-GBC-HOOK*",sSAafter_gbc_hookA,SI,sLnil,"");
++ DEFVAR("*IGNORE-MAXIMUM-PAGES*",sSAignore_maximum_pagesA,SI,sLt,"");
++@@ -67,7 +69,6 @@ sbrk1(n)
++ 
++ long starting_hole_div=10;
++ long starting_relb_heap_mult=2;
++-long new_holepage;
++ long resv_pages=0;
++ 
++ #ifdef BSD
++@@ -317,7 +318,7 @@ empty_relblock(void) {
++   object o=sSAleaf_collection_thresholdA->s.s_dbind;
++   
++   sSAleaf_collection_thresholdA->s.s_dbind=make_fixnum(0);
++-  for (;rb_pointer!=rb_start&&rb_pointer!=rb_end;) {
+++  for (;!rb_emptyp();) {
++     tm_table[t_relocatable].tm_adjgbccnt--;
++     GBC(t_relocatable);
++   }
++@@ -326,40 +327,44 @@ empty_relblock(void) {
++ }
++ 
++ void
++-setup_rb(void) {
+++setup_rb(bool preserve_rb_pointerp) {
++ 
++-  int init=new_rb_start!=rb_start || rb_pointer>=rb_end;
+++  int lowp=new_rb_start!=rb_start || rb_high();
++ 
+++  update_pool(2*(nrbpage-page(rb_size())));
++   rb_start=new_rb_start;
++   rb_end=rb_start+(nrbpage<<PAGEWIDTH);
++-  rb_pointer=init ? rb_start : rb_end;
++-  rb_limit=rb_pointer+(nrbpage<<PAGEWIDTH);
++-
+++  if (!preserve_rb_pointerp)
+++    rb_pointer=lowp ? rb_start : rb_end;
+++  rb_limit=rb_begin()+(nrbpage<<PAGEWIDTH);
+++  pool_check();
+++  
++   alloc_page(-(2*nrbpage+((new_rb_start-heap_end)>>PAGEWIDTH)));
++  
++ }
++   
++ void
++-resize_hole(ufixnum hp,enum type tp) {
+++resize_hole(ufixnum hp,enum type tp,bool in_placep) {
++   
++-  char *start=rb_pointer<rb_end ? rb_start : rb_end;
+++  char *start=rb_begin(),*new_start=heap_end+hp*PAGESIZE;
++   ufixnum size=rb_pointer-start;
++ 
++-  new_rb_start=heap_end+hp*PAGESIZE;
++-  
++-  if ((new_rb_start<start && new_rb_start+size>=start) || (new_rb_start<start+size && new_rb_start+size>=start+size)) {
++-    fprintf(stderr,"Toggling relblock when resizing hole to %lu\n",hp);
++-    fflush(stderr);
+++  if (!in_placep &&
+++      ((new_start<=start && start<new_start+size) || (new_start<start+size && start+size<=new_start+size))) {
+++    emsg("Toggling relblock when resizing hole to %lu\n",hp);
++     tm_table[t_relocatable].tm_adjgbccnt--;
++     GBC(t_relocatable);
++-    return resize_hole(hp,tp);
+++    return resize_hole(hp,tp,in_placep);
++   }
++ 
++-  if (size) {
+++  new_rb_start=new_start;
+++
+++  if (!size || in_placep)
+++    setup_rb(in_placep);
+++  else {
++     tm_of(tp)->tm_adjgbccnt--;
++     GBC(tp);
++-  } else
++-    setup_rb();
+++  }
++   
++ }
++ 
++@@ -378,11 +383,13 @@ alloc_page(long n) {
++       fixnum d=available_pages-nn;
++ 
++       d*=0.2;
++-      d=d<0.01*real_maxpage ? available_pages-n : d;
+++      d=d<0.01*real_maxpage ? available_pages-nn : d;
++       d=d<0 ? 0 : d;
++-      d=new_holepage<d ? new_holepage : d;
+++      d=(available_pages/3)<d ? (available_pages/3) : d;
++       
++-      resize_hole(d+nn,t_relocatable);
+++      emsg("Hole overrun\n");
+++
+++      resize_hole(d+nn,t_relocatable,0);
++ 
++     }
++   }
++@@ -390,11 +397,13 @@ alloc_page(long n) {
++   e=heap_end;
++   v=e+nn*PAGESIZE;
++ 
++-  if (!s)
+++  if (!s) {
++ 
++     heap_end=v;
++-
++-  else if (v>(void *)core_end) {
+++    update_pool(nn);
+++    pool_check();
+++    
+++  } else if (v>(void *)core_end) {
++     
++     massert(!mbrk(v));
++     core_end=v;
++@@ -510,94 +519,6 @@ grow_linear(fixnum old, fixnum fract, fi
++ DEFVAR("*OPTIMIZE-MAXIMUM-PAGES*",sSAoptimize_maximum_pagesA,SI,sLnil,"");
++ #define OPTIMIZE_MAX_PAGES (sSAoptimize_maximum_pagesA ==0 || sSAoptimize_maximum_pagesA->s.s_dbind !=sLnil) 
++ DEFVAR("*NOTIFY-OPTIMIZE-MAXIMUM-PAGES*",sSAnotify_optimize_maximum_pagesA,SI,sLnil,"");
++-#define MMAX_PG(a_) (a_)->tm_maxpage-(a_)->tm_alt_npage
++-
++-static int
++-rebalance_maxpages(struct typemanager *my_tm,fixnum z) {
++-
++-  fixnum d;
++-  ufixnum i,j,r=(my_tm->tm_type==t_relocatable ? 2 : 1);
++-  
++-  
++-  d=(z-my_tm->tm_maxpage)*r;
++-  j=sum_maxpages();
++-
++-  if (j+d>phys_pages) {
++-
++-    ufixnum k,e=j+d-phys_pages;
++-    double f;
++-
++-    for (k=0,i=t_start;i<t_other;i++)
++-      if (tm_table+i!=my_tm)
++-     k+=(tm_table[i].tm_maxpage-tm_table[i].tm_npage)*(i==t_relocatable ? 2 : 1);
++-
++-    e=e>k ? k : e;
++-    if (e+phys_pages<=j)
++-      return 0;
++-
++-    f=k ? 1.0-(double)e/k : 1.0;
++-
++-    for (i=t_start;i<t_other;i++)
++-      if (tm_table[i].tm_npage && tm_table+i!=my_tm) {
++-       massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage+f*(tm_table[i].tm_maxpage-tm_table[i].tm_npage)));
++-     }
++-    
++-    massert(set_tm_maxpage(my_tm,(my_tm->tm_maxpage*r+(phys_pages-sum_maxpages()))/r));
++-
++-    return 1;
++-    
++-  } else
++-
++-    return set_tm_maxpage(my_tm,z);
++-
++-}
++-
++-long
++-opt_maxpage(struct typemanager *my_tm) {
++-
++-  double x=0.0,y=0.0,z,r;
++-  long mmax_page;
++-  struct typemanager *tm,*tme;
++-  long mro=0,tro=0,j;
++-
++-  if (page(core_end)>0.8*real_maxpage)
++-    return 0;
++-
++-  for (tm=tm_table,tme=tm+sizeof(tm_table)/sizeof(*tm_table);tm<tme;tm++) {
++-    x+=tm->tm_adjgbccnt;
++-    y+=MMAX_PG(tm);
++-  }
++-  mmax_page=MMAX_PG(my_tm);
++-#if 0
++-  if (sgc_enabled) {
++-    y-=(tro=sgc_count_read_only_type(-1));
++-    mmax_page-=(mro=sgc_count_read_only_type(my_tm->tm_type));
++-  }
++-#endif
++-
++-  z=my_tm->tm_adjgbccnt/* -1 */;
++-  z/=(1+x-0.9*my_tm->tm_adjgbccnt);
++-  z*=(y-mmax_page)*mmax_page;
++-  z=sqrt(z);
++-  z=z-mmax_page>available_pages ? mmax_page+available_pages : z;
++-  my_tm->tm_opt_maxpage=(long)(z+my_tm->tm_alt_npage)>my_tm->tm_opt_maxpage ? (long)(z+my_tm->tm_alt_npage) : my_tm->tm_opt_maxpage;
++-
++-  if (z<=mmax_page)
++-    return 0;
++-
++-  r=((x-my_tm->tm_adjgbccnt)+ my_tm->tm_adjgbccnt*mmax_page/z)*(y-mmax_page+z);
++-  r/=x*y;
++-
++-  j=r<=0.95 && rebalance_maxpages(my_tm,z+mro+my_tm->tm_alt_npage);
++-
++-  if (sSAnotify_optimize_maximum_pagesA->s.s_dbind!=sLnil)
++-    printf("[type %u max %lu(%lu) opt %lu   y %lu(%lu) gbcrat %f sav %f  new %lu sum %lu phys %lu]\n",
++-        my_tm->tm_type,mmax_page,mro,(long)z,(long)y,tro,(my_tm->tm_adjgbccnt/* -1 */)/(1+x-0.9*my_tm->tm_adjgbccnt),r,
++-        my_tm->tm_maxpage,sum_maxpages(),phys_pages);
++-
++-  return j ? 1 : 0;
++-
++-}
++ 
++ static object
++ exhausted_report(enum type t,struct typemanager *tm) {
++@@ -735,14 +656,12 @@ print_cb(int print) {
++     massert(**cbppp==cbp);
++     for (k=0;cbp && cbp->cb_size==(**cbppp)->cb_size;cbpp=&cbp->cb_link,cbp=cbp->cb_link,k++);
++     if (print)
++-      fprintf(stderr,"%lu %p %p %lu %lu\n",(unsigned long)(cbppp-cbsrch1),*cbppp,**cbppp,(**cbppp)->cb_size,k);
+++      emsg("%lu %p %p %lu %lu\n",(unsigned long)(cbppp-cbsrch1),*cbppp,**cbppp,(**cbppp)->cb_size,k);
++   }
++   massert(cbppp==cbsrche);
++   massert(*cbppp==cbpp);
++   massert(!**cbppp);
++ 
++-  fflush(stderr);
++-
++ }
++   
++ void
++@@ -808,8 +727,8 @@ alloc_from_freelist(struct typemanager *
++     break;
++ 
++   case t_relocatable:
++-    if (rb_pointer>rb_end && rb_pointer+n>rb_limit && rb_pointer+n<rb_end+nrbpage*PAGESIZE)
++-      rb_limit=rb_pointer+n;
+++    /* if (rb_pointer>rb_end && rb_pointer+n>rb_limit && rb_pointer+n<rb_end+nrbpage*PAGESIZE)/\**\/ */
+++    /*   rb_limit=rb_pointer+n; */
++     if (rb_limit-rb_pointer>n)
++       return ((rb_pointer+=n)-n);
++     break;
++@@ -847,7 +766,7 @@ too_full_p(struct typemanager *tm) {
++ 
++   switch (tm->tm_type) {
++   case t_relocatable:
++-    return 100*(rb_limit-rb_pointer)<pf*(rb_end-rb_start);
+++    return 100*(rb_limit-rb_pointer)<pf*rb_size();
++     break;
++   case t_contiguous:
++     for (cbp=cb_pointer,k=0;cbp;cbp=cbp->cb_link) k+=cbp->cb_size;
++@@ -867,10 +786,31 @@ too_full_p(struct typemanager *tm) {
++ 
++ }
++ 
+++static inline bool
+++do_gc_p(struct typemanager *tm,fixnum n) {
+++
+++  ufixnum cpool,pp;
+++  
+++  if (!GBC_enable)
+++    return FALSE;
+++
+++  if (!sSAoptimize_maximum_pagesA || sSAoptimize_maximum_pagesA->s.s_dbind==Cnil)
+++    return tm->tm_npage+tpage(tm,n)>tm->tm_maxpage;
+++
+++  if ((cpool=get_pool())<=gc_page_min*phys_pages)
+++    return FALSE;
+++
+++  pp=gc_page_max*phys_pages;
+++
+++  return page(recent_allocation)>(1.0+gc_alloc_min-(double)ufmin(cpool,pp)/pp)*data_pages();
+++
+++}
+++  
+++      
++ static inline void *
++ alloc_after_gc(struct typemanager *tm,fixnum n) {
++ 
++-  if (tm->tm_npage+tpage(tm,n)>tm->tm_maxpage && GBC_enable) {
+++  if (do_gc_p(tm,n)) {
++ 
++     switch (jmp_gmp) {
++     case 0: /* not in gmp call*/
++@@ -911,21 +851,13 @@ add_pages(struct typemanager *tm,fixnum
++ 
++   case t_relocatable:
++ 
++-    if (rb_pointer>rb_end && m>((rb_start-heap_end)>>PAGEWIDTH)) {
++-      fprintf(stderr,"Moving relblock low before expanding relblock pages\n");
++-      fflush(stderr);
+++    if (rb_high() && m>((rb_start-heap_end)>>PAGEWIDTH)) {
+++      emsg("Moving relblock low before expanding relblock pages\n");
++       tm_table[t_relocatable].tm_adjgbccnt--;
++       GBC(t_relocatable);
++     }
++     nrbpage+=m;
++-    rb_limit+=m*PAGESIZE;
++-    if (rb_pointer>rb_end)
++-      rb_start-=m*PAGESIZE;
++-    else
++-      rb_end+=m*PAGESIZE;
++-
++-    alloc_page(-(2*nrbpage+((rb_start-heap_end)>>PAGEWIDTH)));
++-
+++    resize_hole(page(rb_start-heap_end)-(rb_high() ? m : 0),t_relocatable,1);
++     break;
++ 
++   default:
++@@ -1011,6 +943,8 @@ alloc_mem(struct typemanager *tm,fixnum
++ 
++   CHECK_INTERRUPT;
++   
+++  recent_allocation+=n;
+++
++   if ((p=alloc_from_freelist(tm,n)))
++     return p;
++   if ((p=alloc_after_gc(tm,n)))
++@@ -1135,7 +1069,7 @@ DEFUNM_NEW("ALLOCATED",object,fSallocate
++ { struct typemanager *tm=(&tm_table[t_from_type(typ)]);
++   tm = & tm_table[tm->tm_type];
++   if (tm->tm_type == t_relocatable)
++-    { tm->tm_npage = (rb_end-rb_start)>>PAGEWIDTH;
+++    { tm->tm_npage = page(rb_size());
++       tm->tm_nfree = rb_limit -rb_pointer;
++     }
++   else if (tm->tm_type == t_contiguous)
++@@ -1262,7 +1196,7 @@ object malloc_list=Cnil;
++ void
++ maybe_set_hole_from_maxpages(void) {
++   if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start)
++-    resize_hole(new_holepage,t_relocatable);
+++    resize_hole(available_pages/3,t_relocatable,0);
++ }
++ 
++ void
++@@ -1361,10 +1295,10 @@ gcl_init_alloc(void *cs_start) {
++   initial_sbrk=data_start=heap_end;
++   first_data_page=page(data_start);
++   
++-#ifdef GCL_GPROF
++-  if (new_holepage<textpage)
++-     new_holepage=textpage;
++-#endif
+++/* #ifdef GCL_GPROF */
+++/*   if (new_holepage<textpage) */
+++/*      new_holepage=textpage; */
+++/* #endif */
++ 
++   /* Unused (at present) tm_distinct flag added.  Note that if cons
++      and fixnum share page types, errors will be introduced.
++@@ -1416,7 +1350,7 @@ gcl_init_alloc(void *cs_start) {
++   set_tm_maxpage(tm_table+t_relocatable,1);
++   nrbpage=0;
++   
++-  resize_hole(new_holepage,t_relocatable);
+++  resize_hole(ufmin(phys_pages,available_pages/3),t_relocatable,0);
++ #ifdef SGC   
++   tm_table[(int)t_relocatable].tm_sgc = 50;
++ #endif
++@@ -1620,7 +1554,7 @@ DEFUN_NEW("ALLOCATED-RELOCATABLE-PAGES",
++ 
++ DEFUN_NEW("GET-HOLE-SIZE",object,fSget_hole_size,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
++   /* 0 args */
++-  RETURN1((make_fixnum(new_holepage)));
+++  RETURN1(make_fixnum((rb_start-heap_end)>>PAGEWIDTH));
++ }
++ 
++ 
++@@ -1751,9 +1685,7 @@ DEFUN_NEW("SET-STARTING-RELBLOCK-HEAP-MU
++   
++ DEFUNM_NEW("SET-HOLE-SIZE",object,fSset_hole_size,SI,1,2,NONE,OO,OO,OO,OO,(object onpages,...),"") {
++ 
++-  printf("This function is obsolete -- use SET-STARTING-HOLE-DIVISOR instead\n");
++-
++-  RETURN2(make_fixnum(new_holepage),make_fixnum(reserve_pages_for_signal_handler));
+++  RETURN2(make_fixnum((rb_start-heap_end)>>PAGEWIDTH),make_fixnum(reserve_pages_for_signal_handler));
++ 
++ }
++ 
++@@ -1811,7 +1743,7 @@ static char *baby_malloc(n)
++   if ((res +m-baby_malloc_data) > sizeof(baby_malloc_data))
++     {
++      printf("failed in baby malloc");
++-     exit(1);
+++     do_gcl_abort();
++     }
++   last_baby += m;
++   *((int *)res)=n;
++@@ -1904,18 +1836,16 @@ free(void *ptr) {
++ #endif
++       return;
++     }
++-#ifdef NOFREE_ERR
++-  return;
++-#else        
++   if (ptr!=initial_monstartup_pointer_echo) {
++     static void *old_ptr;
++     if (old_ptr==ptr) return;
++     old_ptr=ptr;
+++#ifndef NOFREE_ERR
++     FEerror("free(3) error.",0);
+++#endif
++   }
++   initial_monstartup_pointer_echo=NULL;
++   return;
++-#endif       
++ }
++  
++ void *
++--- gcl-2.6.12.orig/o/error.c
+++++ gcl-2.6.12/o/error.c
++@@ -40,8 +40,8 @@ assert_error(const char *a,unsigned l,co
++          make_simple_string(a),make_fixnum(l),
++          make_simple_string(f),make_simple_string(n));
++   else {
++-    fprintf(stderr,"The assertion %s on line %d of %s in function %s failed",a,l,f,n);
++-    exit(-1);
+++    emsg("The assertion %s on line %d of %s in function %s failed",a,l,f,n);
+++    do_gcl_abort();
++   }
++ 
++ }
++@@ -386,7 +386,7 @@ DEFUN_NEW("UNIVERSAL-ERROR-HANDLER",obje
++      for (i = 0;  i < error_fmt_string->st.st_fillp;  i++)
++        fputc(error_fmt_string->st.st_self[i],stdout);
++      printf("\nLisp initialization failed.\n");
++-     exit(0);
+++     do_gcl_abort();
++      RETURN1(x0);
++ }
++ 
++--- gcl-2.6.12.orig/o/fasldlsym.c
+++++ gcl-2.6.12/o/fasldlsym.c
++@@ -84,7 +84,7 @@ fasload(object faslfile) {
++   massert(!psystem(b));
++ 
++   if (!(dlp = dlopen(buf,RTLD_NOW))) {
++-    fputs(dlerror(),stderr);
+++    emsg(dlerror());
++     FEerror("Cannot open for dynamic link ~a",1,make_simple_string(filename));
++   }
++   
++@@ -94,7 +94,7 @@ fasload(object faslfile) {
++   memcpy(b,x->st.st_self,x->st.st_fillp);
++   b[x->st.st_fillp]=0;
++   if (!(fptr=dlsym(dlp,b))) {
++-    fputs(dlerror(),stderr);
+++    emsg(dlerror());
++     FEerror("Cannot lookup ~a in ~a",2,make_simple_string(b),make_simple_string(filename));
++   }
++ 
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -548,10 +548,8 @@ BEGIN:
++ 
++ 
++      case smm_socket:
++-       if (SOCKET_STREAM_FD(strm) < 2) {
++-         fprintf(stderr,"tried Clsing %d ! as scoket \n",SOCKET_STREAM_FD(strm));
++-         fflush(stderr);
++-       }
+++       if (SOCKET_STREAM_FD(strm) < 2)
+++         emsg("tried Closing %d ! as socket \n",SOCKET_STREAM_FD(strm));
++        else {
++ #ifdef HAVE_NSOCKET
++           if (GET_STREAM_FLAG(strm,gcl_sm_output))
++@@ -2180,10 +2178,7 @@ FFN(siLfp_input_stream)()
++ #ifdef HAVE_NSOCKET
++ 
++ #ifdef DODEBUG
++-#define dprintf(s,arg) \
++-  do {fprintf(stderr,s,arg); \
++-    fflush(stderr); }\
++-    while(0)
+++#define dprintf(s,arg) emsg(s,arg)
++ #else 
++ #define dprintf(s,arg)
++ #endif     
++@@ -2457,7 +2452,7 @@ object x=Cnil;
++          exit(0);
++          break;
++        case -1:
++-         abort();
+++         do_gcl_abort();
++          break;
++        default:
++          close_stream(y);
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -85,11 +85,9 @@ cb_print(void) {
++   struct contblock **cbpp;
++   int i;
++   
++-  for (cbpp=&cb_pointer,i=0;*cbpp;cbpp=&((*cbpp)->cb_link),i++) {
++-    fprintf(stderr,"%lu at %p\n",(*cbpp)->cb_size,*cbpp);
++-    fflush(stderr);
++-  }
++-  fprintf(stderr,"%u blocks\n",i);
+++  for (cbpp=&cb_pointer,i=0;*cbpp;cbpp=&((*cbpp)->cb_link),i++)
+++    emsg("%lu at %p\n",(*cbpp)->cb_size,*cbpp);
+++  emsg("%u blocks\n",i);
++   return 0;
++ }
++ 
++@@ -285,7 +283,6 @@ long  first_protectable_page =0;
++ static char *copy_relblock(char *p, int s);
++ 
++ long real_maxpage;
++-long new_holepage;
++ 
++ struct apage {
++   char apage_self[PAGESIZE];
++@@ -1122,7 +1119,8 @@ GBC(enum type t) {
++   }
++ 
++   ngc_thresh=fix(sSAleaf_collection_thresholdA->s.s_dbind);
++-
+++  recent_allocation=0;
+++  
++   if (in_signal_handler && t == t_relocatable)
++     error("cant gc relocatable in signal handler");
++   
++@@ -1198,7 +1196,7 @@ GBC(enum type t) {
++   
++   if (COLLECT_RELBLOCK_P) {
++     static_promotion_limit=rb_start<new_rb_start ? rb_start : new_rb_start;/*do not allow static promotion to go past this point*/
++-    setup_rb();
+++    setup_rb(0);
++   }
++   
++ #ifdef DEBUG
++@@ -1243,10 +1241,6 @@ GBC(enum type t) {
++   
++   if (COLLECT_RELBLOCK_P) {
++ 
++-    /* rb_start = new_rb_start; */
++-    /* rb_end = rb_start + nrbpage*PAGESIZE; */
++-    
++-
++ #ifdef SGC
++     if (sgc_enabled)
++       wrimap=(void *)sSAwritableA->s.s_dbind->v.v_self;
++@@ -1337,7 +1331,7 @@ GBC(enum type t) {
++             tm_table[(int)tm_table[i].tm_type].tm_name);
++     }
++     printf("contblock: %ld blocks %ld pages\n", count_contblocks(), ncbpage);
++-    printf("hole: %ld pages\n", ((rb_start-heap_end)>>PAGEWIDTH));
+++    printf("hole: %lu pages\n", (ufixnum)page(rb_start-heap_end));
++     printf("relblock: %ld bytes used %ld bytes free %ld pages\n",
++         (long)(rb_pointer - rb_start), (long)(rb_end - rb_pointer), nrbpage);
++     printf("GBC ended\n");
++@@ -1362,34 +1356,6 @@ GBC(enum type t) {
++ 
++   }
++   
++-  {
++-    extern long opt_maxpage(struct typemanager *);
++-
++-#define IGNORE_MAX_PAGES (sSAignore_maximum_pagesA ==0 || sSAignore_maximum_pagesA->s.s_dbind !=sLnil) 
++-#define OPTIMIZE_MAX_PAGES (sSAoptimize_maximum_pagesA ==0 || sSAoptimize_maximum_pagesA->s.s_dbind !=sLnil) 
++-
++-    if (IGNORE_MAX_PAGES && OPTIMIZE_MAX_PAGES)
++-      opt_maxpage(tm_table+t);
++-    
++-  }
++-
++-  /* {static int mv; */
++-  /*   if (!mv  && COLLECT_RELBLOCK_P) { */
++-  /*     mv=1; */
++-  /*     if (relb_copied) { */
++-  /*         sSAstatic_promotion_areaA->s.s_dbind=(VFUN_NARGS=4,fSmake_vector1(make_fixnum(relb_copied),make_fixnum(aet_char),Ct,make_fixnum(0))); */
++-  /*         fprintf(stderr,"Making static promotion area %lu bytes\n",relb_copied); */
++-  /*         fflush(stderr); */
++-  /*         relb_copied=0; */
++-  /*     } else { */
++-  /*         fprintf(stderr,"Releasing static promotion area\n"); */
++-  /*         fflush(stderr); */
++-  /*         sSAstatic_promotion_areaA->s.s_dbind=Cnil; */
++-  /*     } */
++-  /*     mv=0; */
++-  /*   } */
++-  /* } */
++-
++   collect_both=0;
++ 
++   END_NO_INTERRUPT;
++@@ -1449,8 +1415,8 @@ FFN(siLroom_report)(void) {
++   vs_push(make_fixnum(count_contblocks()));
++   vs_push(make_fixnum(cbgbccount));
++   vs_push(make_fixnum((rb_start-heap_end)>>PAGEWIDTH));
++-  vs_push(make_fixnum(rb_pointer - (rb_pointer<rb_end ? rb_start : rb_end)));
++-  vs_push(make_fixnum((rb_pointer<rb_end ? rb_end : (rb_end+(rb_end-rb_start))) - rb_pointer));
+++  vs_push(make_fixnum(rb_pointer - rb_begin()));
+++  vs_push(make_fixnum((rb_begin()+rb_size()) - rb_pointer));
++   vs_push(make_fixnum(nrbpage));
++   vs_push(make_fixnum(maxrbpage));
++   vs_push(make_fixnum(rbgbccount));
++@@ -1533,13 +1499,13 @@ DEFUN_NEW("CONTIGUOUS-REPORT",object,fSc
++   
++   for (i=j=0,cbpp=&cb_pointer;(*cbpp);) {
++     for (k=0,s=(*cbpp)->cb_size,p=*cbpp;*cbpp && (*cbpp)->cb_size==s;i+=(*cbpp)->cb_size,j++,k++,cbpp=&(*cbpp)->cb_link);
++-    fprintf(stderr,"%lu %lu starting at %p\n",k,s,p);
+++    emsg("%lu %lu starting at %p\n",k,s,p);
++   }
++-  fprintf(stderr,"\nTotal free %lu in %lu pieces\n\n",i,j);
+++  emsg("\nTotal free %lu in %lu pieces\n\n",i,j);
++   
++   for (i=j=k=0;k<contblock_array->v.v_fillp && (v=(void *)contblock_array->v.v_self[k]);k++,i+=v->in_use,j++) 
++-    fprintf(stderr,"%lu pages at %p\n",(unsigned long)v->in_use,v);
++-  fprintf(stderr,"\nTotal pages %lu in %lu pieces\n\n",i,j);
+++    emsg("%lu pages at %p\n",(unsigned long)v->in_use,v);
+++  emsg("\nTotal pages %lu in %lu pieces\n\n",i,j);
++   
++   for (i=j=0,v=cell_list_head;v;v=v->next)
++     if (tm->tm_type==v->type) {
++@@ -1548,13 +1514,13 @@ DEFUN_NEW("CONTIGUOUS-REPORT",object,fSc
++       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) {
++-       fprintf(stderr,"%lu code bytes at %p\n",(unsigned long)o->cfd.cfd_size,o->cfd.cfd_start);
+++       emsg("%lu code bytes at %p\n",(unsigned long)o->cfd.cfd_size,o->cfd.cfd_start);
++        i+=o->cfd.cfd_size;
++        j++;
++      }
++       }
++     }
++-  fprintf(stderr,"\nTotal code bytes %lu in %lu pieces\n",i,j);
+++  emsg("\nTotal code bytes %lu in %lu pieces\n",i,j);
++   
++   for (i=j=0,v=cell_list_head;v;v=v->next) {
++     struct typemanager *tm=tm_of(v->type);
++@@ -1616,14 +1582,14 @@ DEFUN_NEW("CONTIGUOUS-REPORT",object,fSc
++        break;
++      }
++      if (d>=data_start && d<(void *)heap_end && s) {
++-       fprintf(stderr,"%lu %s bytes at %p\n",s,tm_table[type_of(o)].tm_name,d);
+++       emsg("%lu %s bytes at %p\n",s,tm_table[type_of(o)].tm_name,d);
++        i+=s;
++        j++;
++      }
++       }
++     }
++   }
++-  fprintf(stderr,"\nTotal leaf bytes %lu in %lu pieces\n",i,j);
+++  emsg("\nTotal leaf bytes %lu in %lu pieces\n",i,j);
++   
++   return Cnil;
++ 
++--- gcl-2.6.12.orig/o/gcl_readline.d
+++++ gcl-2.6.12/o/gcl_readline.d
++@@ -42,6 +42,8 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #include <stdio.h>
++ #include <stdlib.h>
++ #include <unistd.h>
+++#include <sys/time.h>
+++#include <sys/types.h>
++ #include <string.h>
++ #include <readline/history.h>
++ 
++--- gcl-2.6.12.orig/o/gmp.c
+++++ gcl-2.6.12/o/gmp.c
++@@ -9,7 +9,7 @@ static void *gcl_gmp_realloc(void *oldme
++ {
++   unsigned int *old,*new;
++   if (!jmp_gmp) { /* No gc in alloc if jmp_gmp */
++-    if (MP_SELF(big_gcprotect)) abort();
+++    if (MP_SELF(big_gcprotect)) do_gcl_abort();
++     MP_SELF(big_gcprotect)=oldmem;
++     MP_ALLOCATED(big_gcprotect)=oldsize/MP_LIMB_SIZE;
++   }
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -204,26 +204,89 @@ get_proc_meminfo_value_in_pages(const ch
++   massert(!strncmp(c+m," kB\n",4));
++   return n>>(PAGEWIDTH-10);
++ }
++-  
+++
++ static ufixnum
++ get_phys_pages_no_malloc(char freep) {
++-  ufixnum k=freep ? 
+++
+++  return freep ? 
++     get_proc_meminfo_value_in_pages("MemFree:")+
++     get_proc_meminfo_value_in_pages("Buffers:")+
++     get_proc_meminfo_value_in_pages("Cached:") :
++     get_proc_meminfo_value_in_pages("MemTotal:");
++-  const char *e=getenv("GCL_MEM_MULTIPLE");
++-  if (e) {
++-    double d;
++-    massert(sscanf(e,"%lf",&d)==1);
++-    massert(d>=0.0);
++-    k*=d;
++-  }
++-  return k;
+++  
++ }
++ 
++ #endif
++ 
+++static ufixnum
+++get_phys_pages(char freep) {
+++
+++  return get_phys_pages_no_malloc(freep);
+++
+++}
+++
+++static void
+++get_gc_environ(void) {
+++
+++  const char *e;;
+++  
+++  mem_multiple=1.0;
+++  if ((e=getenv("GCL_MEM_MULTIPLE"))) {
+++    massert(sscanf(e,"%lf",&mem_multiple)==1);
+++    massert(mem_multiple>=0.0);
+++  }
+++
+++  gc_alloc_min=0.1;
+++  if ((e=getenv("GCL_GC_ALLOC_MIN"))) {
+++    massert(sscanf(e,"%lf",&gc_alloc_min)==1);
+++    massert(gc_alloc_min>=0.0);
+++  }
+++
+++  gc_page_min=0.5;
+++  if ((e=getenv("GCL_GC_PAGE_THRESH"))) {
+++    massert(sscanf(e,"%lf",&gc_page_min)==1);
+++    massert(gc_page_min>=0.0);
+++  }
+++
+++  gc_page_max=0.75;
+++  if ((e=getenv("GCL_GC_PAGE_MAX"))) {
+++    massert(sscanf(e,"%lf",&gc_page_max)==1);
+++    massert(gc_page_max>=0.0);
+++  }
+++
+++  multiprocess_memory_pool=(e=getenv("GCL_MULTIPROCESS_MEMORY_POOL")) && *e;
+++
+++  wait_on_abort=0;
+++  if ((e=getenv("GCL_WAIT_ON_ABORT")))
+++    massert(sscanf(e,"%lu",&wait_on_abort)==1);
+++  
+++}
+++
+++static void
+++setup_maxpages(double scale) {
+++
+++  void *beg=data_start ? data_start : sbrk(0);
+++  ufixnum maxpages=real_maxpage-page(beg),npages,i;
+++
+++  for (npages=0,i=t_start;i<t_other;i++)
+++    npages+=tm_table[i].tm_maxpage=tm_table[i].tm_npage;
+++
+++  massert(scale*maxpages>=npages);
+++
+++  maxpages*=scale;
+++  phys_pages*=scale;
+++  real_maxpage=maxpages+page(beg);
+++  
+++  resv_pages=available_pages=0;
+++  available_pages=check_avail_pages();
+++  
+++  resv_pages=40<available_pages ? 40 : available_pages;
+++  available_pages-=resv_pages;
+++  
+++  recent_allocation=0;
+++
+++}
+++
++ void *initial_sbrk=NULL;
++ 
++ int
++@@ -231,7 +294,6 @@ update_real_maxpage(void) {
++ 
++   ufixnum i,j;
++   void *end,*cur,*beg;
++-  ufixnum maxpages;
++ #ifdef __MINGW32__
++   static fixnum n;
++ 
++@@ -241,8 +303,6 @@ update_real_maxpage(void) {
++   }
++ #endif
++ 
++-  phys_pages=get_phys_pages_no_malloc(0);
++-
++   massert(cur=sbrk(0));
++   beg=data_start ? data_start : cur;
++   for (i=0,j=(1L<<log_maxpage_bound);j>PAGESIZE;j>>=1)
++@@ -253,44 +313,11 @@ update_real_maxpage(void) {
++       }
++   massert(!mbrk(cur));
++ 
++-/*   phys_pages=get_phys_pages_no_malloc(0); */
++-
++-/* #ifdef BRK_DOES_NOT_GUARANTEE_ALLOCATION */
++-/*   if (phys_pages>0 && real_maxpage>phys_pages+page(beg)) real_maxpage=phys_pages+page(beg); */
++-/* #endif */
+++  phys_pages=ufmin(get_phys_pages(0)+page(beg),real_maxpage)-page(beg);
++ 
++-  maxpages=real_maxpage-page(beg);
++-
++-  phys_pages=phys_pages>maxpages ? maxpages : phys_pages;
++-
++-  resv_pages=available_pages=0;
++-  available_pages=check_avail_pages();
+++  get_gc_environ();
+++  setup_maxpages(mem_multiple);
++   
++-  for (i=t_start;i<t_other;i++)
++-    massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage));
++-
++-  resv_pages=40<available_pages ? 40 : available_pages;
++-  available_pages-=resv_pages;
++-  
++-  if (sSAoptimize_maximum_pagesA && sSAoptimize_maximum_pagesA->s.s_dbind!=Cnil) {
++-
++-    for (i=t_start,j=0;i<t_relocatable;i++)
++-      j+=tm_table[i].tm_maxpage;
++-    
++-    if (j<phys_pages) {
++-      for (i=t_start;i<t_relocatable;i++)
++-     if (tm_table[i].tm_maxpage)
++-       massert(set_tm_maxpage(tm_table+i,((double)0.7*phys_pages/j)*tm_table[i].tm_maxpage));
++-      set_tm_maxpage(tm_table+t_relocatable,(phys_pages+(tm_table[t_relocatable].tm_maxpage<<1)-sum_maxpages())>>1);
++-    }
++-    
++-    new_holepage=0;
++-    for (i=t_start;i<t_relocatable;i++)
++-      new_holepage+=tm_table[i].tm_maxpage-tm_table[i].tm_npage;
++-    
++-  } else
++-    new_holepage=available_pages/starting_hole_div;
++-
++   return 0;
++ 
++ }
++@@ -298,12 +325,11 @@ update_real_maxpage(void) {
++ static int
++ minimize_image(void) {
++ 
++-  extern long new_holepage;
++   fixnum i;
++   
++   empty_relblock();
++   nrbpage=0;
++-  resize_hole(0,t_relocatable);
+++  resize_hole(0,t_relocatable,0);
++ 
++ #ifdef GCL_GPROF
++   gprof_cleanup();
++@@ -330,10 +356,10 @@ DEFUN_NEW("SET-LOG-MAXPAGE-BOUND",object
++   l=l<def ? l : def;
++   end=data_start+(1L<<l)-PAGESIZE;
++   GBC(t_relocatable);
++-  dend=heap_end+PAGESIZE+CEI(rb_pointer-(rb_pointer<rb_end ? rb_start : rb_end),PAGESIZE);
+++  dend=heap_end+PAGESIZE+CEI(rb_pointer-rb_begin(),PAGESIZE);
++   if (end >= dend) {
++     minimize_image();
++-    log_maxpage_bound=l;
+++    log_maxpage_bound=l;/*FIXME maybe this should be under mem_multiple, not over*/
++     update_real_maxpage();
++     maybe_set_hole_from_maxpages();
++   }
++@@ -384,6 +410,43 @@ gcl_mprotect(void *v,unsigned long l,int
++ 
++ DEFVAR("*CODE-BLOCK-RESERVE*",sSAcode_block_reserveA,SI,Cnil,"");
++ 
+++#define HAVE_GCL_CLEANUP
+++
+++void
+++gcl_cleanup(int gc) {
+++
+++  if (getenv("GCL_WAIT"))
+++    sleep(30);
+++  
+++#ifdef CLEANUP_CODE
+++  CLEANUP_CODE
+++#elif defined(USE_CLEANUP)
+++    {extern void _cleanup(void);_cleanup();}
+++#endif
+++
+++#ifdef GCL_GPROF
+++  gprof_cleanup();
+++#endif
+++
+++  if (gc) {
+++
+++    saving_system=TRUE;
+++    GBC(t_other);
+++    saving_system=FALSE;
+++    
+++    minimize_image();
+++    
+++    raw_image=FALSE;
+++    cs_org=0;
+++    initial_sbrk=core_end;
+++
+++  }
+++
+++  close_pool();
+++
+++}
+++
+++
++ int
++ main(int argc, char **argv, char **envp) {
++ 
++@@ -497,6 +560,14 @@ void install_segmentation_catcher(void)
++   (void) gcl_signal(SIGBUS,segmentation_catcher);
++ }
++ 
+++void
+++do_gcl_abort(void) {
+++  if (wait_on_abort)
+++    sleep(wait_on_abort);
+++  gcl_cleanup(0);
+++  abort();
+++}
+++
++ int catch_fatal=1;
++ void
++ error(char *s)
++@@ -512,7 +583,7 @@ error(char *s)
++         FEerror("Caught fatal error [memory may be damaged]",0); }
++      printf("\nUnrecoverable error: %s.\n", s);
++      fflush(stdout);
++-     abort();
+++     do_gcl_abort();
++ }
++ 
++ static void
++@@ -529,7 +600,7 @@ initlisp(void) {
++          || NULL_OR_ON_C_STACK(pagetoinfo(first_data_page))
++          || NULL_OR_ON_C_STACK(core_end-1)) {
++        /* check person has correct definition of above */
++-       fprintf(stderr,"%p %d "
+++       emsg("%p %d "
++ #if defined(IM_FIX_BASE)
++                "%p %d %p %d "
++ #endif
++@@ -941,7 +1012,7 @@ static void
++ FFN(siLinitialization_failure)(void) {
++   check_arg(0);
++   printf("lisp initialization failed\n");
++-  exit(0);
+++  do_gcl_abort();
++ }
++ 
++ DEFUNO_NEW("IDENTITY",object,fLidentity,LISP
++@@ -970,7 +1041,6 @@ DEFUN_NEW("LISP-IMPLEMENTATION-VERSION",
++      RETURN1((make_simple_string(LISP_IMPLEMENTATION_VERSION)));
++ }
++ 
++-
++ static void
++ FFN(siLsave_system)(void) {
++   
++@@ -990,12 +1060,6 @@ FFN(siLsave_system)(void) {
++   DO_BEFORE_SAVE
++ #endif       
++     
++-  saving_system = TRUE;
++-
++-  minimize_image();
++-
++-  saving_system = FALSE;
++-
++   siLsave();
++ 
++ }
++--- gcl-2.6.12.orig/o/makefile
+++++ gcl-2.6.12/o/makefile
++@@ -91,6 +91,9 @@ $(DECL): $(HDIR)/make-decl.h $(INI_FILES
++ grab_defs: grab_defs.c
++      ${CC} $(OFLAGS) -o grab_defs  grab_defs.c
++ 
+++wpool: wpool.c
+++     $(CC) $(CFLAGS) $(DEFS) -o $@ $<
+++
++ $(GCLIB): ${ALIB} 
++      rm -f gcllib.a
++      $(AR) gcllib.a ${ALIB}
++@@ -98,6 +101,6 @@ $(GCLIB): ${ALIB}
++ 
++ clean:
++      rm -f $(OBJS) ${ALIB} new_init.o  $(LAST_FILE) $(FIRST_FILE) *.a grab_defs$(EXE) *.ini tmpx foo.c
++-     rm -f  cmpinclude.h new_init.c $(DECL) def undef udef.h void.h TAGS boot.h
+++     rm -f  cmpinclude.h new_init.c $(DECL) def undef udef.h void.h TAGS boot.h wpool
++ 
++ .INTERMEDIATE: $(patsubst %.d,%.c,$(shell ls -1 *.d))
++--- gcl-2.6.12.orig/o/mingwin.c
+++++ gcl-2.6.12/o/mingwin.c
++@@ -8,10 +8,7 @@
++ #include "stdlib.h"
++ 
++ #ifdef DODEBUG
++-#define dprintf(s,arg) \
++-  do {fprintf(stderr,s,arg); \
++-    fflush(stderr); }\
++-    while(0)
+++#define dprintf(s,arg) emsg(s,arg)
++ #else 
++ #define dprintf(s,arg)
++ #endif     
++@@ -237,8 +234,7 @@ InitSockets()
++       * Initialize the winsock library and check the version number.
++       */
++      if ((*winSock.WSAStartup)(MAKEWORD(2,2), &wsaData) != 0) {
++-       fprintf(stderr,"unloading");
++-       fflush(stderr);
+++       emsg("unloading");
++          goto unloadLibrary;
++      }
++ #ifdef WSA_VERSION_REQD
++@@ -380,10 +376,8 @@ CreateSocketAddress(sockaddrPtr, host, p
++ #ifdef DEBUG
++ static void myerr(char *s,int d)
++ {
++-  if (0) {
++-  fprintf(stderr,s,d);
++-  fflush(stderr);
++-  }
+++  if (0)
+++    emsg(s,d);
++ 
++ }
++ #else
++@@ -769,8 +763,7 @@ sigint()
++ #if 0
++ BOOL WINAPI inthandler(DWORD i)
++ {
++-  fprintf(stderr,"in handler %d",i);
++-      fflush(stderr); 
+++  emsg("in handler %d",i);
++   terminal_interrupt(1);
++   return TRUE;
++ }
++@@ -812,14 +805,14 @@ void sigterm()
++ #ifdef SIGABRT
++ void sigabrt()
++ {
++-  exit(SIGABRT);
+++  do_gcl_abort();
++ }
++ #endif
++ 
++ 
++ void sigkill()
++ {
++-  exit(SIGKILL);
+++  do_gcl_abort();
++ }
++ 
++ 
++--- gcl-2.6.12.orig/o/nsocket.c
+++++ gcl-2.6.12/o/nsocket.c
++@@ -4,10 +4,7 @@
++ #include <string.h>
++ 
++ #ifdef DODEBUG
++-#define dprintf(s,arg) \
++-  do {fprintf(stderr,s,arg); \
++-    fflush(stderr); }\
++-    while(0)
+++#define dprintf(s,arg) emsg(s,arg)
++ #else 
++ #define dprintf(s,arg)
++ #endif     
++@@ -65,7 +62,7 @@
++ #endif
++ 
++ #define VOID void
++-#define ERROR_MESSAGE(msg)     do{ fprintf(stderr,msg); exit(1) ; } while(0)    
+++#define ERROR_MESSAGE(msg)     do{ emsg(msg); do_gcl_abort() ; } while(0)    
++ 
++ #ifdef STAND
++ 
++@@ -87,7 +84,7 @@ main(argc,argv)
++   fd = doConnect(argv[1],atoi(argv[2]));
++   if (fd < 0) {
++     perror("cant connect");
++-    exit(1);
+++    do_gcl_abort();
++   }
++ 
++   while (1) { int high;
++@@ -512,8 +509,7 @@ getOneChar(FILE *fp)
++   int high;
++   /*  fprintf(stderr,"<socket 0x%x>",fp);
++   fflush(stderr); */
++-  fprintf(stderr,"in getOneChar, fd=%d,fp=%p",fd,fp);
++-  fflush(stderr);
+++  emsg("in getOneChar, fd=%d,fp=%p",fd,fp);
++   if (fd == 0)
++    { joe(fd);
++    return -1;
++@@ -529,16 +525,14 @@ getOneChar(FILE *fp)
++   if (high > 0)
++     {
++       int ch ;
++-      fprintf(stderr,"in getOneChar, fd=%d,fp=%p",fd,fp);
++-      fflush(stderr);
+++      emsg("in getOneChar, fd=%d,fp=%p",fd,fp);
++       ch = getc(fp);
++       if ( ch != EOF || feof(fp) ) {
++      /*      fprintf(stderr,"< 0x%x returning %d,%c>\n",fp,ch,ch);
++       fflush(stderr);
++       */
++       }
++-      fprintf(stderr,"in getOneChar, ch= %c,%d\n",ch,ch);
++-      fflush(stderr);
+++      emsg("in getOneChar, ch= %c,%d\n",ch,ch);
++       CHECK_INTERRUPT;        
++       if (ch != EOF) return ch;
++       if (feof(fp)) return EOF;
++@@ -548,10 +542,7 @@ getOneChar(FILE *fp)
++ }
++ 
++ #ifdef DODEBUG
++-#define dprintf(s,arg) \
++-  do {fprintf(stderr,s,arg); \
++-    fflush(stderr); }\
++-    while(0)
+++#define dprintf(s,arg) emsg(s,arg)
++ #else 
++ #define dprintf(s,arg)
++ #endif     
++--- gcl-2.6.12.orig/o/prelink.c
+++++ gcl-2.6.12/o/prelink.c
++@@ -2,6 +2,7 @@
++ 
++ #include "include.h"
++ 
+++#if !defined(__MINGW32__) && !defined(__CYGWIN__)
++ extern FILE *stdin __attribute__((weak));
++ extern FILE *stderr __attribute__((weak));
++ extern FILE *stdout __attribute__((weak));
++@@ -13,6 +14,7 @@ extern char         *rl_readline_name __attribu
++ extern rl_compentry_func_t *rl_completion_entry_function __attribute__((weak));
++ extern const char *rl_readline_name __attribute__((weak));
++ #endif
+++#endif
++ 
++ void
++ prelink_init(void) {
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -390,14 +390,14 @@ edit_double(int n, double d, int *sp, ch
++ 
++   truncate_double(b,d,n!=7);
++ 
++-  if (isdigit(b[0])) {
+++  if (isdigit((int)b[0])) {
++     b[1]=b[0];
++     (*ep)++;
++   }
++   if (b[2]=='0') (*ep)++;
++   b[2] = b[1];
++   p = b + 2;
++-  for (i=0;i<n && i<FPRC+1 && isdigit(p[i]);i++)
+++  for (i=0;i<n && i<FPRC+1 && isdigit((int)p[i]);i++)
++       s[i] = p[i];
++   for (;i<n;i++)
++     s[i] = '0';
++--- gcl-2.6.12.orig/o/regexp.c
+++++ gcl-2.6.12/o/regexp.c
++@@ -553,8 +553,8 @@ regatom(int *flagp)
++                      *flagp |= HASWIDTH|SIMPLE;
++              }
++               if (regcp - buf > sizeof(buf))
++-                { fprintf(stderr,"wow that is badly defined regexp..");
++-                  exit(1);}
+++                { emsg("wow that is badly defined regexp..");
+++                  do_gcl_abort();}
++              regcp --;
++              { char *p=buf;
++ 
++@@ -567,8 +567,8 @@ regatom(int *flagp)
++                while (p < regcp)
++                  { result[*(unsigned char *)p] = matches;
++                    if (case_fold_search)
++-                     {result[tolower(*p)] = matches;
++-                      result[toupper(*p)] = matches; p++;}
+++                     {result[tolower((int)*p)] = matches;
+++                       result[toupper((int)*p)] = matches; p++;}
++                    else
++                    result[*(unsigned char *)p++] = matches;
++                    
++@@ -912,9 +912,9 @@ regexec(register regexp *prog, register
++      if (prog->regstart != '\0')
++              /* We know what char it must start with. */
++        { if (case_fold_search)
++-           {char ch = tolower(prog->regstart);
+++           {char ch = tolower((int)prog->regstart);
++             while (*s)
++-              { if (tolower(*s)==ch)
+++              { if (tolower((int)*s)==ch)
++                   {if (regtry(prog, s))
++                      RETURN_VAL(1);}
++                 s++;}}
++@@ -1025,12 +1025,12 @@ regmatch(char *prog)
++      scan = prog;
++ #ifdef DEBUG
++      if (scan != NULL && regnarrate)
++-             fprintf(stderr, "%s(\n", regprop(scan));
+++             emsg("%s(\n", regprop(scan));
++ #endif
++      while (scan != NULL) {
++ #ifdef DEBUG
++              if (regnarrate)
++-                     fprintf(stderr, "%s...\n", regprop(scan));
+++                     emsg("%s...\n", regprop(scan));
++ #endif
++              next = regnext(scan);
++ 
++@@ -1055,7 +1055,7 @@ regmatch(char *prog)
++                              opnd = OPERAND(scan);
++                              if (case_fold_search)
++                              while (*opnd )
++-                               { if (tolower(*opnd) != tolower(*ch))
+++                               { if (tolower((int)*opnd) != tolower((int)*ch))
++                                     return 0;
++                                  else { ch++; opnd++;}}
++                              else
++@@ -1175,7 +1175,7 @@ regmatch(char *prog)
++                              if (OP(next) == EXACTLY)
++                                      nextch = *OPERAND(next);
++                              if (case_fold_search)
++-                               nextch = tolower(nextch);
+++                               nextch = tolower((int)nextch);
++                              min = (OP(scan) == STAR) ? 0 : 1;
++                              save = reginput;
++                              no = regrepeat(OPERAND(scan));
++@@ -1184,7 +1184,7 @@ regmatch(char *prog)
++                                      if (nextch == '\0' ||
++                                          *reginput == nextch
++                                          || (case_fold_search &&
++-                                           tolower(*reginput) == nextch))
+++                                             tolower((int)*reginput) == nextch))
++                                              if (regmatch(next))
++                                                      return(1);
++                                      /* Couldn't or didn't -- back up. */
++@@ -1237,8 +1237,8 @@ regrepeat(char *p)
++      case EXACTLY:
++              { char ch = *opnd;
++              if (case_fold_search)
++-               { ch = tolower(*opnd);
++-                 while (ch == tolower(*scan))
+++               { ch = tolower((int)*opnd);
+++                 while (ch == tolower((int)*scan))
++                    {
++                      count++;
++                      scan++;}}
++@@ -1488,7 +1488,7 @@ min_initial_branch_length(regexp *x, uns
++     { op = OP(s);
++       next = (s) + NEXT(s);
++       if (op != END && op != BRANCH)
++-     abort();
+++     do_gcl_abort();
++       s = s+3;
++       { int this = 0;
++      int anythis =0;
++@@ -1509,8 +1509,8 @@ min_initial_branch_length(regexp *x, uns
++                  n--;
++                  while(1)
++                    { if (case_fold_search)
++-                       {MINIMIZE(buf[tolower(*ss)],n);
++-                        MINIMIZE(buf[toupper(*ss)],n);
+++                       {MINIMIZE(buf[tolower((int)*ss)],n);
+++                         MINIMIZE(buf[toupper((int)*ss)],n);
++                        }
++                      else
++                        { MINIMIZE(buf[*(unsigned char *)ss],n);}
++@@ -1575,7 +1575,7 @@ min_initial_branch_length(regexp *x, uns
++ void
++ regerror(char *s)
++ {
++-    fprintf(stderr, "regexp error %s\n", s);
+++    emsg("regexp error %s\n", s);
++ }
++ #endif
++   
++--- gcl-2.6.12.orig/o/run_process.c
+++++ gcl-2.6.12/o/run_process.c
++@@ -140,19 +140,19 @@ void run_process ( char *name )
++     if ( ! CloseHandle ( hChildStderrWrite ) ) DisplayError ( "CloseHandle: Error write" );
++ 
++ #if 0
++-    fprintf ( stderr, "Before write\n" );
+++    emsg("Before write\n" );
++     WriteFile ( hChildStdinWrite, chBuf, strlen ( chBuf ), 
++                &dwWritten, NULL);
++     FlushFileBuffers ( hChildStdinWrite );
++     FlushFileBuffers ( hChildStdoutRead );
++-    fprintf ( stderr, "Before read\n" );
+++    emsg("Before read\n" );
++     if ( ! ReadFile( hChildStdoutRead, chBuf, 2, &dwRead, NULL ) || 
++          dwRead == 0 ) {
++         DisplayError ( "Nothing read\n" );
++     } else {
++-        fprintf ( stderr, "Got Back: %s\n", chBuf );
+++        emsg("Got Back: %s\n", chBuf );
++     }
++-    fprintf ( stderr, "After read\n" );
+++    emsg("After read\n" );
++ #endif
++ 
++     
++@@ -168,8 +168,7 @@ void run_process ( char *name )
++         fprintf ( ifp, "button .wibble\n" );
++         fflush (ifp);
++         fgets ( buf, 2, ofp );
++-        fprintf ( stderr, 
++-                  "run_process: ofd = %x, ofp = %x, ifd = %x, ifp = %x, buf[0] = %x, buf[1] = %x, buf = %s\n",
+++        emsg("run_process: ofd = %x, ofp = %x, ifd = %x, ifp = %x, buf[0] = %x, buf[1] = %x, buf = %s\n",
++                   ofd, ofp, ifd, ifp, buf[0], buf[1], buf );
++     }
++ #endif
++@@ -276,7 +275,7 @@ void siLrun_process()
++         strcat ( cmdline, " ");
++       }
++       strcat ( cmdline,  vs_base[i]->st.st_self );
++-      fprintf ( stderr, "siLrun_process: cmdline=%s\n", cmdline );
+++      emsg("siLrun_process: cmdline=%s\n", cmdline );
++       argc++;
++     }
++     signals_allowed = sig_at_read;
++@@ -540,12 +539,11 @@ char **argv;
++       massert(dup(fdin)>=0);
++       close(1);
++       massert(dup(fdout)>=0);
++-      fprintf(stderr, "\n***** Spawning process %s ", pname);
+++      emsg("\n***** Spawning process %s ", pname);
++       if (execvp(pname, argv) == -1)
++      {
++-       fprintf(stderr, "\n***** Error in process spawning *******");
++-       fflush(stderr);
++-       exit(1);
+++       emsg("\n***** Error in process spawning *******");
+++       do_gcl_abort();
++      }
++     }
++ 
++@@ -604,7 +602,7 @@ getpagesize()
++ }
++ 
++ dlclose()
++-{fprintf(stderr,"calling 'dl' function sun did not supply..exitting") ;exit(1);}
+++{emsg("calling 'dl' function sun did not supply..exitting") ;do_gcl_abort();}
++ dgettext()
++ {dlclose();}
++ dlopen()
++--- gcl-2.6.12.orig/o/save.c
+++++ gcl-2.6.12/o/save.c
++@@ -20,21 +20,12 @@ LFD(siLsave)(void) {
++ 
++   char filename[256];
++   extern char *kcl_self;
++-  extern void *initial_sbrk;
++   
++   check_arg(1);
++   check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++   coerce_to_filename(vs_base[0], filename);
++ 
++-#ifdef CLEANUP_CODE
++-  CLEANUP_CODE
++-#elif defined(USE_CLEANUP)
++-    _cleanup();
++-#endif
++-  
++-  raw_image=FALSE;
++-  cs_org=0;
++-  initial_sbrk=core_end;
+++  gcl_cleanup(1);
++   
++ #ifdef MEMORY_SAVE
++   MEMORY_SAVE(kcl_self,filename);
++--- gcl-2.6.12.orig/o/sfaslcoff.c
+++++ gcl-2.6.12/o/sfaslcoff.c
++@@ -175,7 +175,7 @@ relocate_symbols(struct syment *sym,stru
++       if ((answ=find_sym_ptable(s))) 
++      sym->n_value=answ->address;
++       else
++-     massert(!fprintf(stderr,"Unrelocated non-local symbol: %s\n",s));
+++     massert(!emsg("Unrelocated non-local symbol: %s\n",s));
++ 
++       if (c)
++      sym->n.n_name[8]=c;
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -181,7 +181,7 @@ relocate(Sym *sym1,void *v,ul a,ul start
++ #include RELOC_H
++ 
++   default:
++-    fprintf(stderr, "Unknown reloc type %lu\n", tp);
+++    emsg("Unknown reloc type %lu\n", tp);
++     massert(tp&~tp);
++ 
++   }
++@@ -234,7 +234,7 @@ relocate_symbols(Sym *sym,Sym *syme,Shdr
++       sym->st_value=a->address;
++ 
++     else if (ELF_ST_BIND(sym->st_info)!=STB_LOCAL)
++-      massert(!fprintf(stderr,"Unrelocated non-local symbol: %s\n",st1+sym->st_name));
+++      massert(!emsg("Unrelocated non-local symbol: %s\n",st1+sym->st_name));
++      
++   }
++ 
++--- gcl-2.6.12.orig/o/sfasli.c
+++++ gcl-2.6.12/o/sfasli.c
++@@ -146,6 +146,15 @@ use_symbols(double d,...) {
++ 
++ }
++ #endif
+++#else
+++int
+++use_symbols(double d,...) {
+++
+++  d=sin(d)+cos(d);
+++
+++  return (int)d;
+++
+++}
++ #endif
++ 
++ void
++--- gcl-2.6.12.orig/o/sfaslmacho.c
+++++ gcl-2.6.12/o/sfaslmacho.c
++@@ -144,7 +144,7 @@ relocate_symbols(struct nlist *n1,struct
++     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))
++-      massert(!fprintf(stderr,"Unrelocated non-local symbol: %s\n",st1+n->n_un.n_strx));
+++      massert(!emsg("Unrelocated non-local symbol: %s\n",st1+n->n_un.n_strx));
++ 
++   return 0;
++   
++--- gcl-2.6.12.orig/o/sfaslmacosx.c
+++++ gcl-2.6.12/o/sfaslmacosx.c
++@@ -37,17 +37,7 @@ typedef int (*func) ();
++ /* Externalize the command line used to build loadable object files (a.k.a. bundles).  */
++ object sSAmacosx_ldcmdA = 0L;
++ 
++-static void sfasl_error (char *format, ...)
++-{
++-    va_list ap;
++-    
++-    va_start (ap, format);
++-    fprintf (stderr, "fasload: ");
++-    vfprintf (stderr, format, ap);
++-    fprintf (stderr, "\n");
++-    va_end (ap);
++-    exit (1);
++-}
+++#define sfasl_error(a,b...) {emsg(a,b);do_gcl_abort();}
++ 
++ /* static void get_init_name (object faslfile, char *init_fun) */
++ /* { */
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -266,32 +266,32 @@ overlap_check(struct contblock *t1,struc
++ 
++     if (!inheap(t1)) {
++       fprintf(stderr,"%p not in heap\n",t1);
++-      exit(1);
+++      do_gcl_abort();
++     }
++ 
++     for (p=t2;p;p=p->cb_link) {
++ 
++       if (!inheap(p)) {
++      fprintf(stderr,"%p not in heap\n",t1);
++-     exit(1);
+++     do_gcl_abort();
++       }
++ 
++       if ((p<=t1 && (void *)p+p->cb_size>(void *)t1) ||
++        (t1<=p && (void *)t1+t1->cb_size>(void *)p)) {
++      fprintf(stderr,"Overlap %u %p  %u %p\n",t1->cb_size,t1,p->cb_size,p);
++-     exit(1);
+++     do_gcl_abort();
++       }
++       
++       if (p==p->cb_link) {
++      fprintf(stderr,"circle detected at %p\n",p);
++-     exit(1);
+++     do_gcl_abort();
++       }
++ 
++     }
++      
++     if (t1==t1->cb_link) {
++       fprintf(stderr,"circle detected at %p\n",t1);
++-      exit(1);
+++      do_gcl_abort();
++     }
++ 
++   }
++@@ -365,7 +365,7 @@ memprotect_handler_test(int sig, long co
++ 
++   if (memprotect_handler_invocations) {
++     memprotect_result=memprotect_multiple_invocations;
++-    exit(-1);
+++    do_gcl_abort();
++   }
++   memprotect_handler_invocations=1;
++   if (faddr!=memprotect_test_address)
++@@ -387,7 +387,7 @@ memprotect_test(void) {
++     return memprotect_result!=memprotect_success;
++   if (atexit(memprotect_print)) {
++     fprintf(stderr,"Cannot setup memprotect_print on exit\n");
++-    exit(-1);
+++    do_gcl_abort();
++   }
++ 
++   if (!(b1=alloca(2*p))) {
++--- gcl-2.6.12.orig/o/sockets.c
+++++ gcl-2.6.12/o/sockets.c
++@@ -70,7 +70,7 @@ int w32_socket_init(void)
++     } else {
++         if (WSAStartup(0x0101, &WSAData)) {
++             w32_socket_initialisations = 0;
++-            fprintf ( stderr, "WSAStartup failed\n" );
+++            emsg("WSAStartup failed\n" );
++             WSACleanup();
++             rv = -1;
++         }
++@@ -158,13 +158,9 @@ the socket.  If PORT is zero do automati
++ #endif                
++                 (cRetry < BIND_MAX_RETRY));
++       if (0)
++-     {
++-       fprintf(stderr,
++-  "\nAssigned automatic address to socket : port(%d), errno(%d), bind_rc(%d), iLastAddressUsed(%d), retries(%d)\n"
+++       emsg("\nAssigned automatic address to socket : port(%d), errno(%d), bind_rc(%d), iLastAddressUsed(%d), retries(%d)\n"
++                , addr.sin_port, errno, rc, iLastAddressUsed, cRetry
++                );
++-       fflush(stderr);
++-     }
++     }
++   else
++     {
++@@ -221,8 +217,7 @@ and returns (list* named_socket fd name1
++   fd = accept(fix(car(named_socket)) , (struct sockaddr *)&addr, &n);
++   if (fd < 0)
++     {
++-      perror("ERROR ! accept on socket failed in sock_accept_connection");
++-      fflush(stderr);
+++      emsg("ERROR ! accept on socket failed in sock_accept_connection");
++       return Cnil;
++     }
++   x = alloc_simple_string(sizeof(struct connection_state));
++@@ -432,7 +427,7 @@ fill pointer, and this will be advanced.
++ 
++ 
++     break;
++-  default: abort();
+++  default: do_gcl_abort();
++   }
++   
++   switch (t) {
++@@ -446,7 +441,7 @@ fill pointer, and this will be advanced.
++      if (downcase)
++      while (--len>=0)
++        { char c = *p++;
++-      c=tolower(c);
+++      c=tolower((int)c);
++       if(needs_quoting[(unsigned char)c])
++         PUSH('\\');
++       PUSH(c);}
++--- gcl-2.6.12.orig/o/unexelf.c
+++++ gcl-2.6.12/o/unexelf.c
++@@ -401,7 +401,7 @@ Filesz      Memsz       Flags       Alig
++    Instead we read the whole file, modify it, and write it out.  */
++ 
++ #ifndef emacs
++-#define fatal(a, b...) fprintf (stderr, a, ##b), exit (1)
+++#define fatal(a, b...) emsg(a,##b),do_gcl_abort()
++ #else
++ #include "config.h"
++ extern void fatal (char *, ...);
++@@ -604,7 +604,7 @@ find_section (char *name, char *section_
++   for (idx = 1; idx < old_file_h->e_shnum; idx++)
++     {
++ #ifdef DEBUG
++-      fprintf (stderr, "Looking for %s - found %s\n", name,
+++      emsg("Looking for %s - found %s\n", name,
++             section_names + OLD_SECTION_H (idx).sh_name);
++ #endif
++       if (!strcmp (section_names + OLD_SECTION_H (idx).sh_name,
++@@ -752,13 +752,13 @@ unexec (char *new_name, char *old_name,
++     (new_data2_addr - OLD_SECTION_H (old_data_index).sh_addr);
++ 
++ #ifdef DEBUG
++-  fprintf (stderr, "old_bss_index %d\n", old_bss_index);
++-  fprintf (stderr, "old_bss_addr %x\n", old_bss_addr);
++-  fprintf (stderr, "old_bss_size %x\n", old_bss_size);
++-  fprintf (stderr, "new_bss_addr %x\n", new_bss_addr);
++-  fprintf (stderr, "new_data2_addr %x\n", new_data2_addr);
++-  fprintf (stderr, "new_data2_size %x\n", new_data2_size);
++-  fprintf (stderr, "new_data2_offset %x\n", new_data2_offset);
+++  emsg("old_bss_index %d\n", old_bss_index);
+++  emsg("old_bss_addr %x\n", old_bss_addr);
+++  emsg("old_bss_size %x\n", old_bss_size);
+++  emsg("new_bss_addr %x\n", new_bss_addr);
+++  emsg("new_data2_addr %x\n", new_data2_addr);
+++  emsg("new_data2_size %x\n", new_data2_size);
+++  emsg("new_data2_offset %x\n", new_data2_offset);
++ #endif
++ 
++   if ((unsigned) new_bss_addr < (unsigned) old_bss_addr + old_bss_size)
++@@ -806,10 +806,10 @@ unexec (char *new_name, char *old_name,
++   new_file_h->e_shnum += 1;
++ 
++ #ifdef DEBUG
++-  fprintf (stderr, "Old section offset %x\n", old_file_h->e_shoff);
++-  fprintf (stderr, "Old section count %d\n", old_file_h->e_shnum);
++-  fprintf (stderr, "New section offset %x\n", new_file_h->e_shoff);
++-  fprintf (stderr, "New section count %d\n", new_file_h->e_shnum);
+++  emsg("Old section offset %x\n", old_file_h->e_shoff);
+++  emsg("Old section count %d\n", old_file_h->e_shnum);
+++  emsg("New section offset %x\n", new_file_h->e_shoff);
+++  emsg("New section count %d\n", new_file_h->e_shnum);
++ #endif
++ 
++   /* Fix up a new program header.  Extend the writable data segment so
++--- gcl-2.6.12.orig/o/unexmacosx.c
+++++ gcl-2.6.12/o/unexmacosx.c
++@@ -299,18 +299,7 @@ unexec_copy (off_t dest, off_t src, ssiz
++ 
++ /* Debugging and informational messages routines.  */
++ 
++-static void
++-unexec_error (char *format, ...)
++-{
++-  va_list ap;
++-
++-  va_start (ap, format);
++-  fprintf (stderr, "unexec: ");
++-  vfprintf (stderr, format, ap);
++-  fprintf (stderr, "\n");
++-  va_end (ap);
++-  exit (1);
++-}
+++#define unexec_error(a,b...) emsg(a,##b),do_gcl_abort()
++ 
++ /* More informational messages routines.  */
++ 
++--- gcl-2.6.12.orig/o/unexnt.c
+++++ gcl-2.6.12/o/unexnt.c
++@@ -108,7 +108,7 @@ void recreate_heap1()
++   if (GetModuleFileName (NULL, executable_path, MAX_PATH) == 0) 
++     {
++       printf ("Failed to find path for executable.\n");
++-      exit (1);
+++      do_gcl_abort();
++     }
++     recreate_heap (executable_path);
++   }
++@@ -156,7 +156,7 @@ _start (void)
++       if (GetModuleFileName (NULL, executable_path, MAX_PATH) == 0) 
++      {
++        printf ("Failed to find path for executable.\n");
++-       exit (1);
+++       do_gcl_abort();
++      }
++ 
++ #if 1
++@@ -214,7 +214,7 @@ unexec (char *new_name, char *old_name,
++      void *entry_address)
++ {
++ #ifdef __CYGWIN32__
++-  file_data in_file, out_file;
+++  static file_data in_file, out_file;
++   char out_filename[MAX_PATH], in_filename[MAX_PATH];
++   char filename[MAX_PATH];
++   unsigned long size;
++@@ -244,7 +244,7 @@ unexec (char *new_name, char *old_name,
++   strcat(filename, (strcmp (ptr, ".exe") && strcmp (ptr, ".EXE"))?".exe":"");
++   cygwin_conv_to_full_win32_path(filename,out_filename);
++ #else 
++-  file_data in_file, out_file;
+++  static file_data in_file, out_file;
++   char out_filename[MAX_PATH], in_filename[MAX_PATH];
++   unsigned long size;
++   char *ptr;
++@@ -284,7 +284,7 @@ unexec (char *new_name, char *old_name,
++     {
++       printf ("Failed to open %s (%ld)...bailing.\n", 
++            in_filename, GetLastError ());
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   /* Get the interesting section info, like start and size of .bss...  */
++@@ -305,7 +305,7 @@ unexec (char *new_name, char *old_name,
++     {
++       printf ("Failed to open %s (%ld)...bailing.\n", 
++            out_filename, GetLastError ());
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   /* Set the flag (before dumping).  */
++@@ -452,7 +452,7 @@ get_bss_info_from_map_file (file_data *p
++     {
++       printf ("Failed to open map file %s, error %d...bailing out.\n",
++            map_filename, GetLastError ());
++-      exit (-1);
+++      do_gcl_abort();
++     }
++ 
++   while (fgets (buffer, sizeof (buffer), map))
++@@ -463,7 +463,7 @@ get_bss_info_from_map_file (file_data *p
++       if (n != 2)
++      {
++        printf ("Failed to scan the .bss section line:\n%s", buffer);
++-       exit (-1);
+++       do_gcl_abort();
++      }
++       break;
++     }
++@@ -534,7 +534,7 @@ get_section_info (file_data *p_infile)
++   if (dos_header->e_magic != IMAGE_DOS_SIGNATURE) 
++     {
++       printf ("Unknown EXE header in %s...bailing.\n", p_infile->name);
++-      exit (1);
+++      do_gcl_abort();
++     }
++   nt_header = (PIMAGE_NT_HEADERS) (((unsigned long) dos_header) + 
++                                 dos_header->e_lfanew);
++@@ -542,7 +542,7 @@ get_section_info (file_data *p_infile)
++     {
++       printf ("Failed to find IMAGE_NT_HEADER in %s...bailing.\n", 
++           p_infile->name);
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   /* Check the NT header signature ...  */
++@@ -729,7 +729,7 @@ read_in_bss (char *filename)
++   if (file == INVALID_HANDLE_VALUE) 
++     {
++       i = GetLastError ();
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   /* Seek to where the .bss section is tucked away after the heap...  */
++@@ -737,7 +737,7 @@ read_in_bss (char *filename)
++   if (SetFilePointer (file, index, NULL, FILE_BEGIN) == 0xFFFFFFFF) 
++     {
++       i = GetLastError ();
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   
++@@ -746,7 +746,7 @@ read_in_bss (char *filename)
++   if (!ReadFile (file, bss_start, bss_size, &n_read, (void *)NULL))
++     {
++       i = GetLastError ();
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   CloseHandle (file);
++@@ -767,7 +767,7 @@ map_in_heap (char *filename)
++   if (file == INVALID_HANDLE_VALUE) 
++     {
++       i = GetLastError ();
++-      exit (1);
+++      do_gcl_abort();
++     }
++   
++   size = GetFileSize (file, &upper_size);
++@@ -776,7 +776,7 @@ map_in_heap (char *filename)
++   if (!file_mapping) 
++     {
++       i = GetLastError ();
++-      exit (1);
+++      do_gcl_abort();
++     }
++     
++   size = get_committed_heap_size ();
++@@ -797,7 +797,7 @@ map_in_heap (char *filename)
++                  MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE) == NULL)
++     {
++       i = GetLastError ();
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   /* Seek to the location of the heap data in the executable.  */
++@@ -805,7 +805,7 @@ map_in_heap (char *filename)
++   if (SetFilePointer (file, i, NULL, FILE_BEGIN) == 0xFFFFFFFF)
++     {
++       i = GetLastError ();
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   /* Read in the data.  */
++@@ -813,7 +813,7 @@ map_in_heap (char *filename)
++               get_committed_heap_size (), &n_read, (void *)NULL))
++     {
++       i = GetLastError ();
++-      exit (1);
+++      do_gcl_abort();
++     }
++ 
++   CloseHandle (file);
++@@ -1009,7 +1009,7 @@ sbrk (ptrdiff_t increment)
++       if (((unsigned long) data_region_base & ~VALMASK) != 0) 
++      {
++        printf ("Error: The heap was allocated in upper memory.\n");
++-       exit (1);
+++       do_gcl_abort();
++      }
++ 
++       data_region_end = data_region_base;
++@@ -1090,7 +1090,7 @@ recreate_heap (char *executable_path) {
++                    MEM_RESERVE,
++                    PAGE_NOACCESS);
++   if (!tmp)
++-    exit (1);
+++    do_gcl_abort();
++ 
++   /* We read in the data for the .bss section from the executable
++      first and map in the heap from the executable second to prevent
++--- gcl-2.6.12.orig/o/unixsave.c
+++++ gcl-2.6.12/o/unixsave.c
++@@ -105,16 +105,16 @@ char *original_file, *save_file;
++ */   
++ 
++      if (stdin != original || original->_file != 0) {
++-             fprintf(stderr, "Can't open the original file.\n");
++-             exit(1);
+++             emsg("Can't open the original file.\n");
+++             do_gcl_abort();
++      }
++      setbuf(original, stdin_buf);
++      fclose(stdout);
++      unlink(save_file);
++      n = open(save_file, O_CREAT|O_WRONLY, 0777);
++      if (n != 1 || (save = fdopen(n, "w")) != stdout) {
++-             fprintf(stderr, "Can't open the save file.\n");
++-             exit(1);
+++             emsg("Can't open the save file.\n");
+++             do_gcl_abort();
++      }
++      setbuf(save, stdout_buf);
++ 
++--- gcl-2.6.12.orig/o/unixsys.c
+++++ gcl-2.6.12/o/unixsys.c
++@@ -28,11 +28,6 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ 
++ #include "include.h"
++ 
++-#ifdef _WIN32
++-#include <windows.h>
++-#define sleep(n) Sleep(1000 * n)
++-#endif
++-
++ #ifdef ATT3B2
++ #include <signal.h>
++ int
++--- gcl-2.6.12.orig/o/usig.c
+++++ gcl-2.6.12/o/usig.c
++@@ -295,12 +295,18 @@ sigio(void)
++ {ifuncall1(sSsigio_interrupt,Cnil);}
++ 
++ 
+++static void
+++sigterm(void)
+++{do_gcl_abort();}
+++
+++
++ 
++ void
++ install_default_signals(void)
++ {    gcl_signal(SIGFPE, sigfpe3);
++      gcl_signal(SIGPIPE, sigpipe);
++      gcl_signal(SIGINT, sigint);
+++     gcl_signal(SIGTERM, sigterm);
++      gcl_signal(SIGUSR1, sigusr1);
++      gcl_signal(SIGIO, sigio);
++      gcl_signal(SIGALRM, sigalrm);
++--- gcl-2.6.12.orig/o/usig2.c
+++++ gcl-2.6.12/o/usig2.c
++@@ -259,7 +259,7 @@ before_interrupt(struct save_for_interru
++ /* #define XS(a) *pp++ =  * (void **) (&a);  */
++ #include "usig2_aux.c"
++    if ((pp - (&(p->save_objects)[0])) >= (sizeof(p->save_objects)/sizeof(void *)))
++-     abort();
+++     do_gcl_abort();
++  }
++ #define MINN(a,b) (a<b?a :b)
++  p->token_st_dim = MINN(token->st.st_dim,tok_leng+1);
++--- /dev/null
+++++ gcl-2.6.12/o/wpool.c
++@@ -0,0 +1,35 @@
+++#include <stdio.h>
+++
+++#define NO_PRELINK_UNEXEC_DIVERSION
+++char *rb_end=NULL,*rb_start=NULL,*heap_end=NULL;
+++void *data_start=NULL;
+++int use_pool=1;
+++
+++#include "include.h"
+++#include "page.h"
+++#include "pool.h"
+++
+++/*lintian*/
+++void
+++assert_error(const char *a,unsigned l,const char *f,const char *n) {
+++  update_pool(0);
+++  get_pool();
+++  pool_check();
+++}
+++
+++int
+++main(int argc,char * argv[],char * envp[]) {
+++
+++  int s;
+++
+++  sscanf(argv[1],"%d",&s);
+++  open_pool();
+++  for (;;) {
+++    lock_pool();
+++    fprintf(stderr,"master pid %lu %lu processess %lu pages\n",Pool->pid,Pool->n,Pool->s);
+++    fflush(stderr);
+++    unlock_pool();
+++    sleep(s);
+++  }
+++  return 0;
+++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..354686f7e97678986d456ea60a805fdd22a31389
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,76 @@@
++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.
++ .
++ gcl (2.6.12-13) unstable; urgency=medium
++ .
++   * Version_2_6_13pre16
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -749,11 +749,15 @@ alloc_from_freelist(struct typemanager *
++ static inline void
++ grow_linear1(struct typemanager *tm) {
++   
++-  fixnum maxgro=resv_pages ? available_pages : 0;
+++  if (!sSAoptimize_maximum_pagesA || sSAoptimize_maximum_pagesA->s.s_dbind==Cnil) {
++ 
++-  if (tm->tm_type==t_relocatable) maxgro>>=1;
+++    fixnum maxgro=resv_pages ? available_pages : 0;
++ 
++-  set_tm_maxpage(tm,grow_linear(tm->tm_npage,tm->tm_growth_percent,tm->tm_min_grow, tm->tm_max_grow,maxgro));
+++    if (tm->tm_type==t_relocatable) maxgro>>=1;
+++
+++    set_tm_maxpage(tm,grow_linear(tm->tm_npage,tm->tm_growth_percent,tm->tm_min_grow, tm->tm_max_grow,maxgro));
+++
+++  }
++ 
++ }
++ 
++@@ -802,7 +806,8 @@ do_gc_p(struct typemanager *tm,fixnum n)
++ 
++   pp=gc_page_max*phys_pages;
++ 
++-  return page(recent_allocation)>(1.0+gc_alloc_min-(double)ufmin(cpool,pp)/pp)*data_pages();
+++  return page(recent_allocation)>(1.0+gc_alloc_min-(double)ufmin(cpool,pp)/pp)*data_pages() ||
+++    2*tpage(tm,n)>available_pages;
++ 
++ }
++   
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -236,7 +236,7 @@ get_gc_environ(void) {
++     massert(mem_multiple>=0.0);
++   }
++ 
++-  gc_alloc_min=0.1;
+++  gc_alloc_min=0.05;
++   if ((e=getenv("GCL_GC_ALLOC_MIN"))) {
++     massert(sscanf(e,"%lf",&gc_alloc_min)==1);
++     massert(gc_alloc_min>=0.0);
++@@ -280,7 +280,7 @@ setup_maxpages(double scale) {
++   resv_pages=available_pages=0;
++   available_pages=check_avail_pages();
++   
++-  resv_pages=40<available_pages ? 40 : available_pages;
+++  resv_pages=available_pages/100;
++   available_pages-=resv_pages;
++   
++   recent_allocation=0;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..734c9a226c4bb1993411336c30ac643b8c955645
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,573 @@@
++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.
++ .
++ gcl (2.6.12-14) unstable; urgency=medium
++ .
++   * Version_2_6_13pre17
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -82,7 +82,7 @@
++ 
++ (defun safe-system (string)
++  (multiple-value-bind
++-  (code result) (system (ts string))
+++  (code result) (system (mysub (ts string) "$" "\\$"))
++     (unless (and (zerop code) (zerop result))
++       (cerror "Continues anyway."
++               "(SYSTEM ~S) returned a non-zero value ~D."
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -715,6 +715,7 @@ infodir
++ docdir
++ oldincludedir
++ includedir
+++runstatedir
++ localstatedir
++ sharedstatedir
++ sysconfdir
++@@ -821,6 +822,7 @@ datadir='${datarootdir}'
++ sysconfdir='${prefix}/etc'
++ sharedstatedir='${prefix}/com'
++ localstatedir='${prefix}/var'
+++runstatedir='${localstatedir}/run'
++ includedir='${prefix}/include'
++ oldincludedir='/usr/include'
++ docdir='${datarootdir}/doc/${PACKAGE}'
++@@ -1073,6 +1075,15 @@ do
++   | -silent | --silent | --silen | --sile | --sil)
++     silent=yes ;;
++ 
+++  -runstatedir | --runstatedir | --runstatedi | --runstated \
+++  | --runstate | --runstat | --runsta | --runst | --runs \
+++  | --run | --ru | --r)
+++    ac_prev=runstatedir ;;
+++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+++  | --run=* | --ru=* | --r=*)
+++    runstatedir=$ac_optarg ;;
+++
++   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
++     ac_prev=sbindir ;;
++   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
++@@ -1210,7 +1221,7 @@ fi
++ for ac_var in        exec_prefix prefix bindir sbindir libexecdir datarootdir \
++              datadir sysconfdir sharedstatedir localstatedir includedir \
++              oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
++-             libdir localedir mandir
+++             libdir localedir mandir runstatedir
++ do
++   eval ac_val=\$$ac_var
++   # Remove trailing slashes.
++@@ -1363,6 +1374,7 @@ Fine tuning of the installation director
++   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
++   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
++   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
++   --libdir=DIR            object code libraries [EPREFIX/lib]
++   --includedir=DIR        C header files [PREFIX/include]
++   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
++@@ -4423,6 +4435,7 @@ case $use in
++ #                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++                      ;;
++              mips*)
+++                     TCFLAGS="$TCFLAGS -mplt"
++ #                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.6.2
++                      ;;
++              ia64*)
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -640,6 +640,7 @@ case $use in
++ #                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++                      ;;
++              mips*)
+++                     TCFLAGS="$TCFLAGS -mplt"
++ #                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.6.2
++                      ;;
++              ia64*)
++--- gcl-2.6.12.orig/h/elf32_mips_reloc.h
+++++ gcl-2.6.12/h/elf32_mips_reloc.h
++@@ -19,10 +19,7 @@
++     case R_MIPS_CALL16:
++       gote=got+sym->st_size-1;
++       store_val(where,MASK(16),((void *)gote-(void *)got));
++-      if (s>=ggot && s<ggote) {
++-        massert(!write_stub(s,got,gote));
++-      } else
++-        *gote=s;
+++      *gote=s;
++       break;
++     case R_MIPS_HI16:
++       if (sym->st_other) s=gpd=(ul)got-(sym->st_other==2 ? 0 : (ul)where);
++@@ -37,7 +34,8 @@
++       a+=(a&0x8000)<<1; 
++       store_val(where,MASK(16),a);
++       a=0x10000|(a>>16);
++-      for (hr=hr ? hr : r;--r>=hr && ELF_R_TYPE(r->r_info)==R_MIPS_HI16;)
++-        relocate(sym1,r,a,start,got,gote);
+++      for (hr=hr ? hr : r;--r>=hr;)
+++     if (ELF_R_TYPE(r->r_info)==R_MIPS_HI16)
+++       relocate(sym1,r,a,start,got,gote);
++       hr=NULL;gpd=0;
++       break;
++--- gcl-2.6.12.orig/h/elf32_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf32_mips_reloc_special.h
++@@ -1,65 +1,9 @@
++-static ul gpd,ggot,ggote; static Rel *hr;
++-
++-static int
++-write_stub(ul s,ul *got,ul *gote) {
++-
++-  *gote=(ul)(gote+2);
++-  *++gote=s;
++-  s=((void *)gote-(void *)got);
++-  *++gote=(0x23<<26)|(0x1c<<21)|(0x19<<16)|s;
++-  *++gote=(0x23<<26)|(0x19<<21)|(0x19<<16)|0;
++-  *++gote=0x03200008;
++-  *++gote=0x00200825;
++-
++-  return 0;
++-  
++-}
++-
++-static int
++-make_got_room_for_stub(Shdr *sec1,Shdr *sece,Sym *sym,const char *st1,ul *gs) {
++-
++-  Shdr *ssec=sec1+sym->st_shndx;
++-  struct node *a;
++-  if ((ssec>=sece || !ALLOC_SEC(ssec)) && 
++-      (a=find_sym_ptable(st1+sym->st_name)) &&
++-      a->address>=ggot && a->address<ggote)
++-    (*gs)+=5;
++-
++-  return 0;
++-
++-}
+++static ul gpd; static Rel *hr;
++ 
++ static int
++ find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
++                  const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
++   
++-  Shdr *sec;
++-  ul *q,gotsym=0,locgotno=0,stub,stube;
++-  void *p,*pe;
++-
++-  massert(sec=get_section(".dynamic",sec1,sece,sn));
++-  for (p=(void *)sec->sh_addr,pe=p+sec->sh_size;p<pe;p+=sec->sh_entsize) {
++-    q=p;
++-    if (q[0]==DT_MIPS_GOTSYM)
++-      gotsym=q[1];
++-    if (q[0]==DT_MIPS_LOCAL_GOTNO)
++-      locgotno=q[1];
++-    
++-  }
++-  massert(gotsym && locgotno);
++-
++-  massert(sec=get_section(".MIPS.stubs",sec1,sece,sn));
++-  stub=sec->sh_addr;
++-  stube=sec->sh_addr+sec->sh_size;
++-      
++-  massert(sec=get_section(".got",sec1,sece,sn));
++-  ggot=sec->sh_addr+locgotno*sec->sh_entsize;
++-  ggote=sec->sh_addr+sec->sh_size;
++-
++-  for (ds1+=gotsym,sym=ds1;sym<dse;sym++)
++-    if (!sym->st_value || (sym->st_value>=stub && sym->st_value<stube))
++-      sym->st_value=ggot+(sym-ds1)*sec->sh_entsize;
++-
++   return 0;
++ 
++ }
++@@ -74,7 +18,7 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   ul q;
++ 
++   for (q=0,sym=sym1;sym<syme;sym++) {
++-    char *s=st1+sym->st_name;
+++    const char *s=st1+sym->st_name;
++     if ((sym->st_other=strcmp(s,"_gp_disp") ? (strcmp(s,"__gnu_local_gp") ? 0 : 2) : 1)) {
++       q++;
++       sym->st_info=ELF_ST_INFO(STB_LOCAL,ELF_ST_TYPE(sym->st_info));
++@@ -94,10 +38,8 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++ 
++        sym=sym1+ELF_R_SYM(r->r_info);
++ 
++-       if (!sym->st_size) { 
+++       if (!sym->st_size)
++          sym->st_size=++*gs; 
++-         massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++-       }
++ 
++      }
++   
++--- gcl-2.6.12.orig/h/elf64_mips_reloc.h
+++++ gcl-2.6.12/h/elf64_mips_reloc.h
++@@ -15,10 +15,7 @@
++       gote=got+(a>>32)-1;
++       a&=MASK(32);
++       store_val(where,MASK(16),((void *)gote-(void *)got));
++-      if (s>=ggot && s<ggote) {
++-        massert(!write_stub(s,got,gote));
++-      } else
++-        *gote=s+(a&~MASK(16))+((a&0x8000)<<1);
+++      *gote=s+(a&~MASK(16))+((a&0x8000)<<1);
++       break;
++     case R_MIPS_GOT_OFST:
++       store_val(where,MASK(16),a);
++@@ -40,8 +37,9 @@
++       a&=~MASK(16);
++       {
++         Rela *ra=(void *)r;                          
++-        for (hr=hr ? hr : (void *)ra;--ra>=hr && ELF_R_TYPE(ra->r_info)==R_MIPS_HI16;)
++-       relocate(sym1,ra,ra->r_addend|(1L<<32)|(a<<32),start,got,gote);
+++        for (hr=hr ? hr : (void *)ra;--ra>=hr;)
+++       if (ELF_R_TYPE(ra->r_info)==R_MIPS_HI16)
+++         relocate(sym1,ra,ra->r_addend|(1L<<32)|(a<<32),start,got,gote);
++       }
++       hr=NULL;
++       break;
++--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf64_mips_reloc_special.h
++@@ -1,4 +1,4 @@
++-static ul ggot,ggote; static Rela *hr;
+++static Rela *hr;
++ 
++ #undef ELF_R_SYM 
++ #define ELF_R_SYM(a_) (a_&0xffffffff) 
++@@ -7,68 +7,9 @@ static ul ggot,ggote; static Rela *hr;
++ #define ELF_R_FTYPE(a_) ((a_>>56)&0xff)
++ 
++ static int
++-write_stub(ul s,ul *got,ul *gote) {
++-
++-  int *goti;
++-  
++-
++-  *gote=(ul)(goti=(void *)(gote+2));
++-  *++gote=s;
++-  s=((void *)gote-(void *)got);
++-  *goti++=(0x37<<26)|(0x1c<<21)|(0x19<<16)|s;
++-  *goti++=(0x37<<26)|(0x19<<21)|(0x19<<16)|0;
++-  *goti++=0x03200008;
++-  *goti++=0x00200825;
++-
++-  return 0;
++-  
++-}
++-
++-static int
++-make_got_room_for_stub(Shdr *sec1,Shdr *sece,Sym *sym,const char *st1,ul *gs) {
++-
++-  Shdr *ssec=sec1+sym->st_shndx;
++-  struct node *a;
++-  if ((ssec>=sece || !ALLOC_SEC(ssec)) && 
++-      (a=find_sym_ptable(st1+sym->st_name)) &&
++-      a->address>=ggot && a->address<ggote)
++-    (*gs)+=3;
++-
++-  return 0;
++-
++-}
++-
++-static int
++ find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
++                  const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
++   
++-  Shdr *sec;
++-  ul *q,gotsym=0,locgotno=0,stub,stube;
++-  void *p,*pe;
++-
++-  massert(sec=get_section(".dynamic",sec1,sece,sn));
++-  for (p=(void *)sec->sh_addr,pe=p+sec->sh_size;p<pe;p+=sec->sh_entsize) {
++-    q=p;
++-    if (q[0]==DT_MIPS_GOTSYM)
++-      gotsym=q[1];
++-    if (q[0]==DT_MIPS_LOCAL_GOTNO)
++-      locgotno=q[1];
++-    
++-  }
++-  massert(gotsym && locgotno);
++-
++-  massert(sec=get_section(".MIPS.stubs",sec1,sece,sn));
++-  stub=sec->sh_addr;
++-  stube=sec->sh_addr+sec->sh_size;
++-      
++-  massert(sec=get_section(".got",sec1,sece,sn));
++-  ggot=sec->sh_addr+locgotno*sec->sh_entsize;
++-  ggote=sec->sh_addr+sec->sh_size;
++-
++-  for (ds1+=gotsym,sym=ds1;sym<dse;sym++)
++-    if (!sym->st_value || (sym->st_value>=stub && sym->st_value<stube))
++-      sym->st_value=ggot+(sym-ds1)*sec->sh_entsize;
++-
++   return 0;
++ 
++ }
++@@ -104,8 +45,6 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++            sym->st_size|=(q<<(a*16));
++          }
++          
++-         massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++-
++        }
++ 
++        b=sizeof(r->r_addend)*4; 
++--- gcl-2.6.12.orig/h/mips-linux.h
+++++ gcl-2.6.12/h/mips-linux.h
++@@ -21,5 +21,4 @@
++ #define SPECIAL_RELOC_H "elf64_mips_reloc_special.h"
++ #endif
++ 
++-/*Remove when .MIPS.stubs are replaced with callable .plt entries*/
++-#define LD_BIND_NOW
+++#define NEED_STACK_CHK_GUARD
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -38,26 +38,24 @@
++ 
++ 
++ (defmacro with-input-from-string ((var string &key index start end) . body)
++-  (if index
++-      (multiple-value-bind (ds b)
++-          (find-declarations body)
++-        `(let ((,var (make-string-input-stream ,string ,start ,end)))
++-           ,@ds
++-           (unwind-protect
++-             (progn ,@b)
++-             (setf ,index (si:get-string-input-stream-index ,var)))))
++-      `(let ((,var (make-string-input-stream ,string ,start ,end)))
++-         ,@body)))
+++  (multiple-value-bind (ds b)
+++      (find-declarations body)
+++    `(let ((,var (make-string-input-stream ,string ,start ,end)))
+++       ,@ds
+++       (unwind-protect
+++        (progn ,@b)
+++      (when ,index (setf ,index (si:get-string-input-stream-index ,var)))
+++      (when ,var (close ,var))))))
++ 
+++(defmacro with-output-to-string ((var &optional string &key element-type) . body)
+++  (multiple-value-bind (ds b)
+++      (find-declarations body)
+++    `(let ((,var ,(if string `(make-string-output-stream-from-string ,string) `(make-string-output-stream))))
+++       ,@ds
+++       (unwind-protect
+++        (progn ,@b ,@(unless string `((get-output-stream-string ,var))))
+++      (when ,var (close ,var))))))
++ 
++-(defmacro with-output-to-string ((var &optional string) . body)
++-  (if string
++-      `(let ((,var (make-string-output-stream-from-string ,string)))
++-         ,@body)
++-      `(let ((,var (make-string-output-stream)))
++-         ,@body
++-         (get-output-stream-string ,var))))
++-        
++ 
++ (defun read-from-string (string
++                          &optional (eof-error-p t) eof-value
++--- gcl-2.6.12.orig/lsp/gcl_numlib.lsp
+++++ gcl-2.6.12/lsp/gcl_numlib.lsp
++@@ -71,29 +71,53 @@
++ 
++ (defun cis (x) (exp (* imag-one x)))
++ 
++-(defun asin (x)
++-       (let ((c (- (* imag-one
++-                      (log (+ (* imag-one x)
++-                              (sqrt (- 1.0d0 (* x x)))))))))
++-            (if (or (and (not (complexp x))
++-                       (<= x 1.0d0)
++-                        (>= x -1.0d0)
++-                         )
++-                     (zerop (imagpart c)))
++-                (realpart c)
++-                c)))
++-
++-(defun acos (x)
++-       (let ((c (- (* imag-one
++-                      (log (+ x (* imag-one
++-                                   (sqrt (- 1.0d0 (* x x))))))))))
++-            (if (or (and (not (complexp x))
++-                       (<= x 1.0d0)
++-                        (>= x -1.0d0)
++-                         )
++-                     (zerop (imagpart c)))
++-                (realpart c)
++-                c)))
+++(defun real-asinh (x)
+++  (declare (real x))
+++  (float (log (+ x (sqrt (+ 1.0 (* x x))))) (float x)))
+++
+++(defun asin (z)
+++  (declare (optimize (safety 1)))
+++  (check-type z number)
+++  (if (unless (complexp z) (<= -1 z 1))
+++      (atan z (sqrt (- 1 (* z z))))
+++    (let* ((a (sqrt (- 1 z)))
+++        (b (sqrt (+ 1 z))))
+++      (complex (atan (realpart z) (realpart (* a b)))
+++            (real-asinh (imagpart (* (conjugate a) b)))))))
+++
+++(defun acos (z)
+++  (declare (optimize (safety 1)))
+++  (check-type z number)
+++  (if (unless (complexp z) (<= -1 z 1))
+++      (* 2 (atan (- 1 z) (sqrt (- 1 (* z z)))))
+++    (let* ((a (sqrt (- 1 z)))
+++        (b (sqrt (+ 1 z))))
+++      (complex (* 2 (atan (realpart a) (realpart b)))
+++            (real-asinh (imagpart (* (conjugate b) a)))))))
+++
+++(defun asinh (x)
+++  (declare (optimize (safety 1)))
+++  (check-type x number)
+++  (if (realp x)
+++      (real-asinh x)
+++    (let* ((r (asin (complex (- (imagpart x)) (realpart x)))))
+++      (complex (imagpart r) (- (realpart r))))))
+++
+++(defun acosh (z)
+++  (declare (optimize (safety 1)))
+++  (check-type z number)
+++  (if (unless (complexp z) (>= z 1))
+++      (real-asinh (sqrt (- (* z z) 1)))
+++    (let* ((a (sqrt (- z 1)))
+++        (b (sqrt (+ z 1))))
+++      (complex (real-asinh (realpart (* (conjugate a) b))) (* 2 (atan (imagpart a) (realpart b)))))))
+++
+++(defun atanh (x)
+++  (declare (optimize (safety 1)))
+++  (check-type x number)
+++  (if (unless (complexp x) (< -1 x 1))
+++      (/ (log (/ (+ 1 x) (- 1 x))) 2)
+++    (/ (- (log (+ 1 x)) (log (- 1 x))) 2)))
++ 
++ 
++ (defun sinh (z)
++@@ -140,27 +164,6 @@
++ ;(defun cosh (x) (/ (+ (exp x) (exp (- x))) 2.0d0))
++ (defun tanh (x) (/ (sinh x) (cosh x)))
++ 
++-(defun asinh (x) (log (+ x (sqrt (+ 1.0d0 (* x x))))))
++-;(defun acosh (x)
++-;  (log (+ x
++-;      (* (1+ x)
++-;         (sqrt (/ (1- x) (1+ x)))))))
++-;(defun acosh (x)
++-;       (log (+ x
++-;           (sqrt (* (1- x) (1+ x))))))
++-(defun acosh (x)
++-  (* 2 (log (+ (sqrt (/ (1+ x) 2)) (sqrt (/ (1- x) 2))))))
++-(defun atanh (x)
++-       (when (or (= x 1.0d0) (= x -1.0d0))
++-             (error "The argument, ~s, is a logarithmic singularity.~
++-                    ~%Don't be foolish, GLS."
++-                    x))
++-       (log (/ (1+ x) (sqrt (- 1 (* x x))))))
++-;;        (let ((y (log (/ (1+ x) (sqrt (- 1 (* x x)))))))
++-;;    (if (and (= (imagpart x) 0) (complexp y))
++-;;        (complex (realpart y) (- (imagpart y)))
++-;;      y)))
++-
++ 
++ (defun rational (x)
++   (etypecase x
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -523,7 +523,41 @@ object if_exists, if_does_not_exist;
++ 
++ static void
++ gclFlushSocket(object);
++-/*
+++
+++
+++DEFUN_NEW("OPEN-STREAM-P",object,fLopen_stream_p,LISP,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++
+++  check_type_stream(&x);
+++
+++  switch(x->sm.sm_mode) {
+++  case smm_output:
+++  case smm_input:
+++  case smm_io:
+++  case smm_probe:
+++  case smm_socket:
+++  case smm_string_input:
+++  case smm_string_output:
+++    return x->d.tt==1 ? Cnil : Ct;
+++  case smm_synonym:
+++    return FFN(fLopen_stream_p)(symbol_value(x->sm.sm_object0));
+++  case smm_broadcast:
+++  case smm_concatenated:
+++    for (x=x->sm.sm_object0;!endp(x);x=x->c.c_cdr)
+++      if (!FFN(fLopen_stream_p(x)))
+++     return Cnil;
+++    return Ct;
+++  case smm_two_way:
+++  case smm_echo:
+++    if (FFN(fLopen_stream_p(STREAM_INPUT_STREAM(x)))==Cnil)
+++      return Cnil;
+++    return FFN(fLopen_stream_p(STREAM_OUTPUT_STREAM(x)));
+++  default:
+++    error("illegal stream mode");
+++    return Cnil;
+++  }
+++
+++}
+++    /*
++      Close_stream(strm) closes stream strm.
++      The abort_flag is not used now.
++ */
++@@ -535,6 +569,8 @@ object strm;
++      object x;
++ 
++ BEGIN:
+++     strm->d.tt=1;
+++
++      switch (strm->sm.sm_mode) {
++      case smm_output:
++              if (strm->sm.sm_fp == stdout)
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -471,12 +471,6 @@ main(int argc, char **argv, char **envp)
++ #include "unrandomize.h"
++ #endif
++   
++-#ifdef LD_BIND_NOW
++-#include <stdio.h>
++-#include <stdlib.h>
++-#include "ld_bind_now.h"
++-#endif
++-  
++   setbuf(stdin, stdin_buf); 
++   setbuf(stdout, stdout_buf);
++ #ifdef _WIN32
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -349,7 +349,7 @@ truncate_double(char *b,double d,int dp)
++   for (p=c;*p && *p!='e';p++);
++   if (p[-1]!='.' && char_inc(c,p-1) && COMP(c,&pp,d,dp)) {
++     j=truncate_double(c,d,dp);
++-    if (j<k) {
+++    if (j<=k) {
++       k=j;
++       n=c;
++     }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..75ef25b5bb5fb704d472319c65d4b77f302f4a18
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,92 @@@
++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.
++ .
++ gcl (2.6.12-15) unstable; urgency=medium
++ .
++   * Version_2_6_13pre18
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -38,23 +38,28 @@
++ 
++ 
++ (defmacro with-input-from-string ((var string &key index start end) . body)
++-  (multiple-value-bind (ds b)
++-      (find-declarations body)
++-    `(let ((,var (make-string-input-stream ,string ,start ,end)))
++-       ,@ds
++-       (unwind-protect
++-        (progn ,@b)
++-      (when ,index (setf ,index (si:get-string-input-stream-index ,var)))
++-      (when ,var (close ,var))))))
++-
+++  (let ((x (sgen "X")))
+++    (multiple-value-bind (ds b)
+++     (find-declarations body)
+++      `(let ((,var (make-string-input-stream ,string ,start ,end)))
+++      ,@ds
+++      (unwind-protect
+++          ,(let ((f `(progn ,@b)))
+++             (if index
+++                 `(let ((,x (multiple-value-list ,f))) (setf ,index (get-string-input-stream-index ,var)) (values-list ,x))
+++               f))
+++      (close ,var))))))
+++  
++ (defmacro with-output-to-string ((var &optional string &key element-type) . body)
++-  (multiple-value-bind (ds b)
++-      (find-declarations body)
++-    `(let ((,var ,(if string `(make-string-output-stream-from-string ,string) `(make-string-output-stream))))
++-       ,@ds
++-       (unwind-protect
++-        (progn ,@b ,@(unless string `((get-output-stream-string ,var))))
++-      (when ,var (close ,var))))))
+++  (let ((s (sgen "STRING"))(bl (sgen "BLOCK"))(e (sgen "ELEMENT-TYPE"))(x (sgen "X")))
+++    (multiple-value-bind (ds b)
+++     (find-declarations body)
+++      `(let* ((,s ,string)(,e ,element-type)
+++           (,var (if ,s (make-string-output-stream-from-string ,s) (make-string-output-stream :element-type ,e))))
+++      ,@ds
+++      (unwind-protect
+++          (let ((,x (multiple-value-list (progn ,@b)))) (if ,s (values-list ,x) (get-output-stream-string ,var)))
+++        (close ,var))))))
++ 
++ 
++ (defun read-from-string (string
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -1668,12 +1668,11 @@ for the string ~S.",
++              3, istart, iend, strng);
++ @)
++ 
++-static void
++-FFN(Lmake_string_output_stream)()
++-{
++-     check_arg(0);
++-     vs_push(make_string_output_stream(64));
++-}
+++@(static defun make_string_output_stream (&k element_type)
+++@
+++        element_type=Cnil;/*FIXME*/
+++        @(return `make_string_output_stream(64)`)
+++@)
++ 
++ LFD(Lget_output_stream_string)()
++ {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8144184248adea937d247c5c512018a9c5e29ab0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,86 @@@
++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.
++ .
++ gcl (2.6.12-2) unstable; urgency=medium
++ .
++   * Version_2_6_13pre1
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -1269,10 +1269,11 @@ gcl_init_alloc(void *cs_start) {
++   update_real_maxpage();
++ 
++   if (gcl_alloc_initialized) {
++-    massert(rb_start==heap_end &&rb_end==heap_end && rb_limit==heap_end && rb_pointer==heap_end);
++-    holepage=new_holepage;
++-    alloc_page(-holepage);
++-    rb_start=rb_end=rb_limit=rb_pointer=heap_end+(holepage<<PAGEWIDTH);
+++    if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start) {
+++      holepage=new_holepage;
+++      alloc_page(-holepage);
+++      rb_start=rb_end=rb_limit=rb_pointer=heap_end+(holepage<<PAGEWIDTH);
+++    }
++     return;
++   }
++   
++@@ -1814,25 +1815,19 @@ void
++ free(void *ptr) {
++ 
++   object *p,pp;
+++  static void *initial_monstartup_pointer_echo;
++   
++   if (ptr == 0)
++     return;
++   
++   for (p = &malloc_list,pp=*p; pp && !endp(pp);  p = &((pp)->c.c_cdr),pp=pp->c.c_cdr)
++     if ((pp)->c.c_car->st.st_self == ptr) {
++-      /* SGC contblock pages: Its possible this is on an old page CM 20030827 */
++-/* #ifdef SGC */
++-/*       insert_maybe_sgc_contblock((pp)->c.c_car->st.st_self,(pp)->c.c_car->st.st_dim); */
++-/* #else */
++-/*       insert_contblock((pp)->c.c_car->st.st_self,(pp)->c.c_car->st.st_dim); */
++-/* #endif */
++       (pp)->c.c_car->st.st_self = NULL;
++       *p = pp->c.c_cdr;
++ #ifdef GCL_GPROF
++       if (initial_monstartup_pointer==ptr) {
+++     initial_monstartup_pointer_echo=ptr;
++      initial_monstartup_pointer=NULL;
++-     if (core_end-heap_end>=sizeof(ptr))
++-       *(void **)heap_end=ptr;
++       }
++ #endif
++       return;
++@@ -1840,12 +1835,13 @@ free(void *ptr) {
++ #ifdef NOFREE_ERR
++   return;
++ #else        
++-  if (core_end-heap_end<sizeof(ptr) || ptr!=*(void **)heap_end) {
+++  if (ptr!=initial_monstartup_pointer_echo) {
++     static void *old_ptr;
++     if (old_ptr==ptr) return;
++     old_ptr=ptr;
++     FEerror("free(3) error.",0);
++   }
+++  initial_monstartup_pointer_echo=NULL;
++   return;
++ #endif       
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d6fea17a0038a1660c2d1fbb2119cccbd61603cb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++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.
++ .
++ gcl (2.6.12-2) unstable; urgency=medium
++ .
++   * Version_2_6_13pre1
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/makefile
+++++ gcl-2.6.12/makefile
++@@ -195,7 +195,7 @@ install1:
++      if gcc --version | grep -i mingw >/dev/null 2>&1 ; then if grep -i oncrpc makedefs >/dev/null 2>&1 ; then cp /mingw/bin/oncrpc.dll $(DESTDIR)$(INSTALL_LIB_DIR)/$(PORTDIR); fi ; fi
++      cd $(DESTDIR)$(INSTALL_LIB_DIR)/$(PORTDIR) && \
++              mv $(FLISP)$(EXE) temp$(EXE) && \
++-             echo '(reset-sys-paths "$(INSTALL_LIB_DIR)/")(si::save-system "$(FLISP)$(EXE)")' | ./temp$(EXE) && \
+++             echo '(si::reset-sys-paths "$(INSTALL_LIB_DIR)/")(si::save-system "$(FLISP)$(EXE)")' | ./temp$(EXE) && \
++              rm -f temp$(EXE)
++      if [ -e "unixport/rsym$(EXE)" ] ; then cp unixport/rsym$(EXE) $(DESTDIR)$(INSTALL_LIB_DIR)/unixport/ ; fi
++ #    ln $(SYMB) $(INSTALL_LIB_DIR)/$(PORTDIR)/$(FLISP)$(EXE) \
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c9a97635d67185d60a4f74a0dcf2d77d43afab45
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,229 @@@
++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.
++ .
++ gcl (2.6.12-2) unstable; urgency=medium
++ .
++   * Version_2_6_13pre1
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/bsd.h
+++++ gcl-2.6.12/h/bsd.h
++@@ -33,39 +33,7 @@ filecpy(save, original, stsize - sizeof(
++ 
++ extern char etext;
++ 
++-
++-
++-
++-/* #define SET_REAL_MAXPAGE do { struct rlimit data_rlimit; \ */
++-/*                           extern char etext; \ */
++-/*                        real_maxpage = MAXPAGE ; \ */
++-/*           getrlimit(RLIMIT_DATA, &data_rlimit); \ */
++-/*   real_maxpage = ((unsigned int)&etext/PAGESIZE + data_rlimit.rlim_cur/PAGESIZE); \ */
++-/*   if (real_maxpage > MAXPAGE) \ */
++-/*           real_maxpage = MAXPAGE ; } while(0) */
++-     
++-#define ROUND_UP_SBRK(x)  \
++-       do {long i; \
++-          if ((i = ((long)x & (PAGESIZE - 1)))) \
++-            x=sbrk(PAGESIZE - i); } while(0);
++-
++-#define FIX_RANDOM_SBRK \
++-do {char *x=sbrk(0); \
++-  if (core_end != x) \
++-   { ROUND_UP_SBRK(x); x=sbrk(0);\
++-     while (core_end < x) \
++-       { \
++-      core_end = core_end + PAGESIZE;} \
++-     if (core_end !=x) error("Someone allocated my memory");}} while (0)
++- 
++-     
++-#define INIT_ALLOC \
++-             heap_end = sbrk(0); ROUND_UP_SBRK(heap_end);\
++-     heap_end = core_end = sbrk(0);
++-
++-#define IF_ALLOCATE_ERR \
++-        FIX_RANDOM_SBRK; \
++-     if (core_end != sbrk(PAGESIZE*(n - m)))
+++#define INIT_ALLOC heap_end = core_end = sbrk(0);
++ 
++ #define SYM_EXTERNAL_P(sym) ((sym)->n_type & N_EXT)
++      
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1935,3 +1935,6 @@ empty_relblock(void);
++ 
++ fixnum
++ check_avail_pages(void);
+++
+++inline int
+++mbrk(void *);
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -223,61 +223,53 @@ resize_hole(ufixnum hp,enum type tp) {
++ inline void *
++ alloc_page(long n) {
++ 
++-  fixnum d,m;
++-
++-  if (n>=0) {
+++  bool s=n<0;
+++  ufixnum nn=s ? -n : n;
+++  void *v,*e;
+++  
+++  if (!s) {
++ 
++-    if (n>(holepage - (in_signal_handler? 0 :
+++    if (nn>(holepage - (in_signal_handler? 0 :
++                     available_pages-n<=reserve_pages_for_signal_handler ? 0 : 
++                     reserve_pages_for_signal_handler))) {
++ 
++ 
++-      if (in_signal_handler) {
++-     fprintf(stderr,"Cant do relocatable gc in signal handler. \
++-Try to allocate more space to save for allocation during signals: \
++-eg to add 20 more do (si::set-hole-size %ld %d)\n...start over ", 
++-             new_holepage, 20+ reserve_pages_for_signal_handler); fflush(stderr); exit(1);
++-      }
++-
+++      fixnum d=available_pages-nn;
++ 
++-      d=available_pages-n;
++       d*=0.2;
++       d=d<0.01*real_maxpage ? available_pages-n : d;
++       d=d<0 ? 0 : d;
++       d=new_holepage<d ? new_holepage : d;
++       
++-      resize_hole(d+n,t_relocatable);
++-
++-    }
+++      if (in_signal_handler)/*FIXME*/
+++     fprintf(stderr,"Can't do relocatable gc in signal handler. \
+++Try to allocate more space to save for allocation during signals: \
+++eg to add 20 more do (si::set-hole-size %ld %d)\n...start over ", 
+++             new_holepage, 20+ reserve_pages_for_signal_handler); fflush(stderr); exit(1);
++ 
++-    holepage -= n;
+++      resize_hole(d+nn,t_relocatable);
++ 
++-    if (heap_end==core_end) {
++-      /* can happen when mallocs occur before rel block set up..*/
++-      sbrk(PAGESIZE*n);
++-      core_end+=PAGESIZE*n;
++     }
+++  }
++ 
++-    {
++-      void *e=heap_end;
++-      heap_end+=PAGESIZE*n;
+++  e=heap_end;
+++  v=e+nn*PAGESIZE;
++ 
++-      return(e);
++-    }
+++  if (!s) {
++ 
++-  }
+++    holepage -= nn;
+++    heap_end=v;
+++    return e;
++ 
++-  /* n < 0 , then this says ensure there are -n pages
++-     starting at heap_end, and return pointer to heap_end */
++-  n=-n;
++-  m=(core_end-heap_end)/PAGESIZE;
+++  }
++ 
++-  if (n<=m)
+++  if (nn<=(core_end-heap_end)/PAGESIZE)
++     return(heap_end);
++ 
++-  IF_ALLOCATE_ERR error("Can't allocate.  Good-bye!");
+++  if (mbrk(v))
+++    error("Can't allocate.  Good-bye!");
++ 
++-  core_end+=PAGESIZE*(n-m);
+++  core_end=v;
++ 
++   return(heap_end);
++ 
++@@ -692,7 +684,7 @@ print_cb(int print) {
++     massert(**cbppp==cbp);
++     for (k=0;cbp && cbp->cb_size==(**cbppp)->cb_size;cbpp=&cbp->cb_link,cbp=cbp->cb_link,k++);
++     if (print)
++-      fprintf(stderr,"%lu %p %p %lu %lu\n",cbppp-cbsrch1,*cbppp,**cbppp,(**cbppp)->cb_size,k);
+++      fprintf(stderr,"%lu %p %p %lu %lu\n",(unsigned long)(cbppp-cbsrch1),*cbppp,**cbppp,(**cbppp)->cb_size,k);
++   }
++   massert(cbppp==cbsrche);
++   massert(*cbppp==cbpp);
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -120,6 +120,7 @@ fixnum log_maxpage_bound=sizeof(fixnum)*
++ 
++ inline int
++ mbrk(void *v) {
+++
++   ufixnum uv=(ufixnum)v,uc=(ufixnum)sbrk(0),ux,um;
++   fixnum m=((1UL<<(sizeof(fixnum)*8-1))-1);
++ 
++@@ -134,9 +135,12 @@ mbrk(void *v) {
++     um=uc;
++     ux=uv;
++   }
+++
++   if (((fixnum)(ux-um))<0)
++     return mbrk((void *)uc+(uv<uc ? -m : m)) || mbrk(v);
+++
++   return uc==(ufixnum)sbrk(uv-uc) ? 0 : -1;
+++
++ }
++     
++ #if defined(__CYGWIN__)||defined(__MINGW32__)
++@@ -451,7 +455,6 @@ main(int argc, char **argv, char **envp)
++ #ifdef NEED_STACK_CHK_GUARD
++     __stack_chk_guard=random_ulong();/*Cannot be safely set inside a function which returns*/
++ #endif
++-    allocate_code_block_reserve();
++   
++   }
++ 
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -268,20 +268,6 @@ alloc_memory(ul sz) {
++ 
++ }
++ 
++-void
++-allocate_code_block_reserve(void) {
++-
++-  const char *s=getenv("GCL_CODESPACE");
++-  ul n;
++-
++-  if (!s || sscanf(s,"%lu",&n)!=1)
++-    return;
++-
++-  sSAcode_block_reserveA->s.s_dbind=alloc_simple_string(n);
++-  sSAcode_block_reserveA->s.s_dbind->st.st_self=alloc_memory(n);
++-
++-}
++-
++ static object
++ load_memory(Shdr *sec1,Shdr *sece,void *v1,ul **got,ul **gote) {
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..66ade458da392c5f204ecc59345625efa07e7aee
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++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.
++ .
++ gcl (2.6.12-16) unstable; urgency=medium
++ .
++   * Version_2_6_13pre19
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -543,14 +543,14 @@ DEFUN_NEW("OPEN-STREAM-P",object,fLopen_
++   case smm_broadcast:
++   case smm_concatenated:
++     for (x=x->sm.sm_object0;!endp(x);x=x->c.c_cdr)
++-      if (!FFN(fLopen_stream_p(x)))
+++      if (!FFN(fLopen_stream_p)(x))
++      return Cnil;
++     return Ct;
++   case smm_two_way:
++   case smm_echo:
++-    if (FFN(fLopen_stream_p(STREAM_INPUT_STREAM(x)))==Cnil)
+++    if (FFN(fLopen_stream_p)(STREAM_INPUT_STREAM(x))==Cnil)
++       return Cnil;
++-    return FFN(fLopen_stream_p(STREAM_OUTPUT_STREAM(x)));
+++    return FFN(fLopen_stream_p)(STREAM_OUTPUT_STREAM(x));
++   default:
++     error("illegal stream mode");
++     return Cnil;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cf61cc63542561ed240f5351720d7d953da7db9d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,357 @@@
++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.
++ .
++ gcl (2.6.12-17) unstable; urgency=medium
++ .
++   * Version_2_6_13pre20
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -6553,6 +6553,7 @@ else
++ 
++         #include <stdio.h>
++      #define EXTER
+++     #define INLINE
++      #include "$MP_INCLUDE"
++      #include "./h/enum.h"
++      #define OBJ_ALIGN
++@@ -6681,6 +6682,7 @@ else
++ /* end confdefs.h.  */
++ #include <stdio.h>
++      #define EXTER
+++     #define INLINE
++      #include "$MP_INCLUDE"
++      #include "h/enum.h"
++      #include "h/type.h"
++@@ -6710,6 +6712,7 @@ else
++ /* end confdefs.h.  */
++ #include <stdio.h>
++      #define EXTER
+++     #define INLINE
++      #include "$MP_INCLUDE"
++      #include "`pwd`/h/enum.h"
++      #include "`pwd`/h/type.h"
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -1301,6 +1301,7 @@ AC_MSG_CHECKING([for required object ali
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++         #include <stdio.h>
++      #define EXTER
+++     #define INLINE
++      #include "$MP_INCLUDE"
++      #include "./h/enum.h"
++      #define OBJ_ALIGN
++@@ -1341,6 +1342,7 @@ AC_MSG_CHECKING(sizeof struct contblock)
++ if test "$use" = "mingw" ; then
++ AC_TRY_RUN([#include <stdio.h>
++      #define EXTER
+++     #define INLINE
++      #include "$MP_INCLUDE"
++      #include "h/enum.h"
++      #include "h/type.h"
++@@ -1357,6 +1359,7 @@ AC_TRY_RUN([#include <stdio.h>
++ else
++ AC_TRY_RUN([#include <stdio.h>
++      #define EXTER
+++     #define INLINE
++      #include "$MP_INCLUDE"
++      #include "`pwd`/h/enum.h"
++      #include "`pwd`/h/type.h"
++--- gcl-2.6.12.orig/gcl-tk/guis.h
+++++ gcl-2.6.12/gcl-tk/guis.h
++@@ -7,6 +7,7 @@
++ #define IMMNUM_H
++ #define GMP_WRAPPERS_H
++ #define ERROR_H
+++#undef INLINE
++ 
++ #include "include.h"
++ 
++--- gcl-2.6.12.orig/h/elf64_mips_reloc.h
+++++ gcl-2.6.12/h/elf64_mips_reloc.h
++@@ -15,7 +15,10 @@
++       gote=got+(a>>32)-1;
++       a&=MASK(32);
++       store_val(where,MASK(16),((void *)gote-(void *)got));
++-      *gote=s+(a&~MASK(16))+((a&0x8000)<<1);
+++      if (s>=ggot && s<ggote) {
+++        massert(!write_stub(s,got,gote));
+++      } else
+++        *gote=s+(a&~MASK(16))+((a&0x8000)<<1);
++       break;
++     case R_MIPS_GOT_OFST:
++       store_val(where,MASK(16),a);
++--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf64_mips_reloc_special.h
++@@ -1,4 +1,4 @@
++-static Rela *hr;
+++static ul ggot,ggote; static Rela *hr;
++ 
++ #undef ELF_R_SYM 
++ #define ELF_R_SYM(a_) (a_&0xffffffff) 
++@@ -7,9 +7,66 @@ static Rela *hr;
++ #define ELF_R_FTYPE(a_) ((a_>>56)&0xff)
++ 
++ static int
+++write_stub(ul s,ul *got,ul *gote) {
+++
+++  int *goti;
+++
+++  *gote=(ul)(goti=(void *)(gote+2));
+++  *++gote=s;
+++  s=((void *)gote-(void *)got);
+++  *goti++=(0x37<<26)|(0x1c<<21)|(0x19<<16)|s;
+++  *goti++=(0x37<<26)|(0x19<<21)|(0x19<<16)|0;
+++  *goti++=0x03200008;
+++  *goti++=0x00200825;
+++
+++  return 0;
+++
+++}
+++
+++static int
+++make_got_room_for_stub(Shdr *sec1,Shdr *sece,Sym *sym,const char *st1,ul *gs) {
+++
+++  Shdr *ssec=sec1+sym->st_shndx;
+++  struct node *a;
+++  if ((ssec>=sece || !ALLOC_SEC(ssec)) &&
+++      (a=find_sym_ptable(st1+sym->st_name)) &&
+++      a->address>=ggot && a->address<ggote)
+++    (*gs)+=3;
+++
+++  return 0;
+++
+++}
+++
+++static int
++ find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
++                  const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
++   
+++  Shdr *sec;
+++  ul *q,gotsym=0,locgotno=0,stub,stube;
+++  void *p,*pe;
+++
+++  massert(sec=get_section(".dynamic",sec1,sece,sn));
+++  for (p=(void *)sec->sh_addr,pe=p+sec->sh_size;p<pe;p+=sec->sh_entsize) {
+++    q=p;
+++    if (q[0]==DT_MIPS_GOTSYM)
+++      gotsym=q[1];
+++    if (q[0]==DT_MIPS_LOCAL_GOTNO)
+++      locgotno=q[1];
+++  }
+++  massert(gotsym && locgotno);
+++
+++  massert(sec=get_section(".MIPS.stubs",sec1,sece,sn));
+++  stub=sec->sh_addr;
+++  stube=sec->sh_addr+sec->sh_size;
+++
+++  massert(sec=get_section(".got",sec1,sece,sn));
+++  ggot=sec->sh_addr+locgotno*sec->sh_entsize;
+++  ggote=sec->sh_addr+sec->sh_size;
+++
+++  for (ds1+=gotsym,sym=ds1;sym<dse;sym++)
+++    if (!sym->st_value || (sym->st_value>=stub && sym->st_value<stube))
+++      sym->st_value=ggot+(sym-ds1)*sec->sh_entsize;
+++
++   return 0;
++ 
++ }
++@@ -45,6 +102,8 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++            sym->st_size|=(q<<(a*16));
++          }
++          
+++         massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
+++
++        }
++ 
++        b=sizeof(r->r_addend)*4; 
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -364,3 +364,13 @@ extern bool writable_malloc;
++ #define pfork() prof_block(fork())
++ 
++ #include "error.h"
+++
+++#if __GNU_MP_VERSION > 4 || (__GNU_MP_VERSION == 4 && __GNU_MP_VERSION_MINOR >= 2)
+++extern void __gmp_randget_mt ();
+++extern void __gmp_randclear_mt ();
+++extern void __gmp_randiset_mt ();
+++
+++typedef struct {void *a,*b,*c,*d;} gmp_randfnptr_t;
+++EXTER gmp_randfnptr_t Mersenne_Twister_Generator_Noseed;
+++#endif
+++
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -349,11 +349,7 @@ EXTER char *new_rb_start;                /*  desired r
++ EXTER char *rb_start;                /*  relblock start  */
++ EXTER char *rb_end;                  /*  relblock end  */
++ EXTER char *rb_limit;                        /*  relblock limit  */
++-EXTER char *rb_pointer;              /*  relblock pointer  */
++-
++-#ifndef INLINE
++-#define INLINE
++-#endif
+++EXTER char *rb_pointer;                 /*  relblock pointer  */
++ 
++ INLINE ufixnum
++ rb_size(void) {
++--- gcl-2.6.12.orig/o/big.c
+++++ gcl-2.6.12/o/big.c
++@@ -70,6 +70,32 @@ DEFUN_NEW("SET-GMP-ALLOCATE-RELOCATABLE"
++   RETURN1(flag);
++ }
++ 
+++#ifndef GMP_USE_MALLOC
+++object big_gcprotect;
+++object big_fixnum1;
+++
+++#include "gmp.c"
+++
+++void
+++gcl_init_big1(void) {
+++
+++  mp_set_memory_functions( gcl_gmp_alloc,gcl_gmp_realloc,gcl_gmp_free);
+++  jmp_gmp=0;
+++
+++#if __GNU_MP_VERSION > 4 || (__GNU_MP_VERSION == 4 && __GNU_MP_VERSION_MINOR >= 2)
+++  Mersenne_Twister_Generator_Noseed.b=__gmp_randget_mt;
+++  Mersenne_Twister_Generator_Noseed.c=__gmp_randclear_mt;
+++  Mersenne_Twister_Generator_Noseed.d=__gmp_randiset_mt;
+++#endif
+++
+++}
+++
+++#else
+++gcl_init_big1()
+++{
+++}
+++#endif
+++
++ #ifdef GMP
++ #include "gmp_big.c"
++ #else
++@@ -93,7 +119,6 @@ void zero_big(object x)
++   ZERO_BIG(x);
++ }
++ 
++-
++ #ifndef HAVE_MP_COERCE_TO_STRING
++ 
++ double digitsPerBit[37]={ 0,0,
++--- gcl-2.6.12.orig/o/gmp_big.c
+++++ gcl-2.6.12/o/gmp_big.c
++@@ -81,27 +81,6 @@ static object verify_big_or_zero(object
++ #define verify_big_or_zero(x)
++ #endif
++ 
++-
++- 
++-
++-
++-#ifndef GMP_USE_MALLOC
++-object big_gcprotect;
++-object big_fixnum1;
++-
++-#include "gmp.c"
++-void
++-gcl_init_big1(void) {
++-    mp_set_memory_functions( gcl_gmp_alloc,gcl_gmp_realloc,gcl_gmp_free);
++-    jmp_gmp=0;
++-}
++-
++-#else
++-gcl_init_big1()
++-{
++-}
++-#endif  
++-
++ object
++ new_bignum(void)
++ { object ans;
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -511,9 +511,7 @@ main(int argc, char **argv, char **envp)
++ 
++     terminal_io->sm.sm_object0->sm.sm_fp = stdin;
++     terminal_io->sm.sm_object1->sm.sm_fp = stdout;
++-#ifdef LD_BIND_NOW /*FIXME currently mips only, verify that these two requirements are the same*/
++-    reinit_gmp();
++-#endif
+++
++     gcl_init_big1();
++ #ifdef HAVE_READLINE
++     gcl_init_readline_function();
++--- gcl-2.6.12.orig/o/num_rand.c
+++++ gcl-2.6.12/o/num_rand.c
++@@ -104,34 +104,6 @@ trap_gcl_gmp_allocfun(size_t size){
++ }
++ #endif
++ 
++-#if __GNU_MP_VERSION > 4 || (__GNU_MP_VERSION == 4 && __GNU_MP_VERSION_MINOR >= 2)
++-extern void
++-__gmp_randget_mt ();
++-extern void
++-__gmp_randclear_mt ();
++-extern void
++-__gmp_randiset_mt ();
++-
++-typedef struct {void *a,*b,*c,*d;} gmp_randfnptr_t;
++-static gmp_randfnptr_t Mersenne_Twister_Generator_Noseed = {
++-  NULL,
++-  __gmp_randget_mt,
++-  __gmp_randclear_mt,
++-  __gmp_randiset_mt
++-};
++-#endif
++-
++-void
++-reinit_gmp() {
++-
++-#if __GNU_MP_VERSION > 4 || (__GNU_MP_VERSION == 4 && __GNU_MP_VERSION_MINOR >= 2)
++-  Mersenne_Twister_Generator_Noseed.b=__gmp_randget_mt;
++-  Mersenne_Twister_Generator_Noseed.c=__gmp_randclear_mt;
++-  Mersenne_Twister_Generator_Noseed.d=__gmp_randiset_mt;
++-#endif
++-
++-}
++-
++ void
++ init_gmp_rnd_state(__gmp_randstate_struct *x) {
++ 
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -66,9 +66,7 @@
++       *opt-two* @LI-OPT-TWO@
++       *init-lsp* @LI-INIT-LSP@)
++ 
++-(import 'si::(clines defentry defcfun object void int double
++-                  quit bye gbc system commonp
++-                  *break-on-warnings*
+++(import 'si::(commonp *break-on-warnings*
++                   make-char char-bits char-font char-bit set-char-bit string-char-p int-char
++                   char-font-limit char-bits-limit char-control-bit
++                   char-meta-bit char-super-bit char-hyper-bit compiler-let) :cltl1-compat)
++@@ -79,3 +77,4 @@
++ #-ansi-cl(do-symbols (s :cltl1-compat) (export s :lisp)))
++ 
++ #+ansi-cl (use-package :pcl :user)
+++(import 'si::(clines defentry defcfun object void int double quit bye gbc system) :user)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6e13958b1fe1ff6b33fb938a4bcde52497d30da1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,185 @@@
++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.
++ .
++ gcl (2.6.12-19) unstable; urgency=medium
++ .
++   * Use-dpkg-buidflags-opt-levels-in-debian-rules, -O3 has bug in 5.2.1
++   * Version_2_6_13pre24
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/config.guess
+++++ gcl-2.6.12/config.guess
++@@ -1,8 +1,8 @@
++ #! /bin/sh
++ # Attempt to guess a canonical system name.
++-#   Copyright 1992-2014 Free Software Foundation, Inc.
+++#   Copyright 1992-2015 Free Software Foundation, Inc.
++ 
++-timestamp='2014-03-23'
+++timestamp='2015-08-20'
++ 
++ # This file is free software; you can redistribute it and/or modify it
++ # under the terms of the GNU General Public License as published by
++@@ -24,12 +24,12 @@ timestamp='2014-03-23'
++ # program.  This Exception is an additional permission under section 7
++ # of the GNU General Public License, version 3 ("GPLv3").
++ #
++-# Originally written by Per Bothner.
+++# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
++ #
++ # You can get the latest version of this script from:
++ # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
++ #
++-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+++# Please send patches to <config-patches@gnu.org>.
++ 
++ 
++ me=`echo "$0" | sed -e 's,.*/,,'`
++@@ -50,7 +50,7 @@ version="\
++ GNU config.guess ($timestamp)
++ 
++ Originally written by Per Bothner.
++-Copyright 1992-2014 Free Software Foundation, Inc.
+++Copyright 1992-2015 Free Software Foundation, Inc.
++ 
++ This is free software; see the source for copying conditions.  There is NO
++ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
++@@ -168,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
++      # Note: NetBSD doesn't particularly care about the vendor
++      # portion of the name.  We always set it to "unknown".
++      sysctl="sysctl -n hw.machine_arch"
++-     UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
++-         /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+++     UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+++         /sbin/$sysctl 2>/dev/null || \
+++         /usr/sbin/$sysctl 2>/dev/null || \
+++         echo unknown)`
++      case "${UNAME_MACHINE_ARCH}" in
++          armeb) machine=armeb-unknown ;;
++          arm*) machine=arm-unknown ;;
++          sh3el) machine=shl-unknown ;;
++          sh3eb) machine=sh-unknown ;;
++          sh5el) machine=sh5le-unknown ;;
+++         earmv*)
+++             arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+++             endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+++             machine=${arch}${endian}-unknown
+++             ;;
++          *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
++      esac
++      # The Operating System including object format, if it has switched
++      # to ELF recently, or will in the future.
++      case "${UNAME_MACHINE_ARCH}" in
++-         arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+++         arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
++              eval $set_cc_for_build
++              if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
++                      | grep -q __ELF__
++@@ -197,6 +204,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
++              os=netbsd
++              ;;
++      esac
+++     # Determine ABI tags.
+++     case "${UNAME_MACHINE_ARCH}" in
+++         earm*)
+++             expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+++             abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+++             ;;
+++     esac
++      # The OS release
++      # Debian GNU/NetBSD machines have a different userland, and
++      # thus, need a distinct triplet. However, they do not need
++@@ -207,13 +221,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
++              release='-gnu'
++              ;;
++          *)
++-             release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+++             release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
++              ;;
++      esac
++      # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
++      # contains redundant information, the shorter form:
++      # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
++-     echo "${machine}-${os}${release}"
+++     echo "${machine}-${os}${release}${abi}"
++      exit ;;
++     *:Bitrig:*:*)
++      UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
++@@ -235,6 +249,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
++     *:MirBSD:*:*)
++      echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
++      exit ;;
+++    *:Sortix:*:*)
+++     echo ${UNAME_MACHINE}-unknown-sortix
+++     exit ;;
++     alpha:OSF1:*:*)
++      case $UNAME_RELEASE in
++      *4.0)
++@@ -579,8 +596,9 @@ EOF
++      else
++              IBM_ARCH=powerpc
++      fi
++-     if [ -x /usr/bin/oslevel ] ; then
++-             IBM_REV=`/usr/bin/oslevel`
+++     if [ -x /usr/bin/lslpp ] ; then
+++             IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+++                        awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
++      else
++              IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
++      fi
++@@ -932,6 +950,9 @@ EOF
++     crisv32:Linux:*:*)
++      echo ${UNAME_MACHINE}-axis-linux-${LIBC}
++      exit ;;
+++    e2k:Linux:*:*)
+++     echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+++     exit ;;
++     frv:Linux:*:*)
++      echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++      exit ;;
++@@ -1020,7 +1041,7 @@ EOF
++      echo ${UNAME_MACHINE}-dec-linux-${LIBC}
++      exit ;;
++     x86_64:Linux:*:*)
++-     echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+++     echo ${UNAME_MACHINE}-pc-linux-${LIBC}
++      exit ;;
++     xtensa*:Linux:*:*)
++      echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -66,8 +66,9 @@
++       *opt-two* @LI-OPT-TWO@
++       *init-lsp* @LI-INIT-LSP@)
++ 
++-(import 'si::(commonp *break-on-warnings*
++-                  make-char char-bits char-font char-bit set-char-bit string-char-p int-char
+++(import 'si::(clines defentry defcfun object void int double quit bye gbc system
+++                  commonp *break-on-warnings* make-char char-bits char-font
+++                  char-bit set-char-bit string-char-p int-char
++                   char-font-limit char-bits-limit char-control-bit
++                   char-meta-bit char-super-bit char-hyper-bit compiler-let) :cltl1-compat)
++ (deftype cltl1-compat::string-char nil 'character)
++@@ -77,4 +78,4 @@
++ #-ansi-cl(do-symbols (s :cltl1-compat) (export s :lisp)))
++ 
++ #+ansi-cl (use-package :pcl :user)
++-(import 'si::(clines defentry defcfun object void int double quit bye gbc system) :user)
+++#+ansi-cl (import 'si::(clines defentry defcfun object void int double quit bye gbc system) :user)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..798646de0b18d915e293501e1e3eee60387d0e8a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,235 @@@
++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.
++ .
++ gcl (2.6.12-20) unstable; urgency=medium
++ .
++   * Version_2_6_13pre25
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4435,7 +4435,6 @@ case $use in
++ #                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++                      ;;
++              mips*)
++-                     TCFLAGS="$TCFLAGS -mplt"
++ #                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.6.2
++                      ;;
++              ia64*)
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -640,7 +640,6 @@ case $use in
++ #                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++                      ;;
++              mips*)
++-                     TCFLAGS="$TCFLAGS -mplt"
++ #                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.6.2
++                      ;;
++              ia64*)
++--- gcl-2.6.12.orig/h/elf32_mips_reloc.h
+++++ gcl-2.6.12/h/elf32_mips_reloc.h
++@@ -4,7 +4,12 @@
++       add_val(where,~0L,s+a-(ul)got);
++       break;
++     case R_MIPS_26:
++-      add_val(where,MASK(26),(s+a)>>2);
+++      if (((s+a)>>28)!=(((ul)where)>>28)) {
+++     gote=got+sym->st_size-1;
+++     massert(!write_26_stub(s+a,got,gote));
+++     store_val(where,MASK(26),((ul)gote)>>2);
+++      } else
+++        add_val(where,MASK(26),(s+a)>>2);
++       break;
++     case R_MIPS_32:
++       add_val(where,~0L,s+a);
++@@ -19,7 +24,10 @@
++     case R_MIPS_CALL16:
++       gote=got+sym->st_size-1;
++       store_val(where,MASK(16),((void *)gote-(void *)got));
++-      *gote=s;
+++      if (s>=ggot && s<ggote) {
+++        massert(!write_stub(s,got,gote));
+++      } else
+++        *gote=s;
++       break;
++     case R_MIPS_HI16:
++       if (sym->st_other) s=gpd=(ul)got-(sym->st_other==2 ? 0 : (ul)where);
++--- gcl-2.6.12.orig/h/elf32_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf32_mips_reloc_special.h
++@@ -1,9 +1,88 @@
++-static ul gpd; static Rel *hr;
+++#include <page.h>
+++
+++static ul gpd,ggot,ggote,can_gp; static Rel *hr;
+++
+++typedef struct {
+++  ul addr_hi,addr_lo,jr,nop;
+++} mips_26_tramp;
+++
+++static int
+++write_26_stub(ul s,ul *got,ul *gote) {
+++
+++  static mips_26_tramp t1={(0xf<<26)|(0x0<<21)|(0x19<<16),   /*lui t9*/
+++                        (0xe<<26)|(0x19<<21)|(0x19<<16),  /*ori t9,t9 */
+++                        0x03200008,                       /*jr t9*/
+++                        0x00200825};                      /*mv at,at */;
+++  mips_26_tramp *t=(void *)gote;
+++
+++  *t=t1;
+++  t->addr_hi|=s>>16;
+++  t->addr_lo|=s&0xffff;
+++
+++  return 0;
+++
+++}
+++
+++typedef struct {
+++  ul entry,addr_hi,addr_lo,lw,jr,lwcan;
+++} call_16_tramp;
+++
+++static int
+++write_stub(ul s,ul *got,ul *gote) {
+++
+++  static call_16_tramp t1={0,
+++                        (0xf<<26)|(0x0<<21)|(0x19<<16),   /*lui t9*/
+++                        (0xe<<26)|(0x19<<21)|(0x19<<16),  /*ori t9,t9 */
+++                        (0x23<<26)|(0x19<<21)|(0x19<<16), /*lw t9,(0)t9*/
+++                        0x03200008,                       /*jr t9*/
+++                           /*stub addresses need veneer setting gp to canonical*/
+++                        (0x23<<26)|(0x1c<<21)|(0x1c<<16)};/*lw gp,(0)gp*/
+++  call_16_tramp *t=(void *)gote++;
+++
+++  *t=t1;
+++  *got=can_gp;
+++
+++  t->entry=(ul)gote;
+++  t->addr_hi|=s>>16;
+++  t->addr_lo|=s&0xffff;
+++
+++  return 0;
+++
+++}
++ 
++ static int
++ find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
++                  const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
++   
+++  Shdr *sec;
+++  ul *q,gotsym=0,locgotno=0,stub,stube;
+++  void *p,*pe;
+++
+++  massert(sec=get_section(".dynamic",sec1,sece,sn));
+++  for (p=(void *)sec->sh_addr,pe=p+sec->sh_size;p<pe;p+=sec->sh_entsize) {
+++    q=p;
+++    if (q[0]==DT_MIPS_GOTSYM)
+++      gotsym=q[1];
+++    if (q[0]==DT_MIPS_LOCAL_GOTNO)
+++      locgotno=q[1];
+++    if (q[0]==DT_PLTGOT)
+++      can_gp=q[1]+0x7ff0;
+++
+++  }
+++  massert(gotsym && locgotno && can_gp);
+++
+++  massert(sec=get_section(".MIPS.stubs",sec1,sece,sn));
+++  stub=sec->sh_addr;
+++  stube=sec->sh_addr+sec->sh_size;
+++
+++  massert(sec=get_section(".got",sec1,sece,sn));
+++  ggot=sec->sh_addr+locgotno*sec->sh_entsize;
+++  ggote=sec->sh_addr+sec->sh_size;
+++
+++  for (ds1+=gotsym,sym=ds1;sym<dse;sym++)
+++    if (!sym->st_value || (sym->st_value>=stub && sym->st_value<stube))
+++      sym->st_value=ggot+(sym-ds1)*sec->sh_entsize;
+++
++   return 0;
++ 
++ }
++@@ -13,9 +92,10 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++ 
++   Rel *r;
++   Sym *sym;
++-  Shdr *sec;
+++  Shdr *sec,*ssec;
++   void *v,*ve;
++   ul q;
+++  struct node *a;
++ 
++   for (q=0,sym=sym1;sym<syme;sym++) {
++     const char *s=st1+sym->st_name;
++@@ -29,20 +109,32 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   for (sym=sym1;sym<syme;sym++)
++     sym->st_size=0;
++ 
++-  for (*gs=0,sec=sec1;sec<sece;sec++)
++-    if (sec->sh_type==SHT_REL)
+++  for (*gs=1,sec=sec1;sec<sece;sec++)/*can_gp in got[0]*/
+++    if (sec->sh_type==SHT_REL)/*no addend*/
++       for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++ 
++-     if (ELF_R_TYPE(r->r_info)==R_MIPS_CALL16||
++-         ELF_R_TYPE(r->r_info)==R_MIPS_GOT16) {
+++     if (!(sym=sym1+ELF_R_SYM(r->r_info))->st_size)
++ 
++-       sym=sym1+ELF_R_SYM(r->r_info);
+++       switch(ELF_R_TYPE(r->r_info)) {
++ 
++-       if (!sym->st_size)
++-         sym->st_size=++*gs; 
+++       case R_MIPS_26:
+++         if (((ul)(pagetochar(page(heap_end))+r->r_offset))>>28) {
+++           sym->st_size=++*gs;
+++           (*gs)+=sizeof(mips_26_tramp)/sizeof(ul)-1;
+++         }
+++         break;
+++       case R_MIPS_CALL16:
+++         sym->st_size=++*gs;
+++         if (((ssec=sec1+sym->st_shndx)>=sece || !ALLOC_SEC(ssec)) &&
+++             (a=find_sym_ptable(st1+sym->st_name)) &&
+++             a->address>=ggot && a->address<ggote)
+++           (*gs)+=sizeof(call_16_tramp)/sizeof(ul)-1;
+++         break;
+++       case R_MIPS_GOT16:
+++         sym->st_size=++*gs;
+++         break;
+++       }
++ 
++-     }
++-  
++   return 0;
++   
++ }
++--- gcl-2.6.12.orig/o/nsocket.c
+++++ gcl-2.6.12/o/nsocket.c
++@@ -645,11 +645,11 @@ getCharGclSocket(object strm, object blo
++       { int high;
++       AGAIN:      
++       /* under cygwin a too large timout like (1<<30) does not work */
++-      timeout.tv_sec = (block != Ct ?  0 : 0);
+++      timeout.tv_sec = 0;
++       timeout.tv_usec = 10000;
++       FD_ZERO(&readfds);
++       FD_SET(fd,&readfds);
++-      high = select(fd+1,&readfds,NULL,NULL,&timeout);
+++      high = select(fd+1,&readfds,NULL,NULL,block==Ct ? NULL : &timeout);
++       if (high > 0)
++      { object bufp = SOCKET_STREAM_BUFFER(strm);
++      int n;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fea955b1c951474b82a236281196aee710a3db15
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,161 @@@
++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.
++ .
++ gcl (2.6.12-21) unstable; urgency=medium
++ .
++   * Version_2_6_13pre26
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/att_ext.h
+++++ gcl-2.6.12/h/att_ext.h
++@@ -217,6 +217,10 @@ frame_ptr frs_sch_catch();
++ /*  gbc.c  */
++ EXTER bool GBC_enable;
++ 
+++#ifdef CAN_UNRANDOMIZE_SBRK
+++EXTER bool gcl_unrandomized;
+++#endif
+++
++ /*  let.c  */
++ 
++ /*  lex.c  */
++--- gcl-2.6.12.orig/h/gnuwin95.h
+++++ gcl-2.6.12/h/gnuwin95.h
++@@ -7,15 +7,6 @@
++ #define DBEGIN_TY unsigned long
++ extern DBEGIN_TY _dbegin;
++ 
++-
++-
++-/* define if there is no _cleanup,   do here what needs
++-   to be done before calling unexec
++-   */   
++-#define CLEANUP_CODE \
++-  setbuf(stdin,0); \
++-   setbuf(stdout,0);
++-
++ /* size to use for mallocs done  */
++ /* #define BABY_MALLOC_SIZE 0x5000 */
++ 
++--- gcl-2.6.12.orig/h/linux.h
+++++ gcl-2.6.12/h/linux.h
++@@ -130,10 +130,6 @@ do { int c = 0; \
++ 
++ #define SET_SESSION_ID() (setpgrp() ? -1 : 0)
++ 
++-#define CLEANUP_CODE \
++-  setbuf(stdin,0); \
++-   setbuf(stdout,0);
++-
++ #include <limits.h>
++ #include <sys/stat.h>
++ #define GET_FULL_PATH_SELF(a_) do {\
++--- gcl-2.6.12.orig/h/mingw.h
+++++ gcl-2.6.12/h/mingw.h
++@@ -47,13 +47,6 @@
++ #define DBEGIN_TY unsigned int
++ extern DBEGIN_TY _stacktop, _stackbottom, _dbegin;
++ 
++-/* define if there is no _cleanup,   do here what needs
++-   to be done before calling unexec
++-   */   
++-#define CLEANUP_CODE \
++-  setbuf(stdin,0); \
++-  setbuf(stdout,0);
++-
++ #define NO_SYS_PARAM_H
++ #define NO_SYS_TIMES_H
++ 
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -1796,6 +1796,10 @@ malloc(size_t size) {
++ 
++   if (!gcl_alloc_initialized)
++     gcl_init_alloc(&size);
+++#ifdef CAN_UNRANDOMIZE_SBRK
+++  else if (!gcl_unrandomized)
+++    return sbrk(size);
+++#endif
++   
++   CHECK_INTERRUPT;
++   
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -412,16 +412,18 @@ DEFVAR("*CODE-BLOCK-RESERVE*",sSAcode_bl
++ 
++ #define HAVE_GCL_CLEANUP
++ 
+++#ifdef CAN_UNRANDOMIZE_SBRK
+++bool gcl_unrandomized=FALSE;
+++#endif
+++
++ void
++ gcl_cleanup(int gc) {
++ 
++   if (getenv("GCL_WAIT"))
++     sleep(30);
++   
++-#ifdef CLEANUP_CODE
++-  CLEANUP_CODE
++-#elif defined(USE_CLEANUP)
++-    {extern void _cleanup(void);_cleanup();}
+++#if defined(USE_CLEANUP)
+++  {extern void _cleanup(void);_cleanup();}
++ #endif
++ 
++ #ifdef GCL_GPROF
++@@ -440,6 +442,10 @@ gcl_cleanup(int gc) {
++     cs_org=0;
++     initial_sbrk=core_end;
++ 
+++#ifdef CAN_UNRANDOMIZE_SBRK
+++    gcl_unrandomized=FALSE;
+++#endif
+++
++   }
++ 
++   close_pool();
++@@ -450,6 +456,13 @@ gcl_cleanup(int gc) {
++ int
++ main(int argc, char **argv, char **envp) {
++ 
+++#ifdef CAN_UNRANDOMIZE_SBRK
+++#include <stdio.h>
+++#include <stdlib.h>
+++#include "unrandomize.h"
+++  gcl_unrandomized=TRUE;
+++#endif
+++
++   gcl_init_alloc(&argv);
++ 
++ #ifdef GET_FULL_PATH_SELF
++@@ -465,12 +478,6 @@ main(int argc, char **argv, char **envp)
++ #endif       
++   *argv=kcl_self;
++   
++-#ifdef CAN_UNRANDOMIZE_SBRK
++-#include <stdio.h>
++-#include <stdlib.h>
++-#include "unrandomize.h"
++-#endif
++-  
++   setbuf(stdin, stdin_buf); 
++   setbuf(stdout, stdout_buf);
++ #ifdef _WIN32
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..563b08d5bcc538df6c837ac160f2ac321731eeed
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,353 @@@
++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.
++ .
++ gcl (2.6.12-23) unstable; urgency=medium
++ .
++   * Version_2_6_13pre28
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/linux.h
+++++ gcl-2.6.12/h/linux.h
++@@ -132,20 +132,18 @@ do { int c = 0; \
++ 
++ #include <limits.h>
++ #include <sys/stat.h>
++-#define GET_FULL_PATH_SELF(a_) do {\
++- char b[20];\
++- static char q[PATH_MAX];\
++- struct stat ss;\
++- if (snprintf(b,sizeof(b),"/proc/%d/exe",getpid())<=0)\
++-   error("Cannot write proc exe pathname");\
++- if (stat(b,&ss)) \
++-   (a_)=argv[0];\
++- else {\
++-   if (!realpath(b,q)) \
++-     error("realpath error");\
++-   (a_)=q;\
++- }\
++-} while(0)
+++#define GET_FULL_PATH_SELF(a_) do {          \
+++    static char q[PATH_MAX];                 \
+++    const char *s="/proc/self/exe";          \
+++    struct stat ss;                          \
+++    if (stat(s,&ss))                         \
+++      (a_)=argv[0];                          \
+++    else {                                   \
+++      if (!realpath(s,q))                    \
+++     error("realpath error");                \
+++      (a_)=q;                                        \
+++    }                                                \
+++  } while(0)
++ 
++ 
++ #define UC(a_) ((ucontext_t *)a_)
++--- gcl-2.6.12.orig/h/unrandomize.h
+++++ gcl-2.6.12/h/unrandomize.h
++@@ -23,6 +23,7 @@
++      int i,j,k;
++      char **n,**a;
++      void *v;
+++     argv[0]="/proc/self/exe";
++      for (i=j=0;argv[i];i++)
++        j+=strlen(argv[i])+1;
++      for (k=0;envp[k];k++)
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -351,7 +351,8 @@ resize_hole(ufixnum hp,enum type tp,bool
++ 
++   if (!in_placep &&
++       ((new_start<=start && start<new_start+size) || (new_start<start+size && start+size<=new_start+size))) {
++-    emsg("Toggling relblock when resizing hole to %lu\n",hp);
+++    if (sSAnotify_gbcA->s.s_dbind != Cnil)
+++      emsg("Toggling relblock when resizing hole to %lu\n",hp);
++     tm_table[t_relocatable].tm_adjgbccnt--;
++     GBC(t_relocatable);
++     return resize_hole(hp,tp,in_placep);
++@@ -387,7 +388,8 @@ alloc_page(long n) {
++       d=d<0 ? 0 : d;
++       d=(available_pages/3)<d ? (available_pages/3) : d;
++       
++-      emsg("Hole overrun\n");
+++      if (sSAnotify_gbcA && sSAnotify_gbcA->s.s_dbind != Cnil)
+++     emsg("Hole overrun\n");
++ 
++       resize_hole(d+nn,t_relocatable,0);
++ 
++@@ -857,7 +859,8 @@ add_pages(struct typemanager *tm,fixnum
++   case t_relocatable:
++ 
++     if (rb_high() && m>((rb_start-heap_end)>>PAGEWIDTH)) {
++-      emsg("Moving relblock low before expanding relblock pages\n");
+++      if (sSAnotify_gbcA->s.s_dbind != Cnil)
+++     emsg("Moving relblock low before expanding relblock pages\n");
++       tm_table[t_relocatable].tm_adjgbccnt--;
++       GBC(t_relocatable);
++     }
++@@ -1652,22 +1655,15 @@ DEFUN_NEW("GPROF-QUIT",object,fSgprof_qu
++   if (!gprof_on)
++     return Cnil;
++ 
++-  if (!getcwd(b,sizeof(b)))
++-    FEerror("Cannot get working directory", 0);
++-  if (chdir(P_tmpdir))
++-    FEerror("Cannot change directory to tmpdir", 0);
+++  massert(getcwd(b,sizeof(b)));
+++  massert(!chdir(P_tmpdir));
++   _mcleanup();
++-  if (snprintf(b1,sizeof(b1),"gprof %s",kcl_self)<=0)
++-    FEerror("Cannot write gprof command line", 0);
++-  if (!(pp=popen(b1,"r")))
++-    FEerror("Cannot open gprof pipe", 0);
+++  massert(snprintf(b1,sizeof(b1),"gprof %s",kcl_self)>0);
+++  massert((pp=popen(b1,"r")));
++   while ((n=fread(b1,1,sizeof(b1),pp)))
++-    if (!fwrite(b1,1,n,stdout))
++-      FEerror("Cannot write gprof output",0);
++-  if (pclose(pp)<0)
++-    FEerror("Cannot close gprof pipe", 0);
++-  if (chdir(b))
++-    FEerror("Cannot restore working directory", 0);
+++    massert(fwrite(b1,1,n,stdout));
+++  massert(pclose(pp)>=0);
+++  massert(!chdir(b));
++   gprof_on=0;
++ 
++   return Cnil;
++@@ -1785,28 +1781,37 @@ static char *baby_malloc(n)
++ 
++ bool writable_malloc=0;
++ 
++-void *
++-malloc(size_t size) {
++-
++-  static bool in_malloc;
++-
++-  if (in_malloc)
++-    return NULL;
++-  in_malloc=1;
+++static void *
+++malloc_internal(size_t size) {
++ 
++-  if (!gcl_alloc_initialized)
++-    gcl_init_alloc(&size);
++ #ifdef CAN_UNRANDOMIZE_SBRK
++-  else if (!gcl_unrandomized)
++-    return sbrk(size);
+++  if (core_end && core_end!=sbrk(0))/*malloc before main in saved_image*/
+++    return sbrk(size);/*will never get to gcl_init_alloc, so brk point irrelevant*/
++ #endif
++-  
+++  if (!gcl_alloc_initialized) {
+++    static bool recursive_malloc;
+++    if (recursive_malloc)
+++      error("Bad malloc");
+++    recursive_malloc=1;
+++    gcl_init_alloc(&size);
+++    recursive_malloc=0;
+++  }
+++
++   CHECK_INTERRUPT;
++   
++   malloc_list = make_cons(alloc_simple_string(size), malloc_list);
++   malloc_list->c.c_car->st.st_self = alloc_contblock(size);
++   malloc_list->c.c_car->st.st_adjustable=writable_malloc;
++   
+++  return(malloc_list->c.c_car->st.st_self);
+++
+++}
+++
+++void *
+++malloc(size_t size) {
+++
+++  void *v=malloc_internal(size);;
+++
++   /* FIXME: this is just to handle clean freeing of the
++      monstartup memory allocated automatically on raw image
++      startup.  In saved images, monstartup memory is only
++@@ -1814,12 +1819,11 @@ malloc(size_t size) {
++ #ifdef GCL_GPROF
++   if (raw_image && size>(textend-textstart) && !initial_monstartup_pointer) {
++     massert(!atexit(gprof_cleanup));
++-    initial_monstartup_pointer=malloc_list->c.c_car->st.st_self;
+++    initial_monstartup_pointer=v;
++   }
++ #endif
++   
++-  in_malloc=0;
++-  return(malloc_list->c.c_car->st.st_self);
+++  return v;
++   
++ }
++ 
++--- gcl-2.6.12.orig/o/error.c
+++++ gcl-2.6.12/o/error.c
++@@ -35,7 +35,7 @@ object sSterminal_interrupt;
++ void
++ assert_error(const char *a,unsigned l,const char *f,const char *n) {
++ 
++-  if (!raw_image)
+++  if (!raw_image && core_end && core_end==sbrk(0))
++     FEerror("The assertion ~a on line ~a of ~a in function ~a failed",4,
++          make_simple_string(a),make_fixnum(l),
++          make_simple_string(f),make_simple_string(n));
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -1170,15 +1170,15 @@ GBC(enum type t) {
++       gc_time=0;
++ 
++ #ifdef SGC
++-    printf("[%s for %ld %s pages..",
++-        (sgc_enabled ? "SGC" : "GC"),
++-        (sgc_enabled ? sgc_count_type(t) : tm_of(t)->tm_npage),
++-        (tm_table[(int)t].tm_name)+1);
+++    emsg("[%s for %ld %s pages..",
+++      (sgc_enabled ? "SGC" : "GC"),
+++      (sgc_enabled ? sgc_count_type(t) : tm_of(t)->tm_npage),
+++      (tm_table[(int)t].tm_name)+1);
++ #else
++-    printf("[%s for %ld %s pages..",
++-        ("GC"),
++-        (tm_of(t)->tm_npage),
++-        (tm_table[(int)t].tm_name)+1);
+++    emsg("[%s for %ld %s pages..",
+++      ("GC"),
+++      (tm_of(t)->tm_npage),
+++      (tm_table[(int)t].tm_name)+1);
++ #endif
++ 
++ #ifdef SGC
++@@ -1349,10 +1349,9 @@ GBC(enum type t) {
++   if (sSAnotify_gbcA->s.s_dbind != Cnil) {
++     
++     if (gc_recursive)
++-      fprintf(stdout, "(T=...).GC finished]\n");
+++      emsg("(T=...).GC finished]\n");
++     else
++-      fprintf(stdout, "(T=%d).GC finished]\n",gc_start);
++-    fflush(stdout);
+++      emsg("(T=%d).GC finished]\n",gc_start);
++ 
++   }
++   
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -205,21 +205,21 @@ get_proc_meminfo_value_in_pages(const ch
++   return n>>(PAGEWIDTH-10);
++ }
++ 
+++#include <sys/sysinfo.h>
+++
++ static ufixnum
++ get_phys_pages_no_malloc(char freep) {
++ 
++-  return freep ? 
++-    get_proc_meminfo_value_in_pages("MemFree:")+
++-    get_proc_meminfo_value_in_pages("Buffers:")+
++-    get_proc_meminfo_value_in_pages("Cached:") :
++-    get_proc_meminfo_value_in_pages("MemTotal:");
+++  struct sysinfo s;
+++  sysinfo(&s);
+++  return (freep ? s.freeram : s.totalram)>>PAGEWIDTH;
++   
++ }
++ 
++ #endif
++ 
++ static ufixnum
++-get_phys_pages(char freep) {
+++get_phys_pages1(char freep) {
++ 
++   return get_phys_pages_no_malloc(freep);
++ 
++@@ -313,7 +313,7 @@ update_real_maxpage(void) {
++       }
++   massert(!mbrk(cur));
++ 
++-  phys_pages=ufmin(get_phys_pages(0)+page(beg),real_maxpage)-page(beg);
+++  phys_pages=ufmin(get_phys_pages1(0)+page(beg),real_maxpage)-page(beg);
++ 
++   get_gc_environ();
++   setup_maxpages(mem_multiple);
++@@ -412,10 +412,6 @@ DEFVAR("*CODE-BLOCK-RESERVE*",sSAcode_bl
++ 
++ #define HAVE_GCL_CLEANUP
++ 
++-#ifdef CAN_UNRANDOMIZE_SBRK
++-bool gcl_unrandomized=FALSE;
++-#endif
++-
++ void
++ gcl_cleanup(int gc) {
++ 
++@@ -442,10 +438,6 @@ gcl_cleanup(int gc) {
++     cs_org=0;
++     initial_sbrk=core_end;
++ 
++-#ifdef CAN_UNRANDOMIZE_SBRK
++-    gcl_unrandomized=FALSE;
++-#endif
++-
++   }
++ 
++   close_pool();
++@@ -460,7 +452,6 @@ main(int argc, char **argv, char **envp)
++ #include <stdio.h>
++ #include <stdlib.h>
++ #include "unrandomize.h"
++-  gcl_unrandomized=TRUE;
++ #endif
++ 
++   gcl_init_alloc(&argv);
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -181,8 +181,7 @@ relocate(Sym *sym1,void *v,ul a,ul start
++ #include RELOC_H
++ 
++   default:
++-    emsg("Unknown reloc type %lu\n", tp);
++-    massert(tp&~tp);
+++    massert(!emsg("Unknown reloc type %lu\n", tp));
++ 
++   }
++ 
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -789,10 +789,8 @@ sgc_start(void) {
++   sgc_enabled=1;
++   if (memory_protect(1)) 
++     sgc_quit();
++-  if (sSAnotify_gbcA->s.s_dbind != Cnil) {
++-    printf("[SGC on]"); 
++-    fflush(stdout);
++-  }
+++  if (sSAnotify_gbcA->s.s_dbind != Cnil)
+++    emsg("[SGC on]");
++ 
++   sSAoptimize_maximum_pagesA->s.s_dbind=omp;
++ 
++@@ -826,7 +824,7 @@ sgc_quit(void) {
++   memory_protect(0);
++ 
++   if(sSAnotify_gbcA->s.s_dbind != Cnil) 
++-    printf("[SGC off]"); fflush(stdout);
+++    emsg("[SGC off]");
++ 
++   if (sgc_enabled==0) 
++     return 0;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9752a18733e0775606f6606976edb77e5f28e45a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,47 @@@
++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.
++ .
++ gcl (2.6.12-23) unstable; urgency=medium
++ .
++   * Version_2_6_13pre28
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -1203,8 +1203,8 @@ object malloc_list=Cnil;
++ 
++ void
++ maybe_set_hole_from_maxpages(void) {
++-  if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start)
++-    resize_hole(available_pages/3,t_relocatable,0);
+++  if (rb_pointer==rb_begin())
+++    resize_hole(ufmin(phys_pages,available_pages/3),t_relocatable,0);
++ }
++ 
++ void
++@@ -1358,7 +1358,7 @@ gcl_init_alloc(void *cs_start) {
++   set_tm_maxpage(tm_table+t_relocatable,1);
++   nrbpage=0;
++   
++-  resize_hole(ufmin(phys_pages,available_pages/3),t_relocatable,0);
+++  maybe_set_hole_from_maxpages();
++ #ifdef SGC   
++   tm_table[(int)t_relocatable].tm_sgc = 50;
++ #endif
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e33607954d4b7bd7006dc76e0b1402e6cddeec70
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,124 @@@
++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.
++ .
++ gcl (2.6.12-3) unstable; urgency=medium
++ .
++   * Version_2_6_13pre2
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1938,3 +1938,6 @@ check_avail_pages(void);
++ 
++ inline int
++ mbrk(void *);
+++
+++void
+++maybe_set_hole_from_maxpages(void);
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -259,19 +259,15 @@ eg to add 20 more do (si::set-hole-size
++ 
++     holepage -= nn;
++     heap_end=v;
++-    return e;
++ 
+++  } else if (v>(void *)core_end) {
+++    
+++    massert(!mbrk(v));
+++    core_end=v;
+++    
++   }
++-
++-  if (nn<=(core_end-heap_end)/PAGESIZE)
++-    return(heap_end);
++-
++-  if (mbrk(v))
++-    error("Can't allocate.  Good-bye!");
++-
++-  core_end=v;
++-
++-  return(heap_end);
+++  
+++  return(e);
++ 
++ }
++ 
++@@ -1177,6 +1173,15 @@ object malloc_list=Cnil;
++ #include <signal.h>
++ 
++ void
+++maybe_set_hole_from_maxpages(void) {
+++  if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start) {
+++    holepage=new_holepage;
+++    alloc_page(-holepage);
+++    rb_start=rb_end=rb_limit=rb_pointer=heap_end+(holepage<<PAGEWIDTH);
+++  }
+++}
+++
+++void
++ gcl_init_alloc(void *cs_start) {
++ 
++   fixnum cssize=(1L<<23);
++@@ -1261,11 +1266,7 @@ gcl_init_alloc(void *cs_start) {
++   update_real_maxpage();
++ 
++   if (gcl_alloc_initialized) {
++-    if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start) {
++-      holepage=new_holepage;
++-      alloc_page(-holepage);
++-      rb_start=rb_end=rb_limit=rb_pointer=heap_end+(holepage<<PAGEWIDTH);
++-    }
+++    maybe_set_hole_from_maxpages();
++     return;
++   }
++   
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -327,6 +327,7 @@ DEFUN_NEW("SET-LOG-MAXPAGE-BOUND",object
++     minimize_image();
++     log_maxpage_bound=l;
++     update_real_maxpage();
+++    maybe_set_hole_from_maxpages();
++   }
++ 
++   return (object)log_maxpage_bound;
++--- gcl-2.6.12.orig/o/symbol.d
+++++ gcl-2.6.12/o/symbol.d
++@@ -533,8 +533,8 @@ DEFVAR("*GENSYM-COUNTER*",sLgensym_count
++      set_up_string_register("");
++      sym = make_symbol(string_register);
++      {BEGIN_NO_INTERRUPT;    
++-     sym->s.s_fillp = i;
++      sym->s.s_self = alloc_relblock(i);
+++     sym->s.s_fillp = i;
++      i=this_gensym_prefix->st.st_fillp;
++      for (j = 0;  j < i;  j++)
++              sym->s.s_self[j] = this_gensym_prefix->st.st_self[j];
++--- gcl-2.6.12.orig/pcl/makefile
+++++ gcl-2.6.12/pcl/makefile
++@@ -17,6 +17,7 @@ SETUP='(load "defsys.lisp")' \
++      '(setq compiler::*default-c-file* t)'\
++      '(setq compiler::*default-data-file* t)'\
++      '(setq compiler::*default-system-p* t)' \
+++     '(setq si::*code-block-reserve* (make-array 10000000 :element-type (quote character) :static t) a nil)' \
++      '(setq compiler::*keep-gaz* t compiler::*tmp-dir* "")'
++ 
++ all: $(addsuffix .c,$(AFILES)) $(addsuffix .o,$(AFILES)) 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..20b2b33f5133a1c4b5ee0b28b953116d390d18cb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,111 @@@
++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.
++ .
++ gcl (2.6.12-23) unstable; urgency=medium
++ .
++   * Version_2_6_13pre29
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4435,6 +4435,10 @@ case $use in
++ #                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++                      ;;
++              mips*)
+++                     case $canonical in
+++                     mips64*linux*)
+++                             TLIBS="$TLIBS -Wl,-z -Wl,now";;
+++                     esac
++ #                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.6.2
++                      ;;
++              ia64*)
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -640,6 +640,10 @@ case $use in
++ #                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++                      ;;
++              mips*)
+++                     case $canonical in
+++                     mips64*linux*)
+++                             TLIBS="$TLIBS -Wl,-z -Wl,now";;
+++                     esac
++ #                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.6.2
++                      ;;
++              ia64*)
++--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf64_mips_reloc_special.h
++@@ -6,18 +6,28 @@ static ul ggot,ggote; static Rela *hr;
++ #define ELF_R_TYPE(a_) (((a_>>40)&0xff) ? ((a_>>40)&0xff) : ((a_>>56)&0xff)) 
++ #define ELF_R_FTYPE(a_) ((a_>>56)&0xff)
++ 
+++typedef struct {
+++  ul entry,gotoff;
+++  unsigned int ld_gotoff,lw,jr,lwcan;
+++} call_16_tramp;
+++
++ static int
++ write_stub(ul s,ul *got,ul *gote) {
++ 
++-  int *goti;
++-
++-  *gote=(ul)(goti=(void *)(gote+2));
++-  *++gote=s;
++-  s=((void *)gote-(void *)got);
++-  *goti++=(0x37<<26)|(0x1c<<21)|(0x19<<16)|s;
++-  *goti++=(0x37<<26)|(0x19<<21)|(0x19<<16)|0;
++-  *goti++=0x03200008;
++-  *goti++=0x00200825;
+++  static call_16_tramp t1={0,0,
+++                        (0x37<<26)|(0x1c<<21)|(0x19<<16), /*ld t9,(0)gp*/
+++                        (0x37<<26)|(0x19<<21)|(0x19<<16), /*ld t9,(0)t9*/
+++                        0x03200008,                       /*jr t9*/
+++                        0                                 /*nop*/
+++  };
+++  call_16_tramp *t=(void *)gote;
+++
+++  *t=t1;
+++  *got=can_gp;
+++
+++  t->entry=(ul)(gote+2);
+++  t->gotoff=s;
+++  t->ld_gotoff|=((void *)(gote+1)-(void *)got);
++ 
++   return 0;
++ 
++@@ -31,7 +41,7 @@ make_got_room_for_stub(Shdr *sec1,Shdr *
++   if ((ssec>=sece || !ALLOC_SEC(ssec)) &&
++       (a=find_sym_ptable(st1+sym->st_name)) &&
++       a->address>=ggot && a->address<ggote)
++-    (*gs)+=3;
+++    (*gs)+=sizeof(call_16_tramp)/sizeof(ul)-1;
++ 
++   return 0;
++ 
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -212,7 +212,7 @@ get_phys_pages_no_malloc(char freep) {
++ 
++   struct sysinfo s;
++   sysinfo(&s);
++-  return (freep ? s.freeram : s.totalram)>>PAGEWIDTH;
+++  return ((freep ? s.freeram : s.totalram)>>PAGEWIDTH)*s.mem_unit;
++   
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4ec9d79bf62f203bc629ca2c4e991717de3949b2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,115 @@@
++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.
++ .
++ gcl (2.6.12-24) unstable; urgency=medium
++ .
++   * Version_2_6_13pre30
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/386-kfreebsd.h
+++++ gcl-2.6.12/h/386-kfreebsd.h
++@@ -46,3 +46,4 @@
++ #define RELOC_H "elf32_i386_reloc.h"
++ 
++ #define BRK_DOES_NOT_GUARANTEE_ALLOCATION
+++#define FREEBSD
++--- gcl-2.6.12.orig/h/amd64-kfreebsd.h
+++++ gcl-2.6.12/h/amd64-kfreebsd.h
++@@ -23,3 +23,4 @@
++ #define RELOC_H "elf64_i386_reloc.h"
++ 
++ #define BRK_DOES_NOT_GUARANTEE_ALLOCATION
+++#define FREEBSD
++--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf64_mips_reloc_special.h
++@@ -23,7 +23,6 @@ write_stub(ul s,ul *got,ul *gote) {
++   call_16_tramp *t=(void *)gote;
++ 
++   *t=t1;
++-  *got=can_gp;
++ 
++   t->entry=(ul)(gote+2);
++   t->gotoff=s;
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -152,6 +152,7 @@ mbrk(void *v) {
++ 
++ static ufixnum
++ get_phys_pages_no_malloc(char n) {
+++
++   MEMORYSTATUS m;
++ 
++   m.dwLength=sizeof(m);
++@@ -166,6 +167,7 @@ get_phys_pages_no_malloc(char n) {
++ 
++ static ufixnum
++ get_phys_pages_no_malloc(char n) {
+++
++   uint64_t s;
++   size_t z=sizeof(s);
++   int m[2]={CTL_HW,HW_MEMSIZE};
++@@ -186,33 +188,30 @@ get_phys_pages_no_malloc(char n) {
++ 
++ }
++ 
++-#else 
+++#elif defined(FREEBSD)
+++
+++#include <sys/types.h>
+++#include <sys/sysctl.h>
+++
+++static ufixnum
+++get_phys_pages_no_malloc(char n) {
+++
+++  size_t i,len=sizeof(i);
++ 
++-ufixnum
++-get_proc_meminfo_value_in_pages(const char *k) {
++-  int l,m;
++-  char b[PAGESIZE],*c;
++-  ufixnum n;
+++  return (sysctlbyname("hw.physmem",&i,&len,NULL,0) ? 0 : i)>>PAGEWIDTH;
++   
++-  massert((l=open("/proc/meminfo",O_RDONLY))!=-1);
++-  massert((n=read(l,b,sizeof(b)))<sizeof(b));
++-  b[n]=0;
++-  massert(!close(l));
++-  massert((c=strstr(b,k)));
++-  c+=strlen(k);
++-  massert(sscanf(c,"%lu%n",&n,&m)==1);
++-  massert(!strncmp(c+m," kB\n",4));
++-  return n>>(PAGEWIDTH-10);
++ }
++ 
+++#else /*Linux*/
+++
++ #include <sys/sysinfo.h>
++ 
++ static ufixnum
++ get_phys_pages_no_malloc(char freep) {
++ 
++   struct sysinfo s;
++-  sysinfo(&s);
++-  return ((freep ? s.freeram : s.totalram)>>PAGEWIDTH)*s.mem_unit;
+++
+++  return sysinfo(&s) ? 0 : ((freep ? s.freeram : s.totalram)>>PAGEWIDTH)*s.mem_unit;
++   
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4c42fbf6f20df6831ccc9b68fae394e9178f3c36
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,57 @@@
++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.
++ .
++ gcl (2.6.12-25) unstable; urgency=medium
++ .
++   * Version_2_6_13pre31, kfreebsd and mips64 FTBFS fix
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/elf64_mips_reloc.h
+++++ gcl-2.6.12/h/elf64_mips_reloc.h
++@@ -1,6 +1,7 @@
++     case R_MIPS_JALR:
++       break;
++     case R_MIPS_64:
+++      if (ELF_R_FTYPE(r->r_info)==R_MIPS_GPREL32) s-=(ul)got;
++       add_val(where,~0L,s+a);
++       break;
++     case R_MIPS_GPREL32:
++--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf64_mips_reloc_special.h
++@@ -3,7 +3,7 @@ static ul ggot,ggote; static Rela *hr;
++ #undef ELF_R_SYM 
++ #define ELF_R_SYM(a_) (a_&0xffffffff) 
++ #undef ELF_R_TYPE 
++-#define ELF_R_TYPE(a_) (((a_>>40)&0xff) ? ((a_>>40)&0xff) : ((a_>>56)&0xff)) 
+++#define ELF_R_TYPE(a_) (((a_>>40)&0xff) ? ((a_>>40)&0xff) : (((a_>>48)&0xff) ? ((a_>>48)&0xff) : ((a_>>56)&0xff)))
++ #define ELF_R_FTYPE(a_) ((a_>>56)&0xff)
++ 
++ typedef struct {
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -179,7 +179,7 @@ get_phys_pages_no_malloc(char n) {
++ 
++ }
++ 
++-#elif defined(__sun__)
+++#elif defined(__sun__) || defined(__GNU__)
++ 
++ static ufixnum
++ get_phys_pages_no_malloc(char n) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3f918464bbd0b5c643ea223eb381cee55b685538
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,232 @@@
++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.
++ .
++ gcl (2.6.12-26) unstable; urgency=medium
++ .
++   * Version_2_6_13pre32
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -161,7 +161,7 @@
++ 
++ 
++ (defun compile-file1 (input-pathname
++-                      &key (output-file input-pathname)
+++                      &key (output-file (truename input-pathname))
++                            (o-file t)
++                            (c-file *default-c-file*)
++                            (h-file *default-h-file*)
++--- gcl-2.6.12.orig/h/elf64_mips_reloc.h
+++++ gcl-2.6.12/h/elf64_mips_reloc.h
++@@ -1,18 +1,28 @@
++     case R_MIPS_JALR:
++       break;
++-    case R_MIPS_64:
++-      if (ELF_R_FTYPE(r->r_info)==R_MIPS_GPREL32) s-=(ul)got;
++-      add_val(where,~0L,s+a);
++-      break;
++     case R_MIPS_GPREL32:
+++      recurse(s+a-(ul)got);
++       add_val(where,MASK(32),s+a-(ul)got);
++       break;
+++    case R_MIPS_GPREL16:
+++      recurse(s+a-(ul)got);
+++      add_val(where,MASK(16),s+a-(ul)got);
+++      break;
+++    case R_MIPS_SUB:
+++      recurse(-(s+a));
+++      break;/*???*/
+++    case R_MIPS_64:
+++      recurse(s+a);
+++      add_val(where,~0L,s+a);
+++      break;
++     case R_MIPS_32:
+++      recurse(s+a);
++       add_val(where,MASK(32),s+a);
++       break;
++     case R_MIPS_GOT_DISP:
++     case R_MIPS_CALL16:
++     case R_MIPS_GOT_PAGE:
+++      recurse(s+a);
++       gote=got+(a>>32)-1;
++       a&=MASK(32);
++       store_val(where,MASK(16),((void *)gote-(void *)got));
++@@ -22,28 +32,27 @@
++         *gote=s+(a&~MASK(16))+((a&0x8000)<<1);
++       break;
++     case R_MIPS_GOT_OFST:
+++      recurse(s+a);
++       store_val(where,MASK(16),a);
++       break;
++     case R_MIPS_HI16:
++-      s+=a&MASK(32);
++-      if (ELF_R_FTYPE(r->r_info)==R_MIPS_GPREL16) s=(ul)got-s;
+++      recurse(s+a);
++       if (!hr) hr=(void *)r;
++-      if (a&(1L<<32)) add_vals(where,MASK(16),(s+(a>>32))>>16);
+++      if (lr)/*==(Rela *)r*/
+++     add_vals(where,MASK(16),(s+a+la)>>16);
++       break;
++     case R_MIPS_LO16:
+++      recurse(s+a);
++       s+=a;
++-      if (ELF_R_FTYPE(r->r_info)==R_MIPS_GPREL16) s=(ul)got-s;
++       a=*where&MASK(16);
++       if (a&0x8000) a|=0xffffffffffff0000; 
++       a+=s&MASK(16);
++       a+=(a&0x8000)<<1; 
++       store_val(where,MASK(16),a);
++-      a&=~MASK(16);
++-      {
++-        Rela *ra=(void *)r;                          
++-        for (hr=hr ? hr : (void *)ra;--ra>=hr;)
++-       if (ELF_R_TYPE(ra->r_info)==R_MIPS_HI16)
++-         relocate(sym1,ra,ra->r_addend|(1L<<32)|(a<<32),start,got,gote);
++-      }
++-      hr=NULL;
+++      for (la=a&~MASK(16),lr=(Rela *)r,hr=hr ? hr : lr;--lr>=hr;)
+++        if (ELF_R_TYPE1(lr->r_info)==R_MIPS_HI16||
+++            ELF_R_TYPE2(lr->r_info)==R_MIPS_HI16||
+++            ELF_R_TYPE3(lr->r_info)==R_MIPS_HI16)
+++          relocate(sym1,lr,lr->r_addend,start,got,gote);
+++      hr=lr=NULL;
++       break;
++--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf64_mips_reloc_special.h
++@@ -1,10 +1,21 @@
++-static ul ggot,ggote; static Rela *hr;
+++static ul ggot,ggote,la; static Rela *hr,*lr;
++ 
++ #undef ELF_R_SYM 
++ #define ELF_R_SYM(a_) (a_&0xffffffff) 
+++#define ELF_R_TYPE1(a_) ((a_>>56)&0xff)
+++#define ELF_R_TYPE2(a_) ((a_>>48)&0xff)
+++#define ELF_R_TYPE3(a_) ((a_>>40)&0xff)
+++#define recurse(val) ({                                                      \
+++      if (ELF_R_TYPE2(r->r_info)) {                                  \
+++     ul i=r->r_info;                                                 \
+++     r->r_info=(((r->r_info>>32)&MASK(24))<<40)|(r->r_info&MASK(32)); \
+++     relocate(sym1,r,(val)-s,start,got,gote);                        \
+++     r->r_info=i;                                                    \
+++     break;                                                          \
+++      }})
+++
++ #undef ELF_R_TYPE 
++-#define ELF_R_TYPE(a_) (((a_>>40)&0xff) ? ((a_>>40)&0xff) : (((a_>>48)&0xff) ? ((a_>>48)&0xff) : ((a_>>56)&0xff)))
++-#define ELF_R_FTYPE(a_) ((a_>>56)&0xff)
+++#define ELF_R_TYPE(a_) ELF_R_TYPE1(a_)
++ 
++ typedef struct {
++   ul entry,gotoff;
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -568,6 +568,12 @@ EXTER unsigned plong signals_allowed, si
++ 
++ #define IMMNIL(x) (is_imm_fixnum(x)||x==Cnil)
++ 
++-#define eql(a_,b_)    ({register object _a=(a_);register object _b=(b_);_a==_b || (!IMMNIL(_a)&&!IMMNIL(_b)&&eql1(_a,_b));})
++-#define equal(a_,b_)  ({register object _a=(a_);register object _b=(b_);_a==_b || (!IMMNIL(_a)&&!IMMNIL(_b)&&equal1(_a,_b));})
++-#define equalp(a_,b_) ({register object _a=(a_);register object _b=(b_);_a==_b || (_a!=Cnil&&_b!=Cnil&&equalp1(_a,_b));})
+++/*gcc boolean expression tail position bug*/
+++
+++/* #define eql(a_,b_)    ({register object _a=(a_);register object _b=(b_);_a==_b || (!IMMNIL(_a)&&!IMMNIL(_b)&&eql1(_a,_b));}) */
+++/* #define equal(a_,b_)  ({register object _a=(a_);register object _b=(b_);_a==_b || (!IMMNIL(_a)&&!IMMNIL(_b)&&equal1(_a,_b));}) */
+++/* #define equalp(a_,b_) ({register object _a=(a_);register object _b=(b_);_a==_b || (_a!=Cnil&&_b!=Cnil&&equalp1(_a,_b));}) */
+++
+++#define eql(a_,b_)    ({register object _a=(a_);register object _b=(b_);_a==_b ? TRUE : (IMMNIL(_a)||IMMNIL(_b) ? FALSE : eql1(_a,_b));})
+++#define equal(a_,b_)  ({register object _a=(a_);register object _b=(b_);_a==_b ? TRUE : (IMMNIL(_a)||IMMNIL(_b) ? FALSE : equal1(_a,_b));})
+++#define equalp(a_,b_) ({register object _a=(a_);register object _b=(b_);_a==_b ? TRUE : (_a==Cnil||_b==Cnil ? FALSE : equalp1(_a,_b));})
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -443,6 +443,23 @@ gcl_cleanup(int gc) {
++ 
++ }
++ 
+++/*gcc boolean expression tail position bug*/
+++
+++void *
+++cclear_stack(unsigned long size) {
+++  void *v=alloca(size);
+++  memset(v,0,size);
+++  return v;
+++}
+++
+++DEFUN_NEW("EQUAL-TAIL-RECURSION-CHECK",object,fSequal_tail_recursion_check,SI,1,1,NONE,II,OO,OO,OO,(fixnum s),"") {
+++  object x0=make_list(s/sizeof(object)),x1=make_list(s/sizeof(object));
+++  char *u=cclear_stack(s),*w;
+++  fLequal(x0,x1);
+++  for (w=u;w<u+s && !*w;w++);
+++  RETURN1((object)(w-u));
+++}
+++
++ 
++ int
++ main(int argc, char **argv, char **envp) {
++--- gcl-2.6.12.orig/o/predicate.c
+++++ gcl-2.6.12/o/predicate.c
++@@ -446,23 +446,9 @@ equal1(register object x, register objec
++ 
++   /*x and y are not == and not Cnil and not immfix*/
++ 
++-#ifdef __MINGW32__ /*FIXME mingw compiler cannot do tail recursion and blows out stack*/
++- BEGIN:
++-  if (valid_cdr(x)) {
++-    if (valid_cdr(y)&&equal(x->c.c_car,y->c.c_car)) {
++-      x=x->c.c_cdr;
++-      y=y->c.c_cdr;
++-      if (x==y) return TRUE;
++-      if (IMMNIL(x)||IMMNIL(y)) return FALSE;
++-      goto BEGIN;
++-    } else
++-      return FALSE;
++-  }
++-#else
++-  
++-  if (valid_cdr(x)) return valid_cdr(y)&&equal(x->c.c_car,y->c.c_car)&&equal(x->c.c_cdr,y->c.c_cdr);
++-
++-#endif
+++  /*gcc boolean expression tail position bug*/
+++  /* if (valid_cdr(x)) return valid_cdr(y)&&equal(x->c.c_car,y->c.c_car)&&equal(x->c.c_cdr,y->c.c_cdr); */
+++  if (valid_cdr(x)) return !valid_cdr(y)||!equal(x->c.c_car,y->c.c_car) ? FALSE : equal(x->c.c_cdr,y->c.c_cdr);
++ 
++   if (valid_cdr(y)) return FALSE;
++   
++@@ -524,7 +510,9 @@ equalp1(register object x, register obje
++   
++   /*x and y are not == and not Cnil*/
++ 
++-  if (listp(x)) return listp(y)&&equalp(x->c.c_car,y->c.c_car)&&equalp(x->c.c_cdr,y->c.c_cdr);
+++  /*gcc boolean expression tail position bug*/
+++  /* if (listp(x)) return listp(y)&&equalp(x->c.c_car,y->c.c_car)&&equalp(x->c.c_cdr,y->c.c_cdr); */
+++  if (listp(x)) return !listp(y)||!equalp(x->c.c_car,y->c.c_car) ? FALSE : equalp(x->c.c_cdr,y->c.c_cdr);
++     
++   if (listp(y)) return FALSE;
++ 
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -79,3 +79,7 @@
++ 
++ #+ansi-cl (use-package :pcl :user)
++ #+ansi-cl (import 'si::(clines defentry defcfun object void int double quit bye gbc system) :user)
+++
+++(let* ((i 4096)(j (si::equal-tail-recursion-check i)))
+++  (unless (eql i j)
+++    (warn "equal is not tail recursive ~s ~s" i j)))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..15aa00d97e8392531f6eb28888963d3ab98999dc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,34 @@@
++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.
++ .
++ gcl (2.6.12-27) unstable; urgency=medium
++ .
++   * Version_2_6_13pre33; mips64 relocs; stack saving tail-recursive equal.
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -81,5 +81,5 @@
++ #+ansi-cl (import 'si::(clines defentry defcfun object void int double quit bye gbc system) :user)
++ 
++ (let* ((i 4096)(j (si::equal-tail-recursion-check i)))
++-  (unless (eql i j)
+++  (unless (<= (ash i -1) j)
++     (warn "equal is not tail recursive ~s ~s" i j)))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..90ea7eaee3a097bf17d55a1beb510199cff7036c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,40 @@@
++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.
++ .
++ gcl (2.6.12-27) unstable; urgency=medium
++ .
++   * Version_2_6_13pre34; mips64 relocs; stack saving tail-recursive equal.
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/predicate.c
+++++ gcl-2.6.12/o/predicate.c
++@@ -501,6 +501,12 @@ oequal(object x,object y) {
++ DEFUN_NEW("EQUAL",object,fLequal,LISP,2,2,NONE,OO,OO,OO,OO,(object x0,object x1),"") {
++   RETURN1(equal(x0, x1) ? Ct : Cnil);
++ }
+++#ifdef STATIC_FUNCTION_POINTERS
+++object
+++fLequal(object x,object y) {
+++  return FFN(fLequal)(x,y);
+++}
+++#endif
++ 
++ bool
++ equalp1(register object x, register object y) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ac9a53ca2f926b45d1ad97a82df7657ba1d32a6a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,89 @@@
++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.
++ .
++ gcl (2.6.12-28) unstable; urgency=medium
++ .
++   * Version_2_6_13pre35; restore hppa build
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/makefile
+++++ gcl-2.6.12/o/makefile
++@@ -34,7 +34,7 @@ boot.o: boot.c $(DECL) boot.h
++      $(CC) -c $(CFLAGS) $(DEFS) -fPIC $*.c $(AUX_INFO) 
++ 
++ prelink.o: prelink.c $(DECL)
++-     $(CC) -fPIE -c $(CFLAGS) $(DEFS) $*.c $(AUX_INFO) 
+++     $(CC) -fPIE -c $(filter-out -pg,$(CFLAGS)) $(DEFS) $*.c $(AUX_INFO)
++ 
++ %.o: %.c $(DECL)
++      $(CC) -c $(CFLAGS) $(DEFS) $*.c $(AUX_INFO) 
++--- gcl-2.6.12.orig/o/sfasli.c
+++++ gcl-2.6.12/o/sfasli.c
++@@ -111,46 +111,17 @@ LFD(build_symbol_table)(void) {
++ 
++ }
++ 
++-extern int mcount();
++-extern int _mcount();
++-extern int __divdi3();
++-extern int __moddi3();
++-extern int __udivdi3();
++-extern int __umoddi3();
++-extern void sincos(double,double *,double *);
++-extern int __divsi3();
++-extern int __modsi3();
++-extern int __udivsi3();
++-extern int __umodsi3();
++-extern int $$divI();
++-extern int $$divU();
++-extern int $$remI();
++-extern int $$remU();
++-extern int __divq();
++-extern int __divqu();
++-extern int __remq();
++-extern int __remqu();
++-
++-#ifndef DARWIN
++ #ifndef _WIN32
++ int
++ use_symbols(double d,...) {
++ 
++-  sincos(d,&d,&d);
++-
++-#ifdef GCL_GPROF
++-  _mcount();
++-#endif
++-  
++-  return (int)d;
+++#ifndef DARWIN
+++  extern void sincos(double,double *,double *);
++ 
++-}
++-#endif
+++  sincos(d,&d,&d);
++ #else
++-int
++-use_symbols(double d,...) {
++-
++   d=sin(d)+cos(d);
+++#endif
++ 
++   return (int)d;
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7feda75d2a6ba3135fc5d54c289fd4c11de564df
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,308 @@@
++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.
++ .
++ gcl (2.6.12-29) unstable; urgency=medium
++ .
++   * Version_2_6_13pre35; support latest binutils
++   * Bug fix: "gcl ftbfs on amd64 and i386 with binutils from
++     experimental", thanks to Matthias Klose (Closes: #803214).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/803214
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpvs.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpvs.lsp
++@@ -75,8 +75,8 @@
++ (defun wt-vs* (vs)
++   (wt "(" )(wt-vs vs) (wt "->c.c_car)"))
++ 
++-(defun wt-ccb-vs (ccb-vs)
++-  (wt "(fun->cc.cc_turbo[" (- *initial-ccb-vs* ccb-vs) "]->c.c_car)"))
+++(defun wt-ccb-vs (ccb-vs);;FIXME harmonize *closure-p* with *clink*
+++  (wt "(" (if *closure-p* "fun->cc.cc_turbo" "base0") "[" (- *initial-ccb-vs* ccb-vs) "]->c.c_car)"))
++ 
++ (defun clink (vs) (setq *clink* vs))
++ 
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -7663,7 +7663,7 @@ fi
++ if test "${enable_ansi+set}" = set; then :
++   enableval=$enable_ansi;
++ else
++-  enable_ansi="no"
+++  enable_ansi="yes"
++ fi
++ 
++ 
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -2133,7 +2133,7 @@ AC_ARG_ENABLE(readline,
++ 
++ # ansi lisp
++ AC_ARG_ENABLE(ansi,[--enable-ansi builds a large gcl aiming for ansi compliance, 
++-                 --disable-ansi builds the smaller traditional CLtL1 image],,enable_ansi="no")
+++                 --disable-ansi builds the smaller traditional CLtL1 image],,enable_ansi="yes")
++ 
++ if test "$enable_ansi" = "yes" ; then
++      SYSTEM=ansi_gcl
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -1241,7 +1241,7 @@ gcl_init_alloc(void *cs_start) {
++ 
++     massert(!getrlimit(RLIMIT_STACK, &rl));
++     if (rl.rlim_cur!=RLIM_INFINITY && (rl.rlim_max == RLIM_INFINITY || rl.rlim_max > rl.rlim_cur)) {
++-      rl.rlim_cur = rl.rlim_max == RLIM_INFINITY ? rl.rlim_max : rl.rlim_max/64;
+++      rl.rlim_cur = rl.rlim_max;
++       massert(!setrlimit(RLIMIT_STACK,&rl));
++     }
++     cssize = rl.rlim_cur/sizeof(*cs_org) - sizeof(*cs_org)*CSGETA;
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -2407,17 +2407,18 @@ object x=Cnil;
++    inPort = (myport == Cnil ? 0 : fix(Iis_fixnum(myport)));
++    
++ #ifdef BSD
+++
++   if (isServer && daemon != Cnil) {
++ 
++     long pid,i;
++     struct rlimit r;
++-    struct sigaction sa;
+++    struct sigaction sa,osa;
++ 
++     sa.sa_handler=SIG_IGN;
++     sa.sa_flags=SA_NOCLDWAIT;
++     sigemptyset(&sa.sa_mask);
++ 
++-    sigaction(SIGCHLD,&sa,NULL);
+++    massert(!sigaction(SIGCHLD,&sa,&osa));
++ 
++     switch((pid=pfork())) {
++     case -1:
++@@ -2425,8 +2426,7 @@ object x=Cnil;
++       break;
++     case 0:
++ 
++-      if (setsid()<0)
++-     FEerror("setsid error", 0);
+++      massert(setsid()>=0);
++ 
++       if (daemon == sKpersistent)
++      switch(pfork()) {
++@@ -2440,23 +2440,17 @@ object x=Cnil;
++        break;
++      }
++       
+++      massert(!chdir("/"));
+++
++       memset(&r,0,sizeof(r));
++-      if (getrlimit(RLIMIT_NOFILE,&r))
++-     FEerror("Cannot get resourse usage",0);
+++      massert(!getrlimit(RLIMIT_NOFILE,&r));
++       
++       for (i=0;i<r.rlim_cur;i++)
++-     close(i);
++-      errno=0;
++-      
++-      if ((i=open("/dev/null",O_RDWR))==-1)
++-     FEerror("Can't open /dev/null for stdin",0);
++-      if ((i=dup(i))==-1)
++-     FEerror("Can't dup",0);
++-      if ((i=dup(i))==-1)
++-     FEerror("Can't dup twice",0);
+++             close(i);/*FIXME some of this will return error*/
++       
++-      if (chdir("/"))
++-     FEerror("Cannot chdir to /",0);
+++      massert((i=open("/dev/null",O_RDWR))>=0);
+++      massert((i=dup(i))>=0);
+++      massert((i=dup(i))>=0);
++       
++       umask(0);
++       
++@@ -2473,16 +2467,14 @@ object x=Cnil;
++      
++      FD_ZERO(&fds);
++      FD_SET(fd,&fds);
++-     i=select(fd+1,&fds,NULL,NULL,NULL);
++      
++-     if (i>0) {
+++     if (select(fd+1,&fds,NULL,NULL,NULL)>0) {
++        
++        y=maccept(x);
++        
++-       sigaction(SIGCHLD,&sa,NULL);
++-       
++        switch((pid=pfork())) {
++        case 0:
+++         massert(!sigaction(SIGCHLD,&osa,NULL));
++          ifuncall1(server,y);
++          exit(0);
++          break;
++@@ -2506,6 +2498,8 @@ object x=Cnil;
++       break;
++     }
++ 
+++    massert(!sigaction(SIGCHLD,&osa,NULL));
+++
++   } else 
++ 
++ #endif
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -227,9 +227,9 @@ get_phys_pages1(char freep) {
++ static void
++ get_gc_environ(void) {
++ 
++-  const char *e;;
+++  const char *e;
++   
++-  mem_multiple=1.0;
+++  mem_multiple=0.85;
++   if ((e=getenv("GCL_MEM_MULTIPLE"))) {
++     massert(sscanf(e,"%lf",&mem_multiple)==1);
++     massert(mem_multiple>=0.0);
++--- gcl-2.6.12.orig/o/nsocket.c
+++++ gcl-2.6.12/o/nsocket.c
++@@ -630,50 +630,43 @@ doReverse(char *s, int n)
++   of the buffer may be changed.
++  */
++ int
++-getCharGclSocket(object strm, object block)
++-{
++-  object bufp = SOCKET_STREAM_BUFFER(strm);
++-  if (bufp->ust.ust_fillp > 0) {
++-    dprintf("getchar returns (%c)\n",bufp->ust.ust_self[-1+(bufp->ust.ust_fillp)]);
+++getCharGclSocket(object strm, object block) {
+++
+++  object bufp=SOCKET_STREAM_BUFFER(strm);
+++  int fd=SOCKET_STREAM_FD(strm);
+++
+++  if (bufp->ust.ust_fillp > 0)
++     return bufp->ust.ust_self[--(bufp->ust.ust_fillp)];
++-  }
++-  else {
+++
+++  if (fd>=0) {
+++
++     fd_set readfds;
++-    struct timeval timeout;
++-    int fd = SOCKET_STREAM_FD(strm);
++-    if (1)
++-      { int high;
++-      AGAIN:      
++-      /* under cygwin a too large timout like (1<<30) does not work */
++-      timeout.tv_sec = 0;
++-      timeout.tv_usec = 10000;
++-      FD_ZERO(&readfds);
++-      FD_SET(fd,&readfds);
++-      high = select(fd+1,&readfds,NULL,NULL,block==Ct ? NULL : &timeout);
++-      if (high > 0)
++-     { object bufp = SOCKET_STREAM_BUFFER(strm);
++-     int n;
++-     n = SAFE_READ(fd,bufp->st.st_self ,bufp->ust.ust_dim);
+++    struct timeval t,t1={0,10000},*tp=block==Ct ? NULL : &t;
+++    int high,n;
+++
+++    FD_ZERO(&readfds);
+++    FD_SET(fd,&readfds);
+++
+++    for (;(errno=0,t=t1,high=select(fd+1,&readfds,NULL,NULL,tp))==-1 && !tp && errno==EINTR;);
+++
+++    if (high > 0) {
+++
+++      massert((n=SAFE_READ(fd,bufp->st.st_self,bufp->ust.ust_dim))>=0);
+++
+++      if (n) {
++      doReverse(bufp->st.st_self,n);
++      bufp->ust.ust_fillp=n;
++-     if (n > 0)
++-       {
++-         dprintf("getchar returns (%c)\n",bufp->ust.ust_self[-1+(bufp->ust.ust_fillp)]);
++-         return bufp->ust.ust_self[--(bufp->ust.ust_fillp)];
++-       }
++-     else
++-       {
++-         SOCKET_STREAM_FD(strm)=-1;
++-         return EOF;
++-         FEerror("select said there was stuff there but there was not",0);
++-       }
++-     }
++-      /* probably a signal interrupted us.. */
++-      if (block == Ct)
++-     goto AGAIN;
++-      return EOF;
++-      }
+++      } else
+++     SOCKET_STREAM_FD(strm)=-1;
+++
+++      return getCharGclSocket(strm,block);
+++
+++    }
+++
++   }
+++
+++  return EOF;
+++
++ }
++ 
++ #else
++--- gcl-2.6.12.orig/o/prelink.c
+++++ gcl-2.6.12/o/prelink.c
++@@ -7,6 +7,7 @@ extern FILE *stdin __attribute__((weak))
++ extern FILE *stderr __attribute__((weak));
++ extern FILE *stdout __attribute__((weak));
++ 
+++#ifdef HAVE_READLINE
++ #if RL_READLINE_VERSION < 0x0600
++ extern Function              *rl_completion_entry_function __attribute__((weak));
++ extern char          *rl_readline_name __attribute__((weak));
++@@ -15,6 +16,7 @@ extern rl_compentry_func_t *rl_completio
++ extern const char *rl_readline_name __attribute__((weak));
++ #endif
++ #endif
+++#endif
++ 
++ void
++ prelink_init(void) {
++--- gcl-2.6.12.orig/o/sfasli.c
+++++ gcl-2.6.12/o/sfasli.c
++@@ -116,14 +116,20 @@ int
++ use_symbols(double d,...) {
++ 
++ #ifndef DARWIN
+++
++   extern void sincos(double,double *,double *);
+++  double d2;
+++
+++  sincos(d,&d,&d2);
++ 
++-  sincos(d,&d,&d);
++ #else
+++
++   d=sin(d)+cos(d);
+++  d2=sin(d)+cos(d);
+++
++ #endif
++ 
++-  return (int)d;
+++  return (int)(d+d2);
++ 
++ }
++ #endif
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5ffdcd049049dcd45c2300d82e38eecfc252e59b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,53 @@@
++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.
++ .
++ gcl (2.6.12-30) unstable; urgency=medium
++ .
++   * Version_2_6_13pre38
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4379,7 +4379,10 @@ $as_echo "Reducing optimization on profi
++                   enable_debug=yes;;
++              esac
++                 TCFLAGS="$TCFLAGS -pg";
++-                TLIBS="$TLIBS -pg";
+++             case $use in
+++             s390*) ;; # relocation truncation bug in gcc
+++             *) TLIBS="$TLIBS -pg";;
+++             esac
++              TFPFLAG=""
++ 
++ $as_echo "#define GCL_GPROF 1" >>confdefs.h
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -587,7 +587,10 @@ if test "$enable_gprof" = "yes" ; then
++                   enable_debug=yes;;
++              esac
++                 TCFLAGS="$TCFLAGS -pg";
++-                TLIBS="$TLIBS -pg";
+++             case $use in
+++             s390*) ;; # relocation truncation bug in gcc
+++             *) TLIBS="$TLIBS -pg";;
+++             esac
++              TFPFLAG=""
++              AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
++      else                       
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..db3902c5f2aee942bf97c30e2fa66aed90960c94
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,62 @@@
++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.
++ .
++ gcl (2.6.12-4) unstable; urgency=medium
++ .
++   * Version_2_6_13pre3
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/bsd.h
+++++ gcl-2.6.12/h/bsd.h
++@@ -33,7 +33,7 @@ filecpy(save, original, stsize - sizeof(
++ 
++ extern char etext;
++ 
++-#define INIT_ALLOC heap_end = core_end = sbrk(0);
+++#define INIT_ALLOC heap_end = core_end = PCEI(sbrk(0),PAGESIZE);
++ 
++ #define SYM_EXTERNAL_P(sym) ((sym)->n_type & N_EXT)
++      
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -229,9 +229,7 @@ alloc_page(long n) {
++   
++   if (!s) {
++ 
++-    if (nn>(holepage - (in_signal_handler? 0 :
++-                    available_pages-n<=reserve_pages_for_signal_handler ? 0 : 
++-                    reserve_pages_for_signal_handler))) {
+++    if (nn>holepage) {
++ 
++ 
++       fixnum d=available_pages-nn;
++@@ -241,12 +239,6 @@ alloc_page(long n) {
++       d=d<0 ? 0 : d;
++       d=new_holepage<d ? new_holepage : d;
++       
++-      if (in_signal_handler)/*FIXME*/
++-     fprintf(stderr,"Can't do relocatable gc in signal handler. \
++-Try to allocate more space to save for allocation during signals: \
++-eg to add 20 more do (si::set-hole-size %ld %d)\n...start over ", 
++-             new_holepage, 20+ reserve_pages_for_signal_handler); fflush(stderr); exit(1);
++-
++       resize_hole(d+nn,t_relocatable);
++ 
++     }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8a75ccb5a6f3489951b6dd63f7a3a40ac6c8e228
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,647 @@@
++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.
++ .
++ gcl (2.6.12-4) unstable; urgency=medium
++ .
++   * Version_2_6_13pre3a
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/elf64_ppcle_reloc_special.h
+++++ gcl-2.6.12/h/elf64_ppcle_reloc_special.h
++@@ -15,8 +15,6 @@ find_special_params(void *v,Shdr *sec1,S
++   Shdr *sec;
++   Rela *r;
++   void *ve;
++-  ul j,*u;
++-
++ 
++   massert((sec=get_section(".rela.plt",sec1,sece,sn)));
++ 
++--- gcl-2.6.12.orig/h/page.h
+++++ gcl-2.6.12/h/page.h
++@@ -88,7 +88,8 @@ extern int reserve_pages_for_signal_hand
++ /* #define CONT_MARK_PAGE (((page(heap_end)-first_data_page)*(PAGESIZE/(CPTR_SIZE*CHAR_SIZE))+PAGESIZE-1)/PAGESIZE) */
++ /* #define   available_pages ((fixnum)(real_maxpage-page(heap_end)-2*nrbpage-CONT_MARK_PAGE-resv_pages)) */
++ 
++-extern struct pageinfo *cell_list_head,*cell_list_tail,*contblock_list_head,*contblock_list_tail;
+++extern struct pageinfo *cell_list_head,*cell_list_tail/* ,*contblock_list_head,*contblock_list_tail */;
+++extern object contblock_array;
++ 
++ #define PAGE_MAGIC 0x2e
++ 
++@@ -114,7 +115,7 @@ EXTER void *data_start,*initial_sbrk;
++ #define CB_BITS     CPTR_SIZE*CHAR_SIZE
++ #define ceil(a_,b_) (((a_)+(b_)-1)/(b_))
++ #define npage(m_)   ceil(m_,PAGESIZE)
++-#define cpage(m_)   ({ufixnum _m=(m_);ceil(sizeof(struct pageinfo)+_m+2*ceil(_m,(CB_BITS-2)),PAGESIZE);})
+++#define cpage(m_)   CEI(({ufixnum _m=(m_);ceil(sizeof(struct pageinfo)+_m+2*ceil(_m,(CB_BITS-2)),PAGESIZE);}),256)
++ #define mbytes(p_)  ceil((p_)*PAGESIZE-sizeof(struct pageinfo),CB_BITS)
++ #define tpage(tm_,m_) (tm_->tm_type==t_relocatable ? npage(m_-(rb_limit-rb_pointer)+1) : (tm_->tm_type==t_contiguous ? cpage(m_) : npage(m_)))
++ 
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1941,3 +1941,12 @@ mbrk(void *);
++ 
++ void
++ maybe_set_hole_from_maxpages(void);
+++
+++void *
+++alloc_code_space(size_t);
+++
+++object 
+++fSmake_vector1_2(fixnum,fixnum,object,object);
+++
+++inline struct pageinfo *
+++get_pageinfo(void *);
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -78,6 +78,72 @@ struct rlimit data_rlimit;
++ #endif
++ #endif
++ 
+++static inline void *
+++bsearchleq(void *i,void *v1,size_t n,size_t s,int (*c)(const void *,const void *)) {
+++
+++  ufixnum nn=n>>1;
+++  void *v=v1+nn*s;
+++  int j=c(i,v);
+++
+++  if (nn)
+++    return !j ? v : (j>0 ? bsearchleq(i,v,n-nn,s,c) : bsearchleq(i,v1,nn,s,c));
+++  else
+++    return j<=0 ? v : v+s;
+++
+++}
+++                  
+++
+++object contblock_array=Cnil;
+++
+++static inline void
+++expand_contblock_array(void) {
+++
+++  if (contblock_array==Cnil) {
+++    contblock_array=fSmake_vector1_2(16,aet_fix,Cnil,make_fixnum(0));
+++    contblock_array->v.v_self[0]=(object)&cb_pointer;
+++    enter_mark_origin(&contblock_array);
+++  }
+++
+++  if (contblock_array->v.v_fillp==contblock_array->v.v_dim) {
+++
+++    void *v=alloc_relblock(2*contblock_array->v.v_dim*sizeof(fixnum));
+++
+++    memcpy(v,contblock_array->v.v_self,contblock_array->v.v_dim*sizeof(fixnum));
+++    contblock_array->v.v_self=v;
+++    contblock_array->v.v_dim*=2;
+++
+++  }
+++
+++}
+++
+++static void
+++contblock_array_push(void *p) {
+++
+++  expand_contblock_array();
+++  contblock_array->v.v_self[contblock_array->v.v_fillp]=p;
+++  contblock_array->v.v_fillp++;
+++
+++}
+++  
+++static inline int
+++acomp(const void *v1,const void *v2) {
+++
+++  void *p1=*(void * const *)v1,*p2=*(void * const *)v2;
+++
+++  return p1<p2 ? -1 : (p1==p2 ? 0 : 1);
+++
+++}
+++
+++inline struct pageinfo *
+++get_pageinfo(void *x) {
+++
+++  struct pageinfo **pp=bsearchleq(&x,contblock_array->v.v_self,contblock_array->v.v_fillp,sizeof(*contblock_array->v.v_self),acomp);
+++  struct pageinfo *p=(void *)pp>(void *)contblock_array->v.v_self ? pp[-1] : NULL;
+++  
+++  return p && (void *)p+p->in_use*PAGESIZE>x ? p : NULL;
+++
+++}
+++
++ inline void
++ add_page_to_contblock_list(void *p,fixnum m) {
++  
++@@ -89,13 +155,8 @@ add_page_to_contblock_list(void *p,fixnu
++   massert(pp->in_use==m);
++   pp->magic=PAGE_MAGIC;
++   
++-  if (contblock_list_head==NULL)
++-    contblock_list_tail=contblock_list_head=p;
++-  else if (pp > contblock_list_tail) {
++-    contblock_list_tail->next=p;
++-    contblock_list_tail=p;
++-  }
++-  
+++  contblock_array_push(p);
+++
++   bzero(pagetochar(page(pp)),CB_DATA_START(pp)-(void *)pagetochar(page(pp)));
++ #ifdef SGC
++   if (sgc_enabled && tm_table[t_contiguous].tm_sgc) {
++@@ -458,7 +519,7 @@ rebalance_maxpages(struct typemanager *m
++     for (i=t_start;i<t_other;i++)
++       if (tm_table[i].tm_npage) {
++      if (tm_table+i==my_tm) {
++-       massert(set_tm_maxpage(tm_table+i,z));
+++       massert(set_tm_maxpage(tm_table+i,z) || !fprintf(stderr,"%lu %lu %lu %lu %lu\n",i,z,tm_table[i].tm_npage,tm_table[i].tm_maxpage,available_pages));
++      } else {
++        massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage+(1.0-(double)(j+d-phys_pages)/k)*(tm_table[i].tm_maxpage-tm_table[i].tm_npage)));
++      }
++@@ -562,7 +623,7 @@ static inline void
++ expand_contblock_index_space(void) {
++ 
++   if (cbv==Cnil) {
++-    cbv=(VFUN_NARGS=4,fSmake_vector1(make_fixnum(16),make_fixnum(aet_fix),Cnil,make_fixnum(0)));
+++    cbv=fSmake_vector1_2(16,aet_fix,Cnil,make_fixnum(0));
++     cbv->v.v_self[0]=(object)&cb_pointer;
++     enter_mark_origin(&cbv);
++   }
++@@ -612,21 +673,6 @@ cbcomp(const void *v1,const void *v2) {
++ 
++ }
++ 
++-static inline void *
++-bsearchleq(void *i,void *v1,size_t n,size_t s,int (*c)(const void *,const void *)) {
++-
++-  ufixnum nn=n>>1;
++-  void *v=v1+nn*s;
++-  int j=c(i,v);
++-
++-  if (nn)
++-    return !j ? v : (j>0 ? bsearchleq(i,v,n-nn,s,c) : bsearchleq(i,v1,nn,s,c));
++-  else
++-    return j<=0 ? v : v+s;
++-
++-}
++-                  
++-
++ static inline struct contblock ***
++ find_cbppp(struct contblock *cbp) {
++ 
++@@ -777,7 +823,7 @@ grow_linear1(struct typemanager *tm) {
++ static inline int
++ too_full_p(struct typemanager *tm) {
++ 
++-  fixnum j,k,pf=tm->tm_percent_free ? tm->tm_percent_free : 30;
+++  fixnum i,j,k,pf=tm->tm_percent_free ? tm->tm_percent_free : 30;
++   struct contblock *cbp;
++   struct pageinfo *pi;
++ 
++@@ -787,11 +833,13 @@ too_full_p(struct typemanager *tm) {
++     break;
++   case t_contiguous:
++     for (cbp=cb_pointer,k=0;cbp;cbp=cbp->cb_link) k+=cbp->cb_size;
++-    for (pi=contblock_list_head,j=0;pi;pi=pi->next)
+++    for (i=j=0;i<contblock_array->v.v_fillp;i++) {
+++      pi=(void *)contblock_array->v.v_self[i];
++ #ifdef SGC
++       if (!sgc_enabled || pi->sgc_flags&SGC_PAGE_FLAG)
++ #endif
++      j+=pi->in_use;
+++    }
++     return 100*k<pf*j*PAGESIZE;
++     break;
++   default:
++@@ -833,8 +881,6 @@ alloc_after_gc(struct typemanager *tm,fi
++ 
++ }
++ 
++-struct pageinfo *contblock_list_head=NULL,*contblock_list_tail=NULL;
++-
++ inline void
++ add_pages(struct typemanager *tm,fixnum m) {
++ 
++@@ -890,7 +936,6 @@ alloc_after_adding_pages(struct typemana
++ 
++   }
++ 
++-  /* m=tm->tm_maxpage-tm->tm_npage; */
++   add_pages(tm,m);
++ 
++   return alloc_from_freelist(tm,n);
++@@ -997,6 +1042,34 @@ alloc_contblock_no_gc(size_t n) {
++ 
++ }
++ 
+++#ifndef MAX_CODE_ADDRESS
+++#define MAX_CODE_ADDRESS -1UL
+++#endif
+++
+++void *
+++alloc_code_space(size_t sz) {
+++
+++  void *v;
+++
+++  sz=CEI(sz,CPTR_SIZE);
+++
+++  if (sSAcode_block_reserveA &&
+++      sSAcode_block_reserveA->s.s_dbind!=Cnil && sSAcode_block_reserveA->s.s_dbind->st.st_dim>=sz) {
+++    
+++    v=sSAcode_block_reserveA->s.s_dbind->st.st_self;
+++    sSAcode_block_reserveA->s.s_dbind->st.st_self+=sz;
+++    sSAcode_block_reserveA->s.s_dbind->st.st_dim-=sz;
+++    sSAcode_block_reserveA->s.s_dbind->st.st_fillp=sSAcode_block_reserveA->s.s_dbind->st.st_dim;
+++    
+++  } else
+++    v=alloc_contblock(sz);
+++
+++  massert(v && (unsigned long)(v+sz)<MAX_CODE_ADDRESS);
+++
+++  return v;
+++
+++}
+++
++ inline void *
++ alloc_relblock(size_t n) {
++ 
++@@ -1316,6 +1389,7 @@ gcl_init_alloc(void *cs_start) {
++   
++   
++   ncbpage = 0;
+++  tm_table[t_contiguous].tm_min_grow=256;
++   set_tm_maxpage(tm_table+t_contiguous,1);
++ #ifdef GCL_GPROF
++   if (maxcbpage<textpage)
++--- gcl-2.6.12.orig/o/array.c
+++++ gcl-2.6.12/o/array.c
++@@ -445,6 +445,11 @@ fSmake_vector1_1(fixnum n,fixnum elt_typ
++   VFUN_NARGS=3;
++   return FFN(fSmake_vector1)(make_fixnum(n),make_fixnum(elt_type),staticp);
++ }
+++object 
+++fSmake_vector1_2(fixnum n,fixnum elt_type,object staticp,object fillp) {
+++  VFUN_NARGS=4;
+++  return FFN(fSmake_vector1)(make_fixnum(n),make_fixnum(elt_type),staticp,fillp);
+++}
++ 
++ 
++ static object DFLT_aet_object = Cnil;        
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -36,9 +36,6 @@
++ 
++ #ifdef SGC
++ static void
++-sgc_contblock_sweep_phase(void);
++-
++-static void
++ sgc_sweep_phase(void);
++ 
++ static void
++@@ -142,8 +139,6 @@ off_check(void *v,void *ve,fixnum i,stru
++ }
++ #endif
++ 
++-void **contblock_stack_list=NULL;
++-
++ static inline bool
++ pageinfo_p(void *v) {
++ 
++@@ -163,28 +158,6 @@ in_contblock_stack_list(void *p,void ***
++   return a && a[0]==p;
++ }
++ 
++-inline struct pageinfo *
++-get_pageinfo(void *x) {
++-
++-  void *p=pageinfo(x),**a=contblock_stack_list;
++-  struct pageinfo *v;
++-
++-  for (;!pageinfo_p(p) || in_contblock_stack_list(p,&a);p-=PAGESIZE);
++-
++-  v=p;
++-  massert(v->type==t_contiguous && p+v->in_use*PAGESIZE>x);
++-
++-  return p;
++-
++-}
++-  
++-/* inline struct pageinfo * */
++-/* get_pageinfo(void *x) { */
++-/*   struct pageinfo *v=contblock_list_head;void *vv; */
++-/*   for (;(vv=v) && (vv>=x || vv+v->in_use*PAGESIZE<=x);v=v->next); */
++-/*   return v; */
++-/* } */
++-
++ inline char
++ get_bit(char *v,struct pageinfo *pi,void *x) {
++   void *ve=CB_DATA_START(pi);
++@@ -811,7 +784,7 @@ mark_stack_carefully(void *topv, void *b
++   
++   for (j=top ; j >= bottom ; j--) {
++     
++-    void *v=(void *)(*j),**a;
+++    void *v=(void *)(*j);
++     struct pageinfo *pi;
++     
++     if (!VALID_DATA_ADDRESS_P(v)) continue;
++@@ -822,7 +795,7 @@ mark_stack_carefully(void *topv, void *b
++     pi=pagetoinfo(p);
++     if (!pageinfo_p(pi)) continue;
++     
++-    if ((a=contblock_stack_list) && in_contblock_stack_list(pi,&a)) continue;
+++    if (get_pageinfo(pi)) continue;
++ 
++     tm=tm_of(pi->type);
++     if (tm->tm_type>=t_end) continue;
++@@ -1067,14 +1040,24 @@ sweep_phase(void) {
++ static void
++ contblock_sweep_phase(void) {
++ 
+++  struct pageinfo *v;
++   STATIC char *s, *e, *p, *q;
++-  STATIC struct pageinfo *v;
+++  object o;
+++  ufixnum i;
++     
++   reset_contblock_freelist();
++-  
++-  for (v=contblock_list_head;v;v=v->next) {
+++
+++  o=sSAleaf_collection_thresholdA->s.s_dbind;
+++  sSAleaf_collection_thresholdA->s.s_dbind=make_fixnum(-1);
+++
+++  for (i=0;i<contblock_array->v.v_fillp && (v=(void *)contblock_array->v.v_self[i]);i++) {
+++
++     bool z;
++ 
+++#ifdef SGC
+++    if (sgc_enabled && !(v->sgc_flags&SGC_PAGE_FLAG)) continue;
+++#endif
+++    
++     s=CB_DATA_START(v);
++     e=(void *)v+v->in_use*PAGESIZE;
++ 
++@@ -1090,14 +1073,9 @@ contblock_sweep_phase(void) {
++     bzero(CB_MARK_START(v),CB_SGCF_START(v)-CB_MARK_START(v));
++ 
++   }
++-#ifdef DEBUG
++-  if (debug) {
++-    for (cbp = cb_pointer; cbp != NULL; cbp = cbp->cb_link)
++-      printf("%lud-byte contblock\n", cbp->cb_size);
++-    fflush(stdout);
++-  }
++-#endif
++-  
+++
+++  sSAleaf_collection_thresholdA->s.s_dbind=o;
+++
++   sweep_link_array();
++ 
++ }
++@@ -1143,24 +1121,6 @@ GBC(enum type t) {
++ 
++   ngc_thresh=fix(sSAleaf_collection_thresholdA->s.s_dbind);
++ 
++-  { /*FIXME try to get this below the setjmp in mark_c_stack*/
++-    struct pageinfo *v,*tv;
++-    ufixnum i;
++-    void *a;
++-    
++-    for (v=contblock_list_head,contblock_stack_list=NULL;v;v=v->next)
++-      for (i=1;i<v->in_use;i++) {
++-     tv=pagetoinfo(page(v)+i);
++-     if (pageinfo_p(tv)) {
++-       a=contblock_stack_list;
++-       /* fprintf(stderr,"pushing %p\n",tv); */
++-       contblock_stack_list=alloca(2*sizeof(a));
++-       contblock_stack_list[0]=tv;
++-       contblock_stack_list[1]=a;
++-     }
++-      }
++-  }
++-  
++   if (in_signal_handler && t == t_relocatable)
++     error("cant gc relocatable in signal handler");
++   
++@@ -1312,12 +1272,7 @@ GBC(enum type t) {
++     }
++ #endif
++     
++-#ifdef SGC
++-    if (sgc_enabled)
++-      sgc_contblock_sweep_phase();
++-    else
++-#endif
++-      contblock_sweep_phase();
+++    contblock_sweep_phase();
++ #ifdef DEBUG
++     if (debug)
++       printf("contblock sweep ended (%d)\n",
++@@ -1574,7 +1529,7 @@ mark_contblock(void *p, int s) {
++      sizeof(struct contblock).  CM 20030827 */
++   x = (char *)PFLR(p,CPTR_SIZE);
++   y = (char *)PCEI(q,CPTR_SIZE);
++-  v=get_pageinfo(x);
+++  massert(v=get_pageinfo(x));
++ #ifdef SGC
++   if (!sgc_enabled || (v->sgc_flags&SGC_PAGE_FLAG))
++ #endif
++@@ -1595,7 +1550,7 @@ DEFUN_NEW("CONTIGUOUS-REPORT",object,fSc
++   }
++   fprintf(stderr,"\nTotal free %lu in %lu pieces\n\n",i,j);
++   
++-  for (i=j=0,v=contblock_list_head;v;i+=v->in_use,j++,v=v->next) 
+++  for (i=j=k=0;k<contblock_array->v.v_fillp && (v=(void *)contblock_array->v.v_self[k]);k++,i+=v->in_use,j++) 
++     fprintf(stderr,"%lu pages at %p\n",(unsigned long)v->in_use,v);
++   fprintf(stderr,"\nTotal pages %lu in %lu pieces\n\n",i,j);
++   
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -242,32 +242,6 @@ relocate_symbols(Sym *sym,Sym *syme,Shdr
++   
++ }
++ 
++-#ifndef MAX_CODE_ADDRESS
++-#define MAX_CODE_ADDRESS -1UL
++-#endif
++-
++-static void *
++-alloc_memory(ul sz) {
++-
++-  void *v;
++-
++-  if (sSAcode_block_reserveA &&
++-      sSAcode_block_reserveA->s.s_dbind!=Cnil && sSAcode_block_reserveA->s.s_dbind->st.st_dim>=sz) {
++-    
++-    v=sSAcode_block_reserveA->s.s_dbind->st.st_self;
++-    sSAcode_block_reserveA->s.s_dbind->st.st_self+=sz;
++-    sSAcode_block_reserveA->s.s_dbind->st.st_dim-=sz;
++-    sSAcode_block_reserveA->s.s_dbind->st.st_fillp=sSAcode_block_reserveA->s.s_dbind->st.st_dim;
++-    
++-  } else
++-    v=alloc_contblock(sz);
++-
++-  massert(v && (ul)(v+sz)<MAX_CODE_ADDRESS);
++-
++-  return v;
++-
++-}
++-
++ static object
++ load_memory(Shdr *sec1,Shdr *sece,void *v1,ul **got,ul **gote) {
++ 
++@@ -301,7 +275,7 @@ load_memory(Shdr *sec1,Shdr *sece,void *
++   memory->cfd.cfd_size=sz;
++   memory->cfd.cfd_self=0;
++   memory->cfd.cfd_start=0;
++-  memory->cfd.cfd_start=alloc_memory(sz);
+++  memory->cfd.cfd_start=alloc_code_space(sz);
++ 
++   a=(ul)memory->cfd.cfd_start;
++   a=(a+ma)&~ma;
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -99,7 +99,7 @@ sgc_mark_phase(void) {
++   
++   /* mark all non recent data on writable contiguous pages */
++   if (what_to_collect == t_contiguous)
++-    for (v=contblock_list_head;v;v=v->next)
+++    for (i=0;i<contblock_array->v.v_fillp && (v=(void *)contblock_array->v.v_self[i]);i++)
++       if (v->sgc_flags&SGC_PAGE_FLAG) {
++      void *s=CB_DATA_START(v),*e=CB_DATA_END(v),*p,*q;
++      bool z=get_sgc_bit(v,s);
++@@ -213,40 +213,6 @@ sgc_sweep_phase(void) {
++   }
++ }
++ 
++-
++-static void
++-sgc_contblock_sweep_phase(void) {
++-
++-  STATIC char *s, *e, *p, *q;
++-  STATIC struct pageinfo *v;
++-    
++-  reset_contblock_freelist();
++-  
++-  for (v=contblock_list_head;v;v=v->next) {
++-    bool z;
++-
++-    if (!(v->sgc_flags&SGC_PAGE_FLAG)) continue;
++-
++-    s=CB_DATA_START(v);
++-    e=CB_DATA_END(v);
++-
++-    z=get_mark_bit(v,s);
++-    for (p=s;p<e;) {
++-      q=get_mark_bits(v,p);
++-      if (!z)
++-     insert_contblock(p,q-p);
++-      z=1-z;
++-      p=q;
++-    }
++-
++-    bzero(CB_MARK_START(v),CB_SGCF_START(v)-CB_MARK_START(v));
++-
++-  }
++-
++-  sweep_link_array();
++-
++-}
++-
++ #undef tm
++ 
++ #ifdef SDEBUG
++@@ -664,7 +630,7 @@ sgc_start(void) {
++     
++     tm=tm_of(t_contiguous);
++ 
++-    for (pi=contblock_list_head;pi && count<WSGC(tm);pi=pi->next) {
+++    for (i=0;i<contblock_array->v.v_fillp && (pi=(void *)contblock_array->v.v_self[i]) && count<WSGC(tm);i++) {
++ 
++       p=CB_DATA_START(pi);
++       pe=CB_DATA_END(pi);
++@@ -685,7 +651,7 @@ sgc_start(void) {
++       /* SGC cont pages: allocate more if necessary, dumping possible
++       GBC freed pages onto the old contblock list.  CM 20030827*/
++       unsigned long z=(i-count)+1;
++-      void *old_contblock_list_tail=contblock_list_tail;
+++      ufixnum fp=contblock_array->v.v_fillp;
++ 
++       if (maxcbpage<ncbpage+z)
++      if (!set_tm_maxpage(tm_table+t_contiguous,ncbpage+z))
++@@ -693,9 +659,9 @@ sgc_start(void) {
++ 
++       add_pages(tm_table+t_contiguous,z);
++ 
++-      massert(old_contblock_list_tail!=contblock_list_tail);
+++      massert(fp!=contblock_array->v.v_fillp);
++ 
++-      contblock_list_tail->sgc_flags=SGC_PAGE_FLAG;
+++      ((struct pageinfo *)contblock_array->v.v_self[fp])->sgc_flags=SGC_PAGE_FLAG;
++ 
++     }
++ 
++@@ -743,17 +709,19 @@ sgc_start(void) {
++   {
++ 
++     struct pageinfo *pi;
++-
+++    ufixnum j;
+++    
++     {
++ 
++       struct contblock **cbpp;
++       void *p=NULL,*pe;
++       struct pageinfo *pi;
+++      ufixnum i;
++       
++       old_cb_pointer=cb_pointer;
++       reset_contblock_freelist();
++ 
++-      for (pi=contblock_list_head;pi;pi=pi->next) {
+++      for (i=0;i<contblock_array->v.v_fillp && (pi=(void *)contblock_array->v.v_self[i]);i++) {
++      
++      if (pi->sgc_flags!=SGC_PAGE_FLAG) continue;
++      
++@@ -786,7 +754,7 @@ sgc_start(void) {
++       else
++      tm_of(pi->type)->tm_alt_npage++;
++     }
++-    for (pi=contblock_list_head;pi;pi=pi->next)/*FIXME*/
+++    for (j=0;j<contblock_array->v.v_fillp && (pi=(void *)contblock_array->v.v_self[j]);j++)
++       if (pi->sgc_flags&SGC_WRITABLE)
++      for (i=0;i<pi->in_use;i++)
++        SET_WRITABLE(page(pi)+i);
++@@ -932,7 +900,7 @@ sgc_quit(void) {
++      ((object) p)->d.s=SGC_NORMAL;
++ #endif
++   
++-  for (v=contblock_list_head;v;v=v->next) 
+++  for (i=0;i<contblock_array->v.v_fillp &&(v=(void *)contblock_array->v.v_self[i]);i++)
++     if (v->sgc_flags&SGC_PAGE_FLAG) 
++       bzero(CB_SGCF_START(v),CB_DATA_START(v)-CB_SGCF_START(v));
++   
++@@ -940,7 +908,7 @@ sgc_quit(void) {
++     struct pageinfo *pi;
++     for (pi=cell_list_head;pi;pi=pi->next)
++       pi->sgc_flags&=SGC_PERM_WRITABLE;
++-    for (pi=contblock_list_head;pi;pi=pi->next)
+++    for (i=0;i<contblock_array->v.v_fillp &&(pi=(void *)contblock_array->v.v_self[i]);i++)
++       pi->sgc_flags&=SGC_PERM_WRITABLE;
++   }
++   
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..67e553eccd3f6835aa477115dd784405c9810637
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,185 @@@
++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.
++ .
++ gcl (2.6.12-32) unstable; urgency=medium
++ .
++   * Version_2_6_13pre40
++   * Bug fix: "[INTL:pt_BR] Brazilian Portuguese debconf templates
++     translation", thanks to Adriano Rafael Gomes (Closes: #811523).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/811523
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -300,7 +300,8 @@ gcl_init_cmp_anon(void);
++ 
++ #include "gmp_wrappers.h"
++ 
++-#define massert(a_) if (!(a_)) assert_error(#a_,__LINE__,__FILE__,__FUNCTION__)
+++#include <errno.h>
+++#define massert(a_) ({errno=0;if (!(a_)||errno) assert_error(#a_,__LINE__,__FILE__,__FUNCTION__);})
++ 
++ extern bool writable_malloc;
++ #define writable_malloc_wrap(f_,rt_,a_...) ({rt_ v;bool w=writable_malloc;writable_malloc=1;v=f_(a_);writable_malloc=w;v;})
++--- gcl-2.6.12.orig/lsp/gcl_mislib.lsp
+++++ gcl-2.6.12/lsp/gcl_mislib.lsp
++@@ -131,7 +131,7 @@ x))
++          *gcl-major-version* *gcl-minor-version* *gcl-extra-version*
++          (if (member :ansi-cl *features*) "ANSI" "CLtL1")
++          (if (member :gprof *features*) "profiling" "")
++-         (gcl-compile-time)
+++         *gcl-release-date*
++          "Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)"
++          "Binary License: "
++          (if gpled-modules (format nil "GPL due to GPL'ed components: ~a" gpled-modules)
++--- gcl-2.6.12.orig/lsp/gcl_predlib.lsp
+++++ gcl-2.6.12/lsp/gcl_predlib.lsp
++@@ -777,6 +777,7 @@
++ (defvar *gcl-extra-version* nil)
++ (defvar *gcl-minor-version* nil)
++ (defvar *gcl-major-version* nil)
+++(defvar *gcl-release-date*  nil)
++ 
++ (defun warn-version (majvers minvers extvers)
++   (and *gcl-major-version* *gcl-minor-version* *gcl-extra-version*
++--- gcl-2.6.12.orig/makefile
+++++ gcl-2.6.12/makefile
++@@ -34,9 +34,9 @@ TESTDIR = ansi-tests
++ 
++ VERSION=`cat majvers`.`cat minvers`
++ 
++-all: $(BUILD_BFD) system command cmpnew/gcl_collectfn.o lsp/gcl_info.o do-gcl-tk # do-info
+++all: $(BUILD_BFD) system command cmpnew/gcl_collectfn.o lsp/gcl_info.o do-gcl-tk release # do-info
++ 
++-ASRC:=$(shell ls -1 o/*.c lsp/*.lsp cmpnew/*.lsp mod/*.lsp pcl/*sp clcs/*sp xgcl-2/*p) #o/*.d o/*.h h/*.h
+++ASRC:=$(shell ls -1 o/*.c lsp/*.lsp cmpnew/*.lsp pcl/*sp clcs/*sp xgcl-2/*p) #o/*.d o/*.h h/*.h
++ TAGS: $(ASRC)
++      etags --regex='/\#.`(defun[ \n\t]+\([^ \n\t]+\)/' $^
++ 
++@@ -44,6 +44,9 @@ system: $(PORTDIR)/$(FLISP)
++ #    [ "$(X_LIBS)" == "" ] || (cd xgcl-2 && make saved_xgcl LISP=../$< && mv saved_xgcl ../$(PORTDIR)/$(FLISP))
++      touch $@
++ 
+++release: majvers minvers
+++     date >$@
+++
++ xgcl: $(PORTDIR)/saved_xgcl
++ 
++ $(PORTDIR)/saved_xgcl: $(PORTDIR)/saved_gcl
++--- gcl-2.6.12.orig/o/error.c
+++++ gcl-2.6.12/o/error.c
++@@ -27,6 +27,7 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ */
++ 
++ #include <stdlib.h>
+++#include <string.h>
++ #include "include.h"
++ object siSuniversal_error_handler;
++ 
++@@ -36,11 +37,11 @@ void
++ assert_error(const char *a,unsigned l,const char *f,const char *n) {
++ 
++   if (!raw_image && core_end && core_end==sbrk(0))
++-    FEerror("The assertion ~a on line ~a of ~a in function ~a failed",4,
+++    FEerror("The assertion ~a on line ~a of ~a in function ~a failed: ~a",5,
++          make_simple_string(a),make_fixnum(l),
++-         make_simple_string(f),make_simple_string(n));
+++         make_simple_string(f),make_simple_string(n),make_simple_string(strerror(errno)));
++   else {
++-    emsg("The assertion %s on line %d of %s in function %s failed",a,l,f,n);
+++    emsg("The assertion %s on line %d of %s in function %s failed: %s",a,l,f,n,strerror(errno));
++     do_gcl_abort();
++   }
++ 
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -242,7 +242,7 @@ get_gc_environ(void) {
++   }
++ 
++   gc_page_min=0.5;
++-  if ((e=getenv("GCL_GC_PAGE_THRESH"))) {
+++  if ((e=getenv("GCL_GC_PAGE_MIN"))) {
++     massert(sscanf(e,"%lf",&gc_page_min)==1);
++     massert(gc_page_min>=0.0);
++   }
++@@ -1028,12 +1028,6 @@ DEFUNO_NEW("IDENTITY",object,fLidentity,
++   RETURN1 (x0);
++ }
++ 
++-DEFUNO_NEW("GCL-COMPILE-TIME",object,fSgcl_compile_time,SI
++-       ,0,0,NONE,OO,OO,OO,OO,void,Lgcl_compile_time,(void),"")
++-{
++-  RETURN1 (make_simple_string(__DATE__ " " __TIME__));
++-}
++-
++ DEFUNO_NEW("LDB1",object,fSldb1,SI
++        ,3,3,NONE,OI,II,OO,OO,void,Lldb1,(fixnum a,fixnum b, fixnum c),"")
++ {
++--- gcl-2.6.12.orig/o/sfasli.c
+++++ gcl-2.6.12/o/sfasli.c
++@@ -115,10 +115,9 @@ LFD(build_symbol_table)(void) {
++ int
++ use_symbols(double d,...) {
++ 
+++  double d2;
++ #ifndef DARWIN
++-
++   extern void sincos(double,double *,double *);
++-  double d2;
++ 
++   sincos(d,&d,&d2);
++ 
++--- /dev/null
+++++ gcl-2.6.12/release
++@@ -0,0 +1 @@
+++Fri Apr 22 15:51:11 UTC 2016
++--- gcl-2.6.12.orig/unixport/makefile
+++++ gcl-2.6.12/unixport/makefile
++@@ -72,10 +72,11 @@ $(LSPDIR)/auto_new.lsp: $(LSPDIR)/auto.l
++ sys_init.lsp: sys_init.lsp.in
++ 
++      cat $< | sed \
++-             -e "s#@LI-VERS@#(`cat ../majvers`.`cat ../minvers`) `date`#1" \
+++             -e "s#@LI-VERS@#(`cat ../majvers`.`cat ../minvers`) `cat ../release`#1" \
++              -e "s#@LI-EXTVERS@#`cat ../minvers | cut -f2 -d.`#1" \
++              -e "s#@LI-MINVERS@#`cat ../minvers | cut -f1 -d.`#1" \
++              -e "s#@LI-MAJVERS@#`cat ../majvers`#1" \
+++             -e "s#@LI-RELEASE@#`cat ../release`#1" \
++              -e "s#@LI-CC@#\"$(CC) -c $(FINAL_CFLAGS)\"#1" \
++              -e "s#@LI-LD@#\"$(CC) $(LD_FLAGS) -o \"#1" \
++              -e "s#@LI-LD-LIBS@#\" $(LD_LIBS_PRE) -l$* $(LD_LIBS_POST)\"#1" \
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -51,7 +51,8 @@
++ 
++ (setq *gcl-extra-version* @LI-EXTVERS@
++       *gcl-minor-version* @LI-MINVERS@ 
++-      *gcl-major-version* @LI-MAJVERS@)
+++      *gcl-major-version* @LI-MAJVERS@
+++      *gcl-release-date*  "@LI-RELEASE@")
++ 
++ (defvar *system-banner* (default-system-banner))
++ (setq *optimize-maximum-pages* t)
++@@ -83,3 +84,5 @@
++ (let* ((i 4096)(j (si::equal-tail-recursion-check i)))
++   (unless (<= (ash i -1) j)
++     (warn "equal is not tail recursive ~s ~s" i j)))
+++
+++(format t "~s heap words available~%" (multiple-value-bind (a b c d) (si::heap-report) (/ (- d c) (/ a 8))))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4adb1a28556551f6a49d6ee67a80eeb14e8d5192
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,253 @@@
++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.
++ .
++ gcl (2.6.12-34) unstable; urgency=medium
++ .
++   * Version_2_6_13pre45
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-09-23
++
++--- gcl-2.6.12.orig/h/unrandomize.h
+++++ gcl-2.6.12/h/unrandomize.h
++@@ -23,7 +23,6 @@
++      int i,j,k;
++      char **n,**a;
++      void *v;
++-     argv[0]="/proc/self/exe";
++      for (i=j=0;argv[i];i++)
++        j+=strlen(argv[i])+1;
++      for (k=0;envp[k];k++)
++--- gcl-2.6.12.orig/lsp/gcl_serror.lsp
+++++ gcl-2.6.12/lsp/gcl_serror.lsp
++@@ -174,7 +174,7 @@
++       (format *error-output* "~&If continued: ")
++       (funcall (restart-report-function correctable) *error-output*))
++     (force-output *error-output*)
++-    (break-level condition)))
+++    (when *break-enable* (break-level condition))))
++ 
++ 
++ (defun dbl-eval (- &aux (break-command t))
++@@ -186,54 +186,51 @@
++                  (t (setq break-command nil) (evalhook - nil nil *break-env*))))))
++     (cons break-command val-list)))
++ 
++-(defun do-break-level (at env p-e-p debug-level break-level &aux (first t))
+++(defun dbl-rpl-loop (p-e-p)
++ 
++-  (do nil (nil) 
++-   
++-   (unless
++-       (with-simple-restart 
++-     (abort "Return to debug level ~D." debug-level)
++-     (not
++-      (catch 'step-continue
++-        (let* ((*break-level* break-level)
++-               (*break-enable* (unless p-e-p *break-enable*))
++-               (*readtable* (or *break-readtable* *readtable*))
++-               *break-env* *read-suppress*); *error-stack*)
++-
++-          (setq +++ ++ ++ + + -)
++-
++-          (when first
++-            (catch-fatal 1)
++-            (setq *interrupt-enable* t first nil)
++-            (cond (p-e-p 
++-                   (format *debug-io* "~&~A~2%" at)
++-                   (set-current)
++-                   (setq *no-prompt* nil)
++-                   (show-restarts))
++-                  ((set-back at env))))
++-
++-          (if *no-prompt* 
++-              (setq *no-prompt* nil)
++-            (format *debug-io* "~&~a~a>~{~*>~}"
++-                    (if p-e-p "" "dbl:")
++-                    (if (eq *package* (find-package 'user)) "" (package-name *package*))
++-                    break-level))
++-          (force-output *error-output*)
++-
++-          (setq - (dbl-read *debug-io* nil *top-eof*))
++-          (when (eq - *top-eof*) (bye -1))
++-          (let* ((ev (dbl-eval -))
++-                 (break-command (car ev))
++-                 (values (cdr ev)))
++-            (and break-command (eq (car values) :resume)(return))
++-            (setq /// // // / / values *** ** ** * * (car /))
++-            (fresh-line *debug-io*)
++-            (dolist (val /)
++-              (prin1 val *debug-io*)
++-              (terpri *debug-io*)))
++-          nil))))
++-     (terpri *debug-io*)
++-     (break-current))))
+++  (setq +++ ++ ++ + + -)
+++
+++  (if *no-prompt*
+++      (setq *no-prompt* nil)
+++    (format *debug-io* "~&~a~a>~{~*>~}"
+++         (if p-e-p "" "dbl:")
+++         (if (eq *package* (find-package 'user)) "" (package-name *package*))
+++         *break-level*))
+++  (force-output *error-output*)
+++
+++  (setq - (dbl-read *debug-io* nil *top-eof*))
+++  (when (eq - *top-eof*) (bye -1))
+++  (let* ((ev (dbl-eval -))
+++      (break-command (car ev))
+++      (values (cdr ev)))
+++    (unless (and break-command (eq (car values) :resume))
+++      (setq /// // // / / values *** ** ** * * (car /))
+++      (fresh-line *debug-io*)
+++      (dolist (val /)
+++     (prin1 val *debug-io*)
+++     (terpri *debug-io*))
+++      (dbl-rpl-loop p-e-p))))
+++
+++(defun do-break-level (at env p-e-p debug-level); break-level
+++
+++  (unless
+++      (with-simple-restart
+++       (abort "Return to debug level ~D." debug-level)
+++
+++       (catch-fatal 1)
+++       (setq *interrupt-enable* t)
+++       (cond (p-e-p
+++           (format *debug-io* "~&~A~2%" at)
+++           (set-current)
+++           (setq *no-prompt* nil)
+++           (show-restarts))
+++          ((set-back at env)))
+++
+++       (not (catch 'step-continue (dbl-rpl-loop p-e-p))))
+++
+++    (terpri *debug-io*)
+++    (break-current)
+++    (do-break-level at env p-e-p debug-level)))
++ 
++ 
++ (defun break-level (at &optional env)
++@@ -242,10 +239,10 @@
++          (- -)
++          (* *) (** **) (*** ***)
++          (/ /) (// //) (/// ///)
++-      (break-level (if p-e-p (cons t *break-level*) *break-level*))
++       (debug-level *debug-level*)
++       (*quit-tags* (cons (cons *break-level* *quit-tag*) *quit-tags*))
++       *quit-tag*
+++      (*break-level* (if p-e-p (cons t *break-level*) *break-level*))
++       (*ihs-base* (1+ *ihs-top*))
++       (*ihs-top* (ihs-top))
++       (*frs-base* (or (sch-frs-base *frs-top* *ihs-base*) (1+ (frs-top))))
++@@ -255,9 +252,11 @@
++       (*debug-restarts* (compute-restarts))
++       (*debug-abort* (find-restart 'abort))
++       (*debug-continue* (find-restart 'continue))
++-      (*abort-restarts* (remove-if-not (lambda (x) (eq 'abort (restart-name x))) *debug-restarts*)))
+++      (*abort-restarts* (remove-if-not (lambda (x) (eq 'abort (restart-name x))) *debug-restarts*))
+++      (*readtable* (or *break-readtable* *readtable*))
+++      *break-env* *read-suppress*)
++     
++-      (do-break-level at env p-e-p debug-level break-level)))
+++      (do-break-level at env p-e-p debug-level)))
++ 
++ (putprop 'break-level t 'compiler::cmp-notinline)
++ 
++@@ -278,6 +277,6 @@
++           (setq message ""))))
++   (with-simple-restart 
++    (continue "Return from break.")
++-   (let ((*break-enable* t)) (break-level message)))
+++   (break-level message))
++   nil)
++ (putprop 'break t 'compiler::cmp-notinline)
++--- gcl-2.6.12.orig/lsp/sys-proclaim.lisp
+++++ gcl-2.6.12/lsp/sys-proclaim.lisp
++@@ -4,7 +4,7 @@
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++          ANSI-LOOP::LOOP-EMIT-FINAL-VALUE SYSTEM::INSPECT-CHARACTER
++-         SYSTEM::INSPECT-STRUCTURE SYSTEM::PRINT-IHS
+++         SYSTEM::INSPECT-STRUCTURE SYSTEM::PRINT-IHS SYSTEM::DBL-RPL-LOOP
++          SYSTEM::RESTART-FUNCTION COMMON-LISP::TANH COMMON-LISP::FIFTH
++          SLOOP::PARSE-LOOP-INITIALLY SYSTEM::NEXT-STACK-FRAME
++          SYSTEM::IDESCRIBE SYSTEM::PROCESS-ARGS SYSTEM::LEAP-YEAR-P
++@@ -268,7 +268,7 @@
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SLOOP::FIRST-USE-SLOOP-FOR SYSTEM::COERCE-TO-CONDITION
+++         SLOOP::FIRST-USE-SLOOP-FOR SYSTEM::COERCE-TO-CONDITION SYSTEM::DO-BREAK-LEVEL
++          SLOOP::FIRST-SLOOP-FOR ANSI-LOOP::LOOP-FOR-ARITHMETIC
++          SYSTEM::MAYBE-BREAK SYSTEM::SETF-STRUCTURE-ACCESS
++          SYSTEM::CALL-TEST SYSTEM::FIND-LINE-IN-FUN)) 
++@@ -334,7 +334,7 @@
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::MAKE-PREDICATE SYSTEM::DO-BREAK-LEVEL
+++         SYSTEM::MAKE-PREDICATE
++          SYSTEM::MAKE-CONSTRUCTOR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++@@ -519,4 +519,4 @@
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM)
++              COMMON-LISP::FIXNUM)
++-         SYSTEM::ROUND-UP)) 
++\ No newline at end of file
+++         SYSTEM::ROUND-UP))
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -464,19 +464,12 @@ DEFUN_NEW("EQUAL-TAIL-RECURSION-CHECK",o
++ int
++ main(int argc, char **argv, char **envp) {
++ 
++-#ifdef CAN_UNRANDOMIZE_SBRK
++-#include <stdio.h>
++-#include <stdlib.h>
++-#include "unrandomize.h"
++-#endif
++-
++-  gcl_init_alloc(&argv);
++-
++ #ifdef GET_FULL_PATH_SELF
++   GET_FULL_PATH_SELF(kcl_self);
++ #else
++   kcl_self = argv[0];
++ #endif
+++
++ #ifdef __MINGW32__
++   {
++     char *s=kcl_self;
++@@ -485,6 +478,14 @@ main(int argc, char **argv, char **envp)
++ #endif       
++   *argv=kcl_self;
++   
+++#ifdef CAN_UNRANDOMIZE_SBRK
+++#include <stdio.h>
+++#include <stdlib.h>
+++#include "unrandomize.h"
+++#endif
+++
+++  gcl_init_alloc(&argv);
+++
++   setbuf(stdin, stdin_buf); 
++   setbuf(stdout, stdout_buf);
++ #ifdef _WIN32
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9551eed6be4cab3f19fd8a97907e464c97ecc17c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,237 @@@
++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.
++ .
++ gcl (2.6.12-34) unstable; urgency=medium
++ .
++   * Version_2_6_13pre45
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-09-30
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -28,7 +28,7 @@
++ 
++ 
++ (export '(*compile-print* *compile-verbose*))
++-(import 'si::*tmp-dir* 'compiler)
+++(import 'si::(*tmp-dir* *cc* *ld* *objdump*))
++ (import 'si::*error-p* 'compiler)
++ 
++ ;;; This had been true with Linux 1.2.13 a.out or even older
++@@ -85,9 +85,8 @@
++   (code result) (system (mysub (ts string) "$" "\\$"))
++     (unless (and (zerop code) (zerop result))
++       (cerror "Continues anyway."
++-              "(SYSTEM ~S) returned a non-zero value ~D."
++-              string
++-              result)
+++              "(SYSTEM ~S) returned a non-zero value ~D ~D."
+++              string code result)
++       (setq *error-p* t))
++     (values result)))
++ 
++@@ -428,8 +427,8 @@ Cannot compile ~a.~%"
++                           (si::copy-stream st *standard-output*))
++           (with-open-file (st hn)
++                           (si::copy-stream st *standard-output*))
++-          (when (zerop (system "which objdump >/dev/null"))
++-            (safe-system (si::string-concatenate "objdump --source " (namestring on))))
+++          (when (eql (aref *objdump* 0) #\/);program found at startup in path
+++            (safe-system (si::string-concatenate *objdump* (namestring on))))
++           (mdelete-file cn)
++           (mdelete-file dn)
++           (mdelete-file hn)
++@@ -470,8 +469,6 @@ Cannot compile ~a.~%"
++       (terpri *compiler-output2*)))))
++ 
++ 
++-(defvar *cc* "cc")
++-(defvar *ld* "ld")
++ (defvar *ld-libs* "ld-libs")
++ (defvar *opt-three* "")
++ (defvar *opt-two* "")
++@@ -489,7 +486,7 @@ Cannot compile ~a.~%"
++     (setq na  (namestring
++             (make-pathname :name name :type (pathname-type(first args)))))
++    #+(or dos winnt)
++-      (format nil "~a -I~a ~a ~a -c -w ~s -o ~s"
+++      (format nil "~a -I~a ~a ~a -c -w ~a -o ~a"
++            *cc*
++            (concatenate 'string si::*system-directory* "../h")
++            (if (and (boundp '*c-debug*) *c-debug*) " -g " "")
++@@ -502,7 +499,7 @@ Cannot compile ~a.~%"
++            )
++ 
++    #-(or dos winnt)
++-   (format nil  "~a -I~a ~a ~a -c ~s -o ~s ~a"
+++   (format nil  "~a -I~a ~a ~a -c ~a -o ~a ~a"
++         *cc*
++         (concatenate 'string si::*system-directory* "../h")
++         (if (and (boundp '*c-debug*) *c-debug*) " -g " "")
++--- gcl-2.6.12.orig/h/elf32_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf32_mips_reloc_special.h
++@@ -147,3 +147,6 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++        (*(a_))->address=p->st_value;                                 \
++        break;                                                        \
++      }}})
+++
+++#undef LOAD_SYM_BY_NAME
+++#define LOAD_SYM_BY_NAME(sym,st1) (!strncmp(st1+sym->st_name,"__moddi3",8))
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -361,7 +361,7 @@ extern bool writable_malloc;
++ #define prof_block(x) x
++ #endif
++ 
++-#define psystem(x) prof_block(system(x))
+++#define psystem(x) prof_block(vsystem(x))
++ #define pfork() prof_block(fork())
++ 
++ #include "error.h"
++--- gcl-2.6.12.orig/lsp/gcl_top.lsp
+++++ gcl-2.6.12/lsp/gcl_top.lsp
++@@ -601,9 +601,21 @@ First directory is checked for first nam
++           :device (pathname-device x)
++           :directory (append (pathname-directory x) y)))))))))
++ 
+++(defun get-path (s &aux (m (string-match "([^/ ]*)( |$)" s))(b (match-beginning 1))(e (match-end 1))
+++                (r (with-open-file (s (concatenate 'string "|which " (subseq s b e))) (read s nil 'eof))))
+++  (if (eq r 'eof) s (concatenate 'string (string-downcase r) (subseq s e))))
+++
+++
+++(defvar *cc* "cc")
+++(defvar *ld* "ld")
+++(defvar *objdump* "objdump --source ")
+++
++ (defun set-up-top-level (&aux (i (argc)) tem)
++   (declare (fixnum i))
++-  (setq *tmp-dir* (get-temp-dir))
+++  (setq *tmp-dir* (get-temp-dir)
+++     *cc* (get-path *cc*)
+++     *ld* (get-path *ld*)
+++     *objdump* (get-path *objdump*))
++   (dotimes (j i) (push (argv j) tem))
++   (setq *command-args* (nreverse tem))
++   (setq tem *lib-directory*)
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -613,7 +613,8 @@ BEGIN:
++              else 
++                fclose(strm->sm.sm_fp);
++              strm->sm.sm_fp = NULL;
++-             if (type_of(strm->sm.sm_object0 ) == t_cons &&
+++             if (strm->sm.sm_object0 &&
+++                 type_of(strm->sm.sm_object0 ) == t_cons &&
++                  Mcar(strm->sm.sm_object0 ) == sSAallow_gzipped_fileA)
++                fLdelete_file(Mcdr(strm->sm.sm_object0));
++              break;
++--- gcl-2.6.12.orig/o/run_process.c
+++++ gcl-2.6.12/o/run_process.c
++@@ -502,6 +502,7 @@ make_socket_pair()
++   stream_in->sm.sm_buffer = 0;
++   stream_in->sm.sm_int0 = sockets_in[1];
++   stream_in->sm.sm_int1 = 0;
+++  stream_in->sm.sm_object0=stream_in->sm.sm_object1=OBJNULL;
++   stream_out = (object) alloc_object(t_stream);
++   stream_out->sm.sm_mode = smm_output;
++   stream_out->sm.sm_fp = fp2;
++@@ -510,6 +511,7 @@ make_socket_pair()
++   setup_stream_buffer(stream_out);
++   stream_out->sm.sm_int0 = sockets_out[1];
++   stream_out->sm.sm_int1 = 0;
+++  stream_out->sm.sm_object0=stream_out->sm.sm_object1=OBJNULL;
++   stream = make_two_way_stream(stream_in, stream_out);
++   return(stream);
++ }
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -54,9 +54,10 @@ License for more details.
++ 
++ #define ulmax(a_,b_) ({ul _a=a_,_b=b_;_a<_b ? _b : _a;})
++ #define ALLOC_SEC(sec) (sec->sh_flags&SHF_ALLOC && (sec->sh_type==SHT_PROGBITS || sec->sh_type==SHT_NOBITS))
++-#define  LOAD_SEC(sec) (sec->sh_flags&SHF_ALLOC &&  sec->sh_type==SHT_PROGBITS)
++-#define  LOAD_SYM(sym) ({ul _b=ELF_ST_BIND(sym->st_info),_t=ELF_ST_TYPE(sym->st_info);       \
++-      sym->st_value && (_b==STB_GLOBAL || _b==STB_WEAK || (_t>=STT_LOPROC && _t<=STT_HIPROC));})
+++#define LOAD_SEC(sec) (sec->sh_flags&SHF_ALLOC &&  sec->sh_type==SHT_PROGBITS)
+++#define LOAD_SYM_BY_BIND(sym) ({ul _b=ELF_ST_BIND(sym->st_info); sym->st_value && (_b==STB_GLOBAL || _b==STB_WEAK);})
+++#define LOAD_SYM_BY_NAME(sym,st1) 0
+++#define LOAD_SYM(sym,st1) (LOAD_SYM_BY_BIND(sym)||LOAD_SYM_BY_NAME(sym,st1))
++ 
++ #define MASK(n) (~(~0ULL << (n)))
++ 
++@@ -410,7 +411,7 @@ calc_space(ul *ns,ul *sl,Sym *sym1,Sym *
++ 
++   for (sym=sym1;sym<syme;sym++) {
++     
++-    if (!LOAD_SYM(sym))
+++    if (!LOAD_SYM(sym,st1))
++       continue;
++ 
++     if (d1) {
++@@ -436,7 +437,7 @@ load_ptable(struct node **a,char **s,Sym
++ 
++   for (sym=sym1;sym<syme;sym++) {
++ 
++-    if (!LOAD_SYM(sym))
+++    if (!LOAD_SYM(sym,st1))
++       continue;
++ 
++     if (d1) {
++--- gcl-2.6.12.orig/o/unixsys.c
+++++ gcl-2.6.12/o/unixsys.c
++@@ -24,10 +24,38 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #include <string.h>
++ #include <sys/stat.h>
++ #include <sys/types.h>
++-
+++#include <sys/wait.h>
++ 
++ #include "include.h"
++ 
+++int
+++vsystem(const char *command) {
+++
+++  unsigned j,n=strlen(command);
+++  char *z=alloca(n+1),**p1,**pp,*c;
+++  int s;
+++  pid_t pid;
+++
+++  memcpy(z,command,n+1);
+++  for (j=0,c=z;strtok(c," \n\t");c=NULL,j++);
+++
+++  memcpy(z,command,n+1);
+++  p1=alloca((j+1)*sizeof(*p1));
+++  for (pp=p1,c=z;(*pp=strtok(c," \n\t"));c=NULL,pp++);
+++
+++  if (!(pid=vfork())) {
+++    execvp(*p1,p1);
+++    _exit(2);
+++  }
+++
+++  massert(pid>0);
+++  massert(pid==waitpid(pid,&s,0));
+++
+++  return s;
+++
+++}
+++
+++
++ #ifdef ATT3B2
++ #include <signal.h>
++ int
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ba92ac2b744152cf5c676fbb7f137c58a70747fb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++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.
++ .
++ gcl (2.6.12-35) unstable; urgency=medium
++ .
++   * Version_2_6_13pre46
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-09-30
++
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -229,7 +229,7 @@ get_gc_environ(void) {
++ 
++   const char *e;
++   
++-  mem_multiple=0.85;
+++  mem_multiple=1.0;
++   if ((e=getenv("GCL_MEM_MULTIPLE"))) {
++     massert(sscanf(e,"%lf",&mem_multiple)==1);
++     massert(mem_multiple>=0.0);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e3a076163fedd9f61fe249697e79134327bbfcaf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,59 @@@
++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.
++ .
++ gcl (2.6.12-35) unstable; urgency=medium
++ .
++   * Version_2_6_13pre47
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-01
++
++--- gcl-2.6.12.orig/h/elf32_hppa_reloc_special.h
+++++ gcl-2.6.12/h/elf32_hppa_reloc_special.h
++@@ -39,3 +39,6 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   return 0;
++   
++ }
+++
+++#undef LOAD_SYM_BY_NAME
+++#define LOAD_SYM_BY_NAME(sym,st1) (!strncmp(st1+sym->st_name,"$$dyncall",8))
++--- gcl-2.6.12.orig/o/unixsys.c
+++++ gcl-2.6.12/o/unixsys.c
++@@ -31,16 +31,16 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ int
++ vsystem(const char *command) {
++ 
++-  unsigned j,n=strlen(command);
++-  char *z=alloca(n+1),**p1,**pp,*c;
+++  unsigned j,n=strlen(command)+1;
+++  char *z=alloca(n),**p1,**pp,*c;
++   int s;
++   pid_t pid;
++ 
++-  memcpy(z,command,n+1);
++-  for (j=0,c=z;strtok(c," \n\t");c=NULL,j++);
+++  memcpy(z,command,n);
+++  for (j=1,c=z;strtok(c," \n\t");c=NULL,j++);
++ 
++-  memcpy(z,command,n+1);
++-  p1=alloca((j+1)*sizeof(*p1));
+++  memcpy(z,command,n);
+++  p1=alloca(j*sizeof(*p1));
++   for (pp=p1,c=z;(*pp=strtok(c," \n\t"));c=NULL,pp++);
++ 
++   if (!(pid=vfork())) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..74117076000de2a79b2f73e26b6003bca59d27a7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,33 @@@
++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.
++ .
++ gcl (2.6.12-36) unstable; urgency=medium
++ .
++   * Version_2_6_13pre48
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-03
++
++--- gcl-2.6.12.orig/h/elf32_hppa_reloc_special.h
+++++ gcl-2.6.12/h/elf32_hppa_reloc_special.h
++@@ -41,4 +41,4 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++ }
++ 
++ #undef LOAD_SYM_BY_NAME
++-#define LOAD_SYM_BY_NAME(sym,st1) (!strncmp(st1+sym->st_name,"$$dyncall",8))
+++#define LOAD_SYM_BY_NAME(sym,st1) (!strncmp(st1+sym->st_name,"$$",2))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b16434835ce9c061e43a7fe612b1e28518bf6a63
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,83 @@@
++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.
++ .
++ gcl (2.6.12-5) unstable; urgency=medium
++ .
++   * Version_2_6_13pre4
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/page.h
+++++ gcl-2.6.12/h/page.h
++@@ -85,10 +85,8 @@ extern int sgc_enabled;
++ 
++ extern long resv_pages;
++ extern int reserve_pages_for_signal_handler;
++-/* #define CONT_MARK_PAGE (((page(heap_end)-first_data_page)*(PAGESIZE/(CPTR_SIZE*CHAR_SIZE))+PAGESIZE-1)/PAGESIZE) */
++-/* #define   available_pages ((fixnum)(real_maxpage-page(heap_end)-2*nrbpage-CONT_MARK_PAGE-resv_pages)) */
++ 
++-extern struct pageinfo *cell_list_head,*cell_list_tail/* ,*contblock_list_head,*contblock_list_tail */;
+++extern struct pageinfo *cell_list_head,*cell_list_tail;
++ extern object contblock_array;
++ 
++ #define PAGE_MAGIC 0x2e
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -506,31 +506,25 @@ rebalance_maxpages(struct typemanager *m
++ 
++   if (j+d>phys_pages) {
++ 
++-    ufixnum k=0;
+++    ufixnum k,e=j+d-phys_pages;
+++    double f;
++ 
++-    for (i=t_start;i<t_other;i++)
+++    for (k=0,i=t_start;i<t_other;i++)
++       if (tm_table+i!=my_tm)
++      k+=(tm_table[i].tm_maxpage-tm_table[i].tm_npage)*(i==t_relocatable ? 2 : 1);
++ 
++-    d=d>k+phys_pages-j ? k+phys_pages-j : d;
++-    if (d<=0)
+++    e=e>k ? k : e;
+++    if (e+phys_pages-j<=0)
++       return 0;
++ 
+++    f=1.0-(double)e/k;
+++
++     for (i=t_start;i<t_other;i++)
++-      if (tm_table[i].tm_npage) {
++-     if (tm_table+i==my_tm) {
++-       massert(set_tm_maxpage(tm_table+i,z) || !fprintf(stderr,"%lu %lu %lu %lu %lu\n",i,z,tm_table[i].tm_npage,tm_table[i].tm_maxpage,available_pages));
++-     } else {
++-       massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage+(1.0-(double)(j+d-phys_pages)/k)*(tm_table[i].tm_maxpage-tm_table[i].tm_npage)));
+++      if (tm_table[i].tm_npage && tm_table+i!=my_tm) {
+++       massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage+f*(tm_table[i].tm_maxpage-tm_table[i].tm_npage)));
++      }
++-      }
++     
++-    /* for (i=t_start;i<t_other;i++) */
++-    /*   if (tm_table[i].tm_npage && tm_table[i].tm_npage>((double)phys_pages/(j+d))*(tm_table+i==my_tm ? z : tm_table[i].tm_maxpage)) */
++-    /*       return 0; */
++-    /* for (i=t_start;i<t_other;i++) */
++-    /*   if (tm_table[i].tm_npage) */
++-    /*       massert(set_tm_maxpage(tm_table+i,((double)phys_pages/(j+d))*(tm_table+i==my_tm ? z : tm_table[i].tm_maxpage))); */
+++    massert(set_tm_maxpage(my_tm,(my_tm->tm_maxpage+(phys_pages-sum_maxpages()))/(my_tm->tm_type==t_relocatable ? 2 : 1)));
++ 
++     return 1;
++     
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e17b62728c5f1dafaf774ef48b7b113e0ea3818b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,223 @@@
++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.
++ .
++ gcl (2.6.12-37) unstable; urgency=medium
++ .
++   * Version_2_6_13pre49
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-04
++
++--- gcl-2.6.12.orig/o/array.c
+++++ gcl-2.6.12/o/array.c
++@@ -850,31 +850,33 @@ raw_aet_ptr(object x, short int typ)
++      */     
++ 
++ void
++-gset(void *p1, void *val, int n, int typ)
++-{ if (val==0)
+++gset(void *p1, void *val, int n, int typ) {
+++
+++  if (val==0)
++     val = aet_types[typ].dflt;
++-    switch (typ){
+++
+++  switch (typ){
++ 
++ #define GSET(p,n,typ,val) {typ x = *((typ *) val); GSET1(p,n,typ,x)}
++-#define GSET1(p,n,typ,val) while (n-- > 0) \
+++#define GSET1(p,n,typ,val) while (n-- > 0)   \
++       { *((typ *) p) = val; \
++-       p = p + sizeof(typ); \
++-       } break;
+++     p = p + sizeof(typ);                    \
+++      } break;
++ 
++-    case aet_object: GSET(p1,n,object,val);
++-    case aet_ch:     GSET(p1,n,char,val);
++-      /* Note n is number of fixnum WORDS for bit */
++-    case aet_bit:    GSET(p1,n,fixnum,val);
++-    case aet_fix:    GSET(p1,n,fixnum,val);
++-    case aet_sf:     GSET(p1,n,shortfloat,val);
++-    case aet_lf:     GSET(p1,n,longfloat,val);
++-    case aet_char:   GSET(p1,n,char,val);
++-    case aet_uchar:  GSET(p1,n,unsigned char,val);
++-    case aet_short:  GSET(p1,n,short,val);
++-    case aet_ushort: GSET(p1,n,unsigned short,val);
++-    default:         FEerror("bad elttype",0);
++-    }
+++  case aet_object: GSET(p1,n,object,val);
+++  case aet_ch:     GSET(p1,n,char,val);
+++    /* Note n is number of fixnum WORDS for bit */
+++  case aet_bit:    GSET(p1,n,fixnum,val);
+++  case aet_fix:    GSET(p1,n,fixnum,val);
+++  case aet_sf:     GSET(p1,n,shortfloat,val);
+++  case aet_lf:     GSET(p1,n,longfloat,val);
+++  case aet_char:   GSET(p1,n,char,val);
+++  case aet_uchar:  GSET(p1,n,unsigned char,val);
+++  case aet_short:  GSET(p1,n,short,val);
+++  case aet_ushort: GSET(p1,n,unsigned short,val);
+++  default:         FEerror("bad elttype",0);
++   }
+++}
++ 
++ 
++ #define W_SIZE (BV_BITS*sizeof(fixnum))    
++@@ -894,38 +896,43 @@ implementation dependent results.")
++   int n1=fix(n1o),nc;
++   if (VFUN_NARGS==4)
++     { n1 = x->v.v_dim - i1;}
++-  if (typ1==aet_bit)
++-    {if (i1 % CHAR_SIZE)
++-     badcopy:
++-       FEerror("Bit copies only if aligned",0);
++-    else
++-      {int rest=n1%CHAR_SIZE;
++-       if (rest!=0 )
++-      {if (typ2!=aet_bit)
++-         goto badcopy;
++-         {while(rest> 0)
++-            { fSaset1(y,i2+n1-rest,(fLrow_major_aref(x,i1+n1-rest)));
++-              rest--;}
++-          }}
++-       i1=i1/CHAR_SIZE ;
++-       n1=n1/CHAR_SIZE;
++-       typ1=aet_char;
++-     }};
++-  if (typ2==aet_bit)
++-    {if (i2 % CHAR_SIZE)
++-       goto badcopy;
++-       i2=i2/CHAR_SIZE ;}
++-  if ((typ1 ==aet_object ||
++-       typ2  ==aet_object) && typ1 != typ2)
+++  if (typ1==aet_bit) {
+++    if (i1 % CHAR_SIZE)
+++    badcopy:
+++      FEerror("Bit copies only if aligned",0);
+++    else {
+++      int rest=n1%CHAR_SIZE;
+++      if (rest!=0) {
+++     if (typ2!=aet_bit)
+++       goto badcopy;
+++     while(rest> 0) {
+++       fSaset1(y,i2+n1-rest,(fLrow_major_aref(x,i1+n1-rest)));
+++       rest--;
+++     }
+++      }
+++      i1=i1/CHAR_SIZE ;
+++      n1=n1/CHAR_SIZE;
+++      typ1=aet_char;
+++    }
+++  }
+++
+++  if (typ2==aet_bit) {
+++    if (i2 % CHAR_SIZE)
+++      goto badcopy;
+++    i2=i2/CHAR_SIZE ;
+++  }
+++
+++  if ((typ1 ==aet_object || typ2  ==aet_object) && typ1 != typ2)
++     FEerror("Can't copy between different array types",0);
++   nc=n1 * aet_sizes[(int)typ1];
++-  if (i1+n1 > x->a.a_dim
++-      || ((y->a.a_dim - i2) *aet_sizes[(int)typ2]) < nc)
+++  if (i1+n1 > x->a.a_dim || ((y->a.a_dim - i2) *aet_sizes[(int)typ2]) < nc)
++     FEerror("Copy  out of bounds",0);
++   bcopy(x->ust.ust_self + (i1*aet_sizes[(int)typ1]),
++      y->ust.ust_self + (i2*aet_sizes[(int)typ2]),
++      nc);
+++
++   return x;
+++
++ }
++ 
++ /* X is the header of an array.  This supplies the body which
++--- gcl-2.6.12.orig/o/predicate.c
+++++ gcl-2.6.12/o/predicate.c
++@@ -744,14 +744,13 @@ BEGIN:
++      if (tx == t_complex)
++              return(contains_sharp_comma(x->cmp.cmp_real) ||
++                     contains_sharp_comma(x->cmp.cmp_imag));
++-     if (tx == t_vector)
++-     {
++-             int i;
++-        if (x->v.v_elttype == aet_object)
++-             for (i = 0;  i < x->v.v_fillp;  i++)
++-                     if (contains_sharp_comma(x->v.v_self[i]))
++-                             return(TRUE);
++-             return(FALSE);
+++     if (tx == t_vector) {
+++       int i;
+++       if (x->v.v_elttype == aet_object)
+++         for (i = 0;  i < x->v.v_fillp;  i++)
+++           if (contains_sharp_comma(x->v.v_self[i]))
+++             return(TRUE);
+++       return(FALSE);
++      }
++      if (tx == t_cons) {
++              if (x->c.c_car == siSsharp_comma)
++--- gcl-2.6.12.orig/o/unixsys.c
+++++ gcl-2.6.12/o/unixsys.c
++@@ -32,25 +32,39 @@ int
++ vsystem(const char *command) {
++ 
++   unsigned j,n=strlen(command)+1;
++-  char *z=alloca(n),**p1,**pp,*c;
+++  char *z,*c;
+++  const char *x1[]={"/bin/sh","-c",NULL,NULL},*spc=" \n\t",**p1,**pp;
++   int s;
++   pid_t pid;
++ 
++-  memcpy(z,command,n);
++-  for (j=1,c=z;strtok(c," \n\t");c=NULL,j++);
+++  if (strpbrk(command,"\"'$<>"))
++ 
++-  memcpy(z,command,n);
++-  p1=alloca(j*sizeof(*p1));
++-  for (pp=p1,c=z;(*pp=strtok(c," \n\t"));c=NULL,pp++);
+++    (p1=x1)[2]=command;
+++
+++  else {
+++
+++    z=alloca(n);
+++    memcpy(z,command,n);
+++    for (j=1,c=z;strtok(c,spc);c=NULL,j++);
+++
+++    memcpy(z,command,n);
+++    p1=alloca(j*sizeof(*p1));
+++    for (pp=p1,c=z;(*pp=strtok(c,spc));c=NULL,pp++);
+++
+++  }
++ 
++   if (!(pid=vfork())) {
++-    execvp(*p1,p1);
++-    _exit(2);
+++    errno=0;
+++    execvp(*p1,(void *)p1);
+++    _exit(128|(errno&0x7f));
++   }
++ 
++   massert(pid>0);
++   massert(pid==waitpid(pid,&s,0));
++ 
+++  if ((s>>8)&128)
+++    emsg("execvp failure when executing '%s': %s\n",command,strerror((s>>8)&0x7f));
+++
++   return s;
++ 
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ea69e84ba4ed163b6a568d74aa94bcad587ccaee
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++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.
++ .
++ gcl (2.6.12-65) unstable; urgency=medium
++ .
++   * list_order.25
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-02-22
++
++--- gcl-2.6.12.orig/makefile
+++++ gcl-2.6.12/makefile
++@@ -149,7 +149,7 @@ command:
++ merge:
++      $(CC) -o merge merge.c
++ 
++-LISP_LIB=cmpnew/gcl_collectfn.o cmpnew/gcl_collectfn.lsp xgcl-2/sysdef.lisp xgcl-2/gcl_dwtest.lsp xgcl-2/gcl_dwtestcases.lsp lsp/gcl_gprof.lsp lsp/gcl_info.o lsp/gcl_profile.lsp lsp/gcl_export.lsp lsp/gcl_autoload.lsp cmpnew/gcl_cmpmain.lsp cmpnew/gcl_cmpopt.lsp cmpnew/gcl_lfun_list.lsp lsp/gcl_auto_new.lsp h/cmpinclude.h unixport/sys_init.lsp unixport/lib$(SYSTEM).a unixport/libgclp.a gcl-tk/tk-package.lsp $(TK_LISP_LIB) $(RL_LIB) $(FIRST_FILE) $(LAST_FILE) $(addsuffix /sys-proclaim.lisp,lsp cmpnew pcl clcs) unixport/gcl.script
+++LISP_LIB=cmpnew/gcl_collectfn.o cmpnew/gcl_collectfn.lsp xgcl-2/package.lisp pcl/package.lisp clcs/package.lisp xgcl-2/sysdef.lisp xgcl-2/gcl_dwtest.lsp xgcl-2/gcl_dwtestcases.lsp lsp/gcl_gprof.lsp lsp/gcl_info.o lsp/gcl_profile.lsp lsp/gcl_export.lsp lsp/gcl_autoload.lsp cmpnew/gcl_cmpmain.lsp cmpnew/gcl_cmpopt.lsp cmpnew/gcl_lfun_list.lsp lsp/gcl_auto_new.lsp h/cmpinclude.h unixport/sys_init.lsp unixport/lib$(SYSTEM).a unixport/libgclp.a gcl-tk/tk-package.lsp $(TK_LISP_LIB) $(RL_LIB) $(FIRST_FILE) $(LAST_FILE) $(addsuffix /sys-proclaim.lisp,lsp cmpnew xgcl-2 pcl clcs) unixport/gcl.script
++ 
++ install-command:
++      rm -f $(DESTDIR)$(prefix)/bin/gcl
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d5d69f71f2063d6874be38a3f899f2357c2252b5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2878 @@@
++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.
++ .
++ gcl (2.6.12-65) unstable; urgency=medium
++ .
++   * Version_2_6_13pre52
++   * Bug fix: "FTBFS on hurd-i386", thanks to svante.signell@gmail.com</a>;
++     (Closes: #802593).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/802593
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-02
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpenv.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpenv.lsp
++@@ -49,7 +49,6 @@
++   (setq *reservations* nil)
++   (setq *closures* nil)
++   (setq *top-level-forms* nil)
++-  (setq *non-package-operation* nil)
++   (setq *function-declarations* nil)
++   (setq *inline-functions* nil)
++   (setq *inline-blocks* 0)
++@@ -71,12 +70,10 @@
++ (defun add-symbol (symbol) (add-object symbol))
++ 
++ (defun add-object2 (object)
++-  (let* ((init (when (si::contains-sharp-comma object)
++-              (if (when (consp object) (eq (car object) 'si::|#,|))
++-                  (cdr object) (si::string-to-object (wt-to-string object)))))
+++  (let* ((init (if (when (consp object) (eq (car object) '|#,|)) (cdr object) `',object))
++       (object (if (when (consp init) (eq (car init) 'si::nani)) (si::nani (cadr init)) object)))
++     (cond ((gethash object *objects*))
++-       ((push-data-incf (unless init object))
+++       ((push-data-incf nil)
++         (when init (add-init `(si::setvv ,*next-vv* ,init)))
++         (setf (gethash object *objects*) *next-vv*)))))
++ 
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -180,7 +180,7 @@
++                         (*compile-print* (or print *compile-print*))
++                            (*package* *package*)
++                         (*DEFAULT-PATHNAME-DEFAULTS* #p"")
++-                        (*data* (list (make-array 50 :fill-pointer 0 :adjustable t) nil nil))
+++                        (*data* (list nil))
++                         *init-name*  
++                         (*fasd-data* *fasd-data*)
++                            (*error-count* 0))
++@@ -281,10 +281,8 @@ Cannot compile ~a.~%"
++        (if (consp *split-files*)
++            (dolist (v (fourth *split-files*)) (t1expr v)))
++        (unwind-protect
++-           (do ((form (read *compiler-input* nil eof)
++-                      (read *compiler-input* nil eof))
++-                (load-flag (or (eq :defaults *eval-when-defaults*)
++-                               (member 'load *eval-when-defaults*))))
+++           (do ((form (read *compiler-input* nil eof)(read *compiler-input* nil eof))
+++                (load-flag (if  *eval-when-defaults* (member 'load *eval-when-defaults*) t)))
++                (nil)
++                (cond
++                 ((eq form eof))
++@@ -292,7 +290,7 @@ Cannot compile ~a.~%"
++                 ((maybe-eval nil form)))
++                (cond
++                 ((and *split-files* (check-end form eof))
++-                 (setf (fourth *split-files*) (reverse (third *data*)))
+++                 (setf (fourth *split-files*) nil);(reverse (third *data*)) ;FIXME check this
++                  (return nil))
++                 ((eq form eof) (return nil))))
++          
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptop.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptop.lsp
++@@ -72,7 +72,6 @@
++ 
++ 
++ (defvar *top-level-forms* nil)
++-(defvar *non-package-operation* nil)
++ 
++ ;;; *top-level-forms* holds ( { top-level-form }* ).
++ ;;;
++@@ -99,18 +98,7 @@
++ 
++ ;;; Package operations.
++ 
++-(si:putprop 'make-package t 'package-operation)
++-(si:putprop 'in-package t 'package-operation)
++-(si:putprop 'shadow t 'package-operation)
++-(si:putprop 'shadowing-import t 'package-operation)
++-(si:putprop 'export t 'package-operation)
++-(si:putprop 'unexport t 'package-operation)
++-(si:putprop 'use-package t 'package-operation)
++-(si:putprop 'unuse-package t 'package-operation)
++-(si:putprop 'import t 'package-operation)
++-(si:putprop 'provide t 'package-operation)
++-(si:putprop 'require t 'package-operation)
++-(si:putprop 'defpackage:defpackage t 'package-operation)
+++(si:putprop 'in-package t 'eval-at-compile)
++ 
++ ;;; Pass 1 top-levels.
++ 
++@@ -135,6 +123,7 @@
++ ;;; Pass 2 initializers.
++ 
++ (si:putprop 'defun 't2defun 't2)
+++(si:putprop 'progn 't2progn 't2)
++ (si:putprop 'declare 't2declare 't2)
++ (si:putprop 'defentry 't2defentry 't2)
++ (si:putprop 'si:putprop 't2putprop 't2)
++@@ -142,6 +131,7 @@
++ ;;; Pass 2 C function generators.
++ 
++ (si:putprop 'defun 't3defun 't3)
+++(si:putprop 'progn 't3progn 't3)
++ (si:putprop 'ordinary 't3ordinary 't3)
++ (si:putprop 'sharp-comma 't3sharp-comma 't3)
++ (si:putprop 'clines 't3clines 't3)
++@@ -242,15 +232,6 @@
++             ((symbolp fun)
++              (cond ((eq fun 'si:|#,|)
++                     (cmperr "Sharp-comma-macro is in a bad place."))
++-                   ((get fun 'package-operation)
++-                    (when *non-package-operation*
++-                      (cmpwarn "The package operation ~s was in a bad place."
++-                               form))
++-                 (let ((res (if (setq fd (macro-function fun))
++-                                (cmp-expand-macro fd fun (copy-list (cdr form)))
++-                              form)))
++-                   (maybe-eval t res)
++-                   (wt-data-package-operation res)))
++                    ((setq fd (get fun 't1))
++                     (when *compile-print* (print-current-form))
++                     (funcall fd args))
++@@ -278,11 +259,24 @@
++ (defvar *vaddress-list*)   ;; hold addresses of C functions, and other data
++ (defvar *vind*)            ;; index in the VV array where the address is.
++ (defvar *Inits*)
+++
+++(defun t23expr (form prop &aux (def (when (consp form) (get (car form) prop)))
+++                  *local-funs* (*first-error* t) *vcs-used*)
+++  (when def
+++    (apply def (cdr form)))
+++  (when (eq prop 't3)
+++      ;;; Local function and closure function definitions.
+++    (block
+++     nil
+++     (loop
+++      (when (endp *local-funs*) (return))
+++      (let (*vcs-used*)
+++     (apply 't3local-fun (pop *local-funs*)))))))
+++
++ (defun ctop-write (name &aux
++-                     def
++-             (*function-links* nil) *c-vars* (*volatile* " VOL ")
++-             *vaddress-list* (*vind* 0)  *inits*
++-             *current-form* *vcs-used*)
+++                (*function-links* nil) *c-vars* (*volatile* " VOL ")
+++                *vaddress-list* (*vind* 0)  *inits*
+++                *current-form* *vcs-used*)
++   (declare (special *current-form* *vcs-used*))
++ 
++   (setq *top-level-forms* (nreverse *top-level-forms*))
++@@ -295,32 +289,19 @@
++ 
++ 
++   ;; write all the inits.
++-  (dolist* (*current-form* *top-level-forms*)
++-        (setq *first-error* t)          
++-        (setq *vcs-used* nil)
++-           (when (setq def (get (car *current-form*) 't2))
++-                 (apply def (cdr *current-form*))))
++-
+++  (dolist (*current-form* *top-level-forms*)
+++    (t23expr *current-form* 't2))
++   
++   ;;; C function definitions.
++-  (dolist* (*current-form* *top-level-forms*)
++-        (setq *first-error* t)          
++-        (setq *vcs-used* nil)
++-           (when (setq def (get (car *current-form*) 't3))
++-                 (apply def (cdr *current-form*))))
++-
++-  ;;; Local function and closure function definitions.
++-  (let (lf)
++-       (block local-fun-process
++-         (loop
++-          (when (endp *local-funs*) (return-from local-fun-process))
++-          (setq lf (car *local-funs*))
++-          (pop *local-funs*)
++-       (setq *vcs-used* nil)
++-          (apply 't3local-fun lf))))
+++  (dolist (*current-form* *top-level-forms*)
+++    (let* ((inits (data-inits)))
+++      (t23expr *current-form* 't3)
+++      (unless (or (eq (data-inits) inits) (eq (cdr (data-inits)) inits))
+++     (let ((di (data-inits)))
+++       (setf (data-inits) inits)
+++       (add-init (cons 'progn (nreverse (mapcar 'cdr (ldiff di inits)))))))))
++ 
++   ;;; Global entries for directly called functions.
++-
++   (dolist* (x *global-entries*)
++         (setq *vcs-used* nil)
++            (apply 'wt-global-entry x))
++@@ -400,31 +381,27 @@
++ ;; as I can make it.   Valid values of *eval-when-defaults* are
++ ;; a sublist of '(compile eval load)
++ 
++-(defvar *eval-when-defaults* :defaults)
++-
++-(defun maybe-eval (default-action form)
++-  (or default-action (and (symbolp (car form))
++-                         (setq default-action (get (car form) 'eval-at-compile))))
++-  (cond ((or (and default-action (eq :defaults *eval-when-defaults*))
++-          (and (consp *eval-when-defaults*)(member 'compile *eval-when-defaults* )))
++-       (if form  (cmp-eval form))
++-       t)))
+++(defvar *eval-when-defaults* nil);:defaults
++ 
+++(defun maybe-eval (def form)
+++  (when (or def
+++         (intersection '(compile :compile-toplevel) *eval-when-defaults*)
+++         (let ((c (car form))) (when (symbolp c) (get c 'eval-at-compile))))
+++    (when form
+++      (cmp-eval form))
+++    t))
++ 
++ (defun t1eval-when (args &aux load-flag compile-flag)
++   (when (endp args) (too-few-args 'eval-when 1 0))
++-  (dolist** (situation (car args))
+++  (dolist (situation (car args))
++     (case situation
++           ((load :load-toplevel) (setq load-flag t))
++           ((compile :compile-toplevel) (setq compile-flag t))
++           ((eval :execute))
++-          (otherwise (cmperr "The EVAL-WHEN situation ~s is illegal."
++-                             situation))))
++-  (let ((*eval-when-defaults* (car args)))
++-    (cond (load-flag
++-        (t1progn (cdr args)))
++-       (compile-flag
++-        (cmp-eval (cons 'progn (cdr args)))))))
+++          (otherwise (cmperr "The EVAL-WHEN situation ~s is illegal." situation))))
+++  (let ((*eval-when-defaults* (or *eval-when-defaults* (car args))))
+++    (cond (load-flag (t1progn (cdr args)))
+++       (compile-flag (cmp-eval (cons 'progn (cdr args)))))))
++ 
++ (defun t1macrolet(args &aux (*funs* *funs*))
++   (dolist (def (car args))
++@@ -441,7 +418,17 @@
++       (let ((*compile-ordinaries* t))
++         (t1progn (cdr args))))
++      (t
++-      (dolist** (form args) (t1expr form)))))
+++      (let ((f *top-level-forms*))
+++        (dolist (form args) (t1expr form))
+++        (setq *top-level-forms* (cons `(progn ,(nreverse (ldiff *top-level-forms* f))) f))))))
+++
+++(defun t3progn (args)
+++  (dolist (arg args)
+++    (t23expr arg 't3)))
+++
+++(defun t2progn (args)
+++  (dolist (arg args)
+++    (t23expr arg 't2)))
++ 
++ ;; (defun foo (x) ..   -> (defun foo (g102 &aux (x g102)) ... 
++ (defun  cmpfix-args (args bind &aux tem (lam (copy-list (second args))))
++@@ -464,7 +451,6 @@
++   (unless (macro-function (car args)) (maybe-eval nil (cons 'defun args)))
++  (tagbody
++    top
++-  (setq *non-package-operation* t)
++   (setq *local-functions* nil)
++   (let ((*vars* nil) (*funs* nil) (*blocks* nil) (*tags* nil) lambda-expr
++          (*special-binding* nil)
++@@ -681,8 +667,8 @@
++   (push (list a) *vaddress-list*)
++   (prog1 *vind* (incf *vind*)))
++ 
++-(defun t2defun (fname cfun lambda-expr doc sp)
++-  (declare (ignore cfun lambda-expr doc sp))
+++(defun t2defun (fname cfun lambda-expr doc sp &optional macro-p)
+++  (declare (ignore cfun lambda-expr doc sp macro-p))
++   (cond ((get fname 'no-global-entry)(return-from t2defun nil)))
++   (cond ((< *space* 2)
++       (setf (get fname 'debug-prop) t)
++@@ -716,8 +702,7 @@
++         (t (wt-h cfun "();")
++         (add-init `(si::mf ',fname ,(add-address (c-function-name "" cfun fname)))))))
++ 
++-(defun t3defun (fname cfun lambda-expr doc sp &aux inline-info 
++-                   (macro-p (equal `(mflag ,fname) (cadr (member *current-form* *top-level-forms*))))
+++(defun t3defun (fname cfun lambda-expr doc sp &optional macro-p &aux inline-info
++                    (*current-form* (list 'defun fname))
++                    (*volatile* (volatile (second lambda-expr)))
++                    *downward-closures*)
++@@ -1333,47 +1318,29 @@
++   (maybe-eval (not (macro-function n)) (cons 'defmacro w));FIXME?
++   (t1expr `(defun ,n ,@(if macp args (cddr (caddr (si::defmacro* n (pop args) args))))))
++   (setf (symbol-plist n) l)
++-  (push `(mflag ,n) *top-level-forms*))
+++  (nconc (car *top-level-forms*) '(t)))
+++
+++(defvar *compiling-ordinary* nil)
++ 
++-(defun t1ordinary (form &aux tem )
++-  (setq *non-package-operation* t)
++-  ;; check for top level functions
++-  (cond ((or *compile-ordinaries* (when (listp form) (member (car form) '(let let* flet labels))))
+++(defun compile-ordinary-p (form)
+++  (when (consp form)
+++    (or (member (car form) '(lambda defun defmacro flet labels))
+++     (compile-ordinary-p (car form))
+++     (compile-ordinary-p (cdr form)))))
+++
+++(defun t1ordinary (form)
+++  (cond ((unless *compiling-ordinary*
+++        (or *compile-ordinaries* (compile-ordinary-p form)))
++       (maybe-eval nil form)
++-      (let ((gen (gensym "progn 'compile")))
+++      (let ((gen (gensym))(*compiling-ordinary* t))
++         (proclaim `(function ,gen nil t))
++-        (t1expr `(defun ,gen (), form nil))
++-        (push (list 'ordinary `(,gen) ) *top-level-forms*)))
++-     ;;Hack to things like (setq bil #'(lambda () ...)) or (foo nil #'(lambda () ..))
++-     ;; but not (let ((x ..)) (setq bil #'(lambda () ..)))
++-     ;; for the latter you must use (progn 'compile ...)
++-     ((and (consp form)
++-           (symbolp (car form))
++-           (or (eq (car form) 'setq)
++-               (not (special-operator-p (car form))))
++-           (do ((v (cdr form) (and (consp v) (cdr v)))
++-                (i 1 (the fixnum (+ 1 i))))
++-               ((or (>= i 1000)
++-                    (not (consp v))) nil)
++-               (declare (fixnum i))
++-               (cond ((and (consp (car v))
++-                           (eq (caar v) 'function)
++-                           (consp (setq tem (second (car v))))
++-                           (eq (car tem) 'lambda))
++-                      (let ((gen (gensym)))
++-                        (t1expr `(defun ,gen ,@ (cdr tem)))
++-                        (return-from t1ordinary
++-                                     (t1ordinary (append
++-                                                  (subseq form 0 i)
++-                                                  `((symbol-function ', gen))
++-                                                  (nthcdr (+ 1 i) form))))))))))
+++        (t1expr `(progn (defun ,gen nil ,form nil) (,gen)))))
++      (t 
++       (maybe-eval nil form)
++       (let ((*vars* nil) (*funs* nil) (*blocks* nil) (*tags* nil)
++             (*sharp-commas* nil))
++         (push (list 'ordinary  form) *top-level-forms*)
++-        nil
++-        ))))
+++        nil))))
++ 
++ (defun t3ordinary (form)
++   (cond ((atom form))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmputil.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmputil.lsp
++@@ -217,7 +217,7 @@
++ (dolist (v '(si::cdefn lfun inline-safe inline-unsafe
++                     inline-always c1conditional c2 c1 c1+ co1
++                     si::structure-access co1special
++-                    top-level-macro t3 t2 t1 package-operation))
+++                    top-level-macro t3 t2 t1))
++         (si::putprop v t 'compiler-prop ))
++ 
++ (defun  compiler-def-hook (symbol code) symbol code nil)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpwt.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpwt.lsp
++@@ -25,9 +25,7 @@
++   (require 'FASDMACROS "../cmpnew/gcl_fasdmacros.lsp")
++ 
++ 
++-(defmacro data-vector () `(car *data*))
++-(defmacro data-inits () `(second *data*))
++-(defmacro data-package-ops () `(third *data*))
+++(defmacro data-inits () `(first *data*))
++ 
++ )
++ 
++@@ -69,7 +67,7 @@
++ (defvar *fasd-data*)
++ 
++ (defvar *hash-eq* nil)
++-(defvar *run-hash-equal-data-checking* nil)
+++(defvar *run-hash-equal-data-checking* t)
++ (defun memoized-hash-equal (x depth);FIXME implement all this in lisp
++   (declare (fixnum depth))
++   (when *run-hash-equal-data-checking*
++@@ -85,7 +83,6 @@
++                (si::hash-equal x depth)))))))
++ 
++ (defun push-data-incf (x)
++-  (vector-push-extend (cons (memoized-hash-equal x -1000) x) (data-vector))
++   (incf *next-vv*))
++ 
++ (defun wt-data1 (expr)
++@@ -105,58 +102,36 @@
++     (terpri *compiler-output-data*)
++     (prin1 expr *compiler-output-data*)))
++ 
++-(defun verify-data-vector(vec &aux v)
++-  (dotimes (i (length vec))
++-        (setq v (aref vec i))
++-        (let ((has (memoized-hash-equal (cdr v) -1000)))
++-          (cond ((not (eql (car v) has))
++-                 (cmpwarn "A form or constant:~% ~s ~%has changed during the eval compile procedure!.~%  The changed form will be the one put in the compiled file" (cdr v)))))
++-        (setf (aref vec i) (cdr v)))
++-  vec
++-  )
+++(defun add-init (x &optional endp &aux (tem (cons (memoized-hash-equal x -1000) x)))
+++  (if endp
+++      (nconc (data-inits) (list tem))
+++    (push tem (data-inits)))
+++  x)
+++
+++(defun verify-datum (v)
+++  (unless (eql (pop v) (memoized-hash-equal v -1000))
+++    (cmpwarn "A form or constant:~% ~s ~%has changed during the eval compile procedure!.~%  The changed form will be the one put in the compiled file" v))
+++  v)
+++
+++(defun wt-fasd-element (x)
+++  (si::find-sharing-top x (fasd-table (car *fasd-data*)))
+++  (si::write-fasd-top x (car *fasd-data*)))
++ 
++-(defun add-init (x &optional endp)
++-  (let ((tem (cons (memoized-hash-equal x -1000) x)))
++-    (setf (data-inits)
++-                 (if endp
++-                     (nconc (data-inits) (list tem))
++-                   (cons tem (data-inits) )))
++-    x))
+++(defun wt-data2 (x)
+++  (if *fasd-data*
+++      (wt-fasd-element x)
+++    (wt-data1 x)))
++ 
++-(defun wt-data-file ()
+++(defun wt-data-file nil
++   (when *prof-p* (add-init `(si::mark-memory-as-profiling)))
++-  (verify-data-vector (data-vector))
++-  (let* ((vec (coerce (nreverse (data-inits)) 'vector)))
++-    (verify-data-vector vec)
++-    (setf (aref (data-vector) (- (length (data-vector)) 1))
++-       (cons 'si::%init vec))
++-    (setf (data-package-ops) (nreverse (data-package-ops)))
++-    (cond (*fasd-data*
++-        (wt-fasd-data-file))
++-       (t
++-        (format *compiler-output-data* "       ~%#(")
++-        (dolist (v (data-package-ops))
++-                (format *compiler-output-data* "#! ")
++-                (wt-data1 v))
++-        (wt-data1 (data-vector))
++-        (format *compiler-output-data* "~%)~%")
++-        ))))
+++  (wt-data2 (1+ *next-vv*))
+++  (dolist (v (nreverse (data-inits)))
+++    (wt-data2 (verify-datum v)))
+++  (when *fasd-data*
+++    (si::close-fasd (car *fasd-data*))))
++ 
++-(defun wt-fasd-data-file ( &aux (x (data-vector)) tem)
++-;  (si::find-sharing-top (data-package-ops) (fasd-table (car *fasd-data*)))
++-  (si::find-sharing-top x (fasd-table (car *fasd-data*)))
++-  (cond ((setq tem  (data-package-ops))
++-      (dolist (v tem)
++-      (put-op d_eval_skip  *compiler-output-data*)
++-      (si::write-fasd-top v (car *fasd-data*)))))
++-  (si::write-fasd-top x (car *fasd-data*))
++-;  (sloop::sloop for (k v) in-table (fasd-table (car *fasd-data*))
++-;            when (>= v 0) do (print (list k v)))
++-  (si::close-fasd (car *fasd-data*)))
++ (defun wt-data-begin ())
++ (defun wt-data-end ())
++-(defun wt-data-package-operation (x)
++-  (push x (data-package-ops)))
++ 
++ (defmacro wt (&rest forms &aux (fl nil))
++   (dolist** (form forms (cons 'progn (reverse (cons nil fl))))
++--- gcl-2.6.12.orig/cmpnew/sys-proclaim.lisp
+++++ gcl-2.6.12/cmpnew/sys-proclaim.lisp
++@@ -2,197 +2,163 @@
++ (COMMON-LISP::IN-PACKAGE "COMPILER") 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         COMPILER::TAG-REF-CLB COMPILER::SET-TOP
++-         COMPILER::C1MULTIPLE-VALUE-BIND COMPILER::C1LIST-NTH
++-         COMPILER::C1RPLACA-NTHCDR COMPILER::C1DEFINE-STRUCTURE
++-         COMPILER::BLK-REF-CLB COMPILER::WT-VV COMPILER::C1LENGTH
++-         COMPILER::C1MAPC COMPILER::C1LOCAL-CLOSURE
++-         COMPILER::CHECK-VREF COMPILER::WT-VAR-DECL COMPILER::C1TAGBODY
++-         COMPILER::BLK-REF-CCB COMPILER::C1LOAD-TIME-VALUE
++-         COMPILER::C1ASH COMPILER::FUN-LEVEL COMPILER::COPY-INFO
++-         COMPILER::INLINE-POSSIBLE COMPILER::WT-VS-BASE
++-         COMPILER::T1DEFENTRY COMPILER::CHARACTER-LOC-P
++-         COMPILER::C2RPLACA COMPILER::RESET-INFO-TYPE
++-         COMPILER::TYPE-FILTER COMPILER::TAG-SWITCH
++-         COMPILER::DECL-BODY-SAFETY COMPILER::C1AND
++-         COMPILER::C1FMLA-CONSTANT COMPILER::C2GO-CLB
++-         COMPILER::C1FUNCTION COMPILER::C1MAPLIST COMPILER::VAR-TYPE
++-         COMPILER::CLINK COMPILER::UNWIND-NO-EXIT COMPILER::VAR-LOC
++-         COMPILER::C2RPLACD COMPILER::VERIFY-DATA-VECTOR
++-         COMPILER::TAG-REF-CCB COMPILER::C1RETURN-FROM
++-         COMPILER::T1DEFINE-STRUCTURE COMPILER::MDELETE-FILE
++-         COMPILER::OBJECT-TYPE COMPILER::WT-CAR COMPILER::TAG-P
++-         COMPILER::ADD-LOOP-REGISTERS COMPILER::C1MEMQ
++-         COMPILER::C2FUNCTION COMPILER::CMP-MACRO-FUNCTION
++-         COMPILER::C1BOOLE-CONDITION COMPILER::REP-TYPE COMPILER::C2GET
++-         COMPILER::C2VAR COMPILER::C2EXPR* COMPILER::C1ADD-GLOBALS
++-         COMPILER::WT1 COMPILER::C1BLOCK COMPILER::C1MAPL
++-         COMPILER::C1MAPCAR COMPILER::FSET-FN-NAME COMPILER::C2GO-CCB
++-         COMPILER::T1DEFLA COMPILER::C1NTH-CONDITION
++-         COMPILER::ADD-OBJECT2 COMPILER::VAR-NAME COMPILER::C1EXPR
++-         COMPILER::FUN-REF COMPILER::SCH-LOCAL-FUN
++-         COMPILER::FIXNUM-LOC-P COMPILER::BLK-VAR
++-         COMPILER::C1UNWIND-PROTECT COMPILER::C2BIND
++-         COMPILER::PARSE-CVSPECS COMPILER::C1NTH
++-         COMPILER::WT-SWITCH-CASE SYSTEM::UNDEF-COMPILER-MACRO
++-         COMPILER::SET-UP-VAR-CVS COMPILER::C1ECASE
++-         COMPILER::C1STRUCTURE-REF COMPILER::FUN-INFO
++-         COMPILER::C1MEMBER COMPILER::C1GET COMPILER::WT-FUNCTION-LINK
++-         COMPILER::C1ASH-CONDITION COMPILER::WT-CCB-VS COMPILER::INFO-P
++-         COMPILER::REGISTER COMPILER::TAG-VAR COMPILER::C1VAR
++-         COMPILER::C1TERPRI COMPILER::LTVP
++-         COMPILER::WT-DOWNWARD-CLOSURE-MACRO COMPILER::C1MAPCON
++-         COMPILER::PUSH-ARGS-LISPCALL COMPILER::C1SETQ
++-         COMPILER::C2DOWNWARD-FUNCTION COMPILER::T3ORDINARY
++-         COMPILER::C1VREF COMPILER::WT-VS COMPILER::CONSTANT-FOLD-P
++-         COMPILER::C1MULTIPLE-VALUE-PROG1 COMPILER::BLK-EXIT
++-         COMPILER::T1DEFUN COMPILER::C1LABELS COMPILER::C1FSET
++-         COMPILER::T1MACROLET COMPILER::FUN-NAME COMPILER::C1APPLY
++-         COMPILER::FUN-P COMPILER::WT-DATA-PACKAGE-OPERATION
++-         COMPILER::C1FUNOB COMPILER::WT-SYMBOL-FUNCTION
++-         COMPILER::GET-RETURN-TYPE COMPILER::ADD-CONSTANT
++-         COMPILER::SAFE-SYSTEM COMPILER::BLK-VALUE-TO-GO
++-         COMPILER::NEED-TO-SET-VS-POINTERS COMPILER::C2TAGBODY-LOCAL
++-         COMPILER::C1DECLARE COMPILER::C1OR COMPILER::C1ASSOC
++-         COMPILER::ADD-ADDRESS COMPILER::VAR-KIND
++-         COMPILER::PROCLAMATION COMPILER::FIX-OPT COMPILER::WT-DATA1
++-         COMPILER::INFO-SP-CHANGE COMPILER::ARGS-CAUSE-SIDE-EFFECT
++-         COMPILER::WRITE-BLOCK-OPEN COMPILER::C2TAGBODY-BODY
++-         COMPILER::CONS-TO-LISTA COMPILER::SAVE-FUNOB COMPILER::VAR-REF
++-         COMPILER::C1LOCAL-FUN COMPILER::VAR-REP-LOC
++-         COMPILER::SET-PUSH-CATCH-FRAME COMPILER::CTOP-WRITE
++-         COMPILER::C2TAGBODY-CLB COMPILER::T1CLINES
++-         COMPILER::ADD-OBJECT COMPILER::GET-LOCAL-RETURN-TYPE
++-         COMPILER::DEFAULT-INIT COMPILER::FUNCTION-ARG-TYPES
++-         COMPILER::C1STRUCTURE-SET COMPILER::CMP-MACROEXPAND-1
++-         COMPILER::INLINE-TYPE COMPILER::VAR-REGISTER
++-         COMPILER::DECLARATION-TYPE COMPILER::C1CATCH COMPILER::C1LET
++-         COMPILER::T3CLINES COMPILER::UNDEFINED-VARIABLE COMPILER::C1GO
++-         COMPILER::TAG-NAME COMPILER::SCH-GLOBAL COMPILER::C1IF
++-         COMPILER::C1FLET COMPILER::INLINE-BOOLE3-STRING
++-         COMPILER::INFO-CHANGED-ARRAY COMPILER::C2FUNCALL-AUX
++-         COMPILER::FUN-REF-CCB COMPILER::WT-CADR COMPILER::FUN-CFUN
++-         COMPILER::WT-VS* COMPILER::WT-DOWN COMPILER::C2GETHASH
++-         COMPILER::ADD-REG1 COMPILER::REPLACE-CONSTANT
++-         COMPILER::C2DM-RESERVE-V COMPILER::RESULT-TYPE
++-         COMPILER::C1FUNCALL COMPILER::C1THE COMPILER::VARARG-P
++-         COMPILER::INFO-REFERRED-ARRAY COMPILER::C1PROGV
++-         COMPILER::T2DECLARE COMPILER::T1DEFCFUN COMPILER::C2VALUES
++-         COMPILER::C1SWITCH COMPILER::C1MAPCAN
++-         COMPILER::CMP-MACROEXPAND COMPILER::TAG-LABEL
++-         COMPILER::TAG-UNWIND-EXIT COMPILER::C1PRINC COMPILER::C1THROW
++-         COMPILER::SAVE-AVMA COMPILER::VOLATILE COMPILER::FLAGS-POS
++-         COMPILER::INFO-TYPE COMPILER::C1NTHCDR-CONDITION
++-         COMPILER::C1MULTIPLE-VALUE-SETQ COMPILER::WT-FUNCALL-C
++-         COMPILER::PUSH-ARGS COMPILER::C1DM-BAD-KEY
++-         COMPILER::T1ORDINARY COMPILER::C1PSETQ COMPILER::BLK-REF
++-         COMPILER::C2DM-RESERVE-VL COMPILER::C1MACROLET
++-         COMPILER::C1SHARP-COMMA COMPILER::C1RPLACA
++-         COMMON-LISP::PROCLAIM COMPILER::PUSH-DATA-INCF
++-         COMPILER::MACRO-DEF-P COMPILER::BLK-NAME COMPILER::C1VALUES
++-         COMPILER::C1DOWNWARD-FUNCTION COMPILER::T1DEFMACRO
++-         COMPILER::GET-ARG-TYPES COMPILER::ADD-SYMBOL
++-         COMPILER::NAME-SD1 COMPILER::C2GO-LOCAL
++-         COMPILER::C2TAGBODY-CCB COMPILER::WT-LIST
++-         COMPILER::GET-LOCAL-ARG-TYPES COMPILER::C1BOOLE3
++-         COMPILER::C1STACK-LET COMPILER::WT-CDR COMPILER::C1QUOTE
++-         COMPILER::C1EVAL-WHEN COMPILER::VAR-P COMPILER::CHECK-DOWNWARD
++-         COMPILER::T1PROGN COMPILER::BLK-P COMPILER::C2LOCATION
++-         COMPILER::THE-PARAMETER COMPILER::C2VAR-KIND
++-         COMPILER::C1GETHASH COMPILER::LTVP-EVAL COMPILER::C1RPLACD
++-         COMPILER::INFO-VOLATILE COMPILER::LONG-FLOAT-LOC-P
++-         COMPILER::FUNCTION-RETURN-TYPE COMPILER::SHORT-FLOAT-LOC-P
++-         COMPILER::WT-H1 COMPILER::C1MULTIPLE-VALUE-CALL
++-         COMPILER::NAME-TO-SD COMPILER::C1PROGN COMPILER::SET-RETURN
++-         COMPILER::C1LET* COMPILER::AET-C-TYPE COMPILER::C1COMPILER-LET
++-         COMPILER::MAXARGS COMPILER::VAR-REF-CCB COMPILER::VV-STR
++-         COMPILER::C1NTHCDR COMPILER::TAG-REF COMPILER::GET-INCLUDED)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
++-         COMPILER::INLINE-BOOLE3)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
++-                  COMMON-LISP::*))
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMPILER::TS COMPILER::DASH-TO-UNDERSCORE)) 
+++         COMPILER::CMPERR COMPILER::CMPWARN COMPILER::WT-CVAR
+++         COMPILER::ADD-INIT COMPILER::INIT-NAME
+++         COMPILER::FAST-LINK-PROCLAIMED-TYPE-P COMPILER::C1CASE
+++         COMPILER::WT-INTEGER-LOC COMPILER::CMPNOTE
+++         COMPILER::UNWIND-EXIT COMPILER::WT-COMMENT
+++         COMPILER::C1LAMBDA-EXPR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         COMPILER::C2CALL-UNKNOWN-GLOBAL COMPILER::WT-IF-PROCLAIMED
++-         COMPILER::MY-CALL COMPILER::WT-GLOBAL-ENTRY
++-         COMPILER::T3DEFUN-NORMAL COMPILER::C2STRUCTURE-REF
++-         COMPILER::C2SWITCH COMPILER::C2CALL-GLOBAL
++-         COMPILER::T3DEFUN-VARARG COMPILER::C1MAKE-VAR)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         COMPILER::C2RETURN-LOCAL COMPILER::WT-INLINE-LOC
+++         COMPILER::C1SYMBOL-FUN COMPILER::C2DECL-BODY
+++         COMPILER::COMPILER-BUILD COMPILER::NCONC-FILES
+++         COMPILER::C2BLOCK COMPILER::C1BODY COMPILER::C2BLOCK-LOCAL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807))
++              COMMON-LISP::T)
++-         COMPILER::LINK COMPILER::C2LAMBDA-EXPR COMPILER::C2FUNCALL
++-         COMPILER::INLINE-ARGS)) 
+++         COMPILER::MEMOIZED-HASH-EQUAL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         COMPILER::WT-INLINE-INTEGER COMPILER::ADD-FUNCTION-DECLARATION
++-         COMPILER::C1STRUCTURE-REF1 COMPILER::ADD-FAST-LINK
++-         COMPILER::AND-FORM-TYPE COMPILER::C2PRINC COMPILER::C2MAPCAN
++-         COMPILER::CJT COMPILER::C2CASE COMPILER::WT-INLINE-LONG-FLOAT
++-         COMPILER::SUBLIS1-INLINE COMPILER::MYSUB
++-         COMPILER::ADD-FUNCTION-PROCLAMATION COMPILER::FIX-DOWN-ARGS
++-         COMPILER::TOO-MANY-ARGS COMPILER::CMP-EXPAND-MACRO
++-         COMPILER::C2MULTIPLE-VALUE-BIND COMPILER::C2GO
++-         COMPILER::WT-INLINE-FIXNUM COMPILER::WT-INLINE-COND
++-         COMPILER::C1MAP-FUNCTIONS COMPILER::C1DM
++-         COMPILER::WT-MAKE-CCLOSURE COMPILER::CAN-BE-REPLACED*
++-         COMPILER::C-FUNCTION-NAME COMPILER::C2LET* COMPILER::CJF
++-         COMPILER::TOO-FEW-ARGS COMPILER::BOOLE3 COMPILER::T3DEFCFUN
++-         COMPILER::C2FUNCALL-SFUN COMPILER::C2MAPC
++-         COMPILER::CHECK-FORM-TYPE COMPILER::SET-VAR
++-         COMPILER::C2TAGBODY COMPILER::CHECK-VDECL
++-         COMPILER::GET-INLINE-INFO COMPILER::ASSIGN-DOWN-VARS
++-         COMPILER::C2LET COMPILER::INLINE-TYPE-MATCHES
++-         COMPILER::COMPILER-PASS2 COMPILER::C2PROGV COMPILER::C2MAPCAR
++-         COMPILER::MAKE-INLINE-STRING COMPILER::WT-INLINE-CHARACTER
++-         COMPILER::WT-INLINE-SHORT-FLOAT)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
+++         COMPILER::MAKE-INIT-STRING)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
++              COMMON-LISP::T)
++-         COMPILER::T2DEFENTRY COMPILER::DEFSYSFUN COMPILER::T3DEFENTRY)) 
+++         COMPILER::MLIN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         COMPILER::T3DEFUN-LOCAL-ENTRY COMPILER::T3INIT-FUN
++-         COMPILER::T2DEFUN COMPILER::T3DEFUN COMPILER::C2STRUCTURE-SET
++-         COMPILER::C1APPLY-OPTIMIZE)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         COMPILER::PROCLAIMED-ARGD COMPILER::ANALYZE-REGS
+++         COMPILER::ANALYZE-REGS1)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         COMPILER::GET-OUTPUT-PATHNAME COMPILER::WT-SIMPLE-CALL)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         COMPILER::DECL-BODY-SAFETY COMPILER::C2FUNCTION
+++         COMPILER::C1PROGN COMPILER::C1MAPCAR COMPILER::C1FLET
+++         COMPILER::C1EXPR COMPILER::C1LET COMPILER::ADD-OBJECT
+++         COMPILER::C1LABELS COMPILER::C1FMLA-CONSTANT COMPILER::C1ECASE
+++         COMPILER::C1LENGTH COMPILER::C1APPLY COMPILER::THE-PARAMETER
+++         COMPILER::C1TAGBODY COMPILER::T3CLINES
+++         COMPILER::VERIFY-DATA-VECTOR COMPILER::VAR-KIND
+++         COMPILER::INLINE-TYPE COMPILER::C1MULTIPLE-VALUE-CALL
+++         COMPILER::C2GET COMPILER::ADD-CONSTANT COMPILER::T1DEFMACRO
+++         COMPILER::C2EXPR* COMPILER::TAG-UNWIND-EXIT
+++         COMPILER::CHECK-DOWNWARD COMPILER::WT-CADR
+++         COMPILER::CHARACTER-LOC-P COMPILER::C1DECLARE
+++         COMPILER::AET-C-TYPE COMPILER::C1QUOTE COMPILER::CHECK-VREF
+++         COMPILER::VAR-LOC COMPILER::INLINE-POSSIBLE COMPILER::SET-TOP
+++         COMPILER::T1ORDINARY COMPILER::BLK-VAR COMPILER::SAVE-AVMA
+++         COMPILER::C1VREF COMPILER::WT-VV COMPILER::C2GO-LOCAL
+++         COMPILER::C1MEMBER COMPILER::LTVP-EVAL COMPILER::VV-STR
+++         COMPILER::TAG-REF-CLB COMPILER::T2DECLARE
+++         COMPILER::CMP-MACROEXPAND-1 COMPILER::T1DEFINE-STRUCTURE
+++         COMPILER::T1DEFENTRY COMPILER::ADD-OBJECT2 COMPILER::FUN-LEVEL
+++         COMPILER::VAR-P COMPILER::WT-DATA-PACKAGE-OPERATION
+++         COMPILER::PUSH-ARGS-LISPCALL COMPILER::C1PSETQ COMPILER::C1OR
+++         COMPILER::C1LOCAL-FUN COMPILER::WT-VS-BASE
+++         COMPILER::DEFAULT-INIT COMPILER::C1MAPCON COMPILER::C1GO
+++         COMPILER::INFO-REFERRED-ARRAY COMPILER::BLK-REF
+++         COMPILER::T1DEFLA COMPILER::INFO-CHANGED-ARRAY
+++         COMPILER::WT-VAR-DECL COMPILER::UNWIND-NO-EXIT
+++         COMPILER::BLK-VALUE-TO-GO COMPILER::C2GO-CLB
+++         COMPILER::FUNCTION-ARG-TYPES COMPILER::C1MAPC
+++         COMPILER::C2DOWNWARD-FUNCTION COMPILER::CMP-MACRO-FUNCTION
+++         COMPILER::C1SHARP-COMMA COMPILER::ADD-ADDRESS
+++         COMPILER::GET-LOCAL-RETURN-TYPE COMPILER::T1DEFUN
+++         COMPILER::C1ADD-GLOBALS COMPILER::C2DM-RESERVE-V
+++         COMPILER::C1ASH COMPILER::C1STACK-LET
+++         COMPILER::WT-SYMBOL-FUNCTION COMPILER::C2TAGBODY-CLB
+++         COMPILER::C1MAPLIST COMPILER::PUSH-DATA-INCF
+++         COMPILER::C2TAGBODY-LOCAL COMPILER::C1FSET COMPILER::WT1
+++         COMPILER::VAR-REF-CCB COMPILER::INFO-P COMPILER::C1ASSOC
+++         COMPILER::C2GETHASH COMPILER::C1RPLACD COMPILER::C1EVAL-WHEN
+++         COMPILER::REP-TYPE COMPILER::C1FUNOB COMPILER::BLK-REF-CLB
+++         COMPILER::WT-VS* COMPILER::C1GET COMPILER::SCH-LOCAL-FUN
+++         COMPILER::SET-PUSH-CATCH-FRAME COMPILER::C1BOOLE3
+++         COMPILER::BLK-EXIT COMPILER::T1DEFCFUN COMPILER::GET-ARG-TYPES
+++         COMPILER::WRITE-BLOCK-OPEN COMPILER::C1COMPILER-LET
+++         COMPILER::ADD-LOOP-REGISTERS COMPILER::INLINE-BOOLE3-STRING
+++         COMPILER::C1LOAD-TIME-VALUE COMPILER::VAR-TYPE
+++         COMPILER::REGISTER COMPILER::RESET-INFO-TYPE
+++         COMPILER::C1UNWIND-PROTECT COMPILER::C1IF
+++         COMPILER::SHORT-FLOAT-LOC-P COMPILER::C1VAR
+++         COMPILER::WT-FUNCALL-C COMPILER::C1THE COMPILER::FIX-OPT
+++         COMPILER::UNDEFINED-VARIABLE COMPILER::C2RPLACD
+++         COMPILER::C1BOOLE-CONDITION COMPILER::C1NTH COMPILER::VARARG-P
+++         COMPILER::OBJECT-TYPE COMPILER::VOLATILE COMPILER::FUN-P
+++         COMPILER::VAR-REF COMPILER::C1DEFINE-STRUCTURE
+++         COMPILER::MAXARGS COMPILER::LONG-FLOAT-LOC-P
+++         COMPILER::REPLACE-CONSTANT COMPILER::C2TAGBODY-BODY
+++         COMPILER::TAG-P COMPILER::C1RETURN-FROM COMPILER::WT-VS
+++         COMPILER::ARGS-CAUSE-SIDE-EFFECT COMPILER::C1LIST-NTH
+++         COMPILER::FSET-FN-NAME COMPILER::SAVE-FUNOB COMPILER::C1BLOCK
+++         COMPILER::C1AND COMPILER::C2TAGBODY-CCB COMPILER::GET-INCLUDED
+++         COMPILER::TAG-REF COMPILER::NEED-TO-SET-VS-POINTERS
+++         COMPILER::C1VALUES COMPILER::BLK-P COMPILER::COPY-INFO
+++         COMPILER::WT-CAR COMPILER::FUN-CFUN
+++         COMPILER::C1MULTIPLE-VALUE-PROG1 SYSTEM::UNDEF-COMPILER-MACRO
+++         COMPILER::C1DM-BAD-KEY COMPILER::FUN-REF COMPILER::NAME-SD1
+++         COMPILER::MDELETE-FILE COMPILER::SAFE-SYSTEM
+++         COMPILER::WT-DATA2 COMPILER::WT-CDR COMPILER::C2GO-CCB
+++         COMPILER::C1ASH-CONDITION COMPILER::C1RPLACA
+++         COMPILER::WT-DATA1 COMPILER::C1RPLACA-NTHCDR
+++         COMPILER::NAME-TO-SD COMPILER::WT-LIST
+++         COMPILER::CMP-MACROEXPAND COMPILER::WT-SWITCH-CASE
+++         COMPILER::GET-LOCAL-ARG-TYPES COMPILER::SET-UP-VAR-CVS
+++         COMPILER::WT-FASD-ELEMENT COMPILER::RESULT-TYPE
+++         COMPILER::C1SWITCH COMPILER::FIXNUM-LOC-P
+++         COMPILER::C1NTHCDR-CONDITION COMPILER::TAG-VAR
+++         COMPILER::C1NTHCDR COMPILER::CLINK COMPILER::LTVP
+++         COMPILER::C1LET* COMPILER::TAG-NAME COMPILER::C1FUNCALL
+++         COMPILER::C2RPLACA COMPILER::MACRO-DEF-P
+++         COMPILER::C1STRUCTURE-REF COMPILER::GET-RETURN-TYPE
+++         COMPILER::C1DOWNWARD-FUNCTION COMPILER::T1CLINES
+++         COMPILER::TYPE-FILTER COMPILER::C1FUNCTION
+++         COMPILER::CONS-TO-LISTA COMPILER::C1NTH-CONDITION
+++         COMPILER::FUN-NAME COMPILER::PROCLAMATION COMPILER::VAR-NAME
+++         COMPILER::WT-CCB-VS COMPILER::FLAGS-POS COMPILER::C1CATCH
+++         COMPILER::CTOP-WRITE COMPILER::TAG-LABEL COMPILER::C1MEMQ
+++         COMPILER::C1GETHASH COMPILER::TAG-REF-CCB COMPILER::TAG-SWITCH
+++         COMPILER::C2BIND COMPILER::VERIFY-DATUM COMPILER::C1MAPCAN
+++         COMPILER::WT-DOWNWARD-CLOSURE-MACRO COMPILER::C1TERPRI
+++         COMPILER::FUN-REF-CCB COMMON-LISP::PROCLAIM
+++         COMPILER::INFO-VOLATILE COMPILER::T3ORDINARY
+++         COMPILER::C2LOCATION COMPILER::BLK-NAME
+++         COMPILER::C1STRUCTURE-SET COMPILER::C2VAR
+++         COMPILER::C1LOCAL-CLOSURE COMPILER::C1MACROLET
+++         COMPILER::WT-FUNCTION-LINK COMPILER::C2VALUES
+++         COMPILER::T1MACROLET COMPILER::C1MULTIPLE-VALUE-BIND
+++         COMPILER::C2FUNCALL-AUX COMPILER::C1MULTIPLE-VALUE-SETQ
+++         COMPILER::PUSH-ARGS COMPILER::BLK-REF-CCB COMPILER::C1SETQ
+++         COMPILER::ADD-SYMBOL COMPILER::C2VAR-KIND COMPILER::C1THROW
+++         COMPILER::DECLARATION-TYPE COMPILER::C1PROGV
+++         COMPILER::INFO-TYPE COMPILER::CONSTANT-FOLD-P
+++         COMPILER::C1PRINC COMPILER::WT-DOWN COMPILER::SCH-GLOBAL
+++         COMPILER::T1PROGN COMPILER::INFO-SP-CHANGE
+++         COMPILER::C2DM-RESERVE-VL COMPILER::C1MAPL
+++         COMPILER::FUNCTION-RETURN-TYPE COMPILER::ADD-REG1
+++         COMPILER::PARSE-CVSPECS COMPILER::FUN-INFO
+++         COMPILER::VAR-REGISTER COMPILER::SET-RETURN COMPILER::WT-H1
+++         COMPILER::VAR-REP-LOC)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         COMPILER::T3LOCAL-DCFUN COMPILER::T3LOCAL-FUN)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         COMPILER::INLINE-BOOLE3)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -206,8 +172,8 @@
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++              COMMON-LISP::*)
++-         COMPILER::C2RETURN-FROM COMPILER::C2DM COMPILER::C1DM-VL
++-         COMPILER::C2APPLY-OPTIMIZE COMPILER::C1DM-V)) 
+++         COMPILER::C1DM-V COMPILER::C1DM-VL COMPILER::C2APPLY-OPTIMIZE
+++         COMPILER::C2RETURN-FROM COMPILER::C2DM)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -216,40 +182,85 @@
++          COMPILER::T3DEFUN-AUX)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
++-         COMPILER::C2PROGN COMPILER::WT-LONG-FLOAT-LOC
++-         COMPILER::WT-CHARACTER-LOC COMPILER::WT-TO-STRING
++-         COMPILER::WT-LOC COMPILER::MEXPAND-DEFTYPE
++-         COMPILER::CMP-TOPLEVEL-EVAL COMPILER::T1EVAL-WHEN
++-         COMPILER::T1EXPR COMPILER::C2OR COMPILER::WT-FIXNUM-LOC
++-         COMPILER::C2EXPR COMPILER::C2AND COMPILER::CMP-EVAL
++-         COMPILER::SET-LOC COMPILER::WT-SHORT-FLOAT-LOC)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
++-         COMPILER::MAKE-INFO COMPILER::FCALLN-INLINE
++-         COMPILER::LIST-INLINE COMPILER::LIST*-INLINE
++-         COMPILER::COMPILER-COMMAND COMPILER::MAKE-BLK
++-         COMPILER::MAKE-FUN COMPILER::WT-CLINK COMPILER::C2FSET
++-         COMPILER::MAKE-TAG COMPILER::CS-PUSH COMPILER::MAKE-VAR
++-         COMMON-LISP::COMPILE-FILE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
++          COMPILER::F-TYPE)) 
++-(COMMON-LISP::MAPC
++-    (COMMON-LISP::LAMBDA (COMPILER::X)
++-      (COMMON-LISP::SETF
++-          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
++-          COMMON-LISP::T))
++-    '(COMMON-LISP::DISASSEMBLE COMPILER::CMP-TMP-MACRO
++-         COMPILER::CMP-ANON COMMON-LISP::COMPILE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*)))
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::COPY-ARRAY)) 
+++         COMPILER::C2RETURN-CCB
+++         COMPILER::COMPILER-CLEAR-COMPILER-PROPERTIES
+++         COMPILER::DO-CHANGED COMPILER::CO1STRUCTURE-PREDICATE
+++         COMPILER::RESULT-TYPE-FROM-ARGS COMPILER::CMPFIX-ARGS
+++         COMPILER::T3SHARP-COMMA COMPILER::FLAGS
+++         COMPILER::CO1WRITE-BYTE COMPILER::CHECK-FNAME-ARGS
+++         COMPILER::C2ASSOC!2 COMPILER::CK-SPEC
+++         COMPILER::COERCE-LOC-STRUCTURE-REF COMPILER::ADD-DEBUG-INFO
+++         COMPILER::C2LAMBDA-EXPR-WITH-KEY COMPILER::PRIN1-CMP
+++         COMPILER::PUSH-CHANGED-VARS COMPILER::SHIFT>>
+++         COMPILER::ARGS-INFO-REFERRED-VARS
+++         COMPILER::C2MULTIPLE-VALUE-CALL
+++         COMPILER::ARGS-INFO-CHANGED-VARS COMPILER::CO1SCHAR
+++         COMPILER::NEXT-CVAR COMPILER::C2RETURN-CLB
+++         COMPILER::CO1WRITE-CHAR COMPILER::SET-VS SYSTEM::SWITCH
+++         COMPILER::FLAG-P COMPILER::DO-ARRAY COMPILER::INLINE-PROC
+++         COMPILER::CO1CONS COMPILER::C2EXPR-TOP
+++         COMPILER::CHANGED-LENGTH COMPILER::C2MULTIPLE-VALUE-PROG1
+++         COMPILER::REMOVE-FLAG COMPILER::CO1SUBLIS COMPILER::ADD-INFO
+++         COMPILER::C2BIND-INIT COMPILER::C2DM-BIND-VL COMPILER::C1FMLA
+++         COMPILER::C2CATCH COMPILER::WT-MAKE-DCLOSURE
+++         COMPILER::UNWIND-BDS COMPILER::IS-REP-REFERRED
+++         COMPILER::WT-LONG-FLOAT-VALUE COMPILER::WT-GO
+++         COMPILER::FAST-READ COMPILER::WT COMPILER::SAFE-COMPILE
+++         COMPILER::WT-H COMPILER::STRUCT-TYPE-OPT
+++         COMPILER::REFERRED-LENGTH COMPILER::TYPE-AND COMPILER::C2THROW
+++         COMPILER::NEED-TO-PROTECT COMPILER::COERCE-LOC
+++         COMPILER::TYPE>= COMPILER::WT-NL1 COMPILER::CHECK-END
+++         COMPILER::C2BLOCK-CCB COMPILER::C2LAMBDA-EXPR-WITHOUT-KEY
+++         COMPILER::SET-BDS-BIND COMPILER::C2DM-BIND-INIT
+++         COMPILER::CAN-BE-REPLACED COMPILER::MAYBE-EVAL
+++         COMPILER::WT-VAR COMPILER::WT-REQUIREDS
+++         COMPILER::CONVERT-CASE-TO-SWITCH COMPILER::CO1TYPEP
+++         COMPILER::C1DECL-BODY COMPILER::DOWNWARD-FUNCTION
+++         COMPILER::MULTIPLE-VALUE-CHECK COMPILER::NEXT-CFUN
+++         SYSTEM::SWITCH-FINISH COMPILER::CO1READ-CHAR
+++         COMPILER::COMPILER-CC COMPILER::C1PROGN*
+++         COMPILER::C1LAMBDA-FUN COMPILER::MAKE-USER-INIT
+++         COMPILER::SHIFT<< COMPILER::C1ARGS COMPILER::CK-VL
+++         COMPILER::T23EXPR COMPILER::IS-CHANGED COMPILER::PUSH-REFERRED
+++         COMPILER::WT-CHARACTER-VALUE
+++         COMPILER::PUSH-REFERRED-WITH-START COMPILER::NEXT-LABEL*
+++         COMPILER::CMPCK COMPILER::C2DM-BIND-LOC
+++         COMPILER::WT-SHORT-FLOAT-VALUE
+++         COMPILER::PUSH-CHANGED-WITH-START COMPILER::C2EXPR-TOP*
+++         COMPILER::DOLIST* COMPILER::WT-LABEL COMPILER::PUSH-CHANGED
+++         COMPILER::BASE-USED COMPILER::CO1VECTOR-PUSH
+++         COMPILER::WT-V*-MACROS COMPILER::CO1CONSTANT-FOLD
+++         COMPILER::WT-FIXNUM-VALUE COMPILER::C2BLOCK-CLB
+++         SYSTEM::DEFINE-INLINE-FUNCTION COMPILER::SET-JUMP-TRUE
+++         COMPILER::C2BIND-LOC COMPILER::IN-ARRAY
+++         COMPILER::SET-JUMP-FALSE COMPILER::PROCLAIM-VAR
+++         COMMON-LISP::DEFINE-COMPILER-MACRO COMPILER::C1CONSTANT-VALUE
+++         COMPILER::COMPILER-DEF-HOOK COMPILER::CO1READ-BYTE
+++         COMPILER::MAYBE-WT-C2DM-BIND-VL COMPILER::IS-REFERRED
+++         COMPILER::DOTIMES** SYSTEM::ADD-DEBUG COMPILER::DO-REFERRED
+++         COMPILER::NEXT-LABEL COMPILER::C2CALL-LAMBDA COMPILER::C2APPLY
+++         COMPILER::C1EXPR* COMPILER::C2SETQ COMPILER::MIA
+++         COMPILER::C2PSETQ COMPILER::C1SETQ1
+++         COMPILER::C2LIST-NTH-IMMEDIATE COMPILER::WT-NL
+++         COMPILER::CO1EQL COMPILER::CFAST-WRITE COMPILER::CO1LDB
+++         COMPILER::EQL-NOT-NIL COMPILER::JUMPS-TO-P
+++         COMPILER::C2CALL-LOCAL COMPILER::BIGNUM-EXPANSION-STORAGE
+++         COMPILER::STACK-LET COMPILER::C2MULTIPLE-VALUE-SETQ
+++         COMPILER::C2MEMBER!2 COMPILER::C2UNWIND-PROTECT
+++         COMPILER::DOLIST** COMPILER::SET-DBIND COMPILER::DOTIMES*
+++         COMPILER::NEXT-CMACRO COMPILER::GET-INLINE-LOC
+++         COMPILER::C2STACK-LET)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMPILER::COMPILE-FILE1)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -257,9 +268,11 @@
++                  (COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*))
++                  (COMMON-LISP::INTEGER -9223372036854775808
++                      9223372036854775807)
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
++                  COMMON-LISP::T)
++              COMMON-LISP::FIXNUM)
++-         COMPILER::PUSH-ARRAY)) 
+++         COMPILER::BSEARCHLEQ)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -267,11 +280,16 @@
++                  (COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*))
++                  (COMMON-LISP::INTEGER -9223372036854775808
++                      9223372036854775807)
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807)
++                  COMMON-LISP::T)
++              COMMON-LISP::FIXNUM)
++-         COMPILER::BSEARCHLEQ)) 
+++         COMPILER::PUSH-ARRAY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*))
+++             COMMON-LISP::T)
+++         COMPILER::TS COMPILER::DASH-TO-UNDERSCORE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -285,130 +303,121 @@
++          COMPILER::DASH-TO-UNDERSCORE-INT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         COMPILER::VS-PUSH COMPILER::WFS-ERROR COMPILER::MACRO-ENV
+++         COMPILER::C1T COMPILER::WT-CVARS COMPILER::WT-DATA-END
+++         COMPILER::GAZONK-NAME COMPILER::INIT-ENV
+++         COMPILER::ADD-LOAD-TIME-SHARP-COMMA COMPILER::CCB-VS-PUSH
+++         COMPILER::WT-DATA-FILE COMPILER::WT-FASD-DATA-FILE
+++         COMPILER::INC-INLINE-BLOCKS COMPILER::PRINT-CURRENT-FORM
+++         COMPILER::CLOSE-INLINE-BLOCKS COMPILER::WT-DATA-BEGIN
+++         COMPILER::BABOON COMPILER::WT-C-PUSH COMPILER::WT-NEXT-VAR-ARG
+++         COMPILER::WT-FIRST-VAR-ARG COMPILER::CVS-PUSH
+++         COMPILER::TAIL-RECURSION-POSSIBLE COMPILER::RESET-TOP
+++         COMPILER::C1NIL COMPILER::PRINT-COMPILER-INFO)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807)
++-              (COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807))
+++             ((COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*)))
++              COMMON-LISP::T)
++-         COMPILER::MLIN)) 
+++         COMPILER::COPY-ARRAY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         COMPILER::T1EXPR COMPILER::WT-TO-STRING COMPILER::C2OR
+++         COMPILER::WT-LOC COMPILER::SET-LOC COMPILER::MEXPAND-DEFTYPE
+++         COMPILER::C2EXPR COMPILER::C2PROGN COMPILER::C2AND
+++         COMPILER::WT-SHORT-FLOAT-LOC COMPILER::WT-CHARACTER-LOC
+++         COMPILER::CMP-EVAL COMPILER::T1EVAL-WHEN
+++         COMPILER::WT-LONG-FLOAT-LOC COMPILER::CMP-TOPLEVEL-EVAL
+++         COMPILER::WT-FIXNUM-LOC)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         COMPILER::FCALLN-INLINE COMPILER::CS-PUSH COMPILER::WT-CLINK
+++         COMPILER::COMPILER-COMMAND COMPILER::MAKE-INFO
+++         COMPILER::T2PROGN COMPILER::MAKE-TAG COMPILER::C2FSET
+++         COMPILER::MAKE-BLK COMPILER::LIST-INLINE
+++         COMMON-LISP::COMPILE-FILE COMPILER::MAKE-FUN
+++         COMPILER::MAKE-VAR COMPILER::T3PROGN COMPILER::LIST*-INLINE)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(COMMON-LISP::COMPILE COMMON-LISP::DISASSEMBLE COMPILER::CMP-ANON
+++         COMPILER::CMP-TMP-MACRO)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807))
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::MEMOIZED-HASH-EQUAL)) 
+++         COMPILER::T3DEFUN-VARARG COMPILER::T3DEFUN-NORMAL
+++         COMPILER::C2CALL-GLOBAL COMPILER::C2SWITCH COMPILER::MY-CALL
+++         COMPILER::C1MAKE-VAR COMPILER::WT-IF-PROCLAIMED
+++         COMPILER::C2STRUCTURE-REF COMPILER::C2CALL-UNKNOWN-GLOBAL
+++         COMPILER::WT-GLOBAL-ENTRY)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
++-         COMPILER::MACRO-ENV COMPILER::C1T COMPILER::PRINT-CURRENT-FORM
++-         COMPILER::CCB-VS-PUSH COMPILER::C1NIL
++-         COMPILER::WT-FASD-DATA-FILE COMPILER::INIT-ENV
++-         COMPILER::WT-CVARS COMPILER::CVS-PUSH
++-         COMPILER::WT-FIRST-VAR-ARG COMPILER::WT-NEXT-VAR-ARG
++-         COMPILER::WT-DATA-FILE COMPILER::WT-C-PUSH
++-         COMPILER::GAZONK-NAME COMPILER::WT-DATA-END
++-         COMPILER::INC-INLINE-BLOCKS COMPILER::TAIL-RECURSION-POSSIBLE
++-         COMPILER::RESET-TOP COMPILER::CLOSE-INLINE-BLOCKS
++-         COMPILER::PRINT-COMPILER-INFO COMPILER::WFS-ERROR
++-         COMPILER::VS-PUSH COMPILER::BABOON COMPILER::WT-DATA-BEGIN
++-         COMPILER::ADD-LOAD-TIME-SHARP-COMMA)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMPILER::T2DEFENTRY COMPILER::T3DEFENTRY COMPILER::DEFSYSFUN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::FIXNUM)
++-         COMPILER::PROCLAIMED-ARGD COMPILER::ANALYZE-REGS1
++-         COMPILER::ANALYZE-REGS)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMPILER::C2PROGV COMPILER::WT-INLINE-COND COMPILER::C2TAGBODY
+++         COMPILER::CAN-BE-REPLACED* COMPILER::WT-INLINE-FIXNUM
+++         COMPILER::MAKE-INLINE-STRING COMPILER::WT-INLINE-SHORT-FLOAT
+++         COMPILER::C2LET* COMPILER::ADD-FAST-LINK
+++         COMPILER::C1STRUCTURE-REF1 COMPILER::GET-INLINE-INFO
+++         COMPILER::CHECK-FORM-TYPE COMPILER::C2MAPCAN
+++         COMPILER::FIX-DOWN-ARGS COMPILER::CMP-EXPAND-MACRO
+++         COMPILER::SUBLIS1-INLINE COMPILER::ADD-FUNCTION-PROCLAMATION
+++         COMPILER::ADD-FUNCTION-DECLARATION COMPILER::SET-VAR
+++         COMPILER::BOOLE3 COMPILER::CJF COMPILER::C2PRINC
+++         COMPILER::INLINE-TYPE-MATCHES COMPILER::C1MAP-FUNCTIONS
+++         COMPILER::C1DM COMPILER::WT-INLINE-CHARACTER
+++         COMPILER::WT-MAKE-CCLOSURE COMPILER::TOO-MANY-ARGS
+++         COMPILER::COMPILER-PASS2 COMPILER::WT-INLINE-INTEGER
+++         COMPILER::T3DEFCFUN COMPILER::MYSUB
+++         COMPILER::WT-INLINE-LONG-FLOAT COMPILER::TOO-FEW-ARGS
+++         COMPILER::CHECK-VDECL COMPILER::C2GO COMPILER::C2LET
+++         COMPILER::ASSIGN-DOWN-VARS COMPILER::C2CASE
+++         COMPILER::C2FUNCALL-SFUN COMPILER::AND-FORM-TYPE
+++         COMPILER::C-FUNCTION-NAME COMPILER::C2MAPCAR COMPILER::CJT
+++         COMPILER::C2MULTIPLE-VALUE-BIND COMPILER::C2MAPC)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::UNWIND-EXIT COMPILER::WT-COMMENT COMPILER::CMPERR
++-         COMPILER::WT-CVAR COMPILER::FAST-LINK-PROCLAIMED-TYPE-P
++-         COMPILER::C1CASE COMPILER::CMPWARN COMPILER::ADD-INIT
++-         COMPILER::INIT-NAME COMPILER::WT-INTEGER-LOC COMPILER::CMPNOTE
++-         COMPILER::C1LAMBDA-EXPR)) 
+++         COMPILER::C1APPLY-OPTIMIZE COMPILER::T3DEFUN-LOCAL-ENTRY
+++         COMPILER::T3INIT-FUN COMPILER::C2STRUCTURE-SET)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         COMPILER::C2BLOCK COMPILER::C1SYMBOL-FUN
++-         COMPILER::C2BLOCK-LOCAL COMPILER::C2DECL-BODY
++-         COMPILER::COMPILER-BUILD COMPILER::NCONC-FILES
++-         COMPILER::WT-INLINE-LOC COMPILER::C2RETURN-LOCAL
++-         COMPILER::C1BODY)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMPILER::T3DEFUN COMPILER::T2DEFUN COMPILER::T3LOCAL-FUN
+++         COMPILER::T3LOCAL-DCFUN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMPILER::WT-FIXNUM-VALUE COMPILER::DOLIST** COMPILER::CO1LDB
++-         COMPILER::PUSH-REFERRED-WITH-START COMPILER::C2ASSOC!2
++-         COMPILER::ADD-DEBUG-INFO COMPILER::WT-CHARACTER-VALUE
++-         COMPILER::MAYBE-WT-C2DM-BIND-VL COMPILER::C2BIND-LOC
++-         COMPILER::C2CATCH COMPILER::DO-REFERRED COMPILER::C2BLOCK-CLB
++-         COMPILER::CO1CONSTANT-FOLD COMPILER::C2CALL-LOCAL
++-         COMPILER::SHIFT<< COMPILER::C2UNWIND-PROTECT
++-         COMPILER::C2MULTIPLE-VALUE-SETQ COMPILER::C2DM-BIND-VL
++-         COMPILER::DOTIMES* COMPILER::REFERRED-LENGTH COMPILER::C1ARGS
++-         COMPILER::CK-SPEC COMPILER::C2MULTIPLE-VALUE-CALL
++-         COMPILER::C2CALL-LAMBDA COMPILER::CO1READ-BYTE
++-         COMPILER::CO1VECTOR-PUSH COMPILER::STACK-LET COMPILER::CMPCK
++-         COMPILER::MAYBE-EVAL COMPILER::COERCE-LOC COMPILER::C2PSETQ
++-         SYSTEM::DEFINE-INLINE-FUNCTION COMPILER::WT-MAKE-DCLOSURE
++-         COMPILER::COMPILER-CC COMPILER::WT-GO COMPILER::C1LAMBDA-FUN
++-         COMPILER::C2RETURN-CLB COMPILER::C1DECL-BODY
++-         COMPILER::PUSH-CHANGED-VARS COMPILER::GET-INLINE-LOC
++-         COMPILER::CO1SUBLIS COMPILER::CHANGED-LENGTH COMPILER::CO1CONS
++-         COMPILER::ARGS-INFO-REFERRED-VARS COMPILER::SET-JUMP-FALSE
++-         COMPILER::MAKE-USER-INIT COMPILER::NEXT-CVAR
++-         COMPILER::CAN-BE-REPLACED COMPILER::WT-V*-MACROS
++-         COMPILER::NEXT-CMACRO COMPILER::C2RETURN-CCB
++-         COMPILER::CO1SCHAR COMPILER::IS-CHANGED
++-         COMMON-LISP::DEFINE-COMPILER-MACRO COMPILER::SET-DBIND
++-         COMPILER::WT-H COMPILER::COERCE-LOC-STRUCTURE-REF
++-         COMPILER::C1EXPR* COMPILER::IS-REFERRED COMPILER::SHIFT>>
++-         COMPILER::WT COMPILER::TYPE-AND COMPILER::PRIN1-CMP
++-         COMPILER::C2BIND-INIT COMPILER::RESULT-TYPE-FROM-ARGS
++-         COMPILER::EQL-NOT-NIL COMPILER::C2APPLY COMPILER::C2BLOCK-CCB
++-         COMPILER::WT-NL1 COMPILER::CO1WRITE-CHAR COMPILER::CFAST-WRITE
++-         COMPILER::NEED-TO-PROTECT COMPILER::T3SHARP-COMMA
++-         SYSTEM::ADD-DEBUG COMPILER::BIGNUM-EXPANSION-STORAGE
++-         COMPILER::C2SETQ COMPILER::FLAG-P
++-         COMPILER::PUSH-CHANGED-WITH-START COMPILER::CMPFIX-ARGS
++-         COMPILER::CO1STRUCTURE-PREDICATE COMPILER::FAST-READ
++-         COMPILER::C1CONSTANT-VALUE COMPILER::BASE-USED
++-         COMPILER::PROCLAIM-VAR COMPILER::CO1TYPEP
++-         COMPILER::SET-JUMP-TRUE COMPILER::TYPE>= COMPILER::DOTIMES**
++-         COMPILER::CONVERT-CASE-TO-SWITCH COMPILER::C2MEMBER!2
++-         COMPILER::DO-CHANGED COMPILER::ADD-INFO COMPILER::SET-VS
++-         COMPILER::CHECK-FNAME-ARGS
++-         COMPILER::COMPILER-CLEAR-COMPILER-PROPERTIES
++-         COMPILER::C2MULTIPLE-VALUE-PROG1 COMPILER::NEXT-LABEL*
++-         COMPILER::WT-VAR COMPILER::C2THROW COMPILER::INLINE-PROC
++-         COMPILER::PUSH-REFERRED COMPILER::C2LIST-NTH-IMMEDIATE
++-         COMPILER::C1FMLA COMPILER::PUSH-CHANGED
++-         COMPILER::MULTIPLE-VALUE-CHECK COMPILER::MIA
++-         COMPILER::WT-LABEL COMPILER::WT-NL
++-         COMPILER::WT-SHORT-FLOAT-VALUE COMPILER::SET-BDS-BIND
++-         COMPILER::DO-ARRAY COMPILER::WT-REQUIREDS
++-         COMPILER::C2EXPR-TOP* COMPILER::C2DM-BIND-LOC
++-         COMPILER::DOLIST* SYSTEM::SWITCH-FINISH
++-         COMPILER::IS-REP-REFERRED COMPILER::WT-LONG-FLOAT-VALUE
++-         COMPILER::C1SETQ1 COMPILER::FLAGS COMPILER::CO1EQL
++-         COMPILER::CHECK-END COMPILER::NEXT-LABEL COMPILER::CK-VL
++-         COMPILER::ARGS-INFO-CHANGED-VARS COMPILER::C1PROGN*
++-         COMPILER::C2DM-BIND-INIT COMPILER::STRUCT-TYPE-OPT
++-         COMPILER::UNWIND-BDS COMPILER::SAFE-COMPILE
++-         COMPILER::CO1READ-CHAR COMPILER::JUMPS-TO-P SYSTEM::SWITCH
++-         COMPILER::NEXT-CFUN COMPILER::CO1WRITE-BYTE
++-         COMPILER::DOWNWARD-FUNCTION COMPILER::COMPILER-DEF-HOOK
++-         COMPILER::C2STACK-LET COMPILER::C2EXPR-TOP
++-         COMPILER::C2LAMBDA-EXPR-WITH-KEY COMPILER::IN-ARRAY
++-         COMPILER::C2LAMBDA-EXPR-WITHOUT-KEY)) 
+++         COMPILER::C2LAMBDA-EXPR COMPILER::C2FUNCALL COMPILER::LINK
+++         COMPILER::INLINE-ARGS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         COMPILER::COMPILE-FILE1)) 
++\ No newline at end of file
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMPILER::WT-SIMPLE-CALL COMPILER::GET-OUTPUT-PATHNAME)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -255,6 +255,21 @@ struct freelist {
++ 
++ #define      FREE    (-1)            /*  free object  */
++ 
+++struct fasd {
+++  object stream;   /* lisp object of type stream */
+++  object table;  /* hash table used in dumping or vector on input*/
+++  object eof;      /* lisp object to be returned on coming to eof mark */
+++  object direction;    /* holds Cnil or sKinput or sKoutput */
+++  object package;  /* the package symbols are in by default */
+++  object index;     /* integer.  The current_dump index on write  */
+++  object filepos;   /* nil or the position of the start */
+++  object table_length; /*    On read it is set to the size dump array needed
+++                  or 0
+++                  */
+++  object evald_items;  /* a list of items which have been eval'd and must
+++                       not be walked by fasd_patch_sharp */
+++};
+++
++ /*
++      Storage manager for each type.
++ */
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -144,7 +144,7 @@ struct key {short n,allow_other_keys;
++ /* cmpaux.c:185:OF */ extern fixnum object_to_fixnum (object x); /* (x) object x; */
++ /* cmpaux.c:263:OF */ extern char *object_to_string (object x); /* (x) object x; */
++ typedef int (*FUNC)();
++-/* cmpaux.c:294:OF */ extern void call_init (int init_address, object memory, object fasl_vec, FUNC fptr); /* (init_address, memory, fasl_vec, fptr) int init_address; object memory; object fasl_vec; FUNC fptr; */
+++/* cmpaux.c:294:OF */ extern void call_init (int init_address,object memory,object faslfile); /* (init_address, memory, fasl_vec, fptr) int init_address; object memory; object fasl_vec; FUNC fptr; */
++ /* cmpaux.c:339:OF */ extern void do_init (object *statVV); /* (statVV) object *statVV; */
++ /* cmpaux.c:416:OF */ extern void gcl_init_or_load1 (void (*fn) (void), const char *file); /* (fn, file) int (*fn)(); char *file; */
++ /* conditional.c:200:OF */ extern void gcl_init_conditional (void); /* () */
++--- gcl-2.6.12.orig/o/cmpaux.c
+++++ gcl-2.6.12/o/cmpaux.c
++@@ -324,63 +324,18 @@ object_to_string(object x) {
++ /* } */
++ /* #endif */
++ 
+++
++ void
++-call_init(int init_address, object memory, object fasl_vec, FUNC fptr)
++-{object form;
++- FUNC at;
++-/* #ifdef CLEAR_CACHE */
++-/*  static int n; */
++-/*  static sigset_t ss; */
++-
++-/*  if (!n) { */
++-/*      struct sigaction sa={{(void *)sigh},{{0}},SA_RESTART|SA_SIGINFO,NULL}; */
++-
++-/*      sigaction(SIGILL,&sa,NULL); */
++-/*      sigemptyset(&ss); */
++-/*      sigaddset(&ss,SIGILL); */
++-/*      sigprocmask(SIG_BLOCK,&ss,NULL); */
++-/*      n=1; */
++-/*  } */
++-/* #endif */
+++call_init(int init_address,object memory,object faslfile) {
++ 
+++  bds_bind(sSPmemory,memory);
+++  bds_bind(sSPinit,faslfile);
+++  ((FUNC)(memory->cfd.cfd_start+init_address))();
+++  bds_unwind1;
+++  bds_unwind1;
++ 
++-  check_type(fasl_vec,t_vector);
++-  form=(fasl_vec->v.v_self[fasl_vec->v.v_fillp -1]);
+++}
++ 
++- if (fptr) at = fptr;
++-  else 
++- at=(FUNC)(memory->cfd.cfd_start+ init_address );
++- 
++-#ifdef VERIFY_INIT
++- VERIFY_INIT
++-#endif
++-   
++- if (type_of(form)==t_cons &&
++-     form->c.c_car == sSPinit)
++-   {bds_bind(sSPinit,fasl_vec);
++-    bds_bind(sSPmemory,memory);
++-/* #ifdef CLEAR_CACHE */
++-/*     sigprocmask(SIG_UNBLOCK,&ss,NULL); */
++-/* #endif */
++-    (*at)();
++-/* #ifdef CLEAR_CACHE */
++-/*     sigprocmask(SIG_BLOCK,&ss,NULL); */
++-/* #endif */
++-    bds_unwind1;
++-    bds_unwind1;
++-  }
++- else
++-   /* old style three arg init, with all init being done by C code. */
++-   {memory->cfd.cfd_self = fasl_vec->v.v_self;
++-    memory->cfd.cfd_fillp = fasl_vec->v.v_fillp;
++-/* #ifdef CLEAR_CACHE */
++-/*     sigprocmask(SIG_UNBLOCK,&ss,NULL); */
++-/* #endif */
++-    (*at)(memory->cfd.cfd_start, memory->cfd.cfd_size, memory);
++-/* #ifdef CLEAR_CACHE */
++-/*     sigprocmask(SIG_BLOCK,&ss,NULL); */
++-/* #endif */
++-}}
++ 
++ /* statVV is the address of some static storage, which is used by the
++    cfunctions to refer to global variables,..
++@@ -393,48 +348,46 @@ call_init(int init_address, object memor
++ 
++    */
++ 
++-DEFUN_NEW("MARK-MEMORY-AS-PROFILING",object,fSmark_memory_as_profiling,SI,0,0,
++-       NONE,OO,OO,OO,OO,(void),"") {
++-
++-  sSPmemory->s.s_dbind->cfd.cfd_prof=1;
++-
++-  return Cnil;
++-
++-}
++-
++ void
++-do_init(object *statVV)
++-{object fasl_vec=sSPinit->s.s_dbind;
++- object data = sSPmemory->s.s_dbind;
++- {object *p,*q,y;
++-  int n=fasl_vec->v.v_fillp -1;
++-  int i;
++-  object form;
++-  check_type(fasl_vec,t_vector);
++-  form = fasl_vec->v.v_self[n];
++-  dcheck_type(form,t_cons);  
+++do_init(object *statVV) {
+++
+++  object faslfile=sSPinit->s.s_dbind;
+++  object data=sSPmemory->s.s_dbind;
+++  object *p,*q,y;
+++  int i,n;
+++  object fasl_vec;
+++  char ch;
+++
+++  ch=readc_stream(faslfile);
+++  unreadc_stream(ch,faslfile);
+++
+++  if (ch!='\n') {
+++    struct fasd * fd;
+++    faslfile=FFN(fSopen_fasd)(faslfile,sKinput,OBJNULL,Cnil);
+++    fd=(struct fasd *)faslfile->v.v_self;
+++    n=fix(fd->table_length);
+++    fd->table->v.v_self=alloca(n*sizeof(object));
+++    memset(fd->table->v.v_self,0,n*sizeof(object));
+++    fd->table->v.v_dim=faslfile->v.v_self[1]->v.v_fillp=n;
+++  }
++ 
+++  n=fix(type_of(faslfile)==t_stream ? read_object(faslfile) : FFN(fSread_fasd_top)(faslfile));
+++  sSPinit->s.s_dbind=fasl_vec=fSmake_vector1_1(n,aet_object,Cnil);
++ 
++   /* switch SPinit to point to a vector of function addresses */
++-     
+++
++   fasl_vec->v.v_elttype = aet_fix;
++-  fasl_vec->v.v_dim *= (sizeof(object)/sizeof(fixnum));
++-  fasl_vec->v.v_fillp *= (sizeof(object)/sizeof(fixnum));
++-  
+++
++   /* swap the entries */
++-  p = fasl_vec->v.v_self;
+++  for (i=0,p=fasl_vec->v.v_self,q=statVV;i<n;i++) {
+++    y=*p;
+++    *p++=*q;
+++    *q++=y;
+++  }
++ 
++-  q = statVV;
++-  for (i=0; i<=n ; i++)
++-    {  y = *p;
++-     *p++ = *q;
++-     *q++ = y;
++-     }
++-  
++   data->cfd.cfd_self = statVV;
++-  data->cfd.cfd_fillp= n+1;
++-  statVV[n] = data;
++-  
+++  data->cfd.cfd_fillp= n;
+++  statVV[n-1] = data;
++ 
++   /* So now the fasl_vec is a fixnum array, containing random addresses of c
++      functions and other stuff from the compiled code.
++@@ -442,16 +395,20 @@ do_init(object *statVV)
++   */
++   /* Now we can run the forms f1 f2 in form= (%init f1 f2 ...) */
++ 
++-  form=form->c.c_cdr;
++-  {object *top=vs_top;
++-   
++-   for(i=0 ; i< form->v.v_fillp; i++)
++-     { 
++-       eval(form->v.v_self[i]);
++-       vs_top=top;
++-     }
++- }
++-}}
+++  FFN(fSload_stream)(faslfile,Cnil);
+++  if (type_of(faslfile)!=t_stream)
+++    FFN(fSclose_fasd)(faslfile);
+++
+++}
+++
+++DEFUN_NEW("MARK-MEMORY-AS-PROFILING",object,fSmark_memory_as_profiling,SI,0,0,
+++       NONE,OO,OO,OO,OO,(void),"") {
+++
+++  sSPmemory->s.s_dbind->cfd.cfd_prof=1;
+++
+++  return Cnil;
+++
+++}
++ 
++ #ifdef DOS
++ #define PATH_LIM 8
++@@ -498,14 +455,15 @@ gcl_init_or_load1(void (*fn)(void),const
++   if (file[strlen(file)-1]=='o') {
++ 
++     object memory;
++-    object fasl_data;
+++    object faslfile;
++     file=FIX_PATH_STRING(file);
++     
++     memory=new_cfdata();
++     memory->cfd.cfd_start= (char *)fn;
++     printf("Initializing %s\n",file); fflush(stdout);
++-    fasl_data = read_fasl_data(file);
++-    call_init(0,memory,fasl_data,0);
+++    faslfile=open_stream(make_simple_string(file),smm_input,Cnil,sKerror);
+++    SEEK_TO_END_OFILE(faslfile->sm.sm_fp);
+++    call_init(0,memory,faslfile);
++ 
++   } else {
++     printf("loading %s\n",file); 
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -35,22 +35,6 @@ object make_pathname ();
++ 
++ static int needs_patching;
++ 
++-
++-struct fasd {
++-  object stream;   /* lisp object of type stream */
++-  object table;  /* hash table used in dumping or vector on input*/
++-  object eof;      /* lisp object to be returned on coming to eof mark */
++-  object direction;    /* holds Cnil or sKinput or sKoutput */
++-  object package;  /* the package symbols are in by default */
++-  object index;     /* integer.  The current_dump index on write  */
++-  object filepos;   /* nil or the position of the start */ 
++-  object table_length; /*    On read it is set to the size dump array needed
++-                  or 0
++-                  */
++-  object evald_items;  /* a list of items which have been eval'd and must
++-                       not be walked by fasd_patch_sharp */
++-};
++-
++ struct fasd current_fasd;
++ 
++ 
++@@ -599,7 +583,7 @@ DEFUN_NEW("OPEN-FASD",object,fSopen_fasd
++       else
++      check_type(tabl,t_hashtable);}
++    massert(str==stream);
++-   result=alloc_simple_vector(sizeof(struct fasd)/sizeof(int),aet_object);
+++   result=alloc_simple_vector(sizeof(struct fasd)/sizeof(object),aet_object);
++    array_allocself(result,1,Cnil);
++    {struct fasd *fd= (struct fasd *)result->v.v_self;
++     fd->table=tabl;
++@@ -631,6 +615,7 @@ DEFUN_NEW("OPEN-FASD",object,fSopen_fasd
++     fd->index=make_fixnum(dump_index);
++     fd->filepos=current_fasd.filepos;
++     fd->package=current_fasd.package;
+++    fd->table_length=current_fasd.table_length;
++     return result;
++   }}
++ 
++@@ -642,7 +627,7 @@ DEFUN_NEW("CLOSE-FASD",object,fSclose_fa
++    if (type_of(fd->table)==t_vector)
++      /* input uses a vector */
++      {if (fd->table->v.v_self)
++-       gset(fd->table->v.v_self,0,fix(fd->index),aet_object);
+++      fd->table->v.v_dim=0;/*self can be on the stack, and others write there*/
++     }
++    else
++      if(fd->direction==sKoutput)
++@@ -1402,66 +1387,6 @@ clrhash(object table)
++        table->ht.ht_self[i].hte_value = OBJNULL;}
++    table->ht.ht_nent =0;}
++ 
++-
++-
++-object read_fasl_vector1();
++-object
++-read_fasl_vector(object in)
++-{char ch;
++- object orig = in;
++- object d;
++- int tem;
++- if (((tem=getc(((FILE *)in->sm.sm_fp))) == EOF) && feof(((FILE *)in->sm.sm_fp)))
++-   { char *pf;
++-     coerce_to_filename(in,FN1);
++-     for (pf=FN1+strlen(FN1);pf>FN1 && pf[-1]!='.';pf--);
++-     if (pf==FN1) {pf=FN1+strlen(FN1);*pf++='.';}
++-     snprintf(pf,sizeof(FN1)-(pf-FN1),"data");
++-     d=make_simple_string(FN1);
++-     in = open_stream(d,smm_input,Cnil,Cnil);
++-     if (in == Cnil) 
++-       FEerror("Can't open file ~s",1,d);
++-   }
++- else if (tem != EOF)
++-   { ungetc(tem,in->sm.sm_fp);}
++-  while (1)
++-   { ch=readc_stream(in);
++-     if (ch=='#')
++-       {unreadc_stream(ch,in);
++-     return read_fasl_vector1(in);}
++-     if (ch== d_begin_dump){
++-       unreadc_stream(ch,in);
++-       break;}}
++- {object ar=FFN(fSopen_fasd)(in,sKinput,0,Cnil);
++-  int n=fix(current_fasd.table_length);
++-  object result,last;
++-  { BEGIN_NO_INTERRUPT;
++-#ifdef HAVE_ALLOCA
++-  current_fasd.table->v.v_self
++-    = (object *)alloca(n*sizeof(object));
++-#else
++-  current_fasd.table->v.v_self
++-    = (object *)alloc_relblock(n*sizeof(object));
++-#endif
++-  current_fasd.table->v.v_dim=n;
++-  current_fasd.table->v.v_fillp=n;
++-  gset( current_fasd.table->v.v_self,0,n,aet_object);
++-  END_NO_INTERRUPT;
++-  }  
++-  result=FFN(fSread_fasd_top)(ar);
++-  if (type_of(result) !=t_vector) goto ERROR;
++-  last=result->v.v_self[result->v.v_fillp-1];
++-  if(type_of(last)!=t_cons || last->c.c_car !=sSPinit)
++-    goto ERROR;
++-  current_fasd.table->v.v_self = 0;
++-  FFN(fSclose_fasd)(ar);
++-  if (orig != in)
++-    close_stream(in);
++-  return result;
++- ERROR: FEerror("Bad fasd stream ~a",1,in);
++-  return Cnil;
++-}}
++-
++ object IfaslInStream;
++ /* static void */
++ /* IreadFasdData(void) */
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -1645,7 +1645,7 @@ DEFUN_NEW("LOAD-STREAM",object,fSload_st
++   for (;;) {
++     preserving_whitespace_flag = FALSE;
++     detect_eos_flag = TRUE;
++-    x = read_object_non_recursive(strm);
+++    x = type_of(strm)==t_stream ? read_object_non_recursive(strm) : FFN(fSread_fasd_top)(strm);
++     if (x == OBJNULL)
++       break;
++     {
++@@ -2371,75 +2371,3 @@ gcl_init_file_function()
++      gcl_init_readline_function();
++ #endif
++ }
++-
++-
++-object
++-read_fasl_data(const char *str) {
++-
++-     object faslfile, data;
++-#ifndef SEEK_TO_END_OFILE
++-#if defined(BSD) && defined(UNIX)
++-     FILE *fp;
++-     int i;
++-#ifdef HAVE_AOUT
++-     struct exec header;
++-#endif
++-#endif
++-#ifdef HAVE_FILEHDR
++-     struct filehdr fileheader;
++-#endif
++-#ifdef E15
++-     struct exec header;
++-#endif
++-#endif
++-        vs_mark;
++-
++-     faslfile = make_simple_string(str);
++-     vs_push(faslfile);
++-     faslfile = open_stream(faslfile, smm_input, Cnil, sKerror);
++-     vs_push(faslfile);
++-
++-#ifdef SEEK_TO_END_OFILE
++-     SEEK_TO_END_OFILE(faslfile->sm.sm_fp);
++-#else
++-
++-#ifdef BSD
++-     fp = faslfile->sm.sm_fp;
++-     fread(&header, sizeof(header), 1, fp);
++-     fseek(fp,
++-           header.a_text+header.a_data+
++-           header.a_syms+header.a_trsize+header.a_drsize,
++-           1);
++-     fread(&i, sizeof(i), 1, fp);
++-     fseek(fp, i - sizeof(i), 1);
++-#endif
++-
++-#ifdef HAVE_FILEHDR
++-     fp = faslfile->sm.sm_fp;
++-     fread(&fileheader, sizeof(fileheader), 1, fp);
++-     fseek(fp,
++-           fileheader.f_symptr+fileheader.f_nsyms*SYMESZ,
++-           0);
++-     fread(&i, sizeof(i), 1, fp);
++-     fseek(fp, i - sizeof(i), 1);
++-     while ((i = getc(fp)) == 0)
++-             ;
++-     ungetc(i, fp);
++-#endif
++-
++-#ifdef E15
++-     fp = faslfile->sm.sm_fp;
++-     fread(&header, sizeof(header), 1, fp);
++-     fseek(fp,
++-           header.a_text+header.a_data+
++-           header.a_syms+header.a_trsize+header.a_drsize,
++-           1);
++-#endif
++-#endif
++-     data = read_fasl_vector(faslfile);
++-
++-     vs_push(data);
++-     close_stream(faslfile);
++-     vs_reset;
++-     return(data);
++-}
++--- gcl-2.6.12.orig/o/gprof.c
+++++ gcl-2.6.12/o/gprof.c
++@@ -5,6 +5,10 @@
++ 
++ static unsigned long gprof_on;
++ 
+++#ifdef DARWIN
+++void _mcleanup() {}
+++#endif
+++
++ DEFUN_NEW("MCLEANUP",object,fSmcleanup,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
++ 
++   extern void _mcleanup(void);
++--- gcl-2.6.12.orig/o/read.d
+++++ gcl-2.6.12/o/read.d
++@@ -333,16 +333,16 @@ setup_READ()
++      backq_level = 0;
++ }
++ 
++-static void
++-setup_standard_READ()
++-{
++-     READtable = standard_readtable;
++-     READdefault_float_format = 'F';
++-     READbase = 10;
++-     READsuppress = FALSE;
++-     sSAsharp_eq_contextA->s.s_dbind=Cnil;
++-     backq_level = 0;
++-}
+++/* static void */
+++/* setup_standard_READ() */
+++/* { */
+++/*   READtable = standard_readtable; */
+++/*   READdefault_float_format = 'F'; */
+++/*   READbase = 10; */
+++/*   READsuppress = FALSE; */
+++/*   sSAsharp_eq_contextA->s.s_dbind=Cnil; */
+++/*   backq_level = 0; */
+++/* } */
++ 
++ object
++ read_char(in)
++@@ -1393,28 +1393,6 @@ FFN(siLsharp_comma_reader_for_compiler)(
++      vs_base[0] = make_cons(siSsharp_comma, vs_base[0]);
++ }
++ 
++-/*
++-     For fasload.
++-*/
++-static void
++-Lsharp_exclamation_reader()
++-{
++-     check_arg(3);
++-     if(vs_base[2] != Cnil && !READsuppress)
++-             extra_argument('!');
++-     vs_popp;
++-     vs_popp;
++-     if (READsuppress) {
++-             vs_base[0] = Cnil;
++-             return;
++-     }
++-     vs_base[0] = read_object(vs_base[0]);
++-     if (sSAsharp_eq_contextA->s.s_dbind!=Cnil)
++-             vs_base[0]=patch_sharp(vs_base[0]);
++-     ieval(vs_base[0]);
++-     vs_popp;
++-}
++-
++ static void
++ Lsharp_B_reader()
++ {
++@@ -2327,8 +2305,6 @@ gcl_init_read()
++      dtab['*'] = make_cf(Lsharp_asterisk_reader);
++      dtab[':'] = make_cf(Lsharp_colon_reader);
++      dtab['.'] = make_cf(Lsharp_dot_reader);
++-     dtab['!'] = make_cf(Lsharp_exclamation_reader);
++-     /*  Used for fasload only. */
++      dtab[','] = make_cf(Lsharp_comma_reader);
++      dtab['B'] = dtab['b'] = make_cf(Lsharp_B_reader);
++      dtab['O'] = dtab['o'] = make_cf(Lsharp_O_reader);
++@@ -2441,96 +2417,96 @@ gcl_init_read_function()
++ 
++ object sSPinit;
++ 
++-object
++-read_fasl_vector1(in)
++-object in;
++-{
++-     int dimcount, dim;
++-     VOL object *vsp;
++-     object vspo;
++-     VOL object x;
++-     long i;
++-     bool e;
++-     object old_READtable;
++-     int old_READdefault_float_format;
++-     int old_READbase;
++-     int old_READsuppress;
++-     volatile object old_READcontext;
++-     int old_backq_level;
++-
++-        /* to prevent longjmp clobber */
++-        i=(long)&vsp;
++-     i+=i;
++-     vsp=&vspo;
++-     old_READtable = READtable;
++-     old_READdefault_float_format = READdefault_float_format;
++-     old_READbase = READbase;
++-     old_READsuppress = READsuppress;
++-     old_READcontext=sSAsharp_eq_contextA->s.s_dbind;
++-     /* BUG FIX by Toshiba */
++-     vs_push(old_READtable);
++-     old_backq_level = backq_level;
++-
++-     setup_standard_READ();
++-
++-     frs_push(FRS_PROTECT, Cnil);
++-     if (nlj_active) {
++-             e = TRUE;
++-             goto L;
++-     }
++-
++-     while (readc_stream(in) != '#')
++-             ;
++-     while (readc_stream(in) != '(')
++-             ;
++-     vsp = vs_top;
++-     dimcount = 0;
++-     for (;;) {
++-                sSAsharp_eq_contextA->s.s_dbind=Cnil;
++-             backq_level = 0;
++-             delimiting_char = code_char(')');
++-             preserving_whitespace_flag = FALSE;
++-             detect_eos_flag = FALSE;
++-             x = read_object(in);
++-             if (x == OBJNULL)
++-                     break;
++-             vs_check_push(x);
++-             if (sSAsharp_eq_contextA->s.s_dbind!=Cnil)
++-                     x = vs_head = patch_sharp(x);
++-             dimcount++;
++-     }
++-     if(dimcount==1 && type_of(vs_head)==t_vector)
++-       {/* new style where all read at once */
++-         x=vs_head;
++-         goto DONE;}
++-     /* old style separately sharped, and no %init */
++-     {BEGIN_NO_INTERRUPT;
++-     x=alloc_simple_vector(dimcount,aet_object);
++-     vs_push(x);
++-     x->v.v_self
++-     = (object *)alloc_relblock(dimcount * sizeof(object));
++-     END_NO_INTERRUPT;}
++-     for (dim = 0; dim < dimcount; dim++)
++-             {SGC_TOUCH(x);
++-              x->cfd.cfd_self[dim] = vsp[dim];}
+++/* object */
+++/* read_fasl_vector1(in) */
+++/* object in; */
+++/* { */
+++/*   int dimcount, dim; */
+++/*   VOL object *vsp; */
+++/*   object vspo; */
+++/*   VOL object x; */
+++/*   long i; */
+++/*   bool e; */
+++/*   object old_READtable; */
+++/*   int old_READdefault_float_format; */
+++/*   int old_READbase; */
+++/*   int old_READsuppress; */
+++/*   volatile object old_READcontext; */
+++/*   int old_backq_level; */
+++
+++/*         /\* to prevent longjmp clobber *\/ */
+++/*         i=(long)&vsp; */
+++/*   i+=i; */
+++/*   vsp=&vspo; */
+++/*   old_READtable = READtable; */
+++/*   old_READdefault_float_format = READdefault_float_format; */
+++/*   old_READbase = READbase; */
+++/*   old_READsuppress = READsuppress; */
+++/*   old_READcontext=sSAsharp_eq_contextA->s.s_dbind; */
+++/*   /\* BUG FIX by Toshiba *\/ */
+++/*   vs_push(old_READtable); */
+++/*   old_backq_level = backq_level; */
+++
+++/*   setup_standard_READ(); */
+++
+++/*   frs_push(FRS_PROTECT, Cnil); */
+++/*   if (nlj_active) { */
+++/*           e = TRUE; */
+++/*           goto L; */
+++/*   } */
+++
+++/*   while (readc_stream(in) != '#') */
+++/*           ; */
+++/*   while (readc_stream(in) != '(') */
+++/*           ; */
+++/*   vsp = vs_top; */
+++/*   dimcount = 0; */
+++/*   for (;;) { */
+++/*                 sSAsharp_eq_contextA->s.s_dbind=Cnil; */
+++/*           backq_level = 0; */
+++/*           delimiting_char = code_char(')'); */
+++/*           preserving_whitespace_flag = FALSE; */
+++/*           detect_eos_flag = FALSE; */
+++/*           x = read_object(in); */
+++/*           if (x == OBJNULL) */
+++/*                   break; */
+++/*           vs_check_push(x); */
+++/*           if (sSAsharp_eq_contextA->s.s_dbind!=Cnil) */
+++/*                   x = vs_head = patch_sharp(x); */
+++/*           dimcount++; */
+++/*   } */
+++/*   if(dimcount==1 && type_of(vs_head)==t_vector) */
+++/*     {/\* new style where all read at once *\/ */
+++/*       x=vs_head; */
+++/*       goto DONE;} */
+++/*   /\* old style separately sharped, and no %init *\/ */
+++/*   {BEGIN_NO_INTERRUPT; */
+++/*   x=alloc_simple_vector(dimcount,aet_object); */
+++/*   vs_push(x); */
+++/*   x->v.v_self */
+++/*   = (object *)alloc_relblock(dimcount * sizeof(object)); */
+++/*   END_NO_INTERRUPT;} */
+++/*   for (dim = 0; dim < dimcount; dim++) */
+++/*           {SGC_TOUCH(x); */
+++/*            x->cfd.cfd_self[dim] = vsp[dim];} */
++      
++               
++-       DONE:
++-     e = FALSE;
+++/*     DONE: */
+++/*   e = FALSE; */
++ 
++-L:
++-     frs_pop();
+++/* L: */
+++/*   frs_pop(); */
++ 
++-     READtable = old_READtable;
++-     READdefault_float_format = old_READdefault_float_format;
++-     READbase = old_READbase;
++-     READsuppress = old_READsuppress;
++-     sSAsharp_eq_contextA->s.s_dbind=old_READcontext;
++-     backq_level = old_backq_level;
++-     if (e) {
++-             nlj_active = FALSE;
++-             unwind(nlj_fr, nlj_tag);
++-     }
++-     vs_top = (object *)vsp;
++-     return(x);
++-}
+++/*   READtable = old_READtable; */
+++/*   READdefault_float_format = old_READdefault_float_format; */
+++/*   READbase = old_READbase; */
+++/*   READsuppress = old_READsuppress; */
+++/*   sSAsharp_eq_contextA->s.s_dbind=old_READcontext; */
+++/*   backq_level = old_backq_level; */
+++/*   if (e) { */
+++/*           nlj_active = FALSE; */
+++/*           unwind(nlj_fr, nlj_tag); */
+++/*   } */
+++/*   vs_top = (object *)vsp; */
+++/*   return(x); */
+++/* } */
++--- gcl-2.6.12.orig/o/sfasl.c
+++++ gcl-2.6.12/o/sfasl.c
++@@ -80,619 +80,5 @@ DEFUN_NEW("FIND-SYM-PTABLE",object,fSfin
++ #ifdef SEPARATE_SFASL_FILE
++ #include SEPARATE_SFASL_FILE
++ #else
++-
++-#include "ext_sym.h"
++-struct node * find_sym();
++-int node_compare();
++-#ifndef _WIN32
++-void *malloc();
++-void *bsearch();
++-#endif
++-
++-struct reloc relocation_info;
++-/* next 5 static after debug */
++-
++-int debug;
++-
++-#ifdef DEBUG
++-#define debug sfasldebug
++-int sfasldebug=0;
++-#define dprintf(s,ar) if(debug) { printf(" ( s )",ar) ; fflush(stdout);}
++-#define STAT
++-
++-#else /* end debug */
++-#define dprintf(s,ar) 
++-#define STAT static
++-#endif
++-
++-#ifndef MAXPATHLEN
++-#define MAXPATHLEN 256
++-#endif
++-#define PTABLE_EXTRA 20
++-
++-struct sfasl_info {
++- struct syment *s_symbol_table;
++- char *s_start_address;
++- char *s_start_data;
++- char *s_start_bss;
++- char *s_my_string_table;
++- int s_extra_bss;
++- char *s_the_start;
++-
++-};
++-struct sfasl_info *sfaslp;
++-
++-#define symbol_table sfaslp->s_symbol_table
++-#define start_address sfaslp->s_start_address
++-#define my_string_table sfaslp->s_my_string_table
++-#define extra_bss sfaslp->s_extra_bss
++-#define the_start sfaslp->s_the_start
++-
++-
++-#ifndef describe_sym
++-#define describe_sym(a)
++-#endif
++-
++-#ifdef STAND
++-#include "rel_stand.c"
++-#endif
++-
++-/* begin reloc_file */
++-#include RELOC_FILE
++-
++-/* end reloc_file */
++-int get_extra_bss ( struct syment *sym_table, int length, int start, int *ptr, int bsssize);
++-void relocate_symbols ( unsigned int length );
++-void set_symbol_address ( struct syment *sym, char *string );
++-
++-int
++-fasload(faslfile)
++-object faslfile;
++-{       long fasl_vector_start;
++-     struct filehdr fileheader;
++-     struct sfasl_info sfasl_info_buf;
++-#ifdef COFF
++-        struct scnhdr section[10];
++-     struct aouthdr header;
++-#endif
++-     int textsize, datasize, bsssize,nsyms;
++-#if defined ( READ_IN_STRING_TABLE ) || defined ( HPUX )
++-     int string_size=0;
++-#endif        
++-
++-     object memory, data;
++-     FILE *fp;
++-     char filename[MAXPATHLEN];
++-     int i;
++-     int init_address=0;
++-#ifndef STAND        
++-     object *old_vs_base = vs_base;
++-     object *old_vs_top = vs_top;
++-#endif
++-     sfaslp = &sfasl_info_buf;
++-
++-     extra_bss=0;
++-#ifdef STAND
++-     strcpy(filename,faslfile);
++-     fp=fopen(filename,"r");
++-#else
++-     coerce_to_filename(faslfile, filename);
++-     faslfile = open_stream(faslfile, smm_input, Cnil, sKerror);
++-     vs_push(faslfile);
++-     fp = faslfile->sm.sm_fp;
++-#endif       
++-
++-     HEADER_SEEK(fp);
++-     if(!fread((char *)&fileheader, sizeof(struct filehdr), 1, fp))
++-       FEerror("Could not get the header",0,0);
++-     nsyms = NSYMS(fileheader);
++-#ifdef COFF
++-
++-#ifdef AIX3
++-     setup_for_aix_load();
++-#endif       
++-
++-     fread(&header,1,fileheader.f_opthdr,fp);
++-
++-     fread(&section[1],fileheader.f_nscns,sizeof (struct  scnhdr),fp);
++-     textsize = section[TEXT_NSCN].s_size;
++-     datasize = section[DATA_NSCN].s_size; 
++-     if (strcmp(section[BSS_NSCN].s_name, ".bss") == 0)
++-       bsssize=section[BSS_NSCN].s_size; 
++-     else     bsssize=section[BSS_NSCN].s_size = 0;
++-#endif
++-
++-#ifdef BSD
++-     textsize=fileheader.a_text;
++-     datasize=fileheader.a_data;
++-     bsssize=fileheader.a_bss;
++-#endif
++-     symbol_table =
++-       (struct syment *) OUR_ALLOCA(sizeof(struct syment)*
++-                                     (unsigned int)nsyms);
++-     fseek(fp,(int)( N_SYMOFF(fileheader)),  0);
++-     {
++-     for (i = 0;  i < nsyms;  i++)
++-       { fread((char *)&symbol_table[i], SYMESZ, 1, fp);
++-         dprintf( symbol table %d , i);
++-         if (debug) describe_sym(i);
++-         dprintf( at %d , &symbol_table[i]);
++-#ifdef HPUX
++-         symbol_table[i].n_un.n_strx = string_size;
++-         dprintf(string_size %d, string_size);
++-         string_size += symbol_table[i].n_length + 1;
++-         fseek(fp,(int)symbol_table[i].n_length,1);
++-#endif
++-       }
++-       }
++-/*   
++-on MP386
++-The sizeof(struct syment) = 20, while only SYMESZ =18. So we had to read
++-one at a time.
++-fread((char *)symbol_table, SYMESZ*fileheader.f_nsyms,1,fp);
++-*/
++-
++-#ifdef READ_IN_STRING_TABLE
++-
++-my_string_table=READ_IN_STRING_TABLE(fp,string_size);
++-
++-#else  
++-#ifdef MUST_SEEK_TO_STROFF
++-  fseek(fp,N_STROFF(fileheader),0);
++-#endif       
++-  {int ii=0;
++-     if (!fread((char *)&ii,sizeof(int),1,fp))
++-          {FEerror("The string table of this file did not have any length",0,
++-                0);}
++-         fseek(fp,-4,1);
++-         /* at present the string table is located just after the symbols */
++-         my_string_table=OUR_ALLOCA((unsigned int)ii);
++-         dprintf( string table leng = %d, ii);
++-
++-         if(ii!=fread(my_string_table,1,ii,fp))
++-           FEerror("Could not read whole string table",0,0) ;
++-     }
++-#endif       
++-#ifdef SEEK_TO_END_OFILE
++-SEEK_TO_END_OFILE(fp);       
++-#else        
++-     while ((i = getc(fp)) == 0)
++-             ;
++-     ungetc(i, fp);
++-#endif
++-     
++-     fasl_vector_start=ftell(fp);
++-
++-   if (!((c_table.ptable) && *(c_table.ptable)))
++-     build_symbol_table();
++-
++-/* figure out if there is more bss space needed */
++-     extra_bss=get_extra_bss(symbol_table,nsyms,datasize+textsize+bsssize,
++-                             &init_address,bsssize);
++-     
++-/* allocate some memory */
++-#ifndef STAND        
++-     {BEGIN_NO_INTERRUPT;
++-       memory=new_cfdata();
++-       memory->cfd.cfd_size = datasize+textsize+bsssize + extra_bss;
++-       vs_push(memory);
++-       the_start=start_address=
++-         memory->cfd.cfd_start=
++-         alloc_contblock(memory->cfd.cfd_size);
++-       sfaslp->s_start_data = start_address + textsize;
++-       sfaslp->s_start_bss = start_address + textsize + datasize;
++-       END_NO_INTERRUPT;
++-       }
++-#else
++-     the_start = start_address
++-            = malloc ( datasize + textsize + bsssize + extra_bss );
++-     sfaslp->s_start_data = start_address + textsize;
++-     sfaslp->s_start_bss = start_address + textsize + datasize;
++-#endif
++-
++-     dprintf( code size %d , datasize+textsize+bsssize + extra_bss);
++-     if (fseek(fp,N_TXTOFF(fileheader) ,0) < 0)
++-             FEerror("file seek error",0,0);
++-     SAFE_FREAD(the_start, textsize + datasize, 1, fp);
++-     dprintf(read into memory text +data %d bytes, textsize + datasize);
++-/* relocate the actual loaded text  */
++-
++-        dprintf( the_start %x, the_start);
++-
++-     /* record which symbols are used */
++-  
++-#ifdef SYM_USED
++-  {int j=0;
++-     for(j=1; j< BSS_NSCN ; j++)
++-       { dprintf( relocating section %d \n,j);
++-     if (section[j].s_nreloc) fseek(fp,section[j].s_relptr,0);
++-        for(i=0; i < section[j].s_nreloc; i++)
++-       { struct syment *sym;
++-         fread(&relocation_info, RELSZ, 1, fp);
++-         sym = & symbol_table[relocation_info.r_symndx];
++-         if (TC_SYMBOL_P(sym))
++-           SYM_USED(sym) = 1;
++-        }}}
++-#endif
++-
++-
++-     /* this looks up symbols in c.ptable and also adds new externals to
++-        that c.table */
++-     relocate_symbols(NSYMS(fileheader));  
++-     
++-#ifdef COFF
++-  {int j=0;
++-     for(j=1; j< BSS_NSCN ; j++)
++-       { dprintf( relocating section %d \n,j);
++-     if (section[j].s_nreloc) fseek(fp,section[j].s_relptr,0);
++-#ifdef ADJUST_RELOC_START
++-ADJUST_RELOC_START(j)
++-#endif  
++-        for(i=0; i < section[j].s_nreloc; i++)
++-       /* RELSZ = sizeof(relocation_info) */
++-       {fread(&relocation_info, RELSZ, 1, fp);
++-           dprintf(relocating %d,i);
++-        relocate();};
++-        }};
++-#endif
++-#ifdef BSD
++-      fseek(fp,N_RELOFF(fileheader),0);
++-     {int nrel = (fileheader.a_trsize/sizeof(struct reloc));
++-      for (i=0; i < nrel; i++)
++-        {fread((char *)&relocation_info, sizeof(struct reloc),
++-                     1, fp);
++-               dprintf(relocating %d,i);
++-               relocate();
++-             }
++-     }
++-#ifdef N_DRELOFF
++-      fseek (fp, N_DRELOFF(fileheader), 0);
++-#endif
++-      {int nrel = (fileheader.a_drsize/sizeof(struct reloc));
++-       the_start += fileheader.a_text;
++-      for (i=0; i < nrel; i++)
++-
++-        {fread((char *)&relocation_info, sizeof(struct reloc),
++-                     1, fp);
++-               dprintf(relocating %d,i);
++-               relocate();
++-             }
++-       }
++-#endif
++-
++-/* end of relocation */
++-       dprintf( END OF RELOCATION \n,0);
++-       dprintf( invoking init function at %x, start_address)
++-       dprintf( textsize is %x,textsize);
++-       dprintf( datasize is %x,datasize);
++-
++-/* read in the fasl vector */
++-     fseek(fp,fasl_vector_start,0);
++-        if (feof(fp))
++-       {data=0;}
++-         else{
++-     data = read_fasl_vector(faslfile);
++-     vs_push(data);
++-#ifdef COFF
++-      dprintf( read fasl now symbols %d , fileheader.f_nsyms);
++-#endif
++-     }
++-     close_stream(faslfile);
++-
++-/*
++- {
++-     int fd;
++-
++-     fd = creat ("xsgcl.bits", 0777);
++-     write (fd, memory->cfd.cfd_start, textsize + datasize);
++-     close (fd);
++-
++-     fd = open ("xsl2.bits", 0);
++-     read (fd, memory->cfd.cfd_start, memory->cfd.cfd_size);
++-     close (fd);
++- }
++-*/
++-
++-#ifndef STAND
++-     ALLOCA_FREE(my_string_table);
++-     ALLOCA_FREE(symbol_table);
++-
++-
++-#ifdef CLEAR_CACHE
++-     CLEAR_CACHE;
++-#endif
++-     call_init(init_address,memory,data,0);
++-     
++-        vs_base = old_vs_base;
++-     vs_top = old_vs_top;
++-        if(symbol_value(sLAload_verboseA)!=Cnil)
++-            printf("start address -T %x ", memory->cfd.cfd_start);
++-     return(memory->cfd.cfd_size);
++-#endif
++-     {FILE *out;
++-      out=fopen("/tmp/sfasltest","w");
++-      fwrite((char *)&fileheader, sizeof(struct filehdr), 1, out);
++-      fwrite(start_address,sizeof(char),datasize+textsize,out);
++-      fclose(out);}
++-      printf("\n(start %x)\n",start_address);
++-
++-}
++-
++-int get_extra_bss(sym_table,length,start,ptr,bsssize)
++-     int length,bsssize;
++-     struct syment *sym_table;
++-     int *ptr;   /* store init address offset here */
++-{
++-  int result = start;
++-
++-#ifdef AIX3
++-  int next_bss =  start - bsssize;
++-#endif
++-
++-  struct syment *end,*sym;
++-
++-#ifdef BSD
++-  char tem[SYMNMLEN +1];
++-#endif
++-
++-  end =sym_table + length;
++-  for(sym=sym_table; sym < end; sym++)
++-    {
++-     
++-#ifdef FIND_INIT
++-      FIND_INIT
++-#endif
++-
++-#ifdef AIX3
++-     /* we later go through the relocation entries making this 1
++-        for symbols used */
++-#ifdef SYM_USED 
++-     if(TC_SYMBOL_P(sym))
++-       {SYM_USED(sym) = 0;}
++-#endif
++- 
++-      /* fix up the external refer to _ptrgl to be local ref */
++-      if (sym->n_scnum == 0 &&
++-       strcmp(sym->n_name,"_ptrgl")==0)
++-     {struct syment* s =
++-        get_symbol("._ptrgl",TEXT_NSCN,sym_table,length);
++-     if (s ==0) FEerror("bad glue",0,0);
++-     sym->n_value = next_bss ;
++-     ptrgl_offset = next_bss;
++-     ptrgl_text = s->n_value;
++-     next_bss += 0xc;
++-     sym->n_scnum = DATA_NSCN;
++-     ((union auxent *)(sym+1))->x_csect.x_scnlen = 0xc;
++-
++-     }
++-
++-      if(sym->n_scnum != BSS_NSCN) goto NEXT;
++-      if(SYM_EXTERNAL_P(sym))
++-     {int val=sym->n_value;
++-     struct node joe;
++-     if (val && c_table.ptable)
++-       {struct node *answ;
++-       answ= find_sym(sym,0);
++-       if(answ)
++-         {sym->n_value = answ->address ;
++-         sym->n_scnum = N_UNDEF;
++-         val= ((union auxent *)(sym+1))->x_csect.x_scnlen;
++-         result -= val;
++-         goto NEXT;
++-         }}
++-     }
++-      /* reallocate the bss space */
++-      if (sym->n_value == 0)
++-     {result += ((union auxent *)(sym+1))->x_csect.x_scnlen;}
++-      sym->n_value = next_bss;
++-      next_bss += ((union auxent *)(sym+1))->x_csect.x_scnlen;
++-    NEXT:
++-      ;
++-      /* end aix3 */
++-#endif
++-       
++-
++-  
++-#ifdef BSD
++-      tem; /* ignored */
++-      if(SYM_EXTERNAL_P(sym) && SYM_UNDEF_P(sym))
++-#endif
++-#ifdef COFF
++-     if(0)
++-       /* what we really want is
++-          if (sym->n_scnum==0 && sym->n_sclass == C_EXT
++-          && !(bsearch(..in ptable for this symbol)))
++-          Since this won't allow loading in of a new external array
++-          char foo[10]  not ok
++-          static foo[10] ok.
++-          for the moment we give undefined symbol warning..
++-          Should really go through the symbols, recording the external addr
++-          for ones found in ptable, and for the ones not in ptable
++-          set some flag, and add up the extra_bss required.  Then
++-          when you have the new memory chunk in hand,
++-          you could make the pass setting the relative addresses.
++-          for the ones you flagged last time.
++-       */
++-#endif
++-       /* external bss so not included in size of bss for file */
++-       {int val=sym->n_value;
++-       if (val && c_table.ptable
++-           && (0== find_sym(sym,0)))
++-         { sym->n_value=result;
++-         result += val;}}
++-     
++-      sym += NUM_AUX(sym); 
++-
++-    }
++-  return (result-start);
++-}
++- 
++-
++-
++-/* go through the symbol table changing the addresses of the symbols
++-to reflect the current cfd_start */
++-
++-
++-void
++-relocate_symbols(length)
++-unsigned int length;
++-{struct syment *end,*sym;
++- unsigned int typ;
++- char *str;
++- char tem[SYMNMLEN +1];
++- tem[SYMNMLEN]=0;
++- int n_value=(int)start_address;
++-
++- end =symbol_table + length;
++- for(sym=symbol_table; sym < end; sym++) {
++-    typ=NTYPE(sym);
++-#ifdef BSD
++-#ifdef N_STAB    
++-    if (N_STAB & sym->n_type) continue;/* skip: It  is for dbx only */
++-#endif    
++-    typ=N_SECTION(sym);
++-/* if(sym->n_type  &  N_EXT) should add the symbol name,
++-   so it would be accessible by future loads  */
++-#endif
++-   switch (typ)      {
++-#ifdef BSD
++-   case N_ABS : case N_TEXT: case N_DATA: case N_BSS:
++-#endif
++-#ifdef COFF
++-   case TEXT_NSCN : case DATA_NSCN: case BSS_NSCN :
++-#ifdef  _WIN32
++-       if (typ==DATA_NSCN)
++-         n_value = (int)sfaslp->s_start_data;
++-       if (typ==BSS_NSCN)
++-         n_value = (int)sfaslp->s_start_bss;
++-       if (typ==TEXT_NSCN)
++-            n_value = (int)start_address;
++-#endif /* _WIN32 */
++-#endif /* COFF */
++-     str=SYM_NAME(sym);
++-     dprintf( for sym %s ,str)
++-     dprintf( new value will be start %x, start_address);
++-
++-#ifdef AIX3 
++-     if(N_SECTION(sym) == DATA_NSCN
++-     && NUM_AUX(sym) 
++-     && allocate_toc(sym))
++-       break;
++-#endif     
++-       sym->n_value = n_value;
++-     break;
++-   case  N_UNDEF:
++-     str=SYM_NAME(sym);
++-     dprintf( undef symbol %s ,str); 
++-     dprintf( symbol diff %d , sym - symbol_table);
++-     describe_sym(sym-symbol_table);
++-     set_symbol_address(sym,str);
++-     describe_sym(sym-symbol_table);
++-     break;
++-   default:
++-#ifdef COFF
++-     dprintf(am ignoring a scnum %d,(sym->n_scnum));
++-#endif
++-     break;
++-   }
++-   sym += NUM_AUX(sym);
++- }
++-}
++-
++-/* 
++-STEPS:
++-1) read in the symbol table from the file,
++-2) go through the symbol table, relocating external entries.
++-3) for i <=2 go thru the relocation information for this section
++- relocating the text.
++-4) done.
++-*/
++-
++-struct node *
++-find_sym(sym,name)
++-  struct syment *sym;
++-   char *name;
++-{ char tem[SYMNMLEN +1];
++-  tem [SYMNMLEN] = 0;
++-  if (name==0) name = SYM_NAME(sym);
++-  return find_sym_ptable(name);}
++-
++-void
++-set_symbol_address(sym,string)
++-struct syment *sym;
++-char *string;
++-{struct node *answ;
++- if (c_table.ptable)
++-    {
++-     dprintf(string %s, string);
++-    answ = find_sym(sym,string);
++-     dprintf(answ %d , (answ ? answ->address : -1));
++-    if(answ)
++-     {
++-#ifdef COFF
++-#ifdef _AIX370
++-     if (NTYPE(sym) == N_UNDEF)   
++-       sym->n_value = answ->address;
++-     else 
++-#endif 
++-      sym->n_value = answ->address -sym->n_value;
++-      /* for symbols in the local  data,text and bss this gets added
++-      on when we add the current value */
++-#endif
++-#ifdef BSD
++-      /* the old value of sym->n_value is the length of the common area
++-      starting at this address */
++-      sym->n_value = answ->address;
++-#endif
++-#ifdef AIX3
++-     fix_undef_toc_address(answ,sym,string);
++-#endif
++-      
++-}      
++-     else
++-      {
++-/*
++-#ifdef BSD
++-     {char *name;
++-      name=malloc(1+strlen(string));
++-      strcpy(name,string);
++-      sym->n_value = sym->n_value + (unsigned int) the_start;
++-      add_symbol(name,sym->n_value,NULL);
++-       }
++-#endif
++-*/
++-      fprintf(stdout,"undefined %s symbol",string)
++-       ;fflush(stdout);
++-      
++-   }}
++-
++-    else{FEerror("symbol table not loaded",0,0);}}
++-
++-/* include the machine independent stuff */
++-#include "sfasli.c"
++-
++-
++-#ifdef DEBUG
++-print_name(p)
++-     struct syment *p;
++-{char tem[10],*name;
++- name=SYM_NAME(p);
++- name=   (((p)->_n._n_n._n_zeroes == 0) ? 
++-         &my_string_table[(p)->_n._n_n._n_offset] :
++-               ((p)->_n._n_name[SYMNMLEN -1] ? 
++-                              (strncpy(tem,(p)->_n._n_name,  
++-                                        SYMNMLEN), 
++-                               (char *)tem) : 
++-                               (p)->_n._n_name ));
++-
++- printf("(name:|%s|)",name);
++- printf("(sclass 0x%x)",p->n_sclass);
++-  printf("(external_p 0x%x)",SYM_EXTERNAL_P(p));
++- printf("(n_type 0x%x)",p->n_type);
++- printf("(n_value 0x%x)",p->n_value);
++- printf("(numaux 0x%x)\n",NUM_AUX(p));
++- fflush(stdout);
++-}
++-#endif
++-
+++#error must define SEPARATE_SFASL_FILE
++ #endif /* SEPARATE_SFASL_FILE */
++--- gcl-2.6.12.orig/o/sfaslcoff.c
+++++ gcl-2.6.12/o/sfaslcoff.c
++@@ -443,7 +443,6 @@ fasload(object faslfile) {
++   fseek(fp,(void *)ste-st,0);
++   while ((i = getc(fp)) == 0);
++   ungetc(i, fp);
++-  data = read_fasl_vector(faslfile);
++ 
++   massert(!un_mmap(st,est));
++ 
++@@ -451,7 +450,7 @@ fasload(object faslfile) {
++   CLEAR_CACHE;
++ #endif
++ 
++-  call_init(init_address,memory,data,0);
+++  call_init(init_address,memory,faslfile);
++      
++   if(symbol_value(sLAload_verboseA)!=Cnil)
++     printf("start address -T %p ", memory->cfd.cfd_start);
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -550,7 +550,7 @@ fasload(object faslfile) {
++   FILE *fp;
++   char *sn,*st1,*dst1;
++   ul init_address=0,end,gs=0,*got=&gs,*gote=got+1;
++-  object memory,data;
+++  object memory;
++   Shdr *sec1,*sece;
++   Sym *sym1,*syme,*dsym1,*dsyme;
++   void *v1,*ve;
++@@ -574,7 +574,6 @@ fasload(object faslfile) {
++   massert(!relocate_code(v1,sec1,sece,sym1,got,gote));
++   
++   massert(!fseek(fp,end,SEEK_SET));
++-  data=feof(fp) ? 0 : read_fasl_vector(faslfile);
++   
++   massert(!un_mmap(v1,ve));
++   
++@@ -587,7 +586,7 @@ fasload(object faslfile) {
++ #endif  
++ 
++   init_address-=(ul)memory->cfd.cfd_start;
++-  call_init(init_address,memory,data,0);
+++  call_init(init_address,memory,faslfile);
++   
++   if(symbol_value(sLAload_verboseA)!=Cnil)
++     printf("start address -T %p ",memory->cfd.cfd_start);
++--- gcl-2.6.12.orig/o/sfaslmacho.c
+++++ gcl-2.6.12/o/sfaslmacho.c
++@@ -421,7 +421,7 @@ load_self_symbols() {
++ 
++   for (a=c_table.ptable,sym=sym1;sym<syme;sym++) {
++     
++-    if (sym->n_type & N_STAB || !(sym->n_type & N_EXT))
+++    if ((sym->n_type & N_STAB) || !(sym->n_type & N_EXT))
++       continue;
++ 
++     a->address=sym->n_value;
++@@ -435,10 +435,9 @@ load_self_symbols() {
++   c_table.length=a-c_table.ptable;
++   qsort(c_table.ptable,c_table.length,sizeof(*c_table.ptable),node_compare);
++ 
++-  c_table.local_ptable=a;
++-  for (a=c_table.ptable,sym=sym1;sym<syme;sym++) {
+++  for (c_table.local_ptable=a,sym=sym1;sym<syme;sym++) {
++ 
++-    if (sym->n_type & N_STAB || sym->n_type & N_EXT)
+++    if ((sym->n_type & N_STAB) || sym->n_type & N_EXT)
++       continue;
++ 
++     a->address=sym->n_value;
++@@ -536,7 +535,6 @@ int
++ fasload(object faslfile) {
++ 
++   FILE *fp;
++-  object data;
++   ul init_address=-1;
++   object memory;
++   void *v1,*ve,*p;
++@@ -564,7 +562,6 @@ fasload(object faslfile) {
++   relocate_code(v1,sec1,sece,&p,io1,n1,got,gote,start);
++ 
++   fseek(fp,(void *)ste-v1,SEEK_SET);
++-  data = feof(fp) ? 0 : read_fasl_vector(faslfile);
++   
++   massert(!clear_protect_memory(memory));
++ 
++@@ -575,7 +572,7 @@ fasload(object faslfile) {
++   massert(!un_mmap(v1,ve));
++   
++   init_address-=(ul)memory->cfd.cfd_start;
++-  call_init(init_address,memory,data,0);
+++  call_init(init_address,memory,faslfile);
++   
++   if(symbol_value(sLAload_verboseA)!=Cnil)
++     printf("start address -T %p ",memory->cfd.cfd_start);
++--- gcl-2.6.12.orig/o/sfaslmacosx.c
+++++ gcl-2.6.12/o/sfaslmacosx.c
++@@ -228,8 +228,6 @@ int fasload (object faslfile)
++         sfasl_error ("error seeking to end of object file");
++     }
++ 
++-    data = read_fasl_vector (faslstream);
++-    
++     close_stream (faslstream);
++     
++     memory=new_cfdata();
++@@ -237,7 +235,7 @@ int fasload (object faslfile)
++     if (symbol_value (sLAload_verboseA) != Cnil)     
++         printf (" start address (dynamic) %p ", fptr);
++     
++-    call_init (0, memory, data, fptr);
+++    call_init (0,memory,faslstream);
++     
++     unlink (tmpfile);
++     
++--- gcl-2.6.12.orig/o/unixfasl.c
+++++ gcl-2.6.12/o/unixfasl.c
++@@ -78,197 +78,7 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #endif
++ 
++ #ifndef SFASL
++-int
++-fasload(faslfile)
++-object faslfile;
++-{
++-
++-#ifdef BSD
++-     struct exec header, newheader;
++-#endif       
++-
++-#ifdef ATT
++-     struct filehdr fileheader;
++-     struct scnhdr sectionheader;
++-     int textsize, datasize, bsssize;
++-     int textstart;
++-#endif
++-
++-#ifdef E15
++-     struct exec header;
++-#define      textsize        header.a_text
++-#define      datasize        header.a_data
++-#define      bsssize         header.a_bss
++-#define      textstart       sizeof(header)
++-#endif
++-
++-     object memory, data, tempfile;
++-     FILE *fp;
++-     char filename[MAXPATHLEN];
++-     char tempfilename[32];
++-     char command[MAXPATHLEN * 2];
++-     int i;
++-     object *old_vs_base = vs_base;
++-     object *old_vs_top = vs_top;
++-#ifdef IBMRT
++-
++-#endif
++-
++-     coerce_to_filename(faslfile, filename);
++-
++-     faslfile = open_stream(faslfile, smm_input, Cnil, sKerror);
++-     vs_push(faslfile);
++-     fp = faslfile->sm.sm_fp;
++-     /* seek to beginning of the header */
++-
++-     HEADER_SEEK(fp);
++-
++-#ifdef BSD
++-     fread(&header, sizeof(header), 1, fp);
++-#endif
++-#ifdef ATT
++-     fread(&fileheader, sizeof(fileheader), 1, fp);
++-#ifdef S3000
++-        if(fileheader.f_opthdr != 0) fseek(fp,fileheader.f_opthdr,1);
++-#endif
++-     fread(&sectionheader, sizeof(sectionheader), 1, fp);
++-     textsize = sectionheader.s_size;
++-     textstart = sectionheader.s_scnptr;
++-     fread(&sectionheader, sizeof(sectionheader), 1, fp);
++-     datasize = sectionheader.s_size;
++-     fread(&sectionheader, sizeof(sectionheader), 1, fp);
++-     if (strcmp(sectionheader.s_name, ".bss") == 0)
++-             bsssize = sectionheader.s_size;
++-     else
++-             bsssize = 0;
++-#endif
++-#ifdef E15
++-     fread(&header, sizeof(header), 1, fp);
++-#endif
++-
++-     memory=new_cfdata();
++-     memory->cfd.cfd_size = textsize + datasize + bsssize;
++-     vs_push(memory);
++-     /* If the file is smaller than the space asked for, typically the file
++-        is an invalid object file */
++-     if (file_len(fp)*4 < memory->cfd.cfd_size)
++-       FEerror("Invalid object file stream: ~a",1,faslfile);
++-     memory->cfd.cfd_start = ALLOC_ALIGNED(alloc_contblock,
++-                                           memory->cfd.cfd_size,sizeof(double));
++-
++-#ifdef SEEK_TO_END_OFILE
++-SEEK_TO_END_OFILE(fp);
++-#else
++-#ifdef BSD
++-     fseek(fp,
++-           header.a_text+header.a_data+
++-           header.a_syms+header.a_trsize+header.a_drsize,
++-           1);
++-     fread(&i, sizeof(i), 1, fp);
++-     fseek(fp, i - sizeof(i), 1);
++-#endif
++-
++-#ifdef ATT
++-     fseek(fp,
++-           fileheader.f_symptr + SYMESZ*fileheader.f_nsyms,
++-           0);
++-     fread(&i, sizeof(i), 1, fp);
++-     fseek(fp, i - sizeof(i), 1);
++-     while ((i = getc(fp)) == 0)
++-             ;
++-     ungetc(i, fp);
++-#endif
++-
++-#ifdef E15
++-     fseek(fp,
++-           header.a_text+header.a_data+
++-           header.a_syms+header.a_trsize+header.a_drsize,
++-           1);
++-#endif
++-#endif
++-     data = read_fasl_vector(faslfile);
++-     vs_push(data);
++-     close_stream(faslfile);
++-
++-     sprintf(tempfilename, "/tmp/fasltemp%d", getpid());
++-
++-AGAIN:
++-
++-#ifdef BSD
++-     LD_COMMAND(command,
++-             kcl_self,
++-             memory->cfd.cfd_start,
++-             filename,
++-             " ",
++-             tempfilename);
++-      if(symbol_value(sLAload_verboseA)!=Cnil)               
++-        printf("start address -T %x ",memory->cfd.cfd_start);
++-#endif
++-#ifdef ATT
++-     coerce_to_filename(symbol_value(sSAsystem_directoryA),
++-                        system_directory);
++-     sprintf(command,
++-             "%sild %s %d %s %s",
++-             system_directory,
++-             kcl_self,
++-             memory->cfd.cfd_start,
++-             filename,
++-             tempfilename);
++-#endif
++-#ifdef E15
++-     coerce_to_filename(symbol_value(sSAsystem_directoryA),
++-                        system_directory);
++-     sprintf(command,
++-             "%sild %s %d %s %s",
++-             system_directory,
++-             kcl_self,
++-             memory->cfd.cfd_start,
++-             filename,
++-             tempfilename);
++-#endif
++-
++-     if (system(command) != 0)
++-             FEerror("The linkage editor failed.", 0);
++-
++-     tempfile = make_simple_string(tempfilename);
++-     vs_push(tempfile);
++-     tempfile = open_stream(tempfile, smm_input, Cnil, sKerror);
++-     vs_push(tempfile);
++-     fp = tempfile->sm.sm_fp;
++-
++-     HEADER_SEEK(fp);
++-
++-#ifdef BSD
++-     fread(&newheader, sizeof(header), 1, fp);
++-     if (newbsssize != bsssize) {
++-             insert_contblock(memory->cfd.cfd_start, memory->cfd.cfd_size);
++-             bsssize = newbsssize;
++-             memory->cfd.cfd_start = NULL;
++-             memory->cfd.cfd_size = textsize + datasize + bsssize;
++-             memory->cfd.cfd_start = ALLOC_ALIGNED(alloc_contblock,memory->cfd.cfd_size,
++-                                                  sizeof( double));
++-             close_stream(tempfile);
++-             unlink(tempfilename);
++-             goto AGAIN;
++-     }
++-#endif
++-
++-     if (fseek(fp, textstart, 0) < 0)
++-             error("file seek error");
++-
++-     fread(memory->cfd.cfd_start, textsize + datasize, 1, fp);
++-
++-     close_stream(tempfile);
++-
++-     unlink(tempfilename);
++-
++-     call_init(0,memory,data,0);
++-     
++-     vs_base = old_vs_base;
++-     vs_top = old_vs_top;
++-
++-     return(memory->cfd.cfd_size);
++-}
+++#error must define SFASL
++ #endif /* ifndef SFASL */
++ 
++ #ifndef __svr4__
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6b4b782825d3357490a6bedd3894045766a8ad0f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,132 @@@
++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.
++ .
++ gcl (2.6.12-67) unstable; urgency=medium
++ .
++   * Version_2_6_13pre55
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-03
++
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -374,3 +374,5 @@ EXTER gmp_randfnptr_t Mersenne_Twister_G
++ #endif
++ 
++ #define collect(p_,f_) (p_)=&(*(p_)=(f_))->c.c_cdr
+++#define READ_STREAM_OR_FASD(strm_) \
+++  type_of(strm_)==t_stream ? read_object_non_recursive(strm_) : fSread_fasd_top(strm_)
++--- gcl-2.6.12.orig/o/cmpaux.c
+++++ gcl-2.6.12/o/cmpaux.c
++@@ -363,7 +363,7 @@ do_init(object *statVV) {
++ 
++   if (ch!='\n') {
++     struct fasd * fd;
++-    faslfile=FFN(fSopen_fasd)(faslfile,sKinput,OBJNULL,Cnil);
+++    faslfile=fSopen_fasd(faslfile,sKinput,OBJNULL,Cnil);
++     fd=(struct fasd *)faslfile->v.v_self;
++     n=fix(fd->table_length);
++     fd->table->v.v_self=alloca(n*sizeof(object));
++@@ -371,7 +371,7 @@ do_init(object *statVV) {
++     fd->table->v.v_dim=faslfile->v.v_self[1]->v.v_fillp=n;
++   }
++ 
++-  n=fix(type_of(faslfile)==t_stream ? read_object(faslfile) : FFN(fSread_fasd_top)(faslfile));
+++  n=fix(READ_STREAM_OR_FASD(faslfile));
++   sSPinit->s.s_dbind=fasl_vec=fSmake_vector1_1(n,aet_object,Cnil);
++ 
++   /* switch SPinit to point to a vector of function addresses */
++@@ -395,9 +395,9 @@ do_init(object *statVV) {
++   */
++   /* Now we can run the forms f1 f2 in form= (%init f1 f2 ...) */
++ 
++-  FFN(fSload_stream)(faslfile,Cnil);
+++  fSload_stream(faslfile,Cnil);
++   if (type_of(faslfile)!=t_stream)
++-    FFN(fSclose_fasd)(faslfile);
+++    fSclose_fasd(faslfile);
++ 
++ }
++ 
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -561,6 +561,13 @@ DEFUN_NEW("READ-FASD-TOP",object,fSread_
++      { RESTORE_FASD;
++      return result;}
++  }
+++#ifdef STATIC_FUNCTION_POINTERS
+++object
+++fSread_fasd_top(object x) {
+++  return FFN(fSread_fasd_top)(x);
+++}
+++#endif
+++
++ 
++ object sLeq;
++ object sSPinit;
++@@ -618,6 +625,12 @@ DEFUN_NEW("OPEN-FASD",object,fSopen_fasd
++     fd->table_length=current_fasd.table_length;
++     return result;
++   }}
+++#ifdef STATIC_FUNCTION_POINTERS
+++object
+++fSopen_fasd(object stream, object direction, object eof, object tabl) {
+++  return FFN(fSopen_fasd)(stream,direction,eof,tabl);
+++}
+++#endif
++ 
++ DEFUN_NEW("CLOSE-FASD",object,fSclose_fasd,SI,1,1,NONE,OO,OO,OO,OO,(object ar),"")
++ /* static object */
++@@ -649,6 +662,12 @@ DEFUN_NEW("CLOSE-FASD",object,fSclose_fa
++    return ar;
++   
++  }
+++#ifdef STATIC_FUNCTION_POINTERS
+++object
+++fSclose_fasd(object ar) {
+++  return FFN(fSclose_fasd)(ar);
+++}
+++#endif
++ 
++ 
++ #define HASHP(x) 1
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -1645,8 +1645,7 @@ DEFUN_NEW("LOAD-STREAM",object,fSload_st
++   for (;;) {
++     preserving_whitespace_flag = FALSE;
++     detect_eos_flag = TRUE;
++-    x = type_of(strm)==t_stream ? read_object_non_recursive(strm) : FFN(fSread_fasd_top)(strm);
++-    if (x == OBJNULL)
+++    if ((x = READ_STREAM_OR_FASD(strm))==OBJNULL)
++       break;
++     {
++       object *base = vs_base, *top = vs_top, *lex = lex_env;
++@@ -1672,6 +1671,12 @@ DEFUN_NEW("LOAD-STREAM",object,fSload_st
++   RETURN1(Ct);
++ 
++ }
+++#ifdef STATIC_FUNCTION_POINTERS
+++object
+++fSload_stream(object strm,object print) {
+++  return FFN(fSload_stream)(strm,print);
+++}
+++#endif
++ 
++ DEFUN_NEW("LOAD-FASL",object,fSload_fasl,SI,2,2,NONE,OO,OO,OO,OO,(object fasl_filename,object print),"") {
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..94a7be893439d586c44a1963c232cd5f2e9abdf9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,107 @@@
++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.
++ .
++ gcl (2.6.12-67) unstable; urgency=medium
++ .
++   * Version_2_6_13pre55
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-04
++
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc.h
++@@ -22,16 +22,14 @@
++       store_val(where,MASK(32),s+a);
++       break;
++     case R_ALPHA_LITERAL:
++-      s+=a;
++-      if (a || !(sym->st_other&0x1)) {gotp+=1+(sym->st_other>>1);sym->st_other|=1;}
++-      gote=got+(a ? gotp : sym->st_size)-1;
++-      massert(s); 
+++      gote=got+(a>>32)-1;
+++      a&=MASK(32);
++       if (s>=ggot1 && s<ggote) {
++         massert(!write_stub(s,got,gote));
++       } else 
++-     *gote=s;
+++     *gote=s+a;
++       s=(gote-got)*sizeof(*got);
++-      massert(!(s&0x8000));
+++      massert(!(s&~MASK(16)));
++       store_val(where,MASK(16),s);
++       break;
++     case R_ALPHA_GPRELHIGH:
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -1,4 +1,4 @@
++-static ul ggot1,ggote,gotp;
+++static ul ggot1,ggote;
++ 
++ static int
++ write_stub(ul s,ul *got,ul *gote) {
++@@ -65,12 +65,24 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   Sym *sym;
++   Shdr *sec;
++   void *v,*ve;
++-  ul q=0;
+++  ul q=0,a;
++ 
++-  gotp=0;
++   for (sym=sym1;sym<syme;sym++)
++     sym->st_other=sym->st_size=0;
++ 
+++  for (sec=sec1;sec<sece;sec++)
+++    if (sec->sh_type==SHT_RELA)
+++      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
+++     if (ELF_R_TYPE(r->r_info)==R_ALPHA_LITERAL) {
+++
+++       sym=sym1+ELF_R_SYM(r->r_info);
+++
+++       /*unlikely to save got space by recording possible holes in addend range*/
+++       if ((a=r->r_addend+1)>sym->st_other)
+++         sym->st_other=a;
+++
+++     }
+++
++   for (*gs=0,sec=sec1;sec<sece;sec++)
++     if (sec->sh_type==SHT_RELA)
++       for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++@@ -78,13 +90,19 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++ 
++        sym=sym1+ELF_R_SYM(r->r_info);
++          
++-       if (!sym->st_size || r->r_addend) { 
++-         q=++*gs; 
++-         if (!sym->st_size) sym->st_size=q;
+++       if (sym->st_other) {
+++         sym->st_size=++*gs;
++          massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++-         sym->st_other=(*gs-q)<<1;
+++         massert((*gs-sym->st_size) || !r->r_addend);
+++         if (sym->st_other>1)
+++           (*gs)+=sym->st_other-1;
+++         sym->st_other=0;
++        }
++ 
+++       b=sizeof(r->r_addend)*4;
+++       massert(!(r->r_addend>>b));
+++       r->r_addend|=((sym->st_size+r->r_addend)<<b);
+++
++      }
++   
++   return 0;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b40c4355906ea6b1c45fb8a5e5596cfc071a46e3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++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.
++ .
++ gcl (2.6.12-68) unstable; urgency=medium
++ .
++   * Version_2_6_13pre57
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-04
++
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -93,7 +93,7 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++        if (sym->st_other) {
++          sym->st_size=++*gs;
++          massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++-         massert((*gs-sym->st_size) || !r->r_addend);
+++         massert(!(*gs-sym->st_size) || !r->r_addend);
++          if (sym->st_other>1)
++            (*gs)+=sym->st_other-1;
++          sym->st_other=0;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ec37b8313876fd5714da724e52a098747f2e9b8d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,86 @@@
++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.
++ .
++ gcl (2.6.12-68) unstable; urgency=medium
++ .
++   * Version_2_6_13pre57
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-09
++
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -65,7 +65,7 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   Sym *sym;
++   Shdr *sec;
++   void *v,*ve;
++-  ul q=0,a;
+++  ul a,b;
++ 
++   for (sym=sym1;sym<syme;sym++)
++     sym->st_other=sym->st_size=0;
++--- gcl-2.6.12.orig/o/cmpaux.c
+++++ gcl-2.6.12/o/cmpaux.c
++@@ -348,6 +348,8 @@ call_init(int init_address,object memory
++ 
++    */
++ 
+++object *min_cfd_self=NULL;
+++
++ void
++ do_init(object *statVV) {
++ 
++@@ -386,6 +388,8 @@ do_init(object *statVV) {
++   }
++ 
++   data->cfd.cfd_self = statVV;
+++  if (!min_cfd_self || data->cfd.cfd_self<min_cfd_self)
+++    min_cfd_self=data->cfd.cfd_self;
++   data->cfd.cfd_fillp= n;
++   statVV[n-1] = data;
++ 
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -640,7 +640,7 @@ DEFUN_NEW("CLOSE-FASD",object,fSclose_fa
++    if (type_of(fd->table)==t_vector)
++      /* input uses a vector */
++      {if (fd->table->v.v_self)
++-      fd->table->v.v_dim=0;/*self can be on the stack, and others write there*/
+++      gset(fd->table->v.v_self,0,fix(fd->index),aet_object);
++     }
++    else
++      if(fd->direction==sKoutput)
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -446,6 +446,7 @@ mark_object_address(object *o,int f) {
++ 
++   static ufixnum lp;
++   static ufixnum lr;
+++  extern object *min_cfd_self;
++ 
++   ufixnum p=page(o);
++ 
++@@ -455,7 +456,7 @@ mark_object_address(object *o,int f) {
++ #ifdef SGC
++       sgc_enabled ? WRITABLE_PAGE_P(lp) :
++ #endif
++-      1;
+++      (o>=min_cfd_self && o<((object *)core_end));
++   }
++ 
++   if (lr)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a5e7a2d9ec3db5d0b7e709c9080af43ea37836d1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,88 @@@
++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.
++ .
++ gcl (2.6.12-69) unstable; urgency=medium
++ .
++   * Version_2_6_13pre58
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-12
++
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -61,47 +61,30 @@ find_special_params(void *v,Shdr *sec1,S
++ static int
++ label_got_symbols(void *v1,Shdr *sec1,Shdr *sece,Sym *sym1,Sym *syme,const char *st1,const char *sn,ul *gs) {
++ 
++-  Rela *r;
+++  Rela *r,*rr;
++   Sym *sym;
++   Shdr *sec;
++-  void *v,*ve;
++-  ul a,b;
++-
++-  for (sym=sym1;sym<syme;sym++)
++-    sym->st_other=sym->st_size=0;
++-
++-  for (sec=sec1;sec<sece;sec++)
++-    if (sec->sh_type==SHT_RELA)
++-      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++-     if (ELF_R_TYPE(r->r_info)==R_ALPHA_LITERAL) {
++-
++-       sym=sym1+ELF_R_SYM(r->r_info);
++-
++-       /*unlikely to save got space by recording possible holes in addend range*/
++-       if ((a=r->r_addend+1)>sym->st_other)
++-         sym->st_other=a;
++-
++-     }
+++  void *v,*ve,*vv;
+++  ul b,q;
++ 
++   for (*gs=0,sec=sec1;sec<sece;sec++)
++     if (sec->sh_type==SHT_RELA)
++       for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++      if (ELF_R_TYPE(r->r_info)==R_ALPHA_LITERAL) {
++ 
++-       sym=sym1+ELF_R_SYM(r->r_info);
++-         
++-       if (sym->st_other) {
++-         sym->st_size=++*gs;
++-         massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++-         massert(!(*gs-sym->st_size) || !r->r_addend);
++-         if (sym->st_other>1)
++-           (*gs)+=sym->st_other-1;
++-         sym->st_other=0;
++-       }
+++       for (rr=vv=v-sec->sh_entsize;
+++            vv>=v1 &&
+++              (ELF_R_TYPE(rr->r_info)!=ELF_R_TYPE(r->r_info) ||
+++               ELF_R_SYM(rr->r_info)!=ELF_R_SYM(r->r_info) ||
+++               rr->r_addend!=r->r_addend);
+++            vv-=sec->sh_entsize,rr=vv);
++ 
++        b=sizeof(r->r_addend)*4;
+++       q=vv>=v1 ? (rr->r_addend>>b) : ++*gs;
+++       massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
+++       massert(*gs==q || !r->r_addend);
++        massert(!(r->r_addend>>b));
++-       r->r_addend|=((sym->st_size+r->r_addend)<<b);
+++       r->r_addend|=(q<<b);
++ 
++      }
++   
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..44d2d64ce2b82bf3143c0abeae32357b0dc76d9f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,156 @@@
++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.
++ .
++ gcl (2.6.12-6) unstable; urgency=medium
++ .
++   * Version_2_6_13pre5
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -254,8 +254,10 @@ empty_relblock(void) {
++   object o=sSAleaf_collection_thresholdA->s.s_dbind;
++   
++   sSAleaf_collection_thresholdA->s.s_dbind=make_fixnum(0);
++-  for (;rb_pointer!=rb_start&&rb_pointer!=rb_end;)
+++  for (;rb_pointer!=rb_start&&rb_pointer!=rb_end;) {
+++    tm_table[t_relocatable].tm_adjgbccnt--;
++     GBC(t_relocatable);
+++  }
++   sSAleaf_collection_thresholdA->s.s_dbind=o;
++ 
++ }
++@@ -498,10 +500,10 @@ static int
++ rebalance_maxpages(struct typemanager *my_tm,fixnum z) {
++ 
++   fixnum d;
++-  ufixnum i,j;
+++  ufixnum i,j,r=(my_tm->tm_type==t_relocatable ? 2 : 1);
++   
++   
++-  d=(z-my_tm->tm_maxpage)*(my_tm->tm_type==t_relocatable ? 2 : 1);
+++  d=(z-my_tm->tm_maxpage)*r;
++   j=sum_maxpages();
++ 
++   if (j+d>phys_pages) {
++@@ -517,14 +519,14 @@ rebalance_maxpages(struct typemanager *m
++     if (e+phys_pages-j<=0)
++       return 0;
++ 
++-    f=1.0-(double)e/k;
+++    f=k ? 1.0-(double)e/k : 1.0;
++ 
++     for (i=t_start;i<t_other;i++)
++       if (tm_table[i].tm_npage && tm_table+i!=my_tm) {
++        massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage+f*(tm_table[i].tm_maxpage-tm_table[i].tm_npage)));
++      }
++     
++-    massert(set_tm_maxpage(my_tm,(my_tm->tm_maxpage+(phys_pages-sum_maxpages()))/(my_tm->tm_type==t_relocatable ? 2 : 1)));
+++    massert(set_tm_maxpage(my_tm,(my_tm->tm_maxpage*r+(phys_pages-sum_maxpages()))/r));
++ 
++     return 1;
++     
++@@ -624,7 +626,12 @@ expand_contblock_index_space(void) {
++ 
++   if (cbv->v.v_fillp+1==cbv->v.v_dim) {
++ 
++-    void *v=alloc_relblock(2*cbv->v.v_dim*sizeof(fixnum));
+++    void *v;
+++    object o=sSAleaf_collection_thresholdA->s.s_dbind;
+++
+++    sSAleaf_collection_thresholdA->s.s_dbind=make_fixnum(-1);
+++    v=alloc_relblock(2*cbv->v.v_dim*sizeof(fixnum));
+++    sSAleaf_collection_thresholdA->s.s_dbind=o;
++ 
++     memcpy(v,cbv->v.v_self,cbv->v.v_dim*sizeof(fixnum));
++     cbv->v.v_self=v;
++@@ -731,13 +738,14 @@ insert_contblock(void *p,ufixnum s) {
++ 
++   cbp->cb_size=s;
++   cbp->cb_link=*cbpp;
++-  *cbpp=cbp;
++   
++   if ((!cbp->cb_link || cbp->cb_link->cb_size!=s)) {
++     cbppp=expand_contblock_index(cbppp);
++     cbppp[1]=&cbp->cb_link;
++   }
++ 
+++  *cbpp=cbp;
+++
++ }
++ 
++ static inline void
++@@ -890,6 +898,7 @@ add_pages(struct typemanager *tm,fixnum
++     if (rb_pointer>rb_end) {
++       fprintf(stderr,"Moving relblock low before expanding relblock pages\n");
++       fflush(stderr);
+++      tm_table[t_relocatable].tm_adjgbccnt--;
++       GBC(t_relocatable);
++     }
++     nrbpage+=m;
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -1042,14 +1042,10 @@ contblock_sweep_phase(void) {
++ 
++   struct pageinfo *v;
++   STATIC char *s, *e, *p, *q;
++-  object o;
++   ufixnum i;
++     
++   reset_contblock_freelist();
++ 
++-  o=sSAleaf_collection_thresholdA->s.s_dbind;
++-  sSAleaf_collection_thresholdA->s.s_dbind=make_fixnum(-1);
++-
++   for (i=0;i<contblock_array->v.v_fillp && (v=(void *)contblock_array->v.v_self[i]);i++) {
++ 
++     bool z;
++@@ -1074,8 +1070,6 @@ contblock_sweep_phase(void) {
++ 
++   }
++ 
++-  sSAleaf_collection_thresholdA->s.s_dbind=o;
++-
++   sweep_link_array();
++ 
++ }
++@@ -1646,14 +1640,18 @@ DEFUN_NEW("GBC",object,fSgbc,SI,1,1,NONE
++ 
++    /* 1 args */
++   
++-  if (x0 == Ct)
+++  if (x0 == Ct) {
+++    tm_table[t_contiguous].tm_adjgbccnt--;
++     GBC(t_other);
++-  else if (x0 == Cnil)
+++  } else if (x0 == Cnil) {
+++    tm_table[t_cons].tm_adjgbccnt--;
++     GBC(t_cons);
++-  else if (eql(small_fixnum(0),x0))
+++  } else if (eql(small_fixnum(0),x0)) {
+++    tm_table[t_contiguous].tm_adjgbccnt--;
++     GBC(t_contiguous);
++-  else {
+++  } else {
++     x0 = small_fixnum(1);
+++    tm_table[t_relocatable].tm_adjgbccnt--;
++     GBC(t_relocatable);
++   }
++   RETURN1(x0);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e5808329cb334270823bc32444f393c8b64e1a24
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,61 @@@
++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.
++ .
++ gcl (2.6.12-70) unstable; urgency=medium
++ .
++   * Version_2_6_13pre59
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-12
++
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc.h
++@@ -29,7 +29,7 @@
++       } else 
++      *gote=s+a;
++       s=(gote-got)*sizeof(*got);
++-      massert(!(s&~MASK(16)));
+++      massert(!(s&~MASK(15)));
++       store_val(where,MASK(16),s);
++       break;
++     case R_ALPHA_GPRELHIGH:
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -62,7 +62,6 @@ static int
++ label_got_symbols(void *v1,Shdr *sec1,Shdr *sece,Sym *sym1,Sym *syme,const char *st1,const char *sn,ul *gs) {
++ 
++   Rela *r,*rr;
++-  Sym *sym;
++   Shdr *sec;
++   void *v,*ve,*vv;
++   ul b,q;
++@@ -80,8 +79,12 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++             vv-=sec->sh_entsize,rr=vv);
++ 
++        b=sizeof(r->r_addend)*4;
++-       q=vv>=v1 ? (rr->r_addend>>b) : ++*gs;
++-       massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
+++       if (vv>=v1)
+++         q=rr->r_addend>>b;
+++       else {
+++         q=++*gs;
+++         massert(!make_got_room_for_stub(sec1,sece,sym1+ELF_R_SYM(r->r_info),st1,gs));
+++       }
++        massert(*gs==q || !r->r_addend);
++        massert(!(r->r_addend>>b));
++        r->r_addend|=(q<<b);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..efa09d7114f9314acd2ba8b95d5e236eebc44474
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++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.
++ .
++ gcl (2.6.12-71) unstable; urgency=medium
++ .
++   * Version_2_6_13pre60
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-13
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4118,6 +4118,7 @@ if test "${enable_gprof+set}" = set; the
++ $as_echo_n "checking working gprof... " >&6; }
++                 case $use in
++                     powerpc*) if test "$host_cpu" = "powerpc64le" ; then enableval="no"; fi;;
+++                    s390*) enableval="no";;#mcount smashes float args in make_shortfloat 20180313
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -331,6 +331,7 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                 AC_MSG_CHECKING([working gprof])
++                 case $use in
++                     powerpc*) if test "$host_cpu" = "powerpc64le" ; then enableval="no"; fi;;
+++                    s390*) enableval="no";;#mcount smashes float args in make_shortfloat 20180313
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c7d4c3c9d94351d306d8d13baee5d09672fa7a39
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,113 @@@
++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.
++ .
++ gcl (2.6.12-72) unstable; urgency=medium
++ .
++   * Version_2_6_13pre61
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-14
++
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc.h
++@@ -22,12 +22,12 @@
++       store_val(where,MASK(32),s+a);
++       break;
++     case R_ALPHA_LITERAL:
++-      gote=got+(a>>32)-1;
++-      a&=MASK(32);
+++      massert(a || sym->st_size);
+++      gote=got+(a ? (a>>32) : sym->st_size)-1;
++       if (s>=ggot1 && s<ggote) {
++         massert(!write_stub(s,got,gote));
++       } else 
++-     *gote=s+a;
+++     *gote=s+(a&MASK(32));
++       s=(gote-got)*sizeof(*got);
++       massert(!(s&~MASK(15)));
++       store_val(where,MASK(16),s);
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -61,36 +61,45 @@ find_special_params(void *v,Shdr *sec1,S
++ static int
++ label_got_symbols(void *v1,Shdr *sec1,Shdr *sece,Sym *sym1,Sym *syme,const char *st1,const char *sn,ul *gs) {
++ 
+++  Sym *sym;
++   Rela *r,*rr;
++   Shdr *sec;
++   void *v,*ve,*vv;
++-  ul b,q;
+++  ul q;
+++
+++  for (sym=sym1;sym<syme;sym++)
+++    sym->st_size=0;
++ 
++   for (*gs=0,sec=sec1;sec<sece;sec++)
++-    if (sec->sh_type==SHT_RELA)
++-      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++-     if (ELF_R_TYPE(r->r_info)==R_ALPHA_LITERAL) {
++-
++-       for (rr=vv=v-sec->sh_entsize;
++-            vv>=v1 &&
++-              (ELF_R_TYPE(rr->r_info)!=ELF_R_TYPE(r->r_info) ||
++-               ELF_R_SYM(rr->r_info)!=ELF_R_SYM(r->r_info) ||
++-               rr->r_addend!=r->r_addend);
++-            vv-=sec->sh_entsize,rr=vv);
++-
++-       b=sizeof(r->r_addend)*4;
++-       if (vv>=v1)
++-         q=rr->r_addend>>b;
++-       else {
++-         q=++*gs;
++-         massert(!make_got_room_for_stub(sec1,sece,sym1+ELF_R_SYM(r->r_info),st1,gs));
+++    for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
+++
+++      if (ELF_R_TYPE(r->r_info)==R_ALPHA_LITERAL) {
+++
+++     if (sec->sh_type!=SHT_RELA || !r->r_addend) {
+++
+++       sym=sym1+ELF_R_SYM(r->r_info);
+++
+++       if (!sym->st_size) {
+++         sym->st_size=++*gs;
+++         massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++        }
++-       massert(*gs==q || !r->r_addend);
++-       massert(!(r->r_addend>>b));
++-       r->r_addend|=(q<<b);
+++
+++     } else {
+++
+++         for (rr=vv=v-sec->sh_entsize;
+++              vv>=v1 && (ELF_R_TYPE(rr->r_info)!=ELF_R_TYPE(r->r_info) ||
+++                         ELF_R_SYM(rr->r_info)!=ELF_R_SYM(r->r_info) ||
+++                         rr->r_addend!=r->r_addend);
+++              vv-=sec->sh_entsize,rr=vv);
+++
+++         q=vv<v1 ? ++*gs : rr->r_addend>>32;
+++         massert(!(r->r_addend>>32));
+++         r->r_addend|=(q<<32);
++ 
++      }
++-  
+++
+++      }
+++
++   return 0;
++   
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ee53ae96c771d2eaf1d4b2049d89a5ff9e64233e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,78 @@@
++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.
++ .
++ gcl (2.6.12-73) unstable; urgency=medium
++ .
++   * Version_2_6_13pre62
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-17
++
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -71,20 +71,21 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++     sym->st_size=0;
++ 
++   for (*gs=0,sec=sec1;sec<sece;sec++)
++-    for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
+++    if (sec->sh_type==SHT_RELA || sec->sh_type==SHT_REL)
+++      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++ 
++-      if (ELF_R_TYPE(r->r_info)==R_ALPHA_LITERAL) {
+++     if (ELF_R_TYPE(r->r_info)==R_ALPHA_LITERAL) {
++ 
++-     if (sec->sh_type!=SHT_RELA || !r->r_addend) {
+++       if (sec->sh_type!=SHT_RELA || !r->r_addend) {
++ 
++-       sym=sym1+ELF_R_SYM(r->r_info);
+++         sym=sym1+ELF_R_SYM(r->r_info);
++ 
++-       if (!sym->st_size) {
++-         sym->st_size=++*gs;
++-         massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++-       }
+++         if (!sym->st_size) {
+++           sym->st_size=++*gs;
+++           massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
+++         }
++ 
++-     } else {
+++       } else {
++ 
++          for (rr=vv=v-sec->sh_entsize;
++               vv>=v1 && (ELF_R_TYPE(rr->r_info)!=ELF_R_TYPE(r->r_info) ||
++@@ -96,9 +97,9 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++          massert(!(r->r_addend>>32));
++          r->r_addend|=(q<<32);
++ 
++-     }
+++       }
++ 
++-      }
+++     }
++ 
++   return 0;
++   
++--- gcl-2.6.12.orig/o/gprof.c
+++++ gcl-2.6.12/o/gprof.c
++@@ -1,3 +1,5 @@
+++#include <string.h>
+++
++ #include "include.h"
++ #include "page.h"
++ #include "ptable.h"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e0a6ae0cc591b86a335ffcc4ea9abe1c1d9015d6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,169 @@@
++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.
++ .
++ gcl (2.6.12-74) unstable; urgency=medium
++ .
++   * Version_2_6_13pre63
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-21
++
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc.h
++@@ -1,16 +1,14 @@
++     case R_ALPHA_GPDISP:
++-      s=(ul)got;
++-      s-=p; 
++-      s+=(s&0x8000)<<1;
++-      store_val(where,MASK(16),s>>16); 
++-      where=(void *)where+a; 
++-      store_val(where,MASK(16),s); 
+++      gotoff=(ul)(got+(a>>32));
+++      s=gotoff-p;
+++      store_val(where,MASK(16),(s-(short)s)>>16);
+++      store_val((void *)where+(a&MASK(32)),MASK(16),s);
++       break;
++     case R_ALPHA_SREL32:
++       store_val(where,MASK(32),s+a-p);
++       break;
++     case R_ALPHA_GPREL32:
++-      store_val(where,MASK(32),s+a-(ul)got);
+++      store_val(where,MASK(32),s+a-gotoff);
++       break;
++     case R_ALPHA_LITUSE:
++     case R_ALPHA_HINT:
++@@ -22,23 +20,20 @@
++       store_val(where,MASK(32),s+a);
++       break;
++     case R_ALPHA_LITERAL:
++-      massert(a || sym->st_size);
++-      gote=got+(a ? (a>>32) : sym->st_size)-1;
+++      s+=a&MASK(32);
+++      a=(a>>32)-1;
++       if (s>=ggot1 && s<ggote) {
++-        massert(!write_stub(s,got,gote));
+++        massert(!write_stub(s,(ul *)gotoff,got+a));
++       } else 
++-     *gote=s+(a&MASK(32));
++-      s=(gote-got)*sizeof(*got);
++-      massert(!(s&~MASK(15)));
++-      store_val(where,MASK(16),s);
+++        got[a]=s;
+++      store_vals(where,MASK(16),(ul)(got+a)-gotoff);
++       break;
++     case R_ALPHA_GPRELHIGH:
++-      s+=a-(ul)got;
++-      s+=(s&0x8000)<<1;      
++-      store_val(where,MASK(16),s>>16);
+++      s+=a-gotoff;
+++      store_val(where,MASK(16),(s-(short)s)>>16);
++       break;
++     case R_ALPHA_GPRELLOW:
++-      store_val(where,MASK(16),s+a-(ul)got);
+++      store_val(where,MASK(16),s+a-gotoff);
++       break;
++     case R_ALPHA_TLS_GD_HI:
++       store_vals(where,MASK(21),((long)(s+a-(p+4)))>>2);
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -1,4 +1,4 @@
++-static ul ggot1,ggote;
+++static ul ggot1,ggote,gotoff;
++ 
++ static int
++ write_stub(ul s,ul *got,ul *gote) {
++@@ -61,44 +61,60 @@ find_special_params(void *v,Shdr *sec1,S
++ static int
++ label_got_symbols(void *v1,Shdr *sec1,Shdr *sece,Sym *sym1,Sym *syme,const char *st1,const char *sn,ul *gs) {
++ 
++-  Sym *sym;
++-  Rela *r,*rr;
+++  Sym *sym,*fsym=sym1;
+++  Rela *r;
++   Shdr *sec;
++-  void *v,*ve,*vv;
++-  ul q;
+++  void *v,*ve;
+++  ul q,gotp;
++ 
++   for (sym=sym1;sym<syme;sym++)
++     sym->st_size=0;
++ 
++-  for (*gs=0,sec=sec1;sec<sece;sec++)
++-    if (sec->sh_type==SHT_RELA || sec->sh_type==SHT_REL)
+++  for (*gs=gotp=0,sec=sec1;sec<sece;sec++)
+++    if (sec->sh_type==SHT_RELA)
++       for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++ 
++-     if (ELF_R_TYPE(r->r_info)==R_ALPHA_LITERAL) {
+++     switch(ELF_R_TYPE(r->r_info)) {
+++
+++     case R_ALPHA_LITERAL:
++ 
++-       if (sec->sh_type!=SHT_RELA || !r->r_addend) {
+++       if (!r->r_addend) {
++ 
++          sym=sym1+ELF_R_SYM(r->r_info);
+++         q=(gotp-sym->st_size)*sizeof(*gs);
++ 
++-         if (!sym->st_size) {
+++         if (!sym->st_size || q!=(short)q) {
++            sym->st_size=++*gs;
++            massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++          }
++ 
++-       } else {
+++         q=sym->st_size;
+++
+++       } else
+++
+++         q=++*gs;
+++
+++       massert(!(r->r_addend>>32));
+++       r->r_addend|=(q<<32);
++ 
++-         for (rr=vv=v-sec->sh_entsize;
++-              vv>=v1 && (ELF_R_TYPE(rr->r_info)!=ELF_R_TYPE(r->r_info) ||
++-                         ELF_R_SYM(rr->r_info)!=ELF_R_SYM(r->r_info) ||
++-                         rr->r_addend!=r->r_addend);
++-              vv-=sec->sh_entsize,rr=vv);
++-
++-         q=vv<v1 ? ++*gs : rr->r_addend>>32;
++-         massert(!(r->r_addend>>32));
++-         r->r_addend|=(q<<32);
+++       q=(q-gotp)*sizeof(*gs);
+++       massert(q==(short)q);
++ 
+++       break;
+++
+++     case R_ALPHA_GPDISP:
+++
+++       for (sym=fsym;sym<syme && (sym->st_shndx!=1 || sym->st_value!=r->r_offset);sym++);
+++
+++       if (sym<syme) {
+++         fsym=sym;
+++         gotp=*gs+1;
++        }
++ 
+++       r->r_addend|=(gotp<<32);
+++
+++       break;
+++
++      }
++ 
++   return 0;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dbaef5d7945d6bba646112de504f662666145a78
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,212 @@@
++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.
++ .
++ gcl (2.6.12-75) unstable; urgency=medium
++ .
++   * Version_2_6_13pre64
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-22
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpif.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpif.lsp
++@@ -428,9 +428,8 @@
++      (wt-label label))))
++ 
++   (if (eq default 't)
++-      (progn (wt-nl "FEerror(\"The ECASE key value ~s is illegal.\",1,V" cvar ");")
++-          (unwind-exit nil 'jump))
++-      (c2expr default))
+++      (wt-nl "FEerror(\"The ECASE key value ~s is illegal.\",1,V" cvar ");")
+++    (c2expr default))
++ 
++   (wt "}")
++   (close-inline-blocks))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmulti.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmulti.lsp
++@@ -221,56 +221,36 @@
++ 
++ 
++ (defun c2multiple-value-bind (vars init-form body
++-                   &aux (block-p nil) (labels nil)
++-                        (*unwind-exit* *unwind-exit*)
++-                        (*vs* *vs*) (*clink* *clink*) (*ccb-vs* *ccb-vs*)
++-                     top-data)
++-       (declare (object block-p))
++-    (multiple-value-check vars init-form)
+++                                &aux (block-p nil)
+++                                (*unwind-exit* *unwind-exit*)
+++                                (*vs* *vs*) (*clink* *clink*) (*ccb-vs* *ccb-vs*)
+++                                top-data)
++ 
++-  (dolist** (var vars)
+++  (multiple-value-check vars init-form)
+++
+++  (dolist (var vars)
++     (let ((kind (c2var-kind var)))
++-         (declare (object kind))
++       (if kind
++           (let ((cvar (next-cvar)))
++             (setf (var-kind var) kind)
++             (setf (var-loc var) cvar)
++             (wt-nl)
++             (unless block-p (wt "{") (setq block-p t))
++-         (wt-var-decl var)
++-         )
++-          (setf (var-ref var) (vs-push)))))
+++         (wt-var-decl var))
+++     (setf (var-ref var) (vs-push)))))
++ 
++   (let ((*value-to-go* 'top) *top-data*)
++     (c2expr* init-form) (setq top-data *top-data*))
+++
++   (and *record-call-info* (record-call-info nil (car top-data)))
++-  (let ((*clink* *clink*)
++-        (*unwind-exit* *unwind-exit*)
++-        (*ccb-vs* *ccb-vs*))
++-    (do ((vs vars (cdr vs)))
++-        ((endp vs))
++-        (declare (object vs))
++-      (push (next-label) labels)
++-      (wt-nl "if(vs_base>=vs_top){")
++-      (reset-top)
++-      (wt-go (car labels)) (wt "}")
+++
+++  (wt-nl "if(vs_base>vs_top) vs_top=vs_base;*vs_top=Cnil;")
+++  (do ((vs vars (cdr vs)))
+++      ((endp vs))
++       (c2bind-loc (car vs) '(vs-base 0))
++-      (unless (endp (cdr vs)) (wt-nl "vs_base++;"))))
+++      (unless (endp (cdr vs)) (wt-nl "if (vs_base<vs_top) vs_base++;")))
++ 
++   (wt-nl) (reset-top)
++ 
++-  (let ((label (next-label)))
++-    (wt-nl) (wt-go label)
++-
++-    (setq labels (nreverse labels))
++-
++-    (dolist** (v vars)
++-      (wt-label (car labels))
++-      (pop labels)
++-      (c2bind-loc v nil))
++-
++-    (wt-label label))
++-
++   (c2expr body)
++-  (when block-p (wt "}"))
++-  )
+++  (when block-p (wt "}")))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptag.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptag.lsp
++@@ -178,7 +178,7 @@
++                        (*value-to-go* 'trash))
++                   (c2expr (car l))
++                   (wt-label *exit*))
++-                (unless (eq (caar l) 'go) (unwind-exit nil)))))
+++                (unless (member (caar l) '(go return-from)) (unwind-exit nil)))))
++       (declare (object l written))
++     (cond (written (setq written nil))
++           ((typep (car l) 'tag)
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4159,7 +4159,7 @@ case $use in
++      case $use in
++          alpha*)
++              assert_arg_to_cflags -mieee
++-             if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
+++#            if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          aarch64*)
++              TLIBS="$TLIBS -lgcc_s";;
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -382,7 +382,7 @@ case $use in
++      case $use in
++          alpha*)
++              assert_arg_to_cflags -mieee
++-             if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
+++#            if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          aarch64*)
++              TLIBS="$TLIBS -lgcc_s";;
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc.h
++@@ -1,5 +1,5 @@
++     case R_ALPHA_GPDISP:
++-      gotoff=(ul)(got+(a>>32));
+++      gotoff=(ul)(got+(a>>32)-1);
++       s=gotoff-p;
++       store_val(where,MASK(16),(s-(short)s)>>16);
++       store_val((void *)where+(a&MASK(32)),MASK(16),s);
++@@ -23,7 +23,7 @@
++       s+=a&MASK(32);
++       a=(a>>32)-1;
++       if (s>=ggot1 && s<ggote) {
++-        massert(!write_stub(s,(ul *)gotoff,got+a));
+++        massert(!write_stub(s,got+a));
++       } else 
++         got[a]=s;
++       store_vals(where,MASK(16),(ul)(got+a)-gotoff);
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -1,16 +1,16 @@
++ static ul ggot1,ggote,gotoff;
++ 
++ static int
++-write_stub(ul s,ul *got,ul *gote) {
+++write_stub(ul s,ul *gote) {
++ 
++   unsigned int *goti;
++ 
++   *gote=(ul)(goti=(void *)(gote+2));
++   *++gote=s;
++-  *goti++=(0x29<<26)|(0x1b<<21)|(0x1d<<16)|((void *)gote-(void *)got);
++-  *goti++=(0x29<<26)|(0x1b<<21)|(0x1b<<16)|0;
++-  *goti++=(0x1a<<26)|(0x1f<<21)|(0x1b<<16)|0x4000;
++-  *goti++=0;
+++  *goti++=(0x29<<26)|(0x1b<<21)|(0x1b<<16)|0xfff8; /*ldq     t12,-8(t12)*/
+++  *goti++=(0x29<<26)|(0x1b<<21)|(0x1b<<16)|0;      /*ldq     t12,0(t12)*/
+++  *goti++=(0x1a<<26)|(0x1f<<21)|(0x1b<<16)|0x4000; /*jsr     zero,(t12),$pc+4*/
+++  *goti++=0;                                       /*halt*/
++ 
++   return 0;
++   
++@@ -94,7 +94,10 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++ 
++          q=++*gs;
++ 
++-       massert(!(r->r_addend>>32));
+++       if (r->r_addend>>32)
+++         fprintf(stderr,"zeroing high addend %lx\n",r->r_addend>>32);
+++       r->r_addend&=0xffffffff;
+++       massert((q&0xffffffff)==q);
++        r->r_addend|=(q<<32);
++ 
++        q=(q-gotp)*sizeof(*gs);
++@@ -111,6 +114,10 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++          gotp=*gs+1;
++        }
++ 
+++       if (r->r_addend>>32)
+++         fprintf(stderr,"zeroing high addend %lx\n",r->r_addend>>32);
+++       r->r_addend&=0xffffffff;
+++       massert((gotp&0xffffffff)==gotp);
++        r->r_addend|=(gotp<<32);
++ 
++        break;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..667cee3c06a24cad24c68258157a6c41681d7166
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,132 @@@
++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.
++ .
++ gcl (2.6.12-75) unstable; urgency=medium
++ .
++   * Version_2_6_13pre65
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-23
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmulti.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmulti.lsp
++@@ -164,27 +164,21 @@
++              (cmpwarn "~A was proclaimed to have only one return value. ~%;But you appear to want multiple values." fname))))))
++              
++ (defun c2multiple-value-setq (vrefs form &aux top-data)
++-    (multiple-value-check vrefs form)
+++  (multiple-value-check vrefs form)
++   (let ((*value-to-go* 'top)*top-data*)
++     (c2expr* form) (setq top-data *top-data*))
++   (and *record-call-info* (record-call-info nil (car top-data)))
+++  (wt-nl "if(vs_base>vs_top) vs_top=vs_base;*vs_top=Cnil;")
++   (do ((vs vrefs (cdr vs)))
++       ((endp vs))
++-      (declare (object vs))
++       (let ((vref (car vs)))
++-           (declare (object vref))
++-           (wt-nl "if(vs_base<vs_top){")
++-           (set-var 'fun-val (car vref) (cadr vref))
++-           (unless (endp (cdr vs)) (wt-nl "vs_base++;"))
++-           (wt-nl "}else{") (set-var nil (car vref) (cadr vref))
++-           (wt "}"))
++-      )
+++     (set-var 'fun-val (car vref) (cadr vref))
+++     (unless (endp (cdr vs)) (wt-nl "if(vs_base<vs_top) vs_base++;"))))
++   (cond ((null vrefs)
++-         (wt-nl "if(vs_base=vs_top){vs_base[0]=Cnil;vs_top=vs_base+1;}")
+++         (wt-nl "if(vs_base==vs_top){vs_base[0]=Cnil;vs_top=vs_base+1;}")
++          (unwind-exit 'fun-val))
++         (t (unless (eq *exit* 'return) (wt-nl) (reset-top))
++-           (unwind-exit (cons 'var (car vrefs)))))
++-  )
+++           (unwind-exit (cons 'var (car vrefs))))))
++ 
++ (defun c1multiple-value-bind (args &aux (info (make-info))
++                                    (vars nil) (vnames nil) init-form
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4121,6 +4121,7 @@ $as_echo_n "checking working gprof... "
++                     s390*) enableval="no";;#mcount smashes float args in make_shortfloat 20180313
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
+++                    alpha*) enableval="no";;#write_stub currently depends on t12 set in call
++                     hppa*) enableval="no";;
++                     arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++                     aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++@@ -4132,7 +4133,9 @@ $as_echo "disabled" >&6; }
++                 else
++                     { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
++ $as_echo "ok" >&6; }
++-                            assert_arg_to_cflags -pg
+++                    OLD_CFLAGS=$CFLAGS  # Do not run configure tests with -pg
+++                       assert_arg_to_cflags -pg
+++                    CFLAGS=$OLD_CFLAGS
++                             TFPFLAG=""
++ 
++ $as_echo "#define GCL_GPROF 1" >>confdefs.h
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -334,6 +334,7 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     s390*) enableval="no";;#mcount smashes float args in make_shortfloat 20180313
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
+++                    alpha*) enableval="no";;#write_stub currently depends on t12 set in call
++                     hppa*) enableval="no";;
++                     arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++                     aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++@@ -343,25 +344,11 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     AC_MSG_RESULT([disabled])
++                 else
++                     AC_MSG_RESULT([ok])
++-                            assert_arg_to_cflags -pg
+++                    OLD_CFLAGS=$CFLAGS  # Do not run configure tests with -pg
+++                       assert_arg_to_cflags -pg
+++                    CFLAGS=$OLD_CFLAGS
++                             TFPFLAG=""
++                     AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
++-dnl                 AC_MSG_CHECKING([for text start])
++-dnl                 echo 'int main () {return(0);}' >foo.c
++-dnl                 $CC foo.c -o foo
++-dnl                 GCL_GPROF_START=`nm foo | $AWK  '/  *[[TD]]  *__*start$/ {print $NF}'` # D for ppc64 -- FIXME custreloc
++-dnl                 rm -f foo.c foo
++-dnl                 if test "$GCL_GPROF_START" != "" ; then
++-dnl                     AC_MSG_RESULT($GCL_GPROF_START)
++-dnl                     AC_DEFINE_UNQUOTED(GCL_GPROF_START,$GCL_GPROF_START,[starting address for gprof])
++-dnl                     assert_arg_to_cflags -pg
++-dnl #                           case $use in
++-dnl #                               s390*) ;; # relocation truncation bug in gcc
++-dnl #                               *) TLIBS="$TLIBS -pg";;
++-dnl #                           esac
++-dnl                             TFPFLAG=""
++-dnl                     AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
++-dnl                 fi
++                 fi
++             fi])
++ 
++--- gcl-2.6.12.orig/o/usig.c
+++++ gcl-2.6.12/o/usig.c
++@@ -150,7 +150,7 @@ DEFUN_NEW("FLD",object,fSfld,SI,1,1,NONE
++ 
++ /* For now ignore last three args governing offsets and data modification, just to
++    support fpe sync with master*/
++-DEFUN_NEW("*FIXNUM",object,fSAfixnum,SI,4,4,NONE,OI,OO,OO,OO,(fixnum addr,object x,object y,object z),"") {
+++DEFUN_NEW("*FIXNUM",object,fSAfixnum,SI,4,4,NONE,II,OO,OO,OO,(fixnum addr,object x,object y,object z),"") {
++   RETURN1((object)*(fixnum *)addr);
++ }
++ DEFUN_NEW("*FLOAT",object,fSAfloat,SI,4,4,NONE,OI,OO,OO,OO,(fixnum addr,object x,object y,object z),"") {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..274a39e02b7beed426bfc7f12f4a3331d3fc7687
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,256 @@@
++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.
++ .
++ gcl (2.6.12-76) unstable; urgency=medium
++ .
++   * Version_2_6_13pre66
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-03-26
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4121,7 +4121,6 @@ $as_echo_n "checking working gprof... "
++                     s390*) enableval="no";;#mcount smashes float args in make_shortfloat 20180313
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
++-                    alpha*) enableval="no";;#write_stub currently depends on t12 set in call
++                     hppa*) enableval="no";;
++                     arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++                     aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -334,7 +334,6 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     s390*) enableval="no";;#mcount smashes float args in make_shortfloat 20180313
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
++-                    alpha*) enableval="no";;#write_stub currently depends on t12 set in call
++                     hppa*) enableval="no";;
++                     arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++                     aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc.h
++@@ -1,14 +1,14 @@
++     case R_ALPHA_GPDISP:
++-      gotoff=(ul)(got+(a>>32)-1);
+++      gotoff=(ul)(got+HIGH(a)-1);
++       s=gotoff-p;
++       store_val(where,MASK(16),(s-(short)s)>>16);
++-      store_val((void *)where+(a&MASK(32)),MASK(16),s);
+++      store_val((void *)where+LOW(a),MASK(16),s);
++       break;
++     case R_ALPHA_SREL32:
++       store_val(where,MASK(32),s+a-p);
++       break;
++     case R_ALPHA_GPREL32:
++-      store_val(where,MASK(32),s+a-gotoff);
+++      store_val(where,MASK(32),s+LOW(a)-(ul)(got+HIGH(a)-1));
++       break;
++     case R_ALPHA_LITUSE:
++     case R_ALPHA_HINT:
++@@ -20,8 +20,8 @@
++       store_val(where,MASK(32),s+a);
++       break;
++     case R_ALPHA_LITERAL:
++-      s+=a&MASK(32);
++-      a=(a>>32)-1;
+++      s+=LOW(a);
+++      a=HIGH(a)-1;
++       if (s>=ggot1 && s<ggote) {
++         massert(!write_stub(s,got+a));
++       } else 
++--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
++@@ -1,10 +1,32 @@
++-static ul ggot1,ggote,gotoff;
+++static ul ggot1,ggote,gotoff,mcount;
+++
+++static int
+++write_stub_mcount(ul s,ul *gote) {
+++
+++  unsigned int *goti;
+++
+++  /*mcount calls written using at register, address not available in stub*/
+++  /*mcount guaranteed to be within 32bits*/
+++  *gote=(ul)(goti=(void *)(gote+1));
+++  *goti++=(0x9<<26)|(0x1b<<21)|(0x1f<<16)|((s-(short)s)>>16); /*ldah t12,(symhigh)(zero)*/
+++  *goti++=(0x8<<26)|(0x1b<<21)|(0x1b<<16)|(s&MASK(16));       /*lda  t12,(symlow)(t12)*/
+++  *goti++=(0x29<<26)|(0x1b<<21)|(0x1b<<16)|0;                 /*ldq  t12,0(t12)*/
+++  *goti++=(0x1a<<26)|(0x1f<<21)|(0x1b<<16)|0x4000;            /*jsr  zero,(t12),$pc+4*/
+++  *goti++=0;                                                  /*halt*/
+++  *goti++=0;                                                  /*halt*/
+++
+++  return 0;
+++
+++}
++ 
++ static int
++ write_stub(ul s,ul *gote) {
++ 
++   unsigned int *goti;
++ 
+++  if (s==mcount)
+++    return write_stub_mcount(mcount,gote);
+++
++   *gote=(ul)(goti=(void *)(gote+2));
++   *++gote=s;
++   *goti++=(0x29<<26)|(0x1b<<21)|(0x1b<<16)|0xfff8; /*ldq     t12,-8(t12)*/
++@@ -35,15 +57,19 @@ static int
++ find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
++                  const char *st1,Sym *ds1,Sym *dse,Sym *sym1,Sym *syme) {
++ 
+++  Sym *sym;
++   Shdr *sec;
++   Rela *r;
++-  void *ve;
+++  void *ve,*dst1;
++ 
++   massert((sec=get_section(".got",sec1,sece,sn)));
++ 
++   ggot1=sec->sh_addr;
++   ggote=ggot1+sec->sh_size;
++ 
+++  massert(sec=get_section(".dynstr",sec1,sece,sn));/*FIXME pass as parameter*/
+++  dst1=v+sec->sh_offset;
+++
++   massert((sec=get_section(".rel.dyn",sec1,sece,sn))||
++        (sec=get_section(".rela.dyn",sec1,sece,sn)));
++ 
++@@ -51,13 +77,20 @@ find_special_params(void *v,Shdr *sec1,S
++   ve=v+sec->sh_size;
++ 
++   for (r=v;v<ve;v+=sec->sh_entsize,r=v) 
++-    if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value)
++-      ds1[ELF_R_SYM(r->r_info)].st_value=r->r_offset;
+++    if (ELF_R_TYPE(r->r_info) && !(sym=ds1+ELF_R_SYM(r->r_info))->st_value) {
+++      sym->st_value=r->r_offset;
+++      if (!strncmp("_mcount",dst1+sym->st_name,7))
+++     mcount=sym->st_value;
+++    }
++ 
++   return 0;
++ 
++ }
++ 
+++#define HIGH(a_) ((a_)>>32)
+++#define LOW(a_)  ((a_)&MASK(32))
+++#define SET_HIGH(a_,b_) ({ul _a=(a_);(a_)=((b_)<<32)|LOW(_a);})
+++
++ static int
++ label_got_symbols(void *v1,Shdr *sec1,Shdr *sece,Sym *sym1,Sym *syme,const char *st1,const char *sn,ul *gs) {
++ 
++@@ -67,12 +100,18 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   void *v,*ve;
++   ul q,gotp;
++ 
++-  for (sym=sym1;sym<syme;sym++)
++-    sym->st_size=0;
+++  for (sym=sym1;sym<syme;sym++) {
+++    massert(!HIGH(sym->st_value));
+++    massert(!HIGH(sym->st_size));
+++  }
++ 
++   for (*gs=gotp=0,sec=sec1;sec<sece;sec++)
++     if (sec->sh_type==SHT_RELA)
++-      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
+++      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v) {
+++
+++     if (HIGH(r->r_addend))
+++       fprintf(stderr,"zeroing high addend %lx\n",HIGH(r->r_addend));/*never reached fix(Cnil) code, to be eliminated*/
+++     SET_HIGH(r->r_addend,0UL);
++ 
++      switch(ELF_R_TYPE(r->r_info)) {
++ 
++@@ -81,49 +120,60 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++        if (!r->r_addend) {
++ 
++          sym=sym1+ELF_R_SYM(r->r_info);
++-         q=(gotp-sym->st_size)*sizeof(*gs);
+++         q=(HIGH(sym->st_size)-gotp)*sizeof(*gs);
++ 
++-         if (!sym->st_size || q!=(short)q) {
++-           sym->st_size=++*gs;
+++         if (!HIGH(sym->st_size) || q!=(short)q) {/*new cached got entry if first or out of range*/
+++           SET_HIGH(sym->st_size,++*gs);
++            massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
++          }
++ 
++-         q=sym->st_size;
+++         q=HIGH(sym->st_size);
++ 
++        } else
++ 
++          q=++*gs;
++ 
++-       if (r->r_addend>>32)
++-         fprintf(stderr,"zeroing high addend %lx\n",r->r_addend>>32);
++-       r->r_addend&=0xffffffff;
++-       massert((q&0xffffffff)==q);
++-       r->r_addend|=(q<<32);
+++       SET_HIGH(r->r_addend,q);
++ 
++-       q=(q-gotp)*sizeof(*gs);
+++       q=(q-gotp)*sizeof(*gs);/*check 16bit range gprel address in range*/
++        massert(q==(short)q);
++ 
++        break;
++ 
++      case R_ALPHA_GPDISP:
++ 
++-       for (sym=fsym;sym<syme && (sym->st_shndx!=1 || sym->st_value!=r->r_offset);sym++);
+++       for (sym=fsym;sym<syme && (sym->st_shndx!=1 || LOW(sym->st_value)!=r->r_offset);sym++);/*ordered search*/
++ 
++        if (sym<syme) {
++          fsym=sym;
++-         gotp=*gs+1;
+++         SET_HIGH(fsym->st_value,gotp=*gs+1);
++        }
++ 
++-       if (r->r_addend>>32)
++-         fprintf(stderr,"zeroing high addend %lx\n",r->r_addend>>32);
++-       r->r_addend&=0xffffffff;
++-       massert((gotp&0xffffffff)==gotp);
++-       r->r_addend|=(gotp<<32);
+++       SET_HIGH(r->r_addend,gotp);
+++
+++       break;
+++
+++     case R_ALPHA_GPREL32:
+++
+++       q=LOW(sym1[ELF_R_SYM(r->r_info)].st_value)+r->r_addend;
+++
+++       /*unordered search*/
+++       for (sym=sym1;sym<syme && (sym->st_shndx!=1 || LOW(sym->st_value)>q || LOW(sym->st_value)+LOW(sym->st_size)<q);sym++);
+++       massert(sym<syme);
+++
+++       SET_HIGH(r->r_addend,HIGH(sym->st_value));
++ 
++        break;
++ 
++      }
++ 
+++      }
+++
+++  for (sym=sym1;sym<syme;sym++) {
+++    SET_HIGH(sym->st_value,0UL);
+++    SET_HIGH(sym->st_size,0UL);
+++  }
+++
++   return 0;
++   
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3c62bd0779495e2cfe2cbd29dd110eaa14320716
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++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.
++ .
++ gcl (2.6.12-76) unstable; urgency=medium
++ .
++   * Version_2_6_13pre67
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-07-24
++
++--- gcl-2.6.12.orig/h/elf64_i386_reloc.h
+++++ gcl-2.6.12/h/elf64_i386_reloc.h
++@@ -8,6 +8,7 @@
++       add_val(where,~0L,s+a);
++       break;
++     case R_X86_64_PC32:
+++    case R_X86_64_PLT32:
++       massert(ovchks(s+a-p,~MASK(32)));                
++       add_val(where,MASK(32),s+a-p);
++       break;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..37f5f682f84e5b8267dd3081109071325afa756e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,32 @@@
++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.
++ .
++ gcl (2.6.12-78) unstable; urgency=medium
++ .
++   * rebuild against latest compilers and tools
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-10-11
++
++--- gcl-2.6.12.orig/h/386-gnu.h
+++++ gcl-2.6.12/h/386-gnu.h
++@@ -61,3 +61,4 @@
++ #define NEED_STACK_CHK_GUARD
++ 
++ #undef HAVE_D_TYPE /*FIXME defined, but not implemented in readdir*/
+++#define NO_FILE_LOCKING /*FIXME*/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ccbd1e45aab23343c14dc682d398c42f373eb30f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,163 @@@
++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.
++ .
++ gcl (2.6.12-7) unstable; urgency=medium
++ .
++   * Version_2_6_13pre6
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/h/att_ext.h
+++++ gcl-2.6.12/h/att_ext.h
++@@ -29,7 +29,7 @@ void *malloc(size_t);
++ void *realloc(void *,size_t);
++ /* void * memalign(size_t,size_t); */
++ void *alloc_contblock(size_t);
++-void *alloc_relblock(size_t);
+++inline void *alloc_relblock(size_t);
++ /* object fSallocate_contiguous_pages(); */
++ /* object fSallocate_relocatable_pages(); */
++ 
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -7,7 +7,7 @@
++ /* alloc.c:364:OF */ extern object on_stack_cons (object x, object y); /* (x, y) object x; object y; */
++ /* alloc.c:376:OF */ extern object fSallocated (object typ); /* (typ) object typ; */
++ /* alloc.c:401:OF */ extern object fSreset_number_used (object typ); /* (typ) object typ; */
++-/* alloc.c:480:OF */ extern void insert_contblock (void *p, ufixnum s); /* (p, s) char *p; int s; */
+++/* alloc.c:480:OF */ extern inline void insert_contblock (void *p, ufixnum s); /* (p, s) char *p; int s; */
++ /* alloc.c:480:OF */ extern void insert_maybe_sgc_contblock (char *p, int s); /* (p, s) char *p; int s; */
++ /* alloc.c:611:OF */ extern void set_maxpage (void); /* () */
++ /* alloc.c:635:OF */ extern void gcl_init_alloc (void *); /* () */
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -422,7 +422,11 @@ DEFVAR("*LEAF-COLLECTION-THRESHOLD*",sSA
++ 
++ static inline bool
++ marking(void *p) {
++-  return (sgc_enabled ? ON_WRITABLE_PAGE_CACHED(p) : !NULL_OR_ON_C_STACK(p));
+++  return (
+++#ifdef SGC
+++       sgc_enabled ? ON_WRITABLE_PAGE_CACHED(p) :
+++#endif
+++       !NULL_OR_ON_C_STACK(p));
++ }
++ 
++ static inline bool
++@@ -483,7 +487,11 @@ mark_object_address(object *o,int f) {
++   
++   if (lp!=p || !f) {
++     lp=p;
++-    lr=sgc_enabled ? WRITABLE_PAGE_P(lp) : 1;
+++    lr=
+++#ifdef SGC
+++      sgc_enabled ? WRITABLE_PAGE_P(lp) :
+++#endif
+++      1;
++   }
++ 
++   if (lr)
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -147,8 +147,8 @@ mbrk(void *v) {
++ 
++ #include <Windows.h>
++ 
++-ufixnum
++-get_phys_pages_no_malloc(void) {
+++static ufixnum
+++get_phys_pages_no_malloc(char n) {
++   MEMORYSTATUS m;
++ 
++   m.dwLength=sizeof(m);
++@@ -161,8 +161,8 @@ get_phys_pages_no_malloc(void) {
++ 
++ #include <sys/sysctl.h>
++ 
++-ufixnum
++-get_phys_pages_no_malloc(void) {
+++static ufixnum
+++get_phys_pages_no_malloc(char n) {
++   uint64_t s;
++   size_t z=sizeof(s);
++   int m[2]={CTL_HW,HW_MEMSIZE};
++@@ -176,8 +176,8 @@ get_phys_pages_no_malloc(void) {
++ 
++ #elif defined(__sun__)
++ 
++-ufixnum
++-get_phys_pages_no_malloc(void) {
+++static ufixnum
+++get_phys_pages_no_malloc(char n) {
++ 
++   return sysconf(_SC_PHYS_PAGES);
++ 
++@@ -202,7 +202,7 @@ get_proc_meminfo_value_in_pages(const ch
++   return n>>(PAGEWIDTH-10);
++ }
++   
++-ufixnum
+++static ufixnum
++ get_phys_pages_no_malloc(char freep) {
++   return freep ? 
++     get_proc_meminfo_value_in_pages("MemFree:")+
++--- gcl-2.6.12.orig/o/sfaslcoff.c
+++++ gcl-2.6.12/o/sfaslcoff.c
++@@ -205,9 +205,7 @@ load_memory(struct scnhdr *sec1,struct s
++   memory->cfd.cfd_size=sz;
++   memory->cfd.cfd_self=0;
++   memory->cfd.cfd_start=0;
++-  prefer_low_mem_contblock=TRUE;
++-  memory->cfd.cfd_start=alloc_contblock(sz);
++-  prefer_low_mem_contblock=FALSE;
+++  memory->cfd.cfd_start=alloc_code_space(sz);
++ 
++   for (sec=sec1;sec<sece;sec++) {
++     sec->s_paddr+=(ul)memory->cfd.cfd_start;
++--- gcl-2.6.12.orig/o/sfaslmacho.c
+++++ gcl-2.6.12/o/sfaslmacho.c
++@@ -207,9 +207,7 @@ load_memory(struct section *sec1,struct
++   memory->cfd.cfd_size=sz; 
++   memory->cfd.cfd_self=0; 
++   memory->cfd.cfd_start=0; 
++-  prefer_low_mem_contblock=TRUE;
++-  memory->cfd.cfd_start=alloc_contblock(sz);
++-  prefer_low_mem_contblock=FALSE;
+++  memory->cfd.cfd_start=alloc_code_space(sz);
++ 
++   a=(ul)memory->cfd.cfd_start;
++   a=(a+ma)&~ma;
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -28,7 +28,7 @@
++        (pcl (append x (list "pcl")))
++        (clcs (append x (list "clcs")))
++        (gtk (append x (list "gcl-tk"))))
++-  (dolist (d (list lsp cmpnew #-pre-gcl xgcl-2 #+(or pcl ansi-cl) pcl #+ansi-cl clcs))
+++  (dolist (d (list lsp cmpnew #+(and xgcl (not pre-gcl)) xgcl-2 #+(or pcl ansi-cl) pcl #+ansi-cl clcs))
++     (load (make-pathname :name "sys-proclaim" :type "lisp" :directory d)))
++   (load (make-pathname :name "tk-package" :type "lsp" :directory gtk))
++   (load (make-pathname :name "gcl_lfun_list" :type "lsp" :directory cmpnew))
++@@ -77,6 +77,5 @@
++ 
++ #-ansi-cl(use-package :cltl1-compat :lisp)
++ #-ansi-cl(do-symbols (s :cltl1-compat) (export s :lisp)))
++-(export '*load-pathname* :si);For maxima, at least as of 5.34.1
++ 
++ #+ansi-cl (use-package :pcl :user)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cbcbe0a88abf4b0ee714c2f3de64a1ee4a1f5023
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,108 @@@
++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.
++ .
++ gcl (2.6.12-78) unstable; urgency=medium
++ .
++   * rebuild against latest compilers and tools
++   * Version_2_6_13pre69
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-10-29
++
++--- gcl-2.6.12.orig/h/linux.h
+++++ gcl-2.6.12/h/linux.h
++@@ -132,17 +132,10 @@ do { int c = 0; \
++ 
++ #include <limits.h>
++ #include <sys/stat.h>
++-#define GET_FULL_PATH_SELF(a_) do {          \
++-    static char q[PATH_MAX];                 \
++-    const char *s="/proc/self/exe";          \
++-    struct stat ss;                          \
++-    if (stat(s,&ss))                         \
++-      (a_)=argv[0];                          \
++-    else {                                   \
++-      if (!realpath(s,q))                    \
++-     error("realpath error");                \
++-      (a_)=q;                                        \
++-    }                                                \
+++#define GET_FULL_PATH_SELF(a_) do {                          \
+++    static char q[PATH_MAX];                                 \
+++    massert(which("/proc/self/exe",q) || which(argv[0],q));  \
+++    (a_)=q;                                                  \
++   } while(0)
++ 
++ 
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -460,18 +460,49 @@ DEFUN_NEW("EQUAL-TAIL-RECURSION-CHECK",o
++   RETURN1((object)(w-u));
++ }
++ 
+++static int
+++mbin(const char *s,char *o) {
+++
+++  struct stat ss;
+++
+++  if (!stat(s,&ss) && (ss.st_mode&S_IFMT)==S_IFREG && !access(s,R_OK|X_OK)) {
+++    massert(realpath(s,o));
+++    return 1;
+++  }
+++
+++  return 0;
+++
+++}
+++
+++static int
+++which(const char *n,char *o) {
+++
+++  char *s;
+++
+++  if (strchr(n,'/'))
+++    return mbin(n,o);
+++
+++  massert(snprintf(FN1,sizeof(FN1),"%s",getenv("PATH"))>1);
+++  for (s=NULL;(s=strtok(s ? NULL : FN1,":"));) {
+++
+++    massert(snprintf(FN2,sizeof(FN2),"%s/%s",s,n));
+++    if (mbin(FN2,o))
+++      return 1;
+++
+++  }
+++
+++  return 0;
+++
+++}
+++
+++
++ 
++ int
++ main(int argc, char **argv, char **envp) {
++ 
++-#ifdef GET_FULL_PATH_SELF
++   GET_FULL_PATH_SELF(kcl_self);
++-#else
++-  kcl_self = argv[0];
++-#endif
++-
++   *argv=kcl_self;
++-  
+++
++ #ifdef CAN_UNRANDOMIZE_SBRK
++ #include <stdio.h>
++ #include <stdlib.h>
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f0013e6f6c05691862f569fb7eb64b51a47f0c8b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,59 @@@
++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.
++ .
++ gcl (2.6.12-79) unstable; urgency=medium
++ .
++   * Version_2_6_13pre70
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-10-30
++
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -879,9 +879,9 @@ void hppa_save_regs(struct regs);
++ 
++      asm(".code");
++      asm(".export hppa_save_regs, entry");
+++     asm(".label     hppa_save_regs");
++      asm(".proc");
++      asm(".callinfo");
++-     asm(".label     hppa_save_regs");
++      asm(".entry");
++ 
++      asm("stw        %r3,0(%arg0)");
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -242,7 +242,7 @@ get_gc_environ(void) {
++   }
++ 
++   gc_page_min=0.5;
++-  if ((e=getenv("GCL_GC_PAGE_MIN"))) {
+++  if ((e=getenv("GCL_GC_PAGE_MIN"))||(e=getenv("GCL_GC_PAGE_THRESH"))) {/*legacy support*/
++     massert(sscanf(e,"%lf",&gc_page_min)==1);
++     massert(gc_page_min>=0.0);
++   }
++@@ -253,7 +253,8 @@ get_gc_environ(void) {
++     massert(gc_page_max>=0.0);
++   }
++ 
++-  multiprocess_memory_pool=(e=getenv("GCL_MULTIPROCESS_MEMORY_POOL")) && *e;
+++  multiprocess_memory_pool=
+++    (e=getenv("GCL_MULTIPROCESS_MEMORY_POOL")) && (*e=='t' || *e=='T');
++ 
++   wait_on_abort=0;
++   if ((e=getenv("GCL_WAIT_ON_ABORT")))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..136954bb6530cfe6318b87b9b0308dc6d5552187
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,103 @@@
++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.
++ .
++ gcl (2.6.12-81) unstable; urgency=high
++ .
++   * Version_2_6_13pre72
++   * Fix to ppc64el for acl2 FTBFS bug
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-01-21
++
++--- gcl-2.6.12.orig/h/elf64_ppcle_reloc_special.h
+++++ gcl-2.6.12/h/elf64_ppcle_reloc_special.h
++@@ -1,12 +1,12 @@
++ static Sym *toc;
++ 
++-/* static int tramp[]={0,0, */
++-/*               (((0x3a<<10)|(0x9<<5)|0xc)<<16)|0xfff8,/\*ld      r9,-8(r12)*\/ */
++-/*               ((0x3a<<10)|(0x9<<5)|0x9)<<16,         /\*ld      r9,0(r9)*\/ */
++-/*               0x7d2c4b78,                            /\*mr      r12,r9 *\/ */
++-/*               0x7d8903a6,                            /\*mtctr   r12*\/ */
++-/*               0x4e800420                             /\*bctrl*\/ */
++-/* }; */
+++static int tramp[]={0,0,
+++                 (((0x3a<<10)|(0x9<<5)|0xc)<<16)|0xfff8,/*ld      r9,-8(r12)*/
+++                 ((0x3a<<10)|(0x9<<5)|0x9)<<16,         /*ld      r9,0(r9)*/
+++                 0x7d2c4b78,                            /*mr      r12,r9 */
+++                 0x7d8903a6,                            /*mtctr   r12*/
+++                 0x4e800420                             /*bctrl*/
+++};
++ 
++ static int
++ find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
++@@ -15,41 +15,29 @@ find_special_params(void *v,Shdr *sec1,S
++   Shdr *sec;
++   Rela *r;
++   void *ve;
+++  ul *u,j;
++ 
++   massert((sec=get_section(".rela.dyn",sec1,sece,sn)));
++ 
++   v+=sec->sh_offset;
++   ve=v+sec->sh_size;
++ 
++-  for (r=v;v<ve;v+=sec->sh_entsize,r=v) 
+++  for (j=0,r=v;v<ve;v+=sec->sh_entsize,r=v)
++     if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value)
++-     ds1[ELF_R_SYM(r->r_info)].st_value=*(ul *)r->r_offset;
+++      j++;
++ 
++-  return 0;
++-
++-
++-  /* massert((sec=get_section(".rel.dyn",sec1,sece,sn))|| */
++-  /*           (sec=get_section(".rela.dyn",sec1,sece,sn))); */
+++  massert(u=malloc(j*sizeof(tramp)));
++ 
++-  /* v+=sec->sh_offset; */
++-  /* ve=v+sec->sh_size; */
+++  v=ve-sec->sh_size;
+++  for (r=v;v<ve;v+=sec->sh_entsize,r=v)
+++    if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value) {
+++      memcpy(u,tramp,sizeof(tramp));
+++      *u++=r->r_offset;
+++      ds1[ELF_R_SYM(r->r_info)].st_value=(ul)u;
+++      u=((void *)(u-1)+sizeof(tramp));
+++    }
++ 
++-  /* for (j=0,r=v;v<ve;v+=sec->sh_entsize,r=v)  */
++-  /*   if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value) */
++-  /*     j++; */
++-
++-  /* massert(u=malloc(j*sizeof(tramp))); */
++-
++-  /* v=ve-sec->sh_size; */
++-  /* for (r=v;v<ve;v+=sec->sh_entsize,r=v)  */
++-  /*   if (ELF_R_TYPE(r->r_info) && !ds1[ELF_R_SYM(r->r_info)].st_value) { */
++-  /*     memcpy(u,tramp,sizeof(tramp)); */
++-  /*     *u++=r->r_offset; */
++-  /*     ds1[ELF_R_SYM(r->r_info)].st_value=(ul)u; */
++-  /*     u=((void *)(u-1)+sizeof(tramp)); */
++-  /*   } */
++-
++-  /* return 0; */
+++  return 0;
++ 
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c64ecc459d793a58c713931fb135885f1bfb0f56
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,130 @@@
++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.
++ .
++ gcl (2.6.12-81) unstable; urgency=high
++ .
++   * Version_2_6_13pre72
++   * Fix to ppc64el for acl2 FTBFS bug
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-02-02
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4181,7 +4181,7 @@ case $use in
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          arm*)
++-             assert_arg_to_cflags -mlong-calls
+++#            assert_arg_to_cflags -mlong-calls
++              assert_arg_to_cflags -fdollars-in-identifiers
++              assert_arg_to_cflags -g #?
++              ;;
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -388,7 +388,7 @@ case $use in
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          arm*)
++-             assert_arg_to_cflags -mlong-calls
+++#            assert_arg_to_cflags -mlong-calls
++              assert_arg_to_cflags -fdollars-in-identifiers
++              assert_arg_to_cflags -g #?
++              ;;
++--- gcl-2.6.12.orig/h/arm-linux.h
+++++ gcl-2.6.12/h/arm-linux.h
++@@ -12,5 +12,6 @@
++ #define SGC
++ 
++ #define RELOC_H "elf32_arm_reloc.h"
+++#define SPECIAL_RELOC_H "elf32_arm_reloc_special.h"
++ 
++ #define NEED_STACK_CHK_GUARD
++--- gcl-2.6.12.orig/h/elf32_arm_reloc.h
+++++ gcl-2.6.12/h/elf32_arm_reloc.h
++@@ -53,11 +53,21 @@
++       break;
++     case R_ARM_CALL:
++     case R_ARM_JUMP24:
++-      add_vals(where,MASK(24),((long)(s+a-p))>>2);
+++      massert(!a);
+++      {
+++     long x=((long)(s-p))/4;
+++     if (abs(x)&(~MASK(23))) {
+++          got+=(sym->st_size-1)*tz;
+++       memcpy(got,tramp,sizeof(tramp));
+++          got[sizeof(tramp)/sizeof(*got)]=s;
+++       x=((long)got-p)/4;
+++     }
+++     add_vals(where,MASK(24),x);
+++      }
++       break;
++     case R_ARM_ABS32:
++-      add_val(where,~0L,s+a);
+++      add_vals(where,~0L,s+a);
++       break;
++     case R_ARM_V4BX:
++-      add_val(where,~0L,s+a);
+++      add_vals(where,~0L,s+a);
++       break;
++--- /dev/null
+++++ gcl-2.6.12/h/elf32_arm_reloc_special.h
++@@ -0,0 +1,43 @@
+++/* #define R_AARCH64_TRAMP 1 */
+++static int tramp[]={0xe59fc000,  /*ldr r12, [pc]*/ /*FIXME?  Can this refer to an earlier address?*/
+++                 0xe12fff1c}; /*br r12*/
+++static ul tz=1+sizeof(tramp)/sizeof(ul);
+++
+++
+++static int
+++find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
+++                 const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
+++
+++  return 0;
+++
+++}
+++
+++static int
+++label_got_symbols(void *v1,Shdr *sec1,Shdr *sece,Sym *sym1,Sym *syme,const char *st1,const char *sn,ul *gs) {
+++
+++  Rel *r;
+++  Sym *sym;
+++  Shdr *sec;
+++  void *v,*ve;
+++
+++  for (sym=sym1;sym<syme;sym++)
+++    sym->st_size=0;
+++
+++  for (*gs=0,sec=sec1;sec<sece;sec++)
+++    if (sec->sh_type==SHT_REL)
+++      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
+++     if (ELF_R_TYPE(r->r_info)==R_ARM_CALL ||
+++         ELF_R_TYPE(r->r_info)==R_ARM_JUMP24) {
+++
+++       sym=sym1+ELF_R_SYM(r->r_info);
+++
+++       if (!sym->st_size)
+++         sym->st_size=++*gs;
+++
+++     }
+++
+++  (*gs)*=tz;
+++
+++  return 0;
+++
+++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e8e364fbdfb99132061cefd718475be72b74576e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,47 @@@
++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.
++ .
++ gcl (2.6.12-82) unstable; urgency=high
++ .
++   * Version_2_6_13pre73
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-02-02
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4122,7 +4122,7 @@ $as_echo_n "checking working gprof... "
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++-                    arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
+++#                   arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++                     aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++                     *gnu)  enableval="no";;
++                 esac
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -335,7 +335,7 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++-                    arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
+++#                   arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++                     aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++                     *gnu)  enableval="no";;
++                 esac              
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bac042b49a2def92278b57032e8962b5a859dfe3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,446 @@@
++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.
++ .
++ gcl (2.6.12-83) unstable; urgency=high
++ .
++   * Version_2_6_13pre75
++   * FIx acl2 arm builds (Closes: #919477).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/919477
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-02-05
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -2679,6 +2679,7 @@ case $canonical in
++     mipsel*linux*) use=mipsel-linux;;
++     sparc*linux*) use=sparc-linux;;
++     aarch64*linux*) use=aarch64-linux;;
+++    arm*linux*hf) use=armhf-linux;;
++     arm*linux*) use=arm-linux;;
++     s390*linux*) use=s390-linux;;
++     ia64*linux*) use=ia64-linux;;
++@@ -4122,11 +4123,12 @@ $as_echo_n "checking working gprof... "
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++-#                   arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
+++#                   arm*)  if echo $canonical |grep -q hf$; then enableval="no"; fi;;#FIXME CALL and JUMP24 veneers needed for thumb 20190201 #FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++                     aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++                     *gnu)  enableval="no";;
++                 esac
++-                if test "$enableval" != "yes" ; then
+++                   GP_FLAG=""
+++                   if test "$enableval" != "yes" ; then
++                     { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
++ $as_echo "disabled" >&6; }
++                 else
++@@ -4134,7 +4136,8 @@ $as_echo "disabled" >&6; }
++ $as_echo "ok" >&6; }
++                     OLD_CFLAGS=$CFLAGS  # Do not run configure tests with -pg
++                        assert_arg_to_cflags -pg
++-                    CFLAGS=$OLD_CFLAGS
+++                       GP_FLAG="-pg"
+++                       CFLAGS=$OLD_CFLAGS
++                             TFPFLAG=""
++ 
++ $as_echo "#define GCL_GPROF 1" >>confdefs.h
++@@ -4180,8 +4183,11 @@ case $use in
++          ia64*)
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
+++         armhf*)
+++             assert_arg_to_cflags -fdollars-in-identifiers
+++             assert_arg_to_cflags -g #?
+++             ;;
++          arm*)
++-#            assert_arg_to_cflags -mlong-calls
++              assert_arg_to_cflags -fdollars-in-identifiers
++              assert_arg_to_cflags -g #?
++              ;;
++@@ -9051,6 +9057,7 @@ LDFLAGS="`echo $LDFLAGS | sed 's,gcl.scr
++ 
++ LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS $LIBS $TLIBS"
++ 
+++CFLAGS="$CFLAGS $GP_FLAG"
++ FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS"
++ 
++ # Work around bug with gcc on ppc -- CM
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -37,6 +37,7 @@ case $canonical in
++     mipsel*linux*) use=mipsel-linux;;
++     sparc*linux*) use=sparc-linux;;
++     aarch64*linux*) use=aarch64-linux;;
+++    arm*linux*hf) use=armhf-linux;;
++     arm*linux*) use=arm-linux;;
++     s390*linux*) use=s390-linux;;
++     ia64*linux*) use=ia64-linux;;
++@@ -335,17 +336,19 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     sh4*)  enableval="no";;
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++-#                   arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
+++#                   arm*)  if echo $canonical |grep -q hf$; then enableval="no"; fi;;#FIXME CALL and JUMP24 veneers needed for thumb 20190201 #FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++                     aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++                     *gnu)  enableval="no";;
++                 esac              
++-                if test "$enableval" != "yes" ; then
+++                   GP_FLAG=""
+++                   if test "$enableval" != "yes" ; then
++                     AC_MSG_RESULT([disabled])
++                 else
++                     AC_MSG_RESULT([ok])
++                     OLD_CFLAGS=$CFLAGS  # Do not run configure tests with -pg
++                        assert_arg_to_cflags -pg
++-                    CFLAGS=$OLD_CFLAGS
+++                       GP_FLAG="-pg"
+++                       CFLAGS=$OLD_CFLAGS
++                             TFPFLAG=""
++                     AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
++                 fi
++@@ -387,8 +390,11 @@ case $use in
++          ia64*)
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
+++         armhf*)
+++             assert_arg_to_cflags -fdollars-in-identifiers
+++             assert_arg_to_cflags -g #?
+++             ;;
++          arm*)
++-#            assert_arg_to_cflags -mlong-calls
++              assert_arg_to_cflags -fdollars-in-identifiers
++              assert_arg_to_cflags -g #?
++              ;;
++@@ -2108,6 +2114,7 @@ LDFLAGS="`echo $LDFLAGS | sed 's,gcl.scr
++ AC_SUBST(LDFLAGS)
++ LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS $LIBS $TLIBS"
++ AC_SUBST(LIBS)
+++CFLAGS="$CFLAGS $GP_FLAG"
++ FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS"
++ AC_SUBST(FINAL_CFLAGS)
++ # Work around bug with gcc on ppc -- CM
++--- /dev/null
+++++ gcl-2.6.12/h/armhf-linux.h
++@@ -0,0 +1,17 @@
+++#include "linux.h"
+++
+++#ifdef IN_GBC
+++#undef MPROTECT_ACTION_FLAGS
+++#define MPROTECT_ACTION_FLAGS SA_RESTART|SA_SIGINFO
+++#define GET_FAULT_ADDR(sig,code,sv,a) \
+++ ((siginfo_t *)code)->si_addr
+++/*  #define GET_FAULT_ADDR(sig,code,sv,a) \ */
+++/*      ((void *)(*((char ***)(&code)))[44]) */
+++#endif
+++
+++#define SGC
+++
+++#define RELOC_H "elf32_armhf_reloc.h"
+++#define SPECIAL_RELOC_H "elf32_armhf_reloc_special.h"
+++
+++#define NEED_STACK_CHK_GUARD
++--- gcl-2.6.12.orig/h/elf32_arm_reloc.h
+++++ gcl-2.6.12/h/elf32_arm_reloc.h
++@@ -1,44 +1,7 @@
++-#define R_ARM_THM_CALL        10
++-#define R_ARM_CALL 28
++-#define R_ARM_V4BX 40
++-#define R_ARM_THM_MOVW_ABS_NC 47
++-#define R_ARM_THM_MOVW_ABS    48
++ #define R_ARM_MOVW_ABS_NC 43
++ #define R_ARM_MOVT_ABS    44
++-    case R_ARM_THM_JUMP24:
++-      s+=a; 
++-      if (ELF_ST_TYPE(sym->st_info)==STT_FUNC) s|=1; 
++-      s-=p+4; /*FIXME maybe drop 4 and add_val below*/
++-      s=((long)s>>1); 
++-      massert(!(abs(s)&0xff000000));  
++-      store_val(where,MASK(11)<<16,(s&0x7ff)<<16); 
++-      store_val(where,MASK(10),s>>11); 
++-      store_val(where,MASK(1)<<(16+11),(~((s>>21&0x1)^(s>>23&0x1)))<<(16+11)); 
++-      store_val(where,MASK(1)<<(16+13),(~((s>>22&0x1)^(s>>23&0x1)))<<(16+13)); 
++-      store_val(where,MASK(1)<<10,(s>>23&0x1)<<10); 
++-      break; 
++-    case R_ARM_THM_CALL: 
++-      s+=a; 
++-      if (ELF_ST_TYPE(sym->st_info)==STT_FUNC) s|=1; 
++-      s-=p+4; /*FIXME maybe drop 4 and add_val below*/
++-      s=((long)s>>1); 
++-      massert(!(abs(s)&0xffc00000));  
++-      store_val(where,MASK(11),s>>11); 
++-      store_val(where,MASK(11)<<16,(s&0x7ff)<<16); 
++-      break; 
++-    case R_ARM_THM_MOVW_ABS_NC:
++-      s+=a;
++-      if (ELF_ST_TYPE(sym->st_info)==STT_FUNC) s|=1;
++-      s&=0xffff;
++-      s=((s>>12)&0xf)|(((s>>11)&0x1)<<10)|((s&0xff)<<16)|(((s>>8)&0x7)<<28);
++-      add_vals(where,~0L,s);
++-      break;
++-    case R_ARM_THM_MOVW_ABS:
++-      s+=a;
++-      s>>=16;
++-      s=((s>>12)&0xf)|(((s>>11)&0x1)<<10)|((s&0xff)<<16)|(((s>>8)&0x7)<<28);
++-      add_vals(where,~0L,s);
++-      break;
+++#define R_ARM_CALL 28
+++#define R_ARM_V4BX 40
++     case R_ARM_MOVW_ABS_NC:
++       s+=a;
++       s&=0xffff;
++@@ -53,21 +16,21 @@
++       break;
++     case R_ARM_CALL:
++     case R_ARM_JUMP24:
++-      massert(!a);
++       {
++-     long x=((long)(s-p))/4;
++-     if (abs(x)&(~MASK(23))) {
+++     long x=((long)(s+a-p))/4;
+++     if (abs(x)&(~MASK(23))) {/*24?*/
++           got+=(sym->st_size-1)*tz;
++        memcpy(got,tramp,sizeof(tramp));
+++       /*relocate*/
++           got[sizeof(tramp)/sizeof(*got)]=s;
++        x=((long)got-p)/4;
++      }
++      add_vals(where,MASK(24),x);
++       }
++       break;
++-    case R_ARM_ABS32:
+++    case R_ARM_V4BX:
++       add_vals(where,~0L,s+a);
++       break;
++-    case R_ARM_V4BX:
+++    case R_ARM_ABS32:
++       add_vals(where,~0L,s+a);
++       break;
++--- gcl-2.6.12.orig/h/elf32_arm_reloc_special.h
+++++ gcl-2.6.12/h/elf32_arm_reloc_special.h
++@@ -1,9 +1,7 @@
++-/* #define R_AARCH64_TRAMP 1 */
++-static int tramp[]={0xe59fc000,  /*ldr r12, [pc]*/ /*FIXME?  Can this refer to an earlier address?*/
++-                 0xe12fff1c}; /*br r12*/
+++static int tramp[]={0xe59fc000,   /*ldr r12, [pc]*/ /*FIXME?  Can this refer to an earlier address?*/
+++                 0xe12fff1c};  /*br r12*/
++ static ul tz=1+sizeof(tramp)/sizeof(ul);
++ 
++-
++ static int
++ find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
++                  const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
++@@ -26,8 +24,10 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   for (*gs=0,sec=sec1;sec<sece;sec++)
++     if (sec->sh_type==SHT_REL)
++       for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++-     if (ELF_R_TYPE(r->r_info)==R_ARM_CALL ||
++-         ELF_R_TYPE(r->r_info)==R_ARM_JUMP24) {
+++     if (
+++         ELF_R_TYPE(r->r_info)==R_ARM_CALL ||
+++         ELF_R_TYPE(r->r_info)==R_ARM_JUMP24
+++         ) {
++ 
++        sym=sym1+ELF_R_SYM(r->r_info);
++ 
++--- /dev/null
+++++ gcl-2.6.12/h/elf32_armhf_reloc.h
++@@ -0,0 +1,71 @@
+++#define R_ARM_THM_CALL        10
+++#define R_ARM_THM_MOVW_ABS_NC 47
+++#define R_ARM_THM_MOVW_ABS    48
+++     case R_ARM_THM_JUMP24:
+++      {
+++     long x=(long)(s+a-p);
+++     if (1||abs(x)&(~MASK(25))) {
+++
+++          got+=(sym->st_size-1)*tz;
+++       memcpy(got,tramp,sizeof(tramp));
+++
+++       r->r_offset=(void *)got-(void *)start;
+++       r->r_info=ELF_R_INFO(ELF_R_SYM(r->r_info),R_ARM_THM_MOVW_ABS_NC);
+++       relocate(sym1,r,0,start,got,gote);
+++
+++       r->r_offset=(void *)(got+1)-(void *)start;
+++       r->r_info=ELF_R_INFO(ELF_R_SYM(r->r_info),R_ARM_THM_MOVW_ABS);
+++       relocate(sym1,r,0,start,got,gote);
+++
+++       x=((long)got-p);
+++     }
+++        if (ELF_ST_TYPE(sym->st_info)==STT_FUNC) x|=1;
+++        x-=4; /*FIXME maybe drop 4 and add_val below*/
+++        x=((long)x>>1);
+++        store_val(where,MASK(11)<<16,(x&0x7ff)<<16);
+++        store_val(where,MASK(10),x>>11);
+++        store_val(where,MASK(1)<<(16+11),(~((x>>21&0x1)^(x>>23&0x1)))<<(16+11));
+++        store_val(where,MASK(1)<<(16+13),(~((x>>22&0x1)^(x>>23&0x1)))<<(16+13));
+++        store_val(where,MASK(1)<<10,(x>>23&0x1)<<10);
+++      }
+++      break;
+++    case R_ARM_THM_CALL:
+++      {
+++     long x=(long)(s+a-p);
+++     if (1||abs(x)&(~MASK(23))) {/*24?*/
+++          got+=(sym->st_size-1)*tz;
+++       memcpy(got,tramp,sizeof(tramp));
+++
+++       r->r_offset=(void *)got-(void *)start;
+++       r->r_info=ELF_R_INFO(ELF_R_SYM(r->r_info),R_ARM_THM_MOVW_ABS_NC);
+++       relocate(sym1,r,0,start,got,gote);
+++
+++       r->r_offset=(void *)(got+1)-(void *)start;
+++       r->r_info=ELF_R_INFO(ELF_R_SYM(r->r_info),R_ARM_THM_MOVW_ABS);
+++       relocate(sym1,r,0,start,got,gote);
+++
+++       x=((long)got-p);
+++     }
+++        if (ELF_ST_TYPE(sym->st_info)==STT_FUNC) x|=1;
+++        x-=4; /*FIXME maybe drop 4 and add_val below*/
+++        x=((long)x>>1);
+++        store_val(where,MASK(11),x>>11);
+++        store_val(where,MASK(11)<<16,(x&0x7ff)<<16);
+++      }
+++      break;
+++    case R_ARM_THM_MOVW_ABS_NC:
+++      s+=a;
+++      if (ELF_ST_TYPE(sym->st_info)==STT_FUNC) s|=1;
+++      s&=0xffff;
+++      s=((s>>12)&0xf)|(((s>>11)&0x1)<<10)|((s&0xff)<<16)|(((s>>8)&0x7)<<28);
+++      add_vals(where,~0L,s);
+++      break;
+++    case R_ARM_THM_MOVW_ABS:
+++      s+=a;
+++      s>>=16;
+++      s=((s>>12)&0xf)|(((s>>11)&0x1)<<10)|((s&0xff)<<16)|(((s>>8)&0x7)<<28);
+++      add_vals(where,~0L,s);
+++      break;
+++    case R_ARM_ABS32:
+++      add_vals(where,~0L,s+a);
+++      break;
++--- /dev/null
+++++ gcl-2.6.12/h/elf32_armhf_reloc_special.h
++@@ -0,0 +1,85 @@
+++static int tramp[]={0x0c00f240,  /*movw      r12, #0*/
+++                 0x0c00f2c0,  /*movt r12, #0*/
+++                 0xbf004760}; /*bx r12   nop*/
+++static ul tz=sizeof(tramp)/sizeof(ul);
+++
+++static ul *
+++next_plt_entry(ul *p,ul *pe) {
+++
+++  ul l0=0xe5bef000,/*ldr pc,[ip,#]*/
+++     l1=0xe5bcf000;/*ldr pc,[lr,#]*/
+++
+++  for (;p<pe && (*p&l0)!=l0 && (*p&l1)!=l1;p++);
+++  if ((*p&l0)==l0) p++;
+++
+++  return p+1;
+++
+++}
+++
+++static int
+++find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
+++                 const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
+++
+++  Shdr *sec,*psec;
+++  Rel *r;
+++  ul *p,*pe;
+++  void *ve;
+++
+++  /*plt entries are not of uniform size*/
+++
+++  massert(psec=get_section(".plt",sec1,sece,sn));
+++  p=(void *)psec->sh_addr;
+++  pe=(void *)p+psec->sh_size;
+++
+++  massert((sec=get_section( ".rel.plt",sec1,sece,sn)) ||
+++       (sec=get_section(".rela.plt",sec1,sece,sn)));
+++
+++  v+=sec->sh_offset;
+++  ve=v+sec->sh_size;
+++
+++  p=next_plt_entry(p,pe);/*plt0*/
+++
+++  for (r=v;v<ve && p<pe;v+=sec->sh_entsize,r=v,p=next_plt_entry(p,pe)) {
+++    if (!ds1[ELF_R_SYM(r->r_info)].st_value)
+++      ds1[ELF_R_SYM(r->r_info)].st_value=(ul)p;
+++  }
+++
+++  massert(p==pe);
+++  massert(v==ve);
+++
+++  return 0;
+++
+++}
+++
+++static int
+++label_got_symbols(void *v1,Shdr *sec1,Shdr *sece,Sym *sym1,Sym *syme,const char *st1,const char *sn,ul *gs) {
+++
+++  Rel *r;
+++  Sym *sym;
+++  Shdr *sec;
+++  void *v,*ve;
+++
+++  for (sym=sym1;sym<syme;sym++)
+++    sym->st_size=0;
+++
+++  for (*gs=0,sec=sec1;sec<sece;sec++)
+++    if (sec->sh_type==SHT_REL)
+++      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
+++     if (
+++#define R_ARM_THM_CALL        10
+++         ELF_R_TYPE(r->r_info)==R_ARM_THM_CALL ||
+++         ELF_R_TYPE(r->r_info)==R_ARM_THM_JUMP24
+++         ) {
+++
+++       sym=sym1+ELF_R_SYM(r->r_info);
+++
+++       if (!sym->st_size)
+++         sym->st_size=++*gs;
+++
+++     }
+++
+++  (*gs)*=tz;
+++
+++  return 0;
+++
+++}
++--- gcl-2.6.12.orig/makedefc.in
+++++ gcl-2.6.12/makedefc.in
++@@ -6,10 +6,6 @@
++ # for main link of raw_gcl
++ LIBS=@LIBS@
++ 
++-#The multi precision library stuff
++-MPFILES=$(MPDIR)/@MPI_FILE@ $(MPDIR)/libmport.a
++-
++-
++ # root for the installation, eg /usr/local
++ # This would cause make install to create /usr/local/bin/gcl and
++ # /usr/local/lib/gcl-2-??/* with some basic files.
++--- gcl-2.6.12.orig/o/unexelf.c
+++++ gcl-2.6.12/o/unexelf.c
++@@ -887,7 +887,7 @@ unexec (char *new_name, char *old_name,
++ 
++   /* Walk through all section headers, insert the new data2 section right
++      before the new bss section. */
++-  for (n = 1, nn = 1; n < (int) old_file_h->e_shnum; n++, nn++)
+++  for (n = 0, nn = 0; n < (int) old_file_h->e_shnum; n++, nn++)
++     {
++       caddr_t src;
++       /* If it is (s)bss section, insert the new data2 section before it.  */
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..42293a882fc9af15a0e68b3092d126914b8c9a05
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++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.
++ .
++ gcl (2.6.12-83) unstable; urgency=high
++ .
++   * Version_2_6_13pre76
++   * FIx acl2 arm builds (Closes: #919477).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/919477
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-02-05
++
++--- gcl-2.6.12.orig/h/elf32_arm_reloc.h
+++++ gcl-2.6.12/h/elf32_arm_reloc.h
++@@ -18,10 +18,10 @@
++     case R_ARM_JUMP24:
++       {
++      long x=((long)(s+a-p))/4;
++-     if (abs(x)&(~MASK(23))) {/*24?*/
+++     if (abs(x)&(~MASK(24))) {
++           got+=(sym->st_size-1)*tz;
++        memcpy(got,tramp,sizeof(tramp));
++-       /*relocate*/
+++       /*recurse on relocate?*/
++           got[sizeof(tramp)/sizeof(*got)]=s;
++        x=((long)got-p)/4;
++      }
++@@ -29,8 +29,6 @@
++       }
++       break;
++     case R_ARM_V4BX:
++-      add_vals(where,~0L,s+a);
++-      break;
++     case R_ARM_ABS32:
++       add_vals(where,~0L,s+a);
++       break;
++--- gcl-2.6.12.orig/h/elf32_armhf_reloc.h
+++++ gcl-2.6.12/h/elf32_armhf_reloc.h
++@@ -4,7 +4,7 @@
++      case R_ARM_THM_JUMP24:
++       {
++      long x=(long)(s+a-p);
++-     if (1||abs(x)&(~MASK(25))) {
+++     if (abs(x)&(~MASK(24))) {
++ 
++           got+=(sym->st_size-1)*tz;
++        memcpy(got,tramp,sizeof(tramp));
++@@ -32,7 +32,7 @@
++     case R_ARM_THM_CALL:
++       {
++      long x=(long)(s+a-p);
++-     if (1||abs(x)&(~MASK(23))) {/*24?*/
+++     if (abs(x)&(~MASK(23))) {
++           got+=(sym->st_size-1)*tz;
++        memcpy(got,tramp,sizeof(tramp));
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..851364671eadcb3768fedf2eb4f0d3912c09fe11
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,38 @@@
++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.
++ .
++ gcl (2.6.12-83) unstable; urgency=high
++ .
++   * Version_2_6_13pre77
++   * FIx acl2 arm builds (Closes: #919477).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/919477
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-02-05
++
++--- gcl-2.6.12.orig/h/elf32_arm_reloc.h
+++++ gcl-2.6.12/h/elf32_arm_reloc.h
++@@ -18,7 +18,7 @@
++     case R_ARM_JUMP24:
++       {
++      long x=((long)(s+a-p))/4;
++-     if (abs(x)&(~MASK(24))) {
+++     if (abs(x)&(~MASK(23))) {
++           got+=(sym->st_size-1)*tz;
++        memcpy(got,tramp,sizeof(tramp));
++        /*recurse on relocate?*/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6105d42165179fe39a45b5130a19ef6bd7e27348
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,47 @@@
++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.
++ .
++ gcl (2.6.12-83) unstable; urgency=high
++ .
++   * Version_2_6_13pre78
++   * FIx acl2 arm builds (Closes: #919477).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/919477
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-02-06
++
++--- gcl-2.6.12.orig/h/elf32_armhf_reloc.h
+++++ gcl-2.6.12/h/elf32_armhf_reloc.h
++@@ -4,7 +4,7 @@
++      case R_ARM_THM_JUMP24:
++       {
++      long x=(long)(s+a-p);
++-     if (abs(x)&(~MASK(24))) {
+++     if (abs(x)&(~MASK(23))) {
++ 
++           got+=(sym->st_size-1)*tz;
++        memcpy(got,tramp,sizeof(tramp));
++@@ -32,7 +32,7 @@
++     case R_ARM_THM_CALL:
++       {
++      long x=(long)(s+a-p);
++-     if (abs(x)&(~MASK(23))) {
+++     if (abs(x)&(~MASK(22))) {
++           got+=(sym->st_size-1)*tz;
++        memcpy(got,tramp,sizeof(tramp));
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ad89d0def5677e7ffeff06bdca620d825ebc2b4c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,111 @@@
++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.
++ .
++ gcl (2.6.12-83) unstable; urgency=high
++ .
++   * Version_2_6_13pre79
++   * Fix acl2 arm builds (Closes: #919477).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/919477
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-03-21
++
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -175,7 +175,7 @@ TS_MEMBER(t0,TS(t1)|TS(t2)|TS(t3)...)
++ #define TS(s) (1<<s)
++ #define TS_MEMBER(t1,ts) ((TS(t1)) & (ts))
++ 
++-#define ASSURE_TYPE(val,t) if(type_of(val)!=t) val= Icheck_one_type(val,t)
+++#define ASSURE_TYPE(val,t) if (type_of(val)!=t) TYPE_ERROR(val,type_name(t))
++ 
++ object IisArray();
++ 
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -526,16 +526,9 @@ exhausted_report(enum type t,struct type
++ 
++   available_pages+=resv_pages;
++   resv_pages=0;
++-  vs_push(type_name(t));
++-  vs_push(make_fixnum(tm->tm_npage));
++-  CEerror("The storage for ~A is exhausted.~%\
++-Currently, ~D pages are allocated.~%      \
++-Use ALLOCATE to expand the space.",
++-       "Continues execution.",
++-       2, vs_top[-2], vs_top[-1], Cnil, Cnil);
++-
++-  vs_popp;
++-  vs_popp;
+++  CEerror("Continues execution.",
+++       "The storage for ~A is exhausted. ~D pages allocated. Use ALLOCATE to expand the space.",
+++       2, type_name(t), make_fixnum(tm->tm_npage));
++ 
++   call_after_gbc_hook(t);
++ 
++--- gcl-2.6.12.orig/o/array.c
+++++ gcl-2.6.12/o/array.c
++@@ -211,14 +211,18 @@ DEFUN_NEW("ASET1", object, fSaset1, SI,
++       break;
++     case aet_bit:
++       i +=  BV_OFFSET(x);
++-    AGAIN_BIT: 
++       ASSURE_TYPE(val,t_fixnum);
++-      {int v = Mfix(val);
++-       if (v == 0) CLEAR_BITREF(x,i);
++-       else if (v == 1) SET_BITREF(x,i);
++-       else {val= fSincorrect_type(val,sLbit);
++-          goto AGAIN_BIT;}
++-       break;}
+++      switch (Mfix(val)) {
+++      case 0:
+++     CLEAR_BITREF(x,i);
+++     break;
+++      case 1:
+++     SET_BITREF(x,i);
+++     break;
+++      default:
+++     TYPE_ERROR(val,sLbit);
+++      }
+++      break;
++     case aet_fix:
++       ASSURE_TYPE(val,t_fixnum);
++       (x->fixa.fixa_self[i]) = Mfix(val);
++--- gcl-2.6.12.orig/o/utils.c
+++++ gcl-2.6.12/o/utils.c
++@@ -169,20 +169,6 @@ Ifuncall_n(object fun,int n,...) {
++ /*   return res; */
++ /* } */
++ 
++-object
++-Icheck_one_type(object x, enum type t)
++-{ if (x->d.t != t)
++-    { return CEerror("Expected a ~a ","Supply right type",1,type_name(t),Cnil,Cnil,Cnil);
++-    }
++-  return x;
++-}
++-
++-
++-object
++-fSincorrect_type(object val, object type)
++-{ return CEerror("Got ~a,Expected a ~a","Supply a new one",1,val,type,Cnil,Cnil);
++-}
++-
++ /* static void */
++ /* Ineed_in_image(object (*foo) (/\* ??? *\/)) */
++ /* {;} */
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..63f2a285b0a1a26171352e67817d7b585e5a16c1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++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.
++ .
++ gcl (2.6.12-84) unstable; urgency=medium
++ .
++   * Version_2_6_13pre80
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-03-28
++
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -329,7 +329,7 @@ empty_relblock(void) {
++ void
++ setup_rb(bool preserve_rb_pointerp) {
++ 
++-  int lowp=new_rb_start!=rb_start || rb_high();
+++  int lowp=rb_high();
++ 
++   update_pool(2*(nrbpage-page(rb_size())));
++   rb_start=new_rb_start;
++@@ -349,10 +349,13 @@ resize_hole(ufixnum hp,enum type tp,bool
++   char *start=rb_begin(),*new_start=heap_end+hp*PAGESIZE;
++   ufixnum size=rb_pointer-start;
++ 
++-  if (!in_placep &&
++-      ((new_start<=start && start<new_start+size) || (new_start<start+size && start+size<=new_start+size))) {
+++  if (!in_placep && (rb_high() ?
+++                  new_start+size>rb_end :
+++                  new_start+(nrbpage<<PAGEWIDTH)<start+size
+++                  /* 0 (20190401  never reached)*/
+++                  )) {
++     if (sSAnotify_gbcA->s.s_dbind != Cnil)
++-      emsg("Toggling relblock when resizing hole to %lu\n",hp);
+++      emsg("[GC Toggling relblock when resizing hole to %lu]\n",hp);
++     tm_table[t_relocatable].tm_adjgbccnt--;
++     GBC(t_relocatable);
++     return resize_hole(hp,tp,in_placep);
++@@ -389,7 +392,7 @@ alloc_page(long n) {
++       d=(available_pages/3)<d ? (available_pages/3) : d;
++       
++       if (sSAnotify_gbcA && sSAnotify_gbcA->s.s_dbind != Cnil)
++-     emsg("Hole overrun\n");
+++     emsg("[GC Hole overrun]\n");
++ 
++       resize_hole(d+nn,t_relocatable,0);
++ 
++@@ -852,7 +855,7 @@ add_pages(struct typemanager *tm,fixnum
++ 
++     if (rb_high() && m>((rb_start-heap_end)>>PAGEWIDTH)) {
++       if (sSAnotify_gbcA->s.s_dbind != Cnil)
++-     emsg("Moving relblock low before expanding relblock pages\n");
+++     emsg("[GC Moving relblock low before expanding relblock pages]\n");
++       tm_table[t_relocatable].tm_adjgbccnt--;
++       GBC(t_relocatable);
++     }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..17a9f6f6f02d4baca0180df6499f5f827f8ef577
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,40 @@@
++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.
++ .
++ gcl (2.6.12-85) unstable; urgency=medium
++ .
++   * Version_2_6_13pre81
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-03-28
++
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -349,9 +349,10 @@ resize_hole(ufixnum hp,enum type tp,bool
++   char *start=rb_begin(),*new_start=heap_end+hp*PAGESIZE;
++   ufixnum size=rb_pointer-start;
++ 
+++#define OVERLAP(c_,t_,s_) ((t_)<(c_)+(s_) && (c_)<(t_)+(s_))
++   if (!in_placep && (rb_high() ?
++-                  new_start+size>rb_end :
++-                  new_start+(nrbpage<<PAGEWIDTH)<start+size
+++                  OVERLAP(start,new_start,size) :
+++                  OVERLAP(start,new_start+(nrbpage<<PAGEWIDTH),size)
++                   /* 0 (20190401  never reached)*/
++                   )) {
++     if (sSAnotify_gbcA->s.s_dbind != Cnil)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..585f44fcd1bdcb6899a49f166f2a7e4d1bd68eb4
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,446 @@@
++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.
++ .
++ gcl (2.6.12-85) unstable; urgency=medium
++ .
++   * Version_2_6_13pre82
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-04-02
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -6375,7 +6375,7 @@ main ()
++              FILE *f;
++              if (!(f=fopen("conftest1","w")))
++                 return -1;
++-                fprintf(f,"%u",sbrk(0));
+++                fprintf(f,"%p",sbrk(0));
++ 
++   ;
++   return 0;
++@@ -6591,7 +6591,7 @@ else
++                      #endif
++                      if (!(f=fopen("conftest1","w")))
++                         return -1;
++-                        fprintf(f,"%u",sbrk(0));
+++                        fprintf(f,"%p",sbrk(0));
++                         return 0;
++                  }
++ 
++@@ -6625,7 +6625,7 @@ else
++                      #include "h/unrandomize.h"
++                      #endif
++                      if (!(f=fopen("conftest1","w"))) return -1;
++-                        fprintf(f,"%u",sbrk(0));
+++                        fprintf(f,"%p",sbrk(0));
++                         return 0;
++                  }
++ 
++@@ -6653,8 +6653,9 @@ $as_echo "no" >&6; }
++      as_fn_error $? "exiting" "$LINENO" 5
++     fi
++ fi
++-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CSTACK_ADDRESS" >&5
++-$as_echo_n "checking CSTACK_ADDRESS... " >&6; }
+++
+++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CSTACK_DIRECTION" >&5
+++$as_echo_n "checking CSTACK_DIRECTION... " >&6; }
++ if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++@@ -6666,14 +6667,61 @@ else
++ 
++              #include <stdio.h>
++              #include <stdlib.h>
++-             void *
++-             foo() {
+++
+++             unsigned long w;
+++
+++             void
+++             foo(void) {
++                  int i;
++-                 return (void *)&i;
+++                 w=(unsigned long)&i;
++              }
++ 
++              int
++              main(int argc,char **argv,char **envp) {
+++                 void *b;
+++                 FILE *fp = fopen("conftest1","w");
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 foo();
+++                 fprintf(fp,"%d",((unsigned long) &b) > w ? -1 : 1);
+++                 fclose(fp);
+++                 return 0;
+++             }
+++_ACEOF
+++if ac_fn_c_try_run "$LINENO"; then :
+++  cstack_direction=`cat conftest1`
+++else
+++  cstack_direction=0
+++fi
+++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+++  conftest.$ac_objext conftest.beam conftest.$ac_ext
+++fi
+++
+++
+++cat >>confdefs.h <<_ACEOF
+++#define CSTACK_DIRECTION $cstack_direction
+++_ACEOF
+++
+++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cstack_direction" >&5
+++$as_echo "$cstack_direction" >&6; }
+++
+++
+++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CSTACK_ADDRESS" >&5
+++$as_echo_n "checking CSTACK_ADDRESS... " >&6; }
+++if test "$cross_compiling" = yes; then :
+++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+++as_fn_error $? "cannot run test program while cross compiling
+++See \`config.log' for more details" "$LINENO" 5; }
+++else
+++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+++/* end confdefs.h.  */
+++
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             int
+++             main(int argc,char **argv,char **envp) {
++                  void *v ;
++                  FILE *fp = fopen("conftest1","w");
++                  unsigned long i,j;
++@@ -6685,13 +6733,13 @@ else
++                  j<<=$PAGEWIDTH;
++                  j<<=16;
++                  i=(unsigned long)&v;
++-                 if (foo()>i) i-=j;
++-                    j--;
++-                    i+=j;
++-                    i&=~j;
++-                    fprintf(fp,"0x%lx",i-1);
++-                    fclose(fp);
++-                    return 0;
+++                 if ($cstack_direction==1) i-=j;
+++                 j--;
+++                 i+=j;
+++                 i&=~j;
+++                 fprintf(fp,"0x%lx",i-1);
+++                 fclose(fp);
+++                 return 0;
++              }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++@@ -6724,12 +6772,6 @@ else
++ 
++              #include <stdio.h>
++              #include <stdlib.h>
++-             void *
++-             foo() {
++-                 int i;
++-                 return (void *)&i;
++-             }
++-
++              int
++              main(int argc,char **argv,char **envp) {
++                  void *v ;
++@@ -6743,14 +6785,14 @@ else
++                  j<<=$PAGEWIDTH;
++                  j<<=16;
++                  i=(unsigned long)&v;
++-                 if (foo()>i) i-=j;
++-                    j--;
++-                    i+=j;
++-                    i&=~j;
++-                    for (j=0;(i>>j)!=(i>>(sizeof(long)*8-1));j++);
++-                        fprintf(fp,"%d",j);
++-                        fclose(fp);
++-                        return 0;
+++                 if ($cstack_direction==1) i-=j;
+++                 j--;
+++                 i+=j;
+++                 i&=~j;
+++                 for (j=0;(i>>j)!=(i>>(sizeof(long)*8-1));j++);
+++                 fprintf(fp,"%ld",j);
+++                 fclose(fp);
+++                 return 0;
++              }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++@@ -6854,54 +6896,6 @@ _ACEOF
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cstack_alignment" >&5
++ $as_echo "$cstack_alignment" >&6; }
++ 
++-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CSTACK_DIRECTION" >&5
++-$as_echo_n "checking CSTACK_DIRECTION... " >&6; }
++-if test "$cross_compiling" = yes; then :
++-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++-as_fn_error $? "cannot run test program while cross compiling
++-See \`config.log' for more details" "$LINENO" 5; }
++-else
++-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++-/* end confdefs.h.  */
++-
++-             #include <stdio.h>
++-             #include <stdlib.h>
++-             void *
++-             foo(void) {
++-                 int i;
++-                 return (void *)&i;
++-             }
++-
++-             int
++-             main(int argc,char **argv,char **envp) {
++-                 char *b;
++-                 FILE *fp = fopen("conftest1","w");
++-                 #ifdef CAN_UNRANDOMIZE_SBRK
++-                 #include "h/unrandomize.h"
++-                 #endif
++-                 fprintf(fp,"%d",((long) &b) > ((long) foo()) ? -1 : 1);
++-                 fclose(fp);
++-                 return 0;
++-             }
++-_ACEOF
++-if ac_fn_c_try_run "$LINENO"; then :
++-  cstack_direction=`cat conftest1`
++-else
++-  cstack_direction=0
++-fi
++-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++-  conftest.$ac_objext conftest.beam conftest.$ac_ext
++-fi
++-
++-
++-cat >>confdefs.h <<_ACEOF
++-#define CSTACK_DIRECTION $cstack_direction
++-_ACEOF
++-
++-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cstack_direction" >&5
++-$as_echo "$cstack_direction" >&6; }
++-
++ # Check whether --enable-immfix was given.
++ if test "${enable_immfix+set}" = set; then :
++   enableval=$enable_immfix;
++@@ -7050,8 +7044,7 @@ int
++ main ()
++ {
++ 
++-             void *v;
++-             unsigned long i,j,k,l,m;
+++             unsigned long i,j,k,l;
++              FILE *fp = fopen("conftest1","w");
++ 
++              for (i=2,k=1;i;k=i,i<<=1);
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -1049,7 +1049,7 @@ AC_RUN_IFELSE(
++              FILE *f;
++              if (!(f=fopen("conftest1","w")))
++                 return -1;
++-                fprintf(f,"%u",sbrk(0));
+++                fprintf(f,"%p",sbrk(0));
++          ]])],
++     [HAVE_SBRK=1;AC_MSG_RESULT([yes])],
++     AC_MSG_RESULT([no: WARNING you must be able to emulate sbrk: as on mingw or macosx]),
++@@ -1145,7 +1145,7 @@ if test "$HAVE_SBRK" = "1" ; then
++                      #endif
++                      if (!(f=fopen("conftest1","w")))
++                         return -1;
++-                        fprintf(f,"%u",sbrk(0));
+++                        fprintf(f,"%p",sbrk(0));
++                         return 0;
++                  }
++              ]])],[SBRK=`cat conftest1`])
++@@ -1165,7 +1165,7 @@ if test "$HAVE_SBRK" = "1" ; then
++                      #include "h/unrandomize.h"
++                      #endif
++                      if (!(f=fopen("conftest1","w"))) return -1;
++-                        fprintf(f,"%u",sbrk(0));
+++                        fprintf(f,"%p",sbrk(0));
++                         return 0;
++                  }
++              ]])],[SBRK1=`cat conftest1`])
++@@ -1183,20 +1183,47 @@ if test "$HAVE_SBRK" = "1" ; then
++      AC_MSG_ERROR([exiting])
++     fi
++ fi
++-AC_MSG_CHECKING(CSTACK_ADDRESS)
+++
+++AC_MSG_CHECKING(CSTACK_DIRECTION)
++ AC_RUN_IFELSE(
++     [AC_LANG_SOURCE(
++          [[
++              #include <stdio.h>
++              #include <stdlib.h>
++-             void *
++-             foo() {
+++
+++             unsigned long w;
+++
+++             void
+++             foo(void) {
++                  int i;
++-                 return (void *)&i;
+++                 w=(unsigned long)&i;
++              }
++              
++              int
++              main(int argc,char **argv,char **envp) {
+++                 void *b;
+++                 FILE *fp = fopen("conftest1","w");
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 foo();
+++                 fprintf(fp,"%d",((unsigned long) &b) > w ? -1 : 1);
+++                 fclose(fp);
+++                 return 0;
+++             }]])],
+++    [cstack_direction=`cat conftest1`],[cstack_direction=0])
+++AC_DEFINE_UNQUOTED(CSTACK_DIRECTION,$cstack_direction,[whether C stack grows up or down])
+++AC_MSG_RESULT($cstack_direction)
+++
+++
+++AC_MSG_CHECKING(CSTACK_ADDRESS)
+++AC_RUN_IFELSE(
+++    [AC_LANG_SOURCE(
+++         [[
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             int
+++             main(int argc,char **argv,char **envp) {
++                  void *v ;
++                  FILE *fp = fopen("conftest1","w");
++                  unsigned long i,j;
++@@ -1208,13 +1235,13 @@ AC_RUN_IFELSE(
++                  j<<=$PAGEWIDTH;
++                  j<<=16;
++                  i=(unsigned long)&v;
++-                 if (foo()>i) i-=j;
++-                    j--;
++-                    i+=j;
++-                    i&=~j;
++-                    fprintf(fp,"0x%lx",i-1);
++-                    fclose(fp);
++-                    return 0;
+++                 if ($cstack_direction==1) i-=j;
+++                 j--;
+++                 i+=j;
+++                 i&=~j;
+++                 fprintf(fp,"0x%lx",i-1);
+++                 fclose(fp);
+++                 return 0;
++              }]])],
++     [cstack_address=`cat conftest1`],[cstack_address=0])
++ AC_DEFINE_UNQUOTED(CSTACK_ADDRESS,$cstack_address,[starting C stack address])
++@@ -1226,12 +1253,6 @@ AC_RUN_IFELSE(
++          [[
++              #include <stdio.h>
++              #include <stdlib.h>
++-             void *
++-             foo() {
++-                 int i;
++-                 return (void *)&i;
++-             }
++-             
++              int
++              main(int argc,char **argv,char **envp) {
++                  void *v ;
++@@ -1245,14 +1266,14 @@ AC_RUN_IFELSE(
++                  j<<=$PAGEWIDTH;
++                  j<<=16;
++                  i=(unsigned long)&v;
++-                 if (foo()>i) i-=j;
++-                    j--;
++-                    i+=j;
++-                    i&=~j;
++-                    for (j=0;(i>>j)!=(i>>(sizeof(long)*8-1));j++);
++-                        fprintf(fp,"%d",j);
++-                        fclose(fp);
++-                        return 0;
+++                 if ($cstack_direction==1) i-=j;
+++                 j--;
+++                 i+=j;
+++                 i&=~j;
+++                 for (j=0;(i>>j)!=(i>>(sizeof(long)*8-1));j++);
+++                 fprintf(fp,"%ld",j);
+++                 fclose(fp);
+++                 return 0;
++              }]])],
++     [cstack_bits=`cat conftest1`],[cstack_bits=0])
++ AC_DEFINE_UNQUOTED(CSTACK_BITS,$cstack_bits,[log starting C stack address])
++@@ -1302,33 +1323,6 @@ AC_RUN_IFELSE(
++ AC_DEFINE_UNQUOTED(CSTACK_ALIGNMENT,$cstack_alignment,[C stack alignment])
++ AC_MSG_RESULT($cstack_alignment)
++ 
++-AC_MSG_CHECKING(CSTACK_DIRECTION)
++-AC_RUN_IFELSE(
++-    [AC_LANG_SOURCE(
++-         [[
++-             #include <stdio.h>
++-             #include <stdlib.h>
++-             void *
++-             foo(void) {
++-                 int i;
++-                 return (void *)&i;
++-             }
++-             
++-             int
++-             main(int argc,char **argv,char **envp) {
++-                 char *b;
++-                 FILE *fp = fopen("conftest1","w");
++-                 #ifdef CAN_UNRANDOMIZE_SBRK
++-                 #include "h/unrandomize.h"
++-                 #endif
++-                 fprintf(fp,"%d",((long) &b) > ((long) foo()) ? -1 : 1);
++-                 fclose(fp);
++-                 return 0;
++-             }]])],
++-    [cstack_direction=`cat conftest1`],[cstack_direction=0])
++-AC_DEFINE_UNQUOTED(CSTACK_DIRECTION,$cstack_direction,[whether C stack grows up or down])
++-AC_MSG_RESULT($cstack_direction)
++-
++ AC_ARG_ENABLE([immfix],[  --enable-immfix will enable an immediate fixnum table above the C stack])
++ 
++ AC_ARG_ENABLE([fastimmfix],[  --enable-fastimmfix=XXXX will reject low immediate fixnums unless 2^XXX can be attained],,[enable_fastimmfix=64])
++@@ -1429,8 +1423,7 @@ AC_RUN_IFELSE(
++              #include <stdio.h>
++          ]],
++          [[
++-             void *v;
++-             unsigned long i,j,k,l,m;
+++             unsigned long i,j,k,l;
++              FILE *fp = fopen("conftest1","w");
++              
++              for (i=2,k=1;i;k=i,i<<=1);
++--- gcl-2.6.12.orig/h/unrandomize.h
+++++ gcl-2.6.12/h/unrandomize.h
++@@ -14,7 +14,7 @@
++     long pers = personality(READ_IMPLIES_EXEC|personality(0xffffffffUL));
++     long flag = ADDR_NO_RANDOMIZE;
++ 
++-    if (sizeof(long)==4) flag|=ADDR_LIMIT_3GB|ADDR_COMPAT_LAYOUT;
+++    if (sizeof(long)==4) flag|=ADDR_LIMIT_3GB/* |ADDR_COMPAT_LAYOUT */;
++ 
++     if (pers==-1) {printf("personality failure %d\n",errno);exit(-1);}
++     if ((pers & flag)!=flag && !getenv("GCL_UNRANDOMIZE")) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ce8c974fff29fd95a649d0d9d25357ca60257f97
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++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.
++ .
++ gcl (2.6.12-86) unstable; urgency=medium
++ .
++   * Version_2_6_13pre83
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-04-06
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4121,6 +4121,7 @@ $as_echo_n "checking working gprof... "
++                     powerpc*) if test "$host_cpu" = "powerpc64le" ; then enableval="no"; fi;;
++                     s390*) enableval="no";;#mcount smashes float args in make_shortfloat 20180313
++                     sh4*)  enableval="no";;
+++                    m68k*)  enableval="no";;
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++ #                   arm*)  if echo $canonical |grep -q hf$; then enableval="no"; fi;;#FIXME CALL and JUMP24 veneers needed for thumb 20190201 #FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -334,6 +334,7 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     powerpc*) if test "$host_cpu" = "powerpc64le" ; then enableval="no"; fi;;
++                     s390*) enableval="no";;#mcount smashes float args in make_shortfloat 20180313
++                     sh4*)  enableval="no";;
+++                    m68k*)  enableval="no";;
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++ #                   arm*)  if echo $canonical |grep -q hf$; then enableval="no"; fi;;#FIXME CALL and JUMP24 veneers needed for thumb 20190201 #FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8f38b6073b8cd46126c166b68326a1a47945c870
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,123 @@@
++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.
++ .
++ gcl (2.6.12-88) unstable; urgency=medium
++ .
++   * Source only upload
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-12-07
++
++--- gcl-2.6.12.orig/h/elf64_ppcle_reloc.h
+++++ gcl-2.6.12/h/elf64_ppcle_reloc.h
++@@ -1,9 +1,25 @@
+++#define R_PPC64_PLTSEQ  119  /*FIXME not in elf.h*/
+++#define R_PPC64_PLTCALL 120
+++
++ #define ha(x_) ((((x_) >> 16) + (((x_) & 0x8000) ? 1 : 0)) & 0xffff)
++ #define lo(x_) ((x_) & 0xffff)
++ 
++     case R_PPC64_REL16_HA: 
++       store_val(where,MASK(16),ha(s+a-p));
++       break;
+++    case R_PPC64_PLT16_HA:
+++      gote=got+sym->st_size-1;
+++      *gote=s+a;
+++      store_val(where,MASK(16),ha((ul)gote-toc->st_value));
+++      break;
+++    case R_PPC64_PLT16_LO_DS:
+++      gote=got+sym->st_size-1;
+++      *gote=s+a;
+++      store_val(where,MASK(16),lo((ul)gote-toc->st_value));/*>>2*/
+++      break;
+++    case R_PPC64_PLTSEQ:
+++    case R_PPC64_PLTCALL:
+++      break;
++     case R_PPC64_TOC16_HA: 
++       store_val(where,MASK(16),ha(s+a-toc->st_value));
++       break;
++--- gcl-2.6.12.orig/h/elf64_ppcle_reloc_special.h
+++++ gcl-2.6.12/h/elf64_ppcle_reloc_special.h
++@@ -9,16 +9,12 @@ static int tramp[]={0,0,
++ };
++ 
++ static int
++-find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
++-                 const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
++-  
++-  Shdr *sec;
+++load_trampolines(void *v,Shdr *sec,Sym *ds1) {
+++
++   Rela *r;
++   void *ve;
++   ul *u,j;
++ 
++-  massert((sec=get_section(".rela.dyn",sec1,sece,sn)));
++-
++   v+=sec->sh_offset;
++   ve=v+sec->sh_size;
++ 
++@@ -42,8 +38,25 @@ find_special_params(void *v,Shdr *sec1,S
++ }
++ 
++ static int
+++find_special_params(void *v,Shdr *sec1,Shdr *sece,const char *sn,
+++                 const char *st1,Sym *ds1,Sym *dse,Sym *sym,Sym *syme) {
+++
+++  Shdr *sec;
+++
+++  massert((sec=get_section(".rela.dyn",sec1,sece,sn)));
+++  massert(!load_trampolines(v,sec,ds1));
+++  if ((sec=get_section(".rela.plt",sec1,sece,sn)))
+++    massert(!load_trampolines(v,sec,ds1));
+++
+++  return 0;
+++
+++}
+++
+++static int
++ label_got_symbols(void *v1,Shdr *sec1,Shdr *sece,Sym *sym1,Sym *syme,const char *st1,const char *sn,ul *gs) {
++ 
+++  Rela *r;
+++  void *v,*ve;
++   Shdr *sec;
++   Sym *sym;
++   
++@@ -58,6 +71,22 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++     }
++   }
++ 
+++  for (sym=sym1;sym<syme;sym++)
+++   sym->st_size=0;
+++
+++  for (*gs=0,sec=sec1;sec<sece;sec++)
+++    if (sec->sh_type==SHT_RELA)
+++      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
+++     if (ELF_R_TYPE(r->r_info)==R_PPC64_PLT16_HA||
+++         ELF_R_TYPE(r->r_info)==R_PPC64_PLT16_LO_DS) {
+++
+++       sym=sym1+ELF_R_SYM(r->r_info);
+++
+++       if (!sym->st_size)
+++         sym->st_size=++*gs;
+++
+++     }
+++
++   return 0;
++   
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9bc68f2af3e35a3f6a49e67960464ad7a4e68b5b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++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.
++ .
++ gcl (2.6.12-88) unstable; urgency=medium
++ .
++   * Source only upload
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-12-07
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4194,6 +4194,7 @@ case $use in
++              ;;
++          powerpc*)
++              assert_arg_to_cflags -mlongcall
+++             if test "$host_cpu" != "powerpc64le" ; then assert_arg_to_cflags -mno-pltseq; fi
++              ;;
++      esac;;
++ esac
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -401,6 +401,7 @@ case $use in
++              ;;
++          powerpc*) 
++              assert_arg_to_cflags -mlongcall
+++             if test "$host_cpu" != "powerpc64le" ; then assert_arg_to_cflags -mno-pltseq; fi
++              ;;
++      esac;;
++ esac
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b38d6b4515861f713cfcad35b59ec930e190244f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,89 @@@
++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.
++ .
++ gcl (2.6.12-89) unstable; urgency=medium
++ .
++   * Bug fix: "gcl - FTBFS on ppc64el - invalid relocation type 31", thanks
++     to thierry.fauck@fr.ibm.com</a>; (Closes: #942312).
++   * Bug fix: "FTBFS on ppc64el", thanks to Ivo De Decker (Closes:
++     #944651).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/942312
++Bug-Debian: https://bugs.debian.org/944651
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-12-08
++
++--- gcl-2.6.12.orig/h/elf64_ppcle_reloc.h
+++++ gcl-2.6.12/h/elf64_ppcle_reloc.h
++@@ -10,32 +10,38 @@
++     case R_PPC64_PLT16_HA:
++       gote=got+sym->st_size-1;
++       *gote=s+a;
+++      massert(toc);
++       store_val(where,MASK(16),ha((ul)gote-toc->st_value));
++       break;
++     case R_PPC64_PLT16_LO_DS:
++       gote=got+sym->st_size-1;
++       *gote=s+a;
+++      massert(toc);
++       store_val(where,MASK(16),lo((ul)gote-toc->st_value));/*>>2*/
++       break;
++     case R_PPC64_PLTSEQ:
++     case R_PPC64_PLTCALL:
++       break;
++     case R_PPC64_TOC16_HA: 
+++      massert(toc);
++       store_val(where,MASK(16),ha(s+a-toc->st_value));
++       break;
++     case R_PPC64_TOC16_LO_DS: 
+++      massert(toc);
++       store_val(where,MASK(16),lo(s+a-toc->st_value));/*>>2*/
++       break;
++     case R_PPC64_REL16_LO:
++       store_val(where,MASK(16),lo(s+a-p));
++       break;
++     case R_PPC64_TOC16_LO:
+++      massert(toc);
++       store_val(where,MASK(16),lo(s+a-toc->st_value));
++       break;
++     case R_PPC64_ADDR64:
++       store_val(where,~0L,(s+a));
++       break;
++     case R_PPC64_TOC:
+++      massert(toc);
++       store_val(where,~0L,toc->st_value);
++       break;
++     case R_PPC64_REL32:
++--- gcl-2.6.12.orig/h/elf64_ppcle_reloc_special.h
+++++ gcl-2.6.12/h/elf64_ppcle_reloc_special.h
++@@ -60,13 +60,12 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   Shdr *sec;
++   Sym *sym;
++   
++-  massert(sec=get_section(".toc",sec1,sece,sn));
++-
++-  for (sym=sym1;sym<syme;sym++) {
+++  for (toc=NULL,sym=sym1;sym<syme;sym++) {
++     const char *s=st1+sym->st_name;
++     if (!strcmp(s,".TOC.") || !strcmp(s,".toc.")) {
++       toc=sym;
++       toc->st_info=ELF_ST_INFO(STB_LOCAL,ELF_ST_TYPE(sym->st_info));
+++      massert((sec=get_section(".bss",sec1,sece,sn)));
++       toc->st_shndx=sec-sec1;
++     }
++   }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5701ceb6bc8c12d815e32936abc1c6c55de0075a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,151 @@@
++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.
++ .
++ gcl (2.6.12-90) unstable; urgency=medium
++ .
++   * Version_2_6_13pre87
++   * latest standards
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2019-12-18
++
++--- gcl-2.6.12.orig/h/pool.h
+++++ gcl-2.6.12/h/pool.h
++@@ -20,9 +20,8 @@ static struct pool {
++   ufixnum s;
++ } *Pool;
++ 
++-static struct flock pl,*plp=&pl;
++-
++-static const char *gcl_pool="/tmp/gcl_pool";
+++static struct flock f,pl,*plp=&pl;
+++static char gcl_pool[PATH_MAX];
++ 
++ static int
++ set_lock(void) {
++@@ -66,8 +65,8 @@ open_pool(void) {
++ 
++   if (pool==-1) {
++ 
++-    struct flock f;
++-
+++    massert(!home_namestring1("~",1,FN1,sizeof(FN1)));
+++    massert(snprintf(gcl_pool,sizeof(gcl_pool),"%sgcl_pool",FN1)>=0);
++     massert((pool=open(gcl_pool,O_CREAT|O_RDWR,0644))!=-1);
++     massert(!ftruncate(pool,sizeof(struct pool)));
++     massert((Pool=mmap(NULL,sizeof(struct pool),PROT_READ|PROT_WRITE,MAP_SHARED,pool,0))!=(void *)-1);
++@@ -111,6 +110,9 @@ close_pool(void) {
++ 
++ #ifndef NO_FILE_LOCKING
++   if (pool!=-1) {
+++    f.l_type=F_WRLCK;
+++    if (!fcntl(pool,F_SETLK,&f))
+++      massert(!unlink(gcl_pool));
++     register_pool(-1);
++     massert(!close(pool));
++     massert(!munmap(Pool,sizeof(struct pool)));
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1971,3 +1971,6 @@ travel_find_sharing(object,object);
++ 
++ object
++ new_cfdata(void);
+++
+++int
+++home_namestring1(const char *,int,char *,int);
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -95,16 +95,20 @@ DEFUN_NEW("UID-TO-NAME",object,fSuid_to_
++ #endif
++ }
++ 
++-DEFUN_NEW("HOME-NAMESTRING",object,fShome_namestring,SI,1,1,NONE,OO,OO,OO,OO,(object nm),"") {
+++int
+++home_namestring1(const char *n,int s,char *o,int so) {
++ 
++-#ifndef __MINGW32__
+++  #ifndef __MINGW32__
++   struct passwd *pwent,pw;
++   long r;
++ 
+++  massert(s>0);
+++  massert(*n=='~');
+++
++   massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
++   massert(r<=sizeof(GETPW_BUF));/*FIXME maybe once at image startup*/
++ 
++-  if (nm->st.st_fillp==1)
+++  if (s==1)
++ 
++     if ((pw.pw_dir=getenv("HOME")))
++       pwent=&pw;
++@@ -113,26 +117,44 @@ DEFUN_NEW("HOME-NAMESTRING",object,fShom
++ 
++   else {
++ 
++-    massert(nm->st.st_fillp<sizeof(FN2));
++-    memcpy(FN2,nm->st.st_self+1,nm->st.st_fillp-1);
++-    FN2[nm->st.st_fillp-1]=0;
+++    massert(s<sizeof(FN2));
+++    memcpy(FN2,n+1,s-1);
+++    FN2[s-1]=0;
++ 
++     massert(!getpwnam_r(FN2,&pw,GETPW_BUF,r,&pwent) && pwent);
++ 
++   }
++ 
++-  massert((r=strlen(pwent->pw_dir))+2<sizeof(FN3));
++-  memcpy(FN3,pwent->pw_dir,r);
++-  FN3[r]='/';
++-  FN3[r+1]=0;
++-  RETURN1(make_simple_string(FN3));
+++  massert((r=strlen(pwent->pw_dir))+2<so);
+++  memcpy(o,pwent->pw_dir,r);
+++  o[r]='/';
+++  o[r+1]=0;
+++  return 0;
++ #else
++-  massert(snprintf(FN1,sizeof(FN1)-1,"%s%s",getenv("SystemDrive"),getenv("HOMEPATH"))>=0);
++-  RETURN1(make_simple_string(FN1));
+++  massert(snprintf(o,so-1,"%s%s",getenv("SystemDrive"),getenv("HOMEPATH"))>=0);
+++  return 0;
++ #endif
++ 
++ }
++ 
+++
+++DEFUN_NEW("HOME-NAMESTRING",object,fShome_namestring,SI,1,1,NONE,OO,OO,OO,OO,(object nm),"") {
+++
+++  check_type_string(&nm);
+++
+++  massert(!home_namestring1(nm->st.st_self,nm->st.st_fillp,FN1,sizeof(FN1)));
+++  RETURN1(make_simple_string(FN1));
+++
+++}
+++#ifdef STATIC_FUNCTION_POINTERS
+++object
+++fShome_namestring(object x) {
+++  return FFN(fShome_namestring)(x);
+++}
+++#endif
+++
+++
+++
++ #define FILE_EXISTS_P(a_,b_) !stat(a_,&b_) && S_ISREG(b_.st_mode)
++ #define DIR_EXISTS_P(a_,b_) !stat(a_,&b_) && S_ISDIR(b_.st_mode)
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1031df65e953d416bfc8de3e6bcdcd26e6794509
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1359 @@@
++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.
++ .
++ gcl (2.6.12-8) unstable; urgency=medium
++ .
++   * Version_2_6_13pre7
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/gcl-tk/comm.c
+++++ gcl-2.6.12/gcl-tk/comm.c
++@@ -66,7 +66,7 @@ fScheck_fd_for_input(fixnum fd,fixnum ti
++ 
++ 
++ struct connection_state *
++-setup_connection_state(fd)
+++setup_connection_state(int fd)
++ { struct connection_state * res;
++   res = (void *)malloc(sizeof(struct connection_state));
++   bzero(res,sizeof(struct connection_state));
++--- gcl-2.6.12.orig/gcl-tk/guis.h
+++++ gcl-2.6.12/gcl-tk/guis.h
++@@ -4,6 +4,10 @@
++ #include <stdlib.h>
++ 
++ #define NO_PRELINK_UNEXEC_DIVERSION
+++#define IMMNUM_H
+++#define GMP_WRAPPERS_H
+++#define ERROR_H
+++
++ #include "include.h"
++ 
++ #ifdef NeXT
++--- gcl-2.6.12.orig/gmp4/mpn/x86_64/k8/redc_1.asm
+++++ gcl-2.6.12/gmp4/mpn/x86_64/k8/redc_1.asm
++@@ -114,7 +114,7 @@ ifdef(`PIC',`
++ 
++      JUMPTABSECT
++      ALIGN(8)
++-L(tab):      JMPENT( L(0m4), L(tab))
+++L(tab):      JMPENT( L(0), L(tab))
++      JMPENT( L(1), L(tab))
++      JMPENT( L(2), L(tab))
++      JMPENT( L(3), L(tab))
++@@ -397,6 +397,7 @@ L(le1):   add     %r10, (up)
++ 
++ 
++      ALIGN(16)
+++L(0):
++ L(0m4):
++ L(lo0):      mov     (mp,nneg,8), %rax
++      mov     nneg, i
++--- gcl-2.6.12.orig/h/att_ext.h
+++++ gcl-2.6.12/h/att_ext.h
++@@ -29,7 +29,7 @@ void *malloc(size_t);
++ void *realloc(void *,size_t);
++ /* void * memalign(size_t,size_t); */
++ void *alloc_contblock(size_t);
++-inline void *alloc_relblock(size_t);
+++void *alloc_relblock(size_t);
++ /* object fSallocate_contiguous_pages(); */
++ /* object fSallocate_relocatable_pages(); */
++ 
++@@ -291,9 +291,7 @@ EXTER object sSAsystem_directoryA;
++ #ifdef UNIX
++ EXTER char *kcl_self;
++ #endif
++-#if !defined(IN_MAIN) || !defined(ATT)
++ EXTER bool raw_image;
++-#endif
++ char *merge_system_directory();
++ 
++ 
++--- gcl-2.6.12.orig/h/cmpincl1.h
+++++ gcl-2.6.12/h/cmpincl1.h
++@@ -1,2 +1 @@
++-#define EXTER extern
++ #define CMPINCLUDE
++--- gcl-2.6.12.orig/h/compbas.h
+++++ gcl-2.6.12/h/compbas.h
++@@ -1,2 +1,12 @@
++ #include <stdarg.h>
++ #define _VA_LIST_DEFINED
+++#ifndef EXTER
+++#define EXTER extern
+++#endif
+++#ifndef INLINE
+++#if defined(__GNUC__) && __GNUC__ <= 4
+++#define INLINE extern inline
+++#else
+++#define INLINE inline
+++#endif
+++#endif
++--- gcl-2.6.12.orig/h/error.h
+++++ gcl-2.6.12/h/error.h
++@@ -1,4 +1,7 @@
++-#define Icall_error_handler(a_,b_,c_,d_...) \
+++#ifndef ERROR_H
+++#define ERROR_H
+++
+++#define Icall_error_handler(a_,b_,c_,d_...)                  \
++   Icall_gen_error_handler(Cnil,null_string,a_,b_,c_,##d_)
++ #define Icall_continue_error_handler(a_,b_,c_,d_,e_...) \
++   Icall_gen_error_handler(Ct,a_,b_,c_,d_,##e_)
++@@ -8,12 +11,8 @@ extern enum type t_vtype;
++ extern int vtypep_fn(object);
++ extern void Check_type(object *,int (*)(object),object);
++ 
+++#define PFN(a_) INLINE int Join(a_,_fn)(object x) {return a_(x);}
++ 
++-#ifdef IN_MAIN
++-#define PFN(a_) int Join(a_,_fn)(object x) {return a_(x);}
++-#else
++-#define PFN(a_) extern int Join(a_,_fn)(object x);
++-#endif
++ PFN(integerp)
++ PFN(non_negative_integerp)
++ PFN(rationalp)
++@@ -201,3 +200,4 @@ object ihs_top_function_name(ihs_ptr h);
++    abort();\
++  })
++ 
+++#endif /*ERROR_H*/
++--- gcl-2.6.12.orig/h/gmp_wrappers.h
+++++ gcl-2.6.12/h/gmp_wrappers.h
++@@ -1,12 +1,8 @@
++-#ifndef GMP_EXTERN
++-#define GMP_EXTERN extern
++-#endif
++-#ifndef GMP_EXTERN_INLINE
++-#define GMP_EXTERN_INLINE GMP_EXTERN __inline__
++-#endif
+++#ifndef GMP_WRAPPERS_H
+++#define GMP_WRAPPERS_H
++ 
++-GMP_EXTERN jmp_buf gmp_jmp;
++-GMP_EXTERN int jmp_gmp,gmp_relocatable;
+++EXTER jmp_buf gmp_jmp;
+++EXTER int jmp_gmp,gmp_relocatable;
++ 
++ #define join(a_,b_) a_ ## b_
++ #define Join(a_,b_) join(a_,b_)
++@@ -95,7 +91,7 @@ GMP_EXTERN int jmp_gmp,gmp_relocatable;
++    set to -1 otherwise.  20040815 CM*/
++ 
++ #define MEM_GMP_CALL(n_,rt_,a_,s_,b_...) \
++-   GMP_EXTERN_INLINE Join(RF_,rt_) Join(m,a_)(Join(P,n_)(b_)) { \
+++   INLINE Join(RF_,rt_) Join(m,a_)(Join(P,n_)(b_)) { \
++            int j;\
++            Join(RD_,rt_);\
++            if (gmp_relocatable) {\
++@@ -195,3 +191,5 @@ MEM_GMP_CALL(2,size_t,mpz_sizeinbase,0,m
++ /*#define __gmpz_realloc m__gmpz_realloc*/
++ #define __gmpz_size m__gmpz_size
++ #define __gmpz_sizeinbase m__gmpz_sizeinbase
+++
+++#endif /*GMP_WRAPPERS_H*/
++--- gcl-2.6.12.orig/h/immnum.h
+++++ gcl-2.6.12/h/immnum.h
++@@ -17,10 +17,10 @@
++ #define iif2(x,y) is_imm_fixnum2(x,y)
++ 
++ 
++-EXTER inline fixnum
+++INLINE fixnum
++ lnabs(fixnum x) {return x<0 ? ~x : x;}
++ 
++-EXTER inline char
+++INLINE char
++ clz(ufixnum x) {
++ #ifdef HAVE_CLZL
++   return x ? __builtin_clzl(x) : sizeof(x)*8;
++@@ -29,7 +29,7 @@ clz(ufixnum x) {
++ #endif
++ }
++ 
++-EXTER inline char
+++INLINE char
++ ctz(ufixnum x) {
++ #ifdef HAVE_CTZL
++   return __builtin_ctzl(x);/*x ? __builtin_clzl(x) : sizeof(x)*8;*/
++@@ -38,10 +38,10 @@ ctz(ufixnum x) {
++ #endif
++ }
++ 
++-EXTER inline char
+++INLINE char
++ fixnum_length(fixnum x) {return sizeof(x)*8-clz(lnabs(x));}
++ 
++-EXTER inline object
+++INLINE object
++ immnum_length(object x) {return iif(x) ? mif(fixnum_length(fif(x))) : integer_length(x);}
++ 
++ 
++@@ -57,7 +57,7 @@ immnum_length(object x) {return iif(x) ?
++ #define POPD 0x3F
++ #endif
++ 
++-EXTER inline char
+++INLINE char
++ fixnum_popcount(ufixnum x) {
++   x-=POPA&(x>>1);
++   x=(x&POPB)+((x>>2)&POPB);
++@@ -70,33 +70,33 @@ fixnum_popcount(ufixnum x) {
++   return x&POPD;
++ }
++ 
++-EXTER inline char
+++INLINE char
++ /* fixnum_count(fixnum x) {return __builtin_popcountl(lnabs(x));} */
++ fixnum_count(fixnum x) {return fixnum_popcount(lnabs(x));}
++ 
++-EXTER inline object
+++INLINE object
++ immnum_count(object x) {return iif(x) ? mif(fixnum_count(fif(x))) : integer_count(x);}
++ 
++ /*bs=sizeof(long)*8;
++   lb=bs-clz(labs(x));|x*y|=|x|*|y|<2^(lbx+lby)<2^(bs-1);
++   0 bounded by 2^0, +-1 by 2^1,mpf by 2^(bs-1), which is sign bit
++   protect labs from most negative fix, here all immfix ok*/
++-EXTER inline bool
+++INLINE bool
++ fixnum_mul_safe_abs(fixnum x,fixnum y) {return clz(x)+clz(y)>sizeof(x)*8+1;}
++-EXTER inline object
+++INLINE object
++ safe_mul_abs(fixnum x,fixnum y) {return fixnum_mul_safe_abs(x,y) ? make_fixnum(x*y) : fixnum_times(x,y);}
++-EXTER inline bool
+++INLINE bool
++ fixnum_mul_safe(fixnum x,fixnum y) {return fixnum_mul_safe_abs(labs(x),labs(y));}
++-EXTER inline object
+++INLINE object
++ safe_mul(fixnum x,fixnum y) {return fixnum_mul_safe(x,y) ? make_fixnum(x*y) : fixnum_times(x,y);}
++-EXTER inline object
+++INLINE object
++ immnum_times(object x,object y) {return iif2(x,y) ? safe_mul(fif(x),fif(y)) : number_times(x,y);}
++ 
++-EXTER inline object
+++INLINE object
++ immnum_plus(object x,object y) {return iif2(x,y) ? make_fixnum(fif(x)+fif(y)) : number_plus(x,y);}
++-EXTER inline object
+++INLINE object
++ immnum_minus(object x,object y) {return iif2(x,y) ? make_fixnum(fif(x)-fif(y)) : number_minus(x,y);}
++-EXTER inline object
+++INLINE object
++ immnum_negate(object x) {return iif(x) ? make_fixnum(-fif(x)) : number_negate(x);}
++ 
++ #define BOOLCLR              0
++@@ -116,7 +116,7 @@ immnum_negate(object x) {return iif(x) ?
++ #define BOOLORC1     015
++ #define BOOLORC2     013
++ 
++-EXTER inline fixnum
+++INLINE fixnum
++ fixnum_boole(fixnum op,fixnum x,fixnum y) {
++   switch(op) {
++   case BOOLCLR:       return 0;
++@@ -139,7 +139,7 @@ fixnum_boole(fixnum op,fixnum x,fixnum y
++   return 0;/*FIXME error*/
++ }
++   
++-EXTER inline object
+++INLINE object
++ immnum_boole(fixnum o,object x,object y) {return iif2(x,y) ? mif(fixnum_boole(o,fif(x),fif(y))) : log_op2(o,x,y);}
++ 
++ #define immnum_bool(o,x,y) immnum_boole(fixint(o),x,y)
++@@ -156,93 +156,93 @@ immnum_boole(fixnum o,object x,object y)
++ #define immnum_orc1(x,y)  immnum_boole(BOOLORC1,x,y)
++ #define immnum_orc2(x,y)  immnum_boole(BOOLORC2,x,y)
++ 
++-EXTER inline fixnum
+++INLINE fixnum
++ fixnum_div(fixnum x,fixnum y,fixnum d) {
++   fixnum z=x/y;
++   if (d && x!=y*z && (x*d>0 ? y>0 : y<0))
++     z+=d;
++   return z;
++ }
++-EXTER inline fixnum
+++INLINE fixnum
++ fixnum_rem(fixnum x,fixnum y,fixnum d) {
++   fixnum z=x%y;
++   if (d && z && (x*d>0 ? y>0 : y<0))
++     z+=y;
++   return z;
++ }
++-EXTER inline object
+++INLINE object
++ immnum_truncate(object x,object y) {return iif2(x,y)&&y!=make_fixnum(0) ? mif(fixnum_div(fif(x),fif(y),0)) : (intdivrem(x,y,0,&x,NULL),x);}
++-EXTER inline object
+++INLINE object
++ immnum_floor(object x,object y) {return iif2(x,y)&&y!=make_fixnum(0) ? mif(fixnum_div(fif(x),fif(y),-1)) : (intdivrem(x,y,-1,&x,NULL),x);}
++-EXTER inline object
+++INLINE object
++ immnum_ceiling(object x,object y) {return iif2(x,y)&&y!=make_fixnum(0) ? mif(fixnum_div(fif(x),fif(y),1)) : (intdivrem(x,y,1,&x,NULL),x);}
++-EXTER inline object
+++INLINE object
++ immnum_mod(object x,object y) {return iif2(x,y)&&y!=make_fixnum(0) ? mif(fixnum_rem(fif(x),fif(y),-1)) : (intdivrem(x,y,-1,NULL,&y),y);}
++-EXTER inline object
+++INLINE object
++ immnum_rem(object x,object y) {return iif2(x,y)&&y!=make_fixnum(0) ? mif(fixnum_rem(fif(x),fif(y),0)) : (intdivrem(x,y,0,NULL,&y),y);}
++ 
++-EXTER inline fixnum
+++INLINE fixnum
++ fixnum_rshft(fixnum x,fixnum y) {
++   return y>=sizeof(x)*8 ? (x<0 ? -1 : 0) : x>>y;
++ }
++-EXTER inline object
+++INLINE object
++ fixnum_lshft(fixnum x,fixnum y) {
++   return clz(labs(x))>y ? make_fixnum(x<<y) : (x ? fixnum_big_shift(x,y) : make_fixnum(0));
++ }
++-EXTER inline object
+++INLINE object
++ fixnum_shft(fixnum x,fixnum y) {
++   return y<0 ? make_fixnum(fixnum_rshft(x,-y)) : fixnum_lshft(x,y);
++ }
++-EXTER inline object
+++INLINE object
++ immnum_shft(object x,object y) {return iif2(x,y) ? fixnum_shft(fif(x),fif(y)) : integer_shift(x,y);}
++ 
++-EXTER inline bool
+++INLINE bool
++ fixnum_bitp(fixnum p,fixnum x) {return fixnum_rshft(x,p)&0x1;}
++ 
++-EXTER inline bool
+++INLINE bool
++ immnum_bitp(object x,object y) {return iif2(x,y) ? fixnum_bitp(fif(x),fif(y)) : integer_bitp(x,y);}
++ 
++ 
++ #define immnum_comp(x,y,c) iif2(x,y) ? (x c y) : (number_compare(x,y) c 0)
++ 
++-EXTER inline bool
+++INLINE bool
++ immnum_lt(object x,object y) {return immnum_comp(x,y,<);}
++-EXTER inline bool
+++INLINE bool
++ immnum_le(object x,object y) {return immnum_comp(x,y,<=);}
++-EXTER inline bool
+++INLINE bool
++ immnum_eq(object x,object y) {return immnum_comp(x,y,==);}
++-EXTER inline bool
+++INLINE bool
++ immnum_ne(object x,object y) {return immnum_comp(x,y,!=);}
++-EXTER inline bool
+++INLINE bool
++ immnum_gt(object x,object y) {return immnum_comp(x,y,>);}
++-EXTER inline bool
+++INLINE bool
++ immnum_ge(object x,object y) {return immnum_comp(x,y,>=);}
++ 
++-EXTER inline bool
+++INLINE bool
++ immnum_minusp(object x) {return iif(x) ? ((ufixnum)x)<((ufixnum)make_fixnum(0)) : number_minusp(x);}
++-EXTER inline bool
+++INLINE bool
++ immnum_plusp(object x) {return iif(x) ? ((ufixnum)x)>((ufixnum)make_fixnum(0)) : number_plusp(x);}
++-EXTER inline bool
+++INLINE bool
++ immnum_zerop(object x) {return iif(x) ? ((ufixnum)x)==((ufixnum)make_fixnum(0)) : number_zerop(x);}
++-EXTER inline bool
+++INLINE bool
++ immnum_evenp(object x) {return iif(x) ? !(((ufixnum)x)&0x1) : number_evenp(x);}
++-EXTER inline bool
+++INLINE bool
++ immnum_oddp(object x) {return iif(x) ? (((ufixnum)x)&0x1) : number_oddp(x);}
++ 
++-EXTER inline object
+++INLINE object
++ immnum_signum(object x) {
++   ufixnum ux=(ufixnum)x,uz=((ufixnum)make_fixnum(0));
++   return iif(x) ? (ux<uz ? mif(-1) : (ux==uz ? mif(0) : mif(1))) : number_signum(x);
++ }
++-EXTER inline object
+++INLINE object
++ immnum_abs(object x) {return iif(x) ? make_fixnum(labs(fif(x))) : number_abs(x);}
++ 
++-EXTER inline fixnum
+++INLINE fixnum
++ fixnum_ldb(fixnum s,fixnum p,fixnum i) {
++   return ((1UL<<s)-1)&fixnum_rshft(i,p);
++ }
++ 
++-EXTER inline object
+++INLINE object
++ immnum_ldb(object x,object i) {
++   if (iif(i))
++     if (consp(x)) {
++@@ -256,7 +256,7 @@ immnum_ldb(object x,object i) {
++   return number_ldb(x,i);
++ }
++ 
++-EXTER inline bool
+++INLINE bool
++ immnum_ldbt(object x,object i) {
++   if (iif(i))
++     if (consp(x)) {
++@@ -270,13 +270,13 @@ immnum_ldbt(object x,object i) {
++   return number_ldbt(x,i)!=Cnil;
++ }
++ 
++-EXTER inline fixnum
+++INLINE fixnum
++ fixnum_dpb(fixnum s,fixnum p,fixnum n,fixnum i) {
++   fixnum z=(1UL<<s)-1;
++   return (i&~(z<<p))|((n&z)<<p);
++ }
++ 
++-EXTER inline object
+++INLINE object
++ immnum_dpb(object n,object x,object i) {
++   if (iif2(n,i))
++     if (consp(x)) {
++@@ -290,13 +290,13 @@ immnum_dpb(object n,object x,object i) {
++   return number_dpb(n,x,i);
++ }
++ 
++-EXTER inline fixnum
+++INLINE fixnum
++ fixnum_dpf(fixnum s,fixnum p,fixnum n,fixnum i) {
++   fixnum z=((1UL<<s)-1)<<p;
++   return (i&~z)|(n&z);
++ }
++ 
++-EXTER inline object
+++INLINE object
++ immnum_dpf(object n,object x,object i) {
++   if (iif2(n,i))
++     if (consp(x)) {
++@@ -310,15 +310,15 @@ immnum_dpf(object n,object x,object i) {
++   return number_dpf(n,x,i);
++ }
++ 
++-EXTER inline object
+++INLINE object
++ immnum_max(object x,object y) {return iif2(x,y) ? ((ufixnum)x>=(ufixnum)y ? x : y) : (number_compare(x,y)>=0?x:y);}
++-EXTER inline object
+++INLINE object
++ immnum_min(object x,object y) {return iif2(x,y) ? ((ufixnum)x<=(ufixnum)y ? x : y) : (number_compare(x,y)<=0?x:y);}
++ 
++-EXTER inline bool
+++INLINE bool
++ immnum_logt(object x,object y) {return iif2(x,y) ? fixnum_boole(BOOLAND,fif(x),fif(y))!=0 : !number_zerop(log_op2(BOOLAND,x,y));}
++ 
++-EXTER inline fixnum
+++INLINE fixnum
++ fixnum_gcd(fixnum x,fixnum y) {
++ 
++   fixnum t;
++@@ -343,16 +343,16 @@ fixnum_gcd(fixnum x,fixnum y) {
++ 
++ }
++ 
++-EXTER inline object
+++INLINE object
++ immnum_gcd(object x,object y) {return iif2(x,y) ? mif(fixnum_gcd(labs(fif(x)),labs(fif(y)))) : get_gcd(x,y);}
++ 
++-EXTER inline object
+++INLINE object
++ fixnum_lcm(fixnum x,fixnum y) {
++   fixnum g=fixnum_gcd(x,y);
++   return g ? safe_mul_abs(x,fixnum_div(y,g,0)) : make_fixnum(0);
++ }
++ 
++-EXTER inline object
+++INLINE object
++ immnum_lcm(object x,object y) {return iif2(x,y) ? fixnum_lcm(labs(fif(x)),labs(fif(y))) : get_lcm(x,y);}
++ 
++ #endif
++--- gcl-2.6.12.orig/h/include.h
+++++ gcl-2.6.12/h/include.h
++@@ -87,12 +87,6 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #define      isalphanum(x)   isalnum(x)
++ #endif
++ 
++-#ifdef IN_MAIN
++-#define EXTER
++-#else
++-#define EXTER extern 
++-#endif
++-
++ #if defined(GMP) || defined(NEED_MP_H)
++ #include "../h/mp.h"
++ #endif
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -28,10 +28,7 @@ EXTER long real_maxpage;
++ char *getenv();
++ EXTER char *this_lisp;
++ 
++-#ifndef IN_MAIN
++-EXTER
++-char stdin_buf[], stdout_buf[];
++-#endif
+++EXTER char stdin_buf[],stdout_buf[];
++ 
++ EXTER object user_package;
++ 
++--- gcl-2.6.12.orig/h/page.h
+++++ gcl-2.6.12/h/page.h
++@@ -106,7 +106,7 @@ extern fixnum writable_pages;
++ EXTER long first_data_page,real_maxpage,phys_pages,available_pages;
++ EXTER void *data_start,*initial_sbrk;
++ 
++-#if !defined(IN_MAIN) && defined(SGC)
+++#if defined(SGC)
++ #include "writable.h"
++ #endif
++ 
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1,13 +1,12 @@
++ /* alloc.c:89:OF */ extern void *alloc_page (long n); /* (n) int n; */
++-/* alloc.c:149:OF */ inline void add_page_to_freelist (char *p, struct typemanager *tm); /* (p, tm) char *p; struct typemanager *tm; */
++ /* alloc.c:196:OF */ extern object type_name (int t); /* (t) int t; */
++-/* alloc.c:213:OF */ inline object alloc_object (enum type t); /* (t) enum type t; */
++-/* alloc.c:213:OF */ inline void add_pages(struct typemanager *,fixnum);
++-/* alloc.c:296:OF */ extern inline object make_cons (object a, object d); /* (a, d) object a; object d; */
+++/* alloc.c:213:OF */ object alloc_object (enum type t); /* (t) enum type t; */
+++/* alloc.c:213:OF */ void add_pages(struct typemanager *,fixnum);
+++/* alloc.c:296:OF */ extern object make_cons (object a, object d); /* (a, d) object a; object d; */
++ /* alloc.c:364:OF */ extern object on_stack_cons (object x, object y); /* (x, y) object x; object y; */
++ /* alloc.c:376:OF */ extern object fSallocated (object typ); /* (typ) object typ; */
++ /* alloc.c:401:OF */ extern object fSreset_number_used (object typ); /* (typ) object typ; */
++-/* alloc.c:480:OF */ extern inline void insert_contblock (void *p, ufixnum s); /* (p, s) char *p; int s; */
+++/* alloc.c:480:OF */ extern void insert_contblock (void *p, ufixnum s); /* (p, s) char *p; int s; */
++ /* alloc.c:480:OF */ extern void insert_maybe_sgc_contblock (char *p, int s); /* (p, s) char *p; int s; */
++ /* alloc.c:611:OF */ extern void set_maxpage (void); /* () */
++ /* alloc.c:635:OF */ extern void gcl_init_alloc (void *); /* () */
++@@ -1841,43 +1840,40 @@ struct htent *gethash(object,object);
++ int
++ update_real_maxpage(void);
++ 
++-inline fixnum
+++fixnum
++ set_tm_maxpage(struct typemanager *,fixnum);
++ 
++ void
++ init_gmp_rnd_state(__gmp_randstate_struct *);
++ 
++-inline void
++-set_sgc_bit(struct pageinfo *,void *);
++-
++ void
++ reinit_gmp(void);
++ 
++ object
++ mod(object,object);
++ 
++-inline void
+++void
++ intdivrem(object,object,fixnum,object *,object *);
++ 
++-inline object
+++object
++ integer_count(object);
++ 
++-inline object
+++object
++ integer_length(object);
++ 
++-inline bool
+++bool
++ integer_bitp(object,object);
++ 
++-inline object 
+++object 
++ fixnum_times(fixnum,fixnum);
++ 
++-inline object
+++object
++ log_op2(fixnum,object,object);
++ 
++-inline object
+++object
++ fixnum_big_shift(fixnum,fixnum);
++ 
++-inline object
+++object
++ integer_shift(object,object);
++ 
++ object
++@@ -1921,22 +1917,19 @@ sigint(void);
++ void
++ allocate_code_block_reserve(void);
++ 
++-inline void
++-resize_hole(ufixnum,enum type);
++-
++-inline void *
+++void *
++ alloc_contblock_no_gc(size_t);
++ 
++-inline void
+++void
++ reset_contblock_freelist(void);
++ 
++-inline void
+++void
++ empty_relblock(void);
++ 
++ fixnum
++ check_avail_pages(void);
++ 
++-inline int
+++int
++ mbrk(void *);
++ 
++ void
++@@ -1948,5 +1941,8 @@ alloc_code_space(size_t);
++ object 
++ fSmake_vector1_2(fixnum,fixnum,object,object);
++ 
++-inline struct pageinfo *
+++struct pageinfo *
++ get_pageinfo(void *);
+++
+++void
+++add_page_to_freelist(char *, struct typemanager *);
++--- gcl-2.6.12.orig/h/writable.h
+++++ gcl-2.6.12/h/writable.h
++@@ -1,7 +1,7 @@
++ EXTER fixnum last_page;
++ EXTER int last_result;
++ 
++-EXTER inline int
+++INLINE int
++ set_writable(fixnum i,bool m) {
++ 
++   fixnum j;
++@@ -32,7 +32,7 @@ set_writable(fixnum i,bool m) {
++ 
++ }
++ 
++-EXTER inline int
+++INLINE int
++ is_writable(fixnum i) {
++ 
++   fixnum j;
++@@ -51,7 +51,7 @@ is_writable(fixnum i) {
++   
++ }
++ 
++-EXTER inline int
+++INLINE int
++ is_writable_cached(fixnum i) {
++ 
++   if (last_page==i)
++--- gcl-2.6.12.orig/makefile
+++++ gcl-2.6.12/makefile
++@@ -265,7 +265,7 @@ $(HDIR)new_decl.h:
++ 
++ $(HDIR)mcompdefs.h: $(HDIR)compdefs.h $(HDIR)new_decl.h
++      $(AWK) 'BEGIN {print "#include \"include.h\"";print "#include \"cmponly.h\"";print "---"} {a=$$1;gsub("\\.\\.\\.","",a);print "\"#define " $$1 "\" " a}' $< |\
++-     $(CC) -E -I./$(HDIR) - |\
+++     $(CC) -E -P -I./$(HDIR) - |\
++      $(AWK) '/^\-\-\-$$/ {i=1;next} {if (!i) next} {gsub("\"","");print}' >$@
++ 
++ $(HDIR)cmpinclude.h: $(HDIR)mcompdefs.h $(CMPINCLUDE_FILES) $(HDIR)config.h
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -134,7 +134,7 @@ acomp(const void *v1,const void *v2) {
++ 
++ }
++ 
++-inline struct pageinfo *
+++struct pageinfo *
++ get_pageinfo(void *x) {
++ 
++   struct pageinfo **pp=bsearchleq(&x,contblock_array->v.v_self,contblock_array->v.v_fillp,sizeof(*contblock_array->v.v_self),acomp);
++@@ -144,7 +144,7 @@ get_pageinfo(void *x) {
++ 
++ }
++ 
++-inline void
+++static inline void
++ add_page_to_contblock_list(void *p,fixnum m) {
++  
++   struct pageinfo *pp=pageinfo(p);
++@@ -176,7 +176,70 @@ icomp(const void *v1,const void *v2) {
++   return *f1<*f2 ? -1 : *f1==*f2 ? 0 : +1;
++ }
++ 
++-inline void
+++
+++void
+++add_page_to_freelist(char *p, struct typemanager *tm) {
+++
+++  short t,size;
+++  long i=tm->tm_nppage,fw;
+++  object x,f;
+++  struct pageinfo *pp;
+++
+++ t=tm->tm_type;
+++
+++ size=tm->tm_size;
+++ f=tm->tm_free;
+++ pp=pageinfo(p);
+++ bzero(pp,sizeof(*pp));
+++ pp->type=t;
+++ pp->magic=PAGE_MAGIC;
+++
+++ if (cell_list_head==NULL) 
+++   cell_list_tail=cell_list_head=pp;
+++ else if (pp > cell_list_tail) {
+++   cell_list_tail->next=pp;
+++   cell_list_tail=pp;
+++ }
+++
+++ x= (object)pagetochar(page(p));
+++ /* set_type_of(x,t); */
+++ make_free(x);
+++
+++#ifdef SGC
+++
+++ if (sgc_enabled && tm->tm_sgc)
+++   pp->sgc_flags=SGC_PAGE_FLAG;
+++
+++#ifndef SGC_WHOLE_PAGE
+++ if (TYPEWORD_TYPE_P(pp->type))
+++   x->d.s=(sgc_enabled && tm->tm_sgc) ? SGC_RECENT : SGC_NORMAL;
+++#endif
+++
+++ /* array headers must be always writable, since a write to the
+++    body does not touch the header.   It may be desirable if there
+++    are many arrays in a system to make the headers not writable,
+++    but just SGC_TOUCH the header each time you write to it.   this
+++    is what is done with t_structure */
+++  if (t==(tm_of(t_array)->tm_type))
+++    pp->sgc_flags|=SGC_PERM_WRITABLE;
+++   
+++#endif 
+++
+++ fw= *(fixnum *)x;
+++ while (--i >= 0) {
+++   *(fixnum *)x=fw;
+++   SET_LINK(x,f);
+++   f=x;
+++   x= (object) ((char *)x + size);
+++ }
+++
+++ tm->tm_free=f;
+++ tm->tm_nfree += tm->tm_nppage;
+++ tm->tm_npage++;
+++
+++}
+++
+++static inline void
++ maybe_reallocate_page(struct typemanager *ntm,ufixnum count) {
++ 
++   void **y,**n;
++@@ -248,7 +311,7 @@ int reserve_pages_for_signal_handler=30;
++    reserve_pages_for_signal_handler pages on hand in the hole
++  */
++ 
++-inline void
+++void
++ empty_relblock(void) {
++ 
++   object o=sSAleaf_collection_thresholdA->s.s_dbind;
++@@ -262,7 +325,7 @@ empty_relblock(void) {
++ 
++ }
++ 
++-inline void
+++static inline void
++ resize_hole(ufixnum hp,enum type tp) {
++   
++   char *new_start=heap_end+hp*PAGESIZE;
++@@ -283,7 +346,7 @@ resize_hole(ufixnum hp,enum type tp) {
++   
++ }
++ 
++-inline void *
+++void *
++ alloc_page(long n) {
++ 
++   bool s=n<0;
++@@ -332,7 +395,7 @@ alloc_page(long n) {
++ 
++ struct pageinfo *cell_list_head=NULL,*cell_list_tail=NULL;;
++ 
++-inline ufixnum
+++static inline ufixnum
++ sum_maxpages(void) {
++ 
++   ufixnum i,j;
++@@ -352,7 +415,7 @@ check_avail_pages(void) {
++ }
++ 
++ 
++-inline fixnum
+++fixnum
++ set_tm_maxpage(struct typemanager *tm,fixnum n) {
++   
++   fixnum r=tm->tm_type==t_relocatable,j=tm->tm_maxpage,z=(n-j)*(r ? 2 : 1);
++@@ -365,69 +428,6 @@ set_tm_maxpage(struct typemanager *tm,fi
++   return 1;
++ }
++   
++-
++-inline void
++-add_page_to_freelist(char *p, struct typemanager *tm) {
++-
++-  short t,size;
++-  long i=tm->tm_nppage,fw;
++-  object x,f;
++-  struct pageinfo *pp;
++-
++- t=tm->tm_type;
++-
++- size=tm->tm_size;
++- f=tm->tm_free;
++- pp=pageinfo(p);
++- bzero(pp,sizeof(*pp));
++- pp->type=t;
++- pp->magic=PAGE_MAGIC;
++-
++- if (cell_list_head==NULL) 
++-   cell_list_tail=cell_list_head=pp;
++- else if (pp > cell_list_tail) {
++-   cell_list_tail->next=pp;
++-   cell_list_tail=pp;
++- }
++-
++- x= (object)pagetochar(page(p));
++- /* set_type_of(x,t); */
++- make_free(x);
++-
++-#ifdef SGC
++-
++- if (sgc_enabled && tm->tm_sgc)
++-   pp->sgc_flags=SGC_PAGE_FLAG;
++-
++-#ifndef SGC_WHOLE_PAGE
++- if (TYPEWORD_TYPE_P(pp->type))
++-   x->d.s=(sgc_enabled && tm->tm_sgc) ? SGC_RECENT : SGC_NORMAL;
++-#endif
++-
++- /* array headers must be always writable, since a write to the
++-    body does not touch the header.   It may be desirable if there
++-    are many arrays in a system to make the headers not writable,
++-    but just SGC_TOUCH the header each time you write to it.   this
++-    is what is done with t_structure */
++-  if (t==(tm_of(t_array)->tm_type))
++-    pp->sgc_flags|=SGC_PERM_WRITABLE;
++-   
++-#endif 
++-
++- fw= *(fixnum *)x;
++- while (--i >= 0) {
++-   *(fixnum *)x=fw;
++-   SET_LINK(x,f);
++-   f=x;
++-   x= (object) ((char *)x + size);
++- }
++-
++- tm->tm_free=f;
++- tm->tm_nfree += tm->tm_nppage;
++- tm->tm_npage++;
++-
++-}
++-
++ object
++ type_name(int t) {
++   return make_simple_string(tm_table[(int)t].tm_name+1);
++@@ -435,7 +435,7 @@ type_name(int t) {
++ 
++ 
++ static void
++-call_after_gbc_hook(t) {
+++call_after_gbc_hook(int t) {
++   if (sSAafter_gbc_hookA && sSAafter_gbc_hookA->s.s_dbind!= Cnil) {
++     set_up_string_register(tm_table[(int)t].tm_name+1);
++     ifuncall1(sSAafter_gbc_hookA->s.s_dbind,intern(string_register,system_package));
++@@ -536,7 +536,7 @@ rebalance_maxpages(struct typemanager *m
++ 
++ }
++ 
++-inline long
+++long
++ opt_maxpage(struct typemanager *my_tm) {
++ 
++   double x=0.0,y=0.0,z,r;
++@@ -707,7 +707,7 @@ find_contblock(ufixnum n,void **p) {
++   return find_cbpp(*p,n);
++ }
++ 
++-inline void
+++void
++ print_cb(int print) {
++ 
++   struct contblock *cbp,***cbppp,**cbpp=&cb_pointer;
++@@ -729,7 +729,7 @@ print_cb(int print) {
++ 
++ }
++   
++-inline void
+++void
++ insert_contblock(void *p,ufixnum s) {
++ 
++   struct contblock *cbp=p,**cbpp,***cbppp;
++@@ -761,7 +761,7 @@ delete_contblock(void *p,struct contbloc
++ 
++ }
++ 
++-inline void
+++void
++ reset_contblock_freelist(void) {
++ 
++   cb_pointer=NULL;
++@@ -769,7 +769,7 @@ reset_contblock_freelist(void) {
++   
++ }
++ 
++-inline void *
+++static inline void *
++ alloc_from_freelist(struct typemanager *tm,fixnum n) {
++ 
++   void *p;
++@@ -851,7 +851,7 @@ too_full_p(struct typemanager *tm) {
++ 
++ }
++ 
++-inline void *
+++static inline void *
++ alloc_after_gc(struct typemanager *tm,fixnum n) {
++ 
++   if (tm->tm_npage+tpage(tm,n)>tm->tm_maxpage && GBC_enable) {
++@@ -883,7 +883,7 @@ alloc_after_gc(struct typemanager *tm,fi
++ 
++ }
++ 
++-inline void
+++void
++ add_pages(struct typemanager *tm,fixnum m) {
++ 
++   switch (tm->tm_type) {
++@@ -923,7 +923,7 @@ add_pages(struct typemanager *tm,fixnum
++ 
++ }
++ 
++-inline void *
+++static inline void *
++ alloc_after_adding_pages(struct typemanager *tm,fixnum n) {
++   
++   fixnum m=tpage(tm,n);
++@@ -945,7 +945,7 @@ alloc_after_adding_pages(struct typemana
++ 
++ }
++ 
++-inline void *
+++static inline void *
++ alloc_after_reclaiming_pages(struct typemanager *tm,fixnum n) {
++ 
++   fixnum m=tpage(tm,n),reloc_min;
++@@ -972,10 +972,10 @@ alloc_after_reclaiming_pages(struct type
++ 
++ }
++ 
++-inline void *alloc_mem(struct typemanager *,fixnum);
+++static inline void *alloc_mem(struct typemanager *,fixnum);
++ 
++ #ifdef SGC
++-inline void *
+++static inline void *
++ alloc_after_turning_off_sgc(struct typemanager *tm,fixnum n) {
++ 
++   if (!sgc_enabled) return NULL;
++@@ -985,7 +985,7 @@ alloc_after_turning_off_sgc(struct typem
++ }
++ #endif
++ 
++-inline void *
+++static inline void *
++ alloc_mem(struct typemanager *tm,fixnum n) {
++ 
++   void *p;
++@@ -1007,7 +1007,7 @@ alloc_mem(struct typemanager *tm,fixnum
++   return exhausted_report(tm->tm_type,tm);
++ }
++ 
++-inline object
+++object
++ alloc_object(enum type t)  {
++ 
++   object obj;
++@@ -1022,12 +1022,12 @@ alloc_object(enum type t)  {
++   
++ }
++ 
++-inline void *
+++void *
++ alloc_contblock(size_t n) {
++   return alloc_mem(tm_of(t_contiguous),CEI(n,CPTR_SIZE));
++ }
++ 
++-inline void *
+++void *
++ alloc_contblock_no_gc(size_t n) {
++ 
++   struct typemanager *tm=tm_of(t_contiguous);
++@@ -1073,7 +1073,7 @@ alloc_code_space(size_t sz) {
++ 
++ }
++ 
++-inline void *
+++void *
++ alloc_relblock(size_t n) {
++ 
++   return alloc_mem(tm_of(t_relocatable),CEI(n,PTR_ALIGN));
++@@ -1089,7 +1089,7 @@ load_cons(object p,object a,object d) {
++   p->c.c_car=a;
++ }
++ 
++-inline object
+++object
++ make_cons(object a,object d) {
++ 
++   static struct typemanager *tm=tm_table+t_cons;/*FIXME*/
++@@ -1105,7 +1105,7 @@ make_cons(object a,object d) {
++ 
++ 
++ 
++-inline object on_stack_cons(object x, object y) {
+++object on_stack_cons(object x, object y) {
++   object p = (object) alloca_val;
++   load_cons(p,x,y);
++   return p;
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -158,7 +158,7 @@ in_contblock_stack_list(void *p,void ***
++   return a && a[0]==p;
++ }
++ 
++-inline char
+++static inline char
++ get_bit(char *v,struct pageinfo *pi,void *x) {
++   void *ve=CB_DATA_START(pi);
++   fixnum off=(x-ve)>>LOG_BYTES_CONTBLOCK,i=off>>LOG_BITS_CHAR,s=off&~(~0UL<<LOG_BITS_CHAR);
++@@ -168,7 +168,7 @@ get_bit(char *v,struct pageinfo *pi,void
++   return (v[i]>>s)&0x1;
++ }
++ 
++-inline void
+++static inline void
++ set_bit(char *v,struct pageinfo *pi,void *x) {
++   void *ve=CB_DATA_START(pi);
++   fixnum off=(x-ve)>>LOG_BYTES_CONTBLOCK,i=off>>LOG_BITS_CHAR,s=off&~(~0UL<<LOG_BITS_CHAR);
++@@ -183,7 +183,7 @@ set_bit(char *v,struct pageinfo *pi,void
++ #define ptr_get(v,i,s) (v+(((i<<LOG_BITS_CHAR)|s)<<LOG_BYTES_CONTBLOCK))
++ #define ptr_set(x,v,i,s) ({fixnum _o=(x-v)>>LOG_BYTES_CONTBLOCK;i=_o>>LOG_BITS_CHAR;s=_o&~(~0UL<<LOG_BITS_CHAR);})
++ 
++-inline void
+++static inline void
++ set_bits(char *v,struct pageinfo *pi,void *x1,void *x2) {
++ 
++   void *ds=CB_DATA_START(pi);
++@@ -206,7 +206,7 @@ set_bits(char *v,struct pageinfo *pi,voi
++ 
++ }
++ 
++-inline void *
+++static inline void *
++ get_bits(char *v,struct pageinfo *pi,void *x) {
++ 
++   void *ds=CB_DATA_START(pi),*de=CB_DATA_END(pi);
++@@ -232,42 +232,42 @@ get_bits(char *v,struct pageinfo *pi,voi
++   return ds<de ? ds : de;
++ }
++ 
++-inline char
+++static inline char
++ get_mark_bit(struct pageinfo *pi,void *x) {
++   return get_bit(CB_MARK_START(pi),pi,x);
++ }
++ 
++-inline void
+++static inline void
++ set_mark_bit(struct pageinfo *pi,void *x) {
++   set_bit(CB_MARK_START(pi),pi,x);
++ }
++ 
++-inline void *
+++static inline void *
++ get_mark_bits(struct pageinfo *pi,void *x) {
++   return get_bits(CB_MARK_START(pi),pi,x);
++ }
++ 
++-inline void
+++static inline void
++ set_mark_bits(struct pageinfo *pi,void *x1,void *x2) {
++   set_bits(CB_MARK_START(pi),pi,x1,x2);
++ }
++ 
++-inline char
+++static inline char
++ get_sgc_bit(struct pageinfo *pi,void *x) {
++   return get_bit(CB_SGCF_START(pi),pi,x);
++ }
++ 
++-inline void
+++static inline void
++ set_sgc_bit(struct pageinfo *pi,void *x) {
++   set_bit(CB_SGCF_START(pi),pi,x);
++ }
++ 
++-inline void *
+++static inline void *
++ get_sgc_bits(struct pageinfo *pi,void *x) {
++   return get_bits(CB_SGCF_START(pi),pi,x);
++ }
++ 
++-inline void
+++static inline void
++ set_sgc_bits(struct pageinfo *pi,void *x1,void *x2) {
++   set_bits(CB_SGCF_START(pi),pi,x1,x2);
++ }
++--- gcl-2.6.12.orig/o/gmp_big.c
+++++ gcl-2.6.12/o/gmp_big.c
++@@ -93,6 +93,7 @@ object big_fixnum1;
++ void
++ gcl_init_big1(void) {
++     mp_set_memory_functions( gcl_gmp_alloc,gcl_gmp_realloc,gcl_gmp_free);
+++    jmp_gmp=0;
++ }
++ 
++ #else
++--- gcl-2.6.12.orig/o/gmp_num_log.c
+++++ gcl-2.6.12/o/gmp_num_log.c
++@@ -46,7 +46,7 @@ integer_log_op2(fixnum op,object x,enum
++ 
++ }
++ 
++-inline object
+++object
++ log_op2(fixnum op,object x,object y) {
++ 
++   enum type tx=type_of(x),ty=type_of(y);
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -38,8 +38,6 @@ initlisp(void);
++ static int
++ multiply_stacks(int);
++ 
++-#define IN_MAIN
++-
++ #ifdef KCLOVM
++ #include <ovm/ovm.h>
++ void change_contexts();
++@@ -47,6 +45,11 @@ int ovm_process_created;
++ void initialize_process();
++ #endif
++ 
+++
+++#define EXTER
+++#define INLINE
+++
+++
++ #include "include.h"
++ #include <signal.h>
++ #include "page.h"
++@@ -118,7 +121,7 @@ cstack_dir(fixnum j) {
++ 
++ fixnum log_maxpage_bound=sizeof(fixnum)*8-1;
++ 
++-inline int
+++int
++ mbrk(void *v) {
++ 
++   ufixnum uv=(ufixnum)v,uc=(ufixnum)sbrk(0),ux,um;
++@@ -1120,10 +1123,6 @@ init_main(void) {
++   
++ }
++ 
++-#ifdef SGC
++-#include "writable.h"
++-#endif
++-
++ #ifdef HAVE_PRINT_INSN_I386
++ 
++ #include "dis-asm.h"
++--- gcl-2.6.12.orig/o/makefile
+++++ gcl-2.6.12/o/makefile
++@@ -20,7 +20,7 @@ OBJS:=$(addsuffix .o,typespec main alloc
++      num_pred num_comp num_arith num_sfun num_co num_log num_rand earith character sequence list hash\
++      array string regexpr structure toplevel file read backq print format pathname unixfsys unixfasl\
++      error unixtime unixsys unixsave funlink fat_string run_process nfunlink usig usig2 utils makefun\
++-     sockets gmp_wrappers clxsocket init_pari nsocket sfasl prelink)
+++     sockets clxsocket init_pari nsocket sfasl prelink)
++ OBJS:=$(OBJS) $(RL_OBJS) $(EXTRAS)
++ 
++ INI_FILES=$(patsubst %.o,%.ini,${OBJS})
++--- gcl-2.6.12.orig/o/num_arith.c
+++++ gcl-2.6.12/o/num_arith.c
++@@ -62,7 +62,7 @@ object fixnum_sub(fixnum i, fixnum j)
++    }
++ }
++ 
++-inline object 
+++object 
++ fixnum_times(fixnum i, fixnum j) {
++ 
++ #ifdef HAVE_CLZL
++--- gcl-2.6.12.orig/o/num_co.c
+++++ gcl-2.6.12/o/num_co.c
++@@ -277,7 +277,7 @@ LFD(Ldenominator)(void)
++              vs_base[0] = small_fixnum(1);
++ }
++ 
++-inline void
+++void
++ intdivrem(object x,object y,fixnum d,object *q,object *r) {
++ 
++   enum type tx=type_of(x),ty=type_of(y);
++--- gcl-2.6.12.orig/o/num_log.c
+++++ gcl-2.6.12/o/num_log.c
++@@ -37,12 +37,12 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ 
++ 
++ 
++-inline object
+++object
++ fixnum_big_shift(fixnum x,fixnum w) {
++   MPOP(return,shifti,SI_TO_MP(x,big_fixnum1),w);
++ }
++ 
++-inline object
+++object
++ integer_fix_shift(object x, fixnum w) { 
++   if (type_of(x)==t_fixnum) {
++     fixnum fx=fix(x);
++@@ -51,7 +51,7 @@ integer_fix_shift(object x, fixnum w) {
++   MPOP(return,shifti,MP(x),w);
++ }
++      
++-inline object
+++object
++ integer_shift(object x,object y) {
++   enum type tx=type_of(x),ty=type_of(y);
++   if (ty==t_fixnum)
++@@ -66,12 +66,12 @@ integer_shift(object x,object y) {
++   }
++ }
++       
++-inline object
+++object
++ integer_length(object x) {
++   return make_fixnum(type_of(x)==t_fixnum ? fixnum_length(fix(x)) : MP_SIZE_IN_BASE2(MP(x)));
++ }
++ 
++-inline object
+++object
++ integer_count(object x) {
++   return make_fixnum(type_of(x)==t_fixnum ? fixnum_count(fix(x)) : MP_BITCOUNT(MP(x)));
++ }
++@@ -120,7 +120,7 @@ LFD(Lboole)(void)
++ 
++ }
++ 
++-inline bool
+++bool
++ integer_bitp(object p,object x) {
++   enum type tp=type_of(p),tx=type_of(x);
++ 
++--- gcl-2.6.12.orig/o/num_sfun.c
+++++ gcl-2.6.12/o/num_sfun.c
++@@ -94,7 +94,7 @@ number_exp(object x)
++      }
++ }
++ 
++-inline object
+++static inline object
++ number_fix_iexpt(object x,fixnum y,fixnum ly,fixnum j) {
++   object z;
++   
++@@ -103,7 +103,7 @@ number_fix_iexpt(object x,fixnum y,fixnu
++   return fixnum_bitp(j,y) ? number_times(x,z) : z;
++ }
++ 
++-inline object
+++static inline object
++ number_big_iexpt(object x,object y,fixnum ly,fixnum j) {
++   object z;
++   
++@@ -113,7 +113,7 @@ number_big_iexpt(object x,object y,fixnu
++ 
++ }
++ 
++-inline object
+++static inline object
++ number_zero_expt(object x,bool promote_short_p) {
++ 
++   switch (type_of(x)) {
++@@ -135,7 +135,7 @@ number_zero_expt(object x,bool promote_s
++ }
++ 
++ 
++-inline object
+++static inline object
++ number_ui_expt(object x,fixnum fy) {
++ 
++   switch (type_of(x)) {
++@@ -173,17 +173,17 @@ number_ui_expt(object x,fixnum fy) {
++     
++ }
++ 
++-inline object
+++static inline object
++ number_ump_expt(object x,object y) {
++   return number_big_iexpt(x,y,fix(integer_length(y)),0);
++ }
++ 
++-inline object
+++static inline object
++ number_log_expt(object x,object y) {
++   return number_zerop(y) ? number_zero_expt(y,type_of(x)==t_longfloat) : number_exp(number_times(number_nlog(x),y));
++ }
++ 
++-inline object
+++static inline object
++ number_invert(object x,object y,object z) {
++ 
++   switch (type_of(z)) {
++@@ -198,7 +198,7 @@ number_invert(object x,object y,object z
++ }
++     
++ 
++-inline object 
+++static inline object 
++ number_si_expt(object x,object y) {
++   switch (type_of(y)) {
++   case t_fixnum:
++--- gcl-2.6.12.orig/o/package.d
+++++ gcl-2.6.12/o/package.d
++@@ -114,7 +114,7 @@ static int package_sizes[]={
++   32749, 65521, 131071, 262139,   524287, 1048573};
++ 
++ static int
++-suitable_package_size(n)
+++suitable_package_size(int n)
++ {int *i=package_sizes;
++  if (n>= 1000000) return 1048573;
++  while(*i < n) { i++;}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fef1bb0fced49d859a396586a8a46827f7b7b5a9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++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.
++ .
++ gcl (2.6.12-9) unstable; urgency=medium
++ .
++   * Version_2_6_13pre8a
++   * Bug fix: "ftbfs with GCC-5", thanks to Matthias Klose (Closes:
++     #777866).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/777866
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/prelink.c
+++++ gcl-2.6.12/o/prelink.c
++@@ -2,6 +2,12 @@
++ 
++ #include "include.h"
++ 
+++extern FILE *stdin __attribute__((weak));
+++extern FILE *stderr __attribute__((weak));
+++extern FILE *stdout __attribute__((weak));
+++extern rl_compentry_func_t *rl_completion_entry_function __attribute__((weak));
+++extern const char *rl_readline_name __attribute__((weak));
+++
++ void
++ prelink_init(void) {
++   
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..15f42d932f5f9002a1addc8e515087721fea0491
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,33 @@@
++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.
++ .
++ gcl (2.6.12-39) unstable; urgency=medium
++ .
++   * pathnames1.1
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-12
++
++--- gcl-2.6.12.orig/ansi-tests/makefile
+++++ gcl-2.6.12/ansi-tests/makefile
++@@ -8,3 +8,5 @@ test:
++ 
++ clean:
++      rm -f test.out *.fasl *.o *.so *~ *.fn *.x86f *.fasl *.ufsl
+++     rm -f foo.txt temp.dat file-that-was-renamed.txt tmp.dat tmp.dat.BAK tmp2.dat
+++     rm -rf scratch tmp.txt foo.lsp 'CLTEST:foo.txt'
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..08d1543d86dd7bab9c735e5bea8ddb7cc636d052
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,83 @@@
++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.
++ .
++ gcl (2.6.12-31) unstable; urgency=medium
++ .
++   * Version_2_6_13pre39
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: <YYYY-MM-DD>
++
++--- gcl-2.6.12.orig/o/unexelf.c
+++++ gcl-2.6.12/o/unexelf.c
++@@ -428,6 +428,8 @@ extern void fatal (char *, ...);
++ #include <syms.h> /* for HDRR declaration */
++ #endif /* __sgi */
++ 
+++#include "page.h"
+++
++ #ifndef MAP_ANON
++ #ifdef MAP_ANONYMOUS
++ #define MAP_ANON MAP_ANONYMOUS
++@@ -655,7 +657,7 @@ unexec (char *new_name, char *old_name,
++   char *old_section_names;
++ 
++   ElfW(Addr) old_bss_addr, new_bss_addr,new_data2_addr;
++-  ElfW(Off)  old_bss_size, new_data2_size,old_bss_offset,new_data2_offset,old_file_size,new_file_size;
+++  ElfW(Off)  old_bss_size, new_data2_size,old_bss_offset,new_data2_offset,old_file_size,new_file_size,data_bss_offset;
++ 
++   int n, nn;
++   int old_bss_index, old_sbss_index;
++@@ -772,7 +774,9 @@ unexec (char *new_name, char *old_name,
++   if (new_file < 0)
++     fatal ("Can't creat (%s): errno %d\n", new_name, errno);
++ 
++-  new_file_size = stat_buf.st_size + old_file_h->e_shentsize + new_data2_size + (new_data2_offset-old_bss_offset);
+++  data_bss_offset=CEI(new_data2_offset-old_bss_offset,sizeof(long));/*????, e.g. sparc64*/
+++
+++  new_file_size = stat_buf.st_size + old_file_h->e_shentsize + new_data2_size + data_bss_offset;
++ 
++   if (ftruncate (new_file, new_file_size))
++     fatal ("Can't ftruncate (%s): errno %d\n", new_name, errno);
++@@ -784,7 +788,7 @@ unexec (char *new_name, char *old_name,
++   new_file_h = (ElfW(Ehdr) *) new_base;
++   new_program_h = (ElfW(Phdr) *) ((byte *) new_base + old_file_h->e_phoff);
++   new_section_h = (ElfW(Shdr) *)
++-    ((byte *) new_base + old_file_h->e_shoff + new_data2_size + (new_data2_offset-old_bss_offset));
+++    ((byte *) new_base + old_file_h->e_shoff + new_data2_size + data_bss_offset);
++ 
++ 
++   /* Make our new file, program and section headers as copies of the
++@@ -802,7 +806,7 @@ unexec (char *new_name, char *old_name,
++    * further away now.
++    */
++ 
++-  new_file_h->e_shoff += new_data2_size + (new_data2_offset-old_bss_offset);
+++  new_file_h->e_shoff += new_data2_size + data_bss_offset;
++   new_file_h->e_shnum += 1;
++ 
++ #ifdef DEBUG
++@@ -958,7 +962,7 @@ unexec (char *new_name, char *old_name,
++        if (NEW_SECTION_H (nn).sh_offset >= old_bss_offset ||
++            /* solaris has symtab straddling bss offset */
++            NEW_SECTION_H (nn).sh_offset+NEW_SECTION_H (nn).sh_size > old_bss_offset)
++-         NEW_SECTION_H (nn).sh_offset += new_data2_size+(new_data2_offset-old_bss_offset);
+++         NEW_SECTION_H (nn).sh_offset += new_data2_size+data_bss_offset;
++ #endif
++        /* Any section that was originally placed after the section
++           header table should now be off by the size of one section
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4fe1d27f2c6fd52b8ea7c9e645c0a3d0b6e1599a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++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.
++ .
++ gcl (2.6.12-50) unstable; urgency=medium
++ .
++   * list_order.6
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-06-14
++
++--- gcl-2.6.12.orig/h/386-gnu.h
+++++ gcl-2.6.12/h/386-gnu.h
++@@ -59,3 +59,5 @@
++ #define RELOC_H "elf32_i386_reloc.h"
++ 
++ #define NEED_STACK_CHK_GUARD
+++
+++#define DEFINED_REAL_MAXPAGE (1UL<<18) /*FIXME brk probe broken*/
++--- gcl-2.6.12.orig/h/m68k-linux.h
+++++ gcl-2.6.12/h/m68k-linux.h
++@@ -78,3 +78,5 @@ int cacheflush(void *,int,int,int);
++ #define RELOC_H "elf32_m68k_reloc.h"
++ 
++ #define NEED_STACK_CHK_GUARD
+++
+++#define DEFINED_REAL_MAXPAGE (1UL<<18) /*FIXME brk probe broken*/
++--- gcl-2.6.12.orig/h/sh4-linux.h
+++++ gcl-2.6.12/h/sh4-linux.h
++@@ -56,3 +56,5 @@
++ #define RELOC_H "elf32_sh4_reloc.h"
++ 
++ #define NEED_STACK_CHK_GUARD
+++
+++#define DEFINED_REAL_MAXPAGE (1UL<<18) /*FIXME brk probe broken*/
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -302,6 +302,9 @@ update_real_maxpage(void) {
++   }
++ #endif
++ 
+++#ifdef DEFINED_REAL_MAXPAGE
+++  real_maxpage=DEFINED_REAL_MAXPAGE;
+++#else
++   massert(cur=sbrk(0));
++   beg=data_start ? data_start : cur;
++   for (i=0,j=(1L<<log_maxpage_bound);j>PAGESIZE;j>>=1)
++@@ -311,7 +314,8 @@ update_real_maxpage(void) {
++      i+=j;
++       }
++   massert(!mbrk(cur));
++-
+++#endif
+++  
++   phys_pages=ufmin(get_phys_pages1(0)+page(beg),real_maxpage)-page(beg);
++ 
++   get_gc_environ();
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..239d89c2b8d868c525566a6a47dd68d31173fc97
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,56 @@@
++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.
++ .
++ gcl (2.6.12-54) unstable; urgency=medium
++ .
++   * list_order.11
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-08-24
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4122,6 +4122,7 @@ $as_echo_n "checking working gprof... "
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++                     arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
+++                    aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++                     *gnu)  enableval="no";;
++                 esac
++                 if test "$enableval" != "yes" ; then
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -335,6 +335,7 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     ia64*) enableval="no";;
++                     hppa*) enableval="no";;
++                     arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
+++                    aarch64*) enableval="no";;#unreproducible buildd bug 20170824
++                     *gnu)  enableval="no";;
++                 esac              
++                 if test "$enableval" != "yes" ; then
++--- gcl-2.6.12.orig/o/regexp.c
+++++ gcl-2.6.12/o/regexp.c
++@@ -231,7 +231,7 @@ int case_fold_search = 0;
++  * of the structure of the compiled regexp.
++  */
++ static regexp *
++-regcomp(char *exp,int *sz)
+++regcomp(char *exp,ufixnum *sz)
++ {
++      register regexp *r;
++      register char *scan;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f04c29e26dd01fb5e6df491f2917a14d37d84c6c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,8651 @@@
++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.
++ .
++ gcl (2.6.12-47) unstable; urgency=high
++ .
++   * pathnames1.13
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-05-28
++
++--- gcl-2.6.12.orig/clcs/sys-proclaim.lisp
+++++ gcl-2.6.12/clcs/sys-proclaim.lisp
++@@ -4,7 +4,9 @@
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         CONDITIONS::COERCE-TO-FN CONDITIONS::SLOT-SYM)) 
+++         COMMON-LISP::DEFINE-CONDITION COMMON-LISP::HANDLER-CASE
+++         COMMON-LISP::IGNORE-ERRORS COMMON-LISP::HANDLER-BIND
+++         CONDITIONS::SLOT-SYM CONDITIONS::COERCE-TO-FN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++@@ -20,27 +22,27 @@
++          CONDITIONS::|(PCL::FAST-METHOD MAKE-LOAD-FORM (CONDITION))|)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         CONDITIONS::IS-CONDITION CONDITIONS::DEFAULT-REPORT
++-         CONDITIONS::IS-WARNING CONDITIONS::CONDITIONP)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++              COMMON-LISP::*)
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PACKAGE-ERROR T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CASE-FAILURE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ABORT-FAILURE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (STREAM-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNDEFINED-FUNCTION T))|
++          CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (FILE-ERROR T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-VARIABLE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ARITHMETIC-ERROR T))|
++          CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (END-OF-FILE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (STREAM-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PRINT-NOT-READABLE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CASE-FAILURE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PACKAGE-ERROR T))|
++          CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CELL-ERROR T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (SIMPLE-CONDITION T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-SLOT T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNDEFINED-FUNCTION T))|
++          CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (INTERNAL-CONDITION T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PRINT-NOT-READABLE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (TYPE-ERROR T))|)) 
++\ No newline at end of file
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ABORT-FAILURE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ARITHMETIC-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-SLOT T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (TYPE-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (SIMPLE-CONDITION T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-VARIABLE T))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         CONDITIONS::CONDITIONP CONDITIONS::DEFAULT-REPORT
+++         CONDITIONS::IS-CONDITION CONDITIONS::IS-WARNING)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpcall.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpcall.lsp
++@@ -27,8 +27,7 @@
++ (eval-when (compile eval)
++ (defmacro link-arg-p (x)
++   `(let ((.u ,x))
++-     (not (member .u '(character boolean long-float short-float)))))
++-)
+++     (not (member .u '(character boolean long-float short-float) :test 'eq)))))
++ 
++ (defun fast-link-proclaimed-type-p (fname &optional args)
++   (and 
++@@ -134,6 +133,7 @@
++       (let ((*vs* *vs*) (form (caddr funob)))
++            (declare (object form))
++         (cond ((and (listp args)
+++                    (< (length args) 12) ;FIXME fcalln1 limitation
++                     *use-sfuncall*
++                     ;;Determine if only one value at most is required:
++                     (or
++@@ -167,8 +167,9 @@
++ (defun fcalln-inline (&rest args)
++   (wt-nl "({object _f=" (car args) ";enum type _t=type_of(_f);")
++   (wt-nl "_f = _t==t_symbol && _f->s.s_gfdef!=OBJNULL ? (_t=type_of(_f->s.s_gfdef),_f->s.s_gfdef) : _f;")  
++-  (wt-nl "_t==t_sfun ? _f->sfn.sfn_self : ")
++-  (wt-nl "(fcall.argd= " (length (cdr args)) ",_t==t_vfun ? _f->vfn.vfn_self : ")
+++  (wt-nl "_t==t_sfun&&(_f->sfn.sfn_argd&0xff)== " (length (cdr args)) " ? _f->sfn.sfn_self : ")
+++  (wt-nl "(fcall.argd= " (length (cdr args))
+++      ",_t==t_vfun&&_f->vfn.vfn_minargs<= " (length (cdr args)) "&&" (length (cdr args)) "<=_f->vfn.vfn_maxargs  ? _f->vfn.vfn_self : ")
++   (wt-nl "(fcall.fun=_f,fcalln));})")
++   (wt-nl "(")
++   (when (cdr args) (wt (cadr args))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpenv.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpenv.lsp
++@@ -376,9 +376,7 @@
++                     doc form)
++   (loop
++     (when (endp body) (return))
++-    (setq form (cmp-macroexpand (car body)))
++-    (when (and (consp form) (eq (car form) 'load-time-value))
++-      (setq form (cmp-eval form)))
+++    (setq form (car body))
++     (cond
++      ((stringp form)
++       (when (or (null doc-p) (endp (cdr body)) doc) (return))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpfun.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpfun.lsp
++@@ -603,7 +603,9 @@
++                (t
++                 `(si::structure-subtype-p
++                   ,x ',type))))
++-;       ((and (print (list 'slow 'typep type)) nil))
+++        ((and (symbolp type) (setq tem (get type 'si::deftype-definition)))
+++         `(typep ,x ',(funcall tem)))
+++        ;; ((and (print (list 'slow 'typep type)) nil))
++         (t nil)))
++     (and new (c1expr `(the boolean , new)))))
++ 
++@@ -877,36 +879,6 @@
++       (c1expr (cmp-eval (cons f args))))))
++ 
++ 
++-(si::putprop 'do 'co1special-fix-decl 'co1special)
++-(si::putprop 'do* 'co1special-fix-decl 'co1special)
++-(si::putprop 'prog 'co1special-fix-decl 'co1special)
++-(si::putprop 'prog* 'co1special-fix-decl 'co1special)
++-
++-(defun co1special-fix-decl (f args)
++-  (flet ((fixup (forms &aux decls )
++-       (block nil
++-              (tagbody
++-               top
++-               (or (consp forms) (go end))
++-               (let ((tem (car forms)))
++-                 (if (and (consp tem)
++-                          (setq tem  (cmp-macroexpand tem))
++-                          (eq (car tem) 'declare))
++-                     (progn (push tem decls) (pop forms))
++-                   (go end)))
++-                   (go top)
++-                     ; all decls made explicit.
++-                   end
++-                  (return  (nconc (nreverse decls) forms))))))
++-     (c1expr
++-       (cmp-macroexpand
++-         (case f
++-           ((do do*) `(,f ,(car args)
++-                          ,(second args)
++-                          ,@ (fixup (cddr args))))
++-           ((prog prog*)
++-            `(,f ,(car args)
++-                 ,@ (fixup (cdr args)))))))))
++ (si::putprop 'sublis 'co1sublis 'co1)
++ (defun co1sublis (f args &aux test) f
++  (and (case (length args)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpinline.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpinline.lsp
++@@ -465,7 +465,7 @@
++     (t . INLINE)))
++ 
++ (defun inline-type (type)
++-  (or (cdr (assoc type *inline-types*)) 'inline))
+++  (or (cdr (assoc type *inline-types* :test 'eq)) 'inline))
++ 
++ (defun get-inline-info (fname args return-type &aux x ii)
++   (and  (fast-link-proclaimed-type-p fname args)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmplam.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmplam.lsp
++@@ -475,9 +475,9 @@
++                (*unwind-exit* *unwind-exit*)
++                (*ccb-vs* *ccb-vs*))
++            (when rest
++-             (wt-nl "vs_top[0]=Cnil;")
++-             (wt-nl "{object *p=vs_top, *q=vs_base+" (length optionals) ";")
++-             (wt-nl " for(;p>q;p--)p[-1]=MMcons(p[-1],p[0]);}"))
+++             (wt-nl "{object *q=vs_base+" (length optionals) ",*l;")
+++          (wt-nl " for (l=q;q<vs_top;q++,l=&(*l)->c.c_cdr) *l=MMcons(*q,Cnil);")
+++          (wt-nl " *l=Cnil;}"))
++            (do ((opts optionals (cdr opts)))
++                ((endp opts))
++                (declare (object opts))
++@@ -510,11 +510,11 @@
++ 
++              (wt-label label)))
++         (rest
++-         (wt-nl "vs_top[0]=Cnil;")
++-         (wt-nl "{object *p=vs_top;")
++-         (wt-nl " for(;p>vs_base;p--)p[-1]="
+++      (wt-nl "{object *q=vs_base,*l;")
+++      (wt-nl " for (l=q;q<vs_top;q++,l=&(*l)->c.c_cdr) *l="
++              (if *rest-on-stack* "ON_STACK_CONS" "MMcons")
++-             "(p[-1],p[0]);}")
+++             "(*q,Cnil);")
+++      (wt-nl " *l=Cnil;}")
++          (c2bind rest)
++          (wt-nl)
++          (reset-top))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmulti.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmulti.lsp
++@@ -108,22 +108,11 @@
++   (unwind-exit 'fun-val nil (if top-data (car top-data)))
++   )
++ 
++-(defun c1values (args &aux (info (make-info)))
++-      (cond ((and args (not (cdr args))
++-               (or (not (consp (car args)))
++-                   (and (symbolp (caar args))
++-                        (let ((tem (get-return-type (caar args))))
++-                          (and tem
++-                               (or (atom tem)
++-                                   (and (consp tem)
++-                                        (null (cdr tem))
++-                                        (not (eq '* (car tem))))))))))
++-          ;;the compiler put in unnecessary code
++-          ;;if we just had say (values nil)
++-          ;; so if we know there's one value only:
++-          (c1expr (car args)))
++-         (t  (setq args (c1args args info))
++-              (list 'values info args))))
+++(defun c1values (args &aux (info (make-info))(s (si::sgen "VALUES")))
+++  (cond ((and args (not (cdr args)))
+++      (c1expr `(let ((,s ,(car args))) ,s)))
+++     (t  (setq args (c1args args info))
+++         (list 'values info args))))
++ 
++ (defun c2values (forms &aux (base *vs*) (*vs* *vs*))
++      (cond ((and (eq *value-to-go* 'return-object)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpopt.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpopt.lsp
++@@ -66,6 +66,10 @@
++  (push '((t) boolean #.(flags)"type_of(#0)==t_longfloat")
++    (get 'long-float-p 'inline-always))
++ 
+++;;COMPLEX-P
+++ (push '((t) boolean #.(flags)"type_of(#0)==t_complex")
+++   (get 'si::complexp 'inline-always))
+++
++ ;;SFEOF
++  (push '((object) boolean #.(flags set)"(gcl_feof((#0)->sm.sm_fp))")
++    (get 'sfeof 'inline-unsafe))
++@@ -479,21 +483,56 @@
++    (get 'array-total-size 'inline-unsafe))
++ 
++ ;;ARRAYP
++- (push '((t) boolean #.(flags)
++-  "@0;type_of(#0)==t_array||
++-type_of(#0)==t_vector||
++-type_of(#0)==t_string||
++-type_of(#0)==t_bitvector")
++-   (get 'arrayp 'inline-always))
+++;;  (push '((t) boolean #.(flags)
+++;;   "@0;type_of(#0)==t_array||
+++;; type_of(#0)==t_vector||
+++;; type_of(#0)==t_string||
+++;; type_of(#0)==t_bitvector")
+++;;    (get 'arrayp 'inline-always))
++ 
++ ;;ATOM
++- (push '((t) boolean #.(flags)"type_of(#0)!=t_cons")
+++ (push '((t) boolean #.(flags)"atom(#0)")
++    (get 'atom 'inline-always))
++ 
++ ;;BIT-VECTOR-P
++  (push '((t) boolean #.(flags)"(type_of(#0)==t_bitvector)")
++    (get 'bit-vector-p 'inline-always))
++ 
+++;;BIT-VECTOR-P
+++ (push '((t) boolean #.(flags)"(type_of(#0)==t_bitvector)")
+++   (get 'bit-vector-p 'inline-always))
+++
+++;;HASH-TABLE-P
+++ (push '((t) boolean #.(flags)"(type_of(#0)==t_hashtable)")
+++   (get 'hash-table-p 'inline-always))
+++
+++;;RANDOM-STATE-P
+++ (push '((t) boolean #.(flags)"(type_of(#0)==t_random)")
+++   (get 'random-state-p 'inline-always))
+++
+++;;RANDOM-STATE-P
+++ (push '((t) boolean #.(flags)"(type_of(#0)==t_random)")
+++   (get 'random-state-p 'inline-always))
+++
+++;;PACKAGEP
+++ (push '((t) boolean #.(flags)"(type_of(#0)==t_package)")
+++   (get 'packagep 'inline-always))
+++
+++;;STREAMP
+++ (push '((t) boolean #.(flags)"(type_of(#0)==t_stream)")
+++   (get 'streamp 'inline-always))
+++
+++;;READTABLEP
+++ (push '((t) boolean #.(flags)"(type_of(#0)==t_readtable)")
+++   (get 'readtablep 'inline-always))
+++
+++;;COMPOUND PREDICATES
+++(dolist (l '(integerp rationalp floatp realp numberp vectorp arrayp compiled-function-p))
+++  (push 
+++   `((t) boolean #.(flags) ,(substitute #\_ #\- (concatenate 'string (string-downcase l) "(#0)")))
+++   (get l 'inline-always)))
+++
+++
++ ;;BOUNDP
++  (push '((t) boolean #.(flags)"(#0)->s.s_dbind!=OBJNULL")
++    (get 'boundp 'inline-unsafe))
++@@ -739,7 +778,7 @@ type_of(#0)==t_bitvector")
++    (get 'cons 'inline-always))
++ 
++ ;;CONSP
++- (push '((t) boolean #.(flags)"type_of(#0)==t_cons")
+++ (push '((t) boolean #.(flags)"consp(#0)")
++    (get 'consp 'inline-always))
++ 
++ ;;COS
++@@ -832,9 +871,9 @@ type_of(#0)==t_bitvector")
++    (get 'float 'inline-always))
++ 
++ ;;FLOATP
++- (push '((t) boolean #.(flags)
++-  "@0;type_of(#0)==t_shortfloat||type_of(#0)==t_longfloat")
++-   (get 'floatp 'inline-always))
+++ ;; (push '((t) boolean #.(flags)
+++ ;;  "@0;type_of(#0)==t_shortfloat||type_of(#0)==t_longfloat")
+++ ;;   (get 'floatp 'inline-always))
++ 
++ ;;CEILING
++ (push '((t t) t #.(compiler::flags) "immnum_ceiling(#0,#1)") (get 'ceiling 'compiler::inline-always))
++@@ -861,9 +900,9 @@ type_of(#0)==t_bitvector")
++    (get 'get 'inline-always))
++ 
++ ;;INTEGERP
++- (push '((t) boolean #.(flags)
++-  "@0;type_of(#0)==t_fixnum||type_of(#0)==t_bignum")
++-   (get 'integerp 'inline-always))
+++ ;; (push '((t) boolean #.(flags)
+++ ;;  "@0;type_of(#0)==t_fixnum||type_of(#0)==t_bignum")
+++ ;;   (get 'integerp 'inline-always))
++ (push '((fixnum) boolean #.(flags)
++   "1")
++    (get 'integerp 'inline-always))
++@@ -940,7 +979,7 @@ type_of(#0)==t_bitvector")
++    (get 'list* 'inline-always))
++ 
++ ;;LISTP
++- (push '((t) boolean #.(flags)"@0;type_of(#0)==t_cons||(#0)==Cnil")
+++ (push '((t) boolean #.(flags)"listp(#0)")
++    (get 'listp 'inline-always))
++ 
++ ;;si::spice-p
++@@ -1082,14 +1121,14 @@ type_of(#0)==t_bitvector")
++    (get 'null 'inline-always))
++ 
++ ;;NUMBERP
++- (push '((t) boolean #.(flags)
++-  "@0;type_of(#0)==t_fixnum||
++-type_of(#0)==t_bignum||
++-type_of(#0)==t_ratio||
++-type_of(#0)==t_shortfloat||
++-type_of(#0)==t_longfloat||
++-type_of(#0)==t_complex")
++-   (get 'numberp 'inline-always))
+++;;  (push '((t) boolean #.(flags)
+++;;   "@0;type_of(#0)==t_fixnum||
+++;; type_of(#0)==t_bignum||
+++;; type_of(#0)==t_ratio||
+++;; type_of(#0)==t_shortfloat||
+++;; type_of(#0)==t_longfloat||
+++;; type_of(#0)==t_complex")
+++;;    (get 'numberp 'inline-always))
++ 
++ ;;PLUSP
++  (push '((t) boolean #.(flags) "immnum_plusp(#0)");"number_compare(small_fixnum(0),#0)<0"
++@@ -1175,7 +1214,7 @@ type_of(#0)==t_complex")
++       (get 'si::pathname-designatorp 'inline-always))
++ 
++ ;;PATHNAMEP
++-(push '((t) boolean #.(flags)"pathnamep(#0)")
+++(push '((t) boolean #.(flags)"type_of(#0)==t_pathname")
++       (get 'pathnamep 'inline-always))
++ 
++ ;;STRINGP
++@@ -1235,11 +1274,11 @@ type_of(#0)==t_complex")
++ 
++ 
++ ;;VECTORP
++- (push '((t) boolean #.(flags)
++-  "@0;type_of(#0)==t_vector||
++-type_of(#0)==t_string||
++-type_of(#0)==t_bitvector")
++-   (get 'vectorp 'inline-always))
+++;;  (push '((t) boolean #.(flags)
+++;;   "@0;type_of(#0)==t_vector||
+++;; type_of(#0)==t_string||
+++;; type_of(#0)==t_bitvector")
+++;;    (get 'vectorp 'inline-always))
++ 
++ ;;WRITE-CHAR
++  (push '((t) t #.(flags set)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptop.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptop.lsp
++@@ -135,7 +135,6 @@
++ ;;; Pass 2 initializers.
++ 
++ (si:putprop 'defun 't2defun 't2)
++-(si:putprop 'defmacro 't2defmacro 't2)
++ (si:putprop 'declare 't2declare 't2)
++ (si:putprop 'defentry 't2defentry 't2)
++ (si:putprop 'si:putprop 't2putprop 't2)
++@@ -143,7 +142,6 @@
++ ;;; Pass 2 C function generators.
++ 
++ (si:putprop 'defun 't3defun 't3)
++-(si:putprop 'defmacro 't3defmacro 't3)
++ (si:putprop 'ordinary 't3ordinary 't3)
++ (si:putprop 'sharp-comma 't3sharp-comma 't3)
++ (si:putprop 'clines 't3clines 't3)
++@@ -205,26 +203,20 @@
++   (let ((new (copy-seq str)))
++     (dash-to-underscore-int new 0 (length new))))
++ 
++-(defun init-name (p &optional sp (gp t) (dc t) (nt t)) 
++ 
++-  (cond ((not sp) "code")
++-     ((not (pathnamep p)) (init-name (pathname p) sp gp dc nt))
++-     (gp (init-name (truename (merge-pathnames p #p".lsp")) sp nil dc nt))
++-     ((pathname-type p)
++-      (init-name (make-pathname
++-                     :host (pathname-host p)
++-                     :device (pathname-device p)
++-                     :directory (pathname-directory p)
++-                     :name (pathname-name p)
++-                     :version (pathname-version p)) sp gp dc nt))
++-;    #-aosvs(dc (string-downcase (init-name p sp gp nil nt)))
++-     ((and nt
++-           (let* ((pn (pathname-name p))
++-                  (pp (make-pathname :name pn)))
++-             (and (not (equal pp p)) 
++-                  (eql 4 (string<= "gcl_" pn))
++-                  (init-name pp sp gp dc nil)))))
++-     ((dash-to-underscore (namestring p)))))
+++(defun init-name (p &optional sp)
+++
+++  (if sp
+++      (let* ((p (truename (merge-pathnames p #p".lsp")))
+++          (pn (pathname-name p))
+++          (g (zerop (si::string-match #v"^gcl_" pn))))
+++     (dash-to-underscore
+++      (namestring
+++       (make-pathname :host (unless g (pathname-host p))
+++                      :device (unless g (pathname-device p))
+++                      :directory (unless g (pathname-directory p))
+++                      :name pn))))
+++    "code"))
++ 
++ ;; FIXME consider making this a macro
++ (defun c-function-name (prefix num fname)
++@@ -469,7 +461,7 @@
++         (too-few-args 'defun 2 (length args)))
++   (cmpck (not (symbolp (car args)))
++          "The function name ~s is not a symbol." (car args))
++-  (maybe-eval nil  (cons 'defun args))
+++  (unless (macro-function (car args)) (maybe-eval nil (cons 'defun args)))
++  (tagbody
++    top
++   (setq *non-package-operation* t)
++@@ -615,8 +607,9 @@
++      (setq type (f-type (pop args))))))
++     
++ 
++-(defun wt-if-proclaimed (fname cfun lambda-expr)
++-  (cond ((fast-link-proclaimed-type-p fname)
+++(defun wt-if-proclaimed (fname cfun lambda-expr macro-p)
+++  (cond (macro-p (add-init `(si::MM ',fname ,(add-address (c-function-name "LI" cfun fname)))))
+++     ((fast-link-proclaimed-type-p fname)
++       (cond ((unless (member '* (get fname 'proclaimed-arg-types)) (assoc fname *inline-functions*))
++              (add-init `(si::mfsfun ',fname ,(add-address (c-function-name "LI" cfun fname))
++                                 ,(proclaimed-argd (get fname 'proclaimed-arg-types)
++@@ -698,11 +691,11 @@
++ (defun si::add-debug (fname x)
++   (si::putprop fname x  'si::debugger))
++ 
++-(defun t3init-fun (fname cfun lambda-expr doc)
+++(defun t3init-fun (fname cfun lambda-expr doc macro-p)
++ 
++   (when doc (add-init `(si::putprop ',fname ,doc 'si::function-documentation)))
++   
++-  (cond ((wt-if-proclaimed fname cfun lambda-expr))
+++  (cond ((wt-if-proclaimed fname cfun lambda-expr macro-p))
++      ((vararg-p fname)
++       (let ((keyp (ll-keywords-p (lambda-list lambda-expr))))
++ ;       (wt-h "static object LI" cfun "();")
++@@ -724,6 +717,7 @@
++         (add-init `(si::mf ',fname ,(add-address (c-function-name "" cfun fname)))))))
++ 
++ (defun t3defun (fname cfun lambda-expr doc sp &aux inline-info 
+++                   (macro-p (equal `(mflag ,fname) (cadr (member *current-form* *top-level-forms*))))
++                    (*current-form* (list 'defun fname))
++                    (*volatile* (volatile (second lambda-expr)))
++                    *downward-closures*)
++@@ -736,9 +730,9 @@
++               (return (setq inline-info v))))
++ 
++     ;;; Add global entry information.
++-    (when (not (fast-link-proclaimed-type-p fname))
++-       (push (list fname cfun (cadr inline-info) (caddr inline-info))
++-             *global-entries*))
+++    (unless (or macro-p (fast-link-proclaimed-type-p fname))
+++      (push (list fname cfun (cadr inline-info) (caddr inline-info))
+++         *global-entries*))
++ 
++     ;;; Local entry
++     (analyze-regs (cadr lambda-expr) 0)
++@@ -761,7 +755,7 @@
++   
++   (wt-downward-closure-macro cfun)
++ 
++-  (t3init-fun fname cfun lambda-expr doc)
+++  (t3init-fun fname cfun lambda-expr doc macro-p)
++ 
++   (add-debug-info fname lambda-expr))
++ 
++@@ -1333,63 +1327,13 @@
++              (long-float "double ")
++              (otherwise "object ")))
++ 
++-
++-(defun t1defmacro (args)
++-  (when (or (endp args) (endp (cdr args)))
++-        (too-few-args 'defmacro 2 (length args)))
++-  (cmpck (not (symbolp (car args)))
++-         "The macro name ~s is not a symbol." (car args))
++-  (maybe-eval t (cons 'defmacro args))
++-  (setq *non-package-operation* t)
++-  (let ((*vars* nil) (*funs* nil) (*blocks* nil) (*tags* nil)
++-        (*sharp-commas* nil) (*special-binding* nil)
++-        macro-lambda (cfun (next-cfun)))
++-       (setq macro-lambda (c1dm (car args) (cadr args) (cddr args)))
++-       (add-load-time-sharp-comma)
++-       (push (list 'defmacro (car args) cfun (cddr macro-lambda)
++-                (car macro-lambda)   ;doc
++-                (cadr macro-lambda)  ; ppn
++-                   *special-binding*)
++-             *top-level-forms*))
++-  )
++-
++-
++-(defun t2defmacro (fname cfun macro-lambda doc ppn sp)
++-
++-  (declare (ignore macro-lambda doc ppn sp))
++-  (wt-h "static void " (c-function-name "L" cfun fname) "();")
++-  )
++-
++-(defun t3defmacro (fname cfun macro-lambda doc ppn sp
++-                         &aux (*volatile* (if (get fname 'contains-setjmp)
++-                                           " VOL " "")))
++-  (let-pass3
++-   ((*exit* 'return))
++-   (wt-comment "macro definition for " fname)
++-   (wt-nl1 "static void " (c-function-name "L" cfun fname) "()")
++-   (wt-nl1 "{register object *" *volatile* "base=vs_base;")
++-   (assign-down-vars (nth 4 macro-lambda) cfun ;*dm-info*
++-                  't3defun)
++-   (wt-nl "register object *"*volatile* "sup=base+VM" *reservation-cmacro* ";")
++-   (wt " VC" *reservation-cmacro*)
++-   (if *safe-compile*
++-       (wt-nl "vs_reserve(VM" *reservation-cmacro* ");")
++-     (wt-nl "vs_check;"))
++-   (when sp (wt-nl "bds_check;"))
++-   (when *compiler-push-events* (wt-nl "ihs_check;"))
++-   (c2dm (car macro-lambda) (cadr macro-lambda) (caddr macro-lambda)
++-      (cadddr macro-lambda))
++-   (wt-nl1 "}")
++-   (push (cons *reservation-cmacro* *max-vs*) *reservations*)
++-   (wt-h "#define VC" *reservation-cmacro*)
++-   (wt-cvars)
++-
++-   (when doc (add-init `(si::putprop ',fname ,doc 'si::function-documentation) ))
++-   (when ppn
++-     (add-init `(si::putprop ',fname ',ppn 'si::pretty-print-format) ))
++-   (add-init `(si::MM ',fname ,(add-address (c-function-name "L" cfun fname))) )
++-
++-   ))
+++(defun t1defmacro (args &aux (w args)(n (pop args))(l (symbol-plist n))
+++                     (macp (when (listp n) (eq 'macro (car n))))(n (if macp (cdr n) n)))
+++  (proclaim `(ftype (function (t t) t) ,n))
+++  (maybe-eval (not (macro-function n)) (cons 'defmacro w));FIXME?
+++  (t1expr `(defun ,n ,@(if macp args (cddr (caddr (si::defmacro* n (pop args) args))))))
+++  (setf (symbol-plist n) l)
+++  (push `(mflag ,n) *top-level-forms*))
++ 
++ (defun t1ordinary (form &aux tem )
++   (setq *non-package-operation* t)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmputil.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmputil.lsp
++@@ -180,33 +180,27 @@
++     (or (member-if (lambda (x) (when (consp x) (eq (car x) fname))) *funs*)
++      (macro-function fname))))
++ 
++-(defun do-macro-expansion (how form &aux env)
++-  (dolist (v *funs*)
+++(defun macro-env (&aux env)
+++  (dolist (v *funs* (when env (list nil (nreverse env) nil)))
++     (when (consp v)
++-      (push (list (car v) 'macro (cadr v)) env))) 
++-  (when env (setq env (list nil (nreverse env) nil)))
++-  (let ((x (multiple-value-list (cmp-toplevel-eval `(,@how ',form ',env)))))
++-    (if (car x)
++-        (let ((*print-case* :upcase))
++-          (incf *error-count*)
++-          (print-current-form)
++-          (format t ";;; The macro form ~s was not expanded successfully.~%" form)
++-          `(error "Macro-expansion of ~s failed at compile time." ',form))
++-        (cadr x))))
+++      (push (list (car v) 'macro (cadr v)) env))))
++ 
++ (defun cmp-macroexpand (form)
++   (if (macro-def-p form)
++-      (do-macro-expansion '(macroexpand) form)
+++      (macroexpand form (macro-env))
++     form))
++ 
++ (defun cmp-macroexpand-1 (form)
++   (if (macro-def-p form)
++-      (do-macro-expansion '(macroexpand-1) form)
+++      (macroexpand-1 form (macro-env))
++     form))
++ 
++ (defun cmp-expand-macro (fd fname args &aux (form (cons fname args)))
++   (if (macro-def-p form)
++-      (do-macro-expansion `(funcall *macroexpand-hook* ',fd) form)
+++      (let ((env (macro-env)))
+++     (if (eq *macroexpand-hook* 'funcall)
+++         (funcall fd form env)
+++       (funcall *macroexpand-hook* fd form env)))
++     form))
++ 
++ (defvar *compiler-break-enable* nil)
++--- gcl-2.6.12.orig/cmpnew/sys-proclaim.lisp
+++++ gcl-2.6.12/cmpnew/sys-proclaim.lisp
++@@ -2,24 +2,116 @@
++ (COMMON-LISP::IN-PACKAGE "COMPILER") 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807)
++-              (COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807))
++-             COMMON-LISP::T)
++-         COMPILER::MLIN)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         COMPILER::TAG-REF-CLB COMPILER::SET-TOP
+++         COMPILER::C1MULTIPLE-VALUE-BIND COMPILER::C1LIST-NTH
+++         COMPILER::C1RPLACA-NTHCDR COMPILER::C1DEFINE-STRUCTURE
+++         COMPILER::BLK-REF-CLB COMPILER::WT-VV COMPILER::C1LENGTH
+++         COMPILER::C1MAPC COMPILER::C1LOCAL-CLOSURE
+++         COMPILER::CHECK-VREF COMPILER::WT-VAR-DECL COMPILER::C1TAGBODY
+++         COMPILER::BLK-REF-CCB COMPILER::C1LOAD-TIME-VALUE
+++         COMPILER::C1ASH COMPILER::FUN-LEVEL COMPILER::COPY-INFO
+++         COMPILER::INLINE-POSSIBLE COMPILER::WT-VS-BASE
+++         COMPILER::T1DEFENTRY COMPILER::CHARACTER-LOC-P
+++         COMPILER::C2RPLACA COMPILER::RESET-INFO-TYPE
+++         COMPILER::TYPE-FILTER COMPILER::TAG-SWITCH
+++         COMPILER::DECL-BODY-SAFETY COMPILER::C1AND
+++         COMPILER::C1FMLA-CONSTANT COMPILER::C2GO-CLB
+++         COMPILER::C1FUNCTION COMPILER::C1MAPLIST COMPILER::VAR-TYPE
+++         COMPILER::CLINK COMPILER::UNWIND-NO-EXIT COMPILER::VAR-LOC
+++         COMPILER::C2RPLACD COMPILER::VERIFY-DATA-VECTOR
+++         COMPILER::TAG-REF-CCB COMPILER::C1RETURN-FROM
+++         COMPILER::T1DEFINE-STRUCTURE COMPILER::MDELETE-FILE
+++         COMPILER::OBJECT-TYPE COMPILER::WT-CAR COMPILER::TAG-P
+++         COMPILER::ADD-LOOP-REGISTERS COMPILER::C1MEMQ
+++         COMPILER::C2FUNCTION COMPILER::CMP-MACRO-FUNCTION
+++         COMPILER::C1BOOLE-CONDITION COMPILER::REP-TYPE COMPILER::C2GET
+++         COMPILER::C2VAR COMPILER::C2EXPR* COMPILER::C1ADD-GLOBALS
+++         COMPILER::WT1 COMPILER::C1BLOCK COMPILER::C1MAPL
+++         COMPILER::C1MAPCAR COMPILER::FSET-FN-NAME COMPILER::C2GO-CCB
+++         COMPILER::T1DEFLA COMPILER::C1NTH-CONDITION
+++         COMPILER::ADD-OBJECT2 COMPILER::VAR-NAME COMPILER::C1EXPR
+++         COMPILER::FUN-REF COMPILER::SCH-LOCAL-FUN
+++         COMPILER::FIXNUM-LOC-P COMPILER::BLK-VAR
+++         COMPILER::C1UNWIND-PROTECT COMPILER::C2BIND
+++         COMPILER::PARSE-CVSPECS COMPILER::C1NTH
+++         COMPILER::WT-SWITCH-CASE SYSTEM::UNDEF-COMPILER-MACRO
+++         COMPILER::SET-UP-VAR-CVS COMPILER::C1ECASE
+++         COMPILER::C1STRUCTURE-REF COMPILER::FUN-INFO
+++         COMPILER::C1MEMBER COMPILER::C1GET COMPILER::WT-FUNCTION-LINK
+++         COMPILER::C1ASH-CONDITION COMPILER::WT-CCB-VS COMPILER::INFO-P
+++         COMPILER::REGISTER COMPILER::TAG-VAR COMPILER::C1VAR
+++         COMPILER::C1TERPRI COMPILER::LTVP
+++         COMPILER::WT-DOWNWARD-CLOSURE-MACRO COMPILER::C1MAPCON
+++         COMPILER::PUSH-ARGS-LISPCALL COMPILER::C1SETQ
+++         COMPILER::C2DOWNWARD-FUNCTION COMPILER::T3ORDINARY
+++         COMPILER::C1VREF COMPILER::WT-VS COMPILER::CONSTANT-FOLD-P
+++         COMPILER::C1MULTIPLE-VALUE-PROG1 COMPILER::BLK-EXIT
+++         COMPILER::T1DEFUN COMPILER::C1LABELS COMPILER::C1FSET
+++         COMPILER::T1MACROLET COMPILER::FUN-NAME COMPILER::C1APPLY
+++         COMPILER::FUN-P COMPILER::WT-DATA-PACKAGE-OPERATION
+++         COMPILER::C1FUNOB COMPILER::WT-SYMBOL-FUNCTION
+++         COMPILER::GET-RETURN-TYPE COMPILER::ADD-CONSTANT
+++         COMPILER::SAFE-SYSTEM COMPILER::BLK-VALUE-TO-GO
+++         COMPILER::NEED-TO-SET-VS-POINTERS COMPILER::C2TAGBODY-LOCAL
+++         COMPILER::C1DECLARE COMPILER::C1OR COMPILER::C1ASSOC
+++         COMPILER::ADD-ADDRESS COMPILER::VAR-KIND
+++         COMPILER::PROCLAMATION COMPILER::FIX-OPT COMPILER::WT-DATA1
+++         COMPILER::INFO-SP-CHANGE COMPILER::ARGS-CAUSE-SIDE-EFFECT
+++         COMPILER::WRITE-BLOCK-OPEN COMPILER::C2TAGBODY-BODY
+++         COMPILER::CONS-TO-LISTA COMPILER::SAVE-FUNOB COMPILER::VAR-REF
+++         COMPILER::C1LOCAL-FUN COMPILER::VAR-REP-LOC
+++         COMPILER::SET-PUSH-CATCH-FRAME COMPILER::CTOP-WRITE
+++         COMPILER::C2TAGBODY-CLB COMPILER::T1CLINES
+++         COMPILER::ADD-OBJECT COMPILER::GET-LOCAL-RETURN-TYPE
+++         COMPILER::DEFAULT-INIT COMPILER::FUNCTION-ARG-TYPES
+++         COMPILER::C1STRUCTURE-SET COMPILER::CMP-MACROEXPAND-1
+++         COMPILER::INLINE-TYPE COMPILER::VAR-REGISTER
+++         COMPILER::DECLARATION-TYPE COMPILER::C1CATCH COMPILER::C1LET
+++         COMPILER::T3CLINES COMPILER::UNDEFINED-VARIABLE COMPILER::C1GO
+++         COMPILER::TAG-NAME COMPILER::SCH-GLOBAL COMPILER::C1IF
+++         COMPILER::C1FLET COMPILER::INLINE-BOOLE3-STRING
+++         COMPILER::INFO-CHANGED-ARRAY COMPILER::C2FUNCALL-AUX
+++         COMPILER::FUN-REF-CCB COMPILER::WT-CADR COMPILER::FUN-CFUN
+++         COMPILER::WT-VS* COMPILER::WT-DOWN COMPILER::C2GETHASH
+++         COMPILER::ADD-REG1 COMPILER::REPLACE-CONSTANT
+++         COMPILER::C2DM-RESERVE-V COMPILER::RESULT-TYPE
+++         COMPILER::C1FUNCALL COMPILER::C1THE COMPILER::VARARG-P
+++         COMPILER::INFO-REFERRED-ARRAY COMPILER::C1PROGV
+++         COMPILER::T2DECLARE COMPILER::T1DEFCFUN COMPILER::C2VALUES
+++         COMPILER::C1SWITCH COMPILER::C1MAPCAN
+++         COMPILER::CMP-MACROEXPAND COMPILER::TAG-LABEL
+++         COMPILER::TAG-UNWIND-EXIT COMPILER::C1PRINC COMPILER::C1THROW
+++         COMPILER::SAVE-AVMA COMPILER::VOLATILE COMPILER::FLAGS-POS
+++         COMPILER::INFO-TYPE COMPILER::C1NTHCDR-CONDITION
+++         COMPILER::C1MULTIPLE-VALUE-SETQ COMPILER::WT-FUNCALL-C
+++         COMPILER::PUSH-ARGS COMPILER::C1DM-BAD-KEY
+++         COMPILER::T1ORDINARY COMPILER::C1PSETQ COMPILER::BLK-REF
+++         COMPILER::C2DM-RESERVE-VL COMPILER::C1MACROLET
+++         COMPILER::C1SHARP-COMMA COMPILER::C1RPLACA
+++         COMMON-LISP::PROCLAIM COMPILER::PUSH-DATA-INCF
+++         COMPILER::MACRO-DEF-P COMPILER::BLK-NAME COMPILER::C1VALUES
+++         COMPILER::C1DOWNWARD-FUNCTION COMPILER::T1DEFMACRO
+++         COMPILER::GET-ARG-TYPES COMPILER::ADD-SYMBOL
+++         COMPILER::NAME-SD1 COMPILER::C2GO-LOCAL
+++         COMPILER::C2TAGBODY-CCB COMPILER::WT-LIST
+++         COMPILER::GET-LOCAL-ARG-TYPES COMPILER::C1BOOLE3
+++         COMPILER::C1STACK-LET COMPILER::WT-CDR COMPILER::C1QUOTE
+++         COMPILER::C1EVAL-WHEN COMPILER::VAR-P COMPILER::CHECK-DOWNWARD
+++         COMPILER::T1PROGN COMPILER::BLK-P COMPILER::C2LOCATION
+++         COMPILER::THE-PARAMETER COMPILER::C2VAR-KIND
+++         COMPILER::C1GETHASH COMPILER::LTVP-EVAL COMPILER::C1RPLACD
+++         COMPILER::INFO-VOLATILE COMPILER::LONG-FLOAT-LOC-P
+++         COMPILER::FUNCTION-RETURN-TYPE COMPILER::SHORT-FLOAT-LOC-P
+++         COMPILER::WT-H1 COMPILER::C1MULTIPLE-VALUE-CALL
+++         COMPILER::NAME-TO-SD COMPILER::C1PROGN COMPILER::SET-RETURN
+++         COMPILER::C1LET* COMPILER::AET-C-TYPE COMPILER::C1COMPILER-LET
+++         COMPILER::MAXARGS COMPILER::VAR-REF-CCB COMPILER::VV-STR
+++         COMPILER::C1NTHCDR COMPILER::TAG-REF COMPILER::GET-INCLUDED)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
++-                  COMMON-LISP::*)
++-              (COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807)
++-              (COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807))
++-             COMMON-LISP::T)
++-         COMPILER::DASH-TO-UNDERSCORE-INT)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         COMPILER::INLINE-BOOLE3)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -29,332 +121,93 @@
++          COMPILER::TS COMPILER::DASH-TO-UNDERSCORE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
++-         COMPILER::C1NIL COMPILER::WT-DATA-FILE
++-         COMPILER::CLOSE-INLINE-BLOCKS COMPILER::WT-NEXT-VAR-ARG
++-         COMPILER::RESET-TOP COMPILER::VS-PUSH COMPILER::BABOON
++-         COMPILER::GAZONK-NAME COMPILER::PRINT-COMPILER-INFO
++-         COMPILER::ADD-LOAD-TIME-SHARP-COMMA COMPILER::INIT-ENV
++-         COMPILER::PRINT-CURRENT-FORM COMPILER::WT-C-PUSH COMPILER::C1T
++-         COMPILER::WT-FIRST-VAR-ARG COMPILER::CCB-VS-PUSH
++-         COMPILER::INC-INLINE-BLOCKS COMPILER::WT-CVARS
++-         COMPILER::WT-FASD-DATA-FILE COMPILER::WFS-ERROR
++-         COMPILER::WT-DATA-END COMPILER::TAIL-RECURSION-POSSIBLE
++-         COMPILER::CVS-PUSH COMPILER::WT-DATA-BEGIN)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::FIXNUM)
++-         COMPILER::ANALYZE-REGS1 COMPILER::ANALYZE-REGS
++-         COMPILER::PROCLAIMED-ARGD)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::CHECK-FNAME-ARGS COMPILER::COERCE-LOC
++-         COMPILER::TYPE>= COMPILER::C2BIND-LOC
++-         COMPILER::RESULT-TYPE-FROM-ARGS COMPILER::ADD-DEBUG-INFO
++-         COMPILER::MAKE-USER-INIT COMPILER::CO1EQL COMPILER::C2ASSOC!2
++-         COMPILER::WT-VAR COMPILER::CFAST-WRITE COMPILER::C2STACK-LET
++-         COMPILER::C2DM-BIND-INIT COMPILER::IS-REP-REFERRED
++-         COMPILER::CO1CONS COMPILER::SHIFT<<
++-         COMPILER::C2MULTIPLE-VALUE-SETQ COMPILER::C2CALL-LOCAL
++-         COMPILER::CO1SCHAR COMPILER::C1CONSTANT-VALUE
++-         COMPILER::WT-CHARACTER-VALUE COMPILER::CONVERT-CASE-TO-SWITCH
++-         COMPILER::C2MULTIPLE-VALUE-CALL COMPILER::C2EXPR-TOP
++-         COMPILER::CO1READ-BYTE COMPILER::PRIN1-CMP
++-         COMPILER::STRUCT-TYPE-OPT COMPILER::C1DECL-BODY
++-         COMPILER::COERCE-LOC-STRUCTURE-REF
++-         COMPILER::CO1STRUCTURE-PREDICATE COMPILER::WT-MAKE-DCLOSURE
++-         COMPILER::ARGS-INFO-CHANGED-VARS
++-         COMPILER::C2LIST-NTH-IMMEDIATE COMPILER::CO1LDB
++-         COMPILER::CO1WRITE-BYTE COMPILER::C1PROGN*
++-         COMPILER::CO1CONSTANT-FOLD COMPILER::SET-JUMP-TRUE
++-         COMPILER::C1SETQ1 COMPILER::CO1READ-CHAR COMPILER::C2BIND-INIT
++-         COMPILER::CO1TYPEP COMPILER::WT-FIXNUM-VALUE
++-         COMPILER::MULTIPLE-VALUE-CHECK COMPILER::SHIFT>>
++-         COMPILER::CO1SUBLIS COMPILER::DO-MACRO-EXPANSION
++-         COMPILER::C2UNWIND-PROTECT COMPILER::C2CALL-LAMBDA
++-         COMPILER::C2MEMBER!2 COMPILER::GET-INLINE-LOC
++-         COMPILER::C1LAMBDA-FUN COMPILER::JUMPS-TO-P COMPILER::C1EXPR*
++-         COMPILER::C2SETQ COMPILER::C2APPLY COMPILER::UNWIND-BDS
++-         COMPILER::SET-BDS-BIND COMPILER::NEED-TO-PROTECT
++-         COMPILER::C1FMLA COMPILER::TYPE-AND COMPILER::CMPFIX-ARGS
++-         COMPILER::MAYBE-EVAL COMPILER::C2BLOCK-CLB COMPILER::SET-DBIND
++-         COMPILER::C2LAMBDA-EXPR-WITHOUT-KEY
++-         COMPILER::WT-LONG-FLOAT-VALUE COMPILER::C2DM-BIND-VL
++-         COMPILER::WT-SHORT-FLOAT-VALUE COMPILER::T3SHARP-COMMA
++-         COMPILER::COMPILER-CLEAR-COMPILER-PROPERTIES COMPILER::C2CATCH
++-         COMPILER::C2EXPR-TOP* COMPILER::SET-JUMP-FALSE
++-         COMPILER::CO1VECTOR-PUSH COMPILER::WT-V*-MACROS
++-         COMPILER::ARGS-INFO-REFERRED-VARS COMPILER::SET-VS
++-         COMPILER::WT-REQUIREDS COMPILER::C2RETURN-CCB
++-         COMPILER::C2THROW COMPILER::CHECK-END
++-         COMPILER::PUSH-CHANGED-VARS COMPILER::C2BLOCK-CCB
++-         SYSTEM::ADD-DEBUG COMPILER::C2PSETQ COMPILER::C1ARGS
++-         COMPILER::COMPILER-CC COMPILER::INLINE-PROC
++-         COMPILER::CO1WRITE-CHAR COMPILER::COMPILER-DEF-HOOK
++-         COMPILER::CAN-BE-REPLACED COMPILER::C2MULTIPLE-VALUE-PROG1
++-         COMPILER::C2DM-BIND-LOC COMPILER::ADD-INFO
++-         COMPILER::CO1SPECIAL-FIX-DECL COMPILER::C2LAMBDA-EXPR-WITH-KEY
++-         COMPILER::FAST-READ COMPILER::C2RETURN-CLB
++-         COMPILER::PROCLAIM-VAR)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         COMPILER::COMPILE-FILE1)) 
+++         COMPILER::C2CALL-UNKNOWN-GLOBAL COMPILER::WT-IF-PROCLAIMED
+++         COMPILER::MY-CALL COMPILER::WT-GLOBAL-ENTRY
+++         COMPILER::T3DEFUN-NORMAL COMPILER::C2STRUCTURE-REF
+++         COMPILER::C2SWITCH COMPILER::C2CALL-GLOBAL
+++         COMPILER::T3DEFUN-VARARG COMPILER::C1MAKE-VAR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMPILER::MAKE-INLINE-STRING COMPILER::GET-INLINE-INFO
++-         COMPILER::C1STRUCTURE-REF1 COMPILER::CJF COMPILER::SET-VAR
++-         COMPILER::CHECK-FORM-TYPE COMPILER::AND-FORM-TYPE
++-         COMPILER::SUBLIS1-INLINE COMPILER::T3DEFCFUN
++-         COMPILER::WT-INLINE-INTEGER COMPILER::C-FUNCTION-NAME
++-         COMPILER::FIX-DOWN-ARGS COMPILER::ASSIGN-DOWN-VARS
++-         COMPILER::WT-INLINE-FIXNUM COMPILER::C2GO COMPILER::CJT
++-         COMPILER::TOO-FEW-ARGS COMPILER::C2PRINC COMPILER::C2CASE
++-         COMPILER::C2LET* COMPILER::BOOLE3 COMPILER::COMPILER-PASS2
++-         COMPILER::C1DM COMPILER::CHECK-VDECL COMPILER::C2LET
++-         COMPILER::MYSUB COMPILER::CAN-BE-REPLACED*
++-         COMPILER::ADD-FUNCTION-PROCLAMATION COMPILER::WT-IF-PROCLAIMED
++-         COMPILER::C1MAP-FUNCTIONS COMPILER::ADD-FAST-LINK
++-         COMPILER::WT-INLINE-LONG-FLOAT COMPILER::TOO-MANY-ARGS
++-         COMPILER::C2MULTIPLE-VALUE-BIND COMPILER::C2PROGV
++-         COMPILER::WT-INLINE-CHARACTER
++-         COMPILER::ADD-FUNCTION-DECLARATION COMPILER::CMP-EXPAND-MACRO
++-         COMPILER::C2MAPCAR COMPILER::INLINE-TYPE-MATCHES
++-         COMPILER::C2FUNCALL-SFUN COMPILER::WT-MAKE-CCLOSURE
++-         COMPILER::C2MAPCAN COMPILER::C2TAGBODY
++-         COMPILER::WT-INLINE-COND COMPILER::C2MAPC
++-         COMPILER::WT-INLINE-SHORT-FLOAT)) 
+++         COMPILER::LINK COMPILER::C2LAMBDA-EXPR COMPILER::C2FUNCALL
+++         COMPILER::INLINE-ARGS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::T3LOCAL-FUN COMPILER::T3LOCAL-DCFUN)) 
+++         COMPILER::WT-INLINE-INTEGER COMPILER::ADD-FUNCTION-DECLARATION
+++         COMPILER::C1STRUCTURE-REF1 COMPILER::ADD-FAST-LINK
+++         COMPILER::AND-FORM-TYPE COMPILER::C2PRINC COMPILER::C2MAPCAN
+++         COMPILER::CJT COMPILER::C2CASE COMPILER::WT-INLINE-LONG-FLOAT
+++         COMPILER::SUBLIS1-INLINE COMPILER::MYSUB
+++         COMPILER::ADD-FUNCTION-PROCLAMATION COMPILER::FIX-DOWN-ARGS
+++         COMPILER::TOO-MANY-ARGS COMPILER::CMP-EXPAND-MACRO
+++         COMPILER::C2MULTIPLE-VALUE-BIND COMPILER::C2GO
+++         COMPILER::WT-INLINE-FIXNUM COMPILER::WT-INLINE-COND
+++         COMPILER::C1MAP-FUNCTIONS COMPILER::C1DM
+++         COMPILER::WT-MAKE-CCLOSURE COMPILER::CAN-BE-REPLACED*
+++         COMPILER::C-FUNCTION-NAME COMPILER::C2LET* COMPILER::CJF
+++         COMPILER::TOO-FEW-ARGS COMPILER::BOOLE3 COMPILER::T3DEFCFUN
+++         COMPILER::C2FUNCALL-SFUN COMPILER::C2MAPC
+++         COMPILER::CHECK-FORM-TYPE COMPILER::SET-VAR
+++         COMPILER::C2TAGBODY COMPILER::CHECK-VDECL
+++         COMPILER::GET-INLINE-INFO COMPILER::ASSIGN-DOWN-VARS
+++         COMPILER::C2LET COMPILER::INLINE-TYPE-MATCHES
+++         COMPILER::COMPILER-PASS2 COMPILER::C2PROGV COMPILER::C2MAPCAR
+++         COMPILER::MAKE-INLINE-STRING COMPILER::WT-INLINE-CHARACTER
+++         COMPILER::WT-INLINE-SHORT-FLOAT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::T3DEFMACRO COMPILER::T3DEFENTRY COMPILER::T2DEFENTRY
++-         COMPILER::DEFSYSFUN COMPILER::T2DEFMACRO)) 
+++         COMPILER::T2DEFENTRY COMPILER::DEFSYSFUN COMPILER::T3DEFENTRY)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::T3DEFUN COMPILER::T3DEFUN-LOCAL-ENTRY
++-         COMPILER::C2STRUCTURE-SET COMPILER::T2DEFUN
+++         COMPILER::T3DEFUN-LOCAL-ENTRY COMPILER::T3INIT-FUN
+++         COMPILER::T2DEFUN COMPILER::T3DEFUN COMPILER::C2STRUCTURE-SET
++          COMPILER::C1APPLY-OPTIMIZE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         COMPILER::C2LAMBDA-EXPR COMPILER::C2FUNCALL
++-         COMPILER::INLINE-ARGS COMPILER::LINK)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         COMPILER::T3INIT-FUN COMPILER::C2STRUCTURE-REF
++-         COMPILER::WT-GLOBAL-ENTRY COMPILER::T3DEFUN-NORMAL
++-         COMPILER::T3DEFUN-VARARG COMPILER::C1MAKE-VAR
++-         COMPILER::C2SWITCH COMPILER::MY-CALL COMPILER::C2CALL-GLOBAL
++-         COMPILER::C2CALL-UNKNOWN-GLOBAL)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::*)
++              COMMON-LISP::T)
++          COMPILER::GET-OUTPUT-PATHNAME COMPILER::WT-SIMPLE-CALL)) 
++-(COMMON-LISP::MAPC
++-    (COMMON-LISP::LAMBDA (COMPILER::X)
++-      (COMMON-LISP::SETF
++-          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
++-          COMMON-LISP::T))
++-    '(COMPILER::CMP-ANON COMMON-LISP::COMPILE COMPILER::CMP-TMP-MACRO
++-         COMMON-LISP::DISASSEMBLE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
++-         COMPILER::MAKE-VAR COMPILER::COMPILER-COMMAND
++-         COMPILER::LIST*-INLINE COMMON-LISP::COMPILE-FILE
++-         COMPILER::CS-PUSH COMPILER::MAKE-INFO COMPILER::FCALLN-INLINE
++-         COMPILER::C2FSET COMPILER::MAKE-TAG COMPILER::WT-CLINK
++-         COMPILER::LIST-INLINE COMPILER::MAKE-FUN COMPILER::MAKE-BLK)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
++-         COMPILER::T1EVAL-WHEN COMPILER::T1EXPR
++-         COMPILER::WT-CHARACTER-LOC COMPILER::SET-LOC
++-         COMPILER::CMP-TOPLEVEL-EVAL COMPILER::C2PROGN
++-         COMPILER::WT-TO-STRING COMPILER::MEXPAND-DEFTYPE
++-         COMPILER::WT-SHORT-FLOAT-LOC COMPILER::CMP-EVAL
++-         COMPILER::WT-LOC COMPILER::C2AND COMPILER::C2EXPR
++-         COMPILER::WT-LONG-FLOAT-LOC COMPILER::C2OR
++-         COMPILER::WT-FIXNUM-LOC)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         COMPILER::LTVP-EVAL COMPILER::FSET-FN-NAME COMPILER::C1MAPCON
++-         COMPILER::FUNCTION-ARG-TYPES COMPILER::C1SHARP-COMMA
++-         COMPILER::SAVE-AVMA COMPILER::C2TAGBODY-CCB COMPILER::VAR-LOC
++-         COMPILER::WT-DOWN COMPILER::C1SETQ COMPILER::TAG-REF-CCB
++-         COMPILER::T1DEFINE-STRUCTURE COMPILER::SAVE-FUNOB
++-         COMPILER::C1VAR COMPILER::VV-STR COMPILER::C1RPLACA
++-         COMPILER::INFO-SP-CHANGE COMPILER::BLK-REF-CCB
++-         COMPILER::T1ORDINARY COMPILER::FIXNUM-LOC-P
++-         COMPILER::FUN-REF-CCB COMPILER::C2GET COMPILER::FUN-NAME
++-         COMPILER::FUN-P COMPILER::SCH-GLOBAL COMPILER::C1LET
++-         COMPILER::C2TAGBODY-CLB COMPILER::C1UNWIND-PROTECT
++-         COMPILER::SET-RETURN COMPILER::WT-VAR-DECL
++-         COMPILER::VAR-REGISTER COMPILER::C1DEFINE-STRUCTURE
++-         COMPILER::LTVP COMPILER::INLINE-POSSIBLE COMPILER::CHECK-VREF
++-         COMPILER::TAG-NAME COMPILER::C2DM-RESERVE-VL
++-         COMPILER::VAR-TYPE COMPILER::WT-LIST COMPILER::C1LET*
++-         COMPILER::VARARG-P COMPILER::C1LOAD-TIME-VALUE
++-         COMPILER::C2FUNCALL-AUX COMPILER::INFO-TYPE COMPILER::C1GET
++-         COMPILER::C1NTHCDR-CONDITION COMPILER::C1AND
++-         COMPILER::C1MULTIPLE-VALUE-CALL COMPILER::C1RPLACA-NTHCDR
++-         COMPILER::INFO-VOLATILE COMPILER::INLINE-TYPE
++-         COMPILER::LONG-FLOAT-LOC-P COMPILER::INFO-CHANGED-ARRAY
++-         SYSTEM::UNDEF-COMPILER-MACRO COMPILER::DECL-BODY-SAFETY
++-         COMPILER::TAG-VAR COMPILER::CHARACTER-LOC-P COMPILER::C2BIND
++-         COMPILER::C1DECLARE COMPILER::CONS-TO-LISTA
++-         COMPILER::C1MULTIPLE-VALUE-SETQ COMPILER::NAME-SD1
++-         COMPILER::BLK-NAME COMPILER::PARSE-CVSPECS COMPILER::C1MAPL
++-         COMPILER::AET-C-TYPE COMPILER::C2VAR COMPILER::COPY-INFO
++-         COMPILER::C1PSETQ COMPILER::C1VREF COMPILER::FUN-REF
++-         COMPILER::WT-H1 COMPILER::T1DEFCFUN COMPILER::T1PROGN
++-         COMPILER::C1EVAL-WHEN COMPILER::FLAGS-POS COMPILER::WT-VS
++-         COMPILER::C2VAR-KIND COMPILER::C1LENGTH
++-         COMPILER::C1MULTIPLE-VALUE-BIND COMPILER::C2LOCATION
++-         COMPILER::C2DM-RESERVE-V COMPILER::C2FUNCTION
++-         COMPILER::WT-SWITCH-CASE COMPILER::C2TAGBODY-LOCAL
++-         COMPILER::CONSTANT-FOLD-P COMPILER::NEED-TO-SET-VS-POINTERS
++-         COMPILER::C1MAPCAN COMPILER::WT-FUNCALL-C COMPILER::WT-CCB-VS
++-         COMPILER::C1RETURN-FROM COMPILER::GET-INCLUDED
++-         COMPILER::C1BLOCK COMPILER::ADD-CONSTANT COMPILER::WT-VS-BASE
++-         COMPILER::C1NTH-CONDITION COMPILER::FUN-LEVEL
++-         COMPILER::UNWIND-NO-EXIT COMMON-LISP::PROCLAIM
++-         COMPILER::C1PRINC COMPILER::C2EXPR* COMPILER::RESULT-TYPE
++-         COMPILER::TAG-REF COMPILER::C1FUNCALL COMPILER::C1PROGN
++-         COMPILER::MAXARGS COMPILER::UNDEFINED-VARIABLE COMPILER::C1THE
++-         COMPILER::CMP-MACROEXPAND COMPILER::C1MAPCAR
++-         COMPILER::DEFAULT-INIT COMPILER::C1STRUCTURE-SET
++-         COMPILER::WT-SYMBOL-FUNCTION COMPILER::T1DEFUN
++-         COMPILER::WT-DATA1 COMPILER::PUSH-DATA-INCF COMPILER::C1IF
++-         COMPILER::C1NTHCDR COMPILER::ADD-SYMBOL
++-         COMPILER::C1MULTIPLE-VALUE-PROG1 COMPILER::BLK-REF
++-         COMPILER::WT-FUNCTION-LINK COMPILER::INFO-P COMPILER::C1FSET
++-         COMPILER::C1PROGV COMPILER::C1ASSOC COMPILER::VAR-REF
++-         COMPILER::ARGS-CAUSE-SIDE-EFFECT COMPILER::MDELETE-FILE
++-         COMPILER::CMP-MACRO-FUNCTION COMPILER::C2DOWNWARD-FUNCTION
++-         COMPILER::C2GO-LOCAL COMPILER::T1DEFLA COMPILER::VAR-REF-CCB
++-         COMPILER::C1FLET COMPILER::C1LIST-NTH
++-         COMPILER::ADD-LOOP-REGISTERS COMPILER::INFO-REFERRED-ARRAY
++-         COMPILER::BLK-VALUE-TO-GO COMPILER::WT-VS*
++-         COMPILER::NAME-TO-SD COMPILER::C1RPLACD
++-         COMPILER::WT-DATA-PACKAGE-OPERATION COMPILER::C1SWITCH
++-         COMPILER::C1CATCH COMPILER::WT-CAR COMPILER::C1MACROLET
++-         COMPILER::OBJECT-TYPE COMPILER::C1MAPC COMPILER::T1CLINES
++-         COMPILER::C1COMPILER-LET COMPILER::CMP-MACROEXPAND-1
++-         COMPILER::C1TAGBODY COMPILER::C1MAPLIST COMPILER::PUSH-ARGS
++-         COMPILER::T3ORDINARY COMPILER::C1MEMBER COMPILER::T1MACROLET
++-         COMPILER::WT-CDR COMPILER::C1BOOLE3 COMPILER::PROCLAMATION
++-         COMPILER::GET-LOCAL-RETURN-TYPE COMPILER::C1LOCAL-FUN
++-         COMPILER::VAR-KIND COMPILER::WT1 COMPILER::TAG-SWITCH
++-         COMPILER::C1OR COMPILER::C1STRUCTURE-REF
++-         COMPILER::THE-PARAMETER COMPILER::VAR-REP-LOC
++-         COMPILER::DECLARATION-TYPE COMPILER::TAG-P COMPILER::C2GETHASH
++-         COMPILER::C1EXPR COMPILER::REPLACE-CONSTANT COMPILER::C1ECASE
++-         COMPILER::FUN-CFUN COMPILER::SET-TOP COMPILER::TAG-LABEL
++-         COMPILER::C1DM-BAD-KEY COMPILER::C1THROW COMPILER::C2GO-CCB
++-         COMPILER::REP-TYPE COMPILER::C2VALUES
++-         COMPILER::SHORT-FLOAT-LOC-P COMPILER::FUNCTION-RETURN-TYPE
++-         COMPILER::ADD-OBJECT COMPILER::CTOP-WRITE COMPILER::C1MEMQ
++-         COMPILER::WT-DOWNWARD-CLOSURE-MACRO COMPILER::C1TERPRI
++-         COMPILER::T1DEFMACRO COMPILER::T3CLINES COMPILER::ADD-REG1
++-         COMPILER::C1NTH COMPILER::C1ASH COMPILER::C1FMLA-CONSTANT
++-         COMPILER::C2GO-CLB COMPILER::WT-CADR
++-         COMPILER::C1BOOLE-CONDITION COMPILER::CLINK COMPILER::VAR-NAME
++-         COMPILER::PUSH-ARGS-LISPCALL COMPILER::GET-ARG-TYPES
++-         COMPILER::BLK-VAR COMPILER::C1APPLY COMPILER::CHECK-DOWNWARD
++-         COMPILER::C1QUOTE COMPILER::TAG-REF-CLB
++-         COMPILER::GET-LOCAL-ARG-TYPES COMPILER::REGISTER
++-         COMPILER::BLK-P COMPILER::FUN-INFO COMPILER::C2RPLACD
++-         COMPILER::ADD-OBJECT2 COMPILER::C2TAGBODY-BODY
++-         COMPILER::T1DEFENTRY COMPILER::C1FUNCTION
++-         COMPILER::C1DOWNWARD-FUNCTION COMPILER::SAFE-SYSTEM
++-         COMPILER::C1GO COMPILER::BLK-EXIT COMPILER::VERIFY-DATA-VECTOR
++-         COMPILER::C2RPLACA COMPILER::T2DECLARE COMPILER::MACRO-DEF-P
++-         COMPILER::C1LABELS COMPILER::C1GETHASH COMPILER::FIX-OPT
++-         COMPILER::SCH-LOCAL-FUN COMPILER::C1FUNOB
++-         COMPILER::SET-PUSH-CATCH-FRAME COMPILER::GET-RETURN-TYPE
++-         COMPILER::SET-UP-VAR-CVS COMPILER::TAG-UNWIND-EXIT
++-         COMPILER::VAR-P COMPILER::C1ADD-GLOBALS COMPILER::TYPE-FILTER
++-         COMPILER::WT-VV COMPILER::C1ASH-CONDITION COMPILER::VOLATILE
++-         COMPILER::INLINE-BOOLE3-STRING COMPILER::C1LOCAL-CLOSURE
++-         COMPILER::WRITE-BLOCK-OPEN COMPILER::ADD-ADDRESS
++-         COMPILER::RESET-INFO-TYPE COMPILER::C1VALUES
++-         COMPILER::BLK-REF-CLB COMPILER::C1STACK-LET)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
++-         COMPILER::INLINE-BOOLE3)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807))
++-             COMMON-LISP::T)
++-         COMPILER::MEMOIZED-HASH-EQUAL)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         COMPILER::WT-INLINE-LOC COMPILER::NCONC-FILES
++-         COMPILER::COMPILER-BUILD COMPILER::C2BLOCK-LOCAL
++-         COMPILER::C2DECL-BODY COMPILER::C1SYMBOL-FUN COMPILER::C2BLOCK
++-         COMPILER::C1BODY COMPILER::C2RETURN-LOCAL)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMPILER::C1LAMBDA-EXPR COMPILER::CMPWARN COMPILER::ADD-INIT
++-         COMPILER::UNWIND-EXIT COMPILER::CMPNOTE COMPILER::CMPERR
++-         COMPILER::C1CASE COMPILER::WT-COMMENT COMPILER::INIT-NAME
++-         COMPILER::FAST-LINK-PROCLAIMED-TYPE-P COMPILER::WT-INTEGER-LOC
++-         COMPILER::WT-CVAR)) 
+++         COMPILER::T3LOCAL-DCFUN COMPILER::T3LOCAL-FUN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::*)
++-         COMPILER::C2IF COMPILER::WT-INLINE COMPILER::C2COMPILER-LET
++-         COMPILER::C2FLET COMPILER::C2LABELS)) 
+++         COMPILER::C2LABELS COMPILER::C2FLET COMPILER::C2IF
+++         COMPILER::WT-INLINE COMPILER::C2COMPILER-LET)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++              COMMON-LISP::*)
++-         COMPILER::C2RETURN-FROM COMPILER::C2APPLY-OPTIMIZE
++-         COMPILER::C2DM COMPILER::C1DM-V COMPILER::C1DM-VL)) 
+++         COMPILER::C2RETURN-FROM COMPILER::C2DM COMPILER::C1DM-VL
+++         COMPILER::C2APPLY-OPTIMIZE COMPILER::C1DM-V)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -363,6 +216,36 @@
++          COMPILER::T3DEFUN-AUX)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         COMPILER::C2PROGN COMPILER::WT-LONG-FLOAT-LOC
+++         COMPILER::WT-CHARACTER-LOC COMPILER::WT-TO-STRING
+++         COMPILER::WT-LOC COMPILER::MEXPAND-DEFTYPE
+++         COMPILER::CMP-TOPLEVEL-EVAL COMPILER::T1EVAL-WHEN
+++         COMPILER::T1EXPR COMPILER::C2OR COMPILER::WT-FIXNUM-LOC
+++         COMPILER::C2EXPR COMPILER::C2AND COMPILER::CMP-EVAL
+++         COMPILER::SET-LOC COMPILER::WT-SHORT-FLOAT-LOC)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         COMPILER::MAKE-INFO COMPILER::FCALLN-INLINE
+++         COMPILER::LIST-INLINE COMPILER::LIST*-INLINE
+++         COMPILER::COMPILER-COMMAND COMPILER::MAKE-BLK
+++         COMPILER::MAKE-FUN COMPILER::WT-CLINK COMPILER::C2FSET
+++         COMPILER::MAKE-TAG COMPILER::CS-PUSH COMPILER::MAKE-VAR
+++         COMMON-LISP::COMPILE-FILE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         COMPILER::F-TYPE)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(COMMON-LISP::DISASSEMBLE COMPILER::CMP-TMP-MACRO
+++         COMPILER::CMP-ANON COMMON-LISP::COMPILE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              ((COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*)))
++              COMMON-LISP::T)
++@@ -374,11 +257,9 @@
++                  (COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*))
++                  (COMMON-LISP::INTEGER -9223372036854775808
++                      9223372036854775807)
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807)
++                  COMMON-LISP::T)
++              COMMON-LISP::FIXNUM)
++-         COMPILER::BSEARCHLEQ)) 
+++         COMPILER::PUSH-ARRAY)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -386,10 +267,148 @@
++                  (COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*))
++                  (COMMON-LISP::INTEGER -9223372036854775808
++                      9223372036854775807)
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
++                  COMMON-LISP::T)
++              COMMON-LISP::FIXNUM)
++-         COMPILER::PUSH-ARRAY)) 
+++         COMPILER::BSEARCHLEQ)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
++-         COMPILER::F-TYPE)) 
++\ No newline at end of file
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::T)
+++         COMPILER::DASH-TO-UNDERSCORE-INT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::T)
+++         COMPILER::MLIN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807))
+++             COMMON-LISP::T)
+++         COMPILER::MEMOIZED-HASH-EQUAL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         COMPILER::MACRO-ENV COMPILER::C1T COMPILER::PRINT-CURRENT-FORM
+++         COMPILER::CCB-VS-PUSH COMPILER::C1NIL
+++         COMPILER::WT-FASD-DATA-FILE COMPILER::INIT-ENV
+++         COMPILER::WT-CVARS COMPILER::CVS-PUSH
+++         COMPILER::WT-FIRST-VAR-ARG COMPILER::WT-NEXT-VAR-ARG
+++         COMPILER::WT-DATA-FILE COMPILER::WT-C-PUSH
+++         COMPILER::GAZONK-NAME COMPILER::WT-DATA-END
+++         COMPILER::INC-INLINE-BLOCKS COMPILER::TAIL-RECURSION-POSSIBLE
+++         COMPILER::RESET-TOP COMPILER::CLOSE-INLINE-BLOCKS
+++         COMPILER::PRINT-COMPILER-INFO COMPILER::WFS-ERROR
+++         COMPILER::VS-PUSH COMPILER::BABOON COMPILER::WT-DATA-BEGIN
+++         COMPILER::ADD-LOAD-TIME-SHARP-COMMA)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         COMPILER::PROCLAIMED-ARGD COMPILER::ANALYZE-REGS1
+++         COMPILER::ANALYZE-REGS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMPILER::UNWIND-EXIT COMPILER::WT-COMMENT COMPILER::CMPERR
+++         COMPILER::WT-CVAR COMPILER::FAST-LINK-PROCLAIMED-TYPE-P
+++         COMPILER::C1CASE COMPILER::CMPWARN COMPILER::ADD-INIT
+++         COMPILER::INIT-NAME COMPILER::WT-INTEGER-LOC COMPILER::CMPNOTE
+++         COMPILER::C1LAMBDA-EXPR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         COMPILER::C2BLOCK COMPILER::C1SYMBOL-FUN
+++         COMPILER::C2BLOCK-LOCAL COMPILER::C2DECL-BODY
+++         COMPILER::COMPILER-BUILD COMPILER::NCONC-FILES
+++         COMPILER::WT-INLINE-LOC COMPILER::C2RETURN-LOCAL
+++         COMPILER::C1BODY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMPILER::WT-FIXNUM-VALUE COMPILER::DOLIST** COMPILER::CO1LDB
+++         COMPILER::PUSH-REFERRED-WITH-START COMPILER::C2ASSOC!2
+++         COMPILER::ADD-DEBUG-INFO COMPILER::WT-CHARACTER-VALUE
+++         COMPILER::MAYBE-WT-C2DM-BIND-VL COMPILER::C2BIND-LOC
+++         COMPILER::C2CATCH COMPILER::DO-REFERRED COMPILER::C2BLOCK-CLB
+++         COMPILER::CO1CONSTANT-FOLD COMPILER::C2CALL-LOCAL
+++         COMPILER::SHIFT<< COMPILER::C2UNWIND-PROTECT
+++         COMPILER::C2MULTIPLE-VALUE-SETQ COMPILER::C2DM-BIND-VL
+++         COMPILER::DOTIMES* COMPILER::REFERRED-LENGTH COMPILER::C1ARGS
+++         COMPILER::CK-SPEC COMPILER::C2MULTIPLE-VALUE-CALL
+++         COMPILER::C2CALL-LAMBDA COMPILER::CO1READ-BYTE
+++         COMPILER::CO1VECTOR-PUSH COMPILER::STACK-LET COMPILER::CMPCK
+++         COMPILER::MAYBE-EVAL COMPILER::COERCE-LOC COMPILER::C2PSETQ
+++         SYSTEM::DEFINE-INLINE-FUNCTION COMPILER::WT-MAKE-DCLOSURE
+++         COMPILER::COMPILER-CC COMPILER::WT-GO COMPILER::C1LAMBDA-FUN
+++         COMPILER::C2RETURN-CLB COMPILER::C1DECL-BODY
+++         COMPILER::PUSH-CHANGED-VARS COMPILER::GET-INLINE-LOC
+++         COMPILER::CO1SUBLIS COMPILER::CHANGED-LENGTH COMPILER::CO1CONS
+++         COMPILER::ARGS-INFO-REFERRED-VARS COMPILER::SET-JUMP-FALSE
+++         COMPILER::MAKE-USER-INIT COMPILER::NEXT-CVAR
+++         COMPILER::CAN-BE-REPLACED COMPILER::WT-V*-MACROS
+++         COMPILER::NEXT-CMACRO COMPILER::C2RETURN-CCB
+++         COMPILER::CO1SCHAR COMPILER::IS-CHANGED
+++         COMMON-LISP::DEFINE-COMPILER-MACRO COMPILER::SET-DBIND
+++         COMPILER::WT-H COMPILER::COERCE-LOC-STRUCTURE-REF
+++         COMPILER::C1EXPR* COMPILER::IS-REFERRED COMPILER::SHIFT>>
+++         COMPILER::WT COMPILER::TYPE-AND COMPILER::PRIN1-CMP
+++         COMPILER::C2BIND-INIT COMPILER::RESULT-TYPE-FROM-ARGS
+++         COMPILER::EQL-NOT-NIL COMPILER::C2APPLY COMPILER::C2BLOCK-CCB
+++         COMPILER::WT-NL1 COMPILER::CO1WRITE-CHAR COMPILER::CFAST-WRITE
+++         COMPILER::NEED-TO-PROTECT COMPILER::T3SHARP-COMMA
+++         SYSTEM::ADD-DEBUG COMPILER::BIGNUM-EXPANSION-STORAGE
+++         COMPILER::C2SETQ COMPILER::FLAG-P
+++         COMPILER::PUSH-CHANGED-WITH-START COMPILER::CMPFIX-ARGS
+++         COMPILER::CO1STRUCTURE-PREDICATE COMPILER::FAST-READ
+++         COMPILER::C1CONSTANT-VALUE COMPILER::BASE-USED
+++         COMPILER::PROCLAIM-VAR COMPILER::CO1TYPEP
+++         COMPILER::SET-JUMP-TRUE COMPILER::TYPE>= COMPILER::DOTIMES**
+++         COMPILER::CONVERT-CASE-TO-SWITCH COMPILER::C2MEMBER!2
+++         COMPILER::DO-CHANGED COMPILER::ADD-INFO COMPILER::SET-VS
+++         COMPILER::CHECK-FNAME-ARGS
+++         COMPILER::COMPILER-CLEAR-COMPILER-PROPERTIES
+++         COMPILER::C2MULTIPLE-VALUE-PROG1 COMPILER::NEXT-LABEL*
+++         COMPILER::WT-VAR COMPILER::C2THROW COMPILER::INLINE-PROC
+++         COMPILER::PUSH-REFERRED COMPILER::C2LIST-NTH-IMMEDIATE
+++         COMPILER::C1FMLA COMPILER::PUSH-CHANGED
+++         COMPILER::MULTIPLE-VALUE-CHECK COMPILER::MIA
+++         COMPILER::WT-LABEL COMPILER::WT-NL
+++         COMPILER::WT-SHORT-FLOAT-VALUE COMPILER::SET-BDS-BIND
+++         COMPILER::DO-ARRAY COMPILER::WT-REQUIREDS
+++         COMPILER::C2EXPR-TOP* COMPILER::C2DM-BIND-LOC
+++         COMPILER::DOLIST* SYSTEM::SWITCH-FINISH
+++         COMPILER::IS-REP-REFERRED COMPILER::WT-LONG-FLOAT-VALUE
+++         COMPILER::C1SETQ1 COMPILER::FLAGS COMPILER::CO1EQL
+++         COMPILER::CHECK-END COMPILER::NEXT-LABEL COMPILER::CK-VL
+++         COMPILER::ARGS-INFO-CHANGED-VARS COMPILER::C1PROGN*
+++         COMPILER::C2DM-BIND-INIT COMPILER::STRUCT-TYPE-OPT
+++         COMPILER::UNWIND-BDS COMPILER::SAFE-COMPILE
+++         COMPILER::CO1READ-CHAR COMPILER::JUMPS-TO-P SYSTEM::SWITCH
+++         COMPILER::NEXT-CFUN COMPILER::CO1WRITE-BYTE
+++         COMPILER::DOWNWARD-FUNCTION COMPILER::COMPILER-DEF-HOOK
+++         COMPILER::C2STACK-LET COMPILER::C2EXPR-TOP
+++         COMPILER::C2LAMBDA-EXPR-WITH-KEY COMPILER::IN-ARRAY
+++         COMPILER::C2LAMBDA-EXPR-WITHOUT-KEY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMPILER::COMPILE-FILE1)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/config.sub
+++++ gcl-2.6.12/config.sub
++@@ -1,8 +1,8 @@
++ #! /bin/sh
++ # Configuration validation subroutine script.
++-#   Copyright 1992-2014 Free Software Foundation, Inc.
+++#   Copyright 1992-2015 Free Software Foundation, Inc.
++ 
++-timestamp='2014-05-01'
+++timestamp='2015-08-20'
++ 
++ # This file is free software; you can redistribute it and/or modify it
++ # under the terms of the GNU General Public License as published by
++@@ -25,7 +25,7 @@ timestamp='2014-05-01'
++ # of the GNU General Public License, version 3 ("GPLv3").
++ 
++ 
++-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+++# Please send patches to <config-patches@gnu.org>.
++ #
++ # Configuration subroutine to validate and canonicalize a configuration type.
++ # Supply the specified configuration type as an argument.
++@@ -68,7 +68,7 @@ Report bugs and patches to <config-patch
++ version="\
++ GNU config.sub ($timestamp)
++ 
++-Copyright 1992-2014 Free Software Foundation, Inc.
+++Copyright 1992-2015 Free Software Foundation, Inc.
++ 
++ This is free software; see the source for copying conditions.  There is NO
++ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
++@@ -117,7 +117,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-
++ case $maybe_os in
++   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
++   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
++-  knetbsd*-gnu* | netbsd*-gnu* | \
+++  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
++   kopensolaris*-gnu* | \
++   storm-chaos* | os2-emx* | rtmk-nova*)
++     os=-$maybe_os
++@@ -255,12 +255,13 @@ case $basic_machine in
++      | arc | arceb \
++      | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
++      | avr | avr32 \
+++     | ba \
++      | be32 | be64 \
++      | bfin \
++      | c4x | c8051 | clipper \
++      | d10v | d30v | dlx | dsp16xx \
++-     | epiphany \
++-     | fido | fr30 | frv \
+++     | e2k | epiphany \
+++     | fido | fr30 | frv | ft32 \
++      | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
++      | hexagon \
++      | i370 | i860 | i960 | ia64 \
++@@ -302,9 +303,10 @@ case $basic_machine in
++      | pdp10 | pdp11 | pj | pjl \
++      | powerpc | powerpc64 | powerpc64le | powerpcle \
++      | pyramid \
+++     | riscv32 | riscv64 \
++      | rl78 | rx \
++      | score \
++-     | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+++     | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
++      | sh64 | sh64le \
++      | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
++      | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
++@@ -312,6 +314,7 @@ case $basic_machine in
++      | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
++      | ubicom32 \
++      | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+++     | visium \
++      | we32k \
++      | x86 | xc16x | xstormy16 | xtensa \
++      | z8k | z80)
++@@ -326,6 +329,9 @@ case $basic_machine in
++      c6x)
++              basic_machine=tic6x-unknown
++              ;;
+++     leon|leon[3-9])
+++             basic_machine=sparc-$basic_machine
+++             ;;
++      m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
++              basic_machine=$basic_machine-unknown
++              os=-none
++@@ -371,12 +377,13 @@ case $basic_machine in
++      | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
++      | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
++      | avr-* | avr32-* \
+++     | ba-* \
++      | be32-* | be64-* \
++      | bfin-* | bs2000-* \
++      | c[123]* | c30-* | [cjt]90-* | c4x-* \
++      | c8051-* | clipper-* | craynv-* | cydra-* \
++      | d10v-* | d30v-* | dlx-* \
++-     | elxsi-* \
+++     | e2k-* | elxsi-* \
++      | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
++      | h8300-* | h8500-* \
++      | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
++@@ -423,12 +430,13 @@ case $basic_machine in
++      | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
++      | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
++      | pyramid-* \
+++     | riscv32-* | riscv64-* \
++      | rl78-* | romp-* | rs6000-* | rx-* \
++      | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
++      | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
++      | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
++      | sparclite-* \
++-     | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+++     | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
++      | tahoe-* \
++      | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
++      | tile*-* \
++@@ -436,6 +444,7 @@ case $basic_machine in
++      | ubicom32-* \
++      | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
++      | vax-* \
+++     | visium-* \
++      | we32k-* \
++      | x86-* | x86_64-* | xc16x-* | xps100-* \
++      | xstormy16-* | xtensa*-* \
++@@ -512,6 +521,9 @@ case $basic_machine in
++              basic_machine=i386-pc
++              os=-aros
++              ;;
+++        asmjs)
+++             basic_machine=asmjs-unknown
+++             ;;
++      aux)
++              basic_machine=m68k-apple
++              os=-aux
++@@ -773,6 +785,9 @@ case $basic_machine in
++              basic_machine=m68k-isi
++              os=-sysv
++              ;;
+++     leon-*|leon[3-9]-*)
+++             basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+++             ;;
++      m68knommu)
++              basic_machine=m68k-unknown
++              os=-linux
++@@ -828,6 +843,10 @@ case $basic_machine in
++              basic_machine=powerpc-unknown
++              os=-morphos
++              ;;
+++     moxiebox)
+++             basic_machine=moxie-unknown
+++             os=-moxiebox
+++             ;;
++      msdos)
++              basic_machine=i386-pc
++              os=-msdos
++@@ -1360,7 +1379,7 @@ case $os in
++            | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
++            | -sym* | -kopensolaris* | -plan9* \
++            | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
++-           | -aos* | -aros* \
+++           | -aos* | -aros* | -cloudabi* | -sortix* \
++            | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
++            | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
++            | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
++@@ -1373,7 +1392,7 @@ case $os in
++            | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
++            | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
++            | -linux-newlib* | -linux-musl* | -linux-uclibc* \
++-           | -uxpv* | -beos* | -mpeix* | -udk* \
+++           | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
++            | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
++            | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
++            | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
++--- gcl-2.6.12.orig/h/att_ext.h
+++++ gcl-2.6.12/h/att_ext.h
++@@ -257,8 +257,8 @@ object cddddr();
++ object nth();
++ object nthcdr();
++ object make_cons();
++-object list(int,...);
++-object listA(int,...);
+++object list(fixnum,...);
+++object listA(fixnum,...);
++ object append();
++ object copy_list();
++ object make_list();
++@@ -399,6 +399,8 @@ object coerce_to_namestring();
++ EXTER object sKupcase;
++ EXTER object sKdowncase;
++ EXTER object sKcapitalize;
+++EXTER object sKpreserve;
+++EXTER object sKinvert;
++ EXTER object sKstream;
++ EXTER object sKreadably;
++ EXTER object sKescape;
++--- gcl-2.6.12.orig/h/compdefs.h
+++++ gcl-2.6.12/h/compdefs.h
++@@ -51,7 +51,6 @@ complex
++ I
++ NOT_SPECIAL
++ VOL
++-compiled_functionp(x)
++ mpz_even_p(x)
++ mpz_odd_p(x)
++ mpz_sgn(x)
++@@ -115,5 +114,12 @@ SIGNED_CHAR(x)
++ FEerror(x,y...)
++ FEwrong_type_argument(x,y)
++ BIT_ENDIAN(x)
+++integerp(x)
+++rationalp(x)
+++floatp(x)
+++realp(x)
+++numberp(x)
+++vectorp(x)
+++arrayp(x)
+++compiled_function_p(x)
++ pathname_designatorp(x)
++-pathnamep(x)
++--- gcl-2.6.12.orig/h/compprotos.h
+++++ gcl-2.6.12/h/compprotos.h
++@@ -27,8 +27,8 @@ object get_lcm(object,object);
++ object integer_count(object);
++ object integer_length(object);
++ object integer_shift(object,object);
++-object listA(int,...);
++-object list(int,...);
+++object listA(fixnum,...);
+++object list(fixnum,...);
++ object log_op2(fixnum,object,object);
++ object make_cons(object,object);
++ object make_fixnum1(long);
++--- gcl-2.6.12.orig/h/elf64_mips_reloc.h
+++++ gcl-2.6.12/h/elf64_mips_reloc.h
++@@ -22,14 +22,33 @@
++     case R_MIPS_GOT_DISP:
++     case R_MIPS_CALL16:
++     case R_MIPS_GOT_PAGE:
+++    case R_MIPS_GOT_HI16:
+++    case R_MIPS_GOT_LO16:
+++    case R_MIPS_CALL_HI16:
+++    case R_MIPS_CALL_LO16:
++       recurse(s+a);
++       gote=got+(a>>32)-1;
++       a&=MASK(32);
++-      store_val(where,MASK(16),((void *)gote-(void *)got));
++       if (s>=ggot && s<ggote) {
++         massert(!write_stub(s,got,gote));
++       } else
++         *gote=s+(a&~MASK(16))+((a&0x8000)<<1);
+++      ((Rela *)r)->r_addend=((void *)gote-(void *)got)-s;
+++      switch(tp) {
+++        case R_MIPS_GOT_HI16:
+++        case R_MIPS_CALL_HI16:
+++       r->r_info=((ul)R_MIPS_HI16<<56)|(r->r_info&MASK(32));
+++       relocate(sym1,r,((Rela *)r)->r_addend,start,got,gote);
+++       break;
+++        case R_MIPS_GOT_LO16:
+++        case R_MIPS_CALL_LO16:
+++       r->r_info=((ul)R_MIPS_LO16<<56)|(r->r_info&MASK(32));
+++       relocate(sym1,r,((Rela *)r)->r_addend,start,got,gote);
+++       break;
+++        default:
+++       store_val(where,MASK(16),((void *)gote-(void *)got));
+++       break;
+++      }
++       break;
++     case R_MIPS_GOT_OFST:
++       recurse(s+a);
++--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf64_mips_reloc_special.h
++@@ -108,6 +108,10 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++       for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++      if (ELF_R_TYPE(r->r_info)==R_MIPS_CALL16||
++          ELF_R_TYPE(r->r_info)==R_MIPS_GOT_DISP||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_GOT_HI16||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_GOT_LO16||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_CALL_HI16||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_CALL_LO16||
++          ELF_R_TYPE(r->r_info)==R_MIPS_GOT_PAGE) {
++ 
++        sym=sym1+ELF_R_SYM(r->r_info);
++--- gcl-2.6.12.orig/h/lu.h
+++++ gcl-2.6.12/h/lu.h
++@@ -143,7 +143,7 @@ struct hashtable {
++   int ht_size;
++   short ht_test;
++   short ht_static;
++-  SPAD;
+++  struct htent *ht_cache;
++ 
++ };
++ 
++@@ -290,6 +290,8 @@ struct random {
++ struct readtable {
++   FIRSTWORD;
++   struct rtent *rt_self;
+++  object rt_case;
+++  SPAD;
++ };
++ 
++ struct pathname {
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -373,3 +373,4 @@ typedef struct {void *a,*b,*c,*d;} gmp_r
++ EXTER gmp_randfnptr_t Mersenne_Twister_Generator_Noseed;
++ #endif
++ 
+++#define collect(p_,f_) (p_)=&(*(p_)=(f_))->c.c_cdr
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -249,6 +249,9 @@ struct freelist {
++ #define FL_LINK F_LINK
++ #define SET_LINK(x,val) F_LINK(x) = (address_int) (val)
++ #define OBJ_LINK(x) ((object) INT_TO_ADDRESS(F_LINK(x)))
+++#define PHANTOM_FREELIST(x) ({struct freelist f;(object)((void *)&x+((void *)&f-(void *)&f.f_link));})
+++#define FREELIST_TAIL(tm_) ({struct typemanager *_tm=tm_;\
+++      _tm->tm_free==OBJNULL ? PHANTOM_FREELIST(_tm->tm_free) : _tm->tm_tail;})
++ 
++ #define      FREE    (-1)            /*  free object  */
++ 
++@@ -261,6 +264,8 @@ struct typemanager {
++   long      tm_nppage;           /*  number per page  */
++   object    tm_free;             /*  free list  */
++                               /*  Note that it is of type object.  */
+++  object    tm_tail;             /*  free list tail  */
+++                              /*  Note that it is of type object.  */
++   long           tm_nfree;            /*  number of free elements  */
++   long           tm_npage;            /*  number of pages  */
++   long           tm_maxpage;          /*  maximum number of pages  */
++@@ -562,6 +567,9 @@ EXTER unsigned plong signals_allowed, si
++ /* #define equal(a_,b_)  ({register object _a=(a_);register object _b=(b_);_a==_b || (!IMMNIL(_a)&&!IMMNIL(_b)&&equal1(_a,_b));}) */
++ /* #define equalp(a_,b_) ({register object _a=(a_);register object _b=(b_);_a==_b || (_a!=Cnil&&_b!=Cnil&&equalp1(_a,_b));}) */
++ 
++-#define eql(a_,b_)    ({register object _a=(a_);register object _b=(b_);_a==_b ? TRUE : (IMMNIL(_a)||IMMNIL(_b) ? FALSE : eql1(_a,_b));})
+++#define eql_is_eq(a_) (is_imm_fixnum(a_)||valid_cdr(a_)||(a_->d.t>t_complex))
+++
+++#define eql(a_,b_)    ({register object _a=(a_);register object _b=(b_);\
+++      _a==_b ? TRUE : (eql_is_eq(_a)||eql_is_eq(_b)||_a->d.t!=_b->d.t ? FALSE : eql1(_a,_b));})
++ #define equal(a_,b_)  ({register object _a=(a_);register object _b=(b_);_a==_b ? TRUE : (IMMNIL(_a)||IMMNIL(_b) ? FALSE : equal1(_a,_b));})
++ #define equalp(a_,b_) ({register object _a=(a_);register object _b=(b_);_a==_b ? TRUE : (_a==Cnil||_b==Cnil ? FALSE : equalp1(_a,_b));})
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1961,3 +1961,6 @@ do_gcl_abort(void);
++ 
++ int
++ vsystem(const char *);
+++
+++object
+++n_cons_from_x(fixnum,object);
++--- gcl-2.6.12.orig/h/type.h
+++++ gcl-2.6.12/h/type.h
++@@ -134,7 +134,7 @@ enum smmode {                     /*  stream mode  */
++ #define fixnump(a_)    SPP(a_,fixnum)
++ #define readtablep(a_) SPP(a_,readtable)
++ #define functionp(a_)  ({enum type _t=type_of(a_);_t>=t_cfun && _t<=t_closure;})
++-#define compiled_functionp(a_)  functionp(a_)
+++#define compiled_function_p(a_)  functionp(a_)
++ 
++ #define integerp(a_) ({enum type _tp=type_of(a_); _tp >= t_fixnum     && _tp <= t_bignum;})
++ #define non_negative_integerp(a_) ({enum type _tp=type_of(a_); (_tp == t_fixnum && fix(a_)>=0) || (_tp==t_bignum && big_sign(a_)>=0);})
++--- gcl-2.6.12.orig/lsp/gcl_arraylib.lsp
+++++ gcl-2.6.12/lsp/gcl_arraylib.lsp
++@@ -27,14 +27,14 @@
++ (proclaim '(optimize (safety 2) (space 3)))
++ 
++ (defvar *baet-hash* (make-hash-table :test 'equal))
++-(defun best-array-element-type (type)
++-  (or (gethash type *baet-hash*)
++-      (setf (gethash type *baet-hash*)
++-         (if type
++-             (car (member type '(character bit signed-char unsigned-char signed-short unsigned-short
++-                                     fixnum short-float long-float t)
++-                          :test 'subtypep)) t)))))
++-      
+++(defun best-array-element-type (type &aux
+++                                  (tps '(character bit signed-char unsigned-char signed-short unsigned-short
+++                                                   fixnum short-float long-float t)))
+++  (if type
+++    (or (car (member type tps))
+++     (gethash type *baet-hash*)
+++     (setf (gethash type *baet-hash*) (car (member type tps :test 'subtypep)))) t))
+++
++ (defun upgraded-array-element-type (type &optional environment)
++   (declare (ignore environment))
++   (best-array-element-type type))
++--- gcl-2.6.12.orig/lsp/gcl_autoload.lsp
+++++ gcl-2.6.12/lsp/gcl_autoload.lsp
++@@ -267,7 +267,7 @@
++                      (push (list (nth nfree *type-list*) typename)
++                            link-alist))))))
++     (terpri)
++-    (dolist (info (reverse info-list))
+++    (dolist (info (nreverse info-list))
++       (apply #'format t "~8D/~D~19T~6,1F%~@[~8D~]~35T~{~A~^ ~}"
++              (append (cdr info)
++                      (if  (assoc (car info) link-alist)
++--- gcl-2.6.12.orig/lsp/gcl_debug.lsp
+++++ gcl-2.6.12/lsp/gcl_debug.lsp
++@@ -167,7 +167,7 @@
++      ,@ (do ((v (cdr lis) (cdr v))
++           (i 0 (1+ i))
++           (res))
++-         ((null v)(reverse res))
+++         ((null v)(nreverse res))
++        (push `(setf ,(car v) (mv-ref ,i)) res))))
++ 
++ (defmacro mv-values (&rest lis)
++@@ -175,7 +175,7 @@
++      ,@ (do ((v (cdr lis) (cdr v))
++           (i 0 (1+ i))
++           (res))
++-         ((null v)(reverse res))
+++         ((null v)(nreverse res))
++        (push `(set-mv ,i ,(car v)) res))))
++ 
++ ;;start a lisp debugger loop.   Exit it by using :step
++--- gcl-2.6.12.orig/lsp/gcl_defmacro.lsp
+++++ gcl-2.6.12/lsp/gcl_defmacro.lsp
++@@ -103,7 +103,7 @@
++           (push `(unless (endp ,(dm-nth-cdr (cdr ac) (car ac)))
++                          (dm-too-many-arguments)) body))
++   (unless envp (push `(declare (ignore ,env)) body))
++-  (list doc ppn `(lambda-block ,name ,(reverse *dl*) ,@(append decls body)))
+++  (list doc ppn `(lambda-block ,name ,(nreverse *dl*) ,@(append decls body)))
++   )
++ 
++ (defun dm-vl (vl whole top)
++--- gcl-2.6.12.orig/lsp/gcl_directory.lsp
+++++ gcl-2.6.12/lsp/gcl_directory.lsp
++@@ -41,7 +41,7 @@
++       (l (length yy))
++       (y (link-expand (vector-push-string yy s) l))
++       (y (if (eq y yy) y (make-frame y))))
++-    (when (or (eq (stat z) :directory) (zerop (length z)))
+++    (when (or (eq (stat1 z) :directory) (zerop (length z)))
++       (cond ((eq (car x) :wild-inferiors) (recurse-dir z y f))
++          (x (walk-dir z y (lambda (q e l)
++                             (declare (ignore l))
++--- gcl-2.6.12.orig/lsp/gcl_evalmacros.lsp
+++++ gcl-2.6.12/lsp/gcl_evalmacros.lsp
++@@ -23,178 +23,146 @@
++ (in-package :si)
++ 
++ 
++-(eval-when (compile) (proclaim '(optimize (safety 2) (space 3))))
+++;(eval-when (compile) (proclaim '(optimize (safety 2) (space 3))))
++ ;(eval-when (eval compile) (defun si:clear-compiler-properties (symbol)))
++-(eval-when (eval compile) (setq si:*inhibit-macro-special* nil))
++-
++-(defmacro sgen (&optional (pref "G"))
++-  `(load-time-value (gensym ,pref)))
+++(eval-when (eval compile)
+++  (setq si:*inhibit-macro-special* nil)
+++  (defmacro ?cons (f x &aux (s (sgen "?CONS"))) `(let ((,s ,x)) (if (cdr ,s) (cons ,f ,s) (car ,s))))
+++  (defmacro ?list (x &aux (s (sgen "?LIST"))) `(let ((,s ,x)) (when ,s (list ,s))))
+++  (defmacro collect (v r rp np &aux (s (sgen "COLLECT")))
+++    `(let ((,s ,v)) (setf rp (if rp (rplacd rp (list ,s)) (setq r ,s)) rp np)))
+++  (defmacro ?let (k kf r) `(let ((r ,r)) (if (eq ,k ,kf) r `(let ((,,k ,,kf)) (declare (ignorable ,,k)) ,r))))
+++  (defmacro ?key (x &aux (s (sgen "?KEY"))) `(if (or (constantp ,x) (symbolp ,x)) ,x ',s)))
++ 
+++(defmacro sgen (&optional (pref "G")) `(load-time-value (gensym ,pref)))
++ 
++ (defmacro defvar (var &optional (form nil form-sp) doc-string)
++-  `(progn (si:*make-special ',var)
++-       ,(if doc-string
++-            `(si:putprop ',var ,doc-string 'variable-documentation))
++-       ,(if form-sp
++-            `(or (boundp ',var)
++-                 (setq ,var ,form)))
++-       ',var)
++-       )
+++  (declare (optimize (safety 1)))
+++  `(progn (*make-special ',var)
+++       ,@(when doc-string `((putprop ',var ,doc-string 'variable-documentation)))
+++       ,@(when form-sp `((unless (boundp ',var) (setq ,var ,form))))
+++       ',var))
++ 
++ (defmacro defparameter (var form &optional doc-string)
++-  (if doc-string
++-      `(progn (si:*make-special ',var)
++-              (si:putprop ',var ,doc-string 'variable-documentation)
++-              (setq ,var ,form)
++-              ',var)
++-      `(progn (si:*make-special ',var)
++-              (setq ,var ,form)
++-              ',var)))
+++  (declare (optimize (safety 1)))
+++  `(progn (*make-special ',var)
+++       ,@(when doc-string `((putprop ',var ,doc-string 'variable-documentation)))
+++       (setq ,var ,form)
+++       ',var))
++ 
++ (defmacro defconstant (var form &optional doc-string)
++-  (if doc-string
++-      `(progn (si:*make-constant ',var ,form)
++-              (si:putprop ',var ,doc-string 'variable-documentation)
++-              ',var)
++-      `(progn (si:*make-constant ',var ,form)
++-              ',var)))
+++  (declare (optimize (safety 1)))
+++  `(progn (*make-constant ',var ,form)
+++       ,@(when doc-string `((putprop ',var ,doc-string 'variable-documentation)))
+++       ',var))
++ 
++ 
++ ;;; Each of the following macros is also defined as a special form.
++ ;;; Thus their names need not be exported.
++ 
++-(defmacro and (&rest forms)
++-  (if (endp forms)
++-      t
++-      (let ((x (reverse forms)))
++-           (do ((forms (cdr x) (cdr forms))
++-                (form (car x) `(if ,(car forms) ,form)))
++-               ((endp forms) form))))
++-  )
++-
++-(defmacro or (&rest forms)
++-  (if (endp forms)
++-      nil
++-      (let ((x (reverse forms)))
++-           (do ((forms (cdr x) (cdr forms))
++-                (form (car x)
++-                      (let ((temp (gensym)))
++-                           `(let ((,temp ,(car forms)))
++-                                 (if ,temp ,temp ,form)))))
++-               ((endp forms) form))))
++-  )
++-               
++-(defun parse-body-header (x &optional doc decl ctps &aux (a (car x)))
++-  (cond 
++-   ((unless (or doc ctps) (and (stringp a) (cdr x))) (parse-body-header (cdr x) a decl ctps))
++-   ((unless ctps (when (consp a) (eq (car a) 'declare)))  (parse-body-header (cdr x) doc (cons a decl) ctps))
++-   ((when (consp a) (eq (car a) 'check-type)) (parse-body-header (cdr x) doc decl (cons a ctps)))
++-   (t (values doc (nreverse decl) (nreverse ctps) x))))
+++(defmacro and (&rest forms &aux r rp np)
+++  (declare (optimize (safety 1)))
+++  (do ((y forms))((endp y) (if forms r t))
+++    (let ((x (pop y)))
+++      (if (constantp x) (unless (if (eval x) y) (collect x r rp np) (setq y nil))
+++     (if y (collect `(if ,@(setq np (list x))) r rp np)
+++       (collect x r rp np))))))
+++
+++(defmacro or (&rest forms &aux r rp np (s (sgen "OR")))
+++  (declare (optimize (safety 1)))
+++  (do ((y forms))((endp y) r)
+++    (let ((x (pop y)))
+++      (if (constantp x) (when (eval x) (collect x r rp np) (setq y nil))
+++     (if (symbolp x) (collect `(if ,x ,@(setq np (list x))) r rp np)
+++       (if y (collect `(let ((,s ,x)) (if ,s ,@(setq np (list s)))) r rp np)
+++         (collect x r rp np)))))))
+++
+++(defun parse-body-header (x)
+++  (let* ((doc x)(x (or (when (stringp (car x)) (cdr x)) x))
+++      (dec x)(x (member-if-not (lambda (x) (when (consp x) (eq (car x) 'declare))) x))
+++      (ctp x)(x (member-if-not (lambda (x) (when (consp x) (eq (car x) 'check-type))) x)))
+++    (values (car (ldiff doc dec)) (ldiff dec ctp) (ldiff ctp x) x)))
++ 
++ (defmacro locally (&rest body)
++   (multiple-value-bind
++-   (doc decls ctps body)
+++   (doc dec)
++    (parse-body-header body)
+++   (declare (ignore doc))
++    `(let (,@(mapcan (lambda (x &aux (z (pop x))(z (if (eq z 'type) (pop x) z)))
++                    (case z
++                          ((ftype inline notinline optimize) nil)
++                          (otherwise (mapcar (lambda (x) (list x x)) x))))
++-                (apply 'append (mapcar 'cdr decls))))
++-      ,@(when doc (list doc))
++-      ,@decls
++-      ,@ctps
+++                (apply 'append (mapcar 'cdr dec))))
++       ,@body)))
++ 
++-(defmacro loop (&rest body &aux (tag (gensym)))
++-  `(block nil (tagbody ,tag (progn ,@body) (go ,tag))))
+++(defmacro loop (&rest body &aux (tag (sgen "LOOP")))
+++  `(block nil (tagbody ,tag ,(?cons 'progn body) (go ,tag))))
++ 
++-(import 'while 'user)
++ (defmacro while (test &rest forms)
++- `(loop (unless ,test (return)) ,@forms) )
+++ `(loop (unless ,test (return)) ,@forms))
++ 
++ (defmacro defmacro (name vl &rest body)
++   `(si:define-macro ',name (si:defmacro* ',name ',vl ',body)))
++ 
++ (defmacro defun (name lambda-list &rest body)
++-  (multiple-value-bind (doc decl body)
++-       (find-doc body nil)
++-    (if doc
++-        `(progn (setf (get ',name 'si:function-documentation) ,doc)
++-                (setf (symbol-function ',name)
++-                      #'(lambda ,lambda-list
++-                          ,@decl (block ,name ,@body)))
++-                ',name)
++-        `(progn (setf (symbol-function ',name)
++-                      #'(lambda ,lambda-list
++-                          ,@decl (block ,name ,@body)))
++-                ',name))))
+++  (multiple-value-bind
+++      (doc dec ctp body)
+++      (parse-body-header body)
+++    `(progn ,@(when doc `((setf (get ',name 'function-documentation) ,doc)))
+++         (setf (symbol-function ',name) (lambda ,lambda-list  ,@dec ,@ctp (block ,name ,@body)))
+++         ',name)))
++ 
++ ; assignment
++ 
++ (defmacro psetq (&rest args)
++-   (do ((l args (cddr l))
++-        (forms nil)
++-        (bindings nil))
++-       ((endp l) (list* 'let* (nreverse bindings) (nreverse (cons nil forms))))
++-       (declare (object l))
++-       (let ((sym (gensym)))
++-            (push (list sym (cadr l)) bindings)
++-            (push (list 'setq (car l) sym) forms)))
++-   )
+++  (declare (optimize (safety 1)))
+++  (assert (evenp (length args)))
+++  (let ((x (let ((i 0)) (mapcon (lambda (x) (when (oddp (incf i)) `((,(cadr x) ,(car x) ,(gensym))))) args))))
+++    (when x
+++      `(let* ,(mapcar (lambda (x) `(,(caddr x) ,(car x))) x)
+++      (setq ,@(mapcan 'cdr x))
+++      nil))))
++ 
++ ; conditionals
+++(defmacro cond (&rest clauses &aux r rp np (s (sgen "COND")))
+++  (declare (optimize (safety 1)))
+++  (do ((y clauses))((endp y) r)
+++    (let* ((x (pop y))(z (pop x)))
+++      (if (constantp z) (when (eval z) (collect (if x (?cons 'progn x) z) r rp np) (setq y nil))
+++     (if x (collect `(if ,z ,@(setq np (list (?cons 'progn x)))) r rp np)
+++       (if (symbolp z) (collect `(if ,z ,@(setq np (list z))) r rp np)
+++         (if y (collect `(let ((,s ,z)) (if ,s ,@(setq np (list s)))) r rp np)
+++           (collect `(values ,z) r rp np))))))))
+++
+++(defmacro when (pred &rest body &aux (x (?cons 'progn body)))
+++  (declare (optimize (safety 1)))
+++  (if (constantp pred) (if (eval pred) x) `(if ,pred ,x)))
+++
+++(defmacro unless (pred &rest body &aux (x (?cons 'progn body)))
+++  (declare (optimize (safety 1)))
+++  (if (constantp pred) (if (not (eval pred)) x) `(if (not ,pred) ,x)))
++ 
++-(defmacro cond (&rest clauses &aux (form nil))
++-  (let ((x (reverse clauses)))
++-    (dolist (l x form)
++-      (cond ((endp (cdr l))
++-          (if (or (constantp (car l)) (eq l (car x)))
++-              (setq form (car l))
++-            (let ((sym (gensym)))
++-              (setq form `(let ((,sym ,(car l))) (if ,sym ,sym ,form))))))
++-         ((and (constantp (car l)) (car l))
++-          (setq form (if (endp (cddr l)) (cadr l) `(progn ,@(cdr l)))))
++-         ((setq form (if (endp (cddr l))
++-                         `(if ,(car l) ,(cadr l) ,form)
++-                       `(if ,(car l) (progn ,@(cdr l)) ,form))))))))
++-
++-
++-(defmacro when (pred &rest body)
++-  `(if ,pred (progn ,@body)))
+++; program feature
++ 
++-(defmacro unless (pred &rest body)
++-  `(if (not ,pred) (progn ,@body)))
+++(defun prog?* (let?* vl body)
+++  (multiple-value-bind
+++      (doc dec ctp body)
+++      (parse-body-header body)
+++    (declare (ignore doc))
+++    `(block nil (,let?* ,vl ,@dec (tagbody ,@(append ctp body))))))
++ 
++-; program feature
+++(defmacro prog (vl &rest body)
+++  (prog?* 'let vl body))
++ 
++-(defmacro prog (vl &rest body &aux (decl nil))
++-  (do ()
++-      ((or (endp body)
++-           (not (consp (car body)))
++-           (not (eq (caar body) 'declare)))
++-       `(block nil (let ,vl ,@decl (tagbody ,@body)))
++-       )
++-      (push (car body) decl)
++-      (pop body))
++-  )
++-
++-(defmacro prog* (vl &rest body &aux (decl nil))
++-  (do ()
++-      ((or (endp body)
++-           (not (consp (car body)))
++-           (not (eq (caar body) 'declare)))
++-       `(block nil (let* ,vl ,@decl (tagbody ,@body)))
++-       )
++-      (push (car body) decl)
++-      (pop body))
++-  )
+++(defmacro prog* (vl &rest body)
+++  (prog?* 'let* vl body))
++ 
++ ; sequencing
++ 
++-(defmacro prog1 (first &rest body &aux (sym (gensym)))
+++(defmacro prog1 (first &rest body &aux (sym (sgen "PROG1")))
++   `(let ((,sym ,first)) ,@body ,sym))
++ 
++-(defmacro prog2 (first second &rest body &aux (sym (gensym)))
+++(defmacro prog2 (first second &rest body &aux (sym (sgen "PROG2")))
++   `(progn ,first (let ((,sym ,second)) ,@body ,sym)))
++ 
++ ; multiple values
++@@ -203,115 +171,79 @@
++   `(multiple-value-call 'list ,form))
++ 
++ (defmacro multiple-value-setq (vars form)
++-  (do ((vl vars (cdr vl))
++-       (sym (gensym))
++-       (forms nil)
++-       (n 0 (1+ n)))
++-      ((endp vl) `(let ((,sym (multiple-value-list ,form))) ,@forms))
++-      (declare (fixnum n) (object vl))
++-      (push `(setq ,(car vl) (nth ,n ,sym)) forms))
++-  )
++-
++-(defmacro multiple-value-bind (vars form &rest body)
++-  (do ((vl vars (cdr vl))
++-       (sym (gensym))
++-       (bind nil)
++-       (n 0 (1+ n)))
++-      ((endp vl) `(let* ((,sym (multiple-value-list ,form)) ,@(nreverse bind))
++-                        ,@body))
++-      (declare (fixnum n) (object vl))
++-      (push `(,(car vl) (nth ,n ,sym)) bind))
++-  )
++-
++-(defmacro do (control (test . result) &rest body
++-              &aux (decl nil) (label (gensym)) (vl nil) (step nil))
++-  (do ()
++-      ((or (endp body)
++-           (not (consp (car body)))
++-           (not (eq (caar body) 'declare))))
++-      (push (car body) decl)
++-      (pop body))
++-  (dolist (c control)
++-          (declare (object c))
++-    (if(symbolp  c) (setq c (list c)))
++-        (push (list (car c) (cadr c)) vl)
++-    (unless (endp (cddr c))
++-            (push (car c) step)
++-            (push (caddr c) step)))
++-  `(block nil
++-          (let ,(nreverse vl)
++-               ,@decl
++-               (tagbody
++-                ,label (if ,test (return (progn ,@result)))
++-                       (tagbody ,@body)
++-                       (psetq ,@(nreverse step))
++-                       (go ,label)))))
++-
++-(defmacro do* (control (test . result) &rest body
++-               &aux (decl nil) (label (gensym)) (vl nil) (step nil))
++-  (do ()
++-      ((or (endp body)
++-           (not (consp (car body)))
++-           (not (eq (caar body) 'declare))))
++-      (push (car body) decl)
++-      (pop body))
++-  (dolist (c control)
++-          (declare (object c))
++-    (if(symbolp  c) (setq c (list c)))
++-        (push (list (car c) (cadr c)) vl)
++-    (unless (endp (cddr c))
++-            (push (car c) step)
++-            (push (caddr c) step)))
++-  `(block nil
++-          (let* ,(nreverse vl)
++-                ,@decl
++-                (tagbody
++-                 ,label (if ,test (return (progn ,@result)))
++-                        (tagbody ,@body)
++-                        (setq ,@(nreverse step))
++-                        (go ,label))))
++-  )
++-
++-(defmacro case (keyform &rest clauses &aux (key (load-time-value (gensym "CASE"))) (c (reverse clauses)))
++-  (declare (optimize (safety 2)))
++-  (labels ((sw (x) `(eql ,key ',x))(dfp (x) (or (eq x t) (eq x 'otherwise)))
++-        (v (x) (if (when (listp x) (not (cdr x))) (car x) x))
++-        (m (x c &aux (v (v x))) (if (eq v x) (cons c v) v)))
++-       `(let ((,key ,keyform))
++-          (declare (ignorable ,key))
++-          ,(let ((df (when (dfp (caar c)) (m (cdr (pop c)) 'progn))))
++-             (reduce (lambda (y c &aux (a (pop c))(v (v a)))
++-                       (when (dfp a) (error "default case must be last"))
++-                       `(if ,(if (when (eq a v) (listp v)) (m (mapcar #'sw v) 'or) (sw v)) ,(m c 'progn) ,y))
++-                     c :initial-value df)))))
++-
++-(defmacro ecase (keyform &rest clauses &aux (key (sgen "ECASE")))
++-  (declare (optimize (safety 2)))
++-  `(let ((,key ,keyform))
++-     (declare (ignorable ,key))
++-     (case ,key
+++  (declare (optimize (safety 1)))
+++  (let ((syms (mapcar (lambda (x) (declare (ignore x)) (gensym)) (or vars (list nil)))))
+++    `(multiple-value-bind ,syms ,form ,@(?list (?cons 'setq (mapcan 'list vars syms))) ,(car syms))))
+++
+++(defmacro multiple-value-bind (vars form &rest body &aux (sym (sgen "MULTIPLE-VALUE-BIND")))
+++  (declare (optimize (safety 1)))
+++  `(let* ((,sym (multiple-value-list ,form))
+++       ,@(mapcon (lambda (x) `((,(car x) (car ,sym)) ,@(when (cdr x) `((,sym (cdr ,sym)))))) vars))
+++     (declare (ignorable ,sym))
+++     ,@body))
+++
+++(defun do?* (?* control test result body &aux (label (sgen "DO")))
+++  (multiple-value-bind
+++      (doc dec ctp body)
+++      (parse-body-header body)
+++    (declare (ignore doc))
+++    (labels ((?let (vl dec body) (if (or vl dec) `(,(if ?* 'let* 'let) ,vl ,@dec ,body) body))
+++          (?tagbody (l x y &aux (x (macroexpand x))) (if x `(tagbody ,l ,x ,@(?list (when (eq (car x) 'if) y))) y)))
+++      `(block nil
+++      ,(?let
+++        (mapcar (lambda (x) (if (listp x) (ldiff x (cddr x)) x)) control)
+++        dec
+++        (?tagbody
+++         label
+++         `(unless ,test
+++            ,@(?list (?cons 'tagbody (append ctp body)))
+++            ,@(?list (?cons (if ?* 'setq 'psetq) (mapcan (lambda (x) (when (and (listp x) (cddr x)) (list (car x) (caddr x)))) control)))
+++            (go ,label))
+++         `(return ,(?cons 'progn result))))))))
+++
+++(defmacro do (control (test . result) &rest body)
+++  (do?* nil control test result body))
+++
+++(defmacro do* (control (test . result) &rest body)
+++  (do?* t control test result body))
+++
+++(defmacro case (keyform &rest clauses &aux r rp np (key (?key keyform)))
+++  (declare (optimize (safety 1)))
+++  (labels ((sw (x) `(eql ,key ,(if (constantp x) x `',x))))
+++    (do ((y clauses))((endp y) (?let key keyform r))
+++      (let* ((x (pop y))(z (pop x)))
+++     (if (member z '(t otherwise))
+++         (if y (error "default case must be last") (collect (?cons 'progn x) r rp np))
+++       (when z
+++         (if (constantp key)
+++             (let ((key (eval key))) (when (if (listp z) (member key z) (eql key z)) (collect (?cons 'progn x) r rp np) (setq y nil)))
+++           (collect `(if ,(if (listp z) (?cons 'or (mapcar #'sw z)) (sw z))
+++                         ,@(setq np (list (?cons 'progn x)))) r rp np))))))))
+++
+++(defmacro ecase (keyform &rest clauses &aux (key (?key keyform)))
+++  (declare (optimize (safety 1)))
+++  (?let key keyform
+++     `(case ,key
++         ,@(mapcar (lambda (x) (if (member (car x) '(t otherwise)) (cons (list (car x)) (cdr x)) x)) clauses)
++         (otherwise
++          (error 'type-error :datum ,key
++                 :expected-type '(member ,@(apply 'append (mapcar (lambda (x &aux (x (car x))) (if (listp x) x (list x))) clauses))))))))
++ 
+++(defmacro ccase (keyform &rest clauses &aux (key (?key keyform)))
+++  (declare (optimize (safety 1)))
+++  (?let key keyform
+++     `(do nil (nil)
+++        (case ,key
+++          ,@(mapcar (lambda (x &aux (k (pop x)))
+++                      `(,(if (member k '(t otherwise)) (list k) k) (return ,(?cons 'progn x)))) clauses)
+++          (otherwise
+++           (check-type ,key (member ,@(apply 'append (mapcar (lambda (x &aux (x (car x))) (if (listp x) x (list x))) clauses)))))))))
++ 
++-(defmacro ccase (keyform &rest clauses &aux (key (sgen "CCASE")))
++-  (declare (optimize (safety 2)))
++-  `(let ((,key ,keyform))
++-     (declare (ignorable ,key))
++-     (do nil (nil)
++-      (case ,key
++-         ,@(mapcar (lambda (x &aux (k (pop x)))
++-                     `(,(if (member k '(t otherwise)) (list k) k) (return ,(if (cdr x) (cons 'progn x) (car x))))) clauses)
++-         (otherwise 
++-          (check-type ,key (member ,@(apply 'append (mapcar (lambda (x &aux (x (car x))) (if (listp x) x (list x))) clauses)))))))))
++-
++-(defmacro return (&optional (val nil)) `(return-from nil ,val))
++-
++-(defmacro dolist ((var form &optional (val nil)) &rest body
++-                                                 &aux (temp (gensym)))
++-  `(do* ((,temp ,form (cdr ,temp)) (,var (car ,temp) (car ,temp)))
+++
+++(defmacro return (&optional val) `(return-from nil ,val))
+++
+++(defmacro dolist ((var form &optional (val nil)) &rest body &aux (temp (sgen "DOLIST")))
+++  `(do* ((,temp ,form (cdr ,temp))(,var (car ,temp) (car ,temp)))
++      ((endp ,temp) ,val)
++      ,@body))
++ 
++@@ -327,59 +259,19 @@
++ ;; appears to treat this as positive or negative depending on the sign
++ ;; of the other argument in the comparison, apparently to symmetrize
++ ;; the long integer range.  20040403 CM.
++-(defmacro dotimes ((var form &optional (val nil)) &rest body)
++-  (cond
++-   ((symbolp form)
++-    (let ((temp (gensym)))
++-      `(cond ((< ,form 0)
++-           (let ((,var 0))
++-             (declare (fixnum ,var) (ignorable ,var))
++-             ,val))
++-          ((<= ,form most-positive-fixnum)
++-                 (let ((,temp ,form))
++-                   (declare (fixnum ,temp))
++-                   (do* ((,var 0 (1+ ,var))) ((>= ,var ,temp) ,val)
++-                     (declare (fixnum ,var))
++-                     ,@body)))
++-                (t 
++-              (let ((,temp ,form))
++-                (do* ((,var 0 (1+ ,var))) ((>= ,var ,temp) ,val)
++-                  ,@body))))))
++-     ((constantp form)
++-      (cond ((< form 0)
++-             `(let ((,var 0))
++-                (declare (fixnum ,var) (ignorable ,var))
++-                ,val))
++-            ((<= form most-positive-fixnum)
++-             `(do* ((,var 0 (1+ ,var))) ((>= ,var ,form) ,val)
++-                (declare (fixnum ,var))
++-                ,@body))
++-            (t
++-             `(do* ((,var 0 (1+ ,var))) ((>= ,var ,form) ,val)
++-                ,@body))))
++-     (t
++-      (let ((temp (gensym)))
++-      `(let ((,temp ,form))
++-         (cond ((< ,temp 0)
++-                (let ((,var 0))
++-                  (declare (fixnum ,var) (ignorable ,var))
++-                  ,val))
++-               ((<= ,temp most-positive-fixnum)
++-                (let ((,temp ,temp))
++-                  (declare (fixnum ,temp))
++-                  (do* ((,var 0 (1+ ,var))) ((>= ,var ,temp) ,val)
++-                    (declare (fixnum ,var))
++-                    ,@body)))
++-               (t 
++-                (do* ((,var 0 (1+ ,var))) ((>= ,var ,temp) ,val)
++-                  ,@body))))))))
++-
+++(defmacro dotimes ((var form &optional val) &rest body &aux (s (sgen "DOTIMES"))(m (sgen "DOTIMES")))
+++  `(let* ((,s (block nil ,form))(,m (min ,s most-positive-fixnum)))
+++     (declare (fixnum ,m))
+++     (do ((,var 0 (1+ ,var)))
+++      ((>= ,var ,m) (if (eql ,s ,m) ,val (do ((,var ,m (1+ ,var)))((>= ,var ,s) ,val) ,@body)))
+++        (declare (fixnum ,var))
+++        ,@body)))
++ 
++ (defmacro declaim (&rest l)
++- `(eval-when (compile eval load)
++-          ,@(mapcar #'(lambda (x) `(proclaim ',x)) l)))
+++  `(eval-when (compile eval load)
+++     ,@(mapcar (lambda (x) `(proclaim ',x)) l)))
++ 
++-(defmacro lambda ( &rest l) `(function (lambda ,@l)))
+++(defmacro lambda (&rest l) `(function (lambda ,@l)))
++ 
++ (defun compiler-macro-function (name)
++   (get name 'compiler-macro-prop))
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -380,7 +380,7 @@
++ 
++ (defun get-byte-stream-nchars (s)
++   (let* ((tp (stream-element-type s)))
++-    (ceiling (if (consp tp) (cadr tp) char-length) char-length)))
+++    (values (ceiling (if (consp tp) (cadr tp) char-length) char-length))))
++ 
++ ;; (defun parse-integer (s &key start end (radix 10) junk-allowed)
++ ;;   (declare (optimize (safety 1)))
++@@ -488,21 +488,19 @@
++      (stream (load-stream p print)))
++     (when verbose (format t ";; Finished loading ~s~%" p))))
++ 
++-(defun ensure-directories-exist (ps &key verbose &aux created)
+++(defun ensure-directories-exist (ps &key verbose)
++   (declare (optimize (safety 1)))
++   (check-type ps pathname-designator)
++   (when (wild-pathname-p ps)
++     (error 'file-error :pathname ps :format-control "Pathname is wild"))
++-  (labels ((d (x y &aux (z (ldiff x y)) (n (namestring (make-pathname :directory z))))
++-           (when (when z (stringp (car (last z))))
++-             (unless (eq :directory (stat n))
++-               (mkdir n)
++-               (setq created t)
++-               (when verbose (format *standard-output* "Creating directory ~s~%" n))))
++-           (when y (d x (cdr y)))))
++-    (let ((pd (pathname-directory ps)))
++-      (d pd (cdr pd)))
++-    (values ps created)))
+++  (let ((pd (pathname-directory ps)) ls)
+++    (dotimes (i (length pd))
+++      (let ((s (namestring (make-pathname :directory (if (zerop i) pd (ldiff pd (last pd i)))))))
+++     (if (eq (stat1 s) :directory) (return) (push s ls))))
+++    (dolist (s ls)
+++      (mkdir s)
+++      (when verbose (format *standard-output* "Creating directory ~s~%" s)))
+++    (values ps (if ls t))))
++ 
++ (defun file-length (x)
++   (declare (optimize (safety 1)))
++@@ -511,7 +509,7 @@
++       (let ((s (broadcast-stream-streams x))) (if s (file-length (car (last s))) 0))
++     (multiple-value-bind (tp sz) (stat x)
++       (declare (ignore tp))
++-      (/ sz (get-byte-stream-nchars x)))))
+++      (values (truncate sz (get-byte-stream-nchars x))))))
++ 
++ (defun file-position (x &optional (pos :start pos-p))
++   (declare (optimize (safety 1)))
++--- gcl-2.6.12.orig/lsp/gcl_loop.lsp
+++++ gcl-2.6.12/lsp/gcl_loop.lsp
++@@ -793,6 +793,8 @@ a LET-like macro, and a SETQ-like macro,
++   (unless (= (length before-loop) (length after-loop))
++     (error "LOOP-BODY called with non-synched before- and after-loop lists."))
++   ;;All our work is done from these copies, working backwards from the end:
+++  (when (equal before-loop after-loop)
+++    (setq main-body (append before-loop main-body) before-loop nil after-loop nil));accelerator
++   (setq rbefore (reverse before-loop) rafter (reverse after-loop))
++   (labels ((psimp (l)
++           (let ((ans nil))
++--- gcl-2.6.12.orig/lsp/gcl_parse_namestring.lsp
+++++ gcl-2.6.12/lsp/gcl_parse_namestring.lsp
++@@ -2,15 +2,6 @@
++ 
++ (deftype seqind nil `fixnum)
++ 
++-(defun match-beginning (i &aux (v *match-data*))
++-  (declare ((vector fixnum) v)(seqind i))
++-  (the (or (integer -1 -1 ) seqind) (aref v i)))
++-(defun match-end (i &aux (v *match-data*))
++-  (declare ((vector fixnum) v)(seqind i))
++-  (the (or (integer -1 -1 ) seqind) (aref v (+ i (ash (length v) -1)))))
++-
++-(declaim (inline match-beginning match-end))
++-
++ (defun dir-conj (x) (if (eq x :relative) :absolute :relative))
++ 
++ (defvar *up-key* :up)
++--- gcl-2.6.12.orig/lsp/gcl_predlib.lsp
+++++ gcl-2.6.12/lsp/gcl_predlib.lsp
++@@ -348,8 +348,7 @@
++ ;; FIXME this needs to be more robust
++ (defun known-type-p (type)
++   (when (consp type) (setq type (car type)))
++-  (if (or (equal (string type) "ERROR")
++-       (member type
+++  (if (or (member type
++                   '(t nil boolean null symbol keyword atom cons list sequence
++                    signed-char unsigned-char signed-short unsigned-short
++                    number integer bignum rational ratio float method-combination
++@@ -370,8 +369,9 @@
++                    storage-condition stream-error string-stream structure-class
++                    style-warning synonym-stream two-way-stream structure-object
++                    type-error unbound-slot unbound-variable undefined-function
++-                   warning ))
++-          (get type 's-data))
+++                   warning) :test 'eq)
+++          (get type 's-data)
+++       (equal (string type) "ERROR"))
++       t
++       nil))
++ 
++--- gcl-2.6.12.orig/lsp/gcl_rename_file.lsp
+++++ gcl-2.6.12/lsp/gcl_rename_file.lsp
++@@ -26,7 +26,7 @@
++ (defun delete-file (f &aux (pf (truename f))(nf (namestring pf)))
++   (declare (optimize (safety 1)))
++   (check-type f pathname-designator)
++-  (unless (if (eq :directory (stat nf)) (rmdir nf) (unlink nf))
+++  (unless (if (eq :directory (stat1 nf)) (rmdir nf) (unlink nf))
++     (error 'file-error :pathname (pathname nf) :format-control "Cannot delete pathname."))
++   t)
++ 
++--- gcl-2.6.12.orig/lsp/gcl_seqlib.lsp
+++++ gcl-2.6.12/lsp/gcl_seqlib.lsp
++@@ -25,7 +25,7 @@
++ (in-package :si)
++ 
++ 
++-(proclaim '(optimize (safety 2) (space 3)))
+++;(proclaim '(optimize (safety 2) (space 3)))
++ 
++ 
++ (proclaim '(function seqtype (t) t))
++@@ -274,40 +274,87 @@
++         (list 'quote f)))
++ 
++ (defmacro eval-body () *body*)
+++(defmacro mcf (x) `(when ,x (coerce ,x 'function)))
+++(deftype function-designator nil `(or (and symbol (not boolean)) function))
+++(defmacro rcollect (r rp form)
+++  `(let ((tmp ,form))
+++     (setq ,rp (last (if ,rp (rplacd ,rp tmp) (setq ,r tmp))))))
+++
+++ (defmacro dcollect (r rp form)
+++   `(let ((tmp ,form))
+++      (declare (dynamic-extent tmp))
+++      (setq ,rp (cond (,rp (rplacd ,rp tmp) tmp) ((setq ,r tmp))))))
+++
++ )
++ 
+++(defun remove (item sequence &key key test test-not from-end count (start 0) end 
+++              &aux (kf (mcf key))(tf (mcf test))(tnf (mcf test-not)) r rp q qp xz (from-end (when count from-end))
+++              (l (listp sequence))(ln (if l array-dimension-limit (length sequence)))
+++              (e (if end (min ln (max 0 end)) ln))
+++              (c (if count (min ln (max 0 count)) ln)))
+++
+++  (declare (optimize (safety 1))(dynamic-extent q)(fixnum c e))
+++
+++  (check-type sequence sequence)
+++  (check-type start seqind)
+++  (check-type end (or null seqind))
+++  (check-type count (or null integer))
+++  (check-type key (or null function-designator))
+++  (check-type test (or null function-designator))
+++  (check-type test-not (or null function-designator))
+++
+++  (cond ((unless from-end l)
+++      (do ((i start (1+ i))(j 0)(s (if (zerop start) sequence (nthcdr start sequence)) (cdr s)))
+++          ((or (endp s) (>= i e) (>= j c)) (rcollect r rp sequence) r)
+++        (declare (fixnum i j))
+++        (let* ((x (car s))(kx (if kf (funcall kf x) x)))
+++          (when (cond (tf (funcall tf item kx))(tnf (not (funcall tnf item kx)))((eql item kx)))
+++            (do nil ((eq sequence s) (setq sequence (cdr sequence))) (rcollect r rp (cons (pop sequence) nil)))
+++            (incf j)))))
+++     (t
+++      (do* ((j 0 (1+ j)))
+++            ((not (when (< j c)
+++                    (setq xz (position item sequence
+++                                       :start (if (unless from-end xz) (1+ xz) start)
+++                                       :end (if (when from-end xz) xz end)
+++                                       :key kf :test tf :test-not tnf :from-end from-end)))))
+++        (declare (fixnum j))
+++        (if from-end (push xz q) (dcollect q qp (cons xz nil))))
+++;     (print q)
+++      (cond ((not q) sequence)
+++            (l (do* ((lq -1 (car q))(q q (cdr q))(v sequence (cdr v)))((not q) (rcollect r rp v) r)
+++                 (declare (fixnum lq))
+++                 (dotimes (i (the fixnum (- (car q) lq 1))) (declare (fixnum i))(rcollect r rp (cons (pop v) nil)))))
+++            ((let ((r (make-array (- (length sequence) (length q)) :element-type (array-element-type sequence))))
+++               (do* ((j 0 (+ j (- (car q) lq 1)))(lq -1 (car q))(q q (cdr q)))
+++                   ((when (replace r sequence :start1 j :start2 (1+ lq) :end2 (car q)) (not q)) r)))))))
+++)
++ 
++-(defseq remove () t nil
++-  (if (not from-end)
++-      `(if (listp sequence)
++-           (let ((l sequence) (l1 nil))
++-             (do ((i 0 (f+ 1  i)))
++-                 ((>= i start))
++-               (declare (fixnum i))
++-               (push (car l) l1)
++-               (pop l))
++-             (do ((i start (f+ 1  i)) (j 0))
++-                 ((or (>= i end) (>= j count) (endp l))
++-                  (nreconc l1 l))
++-               (declare (fixnum i j))
++-               (cond ((call-test test test-not item (funcall key (car l)))
++-                      (setf  j (f+ 1  j))
++-                      (pop l))
++-                     (t
++-                      (push (car l) l1)
++-                      (pop l)))))
++-           (delete item sequence
++-                   :from-end from-end
++-                   :test test :test-not test-not
++-                   :start start :end end
++-                   :count count
++-                   :key key))
++-      `(delete item sequence
++-               :from-end from-end
++-               :test test :test-not test-not
++-               :start start :end end
++-               :count count
++-               :key key)))
+++(defun remove-if (p s &key key from-end count (start 0) end &aux (kf (mcf key)))
+++
+++  (declare (optimize (safety 1)))
+++
+++  (check-type p function-designator)
+++  (check-type s sequence)
+++  (check-type start seqind)
+++  (check-type end (or null seqind))
+++  (check-type count (or null integer))
+++  (check-type key (or null function-designator))
+++
+++  (remove p s :key kf :test #'funcall :start start :end end :count count :from-end from-end))
+++
+++(defun remove-if-not (p s &key key from-end count (start 0) end &aux (kf (mcf key)))
+++
+++  (declare (optimize (safety 1)))
+++
+++  (check-type p function-designator)
+++  (check-type s sequence)
+++  (check-type start seqind)
+++  (check-type end (or null seqind))
+++  (check-type count (or null integer))
+++  (check-type key (or null function-designator))
+++
+++  (remove p s :key kf :test-not #'funcall :start start :end end :count count :from-end from-end))
++ 
++ 
++ (defseq delete () t t
++--- gcl-2.6.12.orig/lsp/gcl_setf.lsp
+++++ gcl-2.6.12/lsp/gcl_setf.lsp
++@@ -197,6 +197,7 @@
++ (defsetf symbol-plist si:set-symbol-plist)
++ (defsetf gethash (k h &optional d) (v) `(si:hash-set ,k ,h ,v))
++ (defsetf row-major-aref si:aset1)
+++(defsetf readtable-case si::set-readtable-case)
++ (defsetf documentation (s d) (v)
++   `(case ,d
++      (variable (si:putprop ,s ,v 'variable-documentation))
++--- gcl-2.6.12.orig/lsp/gcl_top.lsp
+++++ gcl-2.6.12/lsp/gcl_top.lsp
++@@ -582,7 +582,7 @@ First directory is checked for first nam
++ (defvar *tmp-dir*)
++ 
++ (defun ensure-dir-string (str)
++-  (if (eq (stat str) :directory)
+++  (if (eq (stat1 str) :directory)
++       (coerce-slash-terminated str)
++     str))
++ 
++@@ -590,7 +590,7 @@ First directory is checked for first nam
++   (dolist (x `(,@(mapcar 'si::getenv '("TMPDIR" "TMP" "TEMP")) "/tmp" ""))
++     (when x
++       (let ((x (coerce-slash-terminated x)))
++-     (when (eq (stat x) :directory)
+++     (when (eq (stat1 x) :directory)
++        (return-from get-temp-dir x))))))
++ 
++ 
++--- gcl-2.6.12.orig/lsp/gcl_translate_pathname.lsp
+++++ gcl-2.6.12/lsp/gcl_translate_pathname.lsp
++@@ -51,7 +51,7 @@
++ 
++ (defun list-toggle-case (x f)
++   (typecase x
++-    (string (funcall f x))
+++    (string (values (funcall f x)))
++     (cons (mapcar (lambda (x) (list-toggle-case x f)) x))
++     (otherwise x)))
++ 
++--- gcl-2.6.12.orig/lsp/gcl_truename.lsp
+++++ gcl-2.6.12/lsp/gcl_truename.lsp
++@@ -6,7 +6,7 @@
++         (set-fr (fr e &aux (fr (or fr (frame 0 b)))) (setf (fill-pointer fr) e) fr))
++     (let* ((i (string-match +dirsep+ str b))
++         (fr (set-fr fr (if (eql i -1) n i)))
++-        (l (when (eq (stat fr) :link) (readlinkat 0 fr))))
+++        (l (when (eq (stat1 fr) :link) (readlinkat 0 fr))))
++       (cond (l (let ((b (if (eql #\/ (aref l 0)) 0 b)))
++               (link-expand (string-concatenate (set-fr fr b) l (frame (if (eql i -1) n i) n)) b)))
++          ((eql i -1) str)
++@@ -25,7 +25,7 @@
++     (error 'file-error :pathname pd :format-control "Pathname is wild"))
++   (let* ((ns (ensure-dir-string (link-expand ns)))
++       (ppd (if (eq (namestring pd) ns) pd (pathname ns))))
++-    (unless (or (zerop (length ns)) (stat ns))
+++    (unless (or (zerop (length ns)) (stat1 ns))
++       (error 'file-error :pathname ns :format-control "Pathname does not exist"))
++     (let* ((d (pathname-directory ppd))
++         (d1 (subst :back :up d))
++@@ -38,5 +38,5 @@
++   (check-type pd pathname-designator)
++   (when (wild-pathname-p pn)
++     (error 'file-error :pathname pn :format-control "Pathname is wild"))
++-  (when (eq (stat (link-expand (namestring pn))) :file)
+++  (when (eq (stat1 (link-expand (namestring pn))) :file)
++     (truename pn)))
++--- gcl-2.6.12.orig/lsp/sys-proclaim.lisp
+++++ gcl-2.6.12/lsp/sys-proclaim.lisp
++@@ -3,239 +3,282 @@
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
++-                  COMMON-LISP::*))
++-             COMMON-LISP::T)
++-         SYSTEM::RESET-SYS-PATHS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::VECTOR COMMON-LISP::T))
++-         SYSTEM::CONTEXT-VEC)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++              ((COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807))
+++                  9223372036854775807)
+++              COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::PUSH-CONTEXT SYSTEM::GET-CONTEXT)) 
+++         SYSTEM::SMALLNTHCDR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
++-         SLOOP::PARSE-LOOP-DO ANSI-LOOP::LOOP-WHEN-IT-VARIABLE
++-         SYSTEM::GET-INDEX-NODE SLOOP::LOOP-PEEK
++-         ANSI-LOOP::LOOP-POP-SOURCE SYSTEM::STEP-READ-LINE
++-         SYSTEM::SET-UP-TOP-LEVEL SLOOP::LOOP-POP SYSTEM::SET-ENV
++-         SYSTEM::DBL COMMON-LISP::TYPE-ERROR SYSTEM::INSPECT-INDENT
++-         SLOOP::PARSE-LOOP-COLLECT SYSTEM::CLEANUP
++-         SYSTEM::DEFAULT-SYSTEM-BANNER
++-         SYSTEM::CURRENT-DIRECTORY-PATHNAME ANSI-LOOP::LOOP-DO-WITH
++-         SYSTEM::INIT-BREAK-POINTS SYSTEM::TEST-ERROR
++-         SYSTEM::GET-SIG-FN-NAME SLOOP::PARSE-ONE-WHEN-CLAUSE
++-         ANSI-LOOP::LOOP-DO-DO SYSTEM::READ-EVALUATED-FORM
++-         SYSTEM::INSPECT-INDENT-1 ANSI-LOOP::LOOP-DO-NAMED
++-         SLOOP::PARSE-LOOP-FOR SYSTEM::ALL-TRACE-DECLARATIONS
++-         ANSI-LOOP::LOOP-GET-FORM ANSI-LOOP::LOOP-BIND-BLOCK
++-         SLOOP::PARSE-LOOP-WHEN SYSTEM::TOP-LEVEL
++-         SYSTEM::DM-TOO-FEW-ARGUMENTS SYSTEM::KCL-TOP-RESTARTS
++-         SYSTEM::DEFAULT-INFO-HOTLIST SYSTEM::SHOW-RESTARTS
++-         SYSTEM::DM-TOO-MANY-ARGUMENTS SYSTEM::SETUP-LINEINFO
++-         SYSTEM::GET-TEMP-DIR ANSI-LOOP::LOOP-ITERATION-DRIVER
++-         SLOOP::PARSE-LOOP1 SLOOP::LOOP-UN-POP
++-         ANSI-LOOP::LOOP-DO-FINALLY SYSTEM::INSPECT-READ-LINE
++-         ANSI-LOOP::LOOP-CONTEXT SYSTEM::SET-CURRENT
++-         ANSI-LOOP::LOOP-DO-REPEAT SYSTEM::ILLEGAL-BOA
++-         COMMON-LISP::LISP-IMPLEMENTATION-VERSION
++-         ANSI-LOOP::LOOP-DO-RETURN ANSI-LOOP::LOOP-DO-INITIALLY
++-         ANSI-LOOP::LOOP-GET-PROGN)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         SYSTEM::NORMALIZE-TYPE SYSTEM::PNL1
+++         ANSI-LOOP::LOOP-UNIVERSE-PATH-KEYWORDS SYSTEM::DM-BAD-KEY
+++         SYSTEM::S-DATA-INCLUDES
+++         ANSI-LOOP::LOOP-UNIVERSE-ITERATION-KEYWORDS
+++         COMMON-LISP::HOST-NAMESTRING
+++         COMMON-LISP::TWO-WAY-STREAM-INPUT-STREAM COMMON-LISP::LOGNOT
+++         SYSTEM::BREAK-FORWARD-SEARCH-STACK
+++         SLOOP::SUBSTITUTE-SLOOP-BODY
+++         COMMON-LISP::CONCATENATED-STREAM-STREAMS
+++         ANSI-LOOP::LOOP-MINIMAX-OPERATIONS SYSTEM::ADD-TO-HOTLIST
+++         SYSTEM::RESTART-REPORT-FUNCTION COMMON-LISP::THIRD
+++         SYSTEM::DWIM SYSTEM::GET-INSTREAM SYSTEM::TOGGLE-CASE
+++         SYSTEM::INSTREAM-P COMMON-LISP::DELETE-FILE
+++         SYSTEM::BEST-ARRAY-ELEMENT-TYPE COMMON-LISP::ISQRT
+++         SYSTEM::INSERT-BREAK-POINT SYSTEM::WILD-DIR-ELEMENT-P
+++         COMMON-LISP::ABS SYSTEM::WHICH COMMON-LISP::ACOS
+++         SYSTEM::COERCE-SLASH-TERMINATED
+++         COMMON-LISP::LOAD-LOGICAL-PATHNAME-TRANSLATIONS
+++         ANSI-LOOP::LOOP-CODE-DUPLICATION-THRESHOLD
+++         COMMON-LISP::ECHO-STREAM-OUTPUT-STREAM SYSTEM::DIR-P
+++         SYSTEM::SETUP-INFO SYSTEM::S-DATA-TYPE
+++         ANSI-LOOP::LOOP-PATH-PREPOSITION-GROUPS
+++         SYSTEM::PRINT-SYMBOL-APROPOS SYSTEM::S-DATA-FROZEN
+++         SYSTEM::REAL-ASINH ANSI-LOOP::LOOP-UNIVERSE-TYPE-SYMBOLS
+++         SLOOP::PARSE-NO-BODY SYSTEM::INSPECT-STRING SYSTEM::PRINT-FRS
+++         SYSTEM::LEAP-YEAR-P SYSTEM::RESTRICT-STREAM-ELEMENT-TYPE
+++         SYSTEM::RESTART-INTERACTIVE-FUNCTION
+++         SYSTEM::S-DATA-SLOT-DESCRIPTIONS SYSTEM::S-DATA-STATICP
+++         SYSTEM::INSPECT-STRUCTURE COMMON-LISP::ASINH
+++         ANSI-LOOP::LOOP-PATH-USER-DATA SYSTEM::RE-QUOTE-STRING
+++         SYSTEM::MLP SYSTEM::GET-STRING-INPUT-STREAM-INDEX
+++         SYSTEM::INFO-GET-FILE COMMON-LISP::EIGHTH
+++         SYSTEM::SHOW-BREAK-POINT SYSTEM::SIMPLE-ARRAY-P
+++         COMMON-LISP::RESTART-NAME SLOOP::POINTER-FOR-COLLECT
+++         COMMON-LISP::PHASE SYSTEM::LNP
+++         SYSTEM::REWRITE-RESTART-CASE-CLAUSE
+++         SLOOP::LOOP-COLLECT-KEYWORD-P SYSTEM::S-DATA-HAS-HOLES
+++         SYSTEM::EVAL-FEATURE ANSI-LOOP::DESTRUCTURING-SIZE
+++         COMMON-LISP::BROADCAST-STREAM-STREAMS
+++         ANSI-LOOP::LOOP-PATH-FUNCTION COMMON-LISP::BYTE-POSITION
+++         ANSI-LOOP::LOOP-MINIMAX-TYPE COMMON-LISP::TANH
+++         SYSTEM::BKPT-FILE SYSTEM::FRS-KIND
+++         SYSTEM::S-DATA-PRINT-FUNCTION SYSTEM::UNIQUE-ID
+++         SYSTEM::IHS-NOT-INTERPRETED-ENV SYSTEM::INSPECT-PACKAGE
+++         ANSI-LOOP::LOOP-MINIMAX-INFINITY-DATA SYSTEM::BKPT-FILE-LINE
+++         ANSI-LOOP::LOOP-EMIT-BODY SYSTEM::PATCH-SHARP
+++         ANSI-LOOP::LOOP-COLLECTOR-P SYSTEM::DIR-CONJ
+++         SYSTEM::CHECK-TRACE-SPEC ANSI-LOOP::LOOP-COLLECTOR-HISTORY
+++         ANSI-LOOP::LOOP-UNIVERSE-KEYWORDS SYSTEM::FIX-LOAD-PATH
+++         ANSI-LOOP::LOOP-COLLECTOR-NAME SYSTEM::PATH-STREAM-NAME
+++         SLOOP::LOOP-LET-BINDINGS ANSI-LOOP::LOOP-TYPED-INIT
+++         FPE::ST-LOOKUP SYSTEM::IHS-VISIBLE SYSTEM::INFO-GET-TAGS
+++         SYSTEM::EXPAND-HOME-DIR SYSTEM::DM-KEY-NOT-ALLOWED
+++         ANSI-LOOP::LOOP-UNIVERSE-P
+++         SYSTEM::CANONICALIZE-PATHNAME-DIRECTORY
+++         COMMON-LISP::CONSTANTLY SYSTEM::WILD-NAMESTRING-P
+++         SYSTEM::INSPECT-NUMBER SYSTEM::LOGICAL-PATHNAME-DESIGNATOR-P
+++         COMMON-LISP::FOURTH SYSTEM::NODES-FROM-INDEX
+++         SYSTEM::LOGICAL-PATHNAME-HOST-P SYSTEM::S-DATA-NAMED
+++         COMMON-LISP::INVOKE-DEBUGGER SYSTEM::INSPECT-VECTOR
+++         SYSTEM::VERSION-PARSE SYSTEM::WILD-PATH-ELEMENT-P
+++         SLOOP::RETURN-SLOOP-MACRO SYSTEM::REGEXP-CONV
+++         SYSTEM::NUMBER-OF-DAYS-FROM-1900
+++         COMMON-LISP::ECHO-STREAM-INPUT-STREAM SYSTEM::CHDIR
+++         SYSTEM::DBL-RPL-LOOP COMMON-LISP::ASIN COMMON-LISP::RATIONAL
+++         ANSI-LOOP::LOOP-PATH-INCLUSIVE-PERMITTED
+++         COMMON-LISP::NAMESTRING SYSTEM::TRACE-ONE-PREPROCESS
+++         SYSTEM::TERMINAL-INTERRUPT SYSTEM::SEQTYPE SYSTEM::S-DATA-RAW
+++         SYSTEM::GET-NEXT-VISIBLE-FUN FPE::XMM-LOOKUP
+++         SYSTEM::MAKE-KCL-TOP-RESTART ANSI-LOOP::LOOP-MINIMAX-P
+++         ANSI-LOOP::LOOP-MAXMIN-COLLECTION
+++         COMMON-LISP::COMPILER-MACRO-FUNCTION SYSTEM::BKPT-FUNCTION
+++         SYSTEM::DIRECTORY-LIST-CHECK SYSTEM::S-DATA-SLOT-POSITION
+++         SYSTEM::SHORT-NAME SYSTEM::DBL-EVAL
+++         ANSI-LOOP::LOOP-COLLECTOR-DATA SYSTEM::S-DATA-DOCUMENTATION
+++         ANSI-LOOP::LOOP-EMIT-FINAL-VALUE COMMON-LISP::NINTH
+++         SYSTEM::CHECK-DECLARATIONS ANSI-LOOP::LOOP-PATH-NAMES
+++         COMMON-LISP::LOGICAL-PATHNAME COMMON-LISP::SIGNUM
+++         COMMON-LISP::FIND-ALL-SYMBOLS COMMON-LISP::FIFTH
+++         SYSTEM::S-DATA-P ANSI-LOOP::LOOP-CONSTANTP SYSTEM::IDESCRIBE
+++         SYSTEM::BKPT-FORM ANSI-LOOP::MAKE-ANSI-LOOP-UNIVERSE
+++         SLOOP::SLOOP-SLOOP-MACRO SYSTEM::NEXT-STACK-FRAME
+++         SYSTEM::INSPECT-CONS SYSTEM::KNOWN-TYPE-P
+++         SYSTEM::RESET-TRACE-DECLARATIONS COMMON-LISP::SINH
+++         ANSI-LOOP::LOOP-PATH-P COMMON-LISP::PROVIDE
+++         SYSTEM::INSPECT-SYMBOL SYSTEM::FIND-DOCUMENTATION
+++         ANSI-LOOP::LOOP-MAKE-DESETQ COMMON-LISP::TENTH
+++         SYSTEM::MAKE-DEFPACKAGE-FORM COMMON-LISP::FILE-WRITE-DATE
+++         COMMON-LISP::TWO-WAY-STREAM-OUTPUT-STREAM
+++         COMMON-LISP::TRUENAME COMMON-LISP::COMPLEMENT
+++         COMMON-LISP::FIRST ANSI-LOOP::LOOP-COLLECTOR-CLASS
+++         ANSI-LOOP::LOOP-COLLECTOR-TEMPVARS COMMON-LISP::ATANH
+++         SYSTEM::LOGICAL-PATHNAMEP COMMON-LISP::DIRECTORY-NAMESTRING
+++         SYSTEM::RESTART-P ANSI-LOOP::LOOP-MINIMAX-ANSWER-VARIABLE
+++         SYSTEM::FIND-KCL-TOP-RESTART COMMON-LISP::FILE-NAMESTRING
+++         COMMON-LISP::STREAM-EXTERNAL-FORMAT COMMON-LISP::SECOND
+++         COMMON-LISP::FILE-LENGTH SYSTEM::INSTREAM-STREAM
+++         ANSI-LOOP::LOOP-MINIMAX-TEMP-VARIABLE COMMON-LISP::PATHNAME
+++         SYSTEM::DO-F COMMON-LISP::FILE-AUTHOR
+++         SYSTEM::LOAD-PATHNAME-EXISTS SLOOP::AVERAGING-SLOOP-MACRO
+++         ANSI-LOOP::LOOP-CONSTRUCT-RETURN ANSI-LOOP::LOOP-UNIVERSE-ANSI
+++         ANSI-LOOP::LOOP-PSEUDO-BODY SLOOP::PARSE-LOOP
+++         ANSI-LOOP::LOOP-HACK-ITERATION SYSTEM::S-DATA-CONC-NAME
+++         SYSTEM::SEARCH-STACK ANSI-LOOP::LOOP-DO-THEREIS
+++         COMMON-LISP::BYTE-SIZE ANSI-LOOP::LOOP-MINIMAX-FLAG-VARIABLE
+++         COMMON-LISP::ACOSH SYSTEM::GET-PATH
+++         COMMON-LISP::LOGICAL-PATHNAME-TRANSLATIONS
+++         SYSTEM::S-DATA-CONSTRUCTORS SYSTEM::ENSURE-DIR-STRING
+++         SYSTEM::FREEZE-DEFSTRUCT SYSTEM::PRINT-IHS
+++         SYSTEM::INSPECT-CHARACTER COMMON-LISP::ARRAY-DIMENSIONS
+++         SLOOP::PARSE-LOOP-INITIALLY SYSTEM::COMPUTING-ARGS-P
+++         SYSTEM::INSTREAM-STREAM-NAME SYSTEM::PROCESS-ARGS FPE::GREF
+++         SYSTEM::S-DATA-NAME ANSI-LOOP::LOOP-UNIVERSE-TYPE-KEYWORDS
+++         SYSTEM::GET-BYTE-STREAM-NCHARS SYSTEM::S-DATA-INCLUDED
+++         SYSTEM::WALK-THROUGH SYSTEM::RESTART-FUNCTION
+++         SLOOP::TRANSLATE-NAME
+++         ANSI-LOOP::LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
+++         COMMON-LISP::SEVENTH COMMON-LISP::CIS FPE::LOOKUP
+++         COMMON-LISP::COSH COMMON-LISP::VECTOR-POP SYSTEM::IHS-FNAME
+++         SYSTEM::BREAK-BACKWARD-SEARCH-STACK SLOOP::REPEAT-SLOOP-MACRO
+++         COMMON-LISP::PROBE-FILE ANSI-LOOP::LOOP-LIST-COLLECTION
+++         SYSTEM::CONTEXT-P COMMON-LISP::SIXTH SYSTEM::NC
+++         SYSTEM::MAKE-FRAME COMMON-LISP::COMPILE-FILE-PATHNAME
+++         SYSTEM::INFO-NODE-FROM-POSITION SYSTEM::NODE-OFFSET
+++         SYSTEM::RESTART-TEST-FUNCTION SYSTEM::ALOAD
+++         ANSI-LOOP::LOOP-UNIVERSE-FOR-KEYWORDS
+++         ANSI-LOOP::LOOP-COLLECTOR-DTYPE SYSTEM::S-DATA-OFFSET
+++         SYSTEM::SHOW-ENVIRONMENT COMMON-LISP::SYNONYM-STREAM-SYMBOL
+++         SYSTEM::INSPECT-ARRAY ANSI-LOOP::LOOP-MAKE-PSETQ)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             COMMON-LISP::HASH-TABLE)
++-         SYSTEM::CONTEXT-SPICE)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         SYSTEM::BREAK-QUIT SYSTEM::DBL-BACKTRACE
+++         SYSTEM::BREAK-PREVIOUS SYSTEM::INFO-ERROR SYSTEM::BREAK-VS
+++         SYSTEM::BREAK-LOCAL SYSTEM::IHS-BACKTRACE
+++         ANSI-LOOP::LOOP-OPTIONAL-TYPE SYSTEM::BREAK-NEXT
+++         COMMON-LISP::MUFFLE-WARNING SYSTEM::BREAK-BDS
+++         COMMON-LISP::CONTINUE SYSTEM::SHOW-BREAK-VARIABLES)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::OR COMMON-LISP::NULL
++-                 COMMON-LISP::HASH-TABLE))
++-         SYSTEM::CONTEXT-HASH)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::FIXNUM)
++-         ANSI-LOOP::DUPLICATABLE-CODE-P SYSTEM::RELATIVE-LINE
++-         SYSTEM::LENEL SYSTEM::GET-NODE-INDEX SYSTEM::FASLINK
++-         SYSTEM::THE-END)) 
+++             (COMMON-LISP::VECTOR COMMON-LISP::T))
+++         SYSTEM::CONTEXT-VEC)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*))
++              COMMON-LISP::T)
++-         SLOOP::IN-PACKAGE-SLOOP-MAP SLOOP::DESETQ1
++-         COMMON-LISP::LOGANDC2 ANSI-LOOP::MAKE-LOOP-MINIMAX
++-         COMMON-LISP::WRITE-BYTE SYSTEM::MATCH-DIMENSIONS
++-         SLOOP::IN-CAREFULLY-SLOOP-FOR SLOOP::SUM-SLOOP-COLLECT
++-         SYSTEM::DOT-DIR-P SLOOP::IN-FRINGE-SLOOP-MAP
++-         SLOOP::COLLATE-SLOOP-COLLECT ANSI-LOOP::LOOP-TMEMBER
++-         FPE::READ-OPERANDS SYSTEM::IN-INTERVAL-P SYSTEM::SUBSTRINGP
++-         FPE::PAREN-READER ANSI-LOOP::HIDE-VARIABLE-REFERENCES
++-         SYSTEM::QUOTATION-READER SYSTEM::ALL-MATCHES SYSTEM::GET-MATCH
++-         SYSTEM::ADD-FILE ANSI-LOOP::LOOP-DO-ALWAYS SLOOP::THE-TYPE
++-         SYSTEM::?PUSH SYSTEM::INCREMENT-CURSOR
++-         SYSTEM::CHECK-SEQ-START-END SLOOP::MAKE-VALUE
++-         SLOOP::THEREIS-SLOOP-COLLECT ANSI-LOOP::LOOP-DO-WHILE
++-         COMMON-LISP::COERCE ANSI-LOOP::LOOP-TEQUAL
++-         ANSI-LOOP::LOOP-DECLARE-VARIABLE COMMON-LISP::LOGNAND
++-         COMMON-LISP::LOGORC1 SYSTEM::BREAK-STEP-NEXT
++-         SLOOP::LOGXOR-SLOOP-COLLECT COMMON-LISP::LOGNOR
++-         COMPILER::COMPILER-DEF-HOOK ANSI-LOOP::LOOP-TASSOC
++-         SYSTEM::GET-LINE-OF-FORM SLOOP::MAXIMIZE-SLOOP-COLLECT
++-         ANSI-LOOP::LOOP-DO-IF SYSTEM::SETF-EXPAND SYSTEM::DM-V
++-         SYSTEM::ITERATE-OVER-BKPTS COMMON-LISP::NTHCDR
++-         SYSTEM::CONDITION-PASS SYSTEM::DISPLAY-COMPILED-ENV
++-         COMMON-LISP::LDB-TEST ANSI-LOOP::LOOP-MAYBE-BIND-FORM
++-         SYSTEM::SUPER-GO SYSTEM::SETF-LOGICAL-PATHNAME-TRANSLATIONS
++-         FPE::RF SYSTEM::SUB-INTERVAL-P SYSTEM::LEFT-PARENTHESIS-READER
++-         COMMON-LISP::FILE-STRING-LENGTH SYSTEM::OBJLT SYSTEM::MSUB
++-         SYSTEM::COERCE-TO-STRING SYSTEM::SAFE-EVAL
++-         SYSTEM::SET-PATH-STREAM-NAME SYSTEM::SET-BACK
++-         ANSI-LOOP::LOOP-NOTE-MINIMAX-OPERATION COMMON-LISP::LOGTEST
++-         SYSTEM::*BREAK-POINTS* SLOOP::=-SLOOP-FOR
++-         SLOOP::MINIMIZE-SLOOP-COLLECT SYSTEM::KEYWORD-SUPPLIED-P
++-         SLOOP::COUNT-SLOOP-COLLECT FPE::%-READER COMMON-LISP::LOGORC2
++-         SYSTEM::SEQUENCE-CURSOR SYSTEM::LOOKUP-KEYWORD
++-         COMMON-LISP::BYTE SYSTEM::PARSE-SLOT-DESCRIPTION
++-         COMMON-LISP::LOGANDC1 SYSTEM::DM-NTH-CDR FPE::0-READER
++-         SLOOP::L-EQUAL SYSTEM::LIST-DELQ SYSTEM::DM-NTH
++-         COMMON-LISP::LDB SYSTEM::SETF-HELPER
++-         SLOOP::NEVER-SLOOP-COLLECT SLOOP::PARSE-LOOP-MAP
++-         COMMON-LISP::NTH SYSTEM::BREAK-STEP-INTO
++-         SYSTEM::GET-INFO-CHOICES SLOOP::IN-TABLE-SLOOP-MAP
++-         SYSTEM::GET-NODES COMMON-LISP::VECTOR-PUSH
++-         COMMON-LISP::PATHNAME-MATCH-P SYSTEM::DBL-UP
++-         ANSI-LOOP::LOOP-LOOKUP-KEYWORD FPE::READ-INSTRUCTION
++-         SLOOP::ALWAYS-SLOOP-COLLECT SYSTEM::SET-DIR SYSTEM::INFO-AUX
++-         SYSTEM::DISPLAY-ENV COMMON-LISP::DOCUMENTATION
++-         SYSTEM::OVERWRITE-SLOT-DESCRIPTIONS)) 
+++         SYSTEM::RESET-SYS-PATHS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         COMMON-LISP::APROPOS ANSI-LOOP::LOOP-CONSTANT-FOLD-IF-POSSIBLE
++-         COMMON-LISP::FFLOOR SYSTEM::PRINT-DOC SYSTEM::INFO
++-         SYSTEM::PARSE-BODY-HEADER COMMON-LISP::INVOKE-RESTART
++-         SYSTEM::BREAK-FUNCTION SYSTEM::SHOW-INFO COMMON-LISP::FROUND
++-         COMMON-LISP::GET-SETF-EXPANSION COMMON-LISP::PARSE-NAMESTRING
++-         SYSTEM::APROPOS-DOC COMMON-LISP::ENSURE-DIRECTORIES-EXIST
++-         COMMON-LISP::USE-VALUE COMMON-LISP::READ-FROM-STRING
++-         COMMON-LISP::FTRUNCATE COMMON-LISP::STORE-VALUE
++-         SYSTEM::STEPPER SYSTEM::GET-SETF-METHOD-MULTIPLE-VALUE
++-         COMMON-LISP::APROPOS-LIST COMMON-LISP::FCEILING
++-         COMMON-LISP::WRITE-TO-STRING
++-         COMMON-LISP::DECODE-UNIVERSAL-TIME)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SYSTEM::MAYBE-BREAK SYSTEM::MME3 SYSTEM::FIND-LINE-IN-FUN
+++         SYSTEM::SETF-STRUCTURE-ACCESS SYSTEM::EXPAND-RANGE
+++         SYSTEM::MINMAX SYSTEM::COERCE-TO-CONDITION
+++         SLOOP::FIRST-SLOOP-FOR SLOOP::FIRST-USE-SLOOP-FOR
+++         SYSTEM::DO-BREAK-LEVEL SYSTEM::ELSUB
+++         ANSI-LOOP::LOOP-FOR-ARITHMETIC SYSTEM::CALL-TEST
+++         SYSTEM::ELEMENT SYSTEM::LOAD-PATHNAME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::SETF-EXPAND-1 SLOOP::LOOP-PARSE-ADDITIONAL-COLLECTIONS
++-         SYSTEM::WARN-VERSION ANSI-LOOP::LOOP-TRANSLATE
++-         ANSI-LOOP::LOOP-FOR-IN ANSI-LOOP::PRINT-LOOP-UNIVERSE
++-         ANSI-LOOP::LOOP-STANDARD-EXPANSION
++-         ANSI-LOOP::LOOP-ANSI-FOR-EQUALS SYSTEM::DM-VL
++-         SYSTEM::SHARP-A-READER COMMON-LISP::DEPOSIT-FIELD
++-         SYSTEM::RESTART-CASE-EXPRESSION-CONDITION
++-         SYSTEM::APPLY-DISPLAY-FUN ANSI-LOOP::HIDE-VARIABLE-REFERENCE
++-         SYSTEM::FLOATING-POINT-ERROR SYSTEM::GET-SLOT-POS
+++         SYSTEM::SHARP-P-READER ANSI-LOOP::HIDE-VARIABLE-REFERENCE
+++         SYSTEM::CHECK-TRACE-ARGS SYSTEM::SHARP-U-READER
+++         SYSTEM::FLOATING-POINT-ERROR ANSI-LOOP::LOOP-FOR-IN
+++         COMMON-LISP::DEPOSIT-FIELD SYSTEM::GET-SLOT-POS
+++         SYSTEM::SHARP-A-READER SYSTEM::SHARP-V-READER
+++         SYSTEM::PATHNAME-PARSE
+++         SLOOP::LOOP-PARSE-ADDITIONAL-COLLECTIONS SYSTEM::SETF-EXPAND-1
+++         COMMON-LISP::DPB SYSTEM::RESTART-CASE-EXPRESSION-CONDITION
+++         SYSTEM::CHECK-S-DATA ANSI-LOOP::LOOP-FOR-BEING
+++         SYSTEM::TO-REGEXP-OR-NAMESTRING SYSTEM::APPLY-DISPLAY-FUN
+++         ANSI-LOOP::LOOP-ANSI-FOR-EQUALS ANSI-LOOP::LOOP-SUM-COLLECTION
+++         ANSI-LOOP::LOOP-FOR-ON SYSTEM::MFR
+++         ANSI-LOOP::LOOP-STANDARD-EXPANSION SYSTEM::PROG?*
++          ANSI-LOOP::LOOP-MAKE-ITERATION-VARIABLE
++-         SYSTEM::MAKE-BREAK-POINT SYSTEM::SHARP-V-READER
++-         SYSTEM::TO-REGEXP-OR-NAMESTRING ANSI-LOOP::LOOP-FOR-ON
++-         SYSTEM::SHARP-U-READER ANSI-LOOP::LOOP-SUM-COLLECTION
++-         SYSTEM::SHARP-P-READER SYSTEM::MAKE-T-TYPE
++-         ANSI-LOOP::LOOP-FOR-ACROSS SYSTEM::MFR SYSTEM::RECURSE-DIR
++-         SYSTEM::PATHNAME-PARSE ANSI-LOOP::LOOP-FOR-BEING
++-         COMMON-LISP::DPB SYSTEM::SHARP-DQ-READER
++-         SYSTEM::CHECK-TRACE-ARGS SYSTEM::DEFMACRO*
++-         SYSTEM::CHECK-S-DATA FPE::REF)) 
+++         SYSTEM::SHARP-DQ-READER SYSTEM::RECURSE-DIR SYSTEM::DM-VL
+++         ANSI-LOOP::LOOP-FOR-ACROSS ANSI-LOOP::PRINT-LOOP-UNIVERSE
+++         SYSTEM::WARN-VERSION ANSI-LOOP::LOOP-TRANSLATE
+++         SYSTEM::DEFMACRO* SYSTEM::MAKE-BREAK-POINT SYSTEM::MAKE-T-TYPE
+++         FPE::REF)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         SYSTEM::MME2 COMMON-LISP::SUBSTITUTE-IF-NOT
+++         ANSI-LOOP::LOOP-HASH-TABLE-ITERATION-PATH
+++         COMMON-LISP::SUBSTITUTE SYSTEM::WALK-DIR
+++         SYSTEM::CHECK-TYPE-SYMBOL COMMON-LISP::TRANSLATE-PATHNAME
+++         ANSI-LOOP::LOOP-PACKAGE-SYMBOLS-ITERATION-PATH
+++         COMMON-LISP::MAP ANSI-LOOP::LOOP-SEQUENCE-ELEMENTS-PATH
+++         ANSI-LOOP::ADD-LOOP-PATH SLOOP::LOOP-DECLARE-BINDING
+++         SYSTEM::COMPLETE-PROP SYSTEM::MATCH-COMPONENT
+++         COMMON-LISP::NSUBSTITUTE COMMON-LISP::NSUBSTITUTE-IF
+++         COMMON-LISP::SUBSTITUTE-IF COMMON-LISP::NSUBSTITUTE-IF-NOT
+++         SYSTEM::PUSH-LET-BINDING ANSI-LOOP::LOOP-MAKE-VARIABLE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         SYSTEM::FIND-IHS COMMON-LISP::NSET-DIFFERENCE
++-         COMMON-LISP::BIT-NAND SYSTEM::BREAK-CALL
++-         COMMON-LISP::COUNT-IF-NOT COMMON-LISP::DELETE
++-         SYSTEM::INTERNAL-COUNT COMMON-LISP::BIT-ORC1
++-         COMMON-LISP::DELETE-IF COMMON-LISP::BIT-ANDC1
++-         SYSTEM::VECTOR-PUSH-STRING COMMON-LISP::MISMATCH
++-         COMMON-LISP::NOTEVERY SYSTEM::PROCESS-ERROR COMMON-LISP::TYPEP
++-         COMMON-LISP::BIT-IOR COMMON-LISP::BIT-EQV
++-         COMMON-LISP::COUNT-IF COMMON-LISP::REMOVE-IF
++-         COMMON-LISP::EVERY COMMON-LISP::POSITION-IF-NOT
++-         COMMON-LISP::ADJUST-ARRAY COMMON-LISP::VECTOR-PUSH-EXTEND
++-         SYSTEM::INTERNAL-COUNT-IF-NOT COMMON-LISP::COUNT
++-         COMMON-LISP::DELETE-IF-NOT COMMON-LISP::NINTERSECTION
++-         COMMON-LISP::FIND-IF-NOT COMMON-LISP::BIT-ORC2
++-         COMMON-LISP::SUBSETP COMMON-LISP::SOME SYSTEM::WREADDIR
++-         COMMON-LISP::SET-DIFFERENCE COMMON-LISP::UNION
++-         COMMON-LISP::BIT-XOR SLOOP::PARSE-LOOP-MACRO
++-         COMMON-LISP::REPLACE COMMON-LISP::REMOVE
++-         SLOOP::LOOP-ADD-BINDING COMMON-LISP::BIT-ANDC2
++-         COMMON-LISP::READ-SEQUENCE COMMON-LISP::CERROR
++-         COMMON-LISP::INTERSECTION COMMON-LISP::POSITION-IF
++-         ANSI-LOOP::LOOP-CHECK-DATA-TYPE SYSTEM::INTERNAL-COUNT-IF
++-         COMMON-LISP::NUNION COMMON-LISP::WRITE-SEQUENCE
++-         COMMON-LISP::MAP-INTO COMMON-LISP::MAKE-SEQUENCE
++-         COMMON-LISP::SET-EXCLUSIVE-OR SLOOP::IN-ARRAY-SLOOP-FOR
++-         COMMON-LISP::FIND-IF COMMON-LISP::SEARCH COMMON-LISP::FILL
++-         COMMON-LISP::FIND COMMON-LISP::NOTANY
++-         COMMON-LISP::NSET-EXCLUSIVE-OR COMMON-LISP::BIT-NOR
++-         COMMON-LISP::REMOVE-IF-NOT COMMON-LISP::POSITION
++-         COMMON-LISP::BIT-AND)) 
+++         COMMON-LISP::DELETE-IF-NOT COMMON-LISP::FILL
+++         COMMON-LISP::SET-EXCLUSIVE-OR ANSI-LOOP::LOOP-CHECK-DATA-TYPE
+++         SYSTEM::INTERNAL-COUNT-IF-NOT COMMON-LISP::SOME
+++         COMMON-LISP::COUNT COMMON-LISP::NOTANY SYSTEM::INTERNAL-COUNT
+++         COMMON-LISP::POSITION-IF-NOT COMMON-LISP::SET-DIFFERENCE
+++         SLOOP::IN-ARRAY-SLOOP-FOR COMMON-LISP::NUNION
+++         COMMON-LISP::BIT-NAND SYSTEM::PROCESS-ERROR
+++         COMMON-LISP::BIT-ANDC2 COMMON-LISP::POSITION-IF
+++         COMMON-LISP::NSET-DIFFERENCE COMMON-LISP::WRITE-SEQUENCE
+++         COMMON-LISP::BIT-XOR COMMON-LISP::READ-SEQUENCE
+++         COMMON-LISP::DELETE-IF COMMON-LISP::MAP-INTO
+++         COMMON-LISP::SUBSETP COMMON-LISP::REMOVE-IF-NOT
+++         COMMON-LISP::FIND-IF COMMON-LISP::INTERSECTION
+++         COMMON-LISP::REPLACE COMMON-LISP::VECTOR-PUSH-EXTEND
+++         COMMON-LISP::BIT-ORC2 COMMON-LISP::POSITION
+++         COMMON-LISP::CERROR COMMON-LISP::FIND COMMON-LISP::BIT-ORC1
+++         SYSTEM::BREAK-CALL SLOOP::PARSE-LOOP-MACRO COMMON-LISP::EVERY
+++         COMMON-LISP::COUNT-IF-NOT COMMON-LISP::ADJUST-ARRAY
+++         COMMON-LISP::SEARCH COMMON-LISP::REMOVE-IF
+++         COMMON-LISP::NOTEVERY COMMON-LISP::TYPEP COMMON-LISP::COUNT-IF
+++         SYSTEM::WREADDIR SYSTEM::INTERNAL-COUNT-IF COMMON-LISP::DELETE
+++         COMMON-LISP::NSET-EXCLUSIVE-OR COMMON-LISP::UNION
+++         COMMON-LISP::BIT-EQV COMMON-LISP::NINTERSECTION
+++         COMMON-LISP::MISMATCH SYSTEM::FIND-IHS COMMON-LISP::REMOVE
+++         SYSTEM::VECTOR-PUSH-STRING COMMON-LISP::BIT-IOR
+++         COMMON-LISP::FIND-IF-NOT COMMON-LISP::MAKE-SEQUENCE
+++         COMMON-LISP::BIT-ANDC1 SLOOP::LOOP-ADD-BINDING
+++         COMMON-LISP::BIT-NOR COMMON-LISP::BIT-AND)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::FIND-LINE-IN-FUN ANSI-LOOP::LOOP-FOR-ARITHMETIC
++-         SYSTEM::EXPAND-RANGE SYSTEM::MAYBE-BREAK SYSTEM::MINMAX
++-         SLOOP::FIRST-USE-SLOOP-FOR SLOOP::FIRST-SLOOP-FOR
++-         SYSTEM::SETF-STRUCTURE-ACCESS SYSTEM::DO-BREAK-LEVEL
++-         SYSTEM::CALL-TEST SYSTEM::ELEMENT SYSTEM::LOAD-PATHNAME
++-         SYSTEM::COERCE-TO-CONDITION SYSTEM::ELSUB)) 
+++         SYSTEM::DO-ARG-COUNT-ERROR SYSTEM::PUSH-SUB-LIST-BINDING)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::*)
+++                 COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SLOOP::DEF-LOOP-INTERNAL COMMON-LISP::MERGE
++-         SYSTEM::PRINT-STACK-FRAME)) 
+++         SYSTEM::MAKE-PREDICATE SYSTEM::DO?* SYSTEM::MAKE-CONSTRUCTOR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMMON-LISP::ENCODE-UNIVERSAL-TIME)) 
+++         ANSI-LOOP::LOOP-SEQUENCER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
+++                 COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         ANSI-LOOP::LOOP-PACKAGE-SYMBOLS-ITERATION-PATH
++-         SYSTEM::COMPLETE-PROP SYSTEM::CHECK-TYPE-SYMBOL
++-         COMMON-LISP::NSUBSTITUTE
++-         ANSI-LOOP::LOOP-SEQUENCE-ELEMENTS-PATH COMMON-LISP::SUBSTITUTE
++-         COMMON-LISP::TRANSLATE-PATHNAME COMMON-LISP::NSUBSTITUTE-IF
++-         COMMON-LISP::MAP SLOOP::LOOP-DECLARE-BINDING SYSTEM::WALK-DIR
++-         SYSTEM::MATCH-COMPONENT ANSI-LOOP::LOOP-MAKE-VARIABLE
++-         ANSI-LOOP::ADD-LOOP-PATH COMMON-LISP::SUBSTITUTE-IF
++-         COMMON-LISP::NSUBSTITUTE-IF-NOT SYSTEM::MME2
++-         ANSI-LOOP::LOOP-HASH-TABLE-ITERATION-PATH
++-         COMMON-LISP::SUBSTITUTE-IF-NOT SYSTEM::PUSH-LET-BINDING)) 
+++         SYSTEM::EXPAND-WILD-DIRECTORY SLOOP::DEF-LOOP-INTERNAL
+++         COMMON-LISP::MERGE SYSTEM::PRINT-STACK-FRAME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -243,88 +286,120 @@
++                  (COMMON-LISP::INTEGER -9223372036854775808
++                      9223372036854775807))
++              COMMON-LISP::T)
++-         SYSTEM::SHARP-SHARP-READER SYSTEM::SHARP-EQ-READER)) 
+++         SYSTEM::SHARP-EQ-READER SYSTEM::SHARP-SHARP-READER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
++              COMMON-LISP::T)
++-         SYSTEM::DO-ARG-COUNT-ERROR SYSTEM::PUSH-SUB-LIST-BINDING)) 
+++         COMMON-LISP::ENCODE-UNIVERSAL-TIME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         SYSTEM::MAKE-CONSTRUCTOR SYSTEM::MAKE-PREDICATE)) 
+++         SYSTEM::UNIVERSAL-ERROR-HANDLER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::PARSE-DEFMACRO SYSTEM::PARSE-DEFMACRO-LAMBDA-LIST)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMMON-LISP::SUBST COMMON-LISP::SUBST-IF-NOT
+++         COMMON-LISP::SUBST-IF SYSTEM::MASET)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::READ-INSPECT-COMMAND SYSTEM::RESTART-PRINT
+++         ANSI-LOOP::LOOP-GET-COLLECTION-INFO SYSTEM::SHARP-+-READER
+++         SYSTEM::VERIFY-KEYWORDS SYSTEM::SHARP-S-READER
+++         SYSTEM::LIST-MERGE-SORT SYSTEM::SHARP---READER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::PARSE-BODY COMMON-LISP::SORT
+++         SLOOP::FIND-IN-ORDERED-LIST COMMON-LISP::REDUCE
+++         COMMON-LISP::STABLE-SORT COMMON-LISP::SUBTYPEP)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         ANSI-LOOP::LOOP-SEQUENCER)) 
+++             COMMON-LISP::*)
+++         SYSTEM::TRACE-CALL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         SYSTEM::UNIVERSAL-ERROR-HANDLER)) 
++-(COMMON-LISP::MAPC
++-    (COMMON-LISP::LAMBDA (COMPILER::X)
++-      (COMMON-LISP::SETF
++-          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
++-          COMMON-LISP::T))
++-    '(SYSTEM::SI-FIND-CLASS SYSTEM::WARNINGP SYSTEM::SI-CLASS-OF
++-         SYSTEM::CONDITION-CLASS-P SYSTEM::UNTRACE-ONE
++-         SYSTEM::MAKE-ACCESS-FUNCTION SYSTEM::SIMPLE-CONDITION-CLASS-P
++-         SYSTEM::CONDITIONP SYSTEM::AUTOLOAD
++-         SYSTEM::SI-CLASS-PRECEDENCE-LIST SYSTEM::SI-CLASSP
++-         FPE::BREAK-ON-FLOATING-POINT-EXCEPTIONS SYSTEM::TRACE-ONE
++-         SYSTEM::AUTOLOAD-MACRO SYSTEM::DEFINE-STRUCTURE
++-         SYSTEM::SI-CLASS-NAME)) 
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::PUSH-OPTIONAL-BINDING)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
++-         SYSTEM::INSTREAM-NAME ANSI-LOOP::LOOP-LIST-STEP
++-         COMMON-LISP::PRIN1-TO-STRING ANSI-LOOP::NAMED-VARIABLE
++-         SYSTEM::WAITING SYSTEM::FIND-DECLARATIONS COMMON-LISP::INSPECT
++-         SYSTEM::END-WAITING SYSTEM::BREAK-GO SYSTEM::INFO-SUBFILE
++-         COMMON-LISP::INVOKE-RESTART-INTERACTIVELY
++-         ANSI-LOOP::LOOP-OPTIMIZATION-QUANTITIES SYSTEM::INSPECT-OBJECT
++-         SYSTEM::BREAK-LEVEL-INVOKE-RESTART SYSTEM::EXPAND-RANGES
++-         SYSTEM::GET-&ENVIRONMENT COMMON-LISP::DESCRIBE
++-         COMMON-LISP::PRINC-TO-STRING)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         SYSTEM::MAKE-CONTEXT ANSI-LOOP::MAKE-STANDARD-LOOP-UNIVERSE
+++         ANSI-LOOP::MAKE-LOOP-UNIVERSE SYSTEM::MAKE-S-DATA
+++         SYSTEM::NEXT-MATCH COMMON-LISP::USER-HOMEDIR-PATHNAME
+++         SYSTEM::STEP-NEXT ANSI-LOOP::LOOP-DISALLOW-CONDITIONAL
+++         COMMON-LISP::VECTOR SLOOP::PARSE-LOOP-WITH
+++         COMMON-LISP::COMPUTE-RESTARTS COMMON-LISP::BREAK
+++         ANSI-LOOP::MAKE-LOOP-PATH ANSI-LOOP::LOOP-GENTEMP
+++         COMMON-LISP::ABORT COMMON-LISP::YES-OR-NO-P
+++         SYSTEM::MAKE-INSTREAM SYSTEM::DBL-READ
+++         SYSTEM::MAYBE-CLEAR-INPUT SYSTEM::MAKE-RESTART
+++         ANSI-LOOP::MAKE-LOOP-MINIMAX-INTERNAL COMMON-LISP::Y-OR-N-P
+++         SLOOP::PARSE-LOOP-DECLARE ANSI-LOOP::MAKE-LOOP-COLLECTOR
+++         SYSTEM::DESCRIBE-ENVIRONMENT SYSTEM::STEP-INTO
+++         SYSTEM::CURRENT-STEP-FUN COMMON-LISP::DRIBBLE
+++         COMMON-LISP::MAKE-PATHNAME SYSTEM::BREAK-LOCALS SYSTEM::LOC
+++         SYSTEM::TRANSFORM-KEYWORDS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
++-         COMMON-LISP::ABORT ANSI-LOOP::MAKE-STANDARD-LOOP-UNIVERSE
++-         SYSTEM::MAKE-S-DATA ANSI-LOOP::MAKE-LOOP-MINIMAX-INTERNAL
++-         ANSI-LOOP::MAKE-LOOP-PATH SYSTEM::CURRENT-STEP-FUN SYSTEM::LOC
++-         SYSTEM::DBL-READ SYSTEM::MAKE-RESTART
++-         SYSTEM::TRANSFORM-KEYWORDS COMMON-LISP::Y-OR-N-P
++-         SYSTEM::NEXT-MATCH COMMON-LISP::COMPUTE-RESTARTS
++-         SLOOP::PARSE-LOOP-WITH COMMON-LISP::VECTOR SYSTEM::STEP-NEXT
++-         ANSI-LOOP::MAKE-LOOP-COLLECTOR
++-         COMMON-LISP::USER-HOMEDIR-PATHNAME SLOOP::PARSE-LOOP-DECLARE
++-         COMMON-LISP::YES-OR-NO-P SYSTEM::STEP-INTO
++-         SYSTEM::MAKE-CONTEXT SYSTEM::BREAK-LOCALS
++-         SYSTEM::DESCRIBE-ENVIRONMENT COMMON-LISP::DRIBBLE
++-         ANSI-LOOP::LOOP-DISALLOW-CONDITIONAL SYSTEM::MAYBE-CLEAR-INPUT
++-         COMMON-LISP::BREAK ANSI-LOOP::LOOP-GENTEMP
++-         ANSI-LOOP::MAKE-LOOP-UNIVERSE SYSTEM::MAKE-INSTREAM
++-         COMMON-LISP::MAKE-PATHNAME)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         ANSI-LOOP::LOOP-OPTIMIZATION-QUANTITIES
+++         COMMON-LISP::PRIN1-TO-STRING SYSTEM::GET-&ENVIRONMENT
+++         COMMON-LISP::INSPECT SYSTEM::BREAK-GO
+++         SYSTEM::PARSE-BODY-HEADER COMMON-LISP::PRINC-TO-STRING
+++         SYSTEM::EXPAND-RANGES ANSI-LOOP::NAMED-VARIABLE
+++         ANSI-LOOP::LOOP-LIST-STEP SYSTEM::INSTREAM-NAME
+++         SYSTEM::WAITING SYSTEM::END-WAITING COMMON-LISP::DESCRIBE
+++         SYSTEM::INFO-SUBFILE SYSTEM::FIND-DECLARATIONS
+++         SYSTEM::INSPECT-OBJECT SYSTEM::BREAK-LEVEL-INVOKE-RESTART
+++         COMMON-LISP::INVOKE-RESTART-INTERACTIVELY)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807))
++-             COMMON-LISP::FIXNUM)
++-         FPE::FE-ENABLE SYSTEM::DBL-WHAT-FRAME)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         SYSTEM::S-DATA-SIZE FPE::REG-LOOKUP SYSTEM::INSTREAM-LINE
+++         SYSTEM::S-DATA-LENGTH SYSTEM::THE-START)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(SYSTEM::SI-CLASS-PRECEDENCE-LIST SYSTEM::AUTOLOAD
+++         SYSTEM::UNTRACE-ONE SYSTEM::TRACE-ONE SYSTEM::CONDITIONP
+++         SYSTEM::MAKE-ACCESS-FUNCTION SYSTEM::SI-CLASS-NAME
+++         SYSTEM::SI-CLASSP SYSTEM::SI-CLASS-OF SYSTEM::SI-FIND-CLASS
+++         SYSTEM::CONDITION-CLASS-P SYSTEM::AUTOLOAD-MACRO
+++         SYSTEM::WARNINGP SYSTEM::DEFINE-STRUCTURE
+++         FPE::BREAK-ON-FLOATING-POINT-EXCEPTIONS
+++         SYSTEM::SIMPLE-CONDITION-CLASS-P)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -336,155 +411,9 @@
++          SYSTEM::ROUND-UP)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
++-                  COMMON-LISP::*)
++-              (COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807))
++-             COMMON-LISP::FIXNUM)
++-         SYSTEM::ATOI)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         SYSTEM::REGEXP-CONV SYSTEM::DIR-CONJ SYSTEM::DIR-P
++-         ANSI-LOOP::LOOP-LIST-COLLECTION COMMON-LISP::COSH
++-         SYSTEM::GET-BYTE-STREAM-NCHARS SYSTEM::INSPECT-CONS
++-         SYSTEM::KNOWN-TYPE-P SYSTEM::LNP COMMON-LISP::SEVENTH
++-         SYSTEM::BKPT-FUNCTION SYSTEM::WILD-DIR-ELEMENT-P
++-         COMMON-LISP::COMPILER-MACRO-FUNCTION
++-         ANSI-LOOP::LOOP-HACK-ITERATION
++-         COMMON-LISP::ECHO-STREAM-OUTPUT-STREAM
++-         SYSTEM::DIRECTORY-LIST-CHECK COMMON-LISP::FILE-WRITE-DATE
++-         SYSTEM::NORMALIZE-TYPE COMMON-LISP::EIGHTH SYSTEM::TOGGLE-CASE
++-         SYSTEM::SHOW-ENVIRONMENT
++-         COMMON-LISP::TWO-WAY-STREAM-INPUT-STREAM SYSTEM::GET-PATH
++-         COMMON-LISP::ASINH SYSTEM::FIND-KCL-TOP-RESTART
++-         SYSTEM::RESTART-P SYSTEM::EVAL-FEATURE SYSTEM::ALOAD
++-         COMMON-LISP::PHASE SLOOP::SUBSTITUTE-SLOOP-BODY
++-         COMMON-LISP::ASIN SYSTEM::NODES-FROM-INDEX
++-         SYSTEM::MAKE-DEFPACKAGE-FORM ANSI-LOOP::LOOP-COLLECTOR-DTYPE
++-         SYSTEM::LOGICAL-PATHNAMEP SYSTEM::INSPECT-VECTOR
++-         ANSI-LOOP::LOOP-UNIVERSE-TYPE-KEYWORDS
++-         SYSTEM::RESTART-REPORT-FUNCTION SYSTEM::IHS-VISIBLE
++-         SLOOP::LOOP-COLLECT-KEYWORD-P ANSI-LOOP::LOOP-TYPED-INIT
++-         COMMON-LISP::VECTOR-POP SYSTEM::UNIQUE-ID
++-         ANSI-LOOP::LOOP-UNIVERSE-ITERATION-KEYWORDS
++-         SYSTEM::SIMPLE-ARRAY-P COMMON-LISP::ACOS SYSTEM::DBL-EVAL
++-         SYSTEM::INSPECT-STRING SYSTEM::MLP
++-         SYSTEM::INSTREAM-STREAM-NAME SYSTEM::WILD-NAMESTRING-P
++-         ANSI-LOOP::LOOP-PATH-FUNCTION
++-         SYSTEM::GET-STRING-INPUT-STREAM-INDEX
++-         ANSI-LOOP::LOOP-MINIMAX-TEMP-VARIABLE SYSTEM::SEQTYPE
++-         ANSI-LOOP::LOOP-UNIVERSE-KEYWORDS
++-         SYSTEM::BEST-ARRAY-ELEMENT-TYPE
++-         ANSI-LOOP::LOOP-MINIMAX-INFINITY-DATA SYSTEM::S-DATA-FROZEN
++-         SYSTEM::S-DATA-DOCUMENTATION SYSTEM::DWIM COMMON-LISP::SIGNUM
++-         SYSTEM::FIND-DOCUMENTATION ANSI-LOOP::LOOP-COLLECTOR-HISTORY
++-         ANSI-LOOP::LOOP-MAKE-PSETQ FPE::GREF SYSTEM::S-DATA-OFFSET
++-         SYSTEM::WILD-PATH-ELEMENT-P SYSTEM::INSTREAM-P
++-         COMMON-LISP::DIRECTORY-NAMESTRING SYSTEM::INSPECT-ARRAY
++-         COMMON-LISP::ARRAY-DIMENSIONS
++-         ANSI-LOOP::LOOP-COLLECTOR-TEMPVARS ANSI-LOOP::LOOP-MINIMAX-P
++-         SLOOP::RETURN-SLOOP-MACRO SYSTEM::WALK-THROUGH
++-         SYSTEM::NEXT-STACK-FRAME SYSTEM::S-DATA-NAME COMMON-LISP::TANH
++-         SYSTEM::BREAK-BACKWARD-SEARCH-STACK COMMON-LISP::TENTH
++-         SYSTEM::INFO-NODE-FROM-POSITION FPE::ST-LOOKUP
++-         COMMON-LISP::RESTART-NAME SYSTEM::S-DATA-TYPE
++-         SYSTEM::BKPT-FILE-LINE COMMON-LISP::FIND-ALL-SYMBOLS
++-         COMMON-LISP::FIFTH SLOOP::LOOP-LET-BINDINGS
++-         COMMON-LISP::ECHO-STREAM-INPUT-STREAM
++-         ANSI-LOOP::LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
++-         COMMON-LISP::PROBE-FILE SYSTEM::MAKE-FRAME
++-         SYSTEM::IHS-NOT-INTERPRETED-ENV SYSTEM::SEARCH-STACK
++-         COMMON-LISP::COMPILE-FILE-PATHNAME
++-         SYSTEM::PRINT-SYMBOL-APROPOS COMMON-LISP::LOGNOT
++-         SYSTEM::INFO-GET-TAGS SYSTEM::SHORT-NAME
++-         ANSI-LOOP::LOOP-MINIMAX-TYPE COMMON-LISP::SIXTH
++-         COMMON-LISP::SECOND ANSI-LOOP::LOOP-UNIVERSE-TYPE-SYMBOLS
++-         COMMON-LISP::TWO-WAY-STREAM-OUTPUT-STREAM
++-         SYSTEM::S-DATA-INCLUDES SYSTEM::RESTART-INTERACTIVE-FUNCTION
++-         SLOOP::TRANSLATE-NAME SYSTEM::PATCH-SHARP COMMON-LISP::ABS
++-         ANSI-LOOP::LOOP-CONSTANTP SYSTEM::LEAP-YEAR-P
++-         ANSI-LOOP::LOOP-UNIVERSE-ANSI ANSI-LOOP::LOOP-EMIT-BODY
++-         COMMON-LISP::HOST-NAMESTRING COMMON-LISP::FIRST
++-         SYSTEM::INSERT-BREAK-POINT
++-         COMMON-LISP::LOAD-LOGICAL-PATHNAME-TRANSLATIONS
++-         COMMON-LISP::DELETE-FILE ANSI-LOOP::LOOP-PSEUDO-BODY
++-         SYSTEM::GET-NEXT-VISIBLE-FUN SYSTEM::S-DATA-HAS-HOLES
++-         ANSI-LOOP::LOOP-COLLECTOR-NAME COMMON-LISP::FOURTH
++-         SYSTEM::BKPT-FILE SYSTEM::CANONICALIZE-PATHNAME-DIRECTORY
++-         SYSTEM::INSTREAM-STREAM SYSTEM::PNL1 SYSTEM::IHS-FNAME
++-         SYSTEM::S-DATA-SLOT-POSITION SLOOP::PARSE-LOOP
++-         SYSTEM::CHECK-TRACE-SPEC SYSTEM::S-DATA-CONSTRUCTORS
++-         SYSTEM::S-DATA-STATICP SYSTEM::CONTEXT-P
++-         COMMON-LISP::LOGICAL-PATHNAME-TRANSLATIONS
++-         SYSTEM::INFO-GET-FILE COMMON-LISP::COMPLEMENT
++-         SYSTEM::INSPECT-NUMBER SYSTEM::RESET-TRACE-DECLARATIONS
++-         ANSI-LOOP::LOOP-PATH-P SLOOP::REPEAT-SLOOP-MACRO SYSTEM::DO-F
++-         SYSTEM::INSPECT-PACKAGE SYSTEM::PATH-STREAM-NAME
++-         SYSTEM::GET-INSTREAM COMMON-LISP::BYTE-SIZE
++-         SYSTEM::RESTART-FUNCTION FPE::LOOKUP SYSTEM::S-DATA-CONC-NAME
++-         COMMON-LISP::PROVIDE SYSTEM::S-DATA-NAMED SYSTEM::PRINT-FRS
++-         ANSI-LOOP::LOOP-MINIMAX-ANSWER-VARIABLE SYSTEM::NODE-OFFSET
++-         ANSI-LOOP::MAKE-ANSI-LOOP-UNIVERSE SYSTEM::PRINT-IHS
++-         ANSI-LOOP::LOOP-UNIVERSE-PATH-KEYWORDS COMMON-LISP::TRUENAME
++-         SYSTEM::BREAK-FORWARD-SEARCH-STACK
++-         COMMON-LISP::CONCATENATED-STREAM-STREAMS SYSTEM::VERSION-PARSE
++-         SYSTEM::INSPECT-CHARACTER SYSTEM::LOGICAL-PATHNAME-HOST-P
++-         SYSTEM::DM-BAD-KEY SYSTEM::EXPAND-HOME-DIR
++-         ANSI-LOOP::LOOP-PATH-USER-DATA
++-         ANSI-LOOP::LOOP-PATH-PREPOSITION-GROUPS SYSTEM::INSPECT-SYMBOL
++-         COMMON-LISP::INVOKE-DEBUGGER
++-         SYSTEM::LOGICAL-PATHNAME-DESIGNATOR-P
++-         COMMON-LISP::BYTE-POSITION COMMON-LISP::ISQRT COMMON-LISP::CIS
++-         ANSI-LOOP::LOOP-COLLECTOR-CLASS
++-         COMMON-LISP::SYNONYM-STREAM-SYMBOL ANSI-LOOP::LOOP-PATH-NAMES
++-         SYSTEM::RE-QUOTE-STRING SYSTEM::INSPECT-STRUCTURE
++-         COMMON-LISP::RATIONAL FPE::XMM-LOOKUP
++-         SYSTEM::REWRITE-RESTART-CASE-CLAUSE
++-         SYSTEM::S-DATA-PRINT-FUNCTION
++-         SYSTEM::RESTRICT-STREAM-ELEMENT-TYPE SLOOP::SLOOP-SLOOP-MACRO
++-         COMMON-LISP::NAMESTRING SYSTEM::ENSURE-DIR-STRING
++-         COMMON-LISP::CONSTANTLY SLOOP::PARSE-LOOP-INITIALLY
++-         SYSTEM::S-DATA-RAW SYSTEM::ADD-TO-HOTLIST SYSTEM::FRS-KIND
++-         ANSI-LOOP::LOOP-MAXMIN-COLLECTION
++-         ANSI-LOOP::LOOP-COLLECTOR-DATA SYSTEM::PROCESS-ARGS
++-         SYSTEM::COERCE-SLASH-TERMINATED SYSTEM::MAKE-KCL-TOP-RESTART
++-         COMMON-LISP::ATANH ANSI-LOOP::LOOP-CODE-DUPLICATION-THRESHOLD
++-         COMMON-LISP::SINH ANSI-LOOP::LOOP-UNIVERSE-P
++-         ANSI-LOOP::LOOP-PATH-INCLUSIVE-PERMITTED
++-         SYSTEM::S-DATA-INCLUDED COMMON-LISP::STREAM-EXTERNAL-FORMAT
++-         SYSTEM::COMPUTING-ARGS-P SYSTEM::REAL-ASINH
++-         ANSI-LOOP::LOOP-CONSTRUCT-RETURN
++-         SYSTEM::S-DATA-SLOT-DESCRIPTIONS SYSTEM::FIX-LOAD-PATH
++-         SYSTEM::CHECK-DECLARATIONS
++-         ANSI-LOOP::LOOP-UNIVERSE-FOR-KEYWORDS
++-         SLOOP::POINTER-FOR-COLLECT COMMON-LISP::LOGICAL-PATHNAME
++-         SYSTEM::CHDIR SYSTEM::IDESCRIBE
++-         ANSI-LOOP::LOOP-MINIMAX-OPERATIONS COMMON-LISP::ACOSH
++-         COMMON-LISP::NINTH ANSI-LOOP::LOOP-MINIMAX-FLAG-VARIABLE
++-         ANSI-LOOP::LOOP-COLLECTOR-P SYSTEM::S-DATA-P SYSTEM::BKPT-FORM
++-         COMMON-LISP::FILE-NAMESTRING SYSTEM::TERMINAL-INTERRUPT
++-         SYSTEM::SETUP-INFO SLOOP::PARSE-NO-BODY
++-         SYSTEM::DM-KEY-NOT-ALLOWED ANSI-LOOP::LOOP-EMIT-FINAL-VALUE
++-         SYSTEM::FREEZE-DEFSTRUCT SYSTEM::DBL-RPL-LOOP
++-         SYSTEM::TRACE-ONE-PREPROCESS
++-         COMMON-LISP::BROADCAST-STREAM-STREAMS COMMON-LISP::THIRD
++-         SLOOP::AVERAGING-SLOOP-MACRO SYSTEM::SHOW-BREAK-POINT
++-         COMMON-LISP::PATHNAME ANSI-LOOP::LOOP-DO-THEREIS
++-         COMMON-LISP::FILE-AUTHOR ANSI-LOOP::LOOP-MAKE-DESETQ
++-         SYSTEM::NC SYSTEM::NUMBER-OF-DAYS-FROM-1900
++-         SYSTEM::RESTART-TEST-FUNCTION SYSTEM::WHICH
++-         ANSI-LOOP::DESTRUCTURING-SIZE COMMON-LISP::FILE-LENGTH)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
++-         SYSTEM::BREAK-VS ANSI-LOOP::LOOP-OPTIONAL-TYPE
++-         SYSTEM::BREAK-BDS SYSTEM::IHS-BACKTRACE SYSTEM::INFO-ERROR
++-         SYSTEM::BREAK-LOCAL SYSTEM::SHOW-BREAK-VARIABLES
++-         COMMON-LISP::MUFFLE-WARNING SYSTEM::BREAK-PREVIOUS
++-         SYSTEM::BREAK-QUIT SYSTEM::DBL-BACKTRACE COMMON-LISP::CONTINUE
++-         SYSTEM::BREAK-NEXT)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             COMMON-LISP::HASH-TABLE)
+++         SYSTEM::CONTEXT-SPICE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++@@ -512,124 +441,227 @@
++          SYSTEM::BIGNTHCDR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         COMMON-LISP::FIND-RESTART COMMON-LISP::PATHNAME-HOST
++-         SYSTEM::LINK-EXPAND COMMON-LISP::CONCATENATE COMMON-LISP::WARN
++-         COMMON-LISP::FILE-POSITION ANSI-LOOP::LOOP-WARN
++-         COMMON-LISP::PATHNAME-DIRECTORY COMMON-LISP::SBIT
++-         COMMON-LISP::BIT ANSI-LOOP::LOOP-COLLECT-PREPOSITIONAL-PHRASES
++-         COMMON-LISP::PATHNAME-TYPE COMMON-LISP::MAKE-ARRAY
++-         ANSI-LOOP::LOOP-ERROR COMMON-LISP::DIRECTORY SYSTEM::DIR-PARSE
++-         COMMON-LISP::TRANSLATE-LOGICAL-PATHNAME
++-         SYSTEM::NTH-STACK-FRAME COMMON-LISP::REQUIRE COMMON-LISP::LOAD
++-         SYSTEM::MGLIST COMMON-LISP::DELETE-DUPLICATES
++-         COMMON-LISP::PATHNAME-VERSION COMMON-LISP::ENOUGH-NAMESTRING
++-         SYSTEM::BAD-SEQ-LIMIT COMMON-LISP::REMOVE-DUPLICATES
++-         COMMON-LISP::PATHNAME-NAME
++-         COMMON-LISP::MAKE-STRING-INPUT-STREAM SLOOP::LOOP-ADD-TEMPS
++-         SYSTEM::NLOAD SYSTEM::LIST-MATCHES
++-         COMMON-LISP::ARRAY-ROW-MAJOR-INDEX
++-         COMMON-LISP::ARRAY-IN-BOUNDS-P SYSTEM::BREAK-LEVEL
++-         SYSTEM::PROCESS-SOME-ARGS SYSTEM::TO-REGEXP
++-         COMMON-LISP::UPGRADED-ARRAY-ELEMENT-TYPE COMMON-LISP::OPEN
++-         SYSTEM::FILE-SEARCH COMMON-LISP::READ-BYTE
++-         SYSTEM::FILE-TO-STRING SLOOP::ADD-FROM-DATA COMMON-LISP::ERROR
++-         COMMON-LISP::SIGNAL SYSTEM::MGSUB COMMON-LISP::WILD-PATHNAME-P
++-         COMMON-LISP::PATHNAME-DEVICE SYSTEM::LOGICAL-PATHNAME-PARSE
++-         COMMON-LISP::MERGE-PATHNAMES SYSTEM::INFO-SEARCH
++-         COMMON-LISP::BIT-NOT)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         ANSI-LOOP::ESTIMATE-CODE-SIZE-1 SYSTEM::DO-REPL
++-         SYSTEM::SOURCE-PORTION SYSTEM::RESTART-REPORT
++-         SYSTEM::NEW-SEMI-COLON-READER SYSTEM::FIND-DOC
++-         ANSI-LOOP::ESTIMATE-CODE-SIZE SYSTEM::NEWLINE
++-         COMMON-LISP::RENAME-FILE SYSTEM::LIST-TOGGLE-CASE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         COMMON-LISP::REDUCE COMMON-LISP::STABLE-SORT
++-         SYSTEM::PARSE-BODY SLOOP::FIND-IN-ORDERED-LIST
++-         COMMON-LISP::SUBTYPEP COMMON-LISP::SORT)) 
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::ATOI)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         SYSTEM::LIST-MERGE-SORT ANSI-LOOP::LOOP-GET-COLLECTION-INFO
++-         SYSTEM::SHARP---READER SYSTEM::SHARP-S-READER
++-         SYSTEM::VERIFY-KEYWORDS SYSTEM::RESTART-PRINT
++-         SYSTEM::SHARP-+-READER SYSTEM::READ-INSPECT-COMMAND)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         ANSI-LOOP::LOOP-DO-INITIALLY SYSTEM::GET-INDEX-NODE
+++         SLOOP::PARSE-ONE-WHEN-CLAUSE SYSTEM::STEP-READ-LINE
+++         SYSTEM::DM-TOO-MANY-ARGUMENTS SYSTEM::READ-EVALUATED-FORM
+++         SYSTEM::DM-TOO-FEW-ARGUMENTS SYSTEM::KCL-TOP-RESTARTS
+++         ANSI-LOOP::LOOP-ITERATION-DRIVER
+++         SYSTEM::CURRENT-DIRECTORY-PATHNAME SYSTEM::INSPECT-INDENT
+++         SYSTEM::CLEANUP ANSI-LOOP::LOOP-WHEN-IT-VARIABLE
+++         SLOOP::PARSE-LOOP-WHEN ANSI-LOOP::LOOP-DO-NAMED
+++         ANSI-LOOP::LOOP-GET-FORM SYSTEM::GET-TEMP-DIR
+++         SYSTEM::ILLEGAL-BOA SYSTEM::SET-UP-TOP-LEVEL
+++         SYSTEM::SETUP-LINEINFO ANSI-LOOP::LOOP-CONTEXT
+++         SYSTEM::TOP-LEVEL SYSTEM::DBL SLOOP::LOOP-UN-POP
+++         SYSTEM::SET-CURRENT ANSI-LOOP::LOOP-GET-PROGN
+++         ANSI-LOOP::LOOP-DO-REPEAT SYSTEM::INIT-BREAK-POINTS
+++         SLOOP::PARSE-LOOP-FOR SLOOP::LOOP-POP
+++         ANSI-LOOP::LOOP-POP-SOURCE ANSI-LOOP::LOOP-DO-WITH
+++         ANSI-LOOP::LOOP-DO-DO COMMON-LISP::LISP-IMPLEMENTATION-VERSION
+++         ANSI-LOOP::LOOP-DO-RETURN SLOOP::PARSE-LOOP-DO
+++         SLOOP::LOOP-PEEK ANSI-LOOP::LOOP-BIND-BLOCK
+++         SYSTEM::DEFAULT-SYSTEM-BANNER SLOOP::PARSE-LOOP1
+++         SYSTEM::INSPECT-READ-LINE ANSI-LOOP::LOOP-DO-FINALLY
+++         SYSTEM::TEST-ERROR COMMON-LISP::TYPE-ERROR
+++         SYSTEM::DEFAULT-INFO-HOTLIST SYSTEM::SHOW-RESTARTS
+++         SYSTEM::SET-ENV SLOOP::PARSE-LOOP-COLLECT
+++         SYSTEM::ALL-TRACE-DECLARATIONS SYSTEM::GET-SIG-FN-NAME
+++         SYSTEM::INSPECT-INDENT-1)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         SYSTEM::PUSH-OPTIONAL-BINDING)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::OR COMMON-LISP::NULL
+++                 COMMON-LISP::HASH-TABLE))
+++         SYSTEM::CONTEXT-HASH)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         SYSTEM::TRACE-CALL)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::LENEL SYSTEM::GET-NODE-INDEX SYSTEM::FASLINK
+++         SYSTEM::THE-END ANSI-LOOP::DUPLICATABLE-CODE-P
+++         SYSTEM::RELATIVE-LINE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         SYSTEM::MASET)) 
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::DBL-WHAT-FRAME FPE::FE-ENABLE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         SYSTEM::EXPAND-WILD-DIRECTORY)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
+++         SYSTEM::GCL-TOP-LEVEL SYSTEM::BREAK-CURRENT
+++         SYSTEM::BREAK-RESUME SYSTEM::BREAK-HELP SYSTEM::BREAK-MESSAGE
+++         ANSI-LOOP::LOOP-DO-FOR SYSTEM::SIMPLE-BACKTRACE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         SYSTEM::PARSE-DEFMACRO SYSTEM::PARSE-DEFMACRO-LAMBDA-LIST)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         SYSTEM::PROCESS-SOME-ARGS COMMON-LISP::CONCATENATE
+++         SYSTEM::TO-REGEXP COMMON-LISP::PATHNAME-DEVICE
+++         SYSTEM::LIST-MATCHES ANSI-LOOP::LOOP-WARN
+++         COMMON-LISP::REMOVE-DUPLICATES COMMON-LISP::PATHNAME-HOST
+++         COMMON-LISP::BIT COMMON-LISP::SBIT
+++         COMMON-LISP::ENOUGH-NAMESTRING SYSTEM::DIR-PARSE
+++         SYSTEM::FILE-SEARCH SYSTEM::BREAK-LEVEL ANSI-LOOP::LOOP-ERROR
+++         SYSTEM::MGLIST COMMON-LISP::PATHNAME-NAME
+++         COMMON-LISP::MAKE-STRING-INPUT-STREAM SLOOP::ADD-FROM-DATA
+++         COMMON-LISP::TRANSLATE-LOGICAL-PATHNAME COMMON-LISP::DIRECTORY
+++         SYSTEM::FILE-TO-STRING COMMON-LISP::ARRAY-ROW-MAJOR-INDEX
+++         SYSTEM::NTH-STACK-FRAME SLOOP::LOOP-ADD-TEMPS
+++         COMMON-LISP::WARN
+++         ANSI-LOOP::LOOP-COLLECT-PREPOSITIONAL-PHRASES
+++         SYSTEM::LINK-EXPAND COMMON-LISP::PATHNAME-TYPE
+++         COMMON-LISP::OPEN COMMON-LISP::BIT-NOT
+++         COMMON-LISP::DELETE-DUPLICATES COMMON-LISP::ERROR
+++         COMMON-LISP::FILE-POSITION COMMON-LISP::PATHNAME-VERSION
+++         COMMON-LISP::ARRAY-IN-BOUNDS-P COMMON-LISP::REQUIRE
+++         SYSTEM::MGSUB COMMON-LISP::MERGE-PATHNAMES COMMON-LISP::LOAD
+++         COMMON-LISP::PATHNAME-DIRECTORY COMMON-LISP::SIGNAL
+++         COMMON-LISP::WILD-PATHNAME-P COMMON-LISP::FIND-RESTART
+++         SYSTEM::INFO-SEARCH SYSTEM::LOGICAL-PATHNAME-PARSE
+++         SYSTEM::BAD-SEQ-LIMIT COMMON-LISP::READ-BYTE
+++         COMMON-LISP::UPGRADED-ARRAY-ELEMENT-TYPE SYSTEM::NLOAD
+++         COMMON-LISP::MAKE-ARRAY)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::*)
++-         SYSTEM::MME3)) 
+++         COMMON-LISP::RENAME-FILE ANSI-LOOP::ESTIMATE-CODE-SIZE-1
+++         SYSTEM::FIND-DOC SYSTEM::SOURCE-PORTION SYSTEM::NEWLINE
+++         SYSTEM::DO-REPL SYSTEM::RESTART-REPORT
+++         ANSI-LOOP::ESTIMATE-CODE-SIZE SYSTEM::NEW-SEMI-COLON-READER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              ((COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807)
++-              COMMON-LISP::T)
+++                  9223372036854775807))
++              COMMON-LISP::T)
++-         SYSTEM::SMALLNTHCDR)) 
+++         SYSTEM::GET-CONTEXT SYSTEM::PUSH-CONTEXT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
++-         SYSTEM::GCL-TOP-LEVEL SYSTEM::BREAK-MESSAGE
++-         SYSTEM::BREAK-RESUME SYSTEM::SIMPLE-BACKTRACE
++-         SYSTEM::BREAK-HELP ANSI-LOOP::LOOP-DO-FOR
++-         SYSTEM::BREAK-CURRENT)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
++-         SYSTEM::S-DATA-LENGTH SYSTEM::THE-START SYSTEM::INSTREAM-LINE
++-         SYSTEM::S-DATA-SIZE FPE::REG-LOOKUP)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMMON-LISP::PSETF COMMON-LISP::PROG* SYSTEM::BREAK-STEP-INTO
+++         SLOOP::IN-PACKAGE-SLOOP-MAP SLOOP::SLOOP-FINISH
+++         SYSTEM::CHECK-SEQ-START-END SLOOP::SLOOP
+++         COMMON-LISP::MULTIPLE-VALUE-SETQ COMMON-LISP::ASSERT
+++         SLOOP::MINIMIZE-SLOOP-COLLECT COMMON-LISP::ROTATEF
+++         SYSTEM::LIST-TOGGLE-CASE SYSTEM::INCREMENT-CURSOR
+++         ANSI-LOOP::LOOP-COLLECT-ANSWER COMMON-LISP::PROG2
+++         SLOOP::SLOOP-SWAP COMMON-LISP::DEFTYPE
+++         SYSTEM::SETF-LOGICAL-PATHNAME-TRANSLATIONS SYSTEM::?PUSH
+++         COMMON-LISP::DO-EXTERNAL-SYMBOLS
+++         ANSI-LOOP::LOOP-COLLECT-RPLACD COMMON-LISP::TRACE
+++         ANSI-LOOP::LOOP-DO-IF ANSI-LOOP::MAKE-LOOP-MINIMAX
+++         SYSTEM::SUBSTRINGP COMMON-LISP::LOGORC2
+++         ANSI-LOOP::LOOP-DO-WHILE ANSI-LOOP::LOOP-LOOKUP-KEYWORD
+++         SLOOP::DEF-LOOP-COLLECT SYSTEM::SETF-HELPER
+++         COMMON-LISP::WITH-CONDITION-RESTARTS SYSTEM::INSPECT-PRINT
+++         SLOOP::PARSE-LOOP-MAP SYSTEM::KEYWORD-SUPPLIED-P
+++         COMMON-LISP::LOOP-FINISH ANSI-LOOP::LOOP-TASSOC
+++         SYSTEM::GET-LINE-OF-FORM ANSI-LOOP::LOOP-STORE-TABLE-DATA
+++         SLOOP::L-EQUAL COMMON-LISP::ETYPECASE
+++         SLOOP::THEREIS-SLOOP-COLLECT COMMON-LISP::RETURN
+++         SYSTEM::SUB-INTERVAL-P COMMON-LISP::ECASE
+++         COMMON-LISP::WRITE-BYTE SYSTEM::LOOKUP-KEYWORD
+++         COMMON-LISP::DEFSETF ANSI-LOOP::LOOP-DO-ALWAYS
+++         SYSTEM::PARSE-SLOT-DESCRIPTION COMMON-LISP::VECTOR-PUSH
+++         SYSTEM::GET-INFO-CHOICES SYSTEM::SETF-EXPAND
+++         SYSTEM::LEFT-PARENTHESIS-READER SLOOP::DEF-LOOP-FOR
+++         COMMON-LISP::PROG SYSTEM::OVERWRITE-SLOT-DESCRIPTIONS
+++         SYSTEM::SUPER-GO COMMON-LISP::LDB SYSTEM::NODE
+++         SYSTEM::COERCE-TO-PACKAGE COMMON-LISP::DO SYSTEM::TP-ERROR
+++         SYSTEM::GET-NODES SLOOP::THE-TYPE ANSI-LOOP::LOOP-TMEMBER
+++         ANSI-LOOP::LOOP-TEQUAL COMMON-LISP::DEFPARAMETER
+++         COMMON-LISP::WITH-OPEN-STREAM SYSTEM::DEFINE-SETF-METHOD
+++         SYSTEM::IF-ERROR ANSI-LOOP::HIDE-VARIABLE-REFERENCES
+++         SLOOP::DESETQ1 COMMON-LISP::LOOP COMMON-LISP::CTYPECASE
+++         COMMON-LISP::DEFSTRUCT COMMON-LISP::CASE SYSTEM::DOT-DIR-P
+++         SYSTEM::INSPECT-RECURSIVELY COMMON-LISP::DOTIMES
+++         SYSTEM::BREAK-STEP-NEXT SYSTEM::ALL-MATCHES
+++         COMMON-LISP::LOCALLY SLOOP::IN-TABLE-SLOOP-MAP
+++         SYSTEM::DISPLAY-ENV COMMON-LISP::MULTIPLE-VALUE-LIST
+++         COMMON-LISP::LDB-TEST COMMON-LISP::DECLAIM
+++         COMMON-LISP::WITH-STANDARD-IO-SYNTAX SYSTEM::SGEN
+++         SLOOP::ALWAYS-SLOOP-COLLECT COMMON-LISP::PUSHNEW
+++         COMMON-LISP::MULTIPLE-VALUE-BIND FPE::%-READER
+++         COMMON-LISP::CCASE SLOOP::DEF-LOOP-MACRO
+++         ANSI-LOOP::LOOP-REALLY-DESETQ SYSTEM::IN-INTERVAL-P
+++         SYSTEM::DBL-UP SLOOP::DEF-LOOP-MAP ANSI-LOOP::LOOP-BODY
+++         SYSTEM::SEQUENCE-CURSOR COMMON-LISP::COERCE
+++         COMMON-LISP::PATHNAME-MATCH-P SYSTEM::OBJLT
+++         COMMON-LISP::RESTART-CASE
+++         COMMON-LISP::WITH-HASH-TABLE-ITERATOR COMMON-LISP::STEP
+++         SYSTEM::QUOTATION-READER SYSTEM::PUT-AUX COMMON-LISP::TYPECASE
+++         SYSTEM::*BREAK-POINTS* COMMON-LISP::LOGTEST
+++         SYSTEM::CONDITION-PASS COMMON-LISP::DEFVAR
+++         COMMON-LISP::WITH-OUTPUT-TO-STRING SYSTEM::SET-BACK
+++         COMMON-LISP::NTHCDR COMMON-LISP::DO-ALL-SYMBOLS
+++         SYSTEM::INFO-AUX COMMON-LISP::LOGANDC1 COMMON-LISP::PROG1
+++         FPE::READ-OPERANDS SYSTEM::DISPLAY-COMPILED-ENV
+++         COMMON-LISP::DEFCONSTANT SYSTEM::DM-V SLOOP::LOOP-RETURN
+++         SYSTEM::ADD-FILE SYSTEM::WHILE SYSTEM::WITHOUT-INTERRUPTS
+++         COMMON-LISP::NTH-VALUE COMMON-LISP::OR
+++         ANSI-LOOP::LOOP-COPYLIST* SLOOP::IN-CAREFULLY-SLOOP-FOR
+++         ANSI-LOOP::LOOP-DECLARE-VARIABLE SYSTEM::GET-MATCH
+++         ANSI-LOOP::WITH-LOOP-LIST-COLLECTION-HEAD
+++         ANSI-LOOP::LOOP-NOTE-MINIMAX-OPERATION SYSTEM::MV-SETQ
+++         SLOOP::COLLATE-SLOOP-COLLECT COMMON-LISP::LOGORC1
+++         SYSTEM::DM-NTH-CDR COMPILER::COMPILER-DEF-HOOK
+++         SYSTEM::CHECK-TYPE-EVAL COMMON-LISP::DECF
+++         COMMON-LISP::WITH-PACKAGE-ITERATOR SYSTEM::COERCE-TO-STRING
+++         COMMON-LISP::DEFINE-MODIFY-MACRO FPE::0-READER
+++         COMMON-LISP::WITH-COMPILATION-UNIT COMMON-LISP::LOGNAND
+++         COMMON-LISP::CHECK-TYPE COMMON-LISP::INCF
+++         SLOOP::MAXIMIZE-SLOOP-COLLECT SYSTEM::ITERATE-OVER-BKPTS
+++         SLOOP::LOGXOR-SLOOP-COLLECT SLOOP::NEVER-SLOOP-COLLECT
+++         SYSTEM::MV-VALUES SYSTEM::MSUB COMMON-LISP::DO*
+++         SLOOP::=-SLOOP-FOR COMMON-LISP::UNLESS
+++         SYSTEM::MATCH-DIMENSIONS COMMON-LISP::DOLIST
+++         ANSI-LOOP::LOOP-MAYBE-BIND-FORM SLOOP::LOCAL-FINISH
+++         COMMON-LISP::PSETQ COMMON-LISP::COND
+++         COMMON-LISP::WITH-SIMPLE-RESTART COMMON-LISP::DO-SYMBOLS
+++         COMMON-LISP::FILE-STRING-LENGTH COMMON-LISP::LAMBDA
+++         ANSI-LOOP::LOOP-ACCUMULATE-MINIMAX-VALUE
+++         SLOOP::IN-FRINGE-SLOOP-MAP SYSTEM::SET-DIR
+++         COMMON-LISP::WITH-INPUT-FROM-STRING SYSTEM::LIST-DELQ
+++         COMMON-LISP::BYTE COMMON-LISP::DOCUMENTATION SYSTEM::SAFE-EVAL
+++         COMMON-LISP::DEFMACRO SLOOP::DESETQ COMMON-LISP::POP
+++         SLOOP::COUNT-SLOOP-COLLECT SLOOP::LCASE
+++         COMMON-LISP::DEFPACKAGE COMMON-LISP::DEFUN COMMON-LISP::TIME
+++         COMMON-LISP::LOGNOR COMMON-LISP::RESTART-BIND
+++         COMMON-LISP::PUSH COMMON-LISP::SHIFTF COMMON-LISP::AND
+++         COMMON-LISP::WHEN SYSTEM::DM-NTH COMMON-LISP::WITH-OPEN-FILE
+++         SLOOP::MAKE-VALUE COMMON-LISP::UNTRACE FPE::PAREN-READER
+++         ANSI-LOOP::WITH-MINIMAX-VALUE COMMON-LISP::NTH
+++         FPE::READ-INSTRUCTION SLOOP::SUM-SLOOP-COLLECT
+++         COMMON-LISP::REMF COMMON-LISP::DESTRUCTURING-BIND
+++         SYSTEM::SET-PATH-STREAM-NAME FPE::RF COMMON-LISP::LOGANDC2)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
++-         SYSTEM::MATCH-BEGINNING SYSTEM::MATCH-END)) 
++\ No newline at end of file
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMMON-LISP::FCEILING COMMON-LISP::APROPOS-LIST
+++         COMMON-LISP::READ-FROM-STRING
+++         COMMON-LISP::ENSURE-DIRECTORIES-EXIST SYSTEM::APROPOS-DOC
+++         COMMON-LISP::FTRUNCATE SYSTEM::BREAK-FUNCTION
+++         SYSTEM::GET-SETF-METHOD-MULTIPLE-VALUE SYSTEM::STEPPER
+++         COMMON-LISP::DECODE-UNIVERSAL-TIME
+++         ANSI-LOOP::LOOP-CONSTANT-FOLD-IF-POSSIBLE
+++         COMMON-LISP::STORE-VALUE COMMON-LISP::GET-SETF-EXPANSION
+++         SYSTEM::PRINT-DOC SYSTEM::INFO COMMON-LISP::APROPOS
+++         COMMON-LISP::WRITE-TO-STRING COMMON-LISP::USE-VALUE
+++         COMMON-LISP::FROUND COMMON-LISP::PARSE-NAMESTRING
+++         COMMON-LISP::INVOKE-RESTART COMMON-LISP::FFLOOR
+++         SYSTEM::SHOW-INFO)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -182,61 +182,61 @@ void
++ add_page_to_freelist(char *p, struct typemanager *tm) {
++ 
++   short t,size;
++-  long i=tm->tm_nppage,fw;
++-  object x,f;
+++  long fw;
+++  object x,xe,f;
++   struct pageinfo *pp;
++ 
++- t=tm->tm_type;
+++  t=tm->tm_type;
++ 
++- size=tm->tm_size;
++- f=tm->tm_free;
++- pp=pageinfo(p);
++- bzero(pp,sizeof(*pp));
++- pp->type=t;
++- pp->magic=PAGE_MAGIC;
++-
++- if (cell_list_head==NULL) 
++-   cell_list_tail=cell_list_head=pp;
++- else if (pp > cell_list_tail) {
++-   cell_list_tail->next=pp;
++-   cell_list_tail=pp;
++- }
++-
++- x= (object)pagetochar(page(p));
++- /* set_type_of(x,t); */
++- make_free(x);
+++  size=tm->tm_size;
+++  pp=pageinfo(p);
+++  bzero(pp,sizeof(*pp));
+++  pp->type=t;
+++  pp->magic=PAGE_MAGIC;
+++
+++  if (cell_list_head==NULL)
+++    cell_list_tail=cell_list_head=pp;
+++  else if (pp > cell_list_tail) {
+++    cell_list_tail->next=pp;
+++    cell_list_tail=pp;
+++  }
+++
+++  x= (object)pagetochar(page(p));
+++  /* set_type_of(x,t); */
+++  make_free(x);
++ 
++ #ifdef SGC
++ 
++- if (sgc_enabled && tm->tm_sgc)
++-   pp->sgc_flags=SGC_PAGE_FLAG;
+++  if (sgc_enabled && tm->tm_sgc)
+++    pp->sgc_flags=SGC_PAGE_FLAG;
++ 
++ #ifndef SGC_WHOLE_PAGE
++- if (TYPEWORD_TYPE_P(pp->type))
++-   x->d.s=(sgc_enabled && tm->tm_sgc) ? SGC_RECENT : SGC_NORMAL;
+++  if (TYPEWORD_TYPE_P(pp->type))
+++    x->d.s=(sgc_enabled && tm->tm_sgc) ? SGC_RECENT : SGC_NORMAL;
++ #endif
++ 
++- /* array headers must be always writable, since a write to the
++-    body does not touch the header.   It may be desirable if there
++-    are many arrays in a system to make the headers not writable,
++-    but just SGC_TOUCH the header each time you write to it.   this
++-    is what is done with t_structure */
+++  /* array headers must be always writable, since a write to the
+++     body does not touch the header.   It may be desirable if there
+++     are many arrays in a system to make the headers not writable,
+++     but just SGC_TOUCH the header each time you write to it.   this
+++     is what is done with t_structure */
++   if (t==(tm_of(t_array)->tm_type))
++     pp->sgc_flags|=SGC_PERM_WRITABLE;
++-   
+++
++ #endif 
++ 
++- fw= *(fixnum *)x;
++- while (--i >= 0) {
++-   *(fixnum *)x=fw;
++-   SET_LINK(x,f);
++-   f=x;
++-   x= (object) ((char *)x + size);
++- }
++-
++- tm->tm_free=f;
++- tm->tm_nfree += tm->tm_nppage;
++- tm->tm_npage++;
+++  f=FREELIST_TAIL(tm);
+++  fw=x->fw;
+++  xe=(object)((void *)x+tm->tm_nppage*size);
+++  for (;x<xe;f=x,x=(object)((void *)x+size)) {
+++    x->fw=fw;
+++    SET_LINK(f,x);
+++  }
+++
+++  SET_LINK(f,OBJNULL);
+++  tm->tm_tail=f;
+++  tm->tm_nfree+=tm->tm_nppage;
+++  tm->tm_npage++;
++ 
++ }
++ 
++@@ -1065,15 +1065,13 @@ make_cons(object a,object d) {
++ 
++ }
++ 
++-
++-
++-object on_stack_cons(object x, object y) {
+++object
+++on_stack_cons(object x, object y) {
++   object p = (object) alloca_val;
++   load_cons(p,x,y);
++   return p;
++ }
++ 
++-
++ DEFUNM_NEW("ALLOCATED",object,fSallocated,SI,1,1,NONE,OO,OO,OO,OO,(object typ),"")
++ { struct typemanager *tm=(&tm_table[t_from_type(typ)]);
++   tm = & tm_table[tm->tm_type];
++--- gcl-2.6.12.orig/o/assignment.c
+++++ gcl-2.6.12/o/assignment.c
++@@ -388,14 +388,7 @@ EVAL:
++ 
++ OTHERWISE:
++      vs_base = vs_top;
++-     vs_push(sLsetf);
++-     vs_push(place);
++-     vs_push(form);
++-     result=vs_top[-1];
++-     vs_push(Cnil);
++-     stack_cons();
++-     stack_cons();
++-     stack_cons();
+++     vs_push(list(3,sLsetf,place,result=form));
++ /***/
++ #define VS_PUSH_ENV \
++      if(lex_env[1]){ \
++@@ -428,9 +421,7 @@ FFN(Fpush)(object form)
++              return;
++      }
++      vs_base = vs_top;
++-     vs_push(sLpush);
++-     vs_push(form);
++-     stack_cons();
+++     vs_push(make_cons(sLpush,form));
++ /***/
++          VS_PUSH_ENV ;
++ /***/
++@@ -457,9 +448,7 @@ FFN(Fpop)(object form)
++              return;
++      }
++      vs_base = vs_top;
++-     vs_push(sLpop);
++-     vs_push(form);
++-     stack_cons();
+++     vs_push(make_cons(sLpop,form));
++ /***/
++      VS_PUSH_ENV ;
++ /***/
++@@ -495,9 +484,7 @@ FFN(Fincf)(object form)
++              return;
++      }
++      vs_base = vs_top;
++-     vs_push(sLincf);
++-     vs_push(form);
++-     stack_cons();
+++     vs_push(make_cons(sLincf,form));
++ /***/
++      VS_PUSH_ENV ;
++ /***/
++@@ -533,9 +520,7 @@ FFN(Fdecf)(object form)
++              return;
++      }
++      vs_base = vs_top;
++-     vs_push(sLdecf);
++-     vs_push(form);
++-     stack_cons();
+++     vs_push(make_cons(sLdecf,form));
++ /***/
++      VS_PUSH_ENV ;
++ /***/
++--- gcl-2.6.12.orig/o/backq.c
+++++ gcl-2.6.12/o/backq.c
++@@ -22,7 +22,7 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #include "include.h"
++ 
++ #define      attach(x)       (vs_head = make_cons(x, vs_head))
++-#define      make_list       (vs_push(Cnil), stack_cons(), stack_cons())
+++#define      make_list       (vs_popp,vs_head=list(2,vs_head,*vs_top))
++ 
++ 
++ #define      QUOTE   1
++--- gcl-2.6.12.orig/o/bind.c
+++++ gcl-2.6.12/o/bind.c
++@@ -433,10 +433,11 @@ SEARCH_DECLARE:
++                                       optional[i].opt_svar_spp);
++              }
++      if (rest_flag) {
++-             vs_push(Cnil);
++-             for (i = narg, j = nreq+nopt;  --i >= j;  )
++-                     vs_head = make_cons(base[i], vs_head);
++-             bind_var(rest->rest_var, vs_head, rest->rest_spp);
+++       object *l=vs_top++;
+++       for (i=nreq+nopt;i<narg;i++)
+++         collect(l,make_cons(base[i],Cnil));
+++       *l=Cnil;
+++       bind_var(rest->rest_var, vs_head, rest->rest_spp);
++      }
++      if (key_flag) {
++                 int allow_other_keys_found=0;
++@@ -824,12 +825,11 @@ parse_key(object *base, bool rest, bool
++              }
++      }
++      if (rest) {
++-             top = vs_top;
++-             vs_push(Cnil);
++-             base++;
++-             while (base < vs_top)
++-                     stack_cons();
++-             vs_top = top;
+++       object *a,*l;
+++       for (l=a=base;a<vs_top;a++)
+++         collect(l,make_cons(*a,Cnil));
+++       *l=Cnil;
+++       base++;
++      }
++      top = base + n;
++      va_start(ap,n);
++--- gcl-2.6.12.orig/o/cfun.c
+++++ gcl-2.6.12/o/cfun.c
++@@ -217,20 +217,21 @@ DEFUN_NEW("MF",object,fSmf,SI
++ static object
++ MM(object sym, void (*self)(), char *start, int size, object data)
++ {
++-     object cf;
+++     object sfn;
++ 
++      if (type_of(sym) != t_symbol)
++              not_a_symbol(sym);
++      if (sym->s.s_sfdef != NOT_SPECIAL && sym->s.s_mflag)
++              sym->s.s_sfdef = NOT_SPECIAL;
++-     cf = alloc_object(t_cfun);
++-     cf->cf.cf_self = self;
++-     cf->cf.cf_name = sym;
++-     cf->cf.cf_data = data;
+++     sfn = alloc_object(t_sfun);
+++     sfn->sfn.sfn_self = (void *)self;/*FIXME*/
+++     sfn->sfn.sfn_name = sym;
+++     sfn->sfn.sfn_data = data;
+++     sfn->sfn.sfn_argd=2;
++      data->cfd.cfd_start=start; 
++      data->cfd.cfd_size=size;
++-     sym =   clear_compiler_properties(sym,cf);
++-     sym->s.s_gfdef = cf;
+++     sym =   clear_compiler_properties(sym,sfn);
+++     sym->s.s_gfdef = sfn;
++      sym->s.s_mflag = TRUE;
++      return sym;
++ }
++--- gcl-2.6.12.orig/o/eval.c
+++++ gcl-2.6.12/o/eval.c
++@@ -60,38 +60,41 @@ object sSAbreak_stepA;
++ /* for t_sfun,t_gfun with args on vs stack */
++ 
++ static void
++-quick_call_sfun(object fun)
++-{ DEBUG_AVMA
+++quick_call_sfun(object fun) {
+++
+++  DEBUG_AVMA
++   int i=fun->sfn.sfn_argd,n=SFUN_NARGS(i);
++   enum ftype restype;
++-  object *x,res,*base;
++-  object *temp_ar=alloca(n*sizeof(object));
++-/*   i=fun->sfn.sfn_argd; */
++-/*   n=SFUN_NARGS(i); */
++-  base = vs_base;
++-  if (n != vs_top - base)
++-    {check_arg_failed(n);}
+++  object *x,*base;
+++
+++  if (n!=vs_top-vs_base)
+++    check_arg_failed(n);
+++
++   restype = SFUN_RETURN_TYPE(i);
++   SFUN_START_ARG_TYPES(i);
++-  /* for moment just support object and int */
++ #define COERCE_ARG(a,type)  (type==f_object ? a : (object)(fix(a)))
++-  if (i==0)
++-    x=vs_base;
++-  else
++-    {int j;
++-     x=temp_ar;
++-     for (j=0; j<n ; j++)
++-       {enum ftype typ=SFUN_NEXT_TYPE(i);
++-     x[j]=COERCE_ARG(vs_base[j],typ);}}
++-  res=c_apply_n_fun(fun,n,x);
++-  base[0]=
++-    (restype==f_object ?  res :
++-     restype==f_fixnum ? make_fixnum((long)res)
++-     :(object) (FEerror("Bad result type",0),Cnil));
++-  vs_base = base;
++-  vs_top=base+1;
+++
+++  x=vs_base;
+++  if (i) {
+++    int j;
+++    x=alloca(n*sizeof(object));
+++    for (j=0;j<n;j++) {
+++      enum ftype typ=SFUN_NEXT_TYPE(i);
+++      x[j]=COERCE_ARG(vs_base[j],typ);
+++    }
+++  }
+++
+++  base=vs_base;
+++  *base=c_apply_n_fun(fun,n,x);
+++  if (restype==f_fixnum)
+++    *base=make_fixnum((fixnum)*base);
+++
+++  vs_top=(vs_base=base)+1;
+++
++   CHECK_AVMA;
++-  return;}
+++  return;
+++
+++}
++ 
++ /* only for sfun not gfun !!  Does not check number of args */
++ static void
++@@ -604,27 +607,33 @@ super_funcall(object fun)
++ }
++ 
++ void
++-super_funcall_no_event(object fun)
++-{
+++super_funcall_no_event(object fun) {
+++
++ #ifdef DEBUGGING_AVMA
++   funcall_no_event(fun); return;
++ #endif 
++-   if (type_of(fun)==t_cfun){(*fun->cf.cf_self)();return;}
++-   if (type_of(fun)==t_sfun){call_sfun_no_check(fun); return;}
++-   if (type_of(fun)==t_gfun)
++-       {quick_call_sfun(fun); return;}
++-   if (type_of(fun)==t_vfun)
++-       {call_vfun(fun); return;}
++-   if (type_of(fun) == t_symbol) {
++-       if (fun->s.s_sfdef != NOT_SPECIAL || fun->s.s_mflag)
++-                     FEinvalid_function(fun);
++-             if (fun->s.s_gfdef == OBJNULL)
++-                     FEundefined_function(fun);
++-             fun = fun->s.s_gfdef;
++-             if (type_of(fun)==t_cfun){(*fun->cf.cf_self)();
++-                                       return;}
++-     }
++-     funcall_no_event(fun);
+++
+++  switch(type_of(fun)) {
+++  case t_cfun:
+++    (*fun->cf.cf_self)();
+++    return;
+++  case t_sfun:
+++    call_sfun_no_check(fun); return;
+++  case t_gfun:
+++    quick_call_sfun(fun); return;
+++  case t_vfun:
+++    call_vfun(fun); return;
+++  case t_symbol:
+++    if (fun->s.s_sfdef != NOT_SPECIAL || fun->s.s_mflag)
+++      FEinvalid_function(fun);
+++    if (fun->s.s_gfdef == OBJNULL)
+++      FEundefined_function(fun);
+++    super_funcall_no_event(fun->s.s_gfdef);
+++    return;
+++  default:
+++    funcall_no_event(fun);
+++  }
+++
++ }
++ 
++ #ifdef USE_BROKEN_IEVAL
++@@ -814,13 +823,7 @@ EVAL:
++              bds_bind(siVevalhook, Cnil);
++              vs_base = vs_top;
++              vs_push(form);
++-             vs_push(lex_env[0]);
++-             vs_push(lex_env[1]);
++-             vs_push(lex_env[2]);
++-             vs_push(Cnil);
++-             stack_cons();
++-             stack_cons();
++-             stack_cons();
+++             vs_push(list(3,lex_env[0],lex_env[1],lex_env[2]));
++              super_funcall(hookfun);
++              bds_unwind(old_bds_top);
++              return;
++@@ -970,22 +973,12 @@ static void
++ call_applyhook(object fun)
++ {
++      object ah;
++-     object *v;
++ 
++      ah = symbol_value(siVapplyhook);
++-     v = vs_base + 1;
++-     vs_push(Cnil);
++-     while (vs_top > v)
++-             stack_cons();
+++     Llist();
++      vs_push(vs_base[0]);
++      vs_base[0] = fun;
++-     vs_push(lex_env[0]);
++-     vs_push(lex_env[1]);
++-     vs_push(lex_env[2]);
++-     vs_push(Cnil);
++-     stack_cons();
++-     stack_cons();
++-     stack_cons();
+++     vs_push(list(3,lex_env[0],lex_env[1],lex_env[2]));
++      super_funcall(ah);
++ }
++ 
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -1130,8 +1130,7 @@ read_fasd1(int i, object *loc)
++      *loc=Cnil;return;
++       case DP(d_cons:)
++      read_fasd1(GET_OP(),&tem);
++-     *loc=make_cons(tem,Cnil);
++-     loc= &((*loc)->c.c_cdr);
+++        collect(loc,make_cons(tem,Cnil));
++      i=GET_OP();
++      goto BEGIN;
++       case DP(d_list1:) i=1;goto READ_LIST;
++@@ -1162,8 +1161,7 @@ read_fasd1(int i, object *loc)
++              read_fasd1(j,&tem);
++              DPRINTF("{Item=",(debug >= 2 ? pp(tem) : 0));
++              DPRINTF("}",0);
++-             *loc=make_cons(tem,Cnil);
++-             loc= &((*loc)->c.c_cdr);}}
+++             collect(loc,make_cons(tem,Cnil));}}
++ 
++       case DP(d_delimiter:)
++       case DP(d_dot:)
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -1429,52 +1429,54 @@ LFD(Lmake_synonym_stream)()
++      vs_base[0] = x;
++ }
++ 
++-LFD(Lmake_broadcast_stream)()
++-{
++-     object x;
++-     int narg, i;
++-
++-     narg = vs_top - vs_base;
++-     for (i = 0;  i < narg;  i++)
++-             if (type_of(vs_base[i]) != t_stream ||
++-                 !output_stream_p(vs_base[i]))
++-                     cannot_write(vs_base[i]);
++-     vs_push(Cnil);
++-     for (i = narg;  i > 0;  --i)
++-             stack_cons();
++-     x = alloc_object(t_stream);
++-     x->sm.sm_mode = (short)smm_broadcast;
++-     x->sm.sm_fp = NULL;
++-     x->sm.sm_buffer = 0;
++-     x->sm.sm_object0 = vs_base[0];
++-     x->sm.sm_object1 = OBJNULL;
++-     x->sm.sm_int = 0;
++-     x->sm.sm_flags=0;
++-     vs_base[0] = x;
+++LFD(Lmake_broadcast_stream)() {
+++
+++  object x;
+++  int narg, i;
+++  
+++  narg = vs_top - vs_base;
+++  for (i = 0;  i < narg;  i++)
+++    if (type_of(vs_base[i]) != t_stream ||
+++     !output_stream_p(vs_base[i]))
+++      cannot_write(vs_base[i]);
+++
+++  Llist();
+++
+++  x = alloc_object(t_stream);
+++  x->sm.sm_mode = (short)smm_broadcast;
+++  x->sm.sm_fp = NULL;
+++  x->sm.sm_buffer = 0;
+++  x->sm.sm_object0 = vs_base[0];
+++  x->sm.sm_object1 = OBJNULL;
+++  x->sm.sm_int = 0;
+++  x->sm.sm_flags=0;
+++  vs_base[0] = x;
+++
++ }
++ 
++-LFD(Lmake_concatenated_stream)()
++-{
++-     object x;
++-     int narg, i;
++-
++-     narg = vs_top - vs_base;
++-     for (i = 0;  i < narg;  i++)
++-             if (type_of(vs_base[i]) != t_stream ||
++-                 !input_stream_p(vs_base[i]))
++-                     cannot_read(vs_base[i]);
++-     vs_push(Cnil);
++-     for (i = narg;  i > 0;  --i)
++-             stack_cons();
++-     x = alloc_object(t_stream);
++-     x->sm.sm_mode = (short)smm_concatenated;
++-     x->sm.sm_fp = NULL;
++-     x->sm.sm_buffer = 0;
++-     x->sm.sm_object0 = vs_base[0];
++-     x->sm.sm_object1 = OBJNULL;
++-     x->sm.sm_int = 0;
++-     x->sm.sm_flags=0;
++-     vs_base[0] = x;
+++LFD(Lmake_concatenated_stream)() {
+++
+++  object x;
+++  int narg, i;
+++  
+++  narg = vs_top - vs_base;
+++  for (i = 0;  i < narg;  i++)
+++    if (type_of(vs_base[i]) != t_stream ||
+++     !input_stream_p(vs_base[i]))
+++      cannot_read(vs_base[i]);
+++
+++  Llist();
+++
+++  x = alloc_object(t_stream);
+++  x->sm.sm_mode = (short)smm_concatenated;
+++  x->sm.sm_fp = NULL;
+++  x->sm.sm_buffer = 0;
+++  x->sm.sm_object0 = vs_base[0];
+++  x->sm.sm_object1 = OBJNULL;
+++  x->sm.sm_int = 0;
+++  x->sm.sm_flags=0;
+++  vs_base[0] = x;
+++
++ }
++ 
++ LFD(Lmake_two_way_stream)()
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -543,7 +543,9 @@ mark_object1(object x) {
++        mark_object_address(&x->ht.ht_self[i].hte_key,i);
++        mark_object_address(&x->ht.ht_self[i].hte_value,i+1);
++      }
+++    i=x->ht.ht_cache-x->ht.ht_self;
++     MARK_LEAF_DATA(x,x->ht.ht_self,x->ht.ht_size*sizeof(*x->ht.ht_self));
+++    if (x->ht.ht_cache) x->ht.ht_cache=x->ht.ht_self+i;
++     break;
++     
++   case t_array:
++@@ -662,6 +664,7 @@ mark_object1(object x) {
++     break;
++     
++   case t_readtable:
+++    mark_object(x->rt.rt_case);
++     if (x->rt.rt_self) {
++       for (i=0;i<RTABSIZE;i++)
++      mark_object_address(&x->rt.rt_self[i].rte_macro,i);
++@@ -968,7 +971,7 @@ sweep_phase(void) {
++     tm = tm_of((enum type)v->type);
++     
++     p = pagetochar(page(v));
++-    f = tm->tm_free;
+++    f = FREELIST_TAIL(tm);
++     k = 0;
++     for (j = tm->tm_nppage; j > 0; --j, p += tm->tm_size) {
++       x = (object)p;
++@@ -979,12 +982,13 @@ sweep_phase(void) {
++      continue;
++       }
++ 
++-      SET_LINK(x,f);
+++      SET_LINK(f,x);
++       make_free(x);
++       f = x;
++       k++;
++     }
++-    tm->tm_free = f;
+++    SET_LINK(f,OBJNULL);
+++    tm->tm_tail = f;
++     tm->tm_nfree += k;
++     pagetoinfo(page(v))->in_use-=k;
++     
++--- gcl-2.6.12.orig/o/hash.d
+++++ gcl-2.6.12/o/hash.d
++@@ -196,33 +196,28 @@ DEFUN_NEW("HASH-EQUAL",object,fShash_equ
++ 
++ 
++ struct htent *
++-gethash(object key, object hashtable) {
+++gethash(object key, object ht) {
++ 
++-  enum httest htest;
++-  long hsize,j,s,q;
++-  struct htent *e,*first_objnull=NULL;
++-  object hkey;
+++  long s,q;
+++  struct htent *e,*ee,*first_open=NULL;
++   static struct htent dummy={OBJNULL,OBJNULL};
++   
++-  if (!hashtable->ht.ht_size)
++-    return &dummy;
++-
++-  htest = (enum httest)hashtable->ht.ht_test;
++-  hsize = hashtable->ht.ht_size;
+++  if (ht->ht.ht_cache && ht->ht.ht_cache->hte_key==key)
+++    return ht->ht.ht_cache;
+++  ht->ht.ht_cache=NULL;
++ 
++ #define eq(x,y) x==y
++ #define hash_loop(t_,i_)                                             \
++-  for (s=i_%hsize,q=hsize,e=first_objnull;s>=0;q=s,s=s?0:-1)         \
++-    for (j=s;j<q;j++) {                                                      \
++-      e = &hashtable->ht.ht_self[j];                                 \
++-      hkey = e->hte_key;                                             \
+++  for (q=ht->ht.ht_size,s=i_%q;s>=0;q=s,s=s?0:-1)                    \
+++    for (e=ht->ht.ht_self,ee=e+q,e+=s;e<ee;e++) {                    \
+++      object hkey=e->hte_key;                                                \
++       if (hkey==OBJNULL) {                                           \
++-     if (e->hte_value==OBJNULL) return first_objnull ? first_objnull : e; \
++-     if (!first_objnull) first_objnull=e;                            \
++-      } else if (t_(key,hkey)) return e;                             \
+++     if (e->hte_value==OBJNULL) return first_open ? first_open : e;  \
+++     if (!first_open) first_open=e;                                  \
+++      } else if (t_(key,hkey)) return ht->ht.ht_cache=e;             \
++     }
++ 
++-  switch (htest) {
+++  switch (ht->ht.ht_test) {
++   case htt_eq:
++     hash_loop(eq,hash_eq(key));
++     break;
++@@ -237,7 +232,7 @@ gethash(object key, object hashtable) {
++     return &dummy;
++   }
++   
++-  return first_objnull ? first_objnull : (FEerror("No free spot in hashtable ~S.", 1, hashtable),&dummy);
+++  return first_open ? first_open : (FEerror("No free spot in hashtable ~S.", 1, ht),&dummy);
++ 
++ }
++ 
++@@ -290,7 +285,7 @@ object hashtable;
++      old = alloc_object(t_hashtable);
++      old->ht = hashtable->ht;
++      vs_push(old);
++-     hashtable->ht.ht_self = NULL;
+++     hashtable->ht.ht_cache=hashtable->ht.ht_self = NULL;
++      hashtable->ht.ht_size = new_size;
++      if (type_of(hashtable->ht.ht_rhthresh) == t_fixnum)
++              hashtable->ht.ht_rhthresh =
++@@ -365,6 +360,7 @@ DEFVAR("*DEFAULT-HASH-TABLE-REHASH-THRES
++      h->ht.ht_size = fix(size);
++      h->ht.ht_rhsize = rehash_size;
++      h->ht.ht_rhthresh = rehash_threshold;
+++     h->ht.ht_cache=NULL;
++         h->ht.ht_nent = 0;
++         h->ht.ht_static = static!=Cnil ? 1 : 0;
++      h->ht.ht_self = NULL;
++--- gcl-2.6.12.orig/o/list.d
+++++ gcl-2.6.12/o/list.d
++@@ -277,93 +277,78 @@ object on_stack_list_vector_new(int n,ob
++  return ans;
++ }*/
++ 
++-object list_vector_new(int n,object first,va_list ap)
++-{object ans,*p;
+++object
+++list_vector_new(int n,object first,va_list ap) {
+++
+++  object ans,*p;
++  
++- if (n == 0) return Cnil;
++- ans = make_cons(first==OBJNULL ? va_arg(ap,object) : first,Cnil);
++- p = & (ans->c.c_cdr); 
++- while (--n > 0)
++-   { *p = make_cons(va_arg(ap,object),Cnil);
++-     p = & ((*p)->c.c_cdr);
++-   }
++- return ans;}
+++  for (p=&ans;n-->0;first=OBJNULL)
+++    collect(p,make_cons(first==OBJNULL ? va_arg(ap,object) : first,Cnil));
+++  *p=Cnil;
+++ return ans;
++ 
+++}
++    
++-/* clean this up */
++-/* static object on_stack_list(int n, ...)
++-{va_list ap;
++- object res;
++- va_start(ap,n);
++- res=on_stack_list_vector(n,ap);
++- va_end(ap);
++- return res;
++-}*/
++ #ifdef WIDE_CONS
++ #define maybe_set_type_of(a,b) set_type_of(a,b)
++ #else
++ #define maybe_set_type_of(a,b)
++ #endif
++ 
+++void
+++free_check(void) {
++ 
+++  int n=tm_table[t_cons].tm_nfree,m;
+++  object f=tm_table[t_cons].tm_free;
+++  for (m=0;f!=OBJNULL;m++,f=OBJ_LINK(f));
+++  massert(n==m);
+++}
+++  
++ #define multi_cons(n_,next_,last_)                                   \
++-  ({static struct typemanager *_tm=tm_table+t_cons;                  \
++-    object _lis=OBJNULL;                                             \
++-                                                                     \
++-    if (n<=_tm->tm_nfree) {                                          \
++-                                                                     \
++-      object _tail=_tm->tm_free;                                     \
++-                                                                     \
++-      _lis=_tail;                                                    \
++-                                                                             \
+++  ({_tm->tm_nfree -= n_;                                             \
+++    for(_x=_tm->tm_free,_p=&_x;n_-->0;_p=&(*_p)->c.c_cdr) {          \
+++      object _z=*_p;                                                 \
+++      pageinfo(_z)->in_use++;                                                \
+++      maybe_set_type_of(_z,t_cons);                                  \
+++      _z->c.c_cdr=OBJ_LINK(_z);                                              \
+++      _z->c.c_car=next_;                                             \
+++    }                                                                        \
+++    _tm->tm_free=*_p;                                                        \
+++    *_p=SAFE_CDR(last_);                                             \
+++    _x;})
+++
+++#define n_cons(n_,next_,last_)                                               \
+++  ({fixnum _n=n_;object _x=Cnil,*_p;                                 \
+++    static struct typemanager *_tm=tm_table+t_cons;                  \
+++    if (_n>=0) {/*FIXME vs_top<vs_base*/                             \
++       BEGIN_NO_INTERRUPT;                                            \
++-                                                                             \
++-      _tm->tm_nfree -= n_;                                           \
++-      while (--n_) {                                                 \
++-     pageinfo(_tail)->in_use++;                                      \
++-     maybe_set_type_of(_tail,t_cons);                                \
++-     _tail->c.c_cdr=OBJ_LINK(_tail);                                 \
++-     _tail->c.c_car=next_;                                           \
++-     _tail=_tail->c.c_cdr;                                           \
+++      if (_n<=_tm->tm_nfree)                                         \
+++     _x=multi_cons(_n,next_,last_);                                  \
+++      else {                                                         \
+++     for (_p=&_x;_n--;)                                              \
+++       collect(_p,make_cons(next_,Cnil));                            \
+++     *_p=SAFE_CDR(last_);                                            \
++       }                                                                      \
++-      _tm->tm_free=OBJ_LINK(_tail);                                  \
++-      pageinfo(_tail)->in_use++;                                     \
++-      maybe_set_type_of(_tail,t_cons);                                       \
++-      _tail->c.c_car=next_;                                          \
++-      _tail->c.c_cdr=SAFE_CDR(last_);                                        \
++-                                                                     \
++       END_NO_INTERRUPT;                                                      \
++     }                                                                        \
++-    _lis;})
++-
++-
++-   
++-object listqA(int a,int n,va_list ap) { 
++-
++-  object x,*p;
++-
++-  if (n<=0) return Cnil;
+++    _x;})
+++      
+++object
+++n_cons_from_x(fixnum n,object x) {
++ 
++-  if ((x=multi_cons(n,va_arg(ap,object),a ? va_arg(ap,object) : Cnil))!=OBJNULL)
++-    return x;
+++  return n_cons(n,({object _z=x->c.c_car;x=x->c.c_cdr;_z;}),Cnil);
+++  
+++}
++ 
++-  CHECK_INTERRUPT;
++ 
++-  p = vs_top;
++-  
++-  vs_push(Cnil);
++-  while(--n>=0) {
++-    *p=make_cons(va_arg(ap,object),Cnil);
++-    p= &((*p)->c.c_cdr);
++-  }
++-  if (a) 
++-    *p=SAFE_CDR(va_arg(ap,object));
+++object
+++listqA(int a,int n,va_list ap) {
++ 
++-  return(vs_pop);
+++  return n_cons(n,va_arg(ap,object),a ? va_arg(ap,object) : Cnil);
++ 
++ }
++ 
++-object list(int n,...) { 
+++object list(fixnum n,...) {
++ 
++   va_list ap;
++   object lis;
++@@ -375,7 +360,7 @@ object list(int n,...) {
++ 
++ }
++ 
++-object listA(int n,...) { 
+++object listA(fixnum n,...) {
++ 
++   va_list ap;
++   object lis;
++@@ -417,163 +402,63 @@ BEGIN:
++ object
++ append(object x, object y) {
++ 
++-  object z;
++-  fixnum n;
++-
++-  if (endp(x))
++-    return(y);
++-
++-  for (z=x,n=0;!endp(z);z=z->c.c_cdr,n++);
++-  if ((z=multi_cons(n,({object _t=x->c.c_car;x=x->c.c_cdr;_t;}),y))!=OBJNULL)
++-    return z;
+++  return n_cons(length(x),({object _t=x->c.c_car;x=x->c.c_cdr;_t;}),y);
++ 
++-  z = make_cons(Cnil, Cnil);
++-  vs_push(z);
++-  for (;;) {
++-    z->c.c_car = x->c.c_car;
++-    x = x->c.c_cdr;
++-    if (endp(x))
++-      break;
++-    z->c.c_cdr = make_cons(Cnil, Cnil);
++-    z = z->c.c_cdr;
++-  }
++-  z->c.c_cdr = SAFE_CDR(y);
++-  return(vs_pop);
++ }
++ 
++-
++-
++-/* object */
++-/* append(x, y) */
++-/* object x, y; */
++-/* { */
++-/*   object z; */
++-
++-/*   if (endp(x)) */
++-/*           return(y); */
++-/*   z = make_cons(Cnil, Cnil); */
++-/*   vs_push(z); */
++-/*   for (;;) { */
++-/*           z->c.c_car = x->c.c_car; */
++-/*           x = x->c.c_cdr; */
++-/*           if (endp(x)) */
++-/*                   break; */
++-/*           z->c.c_cdr = make_cons(Cnil, Cnil); */
++-/*           z = z->c.c_cdr; */
++-/*   } */
++-/*   z->c.c_cdr = SAFE_CDR(y); */
++-/*   return(vs_pop); */
++-/* } */
++-
++ /*
++      Copy_list(x) copies list x.
++ */
++ object
++-copy_list(x)
++-object x;
++-{
++-     object y;
++-
++-     if (type_of(x) != t_cons)
++-             return(x);
++-     y = make_cons(x->c.c_car, Cnil);
++-     vs_push(y);
++-     for (x = x->c.c_cdr; type_of(x) == t_cons; x = x->c.c_cdr) {
++-             y->c.c_cdr = make_cons(x->c.c_car, Cnil);
++-             y = y->c.c_cdr;
++-     }
++-     y->c.c_cdr = SAFE_CDR(x);
++-     return(vs_pop);
+++copy_list(object x) {
+++  object h,y;
+++  
+++  if (type_of(x) != t_cons)
+++    return(x);
+++  h=y=make_cons(x->c.c_car, Cnil);
+++  for (x = x->c.c_cdr; type_of(x) == t_cons; x = x->c.c_cdr) {
+++    y->c.c_cdr = make_cons(x->c.c_car, Cnil);
+++    y=y->c.c_cdr;
+++  }
+++  y->c.c_cdr=SAFE_CDR(x);
+++  return(h);
++ }
++ 
++ /*
++      Copy_alist(x) copies alist x.
++ */
++ static object
++-copy_alist(x)
++-object x;
++-{
++-     object y;
+++copy_alist(object x) {
++ 
++-     if (endp(x))
++-             return(Cnil);
++-     y = make_cons(Cnil, Cnil);
++-     vs_push(y);
++-     for (;;) {
++-             y->c.c_car = make_cons(car(x->c.c_car), cdr(x->c.c_car));
++-             x = x->c.c_cdr;
++-             if (endp(x))
++-                     break;
++-             y->c.c_cdr = make_cons(Cnil, Cnil);
++-             y = y->c.c_cdr;
++-     }
++-     return(vs_pop);
+++  object h,y;
+++  
+++  if (endp(x))
+++    return(Cnil);
+++  h=y=make_cons(Cnil, Cnil);
+++  for (;;) {
+++    y->c.c_car=make_cons(car(x->c.c_car), cdr(x->c.c_car));
+++    x=x->c.c_cdr;
+++    if (endp(x))
+++      break;
+++    y->c.c_cdr=make_cons(Cnil, Cnil);
+++    y=y->c.c_cdr;
+++  }
+++  return(h);
++ }
++ 
++-/*
++-     Copy_tree(x) copies tree x
++-     and pushes the result onto vs.
++-*/
++-static void
++-copy_tree(x)
++-object x;
++-{
++-     cs_check(x);
++-
++-     if (type_of(x) == t_cons) {
++-             copy_tree(x->c.c_car);
++-             copy_tree(x->c.c_cdr);
++-             stack_cons();
++-     } else
++-             vs_check_push(x);
++-}
++-
++-/* /\* */
++-/*   Subst(new, tree) pushes */
++-/*   the result of substituting new in tree */
++-/*   onto vs. */
++-/* *\/ */
++-/* static void */
++-/* subst(new, tree) */
++-/* object new, tree; */
++-/* { */
++-/*   cs_check(new); */
++-
++-/*   if (TEST(tree)) */
++-/*           vs_check_push(new); */
++-/*   else if (type_of(tree) == t_cons) { */
++-/*           subst(new, tree->c.c_car); */
++-/*           subst(new, tree->c.c_cdr); */
++-/*           stack_cons(); */
++-/*   } else */
++-/*           vs_check_push(tree); */
++-/* } */
++-
++-/* static object */
++-/* subst1(object new, object tree) { */
++-
++-/*   if (TEST(tree)) */
++-/*     return new; */
++-/*   else if (type_of(tree) == t_cons) { */
++-/*     object oa=tree->c.c_car,a=subst1(new,oa),od=tree->c.c_cdr,d=subst1(new,od); */
++-/*     return a==oa && d==od ? tree : make_cons(a,d); */
++-/*   } else */
++-/*     return tree; */
++-
++-/* } */
++-
++-/* static object */
++-/* subst1qi(object new, object tree) { */
++-
++-/*   if (item_compared == tree) */
++-/*     return new; */
++-/*   else if (type_of(tree) == t_cons) { */
++-/*     object oa=tree->c.c_car,a=subst1qi(new,oa),od=tree->c.c_cdr,d=subst1qi(new,od); */
++-/*     return a==oa && d==od ? tree : make_cons(a,d); */
++-/*   } else */
++-/*     return tree; */
+++static object
+++copy_tree(object x) {
++ 
++-/* } */
+++  object y;
+++  
+++  if (type_of(x) == t_cons) {
+++    y=make_cons(Cnil,Cnil);
+++    y->c.c_car=copy_tree(x->c.c_car);
+++    y->c.c_cdr=copy_tree(x->c.c_cdr);
+++    x=y;
+++  }
+++  return x;
+++}
++ 
++ /*
++      Nsubst(new, treep) stores
++@@ -599,27 +484,22 @@ object new, *treep;
++      result of substituting tree by alist
++      onto vs.
++ */
++-static void
++-sublis(alist, tree)
++-object alist, tree;
++-{
++-     object x;
++-     cs_check(alist);
++-
+++static object
+++sublis(object alist, object tree) {
++ 
++-     for (x = alist;  !endp(x);  x = x->c.c_cdr) {
++-             item_compared = car(x->c.c_car);
++-             if (TEST(tree)) {
++-                     vs_check_push(cdr(x->c.c_car));
++-                     return;
++-             }
++-     }
++-     if (type_of(tree) == t_cons) {
++-             sublis(alist, tree->c.c_car);
++-             sublis(alist, tree->c.c_cdr);
++-             stack_cons();
++-     } else
++-             vs_check_push(tree);
+++  object x;
+++  cs_check(alist);
+++  
+++  for (x=alist;!endp(x);x=x->c.c_cdr) {
+++    item_compared=car(x->c.c_car);
+++    if (TEST(tree))
+++      return x->c.c_car->c.c_cdr;
+++  }
+++  if (type_of(tree) == t_cons) {
+++    object a=sublis(alist,tree->c.c_car),d=sublis(alist,tree->c.c_cdr);
+++    return (a==tree->c.c_car && d==tree->c.c_cdr) ? tree : make_cons(a,d);
+++  } else
+++    return tree;
++ }
++ 
++ /*
++@@ -777,7 +657,7 @@ DEFUN_NEW("TENTH",object,fLtenth,LISP,1,
++ LFD(Lcons)() {
++   
++   check_arg(2);
++-  stack_cons();
+++  vs_base[0]=make_cons(vs_base[0],vs_pop);
++ 
++ }
++ 
++@@ -907,36 +787,28 @@ LFD(Llast)() {
++ 
++ }
++ 
++-LFD(Llist)()
++-{
++-     vs_push(Cnil);
++-     while (vs_top > vs_base + 1)
++-             stack_cons();
++-}
+++LFD(Llist)() {
+++
+++  object *a;
+++
+++  a=vs_base;
+++  vs_base[0]=n_cons(vs_top-vs_base,*a++,Cnil);
+++  vs_top=vs_base+1;
++ 
++-LFD(LlistA)()
++-{
++-     if (vs_top == vs_base)
++-             too_few_arguments();
++-     while (vs_top > vs_base + 1)
++-             stack_cons();
++ }
++-/* static object copy_off_stack_tree(x) */
++-/* object x; */
++-/* {object *p; */
++-/*  p = &x; */
++-/*  TOP: */
++-/*  if (type_of(*p) ==t_cons) */
++-/*    { if(!inheap(*p)) */
++-/*        *p=make_cons(copy_off_stack_tree((*p)->c.c_car),(*p)->c.c_cdr); */
++-/*    else */
++-/*      (*p)->c.c_car = copy_off_stack_tree((*p)->c.c_car); */
++-/*      p = &((*p)->c.c_cdr); */
++-/*      goto TOP;} */
++-/*  return x; */
++-/* } */
++ 
++-        
+++LFD(LlistA)() {
+++
+++  object *a;
+++
+++  if (vs_top == vs_base)
+++    too_few_arguments();
+++
+++  a=vs_base;
+++  vs_base[0]=n_cons(vs_top-vs_base-1,*a++,vs_head);
+++  vs_top=vs_base+1;
+++
+++}
++  
++ object on_stack_make_list(n)
++ int n;
++@@ -957,23 +829,20 @@ int n;
++  goto TOP;
++ }
++ 
++-object make_list(n)
++-int n;
++-{object x =Cnil ;
++-  while (n-- > 0)
++-    x = make_cons(Cnil, x);
++- return x;}
+++object
+++make_list(int n) {
+++
+++  return n_cons(n,Cnil,Cnil);
+++
+++}
++ 
++ @(defun make_list (size &key initial_element &aux x)
++-     int i;
++ @
++-     check_type_non_negative_integer(&size);
++-     if (type_of(size) != t_fixnum)
++-             FEerror("Cannot make a list of the size ~D.", 1, size);
++-     i = fix(size);
++-     while (i-- > 0)
++-             x = make_cons(initial_element, x);
++-     @(return x)
+++  check_type_non_negative_integer(&size);
+++  if (type_of(size) != t_fixnum)
+++    FEerror("Cannot make a list of the size ~D.", 1, size);
+++  x=n_cons(fix(size),initial_element,Cnil);
+++  @(return x)
++ @)
++ 
++ LFD(Lappend)()
++@@ -1006,22 +875,19 @@ LFD(Lcopy_alist)()
++ LFD(Lcopy_tree)()
++ {
++      check_arg(1);
++-     copy_tree(vs_base[0]);
++-     vs_base[0] = vs_pop;
+++     vs_base[0]=copy_tree(vs_base[0]);
++ }
++ 
++ LFD(Lrevappend)() {
++-     object x, y;
++ 
++-     check_arg(2);
++-     y = vs_pop;
++-     for (x = vs_base[0];  !endp(x);  x = x->c.c_cdr) {
++-             vs_push(x->c.c_car);
++-             vs_push(y);
++-             stack_cons();
++-             y = vs_pop;
++-     }
++-     vs_base[0] = y;
+++  object x, y;
+++
+++  check_arg(2);
+++  y=vs_pop;
+++  for (x=vs_base[0];!endp(x);x=x->c.c_cdr)
+++    y=make_cons(x->c.c_car,y);
+++  vs_base[0] = y;
+++
++ }
++ 
++ object
++@@ -1078,26 +944,19 @@ LFD(Lreconc)() {
++ }
++ 
++ @(defun butlast (lis &optional (nn `make_fixnum(1)`))
++-     int i;
+++  int i;
+++  object *p,x,y,z;
++ @
++-     check_type_non_negative_integer(&nn);
++-     if (!listp(lis))/*FIXME checktype*/
++-       FEwrong_type_argument(sLlist, lis);
++-     if (type_of(nn) != t_fixnum)
++-             @(return Cnil)
++-     for (i = 0;  consp(lis);  i++, lis = lis->c.c_cdr)
++-             vs_check_push(lis->c.c_car);
++-     if (i <= fix((nn))) {
++-             vs_top -= i;
++-             @(return Cnil)
++-     }
++-     vs_top -= fix((nn));
++-     i -= fix((nn));
++-     vs_push(Cnil);
++-     while (i-- > 0)
++-             stack_cons();
++-     lis = vs_pop;
++-     @(return lis)
+++  check_type_non_negative_integer(&nn);
+++  if (!listp(lis))/*FIXME checktype*/
+++    FEwrong_type_argument(sLlist, lis);
+++  if (type_of(nn) != t_fixnum)
+++    @(return Cnil)
+++      for (x=y=lis,i=0;i<fix(nn) && consp(y);i++,y=y->c.c_cdr);
+++  for (p=&z;consp(y);x=x->c.c_cdr,y=y->c.c_cdr)
+++    collect(p,make_cons(x->c.c_car,Cnil));
+++  *p=i ? Cnil : x;
+++  @(return `z`)
++ @)
++ 
++ @(defun nbutlast (lis &optional (nn `make_fixnum(1)`))
++@@ -1119,21 +978,20 @@ LFD(Lreconc)() {
++ @)
++ 
++ LFD(Lldiff)() {
++-     fixnum i;
++-     object x;
++ 
++-     check_arg(2);
++-     x = vs_base[0];
++-     if (!listp(x))/*FIXME checktype*/
++-       FEwrong_type_argument(sLlist, x);
++-     for (i = 0; consp(x) && x!=vs_base[1] ;  i++, x = x->c.c_cdr)
++-       vs_check_push(x->c.c_car); /*FIXME but a segfault breaker at vs_limit*/
++-     x=eql(x,vs_base[1]) ? Cnil : x;
++-     vs_check_push(x);
++-     while (i-- > 0)
++-       stack_cons();
++-     vs_base[0] = vs_pop;
++-     vs_popp;
+++  fixnum i;
+++  object x,y,*p,z;
+++
+++  check_arg(2);
+++  x=vs_base[0];
+++  z=vs_pop;
+++  if (!listp(x))/*FIXME checktype*/
+++    FEwrong_type_argument(sLlist, x);
+++  for (p=&y,i=0;consp(x) && x!=z;i++,x=x->c.c_cdr)
+++    collect(p,make_cons(x->c.c_car,Cnil));
+++  *p=eql(x,z) ? Cnil : x;
+++  vs_base[0]=y;
+++
++ }
++ 
++ LFD(Lrplaca)()
++@@ -1187,18 +1045,15 @@ LFD(Lrplacd)()
++ PREDICATE(Lnsubst,Lnsubst_if,Lnsubst_if_not, 3)
++ 
++ object
++-sublis1(alist,tree,tst)
++-     object alist,tree;
++-     bool (*tst)();
++-{object v;
++- for (v=alist ; v!=Cnil; v=v->c.c_cdr)
++-   { if ((*tst)(v->c.c_car->c.c_car ,tree))
++-       return(v->c.c_car->c.c_cdr);}
++- if (type_of(tree)==t_cons)
++-   {object ntree=make_cons(sublis1(alist,tree->c.c_car,tst),
++-                        tree->c.c_cdr);
++-    ntree->c.c_cdr=sublis1(alist,ntree->c.c_cdr,tst);
++-    return ntree;
+++sublis1(object alist,object tree,bool (*tst)()) {
+++
+++  object v;
+++  for (v=alist;v!=Cnil;v=v->c.c_cdr) {
+++    if ((*tst)(v->c.c_car->c.c_car,tree))
+++      return(v->c.c_car->c.c_cdr);}
+++  if (type_of(tree)==t_cons){
+++    object a=sublis1(alist,tree->c.c_car,tst),d=sublis1(alist,tree->c.c_cdr,tst);
+++    return a==tree->c.c_car && d==tree->c.c_cdr ? tree : make_cons(a,d);
++   }
++   return tree;
++ }
++@@ -1226,8 +1081,7 @@ check_alist(alist)
++ @  
++      protectTEST;
++      setupTEST(Cnil, test, test_not, key);
++-     sublis(alist, tree);
++-     tree = vs_pop;
+++     tree=sublis(alist,tree);
++      restoreTEST;
++      @(return tree)
++ @)
++@@ -1321,27 +1175,25 @@ LFD(Lacons)()
++ }
++ 
++ @(defun pairlis (keys data &optional a_list)
++-     object *vp, k, d;
+++  object k,d,y,z,*p;
++ @
++-     vp = vs_top + 1;
++-     k = keys;
++-     d = data;
++-     while (!endp(k)) {
++-             if (endp(d))
++-              FEerror(
++-               "The keys ~S and the data ~S are not of the same length",
++-               2, keys, data);
++-             vs_check_push(make_cons(k->c.c_car, d->c.c_car));
++-             k = k->c.c_cdr;
++-             d = d->c.c_cdr;
++-     }
++-     if (!endp(d))
++-         FEerror("The keys ~S and the data ~S are not of the same length",
++-                 2, keys, data);
++-     vs_push(a_list);
++-     while (vs_top > vp)
++-             stack_cons();
++-     @(return `vp[-1]`)
+++  k=keys;
+++  d=data;
+++  p=&y;
+++  while (!endp(k)) {
+++    if (endp(d))
+++      FEerror("The keys ~S and the data ~S are not of the same length",2,keys,data);
+++    z=make_cons(Cnil,Cnil);
+++    z->c.c_car=make_cons(k->c.c_car,d->c.c_car);
+++    collect(p,z);
+++    k = k->c.c_cdr;
+++    d = d->c.c_cdr;
+++  }
+++  if (!endp(d))
+++    FEerror("The keys ~S and the data ~S are not of the same length",2,keys,data);
+++  *p=a_list;
+++  vs_top=vs_base+1;
+++  @(return `y`)
++ @)
++ 
++ @(static defun assoc_or_rassoc (item a_list &key test test_not key)
++--- gcl-2.6.12.orig/o/makefile
+++++ gcl-2.6.12/o/makefile
++@@ -91,8 +91,8 @@ $(DECL): $(HDIR)/make-decl.h $(INI_FILES
++ grab_defs: grab_defs.c
++      ${CC} $(OFLAGS) -o grab_defs  grab_defs.c
++ 
++-wpool: wpool.c
++-     $(CC) $(CFLAGS) $(DEFS) -o $@ $<
+++wpool: wpool.o
+++     $(CC) $(LDFLAGS) -o $@ $<
++ 
++ $(GCLIB): ${ALIB} 
++      rm -f gcllib.a
++--- gcl-2.6.12.orig/o/makefun.c
+++++ gcl-2.6.12/o/makefun.c
++@@ -6,12 +6,20 @@
++ MakeAfun(addr,F_ARGD(min,max,flags,ARGTYPES(a,b,c,d)),0);
++ MakeAfun(addr,F_ARGD(2,3,NONE,ARGTYPES(OO,OO,OO,OO)),0);
++ */
+++
+++static int mv;
+++
++ object MakeAfun(object (*addr)(object,object), unsigned int argd, object data)
++-{int type = (F_ARG_FLAGS_P(argd,F_requires_fun_passed) ? t_closure : t_afun);
+++{
+++  ufixnum at=F_TYPES(argd)>>F_TYPE_WIDTH;
+++  ufixnum ma=F_MIN_ARGS(argd);
+++  ufixnum xa=F_MAX_ARGS(argd);
+++  ufixnum rt=F_RESULT_TYPE(argd);
+++  int type = (F_ARG_FLAGS_P(argd,F_requires_fun_passed) ? t_closure : (!at&&!rt&&ma==xa&&!mv ? t_sfun : t_afun));
++   object x = alloc_object(type);
++   x->sfn.sfn_name = Cnil;
++   x->sfn.sfn_self = addr;
++-  x->sfn.sfn_argd = argd;
+++  x->sfn.sfn_argd = type==t_sfun ? ma : argd;
++   if (type == t_closure)
++     { x->cl.cl_env = 0;
++       x->cl.cl_envdim=0;}
++@@ -107,7 +115,7 @@ DEFUN_NEW("SET-KEY-STRUCT",object,fSset_
++ }
++      
++ 
++-#define collect(top_,next_,val_) ({object _x=MMcons(val_,Cnil);\
+++#define mcollect(top_,next_,val_) ({object _x=MMcons(val_,Cnil);\
++                                    if (top_==Cnil) top_=next_=_x; \
++                                    else next_=next_->c.c_cdr=_x;})
++ 
++@@ -125,23 +133,23 @@ put_fn_procls(object sym,fixnum argd,fix
++   for (i=0;i<minargs;i++,atypes >>=F_TYPE_WIDTH) 
++     switch(maxargs!=minargs ? F_object : atypes & MASK_RANGE(0,F_TYPE_WIDTH)) {
++     case F_object:
++-      collect(ta,na,def);
+++      mcollect(ta,na,def);
++       break;
++     case F_int:
++-      collect(ta,na,sLfixnum);
+++      mcollect(ta,na,sLfixnum);
++       break;
++     case F_shortfloat:
++-      collect(ta,na,sLshort_float);
+++      mcollect(ta,na,sLshort_float);
++       break;
++     case F_double_ptr:
++-      collect(ta,na,sLlong_float);
+++      mcollect(ta,na,sLlong_float);
++       break;
++     default:
++       FEerror("Bad sfn declaration",0);
++       break;
++     }
++   if (maxargs!=minargs)
++-    collect(ta,na,sLA);
+++    mcollect(ta,na,sLA);
++   putprop(sym,ta,sSproclaimed_arg_types);
++   ta=na=Cnil;
++   if (oneval) 
++@@ -188,15 +196,19 @@ LISP_makefun(char *strg, void *fn, unsig
++ void
++ SI_makefunm(char *strg, void *fn, unsigned int argd)
++ { object sym = make_si_ordinary(strg);
++- fSfset(sym, fSmakefun(sym,fn,argd));
++- put_fn_procls(sym,argd,0,Ct,Ct);
+++  mv=1;
+++  fSfset(sym, fSmakefun(sym,fn,argd));
+++  mv=0;
+++  put_fn_procls(sym,argd,0,Ct,Ct);
++ }
++ 
++ void
++ LISP_makefunm(char *strg, void *fn, unsigned int argd)
++ { object sym = make_ordinary(strg);
++- fSfset(sym, fSmakefun(sym,fn,argd));
++- put_fn_procls(sym,argd,0,Ct,Ct);
+++  mv=1;
+++  fSfset(sym, fSmakefun(sym,fn,argd));
+++  mv=0;
+++  put_fn_procls(sym,argd,0,Ct,Ct);
++ }
++ 
++ 
++--- gcl-2.6.12.orig/o/package.d
+++++ gcl-2.6.12/o/package.d
++@@ -849,17 +849,19 @@ FFN(Lpackage_shadowing_symbols)()
++      vs_base[0] = vs_base[0]->p.p_shadowings;
++ }
++ 
++-LFD(Llist_all_packages)()
++-{
++-     struct package *p;
++-     int i;
+++LFD(Llist_all_packages)() {
+++
+++  struct package *p;
+++  object x,*l;
+++  int i;
+++  
+++  check_arg(0);
+++
+++  for (l=&x,p=pack_pointer,i=0;p!=NULL;p=p->p_link,i++)
+++    collect(l,make_cons((object)p,Cnil));
+++  *l=Cnil;
+++  vs_push(x);
++ 
++-     check_arg(0);
++-     for (p = pack_pointer, i = 0;  p != NULL;  p = p->p_link, i++)
++-             vs_push((object)p);
++-     vs_push(Cnil);
++-     while (i-- > 0)
++-             stack_cons();
++ }
++ 
++ @(defun intern (strng &optional (p `current_package()`) &aux sym)
++--- gcl-2.6.12.orig/o/predicate.c
+++++ gcl-2.6.12/o/predicate.c
++@@ -425,7 +425,7 @@ eql1(register object x,register object y
++ 
++   /*x and y are not == and not Cnil and not immfix*/
++ 
++-  if (valid_cdr(x)||valid_cdr(y)||x->d.t!=y->d.t) return FALSE;
+++  /* if (valid_cdr(x)||valid_cdr(y)||x->d.t!=y->d.t) return FALSE; */
++   
++   switch (x->d.t) {
++ 
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -41,6 +41,8 @@ int  line_length = 72;
++       isLower((c)&0377) || (c) == ':')
++ 
++ 
+++#define READ_TABLE_CASE (Vreadtable->s.s_dbind->rt.rt_case)
+++
++ #define      mod(x)          ((x)%Q_SIZE)
++ 
++ 
++@@ -619,13 +621,113 @@ object coerce_big_to_string(object,int);
++ static bool
++ potential_number_p(object,int);
++ 
+++#define CASE_OF(x_) ({int _x=(x_);isUpper(_x) ? 1 : (isLower(_x) ? -1 : 0);})
+++
+++static int
+++constant_case(object x) {
+++
+++  fixnum i,j,jj;
+++
+++  for (i=j=0;i<x->s.s_fillp;i++,j=j ? j : jj)
+++    if (j*(jj=CASE_OF(x->s.s_self[i]))==-1)
+++      return 0;
+++
+++  return j;
+++
+++}
+++
+++static int
+++all_dots(object x) {
+++
+++  fixnum i;
+++
+++  for (i=0;i<x->s.s_fillp;i++)
+++    if (x->s.s_self[i]!='.')
+++      return 0;
+++
+++  return 1;
+++
+++}
+++
+++static int
+++needs_escape (object x,int pp) {
+++
+++  fixnum i;
+++  char ch;
+++
+++  if (!PRINTescape)
+++    return 0;
+++
+++  for (i=0;i<x->s.s_fillp;i++)
+++    switch((ch=x->s.s_self[i])) {
+++    case '(':
+++    case ')':
+++    case ':':
+++    case '`':
+++    case '\'':
+++    case '"':
+++    case ';':
+++    case ',':
+++    case '\n':
+++      return 1;
+++    case ' ':
+++      if (!i) return 1;
+++    default:
+++      if ((READ_TABLE_CASE==sKupcase   && isLower(ch)) ||
+++       (READ_TABLE_CASE==sKdowncase && isUpper(ch)))
+++     return 1;
+++    }
+++
+++  if (pp)
+++    if (potential_number_p(x, PRINTbase) || all_dots(x))
+++      return 1;
+++
+++  return !x->s.s_fillp;
+++
+++}
+++
+++#define convertible_upper(c) ((READ_TABLE_CASE==sKupcase  ||READ_TABLE_CASE==sKinvert)&& isUpper(c))
+++#define convertible_lower(c) ((READ_TABLE_CASE==sKdowncase||READ_TABLE_CASE==sKinvert)&& isLower(c))
+++
+++static void
+++print_symbol_name_body(object x,int pp) {
+++
+++  int i,j,fc,tc,lw,k,cc;
+++
+++  cc=constant_case(x);
+++  k=needs_escape(x,pp);
+++
+++  if (k)
+++    write_ch('|');
+++
+++  for (lw=i=0;i<x->s.s_fillp;i++) {
+++    j = x->s.s_self[i];
+++    if (PRINTescape && (j == '|' || j == '\\'))
+++      write_ch('\\');
+++    fc=convertible_upper(j) ? 1 :
+++        (convertible_lower(j) ? -1 : 0);
+++    tc=(READ_TABLE_CASE==sKinvert ? -cc :
+++      (PRINTcase == sKupcase ? 1 :
+++       (PRINTcase == sKdowncase ? -1 :
+++        (PRINTcase == sKcapitalize ? (i==lw ? 1 : -1) : 0))));
+++    if (ispunct(j)||isspace(j)) lw=i+1;
+++    j+=(tc*fc && !k ? (tc-fc)>>1 : 0)*('A'-'a');
+++    write_ch(j);
+++
+++  }
+++
+++  if (k)
+++    write_ch('|');
+++
+++}
+++
++ void
++ write_object(x, level)
++ object x;
++ int level;
++ {
++      object r, y;
++-     int i, j, k,lw;
+++     int i, j, k;
++      object *vp;
++ 
++      cs_check(x);
++@@ -797,117 +899,49 @@ int level;
++              break;
++ 
++      case t_symbol:
++-             if (!PRINTescape) {
++-                     for (lw = 0,i = 0;  i < x->s.s_fillp;  i++) {
++-                             j = x->s.s_self[i];
++-                             if (isUpper(j)) {
++-                                    if (PRINTcase == sKdowncase ||
++-                                        (PRINTcase == sKcapitalize && i!=lw))
++-                                          j += 'a' - 'A';
++-                                 } else if (!isLower(j))
++-                                         lw = i + 1;
++-                                  write_ch(j);
+++       {
++ 
++-                     }
++-                     break;
++-             }
++-             if (x->s.s_hpack == Cnil) {
++-                 if (PRINTcircle) {
++-                     for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
++-                         if (x == *vp) {
++-                             if (vp[1] != Cnil) {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('#');
++-                                 return;
++-                             } else {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('=');
++-                                 vp[1] = Ct;
++-                             }
++-                         }
+++         if (PRINTescape) {
+++           if (x->s.s_hpack == Cnil) {
+++             if (PRINTcircle) {
+++               for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
+++                 if (x == *vp) {
+++                   if (vp[1] != Cnil) {
+++                     write_ch('#');
+++                     write_decimal((vp-PRINTvs_top)/2+1);
+++                     write_ch('#');
+++                     return;
+++                   } else {
+++                     write_ch('#');
+++                     write_decimal((vp-PRINTvs_top)/2+1);
+++                     write_ch('=');
+++                     vp[1] = Ct;
+++                   }
++                  }
++-                 if (PRINTgensym)
++-                     write_str("#:");
++-             } else if (x->s.s_hpack == keyword_package)
++-                     write_ch(':');
++-             else if (PRINTpackage||find_symbol(x,current_package())!=x
++-                      || intern_flag == 0)
++-               {
++-                     k = 0;
++-                     for (i = 0;
++-                          i < x->s.s_hpack->p.p_name->st.st_fillp;
++-                          i++) {
++-                             j = x->s.s_hpack->p.p_name
++-                                 ->st.st_self[i];
++-                             if (to_be_escaped(j))
++-                                     k++;
++-                     }
++-                     if (k > 0)
++-                             write_ch('|');
++-                  for (lw = 0, i = 0;        
++-                          i < x->s.s_hpack->p.p_name->st.st_fillp;
++-                          i++) {
++-                             j = x->s.s_hpack->p.p_name
++-                                 ->st.st_self[i];
++-                             if (j == '|' || j == '\\')
++-                                     write_ch('\\');
++-                                 if (k == 0) {
++-                                         if (isUpper(j)) {
++-                                                 if (PRINTcase == sKdowncase ||
++-                                                     (PRINTcase == sKcapitalize && i!=lw))
++-                                                 j += 'a' - 'A';
++-                                         } else if (!isLower(j))
++-                                                 lw = i + 1;
++-                                 }
++-                             write_ch(j);
++-                     }
++-                     if (k > 0)
++-                             write_ch('|');
++-                     if (find_symbol(x, x->s.s_hpack) != x)
++-                             error("can't print symbol");
++-                     if (PRINTpackage || intern_flag == INTERNAL)
++-                             write_str("::");
++-                     else if (intern_flag == EXTERNAL)
++-                             write_ch(':');
++-                     else
++-                     FEerror("Pathological symbol --- cannot print.", 0);
++              }
++-             k = 0;
++-             if (potential_number_p(x, PRINTbase))
++-                     k++;
++-             for (i = 0;  i < x->s.s_fillp;  i++) {
++-                     j = x->s.s_self[i];
++-                     if (to_be_escaped(j))
++-                             k++;
++-             }
++-             for (i = 0;  i < x->s.s_fillp;  i++)
++-                     if (x->s.s_self[i] != '.')
++-                             goto NOT_DOT;
++-             k++;
++-
++-     NOT_DOT:                        
++-             if (k > 0)
++-                     write_ch('|');
++-                 for (lw = 0, i = 0;  i < x->s.s_fillp;  i++) {
++-                     j = x->s.s_self[i];
++-                     if (j == '|' || j == '\\')
++-                             write_ch('\\');
++-                         if (k == 0) {
++-                                 if (isUpper(j)) {
++-                                         if (PRINTcase == sKdowncase ||
++-                                             (PRINTcase == sKcapitalize && i != lw))
++-                                             j += 'a' - 'A';
++-                                 } else if (!isLower(j))
++-                                         lw = i + 1;
++-                         }
++-                     write_ch(j);
++-             }
++-             if (k > 0)
++-                     write_ch('|');
++-             break;
+++             if (PRINTgensym)
+++               write_str("#:");
+++           } else if (x->s.s_hpack == keyword_package) {
+++             write_ch(':');
+++           } else if (PRINTpackage||find_symbol(x,current_package())!=x || !intern_flag) {
+++
+++             print_symbol_name_body(x->s.s_hpack->p.p_name,0);
+++
+++             if (find_symbol(x, x->s.s_hpack) != x)
+++               error("can't print symbol");
+++             if (PRINTpackage || intern_flag == INTERNAL)
+++               write_str("::");
+++             else if (intern_flag == EXTERNAL)
+++               write_ch(':');
+++             else
+++               FEerror("Pathological symbol --- cannot print.", 0);
+++
+++           }
++ 
+++         }
+++         print_symbol_name_body(x,1);
+++         break;
+++       }
++      case t_array:
++      {
++              int subscripts[ARANKLIM];
++--- gcl-2.6.12.orig/o/read.d
+++++ gcl-2.6.12/o/read.d
++@@ -695,10 +695,29 @@ BEGIN:
++                  goto K;
++                else
++                  break;
++-             }
++-             else if ('a' <= char_code(c) && char_code(c) <= 'z')
++-                     c = code_char(char_code(c) - ('a' - 'A'));
++-             else if (char_code(c) == ':') {
+++             } else {
+++
+++               switch(char_code(c)) {
+++               case '\b':
+++               case '\t':
+++               case '\n':
+++               case '\r':
+++               case '\f':
+++               case ' ':
+++               case '\177':
+++                 READER_ERROR(in,"Cannot read character");
+++               default:
+++                 break;
+++               }
+++
+++               if ('a' <= char_code(c) && char_code(c) <= 'z') {
+++                 if ('a' <= char_code(c) && char_code(c) <= 'z' &&
+++                     (READtable->rt.rt_case==sKupcase || READtable->rt.rt_case==sKinvert))
+++                   c = code_char(char_code(c) - ('a' - 'A'));
+++                 else if ('A' <= char_code(c) && char_code(c) <= 'Z' &&
+++                          (READtable->rt.rt_case==sKdowncase || READtable->rt.rt_case==sKinvert))
+++                   c = code_char(char_code(c) + ('a' - 'A'));
+++               } else if (char_code(c) == ':') {
++                      if (colon_type == 0) {
++                              colon_type = 1;
++                              colon = length;
++@@ -707,6 +726,7 @@ BEGIN:
++                      else
++                              colon_type = -1;
++                              /*  Colon has appeared twice.  */
+++               }
++              }
++         }
++      if (preserving_whitespace_flag || cat(c) != cat_whitespace)
++@@ -807,46 +827,49 @@ SYMBOL:
++ }
++ 
++ static void
++-Lleft_parenthesis_reader()
++-{
++-     object in, x;
++-     object *p;
+++Lleft_parenthesis_reader() {
++ 
++-     check_arg(2);
++-     in = vs_base[0];
++-     vs_head = Cnil;
++-     p = &vs_head;
++-     for (;;) {
++-             delimiting_char = code_char(')');
++-             in_list_flag = TRUE;
++-             x = read_object(in);
++-             if (x == OBJNULL)
++-                     goto ENDUP;
++-             if (dot_flag) {
++-                     if (p == &vs_head)
++-     FEerror("A dot appeared after a left parenthesis.", 0);
++-                     delimiting_char = code_char(')');
++-                     in_list_flag = TRUE;
++-                     *p = SAFE_CDR(read_object(in));
++-                     if (dot_flag)
++-     FEerror("Two dots appeared consecutively.", 0);
++-                     if (*p==OBJNULL)
++-     FEerror("Object missing after dot.", 0);
++-                     delimiting_char = code_char(')');
++-                     in_list_flag = TRUE;
++-                     if (read_object(in)!=OBJNULL)
++-        FEerror("Two objects after dot.",0);
++-                     goto ENDUP;
++-             }
++-             vs_push(x);
++-             *p = make_cons(x, Cnil);
++-             vs_popp;
++-             p = &((*p)->c.c_cdr);
++-     }
+++  object in, x;
+++  object *p;
+++  
+++  check_arg(2);
+++  in = vs_base[0];
+++  vs_top=vs_base+1;
+++  p = &vs_head;
+++
+++  for (;;) {
+++
+++    delimiting_char = code_char(')');
+++    in_list_flag = TRUE;
+++
+++    if ((x=read_object(in))==OBJNULL) {
+++      *p=Cnil;
+++      break;
+++    }
+++
+++    if (dot_flag) {
+++
+++      if (p==&vs_head) READER_ERROR(in,"A dot appeared after a left parenthesis.");
+++
+++      delimiting_char = code_char(')');
+++      in_list_flag = TRUE;
+++      *p=SAFE_CDR(read_object(in));
+++
+++      if (dot_flag) READER_ERROR(in,"Two dots appeared consecutively.");
+++      if (*p==OBJNULL) READER_ERROR(in,"Object missing after dot.");
+++
+++      delimiting_char = code_char(')');
+++      in_list_flag = TRUE;
+++      if (read_object(in)!=OBJNULL) READER_ERROR(in,"Two objects after dot.");
+++
+++      break;
+++
+++    }
+++
+++    collect(p,make_cons(x,Cnil));
+++
+++  }
++ 
++-ENDUP:
++-     vs_base[0] = vs_pop;
++-     return;
++ }
++ 
++ 
++@@ -959,13 +982,8 @@ static void
++ Lsingle_quote_reader()
++ {
++      check_arg(2);
++-     vs_popp;
++-     vs_push(sLquote);
++-     vs_push(read_object(vs_base[0]));
++-     vs_push(Cnil);
++-     stack_cons();
++-     stack_cons();
++-     vs_base[0] = vs_pop;
+++     vs_base[0] = list(2,sLquote,read_object(vs_base[0]));
+++     vs_top=vs_base+1;
++ }
++ 
++ static void
++@@ -1111,14 +1129,8 @@ Lsharp_single_quote_reader()
++      check_arg(3);
++      if(vs_base[2] != Cnil && !READsuppress)
++              extra_argument('#');
++-     vs_popp;
++-     vs_popp;
++-     vs_push(sLfunction);
++-     vs_push(read_object(vs_base[0]));
++-     vs_push(Cnil);
++-     stack_cons();
++-     stack_cons();
++-     vs_base[0] = vs_pop;
+++     vs_base[0] = list(2,sLfunction,read_object(vs_base[0]));
+++     vs_top=vs_base+1;
++ }
++ 
++ #define      QUOTE   1
++@@ -1163,20 +1175,7 @@ Lsharp_left_parenthesis_reader()
++                      }       
++                      goto L;
++              }
++-             vs_push(siScomma);
++-             vs_push(sLapply);
++-             vs_push(sLquote);
++-             vs_push(sLvector);
++-             vs_push(Cnil);
++-             stack_cons();
++-             stack_cons();
++-             vs_push(vs_base[2]);
++-             vs_push(Cnil);
++-             stack_cons();
++-             stack_cons();
++-             stack_cons();
++-             stack_cons();
++-             vs_base = vs_top - 1;
+++             vs_base[0]=list(4,siScomma,sLapply,list(2,sLquote,sLvector),vs_base[2]);
++              return;
++      }
++      vsp = vs_top;
++@@ -1633,6 +1632,7 @@ object from, to;
++                              rtab[i].rte_dtab[j]
++                              = from->rt.rt_self[i].rte_dtab[j];
++              }
+++     to->rt.rt_case=from->rt.rt_case;
++      vs_reset;
++      END_NO_INTERRUPT;}
++      return(to);
++@@ -1758,8 +1758,7 @@ READ:
++              x = read_object_recursive(strm);
++              if (x == OBJNULL)
++                      break;
++-             *p = make_cons(x, Cnil);
++-             p = &((*p)->c.c_cdr);
+++             collect(p,make_cons(x,Cnil));
++      }
++      if (recursivep == Cnil) {
++        if (sSAsharp_eq_contextA->s.s_dbind!=Cnil)
++@@ -2181,6 +2180,18 @@ LFD(Lreadtablep)()
++      @(return Ct)
++ @)
++ 
+++DEFUN_NEW("READTABLE-CASE",object,fLreadtable_case,LISP,1,1,NONE,OO,OO,OO,OO,(object rt),"") {
+++  check_type_readtable_no_default(&rt);
+++  RETURN1(rt->rt.rt_case);
+++}
+++
+++DEFUN_NEW("SET-READTABLE-CASE",object,fSset_readtable_case,SI,2,2,NONE,OO,OO,OO,OO,(object rt,object cas),"") {
+++  check_type_readtable_no_default(&rt);
+++  if (cas!=sKupcase && cas!=sKdowncase && cas!=sKpreserve && cas!=sKinvert)
+++    TYPE_ERROR(cas,list(5,sLmember,sKupcase,sKdowncase,sKpreserve,sKinvert));
+++  RETURN1(rt->rt.rt_case=cas);
+++}
+++
++ @(static defun get_dispatch_macro_character (dspchr subchr
++      &optional (rdtbl `current_readtable()`))
++ @
++@@ -2348,6 +2359,13 @@ gcl_init_read()
++ 
++      gcl_init_backq();
++ 
+++     sKupcase = make_keyword("UPCASE");
+++     sKdowncase = make_keyword("DOWNCASE");
+++     sKpreserve = make_keyword("PRESERVE");
+++     sKinvert = make_keyword("INVERT");
+++
+++     standard_readtable->rt.rt_case=sKupcase;
+++
++      Vreadtable
++      = make_special("*READTABLE*",
++                     copy_readtable(standard_readtable, Cnil));
++--- gcl-2.6.12.orig/o/reference.c
+++++ gcl-2.6.12/o/reference.c
++@@ -73,18 +73,14 @@ LFD(Lsymbol_function)(void)
++      if (type_of(sym) != t_symbol)
++              not_a_symbol(sym);
++      if (sym->s.s_sfdef != NOT_SPECIAL) {
++-             vs_push(make_fixnum((long)(sym->s.s_sfdef)));
++-             vs_base[0] = sLspecial;
++-             stack_cons();
++-             return;
+++       vs_base[0]=make_cons(sLspecial,make_fixnum((long)(sym->s.s_sfdef)));
+++       return;
++      }
++      if (sym->s.s_gfdef==OBJNULL)
++              FEundefined_function(sym);
++      if (sym->s.s_mflag) {
++-             vs_push(sym->s.s_gfdef);
++-             vs_base[0] = sSmacro;
++-             stack_cons();
++-             return;
+++       vs_base[0]=make_cons(sSmacro,sym->s.s_gfdef);
+++       return;
++      }
++      vs_base[0] = sym->s.s_gfdef;
++ }
++--- gcl-2.6.12.orig/o/sequence.d
+++++ gcl-2.6.12/o/sequence.d
++@@ -205,16 +205,7 @@ E:
++              }
++              if (e < 0)
++                      @(return `copy_list(sequence)`)
++-             for (i = 0;  i < e;  i++) {
++-                     if (type_of(sequence) != t_cons)
++-                             goto ILLEGAL_START_END;
++-                     vs_check_push(sequence->c.c_car);
++-                     sequence = sequence->c.c_cdr;
++-             }
++-             vs_push(Cnil);
++-             while (e-- > 0)
++-                     stack_cons();
++-             x = vs_pop;
+++             x=n_cons_from_x(e,sequence);
++              @(return x)
++ 
++      case t_vector:
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -165,7 +165,7 @@ sgc_sweep_phase(void) {
++     tm = tm_of((enum type)v->type);
++     
++     p = pagetochar(page(v));
++-    f = tm->tm_free;
+++    f = FREELIST_TAIL(tm);
++     k = 0;
++     size=tm->tm_size;
++ 
++@@ -189,7 +189,7 @@ sgc_sweep_phase(void) {
++      
++      /* it is ok to free x */
++      
++-     SET_LINK(x,f);
+++     SET_LINK(f,x);
++      make_free(x);
++ #ifndef SGC_WHOLE_PAGE
++      if (TYPEWORD_TYPE_P(v->type)) x->d.s = SGC_RECENT;
++@@ -198,7 +198,8 @@ sgc_sweep_phase(void) {
++      k++;
++ 
++       }
++-      tm->tm_free = f;
+++      SET_LINK(f,OBJNULL);
+++      tm->tm_tail = f;
++       tm->tm_nfree += k;
++       v->in_use-=k;
++ 
++@@ -674,34 +675,38 @@ sgc_start(void) {
++      contain the others */
++   for (i= t_start; i < t_contiguous ; i++)
++     if (TM_BASE_TYPE_P(i) && (np=(tm=tm_of(i))->tm_sgc)) {
++-      object f=tm->tm_free ,x,y,next;
+++      object f=tm->tm_free,xf,yf;
+++      struct freelist x,y;/*the f_link heads have to be separated on the stack*/
++       fixnum count=0;
++-      x=y=OBJNULL;
++       
+++      xf=PHANTOM_FREELIST(x.f_link);
+++      yf=PHANTOM_FREELIST(y.f_link);
++       while (f!=OBJNULL) {
++-     next=OBJ_LINK(f);
++ #ifdef SDEBUG             
++      if (!is_free(f))
++        printf("Not FREE in freelist f=%d",f);
++ #endif
++      if (pageinfo(f)->sgc_flags&SGC_PAGE_FLAG) {
++-       SET_LINK(f,x);
+++       SET_LINK(xf,f);
++ #ifndef SGC_WHOLE_PAGE
++        if (TYPEWORD_TYPE_P(pageinfo(f)->type)) f->d.s = SGC_RECENT;
++ #endif
++-       x=f;
+++       xf=f;
++        count++;
++      } else {
++-       SET_LINK(f,y);
+++       SET_LINK(yf,f);
++ #ifndef SGC_WHOLE_PAGE
++        if (TYPEWORD_TYPE_P(pageinfo(f)->type)) f->d.s = SGC_NORMAL;
++ #endif
++-       y=f;
+++       yf=f;
++      }
++-     f=next;
+++     f=OBJ_LINK(f);
++       }
++-      tm->tm_free = x;
++-      tm->tm_alt_free = y;
+++      SET_LINK(xf,OBJNULL);
+++      tm->tm_free = OBJ_LINK(&x);
+++      tm->tm_tail = xf;
+++      SET_LINK(yf,OBJNULL);
+++      tm->tm_alt_free = OBJ_LINK(&y);
++       tm->tm_alt_nfree = tm->tm_nfree - count;
++       tm->tm_nfree=count;
++     }
++@@ -853,38 +858,21 @@ sgc_quit(void) {
++   for (i= t_start; i < t_contiguous ; i++)
++     
++     if (TM_BASE_TYPE_P(i) && (np=(tm=tm_of(i))->tm_sgc)) {
++-      
++-      object f,y;
++-      
++-      f=tm->tm_free;
++-      if (f==OBJNULL) 
++-     tm->tm_free=tm->tm_alt_free;
++-      else {
++-     /* tack the alt_free onto the end of free */
++-#ifdef SDEBUG
++-     fixnum count=0;
++-     f=tm->tm_free;
++-     while(y= (object) F_LINK(f)) {
++-       if(y->d.s != SGC_RECENT)
++-         printf("[bad %d]",y);
++-       count++; f=y;
+++
+++      object n=tm->tm_free,o=tm->tm_alt_free,f=PHANTOM_FREELIST(tm->tm_free);
+++
+++      for (;n!=OBJNULL && o!=OBJNULL;)
+++     if (o!=OBJNULL && (n==OBJNULL || o<n)) {
+++       SET_LINK(f,o);
+++       f=o;
+++       o=OBJ_LINK(o);
+++     } else {
+++       SET_LINK(f,n);
+++       f=n;
+++       n=OBJ_LINK(n);
++      }
++-     
++-     count=0;
++-     if (f==tm->tm_alt_free)
++-       while(y= F_LINK(f)) {
++-         if(y->d.s != SGC_NORMAL)
++-           printf("[alt_bad %d]",y);
++-         count++; f=y;
++-       }
++-     
++-#endif
++-     f=tm->tm_free;
++-     while((y= (object) F_LINK(f))!=OBJNULL)
++-       f=y;
++-     F_LINK(f)= (long)(tm->tm_alt_free);
++-      }
++-      /* tm->tm_free has all of the free objects */
+++      SET_LINK(f,OBJNULL);
+++      tm->tm_tail=f;
++       tm->tm_nfree += tm->tm_alt_nfree;
++       tm->tm_alt_nfree = 0;
++       tm->tm_alt_free = OBJNULL;
++--- gcl-2.6.12.orig/o/structure.c
+++++ gcl-2.6.12/o/structure.c
++@@ -182,22 +182,19 @@ object
++ structure_to_list(object x)
++ {
++ 
++-     object *p, s;
++-     struct s_data *def=S_DATA(x->str.str_def);
++-     int i, n;
++-     
++-     s = def->slot_descriptions;
++-     vs_push(def->name);
++-     vs_push(Cnil);
++-     p = &vs_head;
++-     for (i=0, n=def->length;  !endp(s)&&i<n;  s=s->c.c_cdr, i++) {
++-             *p = make_cons(car(s->c.c_car), Cnil);
++-             p = &((*p)->c.c_cdr);
++-             *p = make_cons(structure_ref(x,x->str.str_def,i), Cnil);
++-             p = &((*p)->c.c_cdr);
++-     }
++-     stack_cons();
++-     return(vs_pop);
+++  object *p,s,v;
+++  struct s_data *def=S_DATA(x->str.str_def);
+++  int i,n;
+++
+++  s=def->slot_descriptions;
+++  for (p=&v,i=0,n=def->length;!endp(s)&&i<n;s=s->c.c_cdr,i++) {
+++    collect(p,make_cons(car(s->c.c_car),Cnil));
+++    collect(p,make_cons(structure_ref(x,x->str.str_def,i),Cnil));
+++  }
+++  *p=Cnil;
+++
+++  return make_cons(def->name,v);
+++
++ }
++ 
++ LFD(siLmake_structure)(void)
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -169,9 +169,8 @@ DEF_ORDINARY("DIRECTORY",sKdirectory,KEY
++ DEF_ORDINARY("LINK",sKlink,KEYWORD,"");
++ DEF_ORDINARY("FILE",sKfile,KEYWORD,"");
++ 
++-DEFUNM_NEW("STAT",object,fSstat,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++-
++-  struct stat ss;
+++static int
+++stat_internal(object x,struct stat *ssp) {
++ 
++   if (type_of(x)==t_string) {
++ 
++@@ -180,19 +179,43 @@ DEFUNM_NEW("STAT",object,fSstat,SI,1,1,N
++ #ifdef __MINGW32__
++     {char *p=FN1+strlen(FN1)-1;for (;p>FN1 && *p=='/';p--) *p=0;}
++ #endif
++-    if (lstat(FN1,&ss))
++-      RETURN1(Cnil);
+++    if (lstat(FN1,ssp))
+++      return 0;
++   } else if ((x=file_stream(x))!=Cnil&&x->sm.sm_fp) {
++-    if (fstat(fileno(x->sm.sm_fp),&ss))
++-      RETURN1(Cnil);
+++    if (fstat(fileno(x->sm.sm_fp),ssp))
+++      return 0;
++   } else
++-    RETURN1(Cnil);
+++    return 0;
+++  return 1;
+++}
+++
+++static object
+++stat_mode_key(struct stat *ssp) {
++ 
++-  RETURN4(S_ISDIR(ss.st_mode) ? sKdirectory :
++-       (S_ISLNK(ss.st_mode) ? sKlink : sKfile),
++-       make_fixnum(ss.st_size),
++-       make_fixnum(ss.st_mtime),
++-       make_fixnum(ss.st_uid));
+++  return S_ISDIR(ssp->st_mode) ? sKdirectory : (S_ISLNK(ssp->st_mode) ? sKlink : sKfile);
+++
+++}
+++
+++DEFUN_NEW("STAT1",object,fSstat1,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++
+++  struct stat ss;
+++
+++  RETURN1(stat_internal(x,&ss) ? stat_mode_key(&ss) : Cnil);
+++
+++}
+++
+++
+++DEFUNM_NEW("STAT",object,fSstat,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++
+++  struct stat ss;
+++
+++  if (stat_internal(x,&ss))
+++    RETURN4(stat_mode_key(&ss),
+++         make_fixnum(ss.st_size),
+++         make_fixnum(ss.st_mtime),
+++         make_fixnum(ss.st_uid));
+++  else
+++    RETURN1(Cnil);
++ 
++ }
++ 
++--- gcl-2.6.12.orig/o/wpool.c
+++++ gcl-2.6.12/o/wpool.c
++@@ -3,7 +3,7 @@
++ #define NO_PRELINK_UNEXEC_DIVERSION
++ char *rb_end=NULL,*rb_start=NULL,*heap_end=NULL;
++ void *data_start=NULL;
++-int use_pool=1;
+++int multiprocess_memory_pool=1;
++ 
++ #include "include.h"
++ #include "page.h"
++@@ -20,9 +20,9 @@ assert_error(const char *a,unsigned l,co
++ int
++ main(int argc,char * argv[],char * envp[]) {
++ 
++-  int s;
+++  int s=3;
++ 
++-  sscanf(argv[1],"%d",&s);
+++  if (argc>1) sscanf(argv[1],"%d",&s);
++   open_pool();
++   for (;;) {
++     lock_pool();
++--- gcl-2.6.12.orig/pcl/sys-proclaim.lisp
+++++ gcl-2.6.12/pcl/sys-proclaim.lisp
++@@ -2,402 +2,1009 @@
++ (COMMON-LISP::IN-PACKAGE "PCL") 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             PCL::NON-NEGATIVE-FIXNUM)
+++         PCL::CACHE-SIZE PCL::CACHE-MASK PCL::CACHE-NLINES
+++         PCL::CACHE-MAX-LOCATION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         PCL::COMPILE-LAMBDA-DEFERRED
+++         PCL::EARLY-SLOT-DEFINITION-LOCATION PCL::FGEN-SYSTEM
+++         PCL::EARLY-CLASS-PRECEDENCE-LIST PCL::MAKE-CLASS-EQ-PREDICATE
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS PCL::USE-CACHING-DFUN-P
+++         WALKER::GET-IMPLEMENTATION-DEPENDENT-WALKER-TEMPLATE
+++         PCL::SFUN-P PCL::INTERN-EQL-SPECIALIZER
+++         PCL::ACCESSOR-DFUN-INFO-P WALKER::ENV-WALK-FORM
+++         PCL::ARG-INFO-NUMBER-OPTIONAL PCL::TWO-CLASS-ACCESSOR-TYPE
+++         PCL::FREE-CACHE PCL::SHOW-DFUN-COSTS PCL::CHECKING-CACHE
+++         PCL::EARLY-GF-P PCL::EARLY-COLLECT-CPL PCL::NO-METHODS-CACHE
+++         PCL::EXTRACT-PARAMETERS PCL::DEFAULT-CONSTANTP
+++         PCL::PARSE-SPECIALIZERS
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-NIL-FUNCTION
+++         PCL::DFUN-INFO-P PCL::CLASS-PRECEDENCE-DESCRIPTION-P
+++         PCL::%FBOUNDP PCL::ONE-INDEX-DFUN-INFO-INDEX
+++         PCL::ONE-CLASS-CACHE PCL::DEFAULT-STRUCTURE-INSTANCE-P
+++         PCL::CONSTANT-VALUE-CACHE PCL::STRUCTURE-SVUC-METHOD
+++         PCL::CLASS-HAS-A-FORWARD-REFERENCED-SUPERCLASS-P
+++         PCL::METHODS-CONTAIN-EQL-SPECIALIZER-P
+++         PCL::STRUCTURE-SLOTD-WRITER-FUNCTION PCL::CCLOSUREP
+++         PCL::COUNT-DFUN PCL::COMPUTE-STD-CPL-PHASE-2
+++         PCL::EARLY-METHOD-STANDARD-ACCESSOR-SLOT-NAME
+++         PCL::EARLY-SLOT-DEFINITION-NAME PCL::MAP-SPECIALIZERS
+++         PCL::MAKE-CONSTANT-FUNCTION PCL::GF-PRECOMPUTE-DFUN-AND-EMF-P
+++         PCL::DEFAULT-TEST-CONVERTER
+++         PCL::PROCLAIM-INCOMPATIBLE-SUPERCLASSES PCL::TWO-CLASS-INDEX
+++         PCL::CACHE-P PCL::ARG-INFO-PRECEDENCE
+++         PCL::STRUCTURE-SLOTD-INIT-FORM PCL::INITIAL-P
+++         PCL::EXTRACT-REQUIRED-PARAMETERS PCL::%STD-INSTANCE-WRAPPER
+++         PCL::FUNCTION-PRETTY-ARGLIST PCL::INTERN-FUNCTION-NAME
+++         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITARGS-FORM-LIST
+++         PCL::FLUSH-CACHE-VECTOR-INTERNAL PCL::TWO-CLASS-P
+++         PCL::CHECK-CACHE PCL::RESET-INITIALIZE-INFO
+++         PCL::ONE-INDEX-DFUN-INFO-P PCL::LEGAL-CLASS-NAME-P
+++         PCL::UPDATE-PV-TABLE-CACHE-INFO
+++         PCL::RESET-CLASS-INITIALIZE-INFO PCL::DISPATCH-P
+++         PCL::%STD-INSTANCE-SLOTS PCL::SETFBOUNDP PCL::LOOKUP-FGEN
+++         PCL::MAKE-INITFUNCTION PCL::FORCE-CACHE-FLUSHES
+++         PCL::COMPLICATED-INSTANCE-CREATION-METHOD
+++         PCL::NET-TEST-CONVERTER WALKER::ENV-DECLARATIONS
+++         SYSTEM::%STRUCTURE-NAME PCL::GMAKUNBOUND PCL::TWO-CLASS-CACHE
+++         PCL::STRUCTURE-TYPE PCL::CPD-CLASS PCL::CPD-AFTER
+++         PCL::FAST-METHOD-CALL-P PCL::FGEN-GENERATOR-LAMBDA
+++         PCL::CHECKING-FUNCTION PCL::DEFAULT-CONSTANT-CONVERTER
+++         PCL::BUILT-IN-OR-STRUCTURE-WRAPPER1
+++         PCL::GET-MAKE-INSTANCE-FUNCTION-SYMBOL PCL::EARLY-METHOD-CLASS
+++         PCL::BUILT-IN-WRAPPER-OF PCL::EXPAND-SHORT-DEFCOMBIN
+++         PCL::WRAPPER-OF
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
+++         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-T-FUNCTION
+++         PCL::PV-TABLEP PCL::EARLY-CLASS-NAME-OF
+++         PCL::GET-MAKE-INSTANCE-FUNCTION PCL::ARG-INFO-KEY/REST-P
+++         PCL::MAKE-EQL-PREDICATE PCL::STRUCTURE-SLOTD-READER-FUNCTION
+++         PCL::CACHING-DFUN-INFO PCL::GF-INFO-SIMPLE-ACCESSOR-TYPE
+++         PCL::N-N-ACCESSOR-TYPE PCL::FAST-METHOD-CALL-PV-CELL
+++         PCL::MAKE-STRUCTURE-SLOT-BOUNDP-FUNCTION
+++         PCL::EXTRACT-SPECIALIZER-NAMES PCL::MAKE-TYPE-PREDICATE
+++         PCL::GET-CACHE-VECTOR PCL::SORT-SLOTS
+++         PCL::DEFAULT-STRUCTURE-TYPE SYSTEM::%COMPILED-FUNCTION-NAME
+++         PCL::DO-STANDARD-DEFSETFS-FOR-DEFCLASS WALKER::ENV-LOCK
+++         PCL::ONE-INDEX-DFUN-INFO-CACHE PCL::ONE-INDEX-P
+++         PCL::METHOD-FUNCTION-FROM-FAST-FUNCTION
+++         PCL::STANDARD-SVUC-METHOD PCL::MAKE-FUNCTION-INLINE
+++         PCL::ALLOCATE-CACHE-VECTOR PCL::SLOT-BOUNDP-SYMBOL
+++         PCL::METHOD-CALL-P PCL::STD-INSTANCE-P
+++         PCL::GET-BUILT-IN-WRAPPER-SYMBOL PCL::FUNCALLABLE-INSTANCE-P
+++         PCL::ECD-CANONICAL-SLOTS PCL::GET-BUILT-IN-CLASS-SYMBOL
+++         PCL::FREE-CACHE-VECTOR PCL::GF-INFO-STATIC-C-A-M-EMF
+++         PCL::EARLY-GF-NAME PCL::UPDATE-CLASS-CAN-PRECEDE-P
+++         PCL::USE-DEFAULT-METHOD-ONLY-DFUN-P
+++         PCL::ACCESSOR-DFUN-INFO-CACHE PCL::ARG-INFO-VALID-P
+++         PCL::ONE-CLASS-INDEX WALKER::GET-WALKER-TEMPLATE
+++         PCL::GFS-OF-TYPE PCL::N-N-P PCL::METHOD-CALL-CALL-METHOD-ARGS
+++         PCL::BOOTSTRAP-CLASS-PREDICATES PCL::MAKE-INITIAL-DFUN
+++         PCL::ONE-CLASS-WRAPPER0 PCL::ECD-OTHER-INITARGS
+++         PCL::TWO-CLASS-WRAPPER1 PCL::MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::FUNCTION-RETURNING-T PCL::STRUCTURE-SLOTD-TYPE
+++         PCL::ARG-INFO-APPLYP PCL::ECD-SUPERCLASS-NAMES
+++         PCL::EARLY-ACCESSOR-METHOD-SLOT-NAME
+++         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION
+++         PCL::FGEN-GENSYMS PCL::EARLY-METHOD-STANDARD-ACCESSOR-P
+++         PCL::DEFAULT-METHOD-ONLY-CACHE WALKER::ENV-LEXICAL-VARIABLES
+++         PCL::ECD-CLASS-NAME PCL::GET-MAKE-INSTANCE-FUNCTIONS
+++         PCL::EARLY-CLASS-DEFINITION PCL::ECD-METACLASS
+++         PCL::UNDEFMETHOD-1 PCL::MAKE-CALL-METHODS
+++         PCL::METHOD-LL->GENERIC-FUNCTION-LL PCL::SORT-CALLS
+++         ITERATE::VARIABLES-FROM-LET PCL::GF-LAMBDA-LIST
+++         PCL::INITIALIZE-INFO-KEY PCL::EARLY-CLASS-DIRECT-SUBCLASSES
+++         PCL::ACCESSOR-DFUN-INFO-ACCESSOR-TYPE
+++         PCL::MAKE-PERMUTATION-VECTOR PCL::EXTRACT-LAMBDA-LIST
+++         PCL::CONSTANT-VALUE-DFUN-INFO PCL::DNET-METHODS-P
+++         PCL::STRUCTURE-TYPE-INCLUDED-TYPE-NAME
+++         PCL::UPDATE-GFS-OF-CLASS PCL::SLOT-VECTOR-SYMBOL
+++         PCL::COMPUTE-MCASE-PARAMETERS PCL::GBOUNDP
+++         PCL::SLOT-INITARGS-FROM-STRUCTURE-SLOTD PCL::CONSTANT-SYMBOL-P
+++         PCL::CPD-SUPERS PCL::DEFAULT-METHOD-ONLY-P
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::CACHE-OWNER PCL::FAST-INSTANCE-BOUNDP-P
+++         PCL::INITIALIZE-INFO-WRAPPER
+++         PCL::INITIALIZE-INFO-CACHED-VALID-P PCL::EVAL-FORM
+++         PCL::DEFAULT-STRUCTUREP PCL::FUNCTION-RETURNING-NIL
+++         PCL::ONE-CLASS-P PCL::ARG-INFO-KEYWORDS
+++         PCL::EARLY-CLASS-SLOTDS PCL::GET-PV-CELL-FOR-CLASS
+++         PCL::ONE-CLASS-ACCESSOR-TYPE PCL::GENERIC-CLOBBERS-FUNCTION
+++         PCL::DFUN-INFO-CACHE PCL::MAKE-PV-TABLE-TYPE-DECLARATION
+++         PCL::RESET-CLASS-INITIALIZE-INFO-1 PCL::CLASS-FROM-TYPE
+++         PCL::FTYPE-DECLARATION-FROM-LAMBDA-LIST
+++         PCL::EARLY-METHOD-LAMBDA-LIST
+++         PCL::EARLY-COLLECT-DEFAULT-INITARGS
+++         PCL::COMPILE-LAMBDA-UNCOMPILED
+++         PCL::INITIALIZE-INFO-CACHED-RI-VALID-P PCL::STRUCTURE-TYPE-P
+++         PCL::%SYMBOL-FUNCTION PCL::MAKE-CALLS-TYPE-DECLARATION
+++         PCL::SLOT-READER-SYMBOL PCL::KEYWORD-SPEC-NAME
+++         PCL::FIND-CYCLE-REASONS PCL::UPDATE-ALL-C-A-M-GF-INFO
+++         PCL::INITIALIZE-INFO-P
+++         PCL::METHOD-FUNCTION-NEEDS-NEXT-METHODS-P
+++         PCL::INITIAL-DISPATCH-CACHE PCL::CACHING-CACHE
+++         PCL::INFORM-TYPE-SYSTEM-ABOUT-STD-CLASS
+++         PCL::INITIALIZE-INFO-CACHED-INITARGS-FORM-LIST
+++         PCL::STRUCTURE-TYPE-INTERNAL-SLOTDS PCL::CONSTANT-VALUE-P
+++         PCL::FAST-METHOD-CALL-NEXT-METHOD-CALL PCL::EARLY-CLASS-SLOTS
+++         PCL::UPDATE-C-A-M-GF-INFO PCL::GDEFINITION
+++         PCL::ARG-INFO-LAMBDA-LIST PCL::STRUCTURE-SLOTD-ACCESSOR-SYMBOL
+++         PCL::DEFAULT-SECONDARY-DISPATCH-FUNCTION
+++         PCL::MAKE-PV-TYPE-DECLARATION
+++         PCL::COMPUTE-APPLICABLE-METHODS-EMF-STD-P PCL::DISPATCH-CACHE
+++         PCL::ONE-INDEX-ACCESSOR-TYPE
+++         PCL::INITIALIZE-INFO-CACHED-CONSTANTS PCL::NO-METHODS-P
+++         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITIALIZE-FUNCTION
+++         PCL::CACHING-DFUN-COST PCL::ONE-INDEX-DFUN-INFO-ACCESSOR-TYPE
+++         PCL::COMPUTE-CLASS-SLOTS PCL::UPDATE-GF-SIMPLE-ACCESSOR-TYPE
+++         PCL::GF-INFO-FAST-MF-P PCL::GF-INFO-C-A-M-EMF-STD-P
+++         PCL::FGEN-TEST PCL::STRUCTURE-SLOTD-NAME PCL::CLASS-PREDICATE
+++         PCL::STRUCTURE-SLOT-BOUNDP PCL::EARLY-CLASS-NAME
+++         PCL::LIST-LARGE-CACHE PCL::ONE-INDEX-CACHE
+++         PCL::SYMBOL-PKG-NAME PCL::INITIAL-CACHE
+++         PCL::UNENCAPSULATED-FDEFINITION PCL::STORE-FGEN
+++         PCL::FINAL-ACCESSOR-DFUN-TYPE
+++         PCL::INITIALIZE-INFO-CACHED-NEW-KEYS PCL::TYPE-CLASS
+++         PCL::%CCLOSURE-ENV PCL::INITIALIZE-INFO-BOUND-SLOTS
+++         PCL::GF-DFUN-CACHE PCL::EXPAND-LONG-DEFCOMBIN
+++         PCL::FGEN-GENERATOR PCL::DFUN-ARG-SYMBOL
+++         PCL::STRUCTURE-TYPE-SLOT-DESCRIPTION-LIST
+++         PCL::EARLY-METHOD-QUALIFIERS
+++         WALKER::VARIABLE-GLOBALLY-SPECIAL-P COMMON-LISP::CLASS-OF
+++         PCL::INITIALIZE-INFO-CACHED-DEFAULT-INITARGS-FUNCTION
+++         PCL::GET-SETF-FUNCTION-NAME PCL::ARG-INFO-P
+++         WALKER::ENV-WALK-FUNCTION PCL::LIST-DFUN
+++         PCL::CHECK-WRAPPER-VALIDITY PCL::ARG-INFO-METATYPES
+++         PCL::EXPAND-MAKE-INSTANCE-FORM PCL::STRUCTURE-OBJECT-P
+++         PCL::COMPUTE-LINE-SIZE PCL::CANONICAL-SLOT-NAME
+++         PCL::INITIAL-DISPATCH-P PCL::NEXT-WRAPPER-FIELD
+++         PCL::WRAPPER-FIELD PCL::WRAPPER-FOR-STRUCTURE
+++         PCL::METHOD-FUNCTION-PV-TABLE PCL::COPY-CACHE PCL::ECD-SOURCE
+++         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::UNPARSE-SPECIALIZERS PCL::CHECKING-P
+++         PCL::FORMAT-CYCLE-REASONS PCL::N-N-CACHE
+++         PCL::MAKE-DEFAULT-METHOD-GROUP-DESCRIPTION
+++         PCL::MAP-ALL-GENERIC-FUNCTIONS PCL::METHOD-FUNCTION-METHOD
+++         PCL::UPDATE-GF-INFO PCL::ARG-INFO-NKEYS
+++         PCL::TWO-CLASS-WRAPPER0 PCL::GF-DFUN-INFO PCL::ONE-INDEX-INDEX
+++         PCL::EARLY-COLLECT-SLOTS PCL::CACHING-P
+++         PCL::METHOD-FUNCTION-PLIST PCL::SLOT-WRITER-SYMBOL
+++         PCL::FAST-METHOD-CALL-ARG-INFO PCL::INTERNED-SYMBOL-P
+++         ITERATE::SEQUENCE-ACCESSOR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         PCL::LIST-LARGE-CACHES
+++         PCL::UPDATE-MAKE-INSTANCE-FUNCTION-TABLE PCL::UNTRACE-METHOD
+++         COMMON-LISP::INVALID-METHOD-ERROR
+++         COMMON-LISP::METHOD-COMBINATION-ERROR)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         PCL::|__si::MAKE-CLASS-PRECEDENCE-DESCRIPTION|
+++         PCL::|__si::MAKE-TWO-CLASS| PCL::FALSE PCL::MAKE-PV-TABLE
+++         PCL::|__si::MAKE-DISPATCH| PCL::MAKE-INITIALIZE-INFO
+++         PCL::|__si::MAKE-PV-TABLE| PCL::MAKE-FAST-INSTANCE-BOUNDP
+++         PCL::|__si::MAKE-DEFAULT-METHOD-ONLY|
+++         WALKER::UNBOUND-LEXICAL-FUNCTION
+++         PCL::|__si::MAKE-ACCESSOR-DFUN-INFO| PCL::|__si::MAKE-N-N|
+++         PCL::USE-PACKAGE-PCL PCL::|__si::MAKE-CHECKING|
+++         PCL::|STRUCTURE-OBJECT class constructor|
+++         PCL::|__si::MAKE-CONSTANT-VALUE|
+++         PCL::CALLED-FIN-WITHOUT-FUNCTION PCL::|__si::MAKE-INITIAL|
+++         PCL::|__si::MAKE-CACHE| PCL::|__si::MAKE-ONE-INDEX|
+++         PCL::MAKE-PROGN PCL::TRUE PCL::MAKE-FAST-METHOD-CALL
+++         PCL::|__si::MAKE-ARG-INFO| PCL::INTERN-PV-TABLE
+++         PCL::|__si::MAKE-DFUN-INFO| PCL::|__si::MAKE-STD-INSTANCE|
+++         PCL::|__si::MAKE-CACHING| PCL::|__si::MAKE-ONE-CLASS|
+++         PCL::PV-WRAPPERS-FROM-PV-ARGS PCL::ZERO
+++         PCL::|__si::MAKE-INITIAL-DISPATCH|
+++         PCL::|__si::MAKE-NO-METHODS| PCL::STRING-APPEND
+++         PCL::|__si::MAKE-ONE-INDEX-DFUN-INFO| PCL::MAKE-METHOD-CALL
+++         PCL::FIX-EARLY-GENERIC-FUNCTIONS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         PCL::METHOD-PROTOTYPE-FOR-GF PCL::SPECIALIZER-FROM-TYPE
+++         PCL::EMIT-ONE-INDEX-WRITERS PCL::*NORMALIZE-TYPE
+++         PCL::COMPUTE-APPLICABLE-METHODS-EMF PCL::ANALYZE-LAMBDA-LIST
+++         PCL::PARSE-DEFMETHOD PCL::GET-DISPATCH-FUNCTION
+++         PCL::PROTOTYPES-FOR-MAKE-METHOD-LAMBDA
+++         PCL::EMIT-CONSTANT-VALUE PCL::FIND-WRAPPER
+++         PCL::MAKE-FINAL-DISPATCH-DFUN PCL::EARLY-COLLECT-INHERITANCE
+++         PCL::GENERIC-FUNCTION-NAME-P PCL::EMIT-TWO-CLASS-READER
+++         PCL::PARSE-METHOD-GROUP-SPECIFIER PCL::EMIT-ONE-CLASS-READER
+++         PCL::FIND-STRUCTURE-CLASS PCL::EMIT-TWO-CLASS-WRITER
+++         PCL::CONVERT-TO-SYSTEM-TYPE PCL::TYPE-FROM-SPECIALIZER
+++         PCL::EMIT-ONE-CLASS-WRITER PCL::EARLY-METHOD-FUNCTION
+++         PCL::MAKE-DISPATCH-DFUN PCL::NET-CODE-CONVERTER
+++         PCL::GET-GENERIC-FUNCTION-INFO PCL::DEFAULT-CODE-CONVERTER
+++         PCL::COMPILE-IIS-FUNCTIONS PCL::EMIT-ONE-INDEX-READERS
+++         PCL::STRUCTURE-WRAPPER PCL::CLASS-EQ-TYPE
+++         PCL::EMIT-IN-CHECKING-CACHE-P PCL::PCL-DESCRIBE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         PCL::%CCLOSURE-ENV-NTHCDR)) 
+++         ITERATE::RENAME-AND-CAPTURE-VARIABLES
+++         PCL::|(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
+++         WALKER::WALK-PROG PCL::INVALIDATE-WRAPPER
+++         PCL::COMPUTE-PRECEDENCE
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
+++         WALKER::WALK-LAMBDA PCL::STANDARD-COMPUTE-EFFECTIVE-METHOD
+++         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
+++         WALKER::WALK-MULTIPLE-VALUE-BIND
+++         PCL::|(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
+++         PCL::|(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
+++         PCL::NOTE-PV-TABLE-REFERENCE
+++         PCL::|(FAST-METHOD CLASS-PREDICATE-NAME (T))|
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
+++         WALKER::WALK-MULTIPLE-VALUE-SETQ PCL::CONVERT-TABLE
+++         WALKER::WALK-LET
+++         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
+++         PCL::|(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
+++         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
+++         PCL::SKIP-FAST-SLOT-ACCESS-P
+++         PCL::|(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
+++         PCL::OPTIMIZE-SLOT-BOUNDP PCL::TRACE-EMF-CALL-INTERNAL
+++         ITERATE::SIMPLE-EXPAND-GATHERING-FORM
+++         PCL::MAKE-OPTIMIZED-STD-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         WALKER::WALK-FLET PCL::ONE-CLASS-DFUN-INFO
+++         WALKER::WALK-COMPILER-LET
+++         PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
+++         PCL::FIRST-FORM-TO-LISP WALKER::WALK-DO*
+++         PCL::|(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
+++         PCL::|(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
+++         PCL::PRINT-STD-INSTANCE
+++         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++         WALKER::WALK-MACROLET PCL::GET-FUNCTION-GENERATOR
+++         PCL::INITIALIZE-INTERNAL-SLOT-GFS*
+++         PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
+++         PCL::COMPUTE-EFFECTIVE-METHOD PCL::EXPAND-DEFGENERIC
+++         PCL::OBSOLETE-INSTANCE-TRAP WALKER::WALK-TAGBODY-1
+++         PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL
+++         PCL::GET-NEW-FUNCTION-GENERATOR PCL::SORT-METHODS
+++          WALKER::WALK-DO PCL::MAKE-DFUN-CALL
+++         PCL::OPTIMIZE-GF-CALL-INTERNAL
+++         PCL::|(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
+++         PCL::OPTIMIZE-SET-SLOT-VALUE
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
+++         PCL::ENTRY-IN-CACHE-P
+++         PCL::|(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
+++         WALKER::WALK-IF PCL::MAKE-METHOD-SPEC PCL::SET-FUNCTION-NAME-1
+++         WALKER::WALK-SETQ
+++         PCL::|(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
+++         PCL::|(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
+++         PCL::DECLARE-STRUCTURE PCL::EMIT-BOUNDP-CHECK
+++         WALKER::WALK-LOCALLY
+++         PCL::MAKE-OPTIMIZED-STD-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
+++         PCL::CAN-OPTIMIZE-ACCESS PCL::|SETF PCL PLIST-VALUE|
+++         WALKER::WALK-LABELS PCL::EMIT-1-T-DLAP
+++         PCL::|(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
+++         PCL::SORT-APPLICABLE-METHODS
+++         PCL::|(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++         WALKER::WALK-NAMED-LAMBDA ITERATE::OPTIMIZE-ITERATE-FORM
+++         PCL::MAP-ALL-ORDERS
+++         PCL::|(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
+++         ITERATE::OPTIMIZE-GATHERING-FORM
+++         PCL::|(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
+++         PCL::ONE-INDEX-DFUN-INFO
+++         PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
+++         PCL::FLUSH-CACHE-TRAP WALKER::WALK-PROG*
+++         ITERATE::VARIABLE-SAME-P PCL::EMIT-SLOT-READ-FORM
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
+++         PCL::EMIT-GREATER-THAN-1-DLAP
+++         PCL::|(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
+++         PCL::WRAP-METHOD-GROUP-SPECIFIER-BINDINGS WALKER::WALK-LET*
+++         WALKER::WALK-SYMBOL-MACROLET WALKER::VARIABLE-DECLARATION
+++         PCL::|(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
+++         WALKER::RECONS
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
+++         PCL::OPTIMIZE-SLOT-VALUE WALKER::RELIST-INTERNAL
+++         PCL::MAKE-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
+++         PCL::|SETF PCL METHOD-FUNCTION-GET| WALKER::WALK-TAGBODY
+++         WALKER::WITH-AUGMENTED-ENVIRONMENT-INTERNAL
+++         PCL::|(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
+++         PCL::PRINT-CACHE PCL::MAKE-TOP-LEVEL-FORM
+++         PCL::FIX-SLOT-ACCESSORS WALKER::WALK-UNEXPECTED-DECLARE
+++         PCL::SKIP-OPTIMIZE-SLOT-VALUE-BY-CLASS-P
+++         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::FIXNUM)
++-         PCL::GET-WRAPPER-CACHE-NUMBER)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::GET-DECLARATION
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE
+++         PCL::EXPAND-EFFECTIVE-METHOD-FUNCTION
+++         PCL::GET-METHOD-FUNCTION-PV-CELL
+++         PCL::NAMED-OBJECT-PRINT-FUNCTION
+++         PCL::FIND-CLASS-PREDICATE-FROM-CELL
+++         PCL::GET-EFFECTIVE-METHOD-FUNCTION1 PCL::RECORD-DEFINITION
+++         PCL::PROBE-CACHE PCL::INITIALIZE-INFO PCL::EMIT-MISS
+++         PCL::REAL-ENSURE-GF-USING-CLASS--GENERIC-FUNCTION
+++         PCL::FIND-CLASS-FROM-CELL PCL::PRECOMPUTE-EFFECTIVE-METHODS
+++         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION1
+++         PCL::METHOD-FUNCTION-GET PCL::MAP-CACHE
+++         WALKER::CONVERT-MACRO-TO-LAMBDA PCL::MAKE-EMF-FROM-METHOD
+++         PCL::ENSURE-GENERIC-FUNCTION-USING-CLASS
+++         PCL::REAL-ENSURE-GF-USING-CLASS--NULL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             PCL::NON-NEGATIVE-FIXNUM)
++-         PCL::CACHE-NLINES PCL::CACHE-MASK PCL::CACHE-SIZE
++-         PCL::CACHE-MAX-LOCATION)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-INTERNAL
+++         PCL::BOOTSTRAP-SET-SLOT
+++         PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
+++         PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (T T))|
+++         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++         WALKER::WALK-TEMPLATE
+++         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
+++         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
+++         PCL::OPTIMIZE-WRITER
+++         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD DOCUMENTATION (T))|
+++         PCL::|(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
+++         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION1
+++         PCL::|(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
+++         PCL::LOAD-PRECOMPILED-IIS-ENTRY PCL::ADJUST-CACHE
+++         WALKER::WALK-PROG/PROG*
+++         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
+++         PCL::|(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
+++         PCL::OPTIMIZE-READER
+++         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++         PCL::|(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
+++         WALKER::WALK-BINDINGS-2 PCL::MEMF-TEST-CONVERTER
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
+++         PCL::|(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++         PCL::LOAD-PRECOMPILED-DFUN-CONSTRUCTOR
+++         PCL::|(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
+++         PCL::|(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
+++         PCL::MAKE-DISPATCH-LAMBDA
+++         PCL::|(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
+++         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++         PCL::|(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++         WALKER::WALK-DO/DO* PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-TYPE
+++         PCL::|(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
+++         PCL::GET-WRAPPERS-FROM-CLASSES
+++         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
+++         PCL::EXPAND-CACHE
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
+++         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
+++         PCL::EXPAND-SYMBOL-MACROLET-INTERNAL
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
+++         PCL::|(FAST-METHOD MAKE-INSTANCE (CLASS))|
+++         WALKER::WALK-LET/LET*
+++         PCL::|(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
+++         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (CLASS T))|
+++         PCL::|(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
+++         PCL::EXPAND-DEFCLASS PCL::INITIALIZE-INSTANCE-SIMPLE
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
+++         PCL::|(FAST-METHOD DOCUMENTATION (DOCUMENTATION-MIXIN))|
+++         PCL::MAYBE-EXPAND-ACCESSOR-FORM
+++         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
+++         PCL::FILL-CACHE-P
+++         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
+++         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
+++         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION-PRELIMINARY
+++         PCL::TWO-CLASS-DFUN-INFO)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             COMMON-LISP::SIMPLE-VECTOR)
++-         PCL::CACHE-VECTOR)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::EXPAND-EMF-CALL-METHOD
+++         PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
+++         PCL::BOOTSTRAP-MAKE-SLOT-DEFINITIONS
+++         PCL::|(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
+++         PCL::MAKE-INSTANCE-FUNCTION-COMPLEX
+++         PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
+++         PCL::UPDATE-SLOTS-IN-PV
+++         PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SLOT-UNBOUND (T T T))|
+++         PCL::MAKE-PARAMETER-REFERENCES
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS1
+++         PCL::OPTIMIZE-INSTANCE-ACCESS PCL::OPTIMIZE-ACCESSOR-CALL
+++         PCL::OPTIMIZE-GENERIC-FUNCTION-CALL
+++         PCL::REAL-MAKE-METHOD-INITARGS-FORM
+++         PCL::|(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
+++         PCL::|(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
+++         PCL::COMPUTE-PV-SLOT PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL1
+++         PCL::LOAD-FUNCTION-GENERATOR
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
+++         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::GET-MAKE-INSTANCE-FUNCTION-INTERNAL
+++         PCL::|(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T T))|
+++         PCL::MAKE-FINAL-ORDINARY-DFUN-INTERNAL
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
+++         WALKER::WALK-BINDINGS-1 PCL::MAKE-INSTANCE-FUNCTION-SIMPLE
+++         PCL::MAKE-FGEN WALKER::WALK-TEMPLATE-HANDLE-REPEAT
+++         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
+++         PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::MAKE-EMF-CACHE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::BOOTSTRAP-INITIALIZE-CLASS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::REAL-LOAD-DEFCLASS PCL::LOAD-DEFCLASS
+++         PCL::OPTIMIZE-GF-CALL PCL::MAKE-EARLY-CLASS-DEFINITION
+++         WALKER::WALK-TEMPLATE-HANDLE-REPEAT-1 PCL::EMIT-SLOT-ACCESS
+++         PCL::BOOTSTRAP-MAKE-SLOT-DEFINITION
+++         PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::SET-ARG-INFO1)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::FILL-CACHE PCL::REAL-GET-METHOD PCL::MAKE-EMF-CALL
+++         PCL::EMIT-FETCH-WRAPPER PCL::CHECK-INITARGS-1
+++         PCL::CAN-OPTIMIZE-ACCESS1 PCL::CHECK-INITARGS-2-PLIST
+++         PCL::CHECK-INITARGS-2-LIST WALKER::WALK-ARGLIST
+++         PCL::GET-METHOD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::GET-SECONDARY-DISPATCH-FUNCTION1 PCL::EMIT-DLAP)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::FILL-DFUN-CACHE PCL::EARLY-ADD-NAMED-METHOD
+++         PCL::REAL-ADD-NAMED-METHOD)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::*)
++-         PCL::ACCESSOR-VALUES-INTERNAL
+++         PCL::ACCESSOR-VALUES1 PCL::CHECK-METHOD-ARG-INFO
+++         PCL::EMIT-READER/WRITER PCL::OPTIMIZE-SLOT-VALUE-BY-CLASS-P
+++         PCL::|(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
+++         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER-FUNCTION
+++         PCL::CACHE-MISS-VALUES
+++         PCL::GET-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::MAKE-FINAL-CACHING-DFUN
++          PCL::MAKE-OPTIMIZED-STD-READER-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
+++         PCL::MAKE-FINAL-CONSTANT-VALUE-DFUN
+++         PCL::|(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
++          PCL::|(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
++-         PCL::MAKE-FINAL-N-N-ACCESSOR-DFUN
++-         PCL::|(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
++-         PCL::CHECK-METHOD-ARG-INFO
++-         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
++-         PCL::GET-OPTIMIZED-STD-ACCESSOR-METHOD-FUNCTION
++-         PCL::GET-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::|(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
+++         PCL::ACCESSOR-VALUES-INTERNAL ITERATE::EXPAND-INTO-LET
++          PCL::MAKE-OPTIMIZED-STD-BOUNDP-METHOD-FUNCTION
++-         PCL::OPTIMIZE-SLOT-VALUE-BY-CLASS-P
++-         ITERATE::WALK-GATHERING-BODY
+++         PCL::CONSTANT-VALUE-MISS
+++         PCL::GET-OPTIMIZED-STD-ACCESSOR-METHOD-FUNCTION
+++         WALKER::WALK-LET-IF ITERATE::WALK-GATHERING-BODY
++          PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER
++-         PCL::|(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
++-         PCL::SLOT-BOUNDP-USING-CLASS-DFUN WALKER::WALK-FORM-INTERNAL
++-         PCL::LOAD-LONG-DEFCOMBIN PCL::MAKE-FINAL-CACHING-DFUN
++-         PCL::EMIT-READER/WRITER
++-         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER-FUNCTION
++-         PCL::SLOT-VALUE-USING-CLASS-DFUN PCL::CACHING-MISS
++-         PCL::|(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
++-         PCL::EMIT-READER/WRITER-FUNCTION PCL::ACCESSOR-VALUES1
++-         PCL::GENERATING-LISP PCL::GET-CLASS-SLOT-VALUE-1
++-         PCL::MAKE-FINAL-CONSTANT-VALUE-DFUN PCL::CACHE-MISS-VALUES
++-         WALKER::WALK-LET-IF
++          PCL::|(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
++-         PCL::|(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
++-         PCL::CHECKING-MISS ITERATE::EXPAND-INTO-LET
+++         PCL::CHECKING-MISS PCL::MAKE-FINAL-N-N-ACCESSOR-DFUN
+++         PCL::GENERATING-LISP ITERATE::RENAME-VARIABLES
+++         PCL::|(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
+++         PCL::CONVERT-METHODS PCL::SLOT-VALUE-USING-CLASS-DFUN
+++         PCL::EMIT-READER/WRITER-FUNCTION
+++         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
+++         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
+++         PCL::CACHING-MISS
++          PCL::MAKE-OPTIMIZED-STD-WRITER-METHOD-FUNCTION
++-         PCL::CONSTANT-VALUE-MISS ITERATE::RENAME-VARIABLES
++-         PCL::|(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
+++         PCL::GET-CLASS-SLOT-VALUE-1 WALKER::WALK-FORM-INTERNAL
+++         PCL::SLOT-BOUNDP-USING-CLASS-DFUN PCL::LOAD-LONG-DEFCOMBIN
+++         PCL::|(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
+++         PCL::|(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
++          PCL::SET-SLOT-VALUE
++-         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
++-         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
++          PCL::|(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
++-         PCL::CONVERT-METHODS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::|(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
++-         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
++-         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::|(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
++-         PCL::|(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
++-         PCL::MAKE-TWO-CLASS-ACCESSOR-DFUN
++-         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
++-         PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
++-         PCL::ADD-METHOD-DECLARATIONS
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
++-         PCL::WALK-METHOD-LAMBDA
++-         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO-INTERNAL
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|)) 
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++              COMMON-LISP::*)
++-         PCL::GET-ACCESSOR-METHOD-FUNCTION
++-         PCL::|(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
+++         PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
+++         PCL::ORDER-SPECIALIZERS
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
+++         PCL::EMIT-CHECKING-OR-CACHING
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
++          PCL::|(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
+++         PCL::GENERATE-DISCRIMINATION-NET
+++         PCL::|(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++          PCL::|(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
++-         PCL::MAKE-ONE-CLASS-ACCESSOR-DFUN
+++         PCL::|(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::GET-ACCESSOR-METHOD-FUNCTION
++          PCL::|(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
++-         PCL::GENERATE-DISCRIMINATION-NET
++          PCL::|(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
++-         PCL::LOAD-SHORT-DEFCOMBIN
++-         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
++-         PCL::|(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
++-         PCL::REAL-MAKE-METHOD-LAMBDA PCL::SET-CLASS-SLOT-VALUE-1
++-         PCL::BOOTSTRAP-ACCESSOR-DEFINITION
++          PCL::MAKE-FINAL-ONE-INDEX-ACCESSOR-DFUN
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
++-         PCL::ACCESSOR-MISS PCL::|(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
++-         PCL::ACCESSOR-VALUES
+++         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION PCL::ACCESSOR-MISS
+++         PCL::|(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
+++         PCL::LOAD-SHORT-DEFCOMBIN PCL::MAKE-FINAL-CHECKING-DFUN
+++         PCL::|(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
+++         PCL::MAKE-SHARED-INITIALIZE-FORM-LIST
++          PCL::|(FAST-METHOD DESCRIBE-OBJECT (T T))|
++-         PCL::|(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
++-         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION
++          PCL::INITIALIZE-INSTANCE-SIMPLE-FUNCTION
++-         PCL::MAKE-FINAL-CHECKING-DFUN
++-         PCL::MAKE-SHARED-INITIALIZE-FORM-LIST
++-         PCL::|(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
++-         PCL::EMIT-CHECKING-OR-CACHING
++-         PCL::|(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++-         PCL::|(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
++-         PCL::|(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
++          PCL::|(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
++-         PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN
+++         PCL::ACCESSOR-VALUES PCL::REAL-MAKE-METHOD-LAMBDA
+++         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITION
+++         PCL::|(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
+++         PCL::MAKE-ONE-CLASS-ACCESSOR-DFUN
++          PCL::GET-ACCESSOR-FROM-SVUC-METHOD-FUNCTION
++          PCL::|(FAST-METHOD NO-APPLICABLE-METHOD (T))|
++-         PCL::ORDER-SPECIALIZERS
++-         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
++-         PCL::|(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|)) 
+++         PCL::SET-CLASS-SLOT-VALUE-1)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::*)
++-         PCL::MAKE-N-N-ACCESSOR-DFUN
++-         PCL::GET-SIMPLE-INITIALIZATION-FUNCTION
++-         PCL::MAKE-FINAL-ACCESSOR-DFUN
++-         PCL::GET-EFFECTIVE-METHOD-FUNCTION PCL::MAKE-ACCESSOR-TABLE
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION PCL::MAKE-CHECKING-DFUN
++-         PCL::GET-COMPLEX-INITIALIZATION-FUNCTIONS
++-         PCL::MAKE-DEFAULT-INITARGS-FORM-LIST PCL::REAL-ADD-METHOD
++-         PCL::SLOT-VALUE-OR-DEFAULT PCL::LOAD-DEFGENERIC PCL::CPL-ERROR
++-         WALKER::NESTED-WALK-FORM PCL::TYPES-FROM-ARGUMENTS
++-         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION)) 
+++         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
+++         PCL::|(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
+++         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
+++         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::WALK-METHOD-LAMBDA
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
+++         PCL::COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO-INTERNAL
+++         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
+++         PCL::|(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
+++         PCL::MAKE-TWO-CLASS-ACCESSOR-DFUN
+++         PCL::|(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
+++         PCL::ADD-METHOD-DECLARATIONS
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::LIST)
+++         PCL::PV-TABLE-CALL-LIST PCL::CACHE-OVERFLOW
+++         PCL::PV-TABLE-SLOT-NAME-LISTS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::*)
++-         PCL::MAKE-LONG-METHOD-COMBINATION-FUNCTION
++-         PCL::GENERATE-DISCRIMINATION-NET-INTERNAL
++-         PCL::CACHE-MISS-VALUES-INTERNAL
++-         PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::DO-SHORT-METHOD-COMBINATION PCL::MEMF-CODE-CONVERTER)) 
+++         PCL::MAKE-DEFAULT-INITARGS-FORM-LIST
+++         PCL::GET-EFFECTIVE-METHOD-FUNCTION PCL::LOAD-DEFGENERIC
+++         PCL::GET-COMPLEX-INITIALIZATION-FUNCTIONS
+++         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION
+++         PCL::SLOT-VALUE-OR-DEFAULT PCL::MAKE-CHECKING-DFUN
+++         PCL::MAKE-FINAL-ACCESSOR-DFUN WALKER::NESTED-WALK-FORM
+++         PCL::MAKE-ACCESSOR-TABLE PCL::REAL-ADD-METHOD
+++         PCL::TYPES-FROM-ARGUMENTS
+++         PCL::GET-SIMPLE-INITIALIZATION-FUNCTION PCL::CPL-ERROR
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION
+++         PCL::MAKE-N-N-ACCESSOR-DFUN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::*)
++              COMMON-LISP::*)
++-         PCL::MAKE-ONE-INDEX-ACCESSOR-DFUN WALKER::WALK-DECLARATIONS
++-         PCL::GET-SECONDARY-DISPATCH-FUNCTION)) 
+++         PCL::REAL-MAKE-A-METHOD)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::|(FAST-METHOD SLOT-MISSING (T T T T))|
++-         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|
++-         ITERATE::ITERATE-TRANSFORM-BODY)) 
+++             COMMON-LISP::T)
+++         PCL::LOAD-DEFMETHOD-INTERNAL PCL::EXPAND-DEFMETHOD)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         ITERATE::RENAME-LET-BINDINGS
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE1)) 
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::EARLY-MAKE-A-METHOD PCL::LOAD-DEFMETHOD
+++         PCL::MAKE-DEFMETHOD-FORM PCL::MAKE-DEFMETHOD-FORM-INTERNAL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
+++                 COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::*)
++-         PCL::REAL-MAKE-A-METHOD)) 
++-(COMMON-LISP::MAPC
++-    (COMMON-LISP::LAMBDA (COMPILER::X)
++-      (COMMON-LISP::SETF
++-          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
++-          COMMON-LISP::T))
++-    '(PCL::REDEFINE-FUNCTION PCL::DO-STANDARD-DEFSETF-1
++-         PCL::TRACE-METHOD-INTERNAL PCL::FDEFINE-CAREFULLY)) 
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE1
+++         ITERATE::RENAME-LET-BINDINGS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
++-         PCL::ANALYZE-LAMBDA-LIST PCL::GET-DISPATCH-FUNCTION
++-         PCL::PARSE-DEFMETHOD PCL::MAKE-DISPATCH-DFUN
++-         PCL::EMIT-IN-CHECKING-CACHE-P PCL::EMIT-ONE-INDEX-READERS
++-         PCL::METHOD-PROTOTYPE-FOR-GF PCL::EMIT-ONE-CLASS-READER
++-         PCL::GENERIC-FUNCTION-NAME-P PCL::DEFAULT-CODE-CONVERTER
++-         PCL::CLASS-EQ-TYPE PCL::CONVERT-TO-SYSTEM-TYPE
++-         PCL::COMPILE-IIS-FUNCTIONS PCL::EMIT-CONSTANT-VALUE
++-         PCL::GET-GENERIC-FUNCTION-INFO PCL::EARLY-METHOD-FUNCTION
++-         PCL::FIND-STRUCTURE-CLASS PCL::PCL-DESCRIBE
++-         PCL::NET-CODE-CONVERTER PCL::PARSE-METHOD-GROUP-SPECIFIER
++-         PCL::TYPE-FROM-SPECIALIZER PCL::EMIT-TWO-CLASS-WRITER
++-         PCL::COMPUTE-APPLICABLE-METHODS-EMF PCL::EMIT-ONE-CLASS-WRITER
++-         PCL::PROTOTYPES-FOR-MAKE-METHOD-LAMBDA
++-         PCL::SPECIALIZER-FROM-TYPE PCL::EARLY-COLLECT-INHERITANCE
++-         PCL::EMIT-TWO-CLASS-READER PCL::FIND-WRAPPER
++-         PCL::*NORMALIZE-TYPE PCL::EMIT-ONE-INDEX-WRITERS
++-         PCL::STRUCTURE-WRAPPER PCL::MAKE-FINAL-DISPATCH-DFUN)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::DO-SHORT-METHOD-COMBINATION
+++         PCL::GENERATE-DISCRIMINATION-NET-INTERNAL
+++         PCL::CACHE-MISS-VALUES-INTERNAL
+++         PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::MEMF-CODE-CONVERTER
+++         PCL::MAKE-LONG-METHOD-COMBINATION-FUNCTION)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
++-         PCL::|__si::MAKE-INITIAL| PCL::|__si::MAKE-ARG-INFO|
++-         PCL::STRING-APPEND PCL::|__si::MAKE-ONE-INDEX|
++-         PCL::MAKE-INITIALIZE-INFO PCL::MAKE-FAST-METHOD-CALL
++-         PCL::|__si::MAKE-STD-INSTANCE|
++-         PCL::|__si::MAKE-ONE-INDEX-DFUN-INFO|
++-         PCL::|__si::MAKE-CONSTANT-VALUE| PCL::|__si::MAKE-N-N|
++-         PCL::FIX-EARLY-GENERIC-FUNCTIONS PCL::INTERN-PV-TABLE
++-         PCL::FALSE PCL::|__si::MAKE-DFUN-INFO|
++-         PCL::|__si::MAKE-CACHING| PCL::MAKE-PV-TABLE
++-         PCL::MAKE-METHOD-CALL PCL::TRUE PCL::MAKE-PROGN
++-         PCL::|__si::MAKE-CACHE|
++-         PCL::|STRUCTURE-OBJECT class constructor|
++-         PCL::|__si::MAKE-CLASS-PRECEDENCE-DESCRIPTION|
++-         PCL::|__si::MAKE-NO-METHODS| PCL::|__si::MAKE-ONE-CLASS|
++-         PCL::|__si::MAKE-PV-TABLE| PCL::PV-WRAPPERS-FROM-PV-ARGS
++-         WALKER::UNBOUND-LEXICAL-FUNCTION PCL::|__si::MAKE-TWO-CLASS|
++-         PCL::|__si::MAKE-ACCESSOR-DFUN-INFO|
++-         PCL::|__si::MAKE-DEFAULT-METHOD-ONLY|
++-         PCL::MAKE-FAST-INSTANCE-BOUNDP
++-         PCL::CALLED-FIN-WITHOUT-FUNCTION PCL::USE-PACKAGE-PCL
++-         PCL::|__si::MAKE-CHECKING| PCL::|__si::MAKE-INITIAL-DISPATCH|
++-         PCL::|__si::MAKE-DISPATCH|)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         WALKER::WALK-DECLARATIONS PCL::GET-SECONDARY-DISPATCH-FUNCTION
+++         PCL::MAKE-ONE-INDEX-ACCESSOR-DFUN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FUNCTION)
++-         PCL::METHOD-CALL-FUNCTION PCL::FAST-METHOD-CALL-FUNCTION
++-         PCL::CACHE-LIMIT-FN)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::GET-SECONDARY-DISPATCH-FUNCTION2)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::BOOLEAN)
++-         PCL::CACHE-VALUEP)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         ITERATE::ITERATE-TRANSFORM-BODY
+++         PCL::|(FAST-METHOD SLOT-MISSING (T T T T))|
+++         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::INTEGER 1 255))
++-         PCL::CACHE-NKEYS)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807))
+++             COMMON-LISP::T)
+++         PCL::COMPUTE-STD-CPL-PHASE-3)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::INTEGER 1 256))
++-         PCL::CACHE-LINE-SIZE)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::FIXNUM)
+++             COMMON-LISP::T)
+++         PCL::FILL-CACHE-FROM-CACHE-P PCL::GET-CACHE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
++-         PCL::SYMBOL-APPEND)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::FIXNUM)
+++         PCL::GET-WRAPPER-CACHE-NUMBER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             (COMMON-LISP::*))
++-         PCL::SORT-APPLICABLE-METHODS PCL::SORT-METHODS)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FUNCTION)
+++         PCL::METHOD-CALL-FUNCTION PCL::FAST-METHOD-CALL-FUNCTION
+++         PCL::CACHE-LIMIT-FN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         PCL::COMPUTE-CALLS PCL::SET-STRUCTURE-SVUC-METHOD
++-         PCL::UPDATE-STD-OR-STR-METHODS PCL::SET-METHODS
++-         WALKER::NOTE-LEXICAL-BINDING
+++         PCL::MEC-ALL-CLASS-LISTS PCL::REMOVE-SLOT-ACCESSORS
+++         PCL::PARSE-GSPEC PCL::STANDARD-INSTANCE-ACCESS
+++         PCL::DOCTOR-DFUN-FOR-THE-DEBUGGER
+++         PCL::UPDATE-STD-OR-STR-METHODS PCL::CLASS-MIGHT-PRECEDE-P
+++         PCL::ACCESSOR-SET-SLOT-VALUE PCL::DOPLIST
+++         PCL::ADD-SLOT-ACCESSORS PCL::DFUN-MISS
+++         PCL::FSC-INSTANCE-WRAPPER PCL::CLASS-EQ-TEST
+++         PCL::MAKE-INTERNAL-READER-METHOD-FUNCTION
+++         PCL::MAKE-EARLY-ACCESSOR WALKER::ENVIRONMENT-MACRO
+++         PCL::WITH-DFUN-WRAPPERS PCL::WRAPPER-STATE
+++         PCL::DFUN-INFO-WRAPPER0
+++         WALKER::WITH-NEW-DEFINITION-IN-ENVIRONMENT PCL::IF*
+++         PCL::CHECK-WRAPPER-VALIDITY1
+++         PCL::INITIALIZE-INFO-MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::BUILT-IN-OR-STRUCTURE-WRAPPER
+++         PCL::FIND-CLASS-CELL-PREDICATE PCL::CLASS-CAN-PRECEDE-P
+++         COMMON-LISP::CALL-METHOD PCL::NET-CONSTANT-CONVERTER
+++         PCL::UPDATE-INITIALIZE-INFO-INTERNAL
+++         PCL::GET-CACHE-VECTOR-LOCK-COUNT PCL::UNDEFMETHOD
+++         PCL::%SET-SVREF PCL::PV-WRAPPERS-FROM-ALL-WRAPPERS
+++         PCL::WRAPPER-NO-OF-INSTANCE-SLOTS PCL::CACHE-VECTOR-LOCK-COUNT
+++         WALKER::VARIABLE-LEXICAL-P PCL::FIN-LAMBDA-FN
+++         PCL::INITIAL-CLASSES-AND-WRAPPERS PCL::MLOOKUP
+++         PCL::RAISE-METATYPE ITERATE::WHILE PCL::EARLY-GF-ARG-INFO
+++         PCL::INVALID-WRAPPER-P WALKER::VARIABLE-SPECIAL-P
+++         PCL::EMIT-N-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
+++         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION-PRECOMPILED
+++         PCL::INSTANCE-WRITE-INTERNAL WALKER::WALK-REPEAT-EVAL
+++         WALKER::GET-WALKER-TEMPLATE-INTERNAL ITERATE::PLIST-ELEMENTS
+++         PCL::MAKE-FIND-CLASS-CELL COMMON-LISP::WITH-ACCESSORS
+++         PCL::MAKE-METHOD-FUNCTION PCL::SIMPLE-LEXICAL-METHOD-FUNCTIONS
+++         PCL::CANONICALIZE-DEFCLASS-OPTION PCL::UPDATE-INITS PCL::SCASE
+++         PCL::INSTANCE-BOUNDP-INTERNAL PCL::FMC-FUNCALL
+++         PCL::SET-METHODS PCL::CACHE-LOCK-COUNT PCL::GET-WRAPPER
+++         PCL::INVOKE-METHOD-CALL1 PCL::MAKE-CLASS-PREDICATE
+++         PCL::PRINTING-RANDOM-THING PCL::UPDATE-SLOTS
+++         PCL::FUNCTION-APPLY PCL::AUGMENT-TYPE ITERATE::WITH-GATHERING
+++         PCL::CHECKING-DFUN-INFO PCL::LIST-EQ PCL::CACHE-VECTOR-SIZE
+++         PCL::DESCRIBE-PACKAGE PCL::WRAPPER-REF PCL::PLIST-VALUE
+++         PCL::%INSTANCE-REF WALKER::NOTE-DECLARATION
+++         PCL::MAKE-STD-READER-METHOD-FUNCTION
+++         PCL::EMIT-READER/WRITER-MACRO WALKER::ENVIRONMENT-FUNCTION
+++         PCL::N-N-DFUN-INFO
+++         PCL::FIND-CLASS-CELL-MAKE-INSTANCE-FUNCTION-KEYS
+++         PCL::DEFCONSTRUCTOR PCL::INSTANCE-SLOT-INDEX
+++         PCL::CLASS-NO-OF-INSTANCE-SLOTS ITERATE::ELEMENTS
+++         PCL::NEXT-WRAPPER-CACHE-NUMBER-INDEX
+++         PCL::INITIALIZE-INFO-COMBINED-INITARGS-FORM-LIST
+++         COMMON-LISP::DEFINE-METHOD-COMBINATION PCL::MDOTIMES
+++         PCL::REMOVE-DIRECT-SUBCLASSES PCL::MAKE-WRAPPER-INTERNAL
+++         ITERATE::MAXIMIZING PCL::PV-OFFSET
+++         PCL::DEAL-WITH-ARGUMENTS-OPTION PCL::INSTANCE-READER
+++         PCL::ALLOCATE-STANDARD-INSTANCE--MACRO PCL::DEFINE-INLINES
+++         PCL::WRAPPER-CACHE-NUMBER-VECTOR PCL::GATHERING1
+++         PCL::FIND-CLASS-CELL-CLASS PCL::SWAP-WRAPPERS-AND-SLOTS
+++         PCL::COMPUTE-APPLICABLE-METHODS-FUNCTION PCL::PV-TABLE-LOOKUP
+++         PCL::WRAPPER-INSTANCE-SLOTS-LAYOUT
+++         WALKER::WALKER-ENVIRONMENT-BIND PCL::COPY-SLOTS PCL::MCASE
+++         PCL::ADD-TO-CVECTOR PCL::ADD-DIRECT-SUBCLASSES
+++         PCL::%SET-CCLOSURE-ENV PCL::PRECOMPILE-RANDOM-CODE-SEGMENTS
+++         PCL::UPDATE-CLASS PCL::SLOT-SYMBOL PCL::VALUE-FOR-CACHING
+++         PCL::EXPANDING-MAKE-INSTANCE-TOP-LEVEL PCL::REMTAIL
+++         PCL::MAKE-DISCRIMINATING-FUNCTION-ARGLIST
+++         PCL::CLASSES-HAVE-COMMON-SUBCLASS-P
+++         PCL::FIRST-WRAPPER-CACHE-NUMBER-INDEX
+++         PCL::INITIALIZE-INFO-INITARGS-FORM-LIST
+++         PCL::WITH-MAKE-INSTANCE-FUNCTION-VALID-P-CHECK
+++         PCL::FUNCALLABLE-INSTANCE-DATA-1 PCL::SAUT-NOT-EQL
+++         PCL::EARLY-GF-METHODS ITERATE::EXTRACT-SPECIAL-BINDINGS
+++         PCL::MEMQ PCL::DFUN-UPDATE
+++         PCL::MAKE-CHECKING-OR-CACHING-FUNCTION-LIST PCL::ONCE-ONLY
+++         PCL::GET-INSTANCE-WRAPPER-OR-NIL PCL::SYMBOL-LESSP
+++         PCL::|SETF PCL FIND-CLASS| PCL::PARSE-QUALIFIER-PATTERN
++          ITERATE::SIMPLE-EXPAND-ITERATE-FORM
++-         PCL::|SETF PCL METHOD-FUNCTION-PLIST| PCL::SAUT-NOT-PROTOTYPE
++-         PCL::VALUE-FOR-CACHING PCL::PROCLAIM-DEFMETHOD
++-         PCL::MAKE-FAST-METHOD-CALL-LAMBDA-LIST
++-         PCL::MAKE-STD-BOUNDP-METHOD-FUNCTION PCL::METHODS-CONVERTER
++-         PCL::DEAL-WITH-ARGUMENTS-OPTION
++-         PCL::UPDATE-ALL-PV-TABLE-CACHES
++-         PCL::MAP-PV-TABLE-REFERENCES-OF PCL::UPDATE-CLASS
++-         PCL::FIND-STANDARD-II-METHOD
++-         PCL::METHOD-FUNCTION-RETURNING-NIL
++-         PCL::REDIRECT-EARLY-FUNCTION-INTERNAL PCL::UPDATE-CPL
++-         PCL::QUALIFIER-CHECK-RUNTIME PCL::COMPUTE-STD-CPL
++-         PCL::COMPUTE-CONSTANTS PCL::ADD-FORMS PCL::AUGMENT-TYPE
++-         PCL::MEMF-CONSTANT-CONVERTER PCL::SWAP-WRAPPERS-AND-SLOTS
++-         PCL::SET-WRAPPER PCL::GET-KEY-ARG PCL::MAKE-PLIST
++-         PCL::MAKE-PV-TABLE-INTERNAL ITERATE::EXTRACT-SPECIAL-BINDINGS
++-         PCL::SAUT-NOT-EQL WALKER::VARIABLE-SYMBOL-MACRO-P
++-         PCL::EMIT-1-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
++-         PCL::SET-FUNCTION-PRETTY-ARGLIST
++-         PCL::GF-MAKE-FUNCTION-FROM-EMF PCL::FIND-SLOT-DEFINITION
++-         PCL::SET-STANDARD-SVUC-METHOD PCL::ADD-TO-CVECTOR
++-         PCL::PV-WRAPPERS-FROM-ALL-WRAPPERS COMMON-LISP::REMOVE-METHOD
++-         PCL::CHECKING-DFUN-INFO PCL::PARSE-QUALIFIER-PATTERN
++-         PCL::%SET-CCLOSURE-ENV PCL::MAKE-CDXR
++-         PCL::FUNCALLABLE-STANDARD-INSTANCE-ACCESS
++-         PCL::NET-CONSTANT-CONVERTER PCL::|SETF PCL FIND-CLASS|
+++         PCL::INITIALIZE-INFO-SHARED-INITIALIZE-T-FUNCTION
+++         PCL::RESET-INITIALIZE-INFO-INTERNAL
+++         PCL::INITIALIZE-INFO-DEFAULT-INITARGS-FUNCTION
+++         PCL::DESTRUCTURE-INTERNAL PCL::DFUN-INFO-INDEX
+++         PCL::PRECOMPILE-IIS-FUNCTIONS PCL::INSTANCE-WRITE
+++         COMMON-LISP::DEFCLASS PCL::UPDATE-ALL-PV-TABLE-CACHES
+++         PCL::WRAPPER-CACHE-NUMBER-VECTOR-REF
+++         PCL::INITIALIZE-INFO-COMBINED-INITIALIZE-FUNCTION
+++         PCL::MODIFY-CACHE PCL::BOOTSTRAP-SLOT-INDEX
+++         PCL::SET-FUNCTION-PRETTY-ARGLIST PCL::COMPUTE-LAYOUT
+++         PCL::CALL-METHOD-LIST PCL::GET-KEY-ARG ITERATE::LIST-TAILS
+++         PCL::INITIALIZE-INFO-MAKE-INSTANCE-FUNCTION ITERATE::EACHTIME
+++         PCL::INSTANCE-REF PCL::WITH-EQ-HASH-TABLE
+++         PCL::QUALIFIER-CHECK-RUNTIME PCL::CALLSREF ITERATE::MV-SETQ
+++         PCL::PRINTING-RANDOM-THING-INTERNAL PCL::CHECK-MEMBER
+++         PCL::INSTANCE-WRITER PCL::CANONICALIZE-SLOT-SPECIFICATION
+++         PCL::BIND-LEXICAL-METHOD-FUNCTIONS ITERATE::LIST-ELEMENTS
+++         PCL::INVOKE-EFFECTIVE-METHOD-FUNCTION-FAST
+++         PCL::INVOKE-METHOD-CALL PCL::INITIALIZE-INFO-RI-VALID-P
+++         PCL::SET-WRAPPER PCL::STD-INSTANCE-CLASS
+++         PCL::EXPANDING-MAKE-INSTANCE PCL::BIND-ARGS
+++         PCL::INITIALIZE-INFO-VALID-P PCL::STD-INSTANCE-WRAPPER
+++         PCL::FSC-INSTANCE-SLOTS PCL::REAL-ENSURE-GF-INTERNAL PCL::NEQ
+++         PCL::PRECOMPILE-DFUN-CONSTRUCTORS PCL::MAKE-DLAP-LAMBDA-LIST
+++         PCL::FIND-SLOT-DEFINITION
+++         PCL::BIND-SIMPLE-LEXICAL-METHOD-MACROS
+++         PCL::ACCESSOR-SLOT-VALUE PCL::METHOD-FUNCTION-RETURNING-NIL
+++         PCL::MAKE-DFUN-LAMBDA-LIST WALKER::VARIABLE-SYMBOL-MACRO-P
+++         PCL::DFUN-INFO-FUNCTION COMMON-LISP::WITH-SLOTS
+++         PCL::FUNCTION-FUNCALL PCL::EQL-TEST
+++         PCL::INITIALIZE-INFO-CONSTANTS PCL::POSQ PCL::DOLIST-CAREFULLY
+++         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER-MACRO PCL::MAKE-CAXR
+++         ITERATE::ITERATE PCL::DEFINE-INITIALIZE-INFO PCL::ALIST-ENTRY
+++         PCL::WITH-LOCAL-CACHE-FUNCTIONS PCL::WRAPPER-OF-MACRO
+++         PCL::RASSQ PCL::SUPERCLASSES-COMPATIBLE-P
++          PCL::METHOD-FUNCTION-RETURNING-T PCL::CHANGE-CLASS-INTERNAL
++-         PCL::MAKE-DFUN-ARG-LIST PCL::DOCTOR-DFUN-FOR-THE-DEBUGGER
++-         PCL::MAKE-STD-WRITER-METHOD-FUNCTION ITERATE::MV-SETQ
++-         PCL::MAKE-EARLY-ACCESSOR PCL::GET-KEY-ARG1
++-         PCL::ADD-DIRECT-SUBCLASSES PCL::DO-SATISFIES-DEFTYPE
++-         PCL::N-N-DFUN-INFO PCL::CLASSES-HAVE-COMMON-SUBCLASS-P
++-         PCL::SAUT-NOT-CLASS PCL::CANONICALIZE-DEFCLASS-OPTION
++-         PCL::MAKE-DISCRIMINATING-FUNCTION-ARGLIST
++-         WALKER::VARIABLE-LEXICAL-P WALKER::ENVIRONMENT-FUNCTION
++-         PCL::PV-TABLE-LOOKUP PCL::DESTRUCTURE-INTERNAL
++-         PCL::MAKE-INTERNAL-READER-METHOD-FUNCTION
++-         PCL::REMOVE-SLOT-ACCESSORS
+++         PCL::PRECOMPILE-FUNCTION-GENERATORS
+++         WALKER::DEFINE-WALKER-TEMPLATE PCL::CACHE-VECTOR-REF
+++         PCL::GET-SLOTS PCL::MEC-ALL-CLASSES-INTERNAL
+++         COMMON-LISP::SLOT-EXISTS-P PCL::WITHOUT-INTERRUPTS
+++         PCL::MAKE-UNORDERED-METHODS-EMF PCL::GET-KEY-ARG1
+++         PCL::MAKE-STD-WRITER-METHOD-FUNCTION PCL::COMPUTE-CONSTANTS
+++         PCL::BOOTSTRAP-GET-SLOT PCL::DEFINE-GF-PREDICATE
+++         PCL::REDIRECT-EARLY-FUNCTION-INTERNAL
+++         PCL::SET-STRUCTURE-SVUC-METHOD PCL::WRAPPER-CLASS
+++         ITERATE::UNTIL PCL::PV-BINDING1 PCL::UPDATE-CPL PCL::PV-ENV
+++         PCL::PV-BINDING PCL::INSTANCE-READ-INTERNAL
+++         COMMON-LISP::DEFGENERIC ITERATE::COLLECTING
+++         WALKER::NOTE-LEXICAL-BINDING PCL::ORIGINAL-DEFINITION
+++         PCL::COLLECTING-ONCE PCL::GET-SLOTS-OR-NIL PCL::TRACE-EMF-CALL
+++         PCL::WITH-HASH-TABLE PCL::FUNCALLABLE-INSTANCE-MARKER
+++         PCL::INITIALIZE-INFO-NEW-KEYS PCL::STD-INSTANCE-SLOTS
+++         PCL::ACCESSOR-SLOT-BOUNDP PCL::SAUT-NOT-PROTOTYPE
+++         PCL::MAP-PV-TABLE-REFERENCES-OF COMMON-LISP::ADD-METHOD
+++         PCL::MAKE-CDXR PCL::CALL-INITIALIZE-FUNCTION PCL::ASV-FUNCALL
+++         PCL::MAKE-STD-BOUNDP-METHOD-FUNCTION PCL::IIS-BODY
+++         COMMON-LISP::DEFMETHOD PCL::SYMBOL-OR-CONS-LESSP
+++         PCL::SAUT-NOT-CLASS-EQ PCL::METHODS-CONVERTER PCL::PVREF
+++         PCL::EMIT-1-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
+++         PCL::EMIT-CHECKING-OR-CACHING-MACRO ITERATE::SUMMING
+++         PCL::|SETF PCL GDEFINITION| PCL::ESETF PCL::COPY-PV
+++         PCL::WRAPPER-CLASS* COMMON-LISP::REMOVE-METHOD
++          PCL::|SETF PCL FIND-CLASS-PREDICATE|
++-         PCL::|SETF PCL GDEFINITION| PCL::MAKE-DFUN-LAMBDA-LIST
++-         PCL::CANONICALIZE-SLOT-SPECIFICATION WALKER::WALK-REPEAT-EVAL
++-         PCL::STANDARD-INSTANCE-ACCESS
++-         PCL::PRINTING-RANDOM-THING-INTERNAL PCL::REMTAIL
++-         PCL::ACCESSOR-MISS-FUNCTION PCL::COMPUTE-LAYOUT
++-         PCL::CLASS-MIGHT-PRECEDE-P
++-         PCL::EMIT-N-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
++-         SYSTEM::%SET-COMPILED-FUNCTION-NAME PCL::PLIST-VALUE
++-         PCL::MAKE-CAXR PCL::MAKE-DLAP-LAMBDA-LIST
++-         PCL::MAKE-STD-READER-METHOD-FUNCTION WALKER::ENVIRONMENT-MACRO
++-         PCL::UPDATE-SLOTS PCL::VARIABLE-CLASS
++-         PCL::SET-FUNCALLABLE-INSTANCE-FUNCTION PCL::LIST-EQ
++-         PCL::ADD-SLOT-ACCESSORS PCL::SAUT-NOT-CLASS-EQ PCL::COMPUTE-PV
++-         PCL::PV-WRAPPERS-FROM-ALL-ARGS PCL::UPDATE-INITS
++-         PCL::MEC-ALL-CLASS-LISTS PCL::RAISE-METATYPE
++-         WALKER::NOTE-DECLARATION PCL::EMIT-1-NIL-DLAP
++-         PCL::BOOTSTRAP-SLOT-INDEX PCL::SUPERCLASSES-COMPATIBLE-P
++-         PCL::MEC-ALL-CLASSES-INTERNAL COMMON-LISP::SLOT-EXISTS-P
++-         PCL::DESCRIBE-PACKAGE PCL::NO-SLOT PCL::PROCLAIM-DEFGENERIC
++-         COMMON-LISP::ADD-METHOD PCL::MAKE-UNORDERED-METHODS-EMF
++-         PCL::MEC-ALL-CLASSES PCL::SYMBOL-OR-CONS-LESSP
++-         PCL::UPDATE-INITIALIZE-INFO-INTERNAL PCL::CLASS-CAN-PRECEDE-P
++-         PCL::SYMBOL-LESSP PCL::COMPUTE-APPLICABLE-METHODS-FUNCTION
++-         PCL::MAKE-CLASS-PREDICATE WALKER::VARIABLE-SPECIAL-P
++-         PCL::REMOVE-DIRECT-SUBCLASSES)) 
+++         PCL::ACCESSOR-MISS-FUNCTION PCL::MEMF-CONSTANT-CONVERTER
+++         PCL::DELQ PCL::VECTORIZING PCL::MAKE-DFUN-ARG-LIST
+++         PCL::VARIABLE-CLASS PCL::INSTANCE-ACCESSOR-PARAMETER
+++         PCL::ALLOCATE-FUNCALLABLE-INSTANCE-SLOTS
+++         PCL::EMIT-DEFAULT-ONLY-MACRO PCL::NO-SLOT
+++         PCL::MAYBE-CHECK-CACHE PCL::FUNCALLABLE-INSTANCE-DATA-POSITION
+++         PCL::MAKE-FAST-METHOD-CALL-LAMBDA-LIST
+++         PCL::DO-STANDARD-DEFSETF PCL::SAUT-NOT-CLASS
+++         PCL::DFUN-INFO-ACCESSOR-TYPE PCL::DEFINE-CACHED-READER
+++         PCL::SET-STANDARD-SVUC-METHOD PCL::CLASS-TEST
+++         PCL::MAKE-PV-TABLE-INTERNAL PCL::PROCLAIM-DEFGENERIC
+++         PCL::GF-MAKE-FUNCTION-FROM-EMF PCL::COMPUTE-PV
+++         PCL::EMIT-1-NIL-DLAP PCL::FIND-STANDARD-II-METHOD
+++         PCL::BIND-FAST-LEXICAL-METHOD-MACROS PCL::DO-SATISFIES-DEFTYPE
+++         PCL::FAST-LEXICAL-METHOD-FUNCTIONS PCL::COMPUTE-CALLS
+++         PCL::COPY-INSTANCE-INTERNAL COMMON-LISP::SYMBOL-MACROLET
+++         PCL::FSC-INSTANCE-P PCL::MAKE-PLIST PCL::%SVREF
+++         PCL::PCL-DESTRUCTURING-BIND
+++         SYSTEM::%SET-COMPILED-FUNCTION-NAME ITERATE::JOINING
+++         ITERATE::MINIMIZING PCL::METHOD-FUNCTION-CLOSURE-GENERATOR
+++         PCL::PV-WRAPPERS-FROM-ALL-ARGS PCL::*LIST-ELEMENTS
+++         PCL::ADD-FORMS
+++         PCL::INITIALIZE-INFO-SHARED-INITIALIZE-NIL-FUNCTION
+++         ITERATE::INTERVAL PCL::INSTANCE-BOUNDP PCL::FSC-INSTANCE-CLASS
+++         WALKER::WITH-AUGMENTED-ENVIRONMENT
+++         PCL::CACHE-NUMBER-VECTOR-REF
+++         PCL::INVOKE-EFFECTIVE-METHOD-FUNCTION PCL::ASSQ
+++         PCL::SET-FUNCALLABLE-INSTANCE-FUNCTION
+++         PCL::WRAPPER-CLASS-SLOTS PCL::MEC-ALL-CLASSES
+++         ITERATE::GATHERING PCL::INSTANCE-READ PCL::COMPUTE-STD-CPL
+++         PCL::PROCLAIM-DEFMETHOD
+++         PCL::%ALLOCATE-STATIC-SLOT-STORAGE--CLASS PCL::*LIST-TAILS
+++         PCL::|SETF PCL METHOD-FUNCTION-PLIST|
+++         PCL::FUNCALLABLE-STANDARD-INSTANCE-ACCESS
+++         PCL::DFUN-INFO-WRAPPER1 PCL::INVOKE-FAST-METHOD-CALL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::*)
+++         PCL::COMPILE-LAMBDA PCL::COERCE-TO-CLASS
++          PCL::MAKE-METHOD-FUNCTION-INTERNAL
++-         PCL::MAKE-FINAL-DFUN-INTERNAL WALKER::MACROEXPAND-ALL
++-         COMMON-LISP::ENSURE-GENERIC-FUNCTION
++-         PCL::MAKE-METHOD-LAMBDA-INTERNAL PCL::MAKE-CONSTANT-VALUE-DFUN
++-         PCL::GET-FUNCTION PCL::EXTRACT-DECLARATIONS
++-         PCL::COERCE-TO-CLASS PCL::PARSE-METHOD-OR-SPEC
++-         PCL::DISPATCH-DFUN-COST PCL::PARSE-SPECIALIZED-LAMBDA-LIST
++-         PCL::MAP-ALL-CLASSES PCL::COMPILE-LAMBDA PCL::ENSURE-CLASS
++-         PCL::GET-METHOD-FUNCTION WALKER::WALK-FORM
++-         PCL::ALLOCATE-STRUCTURE-INSTANCE PCL::GET-FUNCTION1
+++         PCL::MAKE-CONSTANT-VALUE-DFUN PCL::GET-FUNCTION
++          PCL::MAKE-CACHING-DFUN PCL::MAKE-INSTANCE-1
++-         PCL::GET-DFUN-CONSTRUCTOR)) 
+++         PCL::MAKE-FINAL-DFUN-INTERNAL WALKER::MACROEXPAND-ALL
+++         COMMON-LISP::ENSURE-GENERIC-FUNCTION PCL::MAP-ALL-CLASSES
+++         PCL::GET-METHOD-FUNCTION PCL::MAKE-METHOD-LAMBDA-INTERNAL
+++         PCL::PARSE-SPECIALIZED-LAMBDA-LIST PCL::GET-FUNCTION1
+++         WALKER::WALK-FORM PCL::ALLOCATE-STRUCTURE-INSTANCE
+++         PCL::ENSURE-CLASS PCL::GET-DFUN-CONSTRUCTOR
+++         PCL::EXTRACT-DECLARATIONS PCL::DISPATCH-DFUN-COST
+++         PCL::PARSE-METHOD-OR-SPEC)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
++-         PCL::MAKE-CLASS-PREDICATE-NAME PCL::MAKE-KEYWORD)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::SDFUN-FOR-CACHING PCL::SAUT-AND PCL::EMIT-CHECKING
+++         PCL::SPLIT-DECLARATIONS
+++         PCL::COMPUTE-APPLICABLE-METHODS-USING-TYPES PCL::COMPUTE-CODE
+++         PCL::*SUBTYPEP ITERATE::PARSE-DECLARATIONS
+++         PCL::GENERATE-FAST-CLASS-SLOT-ACCESS-P
+++         PCL::SLOT-NAME-LISTS-FROM-SLOTS COMMON-LISP::SLOT-VALUE
+++         PCL::COMPUTE-STD-CPL-PHASE-1 PCL::SAUT-CLASS
+++         PCL::FORM-LIST-TO-LISP PCL::INITIAL-DFUN
+++         PCL::FIND-SUPERCLASS-CHAIN PCL::EMIT-CACHING PCL::SAUT-NOT
+++         PCL::CHECK-INITARGS-VALUES PCL::REAL-REMOVE-METHOD
+++         PCL::CPL-INCONSISTENT-ERROR COMMON-LISP::SLOT-BOUNDP
+++         PCL::SPECIALIZER-APPLICABLE-USING-TYPE-P
+++         PCL::MAKE-INSTANCE-FUNCTION-TRAP PCL::SAUT-CLASS-EQ
+++         PCL::SLOT-UNBOUND-INTERNAL PCL::SAUT-PROTOTYPE
+++         PCL::CPL-FORWARD-REFERENCED-CLASS-ERROR
+++         PCL::GET-NEW-FUNCTION-GENERATOR-INTERNAL
+++         PCL::EMIT-DEFAULT-ONLY PCL::CLASS-APPLICABLE-USING-CLASS-P
+++         PCL::COMPUTE-TEST PCL::MUTATE-SLOTS-AND-CALLS
+++         PCL::EMIT-DEFAULT-ONLY-FUNCTION PCL::ENSURE-CLASS-VALUES
+++         PCL::INVOKE-EMF COMMON-LISP::SLOT-MAKUNBOUND
+++         PCL::MAKE-DIRECT-SLOTD PCL::INSURE-DFUN PCL::SET-FUNCTION-NAME
+++         PCL::DESTRUCTURE PCL::SAUT-EQL PCL::UPDATE-SLOT-VALUE-GF-INFO)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             (COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
++-                 COMMON-LISP::*))
++-         PCL::CAPITALIZE-WORDS)) 
+++             COMMON-LISP::T)
+++         WALKER::RELIST* PCL::UPDATE-DFUN
+++         PCL::ALLOCATE-FUNCALLABLE-INSTANCE PCL::MAKE-SPECIALIZABLE
+++         PCL::TRACE-METHOD PCL::ALLOCATE-STANDARD-INSTANCE
+++         WALKER::RELIST COMMON-LISP::FIND-CLASS PCL::MAKE-WRAPPER
+++         PCL::PV-TABLE-LOOKUP-PV-ARGS ITERATE::FUNCTION-LAMBDA-P
+++         PCL::SET-DFUN PCL::EARLY-METHOD-SPECIALIZERS
+++         WALKER::WALKER-ENVIRONMENT-BIND-1
+++         PCL::INITIALIZE-METHOD-FUNCTION PCL::MAKE-TYPE-PREDICATE-NAME
+++         PCL::MAKE-FINAL-DFUN PCL::FIND-CLASS-CELL
+++         PCL::INITIALIZE-INTERNAL-SLOT-GFS PCL::MAKE-EARLY-GF
+++         PCL::USE-DISPATCH-DFUN-P ITERATE::MAYBE-WARN
+++         PCL::USE-CONSTANT-VALUE-DFUN-P PCL::FIND-CLASS-PREDICATE
+++         PCL::SET-ARG-INFO PCL::CAPITALIZE-WORDS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
++-         PCL::ALLOCATE-FUNCALLABLE-INSTANCE-1 PCL::SHOW-EMF-CALL-TRACE
++-         PCL::CACHES-TO-ALLOCATE PCL::MAKE-CACHE
++-         PCL::SHOW-FREE-CACHE-VECTORS PCL::MAKE-ARG-INFO
++-         PCL::NO-METHODS-DFUN-INFO PCL::STRUCTURE-FUNCTIONS-EXIST-P
++-         PCL::INITIALIZE-CHECKING-OR-CACHING-FUNCTION-LIST
++-         PCL::BOOTSTRAP-BUILT-IN-CLASSES
++-         PCL::%%ALLOCATE-INSTANCE--CLASS PCL::DISPATCH-DFUN-INFO
++-         PCL::INITIAL-DISPATCH-DFUN-INFO PCL::BOOTSTRAP-META-BRAID
++-         PCL::UPDATE-DISPATCH-DFUNS PCL::LIST-ALL-DFUNS
++-         PCL::DEFAULT-METHOD-ONLY-DFUN-INFO PCL::RENEW-SYS-FILES
++-         PCL::IN-THE-COMPILER-P PCL::GET-EFFECTIVE-METHOD-GENSYM
++-         PCL::MAKE-CPD PCL::INITIAL-DFUN-INFO
++-         PCL::SHOW-DFUN-CONSTRUCTORS
++-         PCL::ALLOCATE-FUNCALLABLE-INSTANCE-2)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::STREAM COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::PRINT-DFUN-INFO)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::FIXNUM)
++-         PCL::ZERO)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             COMMON-LISP::SIMPLE-VECTOR)
+++         PCL::CACHE-VECTOR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::STREAM COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::PRINT-DFUN-INFO)) 
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
+++         PCL::SYMBOL-APPEND)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::OR PCL::CACHE COMMON-LISP::NULL))
+++         PCL::PV-TABLE-CACHE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -412,70 +1019,11 @@
++          PCL::COMPUTE-CACHE-PARAMETERS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
++-         PCL::COUNT-ALL-DFUNS PCL::EMIT-N-N-WRITERS
++-         PCL::EMIT-N-N-READERS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::MAKE-FINAL-DFUN PCL::SET-ARG-INFO PCL::TRACE-METHOD
++-         PCL::MAKE-SPECIALIZABLE WALKER::WALKER-ENVIRONMENT-BIND-1
++-         ITERATE::FUNCTION-LAMBDA-P COMMON-LISP::FIND-CLASS
++-         PCL::MAKE-WRAPPER PCL::UPDATE-DFUN
++-         PCL::MAKE-TYPE-PREDICATE-NAME PCL::PV-TABLE-LOOKUP-PV-ARGS
++-         PCL::USE-CONSTANT-VALUE-DFUN-P WALKER::RELIST
++-         PCL::MAKE-EARLY-GF PCL::INITIALIZE-METHOD-FUNCTION
++-         PCL::FIND-CLASS-CELL PCL::USE-DISPATCH-DFUN-P
++-         PCL::FIND-CLASS-PREDICATE PCL::ALLOCATE-STANDARD-INSTANCE
++-         PCL::INITIALIZE-INTERNAL-SLOT-GFS ITERATE::MAYBE-WARN
++-         PCL::ALLOCATE-FUNCALLABLE-INSTANCE
++-         PCL::EARLY-METHOD-SPECIALIZERS WALKER::RELIST* PCL::SET-DFUN)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::SLOT-UNBOUND-INTERNAL ITERATE::PARSE-DECLARATIONS
++-         PCL::EMIT-CACHING PCL::COMPUTE-STD-CPL-PHASE-1
++-         PCL::INITIAL-DFUN PCL::INSURE-DFUN PCL::EMIT-CHECKING
++-         PCL::COMPUTE-TEST PCL::COMPUTE-CODE PCL::MAKE-DIRECT-SLOTD
++-         PCL::SAUT-CLASS COMMON-LISP::SLOT-MAKUNBOUND
++-         PCL::CPL-FORWARD-REFERENCED-CLASS-ERROR PCL::INVOKE-EMF
++-         PCL::*SUBTYPEP PCL::SPECIALIZER-APPLICABLE-USING-TYPE-P
++-         PCL::COMPUTE-APPLICABLE-METHODS-USING-TYPES
++-         PCL::REAL-REMOVE-METHOD PCL::SAUT-PROTOTYPE
++-         PCL::MUTATE-SLOTS-AND-CALLS PCL::FIND-SUPERCLASS-CHAIN
++-         COMMON-LISP::SLOT-BOUNDP PCL::FORM-LIST-TO-LISP
++-         PCL::CPL-INCONSISTENT-ERROR PCL::EMIT-DEFAULT-ONLY-FUNCTION
++-         PCL::ENSURE-CLASS-VALUES PCL::CHECK-INITARGS-VALUES
++-         PCL::SAUT-EQL PCL::SPLIT-DECLARATIONS
++-         PCL::UPDATE-SLOT-VALUE-GF-INFO PCL::SAUT-AND
++-         PCL::SLOT-NAME-LISTS-FROM-SLOTS
++-         PCL::MAKE-INSTANCE-FUNCTION-TRAP PCL::EMIT-DEFAULT-ONLY
++-         PCL::SAUT-NOT PCL::SAUT-CLASS-EQ COMMON-LISP::SLOT-VALUE
++-         PCL::DESTRUCTURE PCL::GENERATE-FAST-CLASS-SLOT-ACCESS-P
++-         PCL::GET-NEW-FUNCTION-GENERATOR-INTERNAL
++-         PCL::CLASS-APPLICABLE-USING-CLASS-P PCL::SDFUN-FOR-CACHING
++-         PCL::SET-FUNCTION-NAME)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
++-         PCL::ARG-INFO-NUMBER-REQUIRED PCL::CACHING-LIMIT-FN
++-         PCL::PV-CACHE-LIMIT-FN PCL::ONE-INDEX-LIMIT-FN
++-         PCL::PV-TABLE-PV-SIZE PCL::CACHE-COUNT PCL::DEFAULT-LIMIT-FN
++-         PCL::CPD-COUNT PCL::CHECKING-LIMIT-FN
++-         PCL::N-N-ACCESSORS-LIMIT-FN PCL::EARLY-CLASS-SIZE
++-         PCL::FAST-INSTANCE-BOUNDP-INDEX)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
++-         PCL::POWER-OF-TWO-CEILING)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::*)
++              COMMON-LISP::T)
++-         PCL::GET-CACHE-FROM-CACHE)) 
+++         PCL::GET-CACHE-FROM-CACHE
+++         PCL::COMPUTE-PRIMARY-CACHE-LOCATION-FROM-LOCATION)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -484,544 +1032,81 @@
++          PCL::COMPUTE-PRIMARY-CACHE-LOCATION)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) PCL::FIELD-TYPE)
++-         PCL::CACHE-FIELD)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::OR PCL::CACHE COMMON-LISP::NULL))
++-         PCL::PV-TABLE-CACHE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::|(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
++-         WALKER::WALK-TEMPLATE PCL::|(FAST-METHOD PRINT-OBJECT (T T))|
++-         WALKER::WALK-DO/DO* PCL::LOAD-PRECOMPILED-DFUN-CONSTRUCTOR
++-         PCL::|(FAST-METHOD DOCUMENTATION (DOCUMENTATION-MIXIN))|
++-         WALKER::WALK-LET/LET*
++-         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
++-         PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-TYPE
++-         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
++-         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
++-         PCL::INITIALIZE-INSTANCE-SIMPLE
++-         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
++-         PCL::EXPAND-SYMBOL-MACROLET-INTERNAL
++-         PCL::|(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION1
++-         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
++-         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
++-         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-         PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-         PCL::|(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-         PCL::|(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
++-         PCL::|(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
++-         PCL::|(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
++-         PCL::|(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
++-         PCL::|(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
++-         PCL::|(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
++-         PCL::MAKE-DISPATCH-LAMBDA
++-         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-         PCL::EXPAND-DEFCLASS
++-         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-         PCL::|(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
++-         PCL::OPTIMIZE-WRITER
++-         PCL::|(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD DOCUMENTATION (T))|
++-         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
++-         PCL::OPTIMIZE-READER WALKER::WALK-PROG/PROG*
++-         PCL::BOOTSTRAP-SET-SLOT
++-         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION-PRELIMINARY
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
++-         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-         PCL::TWO-CLASS-DFUN-INFO
++-         PCL::|(FAST-METHOD MAKE-INSTANCE (CLASS))|
++-         PCL::|(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-         PCL::ADJUST-CACHE
++-         PCL::|(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
++-         PCL::EXPAND-CACHE
++-         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
++-         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
++-         PCL::|(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD PRINT-OBJECT (CLASS T))|
++-         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-         PCL::|(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
++-         PCL::|(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
++-         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
++-         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
++-         PCL::GET-WRAPPERS-FROM-CLASSES
++-         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
++-         PCL::MAYBE-EXPAND-ACCESSOR-FORM WALKER::WALK-BINDINGS-2
++-         PCL::FILL-CACHE-P PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-INTERNAL
++-         PCL::|(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
++-         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
++-         PCL::LOAD-PRECOMPILED-IIS-ENTRY PCL::MEMF-TEST-CONVERTER
++-         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::REAL-ADD-NAMED-METHOD PCL::EARLY-ADD-NAMED-METHOD
++-         PCL::FILL-DFUN-CACHE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::OBSOLETE-INSTANCE-TRAP
++-         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
++-         WALKER::WALK-TAGBODY
++-         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-         PCL::ENTRY-IN-CACHE-P WALKER::WALK-COMPILER-LET
++-         PCL::|(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
++-         PCL::NOTE-PV-TABLE-REFERENCE PCL::COMPUTE-EFFECTIVE-METHOD
++-         PCL::MAKE-DFUN-CALL PCL::|SETF PCL PLIST-VALUE|
++-         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
++-         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
++-         PCL::|(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
++-         PCL::|(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-         WALKER::WALK-UNEXPECTED-DECLARE
++-         PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL
++-         PCL::SKIP-FAST-SLOT-ACCESS-P PCL::SET-FUNCTION-NAME-1
++-         WALKER::WALK-DO PCL::EMIT-1-T-DLAP PCL::PRINT-STD-INSTANCE
++-         PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
++-         WALKER::WALK-LAMBDA PCL::MAKE-METHOD-SPEC
++-         PCL::|(FAST-METHOD CLASS-PREDICATE-NAME (T))|
++-         PCL::|(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
++-         PCL::OPTIMIZE-SET-SLOT-VALUE
++-         PCL::MAKE-OPTIMIZED-STD-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::EXPAND-DEFGENERIC WALKER::VARIABLE-DECLARATION
++-         ITERATE::RENAME-AND-CAPTURE-VARIABLES
++-         PCL::|(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
++-         PCL::MAP-ALL-ORDERS
++-         PCL::|(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
++-         PCL::DECLARE-STRUCTURE WALKER::WALK-PROG
++-         PCL::|(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
++-         PCL::OPTIMIZE-SLOT-VALUE WALKER::WALK-MULTIPLE-VALUE-BIND
++-         PCL::|(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
++-         PCL::STANDARD-COMPUTE-EFFECTIVE-METHOD WALKER::WALK-LOCALLY
++-         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
++-         WALKER::WALK-DO*
++-         PCL::|(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::MAKE-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::EMIT-BOUNDP-CHECK WALKER::RECONS
++-         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
++-         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
++-         WALKER::WALK-LET* WALKER::WALK-TAGBODY-1 PCL::FLUSH-CACHE-TRAP
++-         WALKER::WALK-FLET
++-         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
++-         PCL::|(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
++-         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
++-         PCL::PRINT-CACHE
++-         PCL::|(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
++-         PCL::INVALIDATE-WRAPPER PCL::GET-NEW-FUNCTION-GENERATOR
++-         ITERATE::OPTIMIZE-ITERATE-FORM WALKER::RELIST-INTERNAL
++-         PCL::CAN-OPTIMIZE-ACCESS PCL::MAKE-TOP-LEVEL-FORM
++-         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
++-         WALKER::WALK-MULTIPLE-VALUE-SETQ WALKER::WALK-LABELS
++-         PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
++-         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
++-         WALKER::WALK-SETQ  WALKER::WALK-LET
++-         PCL::|SETF PCL METHOD-FUNCTION-GET| WALKER::WALK-IF
++-         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
++-         ITERATE::SIMPLE-EXPAND-GATHERING-FORM
++-         PCL::|(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
++-         WALKER::WALK-NAMED-LAMBDA PCL::FIRST-FORM-TO-LISP
++-         PCL::ONE-CLASS-DFUN-INFO
++-         WALKER::WITH-AUGMENTED-ENVIRONMENT-INTERNAL
++-         PCL::EMIT-GREATER-THAN-1-DLAP PCL::CONVERT-TABLE
++-         PCL::|(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
++-         PCL::INITIALIZE-INTERNAL-SLOT-GFS*
++-         ITERATE::OPTIMIZE-GATHERING-FORM
++-         PCL::|(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
++-         PCL::OPTIMIZE-SLOT-BOUNDP
++-         PCL::|(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
++-         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
++-         PCL::WRAP-METHOD-GROUP-SPECIFIER-BINDINGS
++-         WALKER::WALK-SYMBOL-MACROLET ITERATE::VARIABLE-SAME-P
++-         PCL::EMIT-SLOT-READ-FORM
++-         PCL::SKIP-OPTIMIZE-SLOT-VALUE-BY-CLASS-P
++-         PCL::|(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
++-         PCL::GET-FUNCTION-GENERATOR
++-         PCL::MAKE-OPTIMIZED-STD-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
++-         PCL::FIX-SLOT-ACCESSORS
++-         PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
++-         PCL::OPTIMIZE-GF-CALL-INTERNAL
++-         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
++-         PCL::|(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
++-         PCL::|(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
++-         PCL::|(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
++-         PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-         PCL::|(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-         WALKER::WALK-PROG* PCL::ONE-INDEX-DFUN-INFO
++-         PCL::COMPUTE-PRECEDENCE PCL::TRACE-EMF-CALL-INTERNAL
++-         WALKER::WALK-MACROLET)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::MAKE-DEFMETHOD-FORM-INTERNAL PCL::LOAD-DEFMETHOD
++-         PCL::EARLY-MAKE-A-METHOD PCL::MAKE-DEFMETHOD-FORM)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::GET-EFFECTIVE-METHOD-FUNCTION1
++-         PCL::ENSURE-GENERIC-FUNCTION-USING-CLASS
++-         PCL::MAKE-EMF-FROM-METHOD
++-         PCL::REAL-ENSURE-GF-USING-CLASS--NULL PCL::PROBE-CACHE
++-         PCL::MAP-CACHE PCL::GET-DECLARATION
++-         PCL::REAL-ENSURE-GF-USING-CLASS--GENERIC-FUNCTION
++-         WALKER::CONVERT-MACRO-TO-LAMBDA
++-         PCL::EXPAND-EFFECTIVE-METHOD-FUNCTION PCL::EMIT-MISS
++-         PCL::GET-METHOD-FUNCTION-PV-CELL PCL::METHOD-FUNCTION-GET
++-         PCL::FIND-CLASS-FROM-CELL PCL::RECORD-DEFINITION
++-         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION1
++-         PCL::FIND-CLASS-PREDICATE-FROM-CELL
++-         PCL::NAMED-OBJECT-PRINT-FUNCTION
++-         PCL::PRECOMPUTE-EFFECTIVE-METHODS PCL::INITIALIZE-INFO
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
++-         PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL1
++-         PCL::GET-MAKE-INSTANCE-FUNCTION-INTERNAL
++-         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS1 PCL::MAKE-EMF-CACHE
++-         PCL::|(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
++-         PCL::MAKE-FGEN
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
++-         PCL::BOOTSTRAP-MAKE-SLOT-DEFINITIONS
++-         PCL::|(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::OPTIMIZE-ACCESSOR-CALL
++-         PCL::MAKE-INSTANCE-FUNCTION-COMPLEX PCL::UPDATE-SLOTS-IN-PV
++-         PCL::COMPUTE-PV-SLOT
++-         PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
++-         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T T))|
++-         PCL::OPTIMIZE-INSTANCE-ACCESS
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
++-         PCL::MAKE-INSTANCE-FUNCTION-SIMPLE
++-         PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::OPTIMIZE-GENERIC-FUNCTION-CALL
++-         PCL::LOAD-FUNCTION-GENERATOR WALKER::WALK-BINDINGS-1
++-         PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
++-         PCL::REAL-MAKE-METHOD-INITARGS-FORM
++-         PCL::|(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
++-         PCL::|(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
++-         WALKER::WALK-TEMPLATE-HANDLE-REPEAT
++-         PCL::MAKE-PARAMETER-REFERENCES
++-         PCL::|(FAST-METHOD SLOT-UNBOUND (T T T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
++-         PCL::EXPAND-EMF-CALL-METHOD
++-         PCL::|(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
++-         PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
++-         PCL::MAKE-FINAL-ORDINARY-DFUN-INTERNAL)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::GET-METHOD WALKER::WALK-ARGLIST PCL::REAL-GET-METHOD
++-         PCL::EMIT-FETCH-WRAPPER PCL::CHECK-INITARGS-2-LIST
++-         PCL::FILL-CACHE PCL::CHECK-INITARGS-2-PLIST PCL::MAKE-EMF-CALL
++-         PCL::CHECK-INITARGS-1 PCL::CAN-OPTIMIZE-ACCESS1)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::GET-SECONDARY-DISPATCH-FUNCTION2)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
+++         PCL::EMIT-N-N-WRITERS PCL::COUNT-ALL-DFUNS
+++         PCL::EMIT-N-N-READERS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::REAL-LOAD-DEFCLASS PCL::LOAD-DEFCLASS PCL::SET-ARG-INFO1
++-         PCL::BOOTSTRAP-MAKE-SLOT-DEFINITION PCL::EMIT-SLOT-ACCESS
++-         WALKER::WALK-TEMPLATE-HANDLE-REPEAT-1 PCL::OPTIMIZE-GF-CALL
++-         PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::MAKE-EARLY-CLASS-DEFINITION)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         PCL::GET-EFFECTIVE-METHOD-GENSYM PCL::RENEW-SYS-FILES
+++         PCL::UPDATE-DISPATCH-DFUNS PCL::IN-THE-COMPILER-P
+++         PCL::SHOW-FREE-CACHE-VECTORS PCL::BOOTSTRAP-BUILT-IN-CLASSES
+++         PCL::MAKE-CACHE PCL::ALLOCATE-FUNCALLABLE-INSTANCE-2
+++         PCL::ALLOCATE-FUNCALLABLE-INSTANCE-1
+++         PCL::STRUCTURE-FUNCTIONS-EXIST-P PCL::NO-METHODS-DFUN-INFO
+++         PCL::SHOW-EMF-CALL-TRACE PCL::INITIAL-DFUN-INFO
+++         PCL::DISPATCH-DFUN-INFO PCL::MAKE-ARG-INFO
+++         PCL::INITIALIZE-CHECKING-OR-CACHING-FUNCTION-LIST
+++         PCL::%%ALLOCATE-INSTANCE--CLASS
+++         PCL::INITIAL-DISPATCH-DFUN-INFO PCL::CACHES-TO-ALLOCATE
+++         PCL::MAKE-CPD PCL::LIST-ALL-DFUNS PCL::SHOW-DFUN-CONSTRUCTORS
+++         PCL::BOOTSTRAP-META-BRAID PCL::DEFAULT-METHOD-ONLY-DFUN-INFO)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::FIXNUM)
++-             COMMON-LISP::T)
++-         PCL::GET-CACHE PCL::FILL-CACHE-FROM-CACHE-P)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::BOOLEAN)
+++         PCL::CACHE-VALUEP)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::*)
++-             COMMON-LISP::FIXNUM)
++-         PCL::COMPUTE-PRIMARY-CACHE-LOCATION-FROM-LOCATION)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) PCL::FIELD-TYPE)
+++         PCL::CACHE-FIELD)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         PCL::EVAL-FORM PCL::EARLY-CLASS-NAME-OF PCL::DFUN-INFO-CACHE
++-         PCL::MAKE-CONSTANT-FUNCTION PCL::EXPAND-SHORT-DEFCOMBIN
++-         PCL::COPY-CACHE PCL::PROCLAIM-INCOMPATIBLE-SUPERCLASSES
++-         PCL::MAKE-INITIAL-DFUN PCL::ECD-METACLASS
++-         PCL::EXTRACT-SPECIALIZER-NAMES PCL::GBOUNDP
++-         PCL::GET-SETF-FUNCTION-NAME PCL::USE-CACHING-DFUN-P
++-         PCL::INITIALIZE-INFO-CACHED-CONSTANTS
++-         PCL::STRUCTURE-TYPE-INTERNAL-SLOTDS COMMON-LISP::CLASS-OF
++-         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-NIL-FUNCTION
++-         PCL::ARG-INFO-KEY/REST-P PCL::METHOD-CALL-CALL-METHOD-ARGS
++-         PCL::FGEN-GENSYMS PCL::EARLY-CLASS-PRECEDENCE-LIST
++-         PCL::EARLY-SLOT-DEFINITION-LOCATION
++-         PCL::EXPAND-MAKE-INSTANCE-FORM PCL::INTERN-EQL-SPECIALIZER
++-         PCL::METHOD-FUNCTION-METHOD PCL::FGEN-GENERATOR-LAMBDA
++-         PCL::SLOT-READER-SYMBOL PCL::CACHING-P
++-         PCL::EARLY-METHOD-QUALIFIERS
++-         PCL::EARLY-COLLECT-DEFAULT-INITARGS PCL::KEYWORD-SPEC-NAME
++-         PCL::ONE-INDEX-P PCL::COMPLICATED-INSTANCE-CREATION-METHOD
++-         PCL::DFUN-ARG-SYMBOL PCL::N-N-CACHE
++-         PCL::ONE-INDEX-DFUN-INFO-INDEX PCL::INITIAL-DISPATCH-CACHE
++-         PCL::CPD-CLASS PCL::FAST-METHOD-CALL-ARG-INFO
++-         PCL::MAKE-PV-TYPE-DECLARATION PCL::COMPUTE-STD-CPL-PHASE-2
++-         PCL::GET-BUILT-IN-CLASS-SYMBOL
++-         PCL::INITIALIZE-INFO-CACHED-RI-VALID-P
++-         PCL::UPDATE-GFS-OF-CLASS PCL::STRUCTURE-SVUC-METHOD
++-         PCL::SLOT-BOUNDP-SYMBOL PCL::FGEN-SYSTEM
++-         PCL::FIND-CYCLE-REASONS ITERATE::SEQUENCE-ACCESSOR
++-         PCL::GF-INFO-C-A-M-EMF-STD-P PCL::STRUCTURE-TYPE-P
++-         PCL::TWO-CLASS-CACHE PCL::METHOD-LL->GENERIC-FUNCTION-LL
++-         PCL::ONE-CLASS-ACCESSOR-TYPE PCL::WRAPPER-FOR-STRUCTURE
++-         PCL::ACCESSOR-DFUN-INFO-CACHE PCL::%SYMBOL-FUNCTION
++-         PCL::STRUCTURE-TYPE PCL::NET-TEST-CONVERTER
++-         PCL::CONSTANT-SYMBOL-P PCL::GMAKUNBOUND PCL::INITIAL-P
++-         PCL::GF-DFUN-CACHE PCL::STRUCTURE-SLOTD-TYPE
++-         PCL::%STD-INSTANCE-WRAPPER PCL::INITIALIZE-INFO-P
++-         PCL::CACHING-DFUN-INFO
++-         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::FAST-METHOD-CALL-P PCL::GF-DFUN-INFO
++-         PCL::INITIALIZE-INFO-BOUND-SLOTS PCL::ECD-CLASS-NAME
++-         PCL::MAKE-INSTANCE-FUNCTION-SYMBOL
++-         PCL::INITIALIZE-INFO-CACHED-DEFAULT-INITARGS-FUNCTION
++-         PCL::STD-INSTANCE-P PCL::EXTRACT-PARAMETERS
++-         WALKER::GET-WALKER-TEMPLATE PCL::SYMBOL-PKG-NAME
++-         PCL::CCLOSUREP PCL::LOOKUP-FGEN PCL::CPD-SUPERS
++-         PCL::ARG-INFO-KEYWORDS PCL::DISPATCH-P
++-         PCL::INITIALIZE-INFO-CACHED-NEW-KEYS
++-         PCL::MAKE-CALLS-TYPE-DECLARATION PCL::INITIALIZE-INFO-WRAPPER
++-         PCL::%FBOUNDP PCL::DEFAULT-STRUCTURE-INSTANCE-P
++-         WALKER::ENV-WALK-FORM PCL::EARLY-CLASS-DEFINITION
++-         PCL::SORT-CALLS PCL::EARLY-METHOD-STANDARD-ACCESSOR-SLOT-NAME
++-         PCL::DISPATCH-CACHE PCL::INITIALIZE-INFO-KEY
++-         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
++-         PCL::ARG-INFO-METATYPES PCL::GF-LAMBDA-LIST
++-         WALKER::ENV-LEXICAL-VARIABLES PCL::ACCESSOR-DFUN-INFO-P
++-         PCL::GF-PRECOMPUTE-DFUN-AND-EMF-P PCL::COMPUTE-LINE-SIZE
++-         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-T-FUNCTION
++-         PCL::FORCE-CACHE-FLUSHES PCL::TWO-CLASS-P PCL::DFUN-INFO-P
++-         PCL::MAP-SPECIALIZERS PCL::MAKE-PERMUTATION-VECTOR
++-         WALKER::ENV-LOCK PCL::CPD-AFTER PCL::EARLY-CLASS-SLOTS
++-         PCL::GET-PV-CELL-FOR-CLASS PCL::ARG-INFO-P
++-         PCL::EXTRACT-REQUIRED-PARAMETERS
++-         PCL::STRUCTURE-SLOTD-READER-FUNCTION PCL::COMPUTE-CLASS-SLOTS
++-         PCL::INFORM-TYPE-SYSTEM-ABOUT-STD-CLASS
++-         PCL::TWO-CLASS-WRAPPER0
++-         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION-SYMBOL
++-         PCL::COMPILE-LAMBDA-UNCOMPILED PCL::EARLY-CLASS-NAME
++-         PCL::SFUN-P PCL::EXTRACT-LAMBDA-LIST PCL::UNDEFMETHOD-1
++-         PCL::ONE-INDEX-DFUN-INFO-ACCESSOR-TYPE PCL::WRAPPER-OF
++-         PCL::ARG-INFO-LAMBDA-LIST PCL::LIST-DFUN
++-         PCL::NEXT-WRAPPER-FIELD PCL::CHECK-WRAPPER-VALIDITY
++-         PCL::STRUCTURE-SLOTD-NAME PCL::BUILT-IN-WRAPPER-OF
++-         PCL::GET-MAKE-INSTANCE-FUNCTIONS
++-         PCL::GENERIC-CLOBBERS-FUNCTION PCL::NO-METHODS-P
++-         PCL::CONSTANT-VALUE-P WALKER::ENV-WALK-FUNCTION
++-         PCL::INITIAL-CACHE PCL::SLOT-INITARGS-FROM-STRUCTURE-SLOTD
++-         PCL::MAKE-CLASS-EQ-PREDICATE
++-         PCL::GET-MAKE-INSTANCE-FUNCTION-SYMBOL
++-         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS
++-         PCL::FUNCTION-PRETTY-ARGLIST
++-         PCL::MAKE-OPTIMIZED-STRUCTURE-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::FTYPE-DECLARATION-FROM-LAMBDA-LIST PCL::TYPE-CLASS
++-         PCL::CHECK-CACHE PCL::STANDARD-SVUC-METHOD
++-         PCL::STRUCTURE-SLOTD-ACCESSOR-SYMBOL PCL::GF-INFO-FAST-MF-P
++-         PCL::STRUCTURE-SLOTD-WRITER-FUNCTION
++-         PCL::BOOTSTRAP-CLASS-PREDICATES PCL::DEFAULT-METHOD-ONLY-CACHE
++-         PCL::GET-CACHE-VECTOR PCL::SLOT-WRITER-SYMBOL
++-         PCL::FGEN-GENERATOR PCL::DNET-METHODS-P
++-         PCL::DEFAULT-STRUCTURE-TYPE
++-         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITARGS-FORM-LIST
++-         PCL::N-N-ACCESSOR-TYPE
++-         PCL::STRUCTURE-TYPE-SLOT-DESCRIPTION-LIST
++-         WALKER::ENV-DECLARATIONS WALKER::VARIABLE-GLOBALLY-SPECIAL-P
++-         PCL::ONE-INDEX-INDEX PCL::ONE-INDEX-DFUN-INFO-CACHE
++-         PCL::EARLY-ACCESSOR-METHOD-SLOT-NAME PCL::EARLY-CLASS-SLOTDS
++-         PCL::CANONICAL-SLOT-NAME PCL::EARLY-COLLECT-CPL
++-         PCL::RESET-CLASS-INITIALIZE-INFO-1
++-         PCL::BUILT-IN-OR-STRUCTURE-WRAPPER1 PCL::ONE-INDEX-CACHE
++-         PCL::MAKE-STRUCTURE-SLOT-BOUNDP-FUNCTION
++-         PCL::MAKE-TYPE-PREDICATE PCL::FREE-CACHE
++-         ITERATE::VARIABLES-FROM-LET
++-         PCL::EARLY-METHOD-STANDARD-ACCESSOR-P
++-         PCL::DEFAULT-CONSTANT-CONVERTER PCL::CLASS-PREDICATE
++-         PCL::CHECKING-CACHE PCL::ARG-INFO-PRECEDENCE
++-         PCL::METHOD-FUNCTION-NEEDS-NEXT-METHODS-P
++-         PCL::DEFAULT-METHOD-ONLY-P
++-         PCL::COMPUTE-APPLICABLE-METHODS-EMF-STD-P
++-         PCL::STRUCTURE-SLOT-BOUNDP PCL::ONE-INDEX-ACCESSOR-TYPE
++-         PCL::TWO-CLASS-ACCESSOR-TYPE
++-         PCL::USE-DEFAULT-METHOD-ONLY-DFUN-P PCL::METHOD-CALL-P
++-         PCL::UPDATE-CLASS-CAN-PRECEDE-P PCL::CONSTANT-VALUE-DFUN-INFO
++-         PCL::COMPILE-LAMBDA-DEFERRED PCL::SETFBOUNDP
++-         PCL::CLASS-HAS-A-FORWARD-REFERENCED-SUPERCLASS-P
++-         PCL::PV-TABLEP PCL::STRUCTURE-OBJECT-P PCL::TWO-CLASS-INDEX
++-         PCL::METHOD-FUNCTION-PV-TABLE PCL::ECD-OTHER-INITARGS
++-         WALKER::GET-IMPLEMENTATION-DEPENDENT-WALKER-TEMPLATE
++-         PCL::EARLY-GF-P PCL::STRUCTURE-SLOTD-INIT-FORM
++-         PCL::FUNCALLABLE-INSTANCE-P PCL::CHECKING-FUNCTION
++-         PCL::FUNCTION-RETURNING-NIL PCL::FUNCTION-RETURNING-T
++-         PCL::UPDATE-C-A-M-GF-INFO PCL::COUNT-DFUN
++-         PCL::UNPARSE-SPECIALIZERS PCL::CACHE-OWNER
++-         PCL::EARLY-METHOD-CLASS
++-         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITIALIZE-FUNCTION
++-         PCL::EARLY-SLOT-DEFINITION-NAME
++-         PCL::GET-MAKE-INSTANCE-FUNCTION
++-         PCL::STRUCTURE-TYPE-INCLUDED-TYPE-NAME
++-         PCL::ECD-SUPERCLASS-NAMES PCL::GFS-OF-TYPE PCL::SORT-SLOTS
++-         PCL::DO-STANDARD-DEFSETFS-FOR-DEFCLASS
++-         PCL::COMPUTE-MCASE-PARAMETERS PCL::METHOD-FUNCTION-PLIST
++-         PCL::ARG-INFO-NKEYS PCL::FINAL-ACCESSOR-DFUN-TYPE
++-         PCL::EARLY-COLLECT-SLOTS PCL::EARLY-METHOD-LAMBDA-LIST
++-         PCL::FAST-INSTANCE-BOUNDP-P PCL::GDEFINITION
++-         PCL::%CCLOSURE-ENV SYSTEM::%COMPILED-FUNCTION-NAME
++-         PCL::RESET-INITIALIZE-INFO PCL::ARG-INFO-NUMBER-OPTIONAL
++-         PCL::RESET-CLASS-INITIALIZE-INFO
++-         PCL::INITIALIZE-INFO-CACHED-VALID-P PCL::INTERNED-SYMBOL-P
++-         PCL::EARLY-GF-NAME PCL::FGEN-TEST PCL::MAKE-INITFUNCTION
++-         PCL::MAP-ALL-GENERIC-FUNCTIONS PCL::SHOW-DFUN-COSTS
++-         PCL::CLASS-FROM-TYPE PCL::EXPAND-LONG-DEFCOMBIN
++-         PCL::MAKE-DEFAULT-METHOD-GROUP-DESCRIPTION
++-         PCL::FREE-CACHE-VECTOR PCL::%STD-INSTANCE-SLOTS
++-         PCL::ALLOCATE-CACHE-VECTOR PCL::ONE-CLASS-P
++-         PCL::CLASS-PRECEDENCE-DESCRIPTION-P PCL::SLOT-VECTOR-SYMBOL
++-         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION
++-         PCL::ONE-CLASS-WRAPPER0 PCL::N-N-P
++-         PCL::UPDATE-ALL-C-A-M-GF-INFO PCL::CHECKING-P
++-         PCL::TWO-CLASS-WRAPPER1 PCL::PARSE-SPECIALIZERS
++-         PCL::FORMAT-CYCLE-REASONS PCL::FLUSH-CACHE-VECTOR-INTERNAL
++-         PCL::UNENCAPSULATED-FDEFINITION PCL::ONE-CLASS-INDEX
++-         PCL::DEFAULT-CONSTANTP PCL::UPDATE-GF-INFO
++-         PCL::ACCESSOR-DFUN-INFO-ACCESSOR-TYPE
++-         PCL::INITIALIZE-INFO-CACHED-INITARGS-FORM-LIST
++-         PCL::MAKE-EQL-PREDICATE PCL::ARG-INFO-VALID-P
++-         PCL::CACHING-CACHE PCL::METHOD-FUNCTION-FROM-FAST-FUNCTION
++-         PCL::FAST-METHOD-CALL-NEXT-METHOD-CALL
++-         PCL::DEFAULT-SECONDARY-DISPATCH-FUNCTION
++-         PCL::MAKE-FUNCTION-INLINE PCL::STORE-FGEN
++-         PCL::LIST-LARGE-CACHE PCL::METHODS-CONTAIN-EQL-SPECIALIZER-P
++-         PCL::ARG-INFO-APPLYP SYSTEM::%STRUCTURE-NAME
++-         PCL::GF-INFO-SIMPLE-ACCESSOR-TYPE PCL::ECD-SOURCE
++-         PCL::EARLY-CLASS-DIRECT-SUBCLASSES
++-         PCL::UPDATE-PV-TABLE-CACHE-INFO PCL::DEFAULT-TEST-CONVERTER
++-         PCL::MAKE-CALL-METHODS PCL::GET-BUILT-IN-WRAPPER-SYMBOL
++-         PCL::GF-INFO-STATIC-C-A-M-EMF PCL::DEFAULT-STRUCTUREP
++-         PCL::CONSTANT-VALUE-CACHE PCL::INITIAL-DISPATCH-P
++-         PCL::ECD-CANONICAL-SLOTS PCL::WRAPPER-FIELD
++-         PCL::UPDATE-GF-SIMPLE-ACCESSOR-TYPE PCL::ONE-CLASS-CACHE
++-         PCL::CACHING-DFUN-COST PCL::LEGAL-CLASS-NAME-P
++-         PCL::INTERN-FUNCTION-NAME PCL::FAST-METHOD-CALL-PV-CELL
++-         PCL::CACHE-P PCL::ONE-INDEX-DFUN-INFO-P
++-         PCL::MAKE-PV-TABLE-TYPE-DECLARATION PCL::NO-METHODS-CACHE)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         PCL::ONE-INDEX-LIMIT-FN PCL::EARLY-CLASS-SIZE PCL::CACHE-COUNT
+++         PCL::PV-TABLE-PV-SIZE PCL::DEFAULT-LIMIT-FN
+++         PCL::CHECKING-LIMIT-FN PCL::CACHING-LIMIT-FN
+++         PCL::N-N-ACCESSORS-LIMIT-FN PCL::CPD-COUNT
+++         PCL::FAST-INSTANCE-BOUNDP-INDEX PCL::ARG-INFO-NUMBER-REQUIRED
+++         PCL::PV-CACHE-LIMIT-FN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
++-         PCL::UPDATE-MAKE-INSTANCE-FUNCTION-TABLE PCL::UNTRACE-METHOD
++-         COMMON-LISP::METHOD-COMBINATION-ERROR
++-         COMMON-LISP::INVALID-METHOD-ERROR PCL::LIST-LARGE-CACHES)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
+++         PCL::POWER-OF-TWO-CEILING)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(PCL::TRACE-METHOD-INTERNAL PCL::FDEFINE-CAREFULLY
+++         PCL::REDEFINE-FUNCTION PCL::DO-STANDARD-DEFSETF-1)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::EMIT-DLAP PCL::GET-SECONDARY-DISPATCH-FUNCTION1)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
+++         PCL::MAKE-CLASS-PREDICATE-NAME PCL::MAKE-KEYWORD)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807))
++-             COMMON-LISP::T)
++-         PCL::COMPUTE-STD-CPL-PHASE-3)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::INTEGER 1 255))
+++         PCL::CACHE-NKEYS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::EXPAND-DEFMETHOD PCL::LOAD-DEFMETHOD-INTERNAL)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::INTEGER 1 256))
+++         PCL::CACHE-LINE-SIZE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM COMMON-LISP::T)
++              COMMON-LISP::T)
++-         PCL::BOOTSTRAP-INITIALIZE-CLASS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::LIST)
++-         PCL::PV-TABLE-CALL-LIST PCL::CACHE-OVERFLOW
++-         PCL::PV-TABLE-SLOT-NAME-LISTS)) 
+++         PCL::%CCLOSURE-ENV-NTHCDR)) 
++ (IN-PACKAGE "PCL")
++ 
++-(DOLIST (V '(|(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-METHODS)|
+++(DOLIST (V '(|(FAST-WRITER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-METHODS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT SLOTS)|
++                 |(FAST-WRITER-METHOD SLOT-CLASS SLOTS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-SLOTS)|
++                 |(FAST-WRITER-METHOD SLOT-CLASS DIRECT-SLOTS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT METHODS)|
++                 |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION METHODS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT OPTIONS)|
++@@ -1063,16 +1148,17 @@
++                 COMPATIBLE-META-CLASS-CHANGE-P
++                 |(FAST-READER-METHOD SLOT-OBJECT CLASS-EQ-SPECIALIZER)|
++                 |(FAST-READER-METHOD CLASS CLASS-EQ-SPECIALIZER)|
++-                |(BOUNDP READER-FUNCTION)| |(BOUNDP PREDICATE-NAME)|
++-                |(BOUNDP READERS)| UPDATE-GF-DFUN
++-                |(BOUNDP CLASS-PRECEDENCE-LIST)|
+++                |(BOUNDP READER-FUNCTION)| TRACE-METHOD-INTERNAL
+++                |(BOUNDP PREDICATE-NAME)| |(BOUNDP READERS)|
+++                UPDATE-GF-DFUN |(BOUNDP CLASS-PRECEDENCE-LIST)|
++                 |(BOUNDP ACCESSOR-FLAGS)| |(BOUNDP LOCATION)|
++                 |(BOUNDP DOCUMENTATION)| SPECIALIZER-OBJECT
++                 |(BOUNDP INCOMPATIBLE-SUPERCLASS-LIST)|
++                 ACCESSOR-METHOD-SLOT-NAME |(BOUNDP SPECIALIZERS)|
++                 |(BOUNDP IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DEFSTRUCT-ACCESSOR-SYMBOL)|
++-                SPECIALIZER-CLASS |(BOUNDP PRETTY-ARGLIST)|
+++                REDEFINE-FUNCTION SPECIALIZER-CLASS
+++                |(BOUNDP PRETTY-ARGLIST)|
++                 |PCL::PCL-CLASS class predicate|
++                 |PCL::STD-CLASS class predicate|
++                 |(BOUNDP DEFSTRUCT-FORM)|
++@@ -1110,104 +1196,104 @@
++                 |(BOUNDP OPTIONS)| |(WRITER METHOD)|
++                 |PCL::DEPENDENT-UPDATE-MIXIN class predicate|
++                 GENERIC-FUNCTION-PRETTY-ARGLIST |(WRITER SOURCE)|
++-                |(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
++-                |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
++                 |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
++-                |(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
+++                |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
++                 |(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
+++                |(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
+++                |(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
++                 |(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|
+++                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
++                 |(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
++-                |(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
++-                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
++-                |(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
++                 |(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
++-                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
+++                |(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
+++                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
+++                |(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
++                 MAKE-BOUNDP-METHOD-FUNCTION
++                 |(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
++                 |(FAST-METHOD DOCUMENTATION (DOCUMENTATION-MIXIN))|
++                 |PCL::METAOBJECT class predicate|
++-                |(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
++-                |(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
++-                |(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
++-                |(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
++-                |(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
+++                |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
+++                |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
+++                |(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
++                 |(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
++-                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++                 |(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
++-                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
++                 |(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
+++                |(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++                 |(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
++-                |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
++-                |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
++-                |(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
++-                |(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++-                |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
++                 |(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-                |(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-                |(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++                 |(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
+++                |(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
+++                |(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
+++                |(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
+++                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
+++                |(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
+++                |(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
+++                |(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
+++                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
+++                |(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
+++                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++                 |(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
++-                |(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
++-                |(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++                 |(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
++-                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
+++                |(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++                 |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
++-                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
++-                |(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
++-                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
++                 |(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
++                 |(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++-                |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
+++                |(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
+++                |(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
++                 |(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
++-                |(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
+++                |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
+++                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
+++                |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
+++                |(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
+++                |(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
+++                |(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
+++                |(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
++                 |(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
++-                |(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
+++                |(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
+++                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
+++                |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
+++                |(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
+++                |(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
++                 |(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
+++                |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
++                 |(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
++-                |(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
++-                |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
++-                |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
++-                |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
+++                |(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
+++                |(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
+++                |(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
+++                |(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
+++                |(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
+++                |(FAST-METHOD MAKE-INSTANCE (CLASS))|
+++                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++                 |(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
++                 |(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
++-                |(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
++-                |(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
++-                |(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
++-                |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
++-                |(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
+++                |(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
+++                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
++                 |(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
++-                |(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
++-                |(FAST-METHOD MAKE-INSTANCE (CLASS))|
+++                |(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
++                 |(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
++-                |(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
++-                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
++-                |(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
++-                |(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
++                 CLASS-PREDICATE-NAME
++                 |PCL::STRUCTURE-SLOT-DEFINITION class predicate|
++                 |PCL::STRUCTURE-DIRECT-SLOT-DEFINITION class predicate|
++@@ -1233,8 +1319,8 @@
++                 |(WRITER PREDICATE-NAME)| |(WRITER READERS)|
++                 |(READER WRITER-FUNCTION)| |(READER INITFUNCTION)|
++                 INITIALIZE-INTERNAL-SLOT-FUNCTIONS
++-                |SETF PCL SLOT-DEFINITION-TYPE|
++-                |(WRITER CLASS-PRECEDENCE-LIST)| |(READER WRITERS)|
+++                |SETF PCL SLOT-DEFINITION-TYPE| |(READER WRITERS)|
+++                |(WRITER CLASS-PRECEDENCE-LIST)|
++                 |(WRITER ACCESSOR-FLAGS)| |(READER INITFORM)|
++                 METHOD-COMBINATION-P |(WRITER LOCATION)|
++                 |(WRITER DOCUMENTATION)|
++@@ -1248,11 +1334,11 @@
++                 |(READER ALLOCATION)| |(WRITER SPECIALIZERS)|
++                 |(CALL REAL-ENSURE-GF-USING-CLASS--NULL)|
++                 |(WRITER IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(SETF METHOD-GENERIC-FUNCTION)| LEGAL-SPECIALIZERS-P
++-                |(WRITER PRETTY-ARGLIST)| |SETF PCL OBJECT-PLIST|
++-                |(WRITER DEFSTRUCT-FORM)| |(READER FUNCTION)|
++-                |(READER GENERIC-FUNCTION)| |(READER LAMBDA-LIST)|
++-                |(READER SLOT-DEFINITION)|
+++                |(SETF METHOD-GENERIC-FUNCTION)|
+++                |(WRITER PRETTY-ARGLIST)| LEGAL-SPECIALIZERS-P
+++                |SETF PCL OBJECT-PLIST| |(WRITER DEFSTRUCT-FORM)|
+++                |(READER FUNCTION)| |(READER GENERIC-FUNCTION)|
+++                |(READER LAMBDA-LIST)| |(READER SLOT-DEFINITION)|
++                 |PCL::CLASS-PROTOTYPE-SPECIALIZER class predicate|
++                 |SETF PCL SLOT-DEFINITION-INITFORM|
++                 |SETF PCL CLASS-DEFSTRUCT-FORM|
++@@ -1273,17 +1359,16 @@
++                 |SETF PCL SLOT-DEFINITION-ALLOCATION|
++                 |SETF PCL SLOT-DEFINITION-INITFUNCTION|
++                 |(WRITER SLOT-NAME)| |(BOUNDP NAME)|
++-                |(WRITER ALLOCATION)| |(READER FAST-FUNCTION)|
+++                |(READER FAST-FUNCTION)| |(WRITER ALLOCATION)|
++                 |(READER METHOD-CLASS)| |(SETF OBJECT-PLIST)|
++                 |(READER INTERNAL-WRITER-FUNCTION)|
++                 |(READER INTERNAL-READER-FUNCTION)|
++                 |(READER METHOD-COMBINATION)|
++                 METHOD-COMBINATION-OPTIONS |(READER DIRECT-SLOTS)|
++                 |(READER DIRECT-METHODS)|
++-                |SETF PCL SLOT-DEFINITION-READERS|
++-                |(READER BOUNDP-FUNCTION)| |(WRITER FUNCTION)|
++-                |(WRITER GENERIC-FUNCTION)| |SETF PCL DOCUMENTATION|
++-                |(READER DIRECT-SUBCLASSES)|
+++                |SETF PCL SLOT-DEFINITION-READERS| |(WRITER FUNCTION)|
+++                |(WRITER GENERIC-FUNCTION)| |(READER BOUNDP-FUNCTION)|
+++                |SETF PCL DOCUMENTATION| |(READER DIRECT-SUBCLASSES)|
++                 |(READER DIRECT-SUPERCLASSES)| |(WRITER LAMBDA-LIST)|
++                 FUNCALLABLE-STANDARD-CLASS-P
++                 |(FAST-WRITER-METHOD SLOT-OBJECT METHOD)|
++@@ -1294,7 +1379,7 @@
++                 |SETF PCL SLOT-VALUE-USING-CLASS|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 |(FAST-WRITER-METHOD STRUCTURE-SLOT-DEFINITION DEFSTRUCT-ACCESSOR-SYMBOL)|
++-                |(WRITER PROTOTYPE)| |(BOUNDP OBJECT)| |(BOUNDP TYPE)|
+++                |(WRITER PROTOTYPE)| |(BOUNDP TYPE)| |(BOUNDP OBJECT)|
++                 CLASS-CAN-PRECEDE-LIST |SETF PCL CLASS-DIRECT-SLOTS|
++                 |SETF PCL CLASS-SLOTS| SLOT-ACCESSOR-FUNCTION
++                 |(BOUNDP PLIST)|
++@@ -1309,11 +1394,11 @@
++                 |(FAST-WRITER-METHOD SLOT-OBJECT ARG-INFO)|
++                 |PCL::PLIST-MIXIN class predicate|
++                 |(WRITER FAST-FUNCTION)| |(WRITER METHOD-CLASS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT WRAPPER)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT WRAPPER)| GET-METHOD
++                 |(WRITER INTERNAL-WRITER-FUNCTION)|
++                 |(WRITER INTERNAL-READER-FUNCTION)|
++-                |(WRITER METHOD-COMBINATION)| GET-METHOD
++-                |(WRITER DIRECT-SLOTS)| |(WRITER DIRECT-METHODS)|
+++                |(WRITER METHOD-COMBINATION)| |(WRITER DIRECT-SLOTS)|
+++                |(WRITER DIRECT-METHODS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT INITARGS)|
++                 |(FAST-WRITER-METHOD SLOT-DEFINITION INITARGS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT OPERATOR)|
++@@ -1383,18 +1468,18 @@
++                 |(FAST-READER-METHOD SLOT-DEFINITION READERS)|
++                 |(FAST-READER-METHOD SLOT-OBJECT SPECIALIZERS)|
++                 |(FAST-READER-METHOD STANDARD-METHOD SPECIALIZERS)|
++-                |(FAST-READER-METHOD SHORT-METHOD-COMBINATION IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(FAST-READER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(FAST-READER-METHOD SPECIALIZER TYPE)|
++                 |(FAST-READER-METHOD SLOT-OBJECT PROTOTYPE)|
++                 |(FAST-READER-METHOD PCL-CLASS PROTOTYPE)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION TYPE)|
+++                |(FAST-READER-METHOD SLOT-OBJECT TYPE)|
+++                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION TYPE)|
+++                |(FAST-READER-METHOD SHORT-METHOD-COMBINATION IDENTITY-WITH-ONE-ARGUMENT)|
+++                |(FAST-READER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(FAST-READER-METHOD CLASS-EQ-SPECIALIZER OBJECT)|
++                 |(FAST-READER-METHOD CLASS-PROTOTYPE-SPECIALIZER OBJECT)|
++                 |(FAST-READER-METHOD SLOT-OBJECT OBJECT)|
++                 |(FAST-READER-METHOD EQL-SPECIALIZER OBJECT)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION TYPE)|
++-                |(FAST-READER-METHOD SLOT-OBJECT TYPE)|
++-                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION TYPE)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++                 |(FAST-READER-METHOD STRUCTURE-CLASS DEFSTRUCT-FORM)|
++                 |(FAST-READER-METHOD SLOT-OBJECT INITFORM)|
++@@ -1416,11 +1501,11 @@
++                 |(FAST-READER-METHOD SLOT-CLASS SLOTS)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SLOTS)|
++                 |(FAST-READER-METHOD SLOT-CLASS DIRECT-SLOTS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-READER-METHOD SLOT-OBJECT METHODS)|
++                 |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION METHODS)|
++                 |(FAST-READER-METHOD SLOT-OBJECT OPTIONS)|
++                 |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION OPTIONS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SUBCLASSES)|
++                 |(FAST-READER-METHOD CLASS DIRECT-SUBCLASSES)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SUPERCLASSES)|
++@@ -1458,8 +1543,8 @@
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT READERS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT SPECIALIZERS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT PROTOTYPE)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT OBJECT)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT TYPE)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT OBJECT)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT INITFORM)|
++                 |(SETF SLOT-VALUE-USING-CLASS)|
++@@ -1485,10 +1570,10 @@
++                 |(SETF SLOT-DEFINITION-TYPE)|
++                 |(SETF SLOT-DEFINITION-INITFORM)|
++                 |(BOUNDP INITIALIZE-INFO)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-METHODS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT SLOTS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SLOTS)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT METHODS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT OPTIONS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SUBCLASSES)|
++@@ -1498,94 +1583,94 @@
++                 GENERIC-FUNCTION-P
++                 |PCL::SLOT-DEFINITION class predicate| |(READER NAME)|
++                 |(READER CLASS)|
++-                |(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (T T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
+++                |(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
+++                |(FAST-METHOD SLOT-UNBOUND (T T T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
+++                |(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD (SETF DOCUMENTATION) (T T))|
++                 |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
+++                |(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
++                 |(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
++-                |(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
++-                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
++-                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
++-                |(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
++-                |(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
+++                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
++                 |(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
+++                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
+++                |(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
+++                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD PRINT-OBJECT (CLASS T))|
+++                |(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
++                 |(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
+++                |(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
++                 |(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
++                 |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
++-                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
++-                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
++-                |(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
++-                |(FAST-METHOD PRINT-OBJECT (CLASS T))|
++-                |(FAST-METHOD PRINT-OBJECT (T T))|
++-                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++                |(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
+++                |(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
+++                |(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
++                 |(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
++-                |(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
++                 |(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
++-                |(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
++-                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
++-                |(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
+++                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++                 |(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
++-                |(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
++-                |(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
++-                |(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
++-                |(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
+++                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
+++                |(FAST-METHOD PRINT-OBJECT (T T))|
+++                |(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
++                 |(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
++-                |(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
++-                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
++-                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
++                 |(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
++-                |(FAST-METHOD (SETF DOCUMENTATION) (T T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
++-                |(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
++-                |(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
++-                |(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
+++                |(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
+++                |(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
++                 |(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
+++                |(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
+++                |(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
++                 |(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
++-                |(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
++-                |(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (T T))|
++                 |(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
++-                |(FAST-METHOD SLOT-UNBOUND (T T T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
+++                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
++                 |(FAST-METHOD SLOT-MISSING (T T T T))|
++-                |(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
++-                |(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
++-                LEGAL-SLOT-NAME-P |(READER OBJECT)| |(READER TYPE)|
+++                |(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|
+++                LEGAL-SLOT-NAME-P |(READER TYPE)| |(READER OBJECT)|
++                 CLASS-WRAPPER |(READER PLIST)|
++                 |(FAST-METHOD CLASS-PREDICATE-NAME (T))|
++                 |(FAST-METHOD DOCUMENTATION (T))|
++                 |(FAST-METHOD NO-APPLICABLE-METHOD (T))|
++                 |(READER SLOTS)| |(WRITER NAME)| DEFINITION-SOURCE
++                 |PCL::SLOT-OBJECT class predicate| DEFAULT-INITARGS
++-                |(WRITER CLASS)| CLASS-SLOT-VALUE |(WRITER OBJECT)|
++-                |(WRITER TYPE)|
+++                |(WRITER CLASS)| CLASS-SLOT-VALUE |(WRITER TYPE)|
+++                |(WRITER OBJECT)|
++                 |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
++                 |(WRITER PLIST)| |(WRITER SLOTS)|
++                 |PCL::DOCUMENTATION-MIXIN class predicate|
++@@ -1625,10 +1710,10 @@
++                 |COMMON-LISP::STANDARD-OBJECT class predicate|
++                 |COMMON-LISP::BUILT-IN-CLASS class predicate|
++                 |SETF PCL CLASS-SLOT-VALUE| |(SETF CLASS-SLOTS)|
++-                |(SETF CLASS-DIRECT-SLOTS)| |(READER OPERATOR)|
++-                |(CALL REAL-GET-METHOD)| |(CALL REAL-REMOVE-METHOD)|
++-                |(CALL REAL-ADD-METHOD)| |(READER ARG-INFO)|
++-                METHOD-COMBINATION-TYPE
+++                |(SETF CLASS-DIRECT-SLOTS)| DO-STANDARD-DEFSETF-1
+++                |(READER OPERATOR)| |(CALL REAL-GET-METHOD)|
+++                |(CALL REAL-REMOVE-METHOD)| |(CALL REAL-ADD-METHOD)|
+++                |(READER ARG-INFO)| METHOD-COMBINATION-TYPE
++                 |(READER DEFSTRUCT-CONSTRUCTOR)|
++                 |(INTERNAL-READER-METHOD STANDARD-GENERIC-FUNCTION ARG-INFO)|
++                 |(READER INITIALIZE-INFO)| |(WRITER WRAPPER)|
++@@ -1637,8 +1722,8 @@
++                 |(WRITER DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 COMPUTE-SLOT-ACCESSOR-INFO |(READER INITARGS)|
++                 |(WRITER CLASS-EQ-SPECIALIZER)|
++-                STANDARD-BOUNDP-METHOD-P |(SETF DOCUMENTATION)|
++-                RAW-INSTANCE-ALLOCATOR
+++                STANDARD-BOUNDP-METHOD-P FDEFINE-CAREFULLY
+++                |(SETF DOCUMENTATION)| RAW-INSTANCE-ALLOCATOR
++                 |SETF PCL SLOT-DEFINITION-DEFSTRUCT-ACCESSOR-SYMBOL|
++                 |SETF PCL CLASS-INITIALIZE-INFO| |(WRITER OPERATOR)|
++                 |(WRITER ARG-INFO)|
++@@ -1651,9 +1736,8 @@
++                 METHOD-COMBINATION-DOCUMENTATION
++                 |SETF PCL SLOT-DEFINITION-INITARGS|
++                 REMOVE-BOUNDP-METHOD ADD-NAMED-METHOD
++-                |(WRITER INITARGS)|
++                 |SETF PCL CLASS-DEFSTRUCT-CONSTRUCTOR|
++-                |(BOUNDP METHOD)|
+++                |(WRITER INITARGS)| |(BOUNDP METHOD)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT PREDICATE-NAME)|
++                 |(FAST-WRITER-METHOD CLASS NAME)|
++                 |(FAST-WRITER-METHOD SLOT-DEFINITION NAME)|
++@@ -1699,11 +1783,11 @@
++                 |(FAST-WRITER-METHOD SLOT-OBJECT READERS)|
++                 |(FAST-WRITER-METHOD SLOT-DEFINITION READERS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT SPECIALIZERS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT PROTOTYPE)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT OBJECT)|
++                 |(FAST-WRITER-METHOD SLOT-DEFINITION TYPE)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT TYPE)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT OBJECT)|
++                 REMOVE-NAMED-METHOD
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++                 |(FAST-WRITER-METHOD STRUCTURE-CLASS DEFSTRUCT-FORM)|
++@@ -1756,5 +1840,6 @@
++                 ENSURE-CLASS-USING-CLASS NO-APPLICABLE-METHOD
++                 SLOT-DEFINITION-WRITERS
++                 COMPUTE-APPLICABLE-METHODS-USING-CLASSES
++-                CLASS-PRECEDENCE-LIST DESCRIBE-OBJECT))
+++                CLASS-PRECEDENCE-LIST DISASSEMBLE DESCRIBE-OBJECT
+++                COMPILE))
++   (SETF (GET V 'COMPILER::PROCLAIMED-CLOSURE) T)) 
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -79,7 +79,7 @@
++ #+ansi-cl (use-package :pcl :user)
++ 
++ (import 'si::(clines defentry defcfun object void int double quit bye gbc system
++-                  *lib-directory* *system-directory*) :user)
+++                  *lib-directory* *system-directory* while) :user)
++ 
++ (let* ((i 4096)(j (si::equal-tail-recursion-check i)))
++   (unless (<= (ash i -1) j)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b97390c95f57180c560c8ea05d0625e3da24bfa8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,600 @@@
++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.
++ .
++ gcl (2.6.12-53) unstable; urgency=medium
++ .
++   * list_order.9
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-08-23
++
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -35,12 +35,6 @@ int  line_length = 72;
++ #define  WRITEC_NEWLINE(strm) (writec_stream('\n',strm))
++ #endif
++ 
++-#define      to_be_escaped(c) \
++-     (standard_readtable->rt.rt_self[(c)&0377].rte_chattrib \
++-      != cat_constituent || \
++-      isLower((c)&0377) || (c) == ':')
++-
++-
++ #define READ_TABLE_CASE (Vreadtable->s.s_dbind->rt.rt_case)
++ 
++ #define      mod(x)          ((x)%Q_SIZE)
++@@ -637,50 +631,31 @@ constant_case(object x) {
++ }
++ 
++ static int
++-all_dots(object x) {
++-
++-  fixnum i;
++-
++-  for (i=0;i<x->s.s_fillp;i++)
++-    if (x->s.s_self[i]!='.')
++-      return 0;
+++needs_escape (object x) {
++ 
++-  return 1;
++-
++-}
++-
++-static int
++-needs_escape (object x,int pp) {
++-
++-  fixnum i;
++-  char ch;
+++  fixnum i,all_dots=1;
+++  int ch;
++ 
++   if (!PRINTescape)
++     return 0;
++ 
++   for (i=0;i<x->s.s_fillp;i++)
++     switch((ch=x->s.s_self[i])) {
++-    case '(':
++-    case ')':
++     case ':':
++-    case '`':
++-    case '\'':
++-    case '"':
++-    case ';':
++-    case ',':
++-    case '\n':
++       return 1;
++-    case ' ':
++-      if (!i) return 1;
+++    case '.':
+++      break;
++     default:
+++      all_dots=0;
+++      if (Vreadtable->s.s_dbind->rt.rt_self[ch].rte_chattrib!=cat_constituent)
+++     return 1;
++       if ((READ_TABLE_CASE==sKupcase   && isLower(ch)) ||
++        (READ_TABLE_CASE==sKdowncase && isUpper(ch)))
++      return 1;
++     }
++ 
++-  if (pp)
++-    if (potential_number_p(x, PRINTbase) || all_dots(x))
++-      return 1;
+++  if (potential_number_p(x, PRINTbase) || all_dots)
+++    return 1;
++ 
++   return !x->s.s_fillp;
++ 
++@@ -690,19 +665,21 @@ needs_escape (object x,int pp) {
++ #define convertible_lower(c) ((READ_TABLE_CASE==sKdowncase||READ_TABLE_CASE==sKinvert)&& isLower(c))
++ 
++ static void
++-print_symbol_name_body(object x,int pp) {
+++print_symbol_name_body(object x) {
++ 
++   int i,j,fc,tc,lw,k,cc;
++ 
++   cc=constant_case(x);
++-  k=needs_escape(x,pp);
+++  k=needs_escape(x);
++ 
++   if (k)
++     write_ch('|');
++ 
++   for (lw=i=0;i<x->s.s_fillp;i++) {
++     j = x->s.s_self[i];
++-    if (PRINTescape && (j == '|' || j == '\\'))
+++    if (PRINTescape &&
+++       (Vreadtable->s.s_dbind->rt.rt_self[j].rte_chattrib==cat_single_escape ||
+++     Vreadtable->s.s_dbind->rt.rt_self[j].rte_chattrib==cat_multiple_escape))
++       write_ch('\\');
++     fc=convertible_upper(j) ? 1 :
++         (convertible_lower(j) ? -1 : 0);
++@@ -711,7 +688,7 @@ print_symbol_name_body(object x,int pp)
++        (PRINTcase == sKdowncase ? -1 :
++         (PRINTcase == sKcapitalize ? (i==lw ? 1 : -1) : 0))));
++     if (ispunct(j)||isspace(j)) lw=i+1;
++-    j+=(tc*fc && !k ? (tc-fc)>>1 : 0)*('A'-'a');
+++    j+=(tc && fc && !k ? (tc-fc)>>1 : 0)*('A'-'a');
++     write_ch(j);
++ 
++   }
++@@ -721,6 +698,42 @@ print_symbol_name_body(object x,int pp)
++ 
++ }
++ 
+++#define DONE 1
+++#define FOUND -1
+++
+++static int
+++write_sharp_eq(object *vp,bool dot) {
+++
+++  bool defined=vp[1]!=Cnil;
+++
+++  if (dot) {
+++    write_str(" . ");
+++    if (!defined) return FOUND;
+++  }
+++
+++  vp[1]=Ct;
+++  write_ch('#');
+++  write_decimal((vp-PRINTvs_top)/2);
+++  write_ch(defined ? '#' : '=');
+++
+++  return defined ? DONE : FOUND;
+++
+++}
+++
+++static int
+++write_sharp_eqs(object x,bool dot) {
+++
+++  object *vp;
+++
+++  for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
+++    if (x == *vp)
+++      return write_sharp_eq(vp,dot);
+++
+++  return 0;
+++
+++}
+++
+++
++ void
++ write_object(x, level)
++ object x;
++@@ -728,7 +741,6 @@ int level;
++ {
++      object r, y;
++      int i, j, k;
++-     object *vp;
++ 
++      cs_check(x);
++ 
++@@ -903,29 +915,15 @@ int level;
++ 
++          if (PRINTescape) {
++            if (x->s.s_hpack == Cnil) {
++-             if (PRINTcircle) {
++-               for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
++-                 if (x == *vp) {
++-                   if (vp[1] != Cnil) {
++-                     write_ch('#');
++-                     write_decimal((vp-PRINTvs_top)/2+1);
++-                     write_ch('#');
++-                     return;
++-                   } else {
++-                     write_ch('#');
++-                     write_decimal((vp-PRINTvs_top)/2+1);
++-                     write_ch('=');
++-                     vp[1] = Ct;
++-                   }
++-                 }
++-             }
+++             if (PRINTcircle)
+++               if (write_sharp_eqs(x,FALSE)==DONE) return;
++              if (PRINTgensym)
++                write_str("#:");
++            } else if (x->s.s_hpack == keyword_package) {
++              write_ch(':');
++            } else if (PRINTpackage||find_symbol(x,current_package())!=x || !intern_flag) {
++ 
++-             print_symbol_name_body(x->s.s_hpack->p.p_name,0);
+++             print_symbol_name_body(x->s.s_hpack->p.p_name);
++ 
++              if (find_symbol(x, x->s.s_hpack) != x)
++                error("can't print symbol");
++@@ -939,7 +937,7 @@ int level;
++            }
++ 
++          }
++-         print_symbol_name_body(x,1);
+++         print_symbol_name_body(x);
++          break;
++        }
++      case t_array:
++@@ -953,23 +951,8 @@ int level;
++                      write_str(">");
++                      break;
++              }
++-             if (PRINTcircle) {
++-                     for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
++-                         if (x == *vp) {
++-                             if (vp[1] != Cnil) {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('#');
++-                                 return;
++-                             } else {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('=');
++-                                 vp[1] = Ct;
++-                                 break;
++-                             }
++-                         }
++-             }
+++             if (PRINTcircle)
+++               if (write_sharp_eqs(x,FALSE)==DONE) return;
++              if (PRINTlevel >= 0 && level >= PRINTlevel) {
++                      write_ch('#');
++                      break;
++@@ -1044,23 +1027,8 @@ int level;
++                      write_str(">");
++                      break;
++              }
++-             if (PRINTcircle) {
++-                     for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
++-                         if (x == *vp) {
++-                             if (vp[1] != Cnil) {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('#');
++-                                 return;
++-                             } else {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('=');
++-                                 vp[1] = Ct;
++-                                 break;
++-                             }
++-                         }
++-             }
+++             if (PRINTcircle)
+++               if (write_sharp_eqs(x,FALSE)==DONE) return;
++              if (PRINTlevel >= 0 && level >= PRINTlevel) {
++                      write_ch('#');
++                      break;
++@@ -1130,23 +1098,8 @@ int level;
++                      write_object(x->c.c_cdr, level);
++                      break;
++              }
++-             if (PRINTcircle) {
++-                     for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
++-                         if (x == *vp) {
++-                             if (vp[1] != Cnil) {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('#');
++-                                 return;
++-                             } else {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('=');
++-                                 vp[1] = Ct;
++-                                 break;
++-                             }
++-                         }
++-             }
+++             if (PRINTcircle)
+++               if (write_sharp_eqs(x,FALSE)==DONE) return;
++                 if (PRINTpretty) {
++              if (x->c.c_car == sLquote &&
++                  type_of(x->c.c_cdr) == t_cons &&
++@@ -1192,22 +1145,15 @@ int level;
++                              }
++                              break;
++                      }
++-                     if (PRINTcircle) {
++-                       for (vp = PRINTvs_top; vp < PRINTvs_limit; vp += 2)
++-                         if (x == *vp) {
++-                             if (vp[1] != Cnil) {
++-                                 write_str(" . #");
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('#');
++-                                 goto RIGHT_PAREN;
++-                             } else {
++-                                 write_ch(INDENT);
++-                                 write_str(". ");
++-                                 write_object(x, level);
++-                                 goto RIGHT_PAREN;
++-                             }
++-                         }
++-                     }
+++                     if (PRINTcircle)
+++                       switch (write_sharp_eqs(x,TRUE)) {
+++                       case FOUND:
+++                         write_object(x, level);
+++                       case DONE:
+++                         goto RIGHT_PAREN;
+++                       default:
+++                         break;
+++                       }
++                      if (i == 0 && y != OBJNULL && type_of(y) == t_symbol)
++                              write_ch(INDENT1);
++                      else
++@@ -1369,23 +1315,8 @@ int level;
++              break;
++ 
++      case t_structure:
++-             if (PRINTcircle) {
++-                     for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
++-                         if (x == *vp) {
++-                             if (vp[1] != Cnil) {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('#');
++-                                 return;
++-                             } else {
++-                                 write_ch('#');
++-                                 write_decimal((vp-PRINTvs_top)/2);
++-                                 write_ch('=');
++-                                 vp[1] = Ct;
++-                                 break;
++-                             }
++-                         }
++-             }
+++             if (PRINTcircle)
+++               if (write_sharp_eqs(x,FALSE)==DONE) return;
++              if (PRINTlevel >= 0 && level >= PRINTlevel) {
++                      write_ch('#');
++                      break;
++@@ -1468,48 +1399,73 @@ static int dgs;
++ 
++ #include "page.h"
++ 
+++#define travel_seen(x) x->d.m
+++#define travel_pushed(x) x->d.f
+++#define travel_bits(x) x->md.mf
+++
++ static void
++-travel_push_new(object x) {
+++travel_push(object x) {
++ 
++-  object y;
++   int i;
++ 
++- BEGIN:
++-  if (NULL_OR_ON_C_STACK(x)) return;
++-  if (is_marked(x)) {
++-    vs_check_push(x);
++-    vs_check_push(Cnil);
+++  if (NULL_OR_ON_C_STACK(x))
+++    return;
+++
+++  if (travel_seen(x)) {
+++
+++    if (!travel_pushed(x)) {
+++      vs_check_push(x);
+++      vs_check_push(Cnil);
+++      travel_pushed(x)=1;
+++    }
+++
++     return;
+++
++   }
+++
++   switch (type_of(x)) {
+++
++   case t_symbol:
++-    if (dgs && x->s.s_hpack==Cnil) {mark(x);}
+++
+++    if (dgs && x->s.s_hpack==Cnil)
+++      travel_seen(x)=1;
++     break;
+++
++   case t_cons:
++-    y=x->c.c_cdr;
++-    mark(x);
++-    travel_push_new(x->c.c_car);
++-    x=y;
++-    goto BEGIN;
+++
+++    {
+++      object y=x->c.c_cdr;
+++      travel_seen(x)=1;
+++      travel_push(x->c.c_car);
+++      travel_push(y);
+++    }
++     break;
+++
++   case t_array:
++-    mark(x);
+++
+++    travel_seen(x)=1;
++     if ((enum aelttype)x->a.a_elttype == aet_object)
++       for (i=0;i<x->a.a_dim;i++)
++-     travel_push_new(x->a.a_self[i]);
+++     travel_push(x->a.a_self[i]);
++     break;
+++
++   case t_vector:
++-    mark(x);
+++
+++    travel_seen(x)=1;
++     if ((enum aelttype)x->v.v_elttype == aet_object)
++       for (i=0;i<x->v.v_fillp;i++)
++-     travel_push_new(x->v.v_self[i]);
+++     travel_push(x->v.v_self[i]);
++     break;
+++
++   case t_structure:
++-    mark(x);
+++
+++    travel_seen(x)=1;
++     for (i = 0;  i < S_DATA(x->str.str_def)->length;  i++)
++-      travel_push_new(structure_ref(x,x->str.str_def,i));
+++      travel_push(structure_ref(x,x->str.str_def,i));
++     break;
+++
++   default:
+++
++     break;
++ 
++   }
++@@ -1518,34 +1474,45 @@ travel_push_new(object x) {
++ 
++ 
++ static void
++-travel_clear_new(object x) {
+++travel_clear(object x) {
++ 
++   int i;
++ 
++- BEGIN:
++-  if (NULL_OR_ON_C_STACK(x) || !is_marked(x)) return;
++-  unmark(x);
+++  if (NULL_OR_ON_C_STACK(x) || !travel_bits(x))
+++    return;
+++
+++  travel_bits(x)=0;
+++
++   switch (type_of(x)) {
+++
++   case t_cons:
++-    travel_clear_new(x->c.c_car);
++-    x=x->c.c_cdr;
++-    goto BEGIN;
+++
+++    travel_clear(x->c.c_car);
+++    travel_clear(x->c.c_cdr);
++     break;
+++
++   case t_array:
+++
++     if ((enum aelttype)x->a.a_elttype == aet_object)
++       for (i=0;i<x->a.a_dim;i++)
++-     travel_clear_new(x->a.a_self[i]);
+++     travel_clear(x->a.a_self[i]);
++     break;
+++
++   case t_vector:
+++
++     if ((enum aelttype)x->v.v_elttype == aet_object)
++       for (i=0;i<x->v.v_fillp;i++)
++-     travel_clear_new(x->v.v_self[i]);
+++     travel_clear(x->v.v_self[i]);
++     break;
+++
++   case t_structure:
+++
++     for (i = 0;  i < S_DATA(x->str.str_def)->length;  i++)
++-      travel_clear_new(structure_ref(x,x->str.str_def,i));
+++      travel_clear(structure_ref(x,x->str.str_def,i));
++     break;
+++
++   default:
+++
++     break;
++ 
++   }
++@@ -1558,74 +1525,14 @@ setupPRINTcircle(object x,int dogensyms)
++ 
++   BEGIN_NO_INTERRUPT;
++   dgs=dogensyms;
++-  travel_push_new(x);
+++  travel_push(x);
++   dgs=0;
++   PRINTvs_limit = vs_top;
++-  travel_clear_new(x);
+++  travel_clear(x);
++   END_NO_INTERRUPT;
++ 
++ }
++ 
++-/* char travel_push_type[32];  */
++-
++-/* static void */
++-/* travel_push_object(x) */
++-/* object x; */
++-/* { */
++-/*   enum type t; */
++-/*   int i; */
++-/*   object *vp; */
++-
++-/*   cs_check(x); */
++-
++-/* BEGIN: */
++-/*   t = type_of(x); */
++-/*   if(travel_push_type[(int)t]==0) return; */
++-/*   if(t==t_symbol && x->s.s_hpack != Cnil) return; */
++-
++-/*   for (vp = PRINTvs_top;  vp < vs_top;  vp += 2) */
++-/*           if (x == *vp) { */
++-/*                   if (vp[1] != Cnil) */
++-/*                           return; */
++-/*                   vp[1] = Ct; */
++-/*                   return; */
++-/*           } */
++-/*   vs_check_push(x); */
++-/*   vs_check_push(Cnil); */
++-/*   if (t == t_array && (enum aelttype)x->a.a_elttype == aet_object) */
++-/*           for (i = 0;  i < x->a.a_dim;  i++) */
++-/*                   travel_push_object(x->a.a_self[i]); */
++-/*   else if (t == t_vector && (enum aelttype)x->v.v_elttype == aet_object) */
++-/*           for (i = 0;  i < x->v.v_fillp;  i++) */
++-/*                   travel_push_object(x->v.v_self[i]); */
++-/*   else if (t == t_cons) { */
++-/*           travel_push_object(x->c.c_car); */
++-/*           x = x->c.c_cdr; */
++-/*           goto BEGIN; */
++-/*   } else if (t == t_structure) { */
++-/*           for (i = 0;  i < S_DATA(x->str.str_def)->length;  i++) */
++-/*             travel_push_object(structure_ref(x,x->str.str_def,i)); */
++-/*   } */
++-/* } */
++-
++-/* static void */
++-/* setupPRINTcircle(x,dogensyms) */
++-/*      object x; */
++-/*      int dogensyms; */
++-/* {  object *vp,*vq; */
++-/*    travel_push_type[(int)t_symbol]=dogensyms; */
++-/*    travel_push_type[(int)t_array]= */
++-/*        (travel_push_type[(int)t_vector]=PRINTarray); */
++-/*    travel_push_object(x); */
++-/*    for (vp = vq = PRINTvs_top;  vp < vs_top;  vp += 2) */
++-/*      if (vp[1] != Cnil) { */
++-/*        vq[0] = vp[0]; */
++-/*        vq[1] = Cnil; */
++-/*        vq += 2; */
++-/*      } */
++-/*    PRINTvs_limit = vs_top = vq; */
++-/*  } */
++-
++ void
++ setupPRINTdefault(x)
++ object x;
++@@ -1640,8 +1547,8 @@ object x;
++              vs_push(PRINTstream);
++              FEwrong_type_argument(sLstream, PRINTstream);
++      }
++-     PRINTescape = symbol_value(sLAprint_escapeA) != Cnil;
++      PRINTreadably = symbol_value(sLAprint_readablyA) != Cnil;
+++     PRINTescape = PRINTreadably || symbol_value(sLAprint_escapeA) != Cnil;
++      PRINTpretty = symbol_value(sLAprint_prettyA) != Cnil;
++      PRINTcircle = symbol_value(sLAprint_circleA) != Cnil;
++      y = symbol_value(sLAprint_baseA);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e599158811bb1bc86b387bc006d4938b80bd1b30
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,50 @@@
++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.
++ .
++ gcl (2.6.12-55) unstable; urgency=medium
++ .
++   * disable gprof on aarch64
++   * Bug fix: "gcl FTBFS on arm64: Unrecoverable error: Segmentation
++     violation..", thanks to Adrian Bunk (Closes: #873052).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/873052
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-08-24
++
++--- gcl-2.6.12.orig/o/regexpr.c
+++++ gcl-2.6.12/o/regexpr.c
++@@ -66,6 +66,7 @@ DEFUN_NEW("COMPILE-REGEXP",object,fScomp
++ 
++   char *tmp;
++   object res;
+++  ufixnum i=0;
++ 
++   if (type_of(p)!= t_string && type_of(p)!=t_symbol)
++     not_a_string_or_symbol(p);
++@@ -82,9 +83,9 @@ DEFUN_NEW("COMPILE-REGEXP",object,fScomp
++   res->v.v_adjustable=0;
++   res->v.v_offset=0;
++   res->v.v_self=NULL;
++-  if (!(res->v.v_self=(void *)regcomp(tmp,&res->v.v_dim)))
+++  if (!(res->v.v_self=(void *)regcomp(tmp,&i)))
++     FEerror("regcomp failure",0);
++-  res->v.v_fillp=res->v.v_dim;
+++  res->v.v_fillp=res->v.v_dim=i;
++ 
++   RETURN1(res);
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3a95b63a9ff38a9edc54dacf7be5cfd218082fab
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++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.
++ .
++ gcl (2.6.12-57) unstable; urgency=medium
++ .
++   * list_order.13
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-08-29
++
++--- gcl-2.6.12.orig/h/elf32_mips_reloc.h
+++++ gcl-2.6.12/h/elf32_mips_reloc.h
++@@ -35,7 +35,7 @@
++       if (a) add_vals(where,MASK(16),(s>>16)+a);
++       break;
++     case R_MIPS_LO16:
++-      if (sym->st_other) s=gpd;
+++      if (sym->st_other) s=gpd ? gpd : ({massert(sym->st_other==2);(ul)got;});
++       a=*where&MASK(16);
++       if (a&0x8000) a|=0xffff0000; 
++       a+=s&MASK(16);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d4b695564c5f63e56eadbe884889a41d985450dd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,412 @@@
++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.
++ .
++ gcl (2.6.12-58) unstable; urgency=medium
++ .
++   * list_order.14
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-01-12
++
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1964,3 +1964,9 @@ vsystem(const char *);
++ 
++ object
++ n_cons_from_x(fixnum,object);
+++
+++int
+++seek_to_end_ofile(FILE *);
+++
+++void
+++travel_find_sharing(object,object);
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -976,100 +976,13 @@ fasd_patch_sharp(object x, int depth)
++ }
++ 
++ object sharing_table;
++-static enum circ_ind
++-is_it_there(object x)
++-{ struct htent *e;
++-  object table=sharing_table;
++-  switch(type_of(x)){
++-  case t_cons:
++-  case t_symbol:
++-  case t_structure:
++-  case t_array:
++-  case t_vector:
++-  case t_package:
++-  e= gethash(x,table);
++-    if (e->hte_key ==OBJNULL)
++-      {sethash(x,table,make_fixnum(-1));
++-       return FIRST_INDEX;
++-     }
++-    else
++-      {int n=fix(e->hte_value);
++-       if (n <0)
++-      e->hte_value=make_fixnum(n-1);
++-       return LATER_INDEX;}
++-  break;
++- default:
++-  return NOT_INDEXED;}}
++ 
++-
++-
++-static void
++-find_sharing(object x)
++-{
++-  cs_check(x);
++- BEGIN:
++-  if(is_it_there(x)!=FIRST_INDEX) return;  
++-
++-     switch (type_of(x)) {
++-
++-     case DP(t_cons:)
++-
++-       find_sharing(x->c.c_car);
++-       x=x->c.c_cdr;
++-       goto BEGIN; 
++-       
++-       break;
++-
++-     case DP(t_vector:)
++-     {
++-             int i;
++-
++-             if ((enum aelttype)x->v.v_elttype != aet_object)
++-               break;
++-
++-             for (i = 0;  i < x->v.v_fillp;  i++)
++-               find_sharing(x->v.v_self[i]);
++-             break;
++-     }
++-     case DP(t_array:)
++-     {
++-             int i, j;
++-             
++-             if ((enum aelttype)x->a.a_elttype != aet_object)
++-               break;
++-
++-             for (i = 0, j = 1;  i < x->a.a_rank;  i++)
++-                     j *= x->a.a_dims[i];
++-             for (i = 0;  i < j;  i++)
++-                     find_sharing(x->a.a_self[i]);
++-             break;
++-     }
++-     case DP(t_structure:)
++-       {object def = x->str.str_def;
++-      int i;
++-      i=S_DATA(def)->length;
++-      while (i--> 0)
++-             find_sharing(structure_ref(x,def,i));
++-      break;
++-       }
++-     default:
++-       break;
++-     }
++-     return;
++-}
++-
++-DEFUN_NEW("FIND-SHARING-TOP",object,fSfind_sharing_top,SI,2,2,NONE,OO,OO,OO,OO,(object x, object table),"")
++-/* static object */
++-/* FFN(find_sharing_top)(object x, object table) */
++-{sharing_table=table;
++- find_sharing(x);
++- return Ct;
+++DEFUN_NEW("FIND-SHARING-TOP",object,fSfind_sharing_top,SI,2,2,NONE,OO,OO,OO,OO,(object x, object table),"") {
+++  sharing_table=table;
+++  travel_find_sharing(x,table);
+++  return Ct;
++ }
++ 
++-
++-
++-
++-
++ /* static object            */
++ /* read_fasd(int i) */
++ /* {object tem; */
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -490,7 +490,6 @@ int level;
++      void (*wf)(int) = write_ch_fun;
++ 
++      object *vt = PRINTvs_top;
++-     object *vl = PRINTvs_limit;
++      bool e = PRINTescape;
++      bool ra = PRINTreadably;
++      bool r = PRINTradix;
++@@ -599,7 +598,6 @@ L:
++      PRINTradix = r;
++      PRINTescape = e;
++      PRINTreadably = ra;
++-     PRINTvs_limit = vl;
++      PRINTvs_top = vt;
++ 
++      write_ch_fun = wf;
++@@ -702,18 +700,19 @@ print_symbol_name_body(object x) {
++ #define FOUND -1
++ 
++ static int
++-do_write_sharp_eq(object x,bool dot) {
+++do_write_sharp_eq(struct htent *e,bool dot) {
++ 
++-  bool defined=x->c.c_cdr!=Cnil;
+++  fixnum val=fix(e->hte_value);
+++  bool defined=val&1;
++ 
++   if (dot) {
++     write_str(" . ");
++     if (!defined) return FOUND;
++   }
++ 
++-  x->c.c_cdr=Ct;
+++  if (!defined) e->hte_value=make_fixnum(val|1);
++   write_ch('#');
++-  write_decimal(fix(x->c.c_car));
+++  write_decimal(val>>1);
++   write_ch(defined ? '#' : '=');
++ 
++   return defined ? DONE : FOUND;
++@@ -726,7 +725,7 @@ write_sharp_eq(object x,bool dot) {
++   struct htent *e;
++ 
++   return PRINTvs_top[0]!=Cnil && (e=gethash(x,PRINTvs_top[0]))->hte_key!=OBJNULL ?
++-    do_write_sharp_eq(e->hte_value,dot) : 0;
+++    do_write_sharp_eq(e,dot) : 0;
++ 
++ }
++ 
++@@ -1392,79 +1391,65 @@ int level;
++      }
++ }
++ 
++-static int dgs;
+++static int dgs,dga;
++ 
++ #include "page.h"
++ 
++-#define travel_seen(x) x->d.m
++-#define travel_pushed(x) x->d.f
++-#define travel_bits(x) x->md.mf
++-
++ static void
++ travel_push(object x) {
++ 
++   int i;
++ 
++-  if (NULL_OR_ON_C_STACK(x))
+++  if (is_imm_fixnum(x))
++     return;
++ 
++-  if (travel_seen(x)) {
+++  if (is_marked(x)) {
++ 
++-    if (!travel_pushed(x)) {
+++    if (imcdr(x) || !x->d.f)
++       vs_check_push(x);
++-      travel_pushed(x)=1;
++-    }
++-
++-    return;
+++    if (!imcdr(x))
+++      x->d.f=1;
++ 
++-  }
++-
++-  switch (type_of(x)) {
+++  } else switch (type_of(x)) {
++ 
++-  case t_symbol:
+++    case t_symbol:
++ 
++-    if (dgs && x->s.s_hpack==Cnil)
++-      travel_seen(x)=1;
++-    break;
++-
++-  case t_cons:
++-
++-    {
++-      object y=x->c.c_cdr;
++-      travel_seen(x)=1;
++-      travel_push(x->c.c_car);
++-      travel_push(y);
++-    }
++-    break;
+++      if (dgs && x->s.s_hpack==Cnil) {
+++     mark(x);
+++      }
+++      break;
++ 
++-  case t_array:
+++    case t_cons:
++ 
++-    travel_seen(x)=1;
++-    if ((enum aelttype)x->a.a_elttype == aet_object)
++-      for (i=0;i<x->a.a_dim;i++)
++-     travel_push(x->a.a_self[i]);
++-    break;
+++      {
+++     object y=x->c.c_cdr;
+++     mark(x);
+++     travel_push(x->c.c_car);
+++     travel_push(y);
+++      }
+++      break;
++ 
++-  case t_vector:
+++    case t_vector:
+++    case t_array:
++ 
++-    travel_seen(x)=1;
++-    if ((enum aelttype)x->v.v_elttype == aet_object)
++-      for (i=0;i<x->v.v_fillp;i++)
++-     travel_push(x->v.v_self[i]);
++-    break;
+++      mark(x);
+++      if (dga && (enum aelttype)x->a.a_elttype==aet_object)
+++     for (i=0;i<x->a.a_dim;i++)
+++       travel_push(x->a.a_self[i]);
+++      break;
++ 
++-  case t_structure:
+++    case t_structure:
++ 
++-    travel_seen(x)=1;
++-    for (i = 0;  i < S_DATA(x->str.str_def)->length;  i++)
++-      travel_push(structure_ref(x,x->str.str_def,i));
++-    break;
+++      mark(x);
+++      for (i = 0;  i < S_DATA(x->str.str_def)->length;  i++)
+++     travel_push(structure_ref(x,x->str.str_def,i));
+++      break;
++ 
++-  default:
+++    default:
++ 
++-    break;
+++      break;
++ 
++-  }
+++    }
++ 
++ }
++ 
++@@ -1474,10 +1459,15 @@ travel_clear(object x) {
++ 
++   int i;
++ 
++-  if (NULL_OR_ON_C_STACK(x) || !travel_bits(x))
+++  if (is_imm_fixnum(x))
+++    return;
+++
+++  if (!is_marked(x))
++     return;
++ 
++-  travel_bits(x)=0;
+++  unmark(x);
+++  if (!imcdr(x))
+++    x->d.f=0;
++ 
++   switch (type_of(x)) {
++ 
++@@ -1487,20 +1477,14 @@ travel_clear(object x) {
++     travel_clear(x->c.c_cdr);
++     break;
++ 
+++  case t_vector:
++   case t_array:
++ 
++-    if ((enum aelttype)x->a.a_elttype == aet_object)
+++    if (dga && (enum aelttype)x->a.a_elttype == aet_object)
++       for (i=0;i<x->a.a_dim;i++)
++      travel_clear(x->a.a_self[i]);
++     break;
++ 
++-  case t_vector:
++-
++-    if ((enum aelttype)x->v.v_elttype == aet_object)
++-      for (i=0;i<x->v.v_fillp;i++)
++-     travel_clear(x->v.v_self[i]);
++-    break;
++-
++   case t_structure:
++ 
++     for (i = 0;  i < S_DATA(x->str.str_def)->length;  i++)
++@@ -1515,26 +1499,47 @@ travel_clear(object x) {
++ 
++ }
++ 
++-object sLeq;
++-
++ static void
++-setupPRINTcircle(object x,int dogensyms) {
++-
++-  object *xp;
+++travel(object x,int mdgs,int mdga) {
++ 
++   BEGIN_NO_INTERRUPT;
++-  dgs=dogensyms;
+++  dgs=mdgs;
+++  dga=mdga;
++   travel_push(x);
++-  dgs=0;
++-  PRINTvs_limit = vs_top;
++   travel_clear(x);
++   END_NO_INTERRUPT;
++ 
++-  vs_check_push(PRINTvs_limit>PRINTvs_top ? funcall_cfun(Lmake_hash_table,2,sKtest,sLeq) : Cnil);
++-  for (xp=PRINTvs_top;xp<PRINTvs_limit;xp++)
++-    sethash(*xp,vs_head,MMcons(make_fixnum(xp-PRINTvs_top),Cnil));
++-  PRINTvs_top[0]=vs_head;
++-  PRINTvs_limit=vs_top=PRINTvs_top+1;
+++}
+++
+++object sLeq;
+++
+++static void
+++setupPRINTcircle(object x,int dogensyms) {
+++
+++  object *vp=vs_top,*v=vp,h;
+++  fixnum j;
+++
+++  travel(x,dogensyms,PRINTarray);
+++
+++  h=vs_top>vp ? funcall_cfun(Lmake_hash_table,2,sKtest,sLeq) : Cnil;
+++  for (j=0;v<vs_top;v++)
+++    if (!imcdr(*v) || gethash(*v,h)->hte_key==OBJNULL)
+++      sethash(*v,h,make_fixnum((j++)<<1));
+++
+++  vs_top=vp;
+++  vs_push(h);
+++
+++}
+++
+++void
+++travel_find_sharing(object x,object table) {
+++
+++  object *vp=vs_top;
+++
+++  travel(x,1,1);
+++
+++  for (;vs_top>vp;vs_top--)
+++      sethash(vs_head,table,make_fixnum(-2));
++ 
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..02a38973437401d1eb8f559f5d364788632c129e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1136 @@@
++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.
++ .
++ gcl (2.6.12-59) unstable; urgency=medium
++ .
++   * list_order.16
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-01-23
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -98,7 +98,9 @@
++ (defvar *default-c-file* nil)
++ (defvar *default-h-file* nil)
++ (defvar *default-data-file* nil)
+++(defvar *default-prof-p* nil)
++ (defvar *keep-gaz* nil)
+++(defvar *prof-p* nil)
++ 
++ ;;  (list section-length split-file-names next-section-start-file-position)
++ ;;  Many c compilers cannot handle the large C files resulting from large lisp files.
++@@ -167,10 +169,12 @@
++                            (data-file *default-data-file*)
++                         (c-debug nil)
++                            (system-p *default-system-p*)
+++                           (prof-p *default-prof-p*)
++                         (print nil)
++                            (load nil)
++                       &aux (*standard-output* *standard-output*)
++-                           (*error-output* *error-output*)
+++                        (*prof-p* prof-p)
+++                        (*error-output* *error-output*)
++                            (*compiler-in-use* *compiler-in-use*)
++                         (*c-debug* c-debug)
++                         (*compile-print* (or print *compile-print*))
++@@ -488,8 +492,9 @@ Cannot compile ~a.~%"
++        (t (setq dir ".")))
++     (setq na  (namestring
++             (make-pathname :name name :type (pathname-type(first args)))))
++-   (format nil  "~a -I~a ~a ~a -c ~a -o ~a ~a"
+++   (format nil  "~a ~a -I~a ~a ~a -c ~a -o ~a ~a"
++         *cc*
+++        (if *prof-p* " -pg " "")
++         (concatenate 'string si::*system-directory* "../h")
++         (if (and (boundp '*c-debug*) *c-debug*) " -g " "")
++            (case *speed*
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpwt.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpwt.lsp
++@@ -124,6 +124,7 @@
++     x))
++ 
++ (defun wt-data-file ()
+++  (when *prof-p* (add-init `(si::mark-memory-as-profiling)))
++   (verify-data-vector (data-vector))
++   (let* ((vec (coerce (nreverse (data-inits)) 'vector)))
++     (verify-data-vector vec)
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4131,30 +4131,11 @@ $as_echo "disabled" >&6; }
++                 else
++                     { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
++ $as_echo "ok" >&6; }
++-                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for text start" >&5
++-$as_echo_n "checking for text start... " >&6; }
++-                    echo 'int main () {return(0);}' >foo.c
++-                    $CC foo.c -o foo
++-                    GCL_GPROF_START=`nm foo | $AWK  '/  *[TD]  *__*start$/ {print $NF}'` # D for ppc64 -- FIXME custreloc
++-                    rm -f foo.c foo
++-                    if test "$GCL_GPROF_START" != "" ; then
++-                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCL_GPROF_START" >&5
++-$as_echo "$GCL_GPROF_START" >&6; }
++-
++-cat >>confdefs.h <<_ACEOF
++-#define GCL_GPROF_START $GCL_GPROF_START
++-_ACEOF
++-
++-                        assert_arg_to_cflags -pg
++-                        case $use in
++-                            s390*) ;; # relocation truncation bug in gcc
++-                            *) TLIBS="$TLIBS -pg";;
++-                        esac
++-                                TFPFLAG=""
+++                            assert_arg_to_cflags -pg
+++                            TFPFLAG=""
++ 
++ $as_echo "#define GCL_GPROF 1" >>confdefs.h
++ 
++-                    fi
++                 fi
++             fi
++ fi
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -342,22 +342,25 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     AC_MSG_RESULT([disabled])
++                 else
++                     AC_MSG_RESULT([ok])
++-                    AC_MSG_CHECKING([for text start])
++-                    echo 'int main () {return(0);}' >foo.c
++-                    $CC foo.c -o foo
++-                    GCL_GPROF_START=`nm foo | $AWK  '/  *[[TD]]  *__*start$/ {print $NF}'` # D for ppc64 -- FIXME custreloc
++-                    rm -f foo.c foo
++-                    if test "$GCL_GPROF_START" != "" ; then
++-                        AC_MSG_RESULT($GCL_GPROF_START)
++-                        AC_DEFINE_UNQUOTED(GCL_GPROF_START,$GCL_GPROF_START,[starting address for gprof])
++-                        assert_arg_to_cflags -pg
++-                        case $use in
++-                            s390*) ;; # relocation truncation bug in gcc
++-                            *) TLIBS="$TLIBS -pg";;
++-                        esac
++-                                TFPFLAG=""
++-                        AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
++-                    fi                          
+++                            assert_arg_to_cflags -pg
+++                            TFPFLAG=""
+++                    AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
+++dnl                 AC_MSG_CHECKING([for text start])
+++dnl                 echo 'int main () {return(0);}' >foo.c
+++dnl                 $CC foo.c -o foo
+++dnl                 GCL_GPROF_START=`nm foo | $AWK  '/  *[[TD]]  *__*start$/ {print $NF}'` # D for ppc64 -- FIXME custreloc
+++dnl                 rm -f foo.c foo
+++dnl                 if test "$GCL_GPROF_START" != "" ; then
+++dnl                     AC_MSG_RESULT($GCL_GPROF_START)
+++dnl                     AC_DEFINE_UNQUOTED(GCL_GPROF_START,$GCL_GPROF_START,[starting address for gprof])
+++dnl                     assert_arg_to_cflags -pg
+++dnl #                           case $use in
+++dnl #                               s390*) ;; # relocation truncation bug in gcc
+++dnl #                               *) TLIBS="$TLIBS -pg";;
+++dnl #                           esac
+++dnl                             TFPFLAG=""
+++dnl                     AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
+++dnl                 fi
++                 fi
++             fi])
++ 
++--- gcl-2.6.12.orig/h/gclincl.h.in
+++++ gcl-2.6.12/h/gclincl.h.in
++@@ -53,9 +53,6 @@
++ /* use gprof profiling */
++ #undef GCL_GPROF
++ 
++-/* starting address for gprof */
++-#undef GCL_GPROF_START
++-
++ /* No gettimeofday call -- fixme */
++ #undef GETTOD_NOT_DECLARED
++ 
++@@ -153,6 +150,9 @@
++ /* use libbfd */
++ #undef HAVE_LIBBFD
++ 
+++/* Define to 1 if you have the `dl' library (-ldl). */
+++#undef HAVE_LIBDL
+++
++ /* Define to 1 if you have the `opcodes' library (-lopcodes). */
++ #undef HAVE_LIBOPCODES
++ 
++@@ -255,9 +255,6 @@
++ /* using xgcl */
++ #undef HAVE_XGCL
++ 
++-/* number of pages to use for hole */
++-#undef HOLEPAGE
++-
++ /* Host cpu */
++ #undef HOST_CPU
++ 
++@@ -267,9 +264,6 @@
++ /* Host system */
++ #undef HOST_SYSTEM
++ 
++-/* time system constant */
++-#undef HZ
++-
++ /* invocation history stack size */
++ #undef IHSSIZE
++ 
++@@ -321,7 +315,7 @@
++ /* can use C extension for object alignment */
++ #undef OBJ_ALIGN
++ 
++-/* needed object alignment in bytes */
+++/* needed object alignment bytes */
++ #undef OBJ_ALIGNMENT
++ 
++ /* Define to the address where bug reports for this package should be sent. */
++@@ -345,7 +339,7 @@
++ /* system pagewidth */
++ #undef PAGEWIDTH
++ 
++-/* have sigcontext in signal.h */
+++/* have sigcontext of signal.h */
++ #undef SIGNAL_H_HAS_SIGCONTEXT
++ 
++ /* sizeof linked list for contiguous pages */
++--- gcl-2.6.12.orig/h/lu.h
+++++ gcl-2.6.12/h/lu.h
++@@ -355,7 +355,8 @@ struct cfdata {
++   FIRSTWORD;
++   char *cfd_start;
++   int cfd_size;
++-  int cfd_fillp;
+++  int cfd_fillp:31;
+++  int cfd_prof:1;
++   object *cfd_self;
++   SPAD;
++ };
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1788,10 +1788,8 @@ int sigprocmask ( int how, const sigset_
++ void recreate_heap1 ( void );
++ #endif
++ 
++-#ifdef GCL_GPROF
++ void
++ gprof_cleanup(void);
++-#endif
++ 
++ int
++ msystem(const char *);
++@@ -1970,3 +1968,6 @@ seek_to_end_ofile(FILE *);
++ 
++ void
++ travel_find_sharing(object,object);
+++
+++object
+++new_cfdata(void);
++--- gcl-2.6.12.orig/h/ptable.h
+++++ gcl-2.6.12/h/ptable.h
++@@ -38,6 +38,8 @@ typedef struct node TABL[];
++ struct  string_address_table
++ { struct node *ptable;
++   unsigned int length;
+++  struct node *local_ptable;
+++  unsigned int local_length;
++   unsigned int alloc_length;
++ };
++ 
++--- gcl-2.6.12.orig/lsp/gcl_mislib.lsp
+++++ gcl-2.6.12/lsp/gcl_mislib.lsp
++@@ -165,3 +165,27 @@
++       (push (string-concatenate s l) nl))
++     (setq *load-path* nl))
++   nil)
+++
+++(defun default-symtab nil (concatenate 'string *tmp-dir* "gcl_symtab"))
+++
+++(defun gprof-output (symtab gmon)
+++  (with-open-file
+++     (s (format nil "|gprof -S '~a' '~a' '~a'" symtab (kcl-self) gmon))
+++     (copy-stream s *standard-output*)))
+++
+++
+++(defun gprof-start (&optional (start 0 start-p) (end 0 end-p) (symtab (default-symtab)))
+++  (unless end-p
+++    (multiple-value-bind
+++     (s e)
+++     (gprof-addresses)
+++     (setq start (if start-p start s) end e)))
+++  (when (monstartup start end)
+++    (write-symtab symtab start end)))
+++
+++(defun gprof-quit (&optional (symtab (default-symtab)) &aux (gmon (mcleanup)))
+++  (when gmon
+++    (gprof-output symtab gmon)))
+++
+++
+++
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -1177,24 +1177,6 @@ init_tm(enum type t, char *name, int els
++    call is too fragile.  20050115 CM*/
++ static int gcl_alloc_initialized;
++ 
++-
++-#ifdef GCL_GPROF
++-static unsigned long textstart,textend,textpage;
++-static void init_textpage() {
++-
++-  extern void *GCL_GPROF_START;
++-  unsigned long s=(unsigned long)GCL_GPROF_START;
++-
++-  textstart=(unsigned long)&GCL_GPROF_START;
++-  textend=(unsigned long)&etext;
++-  if (s<textend && (textstart>textend || s>textstart))
++-    textstart=s;
++-
++-  textpage=2*(textend-textstart)/PAGESIZE;
++-  
++-}
++-#endif
++-
++ object malloc_list=Cnil;
++ 
++ #include <signal.h>
++@@ -1220,10 +1202,6 @@ gcl_init_alloc(void *cs_start) {
++   init_darwin_zone_compat ();
++ #endif
++   
++-#ifdef GCL_GPROF
++-  init_textpage();
++-#endif
++-  
++ #if defined(BSD) && defined(RLIMIT_STACK)
++   {
++     struct rlimit rl;
++@@ -1301,11 +1279,6 @@ gcl_init_alloc(void *cs_start) {
++   initial_sbrk=data_start=heap_end;
++   first_data_page=page(data_start);
++   
++-/* #ifdef GCL_GPROF */
++-/*   if (new_holepage<textpage) */
++-/*      new_holepage=textpage; */
++-/* #endif */
++-
++   /* Unused (at present) tm_distinct flag added.  Note that if cons
++      and fixnum share page types, errors will be introduced.
++ 
++@@ -1348,10 +1321,6 @@ gcl_init_alloc(void *cs_start) {
++   ncbpage = 0;
++   tm_table[t_contiguous].tm_min_grow=256;
++   set_tm_maxpage(tm_table+t_contiguous,1);
++-#ifdef GCL_GPROF
++-  if (maxcbpage<textpage)
++-    set_tm_maxpage(tm_table+t_contiguous,textpage);
++-#endif
++ 
++   set_tm_maxpage(tm_table+t_relocatable,1);
++   nrbpage=0;
++@@ -1563,113 +1532,6 @@ DEFUN_NEW("GET-HOLE-SIZE",object,fSget_h
++   RETURN1(make_fixnum((rb_start-heap_end)>>PAGEWIDTH));
++ }
++ 
++-
++-#ifdef GCL_GPROF
++-
++-static unsigned long start,end,gprof_on;
++-static void *initial_monstartup_pointer;
++-
++-void
++-gprof_cleanup(void) {
++-
++-  extern void _mcleanup(void);
++-
++-  if (initial_monstartup_pointer) {
++-    _mcleanup();
++-    gprof_on=0;
++-  }
++-
++-  if (gprof_on) {
++-
++-    char b[PATH_MAX],b1[PATH_MAX];
++-
++-    if (!getcwd(b,sizeof(b)))
++-      FEerror("Cannot get working directory", 0);
++-    if (chdir(P_tmpdir))
++-      FEerror("Cannot change directory to tmpdir", 0);
++-    _mcleanup();
++-    if (snprintf(b1,sizeof(b1),"gmon.out.%u",getpid())<=0)
++-      FEerror("Cannot write temporary gmon filename", 0);
++-    if (rename("gmon.out",b1))
++-      FEerror("Cannot rename gmon.out",0);
++-    if (chdir(b))
++-      FEerror("Cannot restore working directory", 0);
++-    gprof_on=0;
++-
++-  }
++-
++-}
++-    
++-static inline int
++-my_monstartup(unsigned long start,unsigned long end) {
++-
++-  extern void monstartup(unsigned long,unsigned long);
++-
++-  monstartup(start,end);
++-
++-  return 0;
++-
++-}
++-
++-DEFUN_NEW("GPROF-START",object,fSgprof_start,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
++-
++-  extern void *GCL_GPROF_START;
++-  static int n;
++-
++-  if (!gprof_on) {
++-    start=start ? start : textstart;
++-    end=end ? end : textend;
++-    writable_malloc_wrap(my_monstartup,int,start,end);
++-    gprof_on=1;
++-    if (!n && atexit(gprof_cleanup)) {
++-      FEerror("Cannot setup gprof_cleanup on exit", 0);
++-      n=1;
++-    }
++-  }
++-
++-  return Cnil;
++-
++-}
++-
++-DEFUN_NEW("GPROF-SET",object,fSgprof_set,SI
++-       ,2,2,NONE,OI,IO,OO,OO,(fixnum dstart,fixnum dend),"")
++-{
++-
++-  start=dstart;
++-  end=dend;
++-
++-  return Cnil;
++-
++-}
++-
++-DEFUN_NEW("GPROF-QUIT",object,fSgprof_quit,SI
++-       ,0,0,NONE,OO,OO,OO,OO,(void),"")
++-{
++-  extern void _mcleanup(void);
++-  char b[PATH_MAX],b1[PATH_MAX];
++-  FILE *pp;
++-  unsigned n;
++-
++-  if (!gprof_on)
++-    return Cnil;
++-
++-  massert(getcwd(b,sizeof(b)));
++-  massert(!chdir(P_tmpdir));
++-  _mcleanup();
++-  massert(snprintf(b1,sizeof(b1),"gprof '%s'",kcl_self)>0);
++-  massert((pp=popen(b1,"r")));
++-  while ((n=fread(b1,1,sizeof(b1),pp)))
++-    massert(fwrite(b1,1,n,stdout));
++-  massert(pclose(pp)>=0);
++-  massert(!chdir(b));
++-  gprof_on=0;
++-
++-  return Cnil;
++-
++-}
++-
++-#endif
++-
++ DEFUN_NEW("SET-STARTING-HOLE-DIVISOR",object,fSset_starting_hole_divisor,SI,1,1,NONE,II,OO,OO,OO,(fixnum div),"") {
++   if (div>0 && div <100)
++     starting_hole_div=div;
++@@ -1808,20 +1670,7 @@ malloc_internal(size_t size) {
++ void *
++ malloc(size_t size) {
++ 
++-  void *v=malloc_internal(size);;
++-
++-  /* FIXME: this is just to handle clean freeing of the
++-     monstartup memory allocated automatically on raw image
++-     startup.  In saved images, monstartup memory is only
++-     allocated with gprof-start. 20040804 CM*/
++-#ifdef GCL_GPROF
++-  if (raw_image && size>(textend-textstart) && !initial_monstartup_pointer) {
++-    massert(!atexit(gprof_cleanup));
++-    initial_monstartup_pointer=v;
++-  }
++-#endif
++-  
++-  return v;
+++  return malloc_internal(size);
++   
++ }
++ 
++@@ -1830,7 +1679,6 @@ void
++ free(void *ptr) {
++ 
++   object *p,pp;
++-  static void *initial_monstartup_pointer_echo;
++   
++   if (ptr == 0)
++     return;
++@@ -1839,15 +1687,9 @@ free(void *ptr) {
++     if ((pp)->c.c_car->st.st_self == ptr) {
++       (pp)->c.c_car->st.st_self = NULL;
++       *p = pp->c.c_cdr;
++-#ifdef GCL_GPROF
++-      if (initial_monstartup_pointer==ptr) {
++-     initial_monstartup_pointer_echo=ptr;
++-     initial_monstartup_pointer=NULL;
++-      }
++-#endif
++       return;
++     }
++-  if (ptr!=initial_monstartup_pointer_echo) {
+++  {
++     static void *old_ptr;
++     if (old_ptr==ptr) return;
++     old_ptr=ptr;
++@@ -1855,7 +1697,6 @@ free(void *ptr) {
++     FEerror("free(3) error.",0);
++ #endif
++   }
++-  initial_monstartup_pointer_echo=NULL;
++   return;
++ }
++  
++--- gcl-2.6.12.orig/o/cmpaux.c
+++++ gcl-2.6.12/o/cmpaux.c
++@@ -393,6 +393,15 @@ call_init(int init_address, object memor
++ 
++    */
++ 
+++DEFUN_NEW("MARK-MEMORY-AS-PROFILING",object,fSmark_memory_as_profiling,SI,0,0,
+++       NONE,OO,OO,OO,OO,(void),"") {
+++
+++  sSPmemory->s.s_dbind->cfd.cfd_prof=1;
+++
+++  return Cnil;
+++
+++}
+++
++ void
++ do_init(object *statVV)
++ {object fasl_vec=sSPinit->s.s_dbind;
++@@ -467,6 +476,22 @@ char *s;
++      
++ #endif
++ 
+++object
+++new_cfdata(void) {
+++
+++  object memory=alloc_object(t_cfdata);
+++
+++  memory->cfd.cfd_size=0;
+++  memory->cfd.cfd_fillp=0;
+++  memory->cfd.cfd_prof=0;
+++  memory->cfd.cfd_self=0;
+++  memory->cfd.cfd_start=0;
+++
+++  return memory;
+++
+++}
+++
+++
++ void
++ gcl_init_or_load1(void (*fn)(void),const char *file) {
++ 
++@@ -476,10 +501,7 @@ gcl_init_or_load1(void (*fn)(void),const
++     object fasl_data;
++     file=FIX_PATH_STRING(file);
++     
++-    memory=alloc_object(t_cfdata);
++-    memory->cfd.cfd_self=0;
++-    memory->cfd.cfd_fillp=0;
++-    memory->cfd.cfd_size = 0;
+++    memory=new_cfdata();
++     memory->cfd.cfd_start= (char *)fn;
++     printf("Initializing %s\n",file); fflush(stdout);
++     fasl_data = read_fasl_data(file);
++--- gcl-2.6.12.orig/o/fasldlsym.c
+++++ gcl-2.6.12/o/fasldlsym.c
++@@ -101,10 +101,7 @@ fasload(object faslfile) {
++   SEEK_TO_END_OFILE(faslstream->sm.sm_fp);
++ 
++   data = read_fasl_vector(faslstream);
++-  memory = alloc_object(t_cfdata);
++-  memory->cfd.cfd_self = NULL;
++-  memory->cfd.cfd_start = NULL;
++-  memory->cfd.cfd_size = 0;
+++  memory=new_cfdata();
++ 
++   if(symbol_value(sLAload_verboseA)!=Cnil)   
++     printf(" start address (dynamic) %p ",fptr);
++--- /dev/null
+++++ gcl-2.6.12/o/gprof.c
++@@ -0,0 +1,137 @@
+++#include "include.h"
+++#include "page.h"
+++#include "ptable.h"
+++
+++
+++static unsigned long gprof_on;
+++
+++DEFUN_NEW("MCLEANUP",object,fSmcleanup,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
+++
+++  extern void _mcleanup(void);
+++
+++  if (!gprof_on)
+++    return Cnil;
+++
+++  massert(getcwd(FN1,sizeof(FN1)));
+++  massert(!chdir(P_tmpdir));
+++  _mcleanup();
+++  massert(!chdir(FN1));
+++  gprof_on=0;
+++  massert(snprintf(FN1,sizeof(FN1),"%s/gmon.out",P_tmpdir)>0);
+++  return make_simple_string(FN1);
+++}
+++
+++static inline int
+++my_monstartup(unsigned long start,unsigned long end) {
+++
+++  extern void monstartup(unsigned long,unsigned long);
+++
+++  monstartup(start,end);
+++
+++  return 0;
+++
+++}
+++
+++DEFUN_NEW("MONSTARTUP",object,fSmonstartup,SI,2,2,NONE,OI,IO,OO,OO,(ufixnum start,ufixnum end),"") {
+++
+++  if (gprof_on)
+++    return Cnil;
+++
+++  writable_malloc_wrap(my_monstartup,int,start,end);
+++  gprof_on=1;
+++
+++  return Ct;
+++
+++}
+++
+++void
+++gprof_cleanup(void) {
+++
+++  FFN(fSmcleanup)();
+++  /*rename gmon?*/
+++
+++}
+++
+++DEFUNM_NEW("GPROF-ADDRESSES",object,fSgprof_addresses,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
+++
+++  void *min=heap_end,*max=data_start,*c;
+++  static void *mintext;
+++  struct pageinfo *v;
+++  object x;
+++  fixnum i;
+++  struct typemanager *tm=tm_of(t_cfdata);
+++
+++  for (v=cell_list_head;v;v=v->next)
+++    if (v->type==tm->tm_type)
+++      for (c=pagetochar(page(v)),i=0;i<tm->tm_nppage;i++,c+=tm->tm_size)
+++     if (!is_free((x=c)) && type_of(x)==t_cfdata && x->cfd.cfd_prof) {
+++       min=(void *)x->cfd.cfd_start<min ? x->cfd.cfd_start : min;
+++       max=(void *)x->cfd.cfd_start+x->cfd.cfd_size>max ? x->cfd.cfd_start+x->cfd.cfd_size : max;
+++     }
+++
+++  if (max<min)
+++    min=max;
+++
+++  if (!mintext) {
+++
+++    mintext=data_start;
+++
+++#ifdef GCL_GPROF
+++    for (i=0;i<c_table.length;i++)
+++      mintext=(void *)c_table.ptable[i].address<mintext ? (void *)c_table.ptable[i].address : mintext;
+++    for (i=0;i<c_table.local_length;i++)
+++      mintext=(void *)c_table.local_ptable[i].address<mintext ? (void *)c_table.local_ptable[i].address : mintext;
+++#endif
+++
+++  }
+++
+++  if (mintext<data_start)
+++    min=mintext;
+++
+++  RETURN2(make_fixnum((fixnum)min),make_fixnum((fixnum)max));
+++
+++}
+++
+++DEFUN_NEW("KCL-SELF",object,fSkcl_self,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
+++
+++  return make_simple_string(kcl_self);
+++
+++}
+++
+++DEFUN_NEW("WRITE-SYMTAB",object,fSwrite_symtab,SI,3,3,NONE,OO,II,OO,OO,
+++     (object symtab,ufixnum start,ufixnum end),"") {
+++
+++  struct package *p;
+++  object l,s,f,*b,*be;
+++  FILE *pp;
+++  ufixnum i;
+++
+++  coerce_to_filename(symtab,FN1);
+++  pp=fopen(FN1,"w");
+++  fprintf(pp,"%016lx T GCL_MONSTART\n",start);
+++  for (p=pack_pointer;p;p=p->p_link)
+++    for (i=0,b=p->p_internal,be=b+p->p_internal_size;b;
+++      b=i ? NULL : p->p_external,be=b+p->p_external_size,i=1)
+++      for (;b<be;b++)
+++     for (l=*b;consp(l);l=l->c.c_cdr)
+++       if ((f=(s=l->c.c_car)->s.s_gfdef)!=OBJNULL && s->s.s_hpack==(object)p)
+++         switch(type_of(f)) {
+++         case t_cfun:case t_sfun:case t_vfun:case t_afun:case t_gfun:
+++           if ((ufixnum)f->cf.cf_self>=start && (ufixnum)f->cf.cf_self<end)
+++             fprintf(pp,"%016lx T %-.*s::%-.*s\n",
+++                     (ufixnum)f->cf.cf_self,
+++                     p->p_name->st.st_fillp,p->p_name->st.st_self,
+++                     s->st.st_fillp,s->st.st_self);
+++           break;
+++         }
+++  fprintf(pp,"%016lx T GCL_MONEND\n",end);
+++
+++  for (i=0;i<c_table.length;i++)
+++    fprintf(pp,"%016lx T %s\n",c_table.ptable[i].address,c_table.ptable[i].string);
+++  for (i=0;i<c_table.local_length;i++)
+++    fprintf(pp,"%016lx t %s\n",c_table.local_ptable[i].address,c_table.local_ptable[i].string);
+++  fclose(pp);
+++
+++  return symtab;
+++
+++}
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -334,9 +334,7 @@ minimize_image(void) {
++   nrbpage=0;
++   resize_hole(0,t_relocatable,0);
++ 
++-#ifdef GCL_GPROF
++   gprof_cleanup();
++-#endif
++   
++ #if defined(BSD) || defined(ATT)  
++   mbrk(core_end=heap_end);
++@@ -425,9 +423,7 @@ gcl_cleanup(int gc) {
++   {extern void _cleanup(void);_cleanup();}
++ #endif
++ 
++-#ifdef GCL_GPROF
++   gprof_cleanup();
++-#endif
++ 
++   if (gc) {
++ 
++--- gcl-2.6.12.orig/o/makefile
+++++ gcl-2.6.12/o/makefile
++@@ -20,7 +20,7 @@ OBJS:=$(addsuffix .o,typespec main alloc
++      num_pred num_comp num_arith num_sfun num_co num_log num_rand earith character sequence list hash\
++      array string regexpr structure toplevel file read backq print format pathname unixfsys unixfasl\
++      error unixtime unixsys unixsave funlink fat_string run_process nfunlink usig usig2 utils makefun\
++-     sockets clxsocket init_pari nsocket sfasl prelink)
+++     sockets clxsocket init_pari nsocket sfasl prelink gprof)
++ OBJS:=$(OBJS) $(RL_OBJS) $(EXTRAS)
++ 
++ INI_FILES=$(patsubst %.o,%.ini,${OBJS})
++@@ -33,6 +33,9 @@ all:  $(OBJECTS)
++ boot.o: boot.c $(DECL) boot.h
++      $(CC) -c $(CFLAGS) $(DEFS) -fPIC $*.c $(AUX_INFO) 
++ 
+++gprof.o: gprof.c $(DECL)
+++     $(CC) -c $(CFLAGS) $(DEFS) -pg $*.c $(AUX_INFO)
+++
++ prelink.o: prelink.c $(DECL)
++      $(CC) -c $(filter-out -pg,$(CFLAGS)) -fPIE $(DEFS) $*.c $(AUX_INFO)
++ 
++--- gcl-2.6.12.orig/o/sfasl.c
+++++ gcl-2.6.12/o/sfasl.c
++@@ -273,17 +273,15 @@ SEEK_TO_END_OFILE(fp);
++ /* allocate some memory */
++ #ifndef STAND        
++      {BEGIN_NO_INTERRUPT;
++-     memory = alloc_object(t_cfdata);
++-     memory->cfd.cfd_self = 0;
++-     memory->cfd.cfd_start = 0;
++-     memory->cfd.cfd_size = datasize+textsize+bsssize + extra_bss;
++-     vs_push(memory);
++-        the_start=start_address=        
++-      memory->cfd.cfd_start =        
++-      alloc_contblock(memory->cfd.cfd_size);
++-      sfaslp->s_start_data = start_address + textsize;
++-      sfaslp->s_start_bss = start_address + textsize + datasize;
++-      END_NO_INTERRUPT;
+++       memory=new_cfdata();
+++       memory->cfd.cfd_size = datasize+textsize+bsssize + extra_bss;
+++       vs_push(memory);
+++       the_start=start_address=
+++         memory->cfd.cfd_start=
+++         alloc_contblock(memory->cfd.cfd_size);
+++       sfaslp->s_start_data = start_address + textsize;
+++       sfaslp->s_start_bss = start_address + textsize + datasize;
+++       END_NO_INTERRUPT;
++        }
++ #else
++      the_start = start_address
++--- gcl-2.6.12.orig/o/sfaslbfd.c
+++++ gcl-2.6.12/o/sfaslbfd.c
++@@ -269,9 +269,7 @@ fasload(object faslfile) {
++   curr_size=(unsigned long)current;
++   max_align=1<<max_align;
++ 
++-  memory = alloc_object(t_cfdata);
++-  memory->cfd.cfd_self = 0;
++-  memory->cfd.cfd_start = 0;
+++  memory=new_cfdata();
++   memory->cfd.cfd_size = curr_size + (max_align > sizeof(char *) ? max_align :0);
++   
++   memory->cfd.cfd_start=alloc_contblock(memory->cfd.cfd_size);
++--- gcl-2.6.12.orig/o/sfaslcoff.c
+++++ gcl-2.6.12/o/sfaslcoff.c
++@@ -207,10 +207,8 @@ load_memory(struct scnhdr *sec1,struct s
++     if (ALLOC_SEC(sec))
++       sec->s_paddr=sz;
++ 
++-  memory = alloc_object(t_cfdata);
+++  memory=new_cfdata();
++   memory->cfd.cfd_size=sz;
++-  memory->cfd.cfd_self=0;
++-  memory->cfd.cfd_start=0;
++   memory->cfd.cfd_start=alloc_code_space(sz);
++ 
++   for (sec=sec1;sec<sece;sec++) {
++@@ -259,7 +257,7 @@ load_self_symbols() {
++ 
++   for (ns=sl=0,sym=sy1;sym<sye;sym++) {
++ 
++-    if (sym->n_sclass!=2 || sym->n_scnum<1)
+++    if (sym->n_sclass<2 || sym->n_sclass>3 || sym->n_scnum<1)
++       continue;
++     
++     ns++;
++@@ -270,7 +268,7 @@ load_self_symbols() {
++ 
++   }
++ 
++-  c_table.alloc_length=c_table.length=ns;
+++  c_table.alloc_length=ns;
++   assert(c_table.ptable=malloc(sizeof(*c_table.ptable)*c_table.alloc_length));
++   assert(st=malloc(sl));
++ 
++@@ -296,9 +294,36 @@ load_self_symbols() {
++     sym+=sym->n_numaux;
++     
++   }
++-
+++  c_table.length=a-c_table.ptable;
++   qsort(c_table.ptable,c_table.length,sizeof(*c_table.ptable),node_compare);
++ 
+++  for (c_table.local_ptable=a,sym=sy1;sym<sye;sym++) {
+++
+++    if (sym->n_sclass!=3 || sym->n_scnum<1)
+++      continue;
+++
+++    NM(sym,st1,s,strcpy(st,s));
+++
+++    sec=sec1+sym->n_scnum-1;
+++    jj=sym->n_value+sec->s_vaddr+h->h_ibase;
+++
+++#ifdef FIX_ADDRESS
+++    FIX_ADDRESS(jj);
+++#endif
+++
+++    a->address=jj;
+++    a->string=st;
+++
+++    a++;
+++    st+=strlen(st)+1;
+++    sym+=sym->n_numaux;
+++
+++  }
+++  c_table.local_length=a-c_table.local_ptable;
+++  qsort(c_table.local_ptable,c_table.local_length,sizeof(*c_table.local_ptable),node_compare);
+++
+++  massert(c_table.alloc_length==c_table.length+c_table.local_length);
+++
++   massert(!un_mmap(v1,ve));
++   massert(!fclose(f));
++ 
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -55,9 +55,12 @@ License for more details.
++ #define ulmax(a_,b_) ({ul _a=a_,_b=b_;_a<_b ? _b : _a;})
++ #define ALLOC_SEC(sec) (sec->sh_flags&SHF_ALLOC && (sec->sh_type==SHT_PROGBITS || sec->sh_type==SHT_NOBITS))
++ #define LOAD_SEC(sec) (sec->sh_flags&SHF_ALLOC &&  sec->sh_type==SHT_PROGBITS)
++-#define LOAD_SYM_BY_BIND(sym) ({ul _b=ELF_ST_BIND(sym->st_info); sym->st_value && (_b==STB_GLOBAL || _b==STB_WEAK);})
++-#define LOAD_SYM_BY_NAME(sym,st1) 0
++-#define LOAD_SYM(sym,st1) (LOAD_SYM_BY_BIND(sym)||LOAD_SYM_BY_NAME(sym,st1))
+++#define EXT_SYM(sym) ({ul _b=ELF_ST_BIND(sym->st_info); \
+++      sym->st_value && (_b==STB_GLOBAL || _b==STB_WEAK);})
+++#define LOCAL_SYM(sym) (sym->st_value && \
+++                     ELF_ST_BIND(sym->st_info)==STB_LOCAL)
+++                     /* && ELF_ST_TYPE(sym->st_info)==STT_FUNC) */
+++#define LOAD_SYM(sym) (EXT_SYM(sym)||LOCAL_SYM(sym))
++ 
++ #define MASK(n) (~(~0ULL << (n)))
++ 
++@@ -271,10 +274,8 @@ load_memory(Shdr *sec1,Shdr *sece,void *
++     sz+=gsz;
++   }
++ 
++-  memory=alloc_object(t_cfdata);
+++  memory=new_cfdata();
++   memory->cfd.cfd_size=sz;
++-  memory->cfd.cfd_self=0;
++-  memory->cfd.cfd_start=0;
++   memory->cfd.cfd_start=alloc_code_space(sz);
++ 
++   a=(ul)memory->cfd.cfd_start;
++@@ -411,7 +412,7 @@ calc_space(ul *ns,ul *sl,Sym *sym1,Sym *
++ 
++   for (sym=sym1;sym<syme;sym++) {
++     
++-    if (!LOAD_SYM(sym,st1))
+++    if (!LOAD_SYM(sym))
++       continue;
++ 
++     if (d1) {
++@@ -431,13 +432,13 @@ calc_space(ul *ns,ul *sl,Sym *sym1,Sym *
++ 
++ static int
++ load_ptable(struct node **a,char **s,Sym *sym1,Sym *syme,const char *st1,
++-         Sym *d1,Sym *de,const char *ds1) {
+++         Sym *d1,Sym *de,const char *ds1,ufixnum lp) {
++ 
++   Sym *sym,*d;
++ 
++   for (sym=sym1;sym<syme;sym++) {
++ 
++-    if (!LOAD_SYM(sym,st1))
+++    if (!LOAD_SYM(sym) || (LOCAL_SYM(sym) ? !lp : lp))
++       continue;
++ 
++     if (d1) {
++@@ -488,16 +489,23 @@ load_self_symbols() {
++   massert(!calc_space(&ns,&sl,dsym1,dsyme,dst1,NULL,NULL,NULL));
++   massert(!calc_space(&ns,&sl,sym1,syme,st1,dsym1,dsyme,dst1));
++ 
++-  c_table.alloc_length=c_table.length=ns;
+++  c_table.alloc_length=ns;
++   massert(c_table.ptable=malloc(sizeof(*c_table.ptable)*c_table.alloc_length));
++   massert(s=malloc(sl));
++ 
++   a=c_table.ptable;
++-  massert(!load_ptable(&a,&s,dsym1,dsyme,dst1,NULL,NULL,NULL));
++-  massert(!load_ptable(&a,&s,sym1,syme,st1,dsym1,dsyme,dst1));
++-  
+++  massert(!load_ptable(&a,&s,dsym1,dsyme,dst1,NULL,NULL,NULL,0));
+++  massert(!load_ptable(&a,&s,sym1,syme,st1,dsym1,dsyme,dst1,0));
+++  c_table.length=a-c_table.ptable;
++   qsort(c_table.ptable,c_table.length,sizeof(*c_table.ptable),node_compare);
++ 
+++  c_table.local_ptable=a;
+++  massert(!load_ptable(&a,&s,sym1,syme,st1,dsym1,dsyme,dst1,1));
+++  c_table.local_length=a-c_table.local_ptable;
+++  qsort(c_table.local_ptable,c_table.local_length,sizeof(*c_table.local_ptable),node_compare);
+++
+++  massert(c_table.alloc_length==c_table.length+c_table.local_length);
+++
++   massert(!un_mmap(v1,ve));
++   massert(!fclose(f));
++ 
++--- gcl-2.6.12.orig/o/sfaslmacho.c
+++++ gcl-2.6.12/o/sfaslmacho.c
++@@ -203,10 +203,8 @@ load_memory(struct section *sec1,struct
++     sz+=gsz;
++   }
++   
++-  memory=alloc_object(t_cfdata); 
+++  memory=new_cfdata();
++   memory->cfd.cfd_size=sz; 
++-  memory->cfd.cfd_self=0; 
++-  memory->cfd.cfd_start=0; 
++   memory->cfd.cfd_start=alloc_code_space(sz);
++ 
++   a=(ul)memory->cfd.cfd_start;
++@@ -411,23 +409,19 @@ load_self_symbols() {
++     
++     if (sym->n_type & N_STAB)
++       continue;
++-    if (!(sym->n_type & N_EXT))
++-      continue;
++ 
++     ns++;
++     sl+=strlen(sym->n_un.n_strx+strtab)+1;
++ 
++   }
++   
++-  c_table.alloc_length=c_table.length=ns;
+++  c_table.alloc_length=ns;
++   assert(c_table.ptable=malloc(sizeof(*c_table.ptable)*c_table.alloc_length));
++   assert(s=malloc(sl));
++ 
++   for (a=c_table.ptable,sym=sym1;sym<syme;sym++) {
++     
++-    if (sym->n_type & N_STAB)
++-      continue;
++-    if (!(sym->n_type & N_EXT))
+++    if (sym->n_type & N_STAB || !(sym->n_type & N_EXT))
++       continue;
++ 
++     a->address=sym->n_value;
++@@ -438,9 +432,28 @@ load_self_symbols() {
++     s+=strlen(s)+1;
++ 
++   }
++-  
+++  c_table.length=a-c_table.ptable;
++   qsort(c_table.ptable,c_table.length,sizeof(*c_table.ptable),node_compare);
++ 
+++  c_table.local_ptable=a;
+++  for (a=c_table.ptable,sym=sym1;sym<syme;sym++) {
+++
+++    if (sym->n_type & N_STAB || sym->n_type & N_EXT)
+++      continue;
+++
+++    a->address=sym->n_value;
+++    a->string=s;
+++    strcpy(s,sym->n_un.n_strx+strtab);
+++
+++    a++;
+++    s+=strlen(s)+1;
+++
+++  }
+++  c_table.local_length=a-c_table.local_ptable;
+++  qsort(c_table.local_ptable,c_table.local_length,sizeof(*c_table.local_ptable),node_compare);
+++
+++  massert(c_table.alloc_length==c_table.length+c_table.local_length);
+++
++   massert(!un_mmap(addr,addre));
++   massert(!fclose(f));
++ 
++--- gcl-2.6.12.orig/o/sfaslmacosx.c
+++++ gcl-2.6.12/o/sfaslmacosx.c
++@@ -232,10 +232,7 @@ int fasload (object faslfile)
++     
++     close_stream (faslstream);
++     
++-    memory = alloc_object (t_cfdata);
++-    memory->cfd.cfd_self = NULL;
++-    memory->cfd.cfd_start = NULL;
++-    memory->cfd.cfd_size = 0;
+++    memory=new_cfdata();
++     
++     if (symbol_value (sLAload_verboseA) != Cnil)     
++         printf (" start address (dynamic) %p ", fptr);
++--- gcl-2.6.12.orig/o/unixfasl.c
+++++ gcl-2.6.12/o/unixfasl.c
++@@ -146,9 +146,7 @@ object faslfile;
++      fread(&header, sizeof(header), 1, fp);
++ #endif
++ 
++-     memory = alloc_object(t_cfdata);
++-     memory->cfd.cfd_self = NULL;
++-     memory->cfd.cfd_start = NULL;
+++     memory=new_cfdata();
++      memory->cfd.cfd_size = textsize + datasize + bsssize;
++      vs_push(memory);
++      /* If the file is smaller than the space asked for, typically the file
++@@ -314,12 +312,10 @@ DEFUN_NEW("FASLINK-INT",object,fSfaslink
++      setbuf(fp, buf);
++      fread(&header, sizeof(header), 1, fp);
++      {BEGIN_NO_INTERRUPT;
++-     memory = alloc_object(t_cfdata);
++-     memory->cfd.cfd_self=0;
++-     memory->cfd.cfd_start = NULL;
++-     memory->cfd.cfd_size = textsize + datasize + bsssize;
++-     vs_push(memory);
++-     memory->cfd.cfd_start = ALLOC_ALIGNED(alloc_contblock,
+++       memory=new_cfdata();
+++       memory->cfd.cfd_size = textsize + datasize + bsssize;
+++       vs_push(memory);
+++       memory->cfd.cfd_start = ALLOC_ALIGNED(alloc_contblock,
++                                            memory->cfd.cfd_size,
++                                            sizeof(double));
++      END_NO_INTERRUPT;}
++--- gcl-2.6.12.orig/unixport/makefile
+++++ gcl-2.6.12/unixport/makefile
++@@ -69,28 +69,26 @@ $(LSPDIR)/auto_new.lsp: $(LSPDIR)/auto.l
++      [ "$(RL_OBJS)" = "" ] || \
++              echo "(AUTOLOAD 'init-readline '|readline|)" >>$@
++ 
++-sys_init.lsp: sys_init.lsp.in
+++saved_%:raw_% $(RSYM) sys_init.lsp.in raw_%_map msys \
+++             $(CMPDIR)/gcl_cmpmain.lsp \
+++             $(CMPDIR)/gcl_lfun_list.lsp \
+++             $(CMPDIR)/gcl_cmpopt.lsp $(HDIR)/cmpinclude.h \
+++             $(LSPDIR)/gcl_auto_new.lsp
++ 
++-     cat $< | sed \
+++     cat sys_init.lsp.in | sed \
++              -e "s#@LI-VERS@#(`cat ../majvers`.`cat ../minvers`) `cat ../release`#1" \
++              -e "s#@LI-EXTVERS@#`cat ../minvers | cut -f2 -d.`#1" \
++              -e "s#@LI-MINVERS@#`cat ../minvers | cut -f1 -d.`#1" \
++              -e "s#@LI-MAJVERS@#`cat ../majvers`#1" \
++              -e "s#@LI-RELEASE@#`cat ../release`#1" \
++-             -e "s#@LI-CC@#\"$(GCL_CC) -c $(FINAL_CFLAGS)\"#1" \
+++             -e "s#@LI-CC@#\"$(GCL_CC) -c $(filter-out -pg,$(FINAL_CFLAGS))\"#1" \
+++             -e "s#@LI-DFP@#\"$(filter -pg,$(FINAL_CFLAGS))\"#1" \
++              -e "s#@LI-LD@#\"$(GCL_CC) $(LD_FLAGS) -o \"#1" \
++-             -e "s#@LI-LD-LIBS@#\" $(LD_LIBS_PRE) -l$* $(LD_LIBS_POST)\"#1" \
+++             -e "s#@LI-LD-LIBS@#\" $(LD_LIBS_POST)\"#1" \
++              -e "s#@LI-OPT-THREE@#\"$(O3FLAGS)\"#1" \
++              -e "s#@LI-OPT-TWO@#\"$(O2FLAGS)\"#1" \
++-             -e "s#@LI-INIT-LSP@#\"$@\"#1" >$@
++-
++-saved_%:raw_% $(RSYM) sys_init.lsp raw_%_map msys \
++-             $(CMPDIR)/gcl_cmpmain.lsp \
++-             $(CMPDIR)/gcl_lfun_list.lsp \
++-             $(CMPDIR)/gcl_cmpopt.lsp $(HDIR)/cmpinclude.h \
++-             $(LSPDIR)/gcl_auto_new.lsp
+++             -e "s#@LI-INIT-LSP@#\"$@\"#1" >foo
++ 
++-     cp sys_init.lsp foo
++      echo "(unless si::*quit-tags* (in-package \"USER\")(system:save-system \"$@\"))" >>foo
++      j=$$(ar t lib$*.a |grep ^gcl_);[ "$$j" = "" ] || ar x lib$*.a $$j #accelerator
++      $(PORTDIR)/raw_$*$(EXE) $(PORTDIR)/ -libdir $(GCLDIR)/ < foo
++@@ -160,7 +158,7 @@ map_%:
++ clean:
++      rm -rf  saved_*$(EXE) raw_*$(EXE) *.o core a.out $(RSYM) \
++              $(LSPDIR)/auto_new.lsp foo *maxima* init_*.lsp lib*.a gmp* bfd* *.lsp.tmp \
++-             gazonk*.lsp plt*h *_map saved_* lib* raw_* msys out* log* tmp* gcl.script sys_init.lsp
+++             gazonk*.lsp plt*h *_map saved_* lib* raw_* msys out* log* tmp* gcl.script
++ 
++ .INTERMEDIATE: init_ansi_gcl.lsp.tmp init_gcl.lsp.tmp raw_gcl raw_ansi_gcl
++ .PRECIOUS: init_pre_gcl.lsp init_gcl.lsp init_ansi_gcl.lsp
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -59,8 +59,10 @@
++ 
++ (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 " *ld-libs*)
++       *opt-three* @LI-OPT-THREE@
++       *opt-two* @LI-OPT-TWO@
++       *init-lsp* @LI-INIT-LSP@)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8528b67b69def15a37e9638252aa31d65e01770b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,60 @@@
++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.
++ .
++ gcl (2.6.12-60) unstable; urgency=medium
++ .
++   * list_order.17
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-01-23
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -483,6 +483,12 @@ Cannot compile ~a.~%"
++ 
++ (defvar *use-buggy* nil)
++ 
+++(defun remove-flag (flag flags)
+++  (let ((i (search flag flags)))
+++    (if i
+++     (concatenate 'string (subseq flags 0 i) (remove-flag flag (subseq flags (+ i (length flag)))))
+++      flags)))
+++
++ (defun  compiler-command (&rest args &aux na )
++   (declare (special *c-debug*))
++   (let ((dirlist (pathname-directory (first args)))
++@@ -493,7 +499,7 @@ Cannot compile ~a.~%"
++     (setq na  (namestring
++             (make-pathname :name name :type (pathname-type(first args)))))
++    (format nil  "~a ~a -I~a ~a ~a -c ~a -o ~a ~a"
++-        *cc*
+++        (if *prof-p* (remove-flag "-fomit-frame-pointer" *cc*) *cc*)
++         (if *prof-p* " -pg " "")
++         (concatenate 'string si::*system-directory* "../h")
++         (if (and (boundp '*c-debug*) *c-debug*) " -g " "")
++--- gcl-2.6.12.orig/o/makefile
+++++ gcl-2.6.12/o/makefile
++@@ -34,7 +34,7 @@ boot.o: boot.c $(DECL) boot.h
++      $(CC) -c $(CFLAGS) $(DEFS) -fPIC $*.c $(AUX_INFO) 
++ 
++ gprof.o: gprof.c $(DECL)
++-     $(CC) -c $(CFLAGS) $(DEFS) -pg $*.c $(AUX_INFO)
+++     $(CC) -c $(filter-out -fomit-frame-pointer,$(CFLAGS)) $(DEFS) -pg $*.c $(AUX_INFO)
++ 
++ prelink.o: prelink.c $(DECL)
++      $(CC) -c $(filter-out -pg,$(CFLAGS)) -fPIE $(DEFS) $*.c $(AUX_INFO)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2c82b592fdf3853f7a7499e4bd3dc5730542e160
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,218 @@@
++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.
++ .
++ gcl (2.6.12-60) unstable; urgency=medium
++ .
++   * list_order.18
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-01-24
++
++--- gcl-2.6.12.orig/lsp/gcl_mislib.lsp
+++++ gcl-2.6.12/lsp/gcl_mislib.lsp
++@@ -166,24 +166,45 @@
++     (setq *load-path* nl))
++   nil)
++ 
++-(defun default-symtab nil (concatenate 'string *tmp-dir* "gcl_symtab"))
++-
++ (defun gprof-output (symtab gmon)
++   (with-open-file
++      (s (format nil "|gprof -S '~a' '~a' '~a'" symtab (kcl-self) gmon))
++      (copy-stream s *standard-output*)))
++ 
+++(defun write-symtab (symtab start end &aux (*package* (find-package "KEYWORD")))
+++
+++  (with-open-file
+++   (s symtab :direction :output :if-exists :supersede)
+++
+++   (format s "~16,'0x T ~a~%" start "GCL_MONSTART")
++ 
++-(defun gprof-start (&optional (start 0 start-p) (end 0 end-p) (symtab (default-symtab)))
++-  (unless end-p
++-    (multiple-value-bind
++-     (s e)
++-     (gprof-addresses)
++-     (setq start (if start-p start s) end e)))
++-  (when (monstartup start end)
++-    (write-symtab symtab start end)))
+++   (dolist (p (list-all-packages))
+++     (do-symbols (x p)
+++      (when (and (eq (symbol-package x) p) (fboundp x))
+++     (let* ((y (symbol-function x))
+++            (y (if (and (consp y) (eq 'macro (car y))) (cdr y) y))
+++            (y (if (compiled-function-p y) (function-start y) 0)))
+++       (when (<= start y end)
+++         (format s "~16,'0x T ~s~%" y x))))))
+++
+++   (let ((string-register ""))
+++     (dotimes (i (ptable-alloc-length))
+++       (multiple-value-bind
+++     (x y) (ptable i string-register)
+++     (when (<= start x end)
+++       (format s "~16,'0x T ~a~%" x y)))))
+++
+++   (format s "~16,'0x T ~a~%" end "GCL_MONEND"))
+++
+++  symtab)
+++
+++(defun gprof-start (&optional (symtab "gcl_symtab") (adrs (gprof-addresses))
+++                           &aux (start (car adrs))(end (cdr adrs)))
+++  (let ((symtab (write-symtab symtab start end)))
+++    (when (monstartup start end)
+++      symtab)))
++ 
++-(defun gprof-quit (&optional (symtab (default-symtab)) &aux (gmon (mcleanup)))
+++(defun gprof-quit (&optional (symtab "gcl_symtab") &aux (gmon (mcleanup)))
++   (when gmon
++     (gprof-output symtab gmon)))
++ 
++--- gcl-2.6.12.orig/o/fat_string.c
+++++ gcl-2.6.12/o/fat_string.c
++@@ -59,17 +59,16 @@ DEFUN_NEW("PROFILE",object,fSprofile,SI
++ }
++ 
++ #endif
++-DEFUN_NEW("FUNCTION-START",object,fSfunction_start,SI
++-       ,1,1,NONE,OO,OO,OO,OO,(object funobj),"")
++-{/* 1 args */
++- if(type_of(funobj)!=t_cfun
++-    && type_of(funobj)!=t_sfun
++-    && type_of(funobj)!=t_vfun
++-    && type_of(funobj)!=t_afun
++-    && type_of(funobj)!=t_gfun)
++-    FEerror("not compiled function",0);
++- funobj=make_fixnum((long) (funobj->cf.cf_self));
++- RETURN1(funobj);
+++DEFUN_NEW("FUNCTION-START",object,fSfunction_start,SI,1,1,NONE,OO,OO,OO,OO,(object funobj),"") {
+++
+++  switch (type_of(funobj)) {
+++  case t_cfun:case t_sfun:case t_vfun:case t_afun:case t_gfun:case t_closure:case t_cclosure:
+++    return make_fixnum((long) (funobj->cf.cf_self));
+++  default:
+++    TYPE_ERROR(funobj,sLcompiled_function);
+++    return Cnil;
+++  }
+++
++ }
++ 
++ /* begin fasl stuff*/
++--- gcl-2.6.12.orig/o/gprof.c
+++++ gcl-2.6.12/o/gprof.c
++@@ -12,13 +12,11 @@ DEFUN_NEW("MCLEANUP",object,fSmcleanup,S
++   if (!gprof_on)
++     return Cnil;
++ 
++-  massert(getcwd(FN1,sizeof(FN1)));
++-  massert(!chdir(P_tmpdir));
++-  _mcleanup();
++-  massert(!chdir(FN1));
+++  massert((_mcleanup(),1));
++   gprof_on=0;
++-  massert(snprintf(FN1,sizeof(FN1),"%s/gmon.out",P_tmpdir)>0);
++-  return make_simple_string(FN1);
+++
+++  return make_simple_string("gmon.out");
+++
++ }
++ 
++ static inline int
++@@ -48,11 +46,10 @@ void
++ gprof_cleanup(void) {
++ 
++   FFN(fSmcleanup)();
++-  /*rename gmon?*/
++ 
++ }
++ 
++-DEFUNM_NEW("GPROF-ADDRESSES",object,fSgprof_addresses,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
+++DEFUN_NEW("GPROF-ADDRESSES",object,fSgprof_addresses,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
++ 
++   void *min=heap_end,*max=data_start,*c;
++   static void *mintext;
++@@ -77,10 +74,8 @@ DEFUNM_NEW("GPROF-ADDRESSES",object,fSgp
++     mintext=data_start;
++ 
++ #ifdef GCL_GPROF
++-    for (i=0;i<c_table.length;i++)
+++    for (i=0;i<c_table.alloc_length;i++)
++       mintext=(void *)c_table.ptable[i].address<mintext ? (void *)c_table.ptable[i].address : mintext;
++-    for (i=0;i<c_table.local_length;i++)
++-      mintext=(void *)c_table.local_ptable[i].address<mintext ? (void *)c_table.local_ptable[i].address : mintext;
++ #endif
++ 
++   }
++@@ -88,7 +83,7 @@ DEFUNM_NEW("GPROF-ADDRESSES",object,fSgp
++   if (mintext<data_start)
++     min=mintext;
++ 
++-  RETURN2(make_fixnum((fixnum)min),make_fixnum((fixnum)max));
+++  return MMcons(make_fixnum((fixnum)min),make_fixnum((fixnum)max));
++ 
++ }
++ 
++@@ -98,40 +93,14 @@ DEFUN_NEW("KCL-SELF",object,fSkcl_self,S
++ 
++ }
++ 
++-DEFUN_NEW("WRITE-SYMTAB",object,fSwrite_symtab,SI,3,3,NONE,OO,II,OO,OO,
++-     (object symtab,ufixnum start,ufixnum end),"") {
++-
++-  struct package *p;
++-  object l,s,f,*b,*be;
++-  FILE *pp;
++-  ufixnum i;
++-
++-  coerce_to_filename(symtab,FN1);
++-  pp=fopen(FN1,"w");
++-  fprintf(pp,"%016lx T GCL_MONSTART\n",start);
++-  for (p=pack_pointer;p;p=p->p_link)
++-    for (i=0,b=p->p_internal,be=b+p->p_internal_size;b;
++-      b=i ? NULL : p->p_external,be=b+p->p_external_size,i=1)
++-      for (;b<be;b++)
++-     for (l=*b;consp(l);l=l->c.c_cdr)
++-       if ((f=(s=l->c.c_car)->s.s_gfdef)!=OBJNULL && s->s.s_hpack==(object)p)
++-         switch(type_of(f)) {
++-         case t_cfun:case t_sfun:case t_vfun:case t_afun:case t_gfun:
++-           if ((ufixnum)f->cf.cf_self>=start && (ufixnum)f->cf.cf_self<end)
++-             fprintf(pp,"%016lx T %-.*s::%-.*s\n",
++-                     (ufixnum)f->cf.cf_self,
++-                     p->p_name->st.st_fillp,p->p_name->st.st_self,
++-                     s->st.st_fillp,s->st.st_self);
++-           break;
++-         }
++-  fprintf(pp,"%016lx T GCL_MONEND\n",end);
++-
++-  for (i=0;i<c_table.length;i++)
++-    fprintf(pp,"%016lx T %s\n",c_table.ptable[i].address,c_table.ptable[i].string);
++-  for (i=0;i<c_table.local_length;i++)
++-    fprintf(pp,"%016lx t %s\n",c_table.local_ptable[i].address,c_table.local_ptable[i].string);
++-  fclose(pp);
++-
++-  return symtab;
+++DEFUN_NEW("PTABLE-ALLOC-LENGTH",object,fSptable_alloc_length,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
+++  return make_fixnum(c_table.alloc_length);
+++}
++ 
+++DEFUNM_NEW("PTABLE",object,fSptable,SI,2,2,NONE,OI,OO,OO,OO,(ufixnum i,object s),"") {
+++  check_type_string(&s);
+++  massert(i<c_table.alloc_length);
+++  s->st.st_self=(void *)c_table.ptable[i].string;
+++  s->st.st_fillp=s->st.st_dim=strlen(s->st.st_self);
+++  RETURN2(make_fixnum(c_table.ptable[i].address),s);
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7e87bf07922c93139f3f7ff3292f449a46d60f47
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,72 @@@
++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.
++ .
++ gcl (2.6.12-60) unstable; urgency=medium
++ .
++   * list_order.19
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-01-30
++
++--- gcl-2.6.12.orig/h/elf64_ppcle_reloc_special.h
+++++ gcl-2.6.12/h/elf64_ppcle_reloc_special.h
++@@ -16,7 +16,7 @@ find_special_params(void *v,Shdr *sec1,S
++   Rela *r;
++   void *ve;
++ 
++-  massert((sec=get_section(".rela.plt",sec1,sece,sn)));
+++  massert((sec=get_section(".rela.dyn",sec1,sece,sn)));
++ 
++   v+=sec->sh_offset;
++   ve=v+sec->sh_size;
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -401,9 +401,9 @@ char *tmp_alloc;
++    */
++ 
++ #define ALLOC_ALIGNED(f, size,align) \
++-  (align <= sizeof(plong) ? (char *)((f)(size)) : \
++-   (tmp_alloc = (char *)((f)(size+(size ?(align)-1 : 0)))+(align)-1 , \
++-   (char *)(align * (((unsigned long)tmp_alloc)/align))))
+++  ({ufixnum _size=size,_align=align;_align <= sizeof(plong) ? (char *)((f)(_size)) : \
+++    (tmp_alloc = (char *)((f)(_size+(_size ?(_align)-1 : 0)))+(_align)-1 ,   \
+++    (char *)(_align * (((unsigned long)tmp_alloc)/_align)));})
++ #define AR_ALLOC(f,n,type) (type *) \
++   (ALLOC_ALIGNED(f,(n)*sizeof(type),sizeof(type)))
++ 
++--- gcl-2.6.12.orig/o/fat_string.c
+++++ gcl-2.6.12/o/fat_string.c
++@@ -47,13 +47,17 @@ DEFUN_NEW("PROFILE",object,fSprofile,SI
++   
++   object ar=sSAprofile_arrayA->s.s_dbind;
++   void *x;
+++  fixnum a,s;
++ 
++   if (type_of(ar)!=t_string)
++     FEerror("si:*Profile-array* not a string",0);
++   if( type_of(start_address)!=t_fixnum ||   type_of(scale)!=t_fixnum)
++     FEerror("Needs start address and scale as args",0);
++ 
++-  x=!(fix(start_address)*fix(scale)) ? NULL : (void *) (ar->ust.ust_self);
+++  massert((a=fix(start_address))>=0);
+++  massert((s=fix(scale))>=0);
+++
+++  x=a&&s ? (void *) (ar->ust.ust_self) : NULL;
++   profil(x, (ar->ust.ust_dim),fix(start_address),fix(scale) << 8);
++   RETURN1(start_address);
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a8fc153124ee0c16076b87662021fd9a8ba20e81
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,48 @@@
++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.
++ .
++ gcl (2.6.12-61) unstable; urgency=medium
++ .
++   * list_order.20
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-01-30
++
++--- gcl-2.6.12.orig/h/alpha-linux.h
+++++ gcl-2.6.12/h/alpha-linux.h
++@@ -5,12 +5,14 @@
++ 
++ #undef MPROTECT_ACTION_FLAGS
++ #define MPROTECT_ACTION_FLAGS SA_RESTART|SA_SIGINFO
++-#ifdef IN_GBC
++-#include <ucontext.h>
++-#define GET_FAULT_ADDR(sig,code,scp,addr) \
++-  (char *)((struct ucontext *)scp )->uc_mcontext.sc_traparg_a0
++-#endif
++-#define SGC
+++/* #ifdef IN_GBC */
+++/* #include <ucontext.h> */
+++/* #define GET_FAULT_ADDR(sig,code,scp,addr) \ no longer working*/
+++/*   (char *)((struct ucontext *)scp )->uc_mcontext.sc_traparg_a0 */
+++/*#define GET_FAULT_ADDR(sig,code,sv,a) ((siginfo_t *)code)->si_addr  perhaps try this when get access*/
+++/* #endif */
+++/* #define SGC */
+++#undef SGC
++ 
++ #define RELOC_H "elf64_alpha_reloc.h"
++ #define SPECIAL_RELOC_H "elf64_alpha_reloc_special.h"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..264818129a0cd8918737af2295dca1e366f31150
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,62 @@@
++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.
++ .
++ gcl (2.6.12-61) unstable; urgency=medium
++ .
++   * list_order.21
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-02-01
++
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -55,12 +55,10 @@ License for more details.
++ #define ulmax(a_,b_) ({ul _a=a_,_b=b_;_a<_b ? _b : _a;})
++ #define ALLOC_SEC(sec) (sec->sh_flags&SHF_ALLOC && (sec->sh_type==SHT_PROGBITS || sec->sh_type==SHT_NOBITS))
++ #define LOAD_SEC(sec) (sec->sh_flags&SHF_ALLOC &&  sec->sh_type==SHT_PROGBITS)
++-#define EXT_SYM(sym) ({ul _b=ELF_ST_BIND(sym->st_info); \
++-      sym->st_value && (_b==STB_GLOBAL || _b==STB_WEAK);})
++-#define LOCAL_SYM(sym) (sym->st_value && \
++-                     ELF_ST_BIND(sym->st_info)==STB_LOCAL)
++-                     /* && ELF_ST_TYPE(sym->st_info)==STT_FUNC) */
++-#define LOAD_SYM(sym) (EXT_SYM(sym)||LOCAL_SYM(sym))
+++#define LOAD_SYM(sym,st1) (sym->st_value && (EXT_SYM(sym,st1)||LOCAL_SYM(sym)))
+++#define EXT_SYM(sym,st1) (ELF_ST_BIND(sym->st_info)==STB_GLOBAL||ELF_ST_BIND(sym->st_info)==STB_WEAK||LOAD_SYM_BY_NAME(sym,st1))
+++#define LOCAL_SYM(sym) ELF_ST_BIND(sym->st_info)==STB_LOCAL
+++#define LOAD_SYM_BY_NAME(sym,st1) 0
++ 
++ #define MASK(n) (~(~0ULL << (n)))
++ 
++@@ -412,7 +410,7 @@ calc_space(ul *ns,ul *sl,Sym *sym1,Sym *
++ 
++   for (sym=sym1;sym<syme;sym++) {
++     
++-    if (!LOAD_SYM(sym))
+++    if (!LOAD_SYM(sym,st1))
++       continue;
++ 
++     if (d1) {
++@@ -438,7 +436,7 @@ load_ptable(struct node **a,char **s,Sym
++ 
++   for (sym=sym1;sym<syme;sym++) {
++ 
++-    if (!LOAD_SYM(sym) || (LOCAL_SYM(sym) ? !lp : lp))
+++    if (!LOAD_SYM(sym,st1) || (EXT_SYM(sym,st1) ? lp : !lp))
++       continue;
++ 
++     if (d1) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..567d7048133dff2b083c2f736f8f04e1321063f3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,85 @@@
++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.
++ .
++ gcl (2.6.12-62) unstable; urgency=medium
++ .
++   * list_order.22
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-02-01
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -658,7 +658,7 @@ Cannot compile ~a.~%"
++ (defun make-user-init (files outn)
++ 
++   (let* ((c (pathname outn))
++-      (c (merge-pathnames c (make-pathname :directory '(:current))))
+++      (c (merge-pathnames c (make-pathname :directory '(:relative))))
++       (o (merge-pathnames (make-pathname :type "o") c))
++       (c (merge-pathnames (make-pathname :type "c") c)))
++   
++@@ -769,7 +769,7 @@ Cannot compile ~a.~%"
++ 
++     (with-open-file (st (namestring map) :direction :output))
++     (safe-system 
++-     (let* ((par (namestring (make-pathname :directory '(:back))))
+++     (let* ((par (namestring (make-pathname :directory '(:relative :back))))
++          (i (concatenate 'string " " par))
++          (j (concatenate 'string " " si::*system-directory* par)))
++        (format nil "~a ~a ~a ~a -L~a ~a ~a ~a"
++--- gcl-2.6.12.orig/gcl-tk/makefile
+++++ gcl-2.6.12/gcl-tk/makefile
++@@ -38,13 +38,13 @@ clean::
++      rm -f ${GUIOS} $(OFILES) gcltkaux gcltksrv *.o */*.o demos/index.lsp *.fn demos/*.fn
++ 
++ .c.o:
++-     $(GCLTKCC) -c $(CFLAGS1) ${ODIR_DEBUG}  $*.c
+++     $(GCLTKCC) -c $(filter-out -pg,$(CFLAGS1)) -fPIE ${ODIR_DEBUG}  $*.c
++ 
++ 
++ # for some reason -lieee is on various linux systems in the list of requireds..
++ 
++ gcltkaux:  $(GUIOS)
++-     $(LD_ORDINARY_CC) $(GUIOS) $(LDFLAGS) -o gcltkaux  ${TK_LIB_SPEC} ${TCL_LIB_SPEC}
+++     $(LD_ORDINARY_CC) $(GUIOS) $(filter-out %gcl.script,$(LDFLAGS)) -pie -o gcltkaux  ${TK_LIB_SPEC} ${TCL_LIB_SPEC}
++ 
++ gcltksrv: makefile
++      cat gcltksrv.in | sed -e "s!TK_LIBRARY=.*!TK_LIBRARY=${TK_LIBRARY}!g" \
++--- gcl-2.6.12.orig/h/386-gnu.h
+++++ gcl-2.6.12/h/386-gnu.h
++@@ -60,4 +60,4 @@
++ 
++ #define NEED_STACK_CHK_GUARD
++ 
++-#define DEFINED_REAL_MAXPAGE (1UL<<18) /*FIXME brk probe broken*/
+++#undef HAVE_D_TYPE /*FIXME defined, but not implemented in readdir*/
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -307,8 +307,11 @@ DEFUN_NEW("D-TYPE-LIST",object,fSd_type_
++             MMcons(make_fixnum(DT_UNKNOWN),make_keyword("UNKNOWN"))
++             )
++ #else
+++#undef DT_UNKNOWN
++ #define DT_UNKNOWN 0
+++#undef DT_REG
++ #define DT_REG 1
+++#undef DT_DIR
++ #define DT_DIR 2
++        list(3,
++             MMcons(make_fixnum(DT_REG),make_keyword("FILE")),
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..043321780c57e2b4c2811b97c436dfa161c24a6e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,44 @@@
++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.
++ .
++ gcl (2.6.12-63) unstable; urgency=medium
++ .
++   * list_order.23
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-02-04
++
++--- gcl-2.6.12.orig/h/gmp_wrappers.h
+++++ gcl-2.6.12/h/gmp_wrappers.h
++@@ -148,6 +148,8 @@ MEM_GMP_CALL(1,gmp_ulint,mpz_popcount,0,
++ /*MEM_GMP_CALL(2,void *,mpz_realloc,mpz_t,mp_size_t)*/
++ MEM_GMP_CALL(1,size_t,mpz_size,0,mpz_t)
++ MEM_GMP_CALL(2,size_t,mpz_sizeinbase,0,mpz_t,int)
+++MEM_GMP_CALL(1,void,gmp_randinit_default,0,__gmp_randstate_struct *)
+++MEM_GMP_CALL(2,void,gmp_randseed_ui,0,__gmp_randstate_struct *,unsigned long int)
++ 
++      /* FIXME: find a way to have this follow the convention in gmp.h*/
++ 
++@@ -191,5 +193,7 @@ MEM_GMP_CALL(2,size_t,mpz_sizeinbase,0,m
++ /*#define __gmpz_realloc m__gmpz_realloc*/
++ #define __gmpz_size m__gmpz_size
++ #define __gmpz_sizeinbase m__gmpz_sizeinbase
+++#define __gmp_randinit_default m__gmp_randinit_default
+++#define __gmp_randseed_ui m__gmp_randseed_ui
++ 
++ #endif /*GMP_WRAPPERS_H*/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ee4e2fb748523051d3e82e05f32b4dac763497fc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,81 @@@
++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.
++ .
++ gcl (2.6.12-64) unstable; urgency=medium
++ .
++   * list_order.24
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2018-02-22
++
++--- gcl-2.6.12.orig/makefile
+++++ gcl-2.6.12/makefile
++@@ -149,7 +149,7 @@ command:
++ merge:
++      $(CC) -o merge merge.c
++ 
++-LISP_LIB=cmpnew/gcl_collectfn.o cmpnew/gcl_collectfn.lsp xgcl-2/sysdef.lisp xgcl-2/gcl_dwtest.lsp xgcl-2/gcl_dwtestcases.lsp lsp/gcl_gprof.lsp lsp/gcl_info.o lsp/gcl_profile.lsp lsp/gcl_export.lsp lsp/gcl_autoload.lsp cmpnew/gcl_cmpmain.lsp cmpnew/gcl_cmpopt.lsp cmpnew/gcl_lfun_list.lsp lsp/gcl_auto_new.lsp h/cmpinclude.h unixport/init_$(SYSTEM).lsp unixport/lib$(SYSTEM).a unixport/libgclp.a gcl-tk/tk-package.lsp $(TK_LISP_LIB) $(RL_LIB) $(FIRST_FILE) $(LAST_FILE) $(addsuffix /sys-proclaim.lisp,lsp cmpnew pcl clcs) unixport/gcl.script
+++LISP_LIB=cmpnew/gcl_collectfn.o cmpnew/gcl_collectfn.lsp xgcl-2/sysdef.lisp xgcl-2/gcl_dwtest.lsp xgcl-2/gcl_dwtestcases.lsp lsp/gcl_gprof.lsp lsp/gcl_info.o lsp/gcl_profile.lsp lsp/gcl_export.lsp lsp/gcl_autoload.lsp cmpnew/gcl_cmpmain.lsp cmpnew/gcl_cmpopt.lsp cmpnew/gcl_lfun_list.lsp lsp/gcl_auto_new.lsp h/cmpinclude.h unixport/sys_init.lsp unixport/lib$(SYSTEM).a unixport/libgclp.a gcl-tk/tk-package.lsp $(TK_LISP_LIB) $(RL_LIB) $(FIRST_FILE) $(LAST_FILE) $(addsuffix /sys-proclaim.lisp,lsp cmpnew pcl clcs) unixport/gcl.script
++ 
++ install-command:
++      rm -f $(DESTDIR)$(prefix)/bin/gcl
++--- gcl-2.6.12.orig/unixport/makefile
+++++ gcl-2.6.12/unixport/makefile
++@@ -69,13 +69,9 @@ $(LSPDIR)/auto_new.lsp: $(LSPDIR)/auto.l
++      [ "$(RL_OBJS)" = "" ] || \
++              echo "(AUTOLOAD 'init-readline '|readline|)" >>$@
++ 
++-saved_%:raw_% $(RSYM) sys_init.lsp.in raw_%_map msys \
++-             $(CMPDIR)/gcl_cmpmain.lsp \
++-             $(CMPDIR)/gcl_lfun_list.lsp \
++-             $(CMPDIR)/gcl_cmpopt.lsp $(HDIR)/cmpinclude.h \
++-             $(LSPDIR)/gcl_auto_new.lsp
+++sys_init.lsp: sys_init.lsp.in
++ 
++-     cat sys_init.lsp.in | sed \
+++     cat $< | sed \
++              -e "s#@LI-VERS@#(`cat ../majvers`.`cat ../minvers`) `cat ../release`#1" \
++              -e "s#@LI-EXTVERS@#`cat ../minvers | cut -f2 -d.`#1" \
++              -e "s#@LI-MINVERS@#`cat ../minvers | cut -f1 -d.`#1" \
++@@ -87,8 +83,16 @@ saved_%:raw_% $(RSYM) sys_init.lsp.in ra
++              -e "s#@LI-LD-LIBS@#\" $(LD_LIBS_POST)\"#1" \
++              -e "s#@LI-OPT-THREE@#\"$(O3FLAGS)\"#1" \
++              -e "s#@LI-OPT-TWO@#\"$(O2FLAGS)\"#1" \
++-             -e "s#@LI-INIT-LSP@#\"$@\"#1" >foo
+++             -e "s#@LI-INIT-LSP@#\"$@\"#1" >$@
+++
+++
+++saved_%:raw_% $(RSYM) sys_init.lsp raw_%_map msys \
+++             $(CMPDIR)/gcl_cmpmain.lsp \
+++             $(CMPDIR)/gcl_lfun_list.lsp \
+++             $(CMPDIR)/gcl_cmpopt.lsp $(HDIR)/cmpinclude.h \
+++             $(LSPDIR)/gcl_auto_new.lsp
++ 
+++     cp sys_init.lsp foo
++      echo "(unless si::*quit-tags* (in-package \"USER\")(system:save-system \"$@\"))" >>foo
++      j=$$(ar t lib$*.a |grep ^gcl_);[ "$$j" = "" ] || ar x lib$*.a $$j #accelerator
++      $(PORTDIR)/raw_$*$(EXE) $(PORTDIR)/ -libdir $(GCLDIR)/ < foo
++@@ -156,7 +160,7 @@ map_%:
++ #    $(CC) $(LD_FLAGS) -c -o $@ plt.c $(CFLAGS) -I$(HDIR) -I$(ODIR)
++ 
++ clean:
++-     rm -rf  saved_*$(EXE) raw_*$(EXE) *.o core a.out $(RSYM) \
+++     rm -rf  saved_*$(EXE) raw_*$(EXE) *.o core a.out $(RSYM) sys_init.lsp \
++              $(LSPDIR)/auto_new.lsp foo *maxima* init_*.lsp lib*.a gmp* bfd* *.lsp.tmp \
++              gazonk*.lsp plt*h *_map saved_* lib* raw_* msys out* log* tmp* gcl.script
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bebb20d1ea668bca1c0519653221702382edb612
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++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.
++ .
++ gcl (2.6.12-57) unstable; urgency=medium
++ .
++   * list_order.13
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-09-18
++
++--- gcl-2.6.12.orig/lsp/gcl_directory.lsp
+++++ gcl-2.6.12/lsp/gcl_directory.lsp
++@@ -62,7 +62,7 @@
++                   (when (pathname-match-p dir v)
++                     (push (merge-pathnames (parse-namestring dir nil *default-pathname-defaults* :start pos) pexp nil) r)))
++                 :file)
++-       (when (pathname-match-p dir v) (push pexp r))))
+++       (when (pathname-match-p dir v) (push (pathname (copy-seq (namestring pexp))) r))))
++    (make-frame ""))
++   r)
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c3f200f86e49cf967bf77f60b4d4319169234ee9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,205 @@@
++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.
++ .
++ gcl (2.6.12-48) unstable; urgency=medium
++ .
++   * list_order.1
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-06-08
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4188,6 +4188,7 @@ case $use in
++          mips*)
++              case $canonical in
++                  mips64*linux*)
+++#                    assert_arg_to_cflags -mxgot
++                      assert_arg_to_ldflags -Wl,-z,now;;
++              esac
++              ;;
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -389,6 +389,7 @@ case $use in
++          mips*)
++              case $canonical in
++                  mips64*linux*)
+++#                    assert_arg_to_cflags -mxgot
++                      assert_arg_to_ldflags -Wl,-z,now;;
++              esac
++              ;;
++--- gcl-2.6.12.orig/h/elf64_mips_reloc.h
+++++ gcl-2.6.12/h/elf64_mips_reloc.h
++@@ -32,23 +32,14 @@
++       if (s>=ggot && s<ggote) {
++         massert(!write_stub(s,got,gote));
++       } else
++-        *gote=s+(a&~MASK(16))+((a&0x8000)<<1);
++-      ((Rela *)r)->r_addend=((void *)gote-(void *)got)-s;
++-      switch(tp) {
++-        case R_MIPS_GOT_HI16:
++-        case R_MIPS_CALL_HI16:
++-       r->r_info=((ul)R_MIPS_HI16<<56)|(r->r_info&MASK(32));
++-       relocate(sym1,r,((Rela *)r)->r_addend,start,got,gote);
++-       break;
++-        case R_MIPS_GOT_LO16:
++-        case R_MIPS_CALL_LO16:
++-       r->r_info=((ul)R_MIPS_LO16<<56)|(r->r_info&MASK(32));
++-       relocate(sym1,r,((Rela *)r)->r_addend,start,got,gote);
++-       break;
++-        default:
++-       store_val(where,MASK(16),((void *)gote-(void *)got));
++-       break;
++-      }
+++        *gote=s+(MIPS_HIGH(a)<<16);
+++      a=(void *)gote-(void *)got;
+++      if (tp==R_MIPS_GOT_HI16||tp==R_MIPS_CALL_HI16)
+++        a=MIPS_HIGH(a);
+++      else if (tp==R_MIPS_GOT_LO16||tp==R_MIPS_CALL_LO16)
+++     a&=MASK(16);
+++      massert(!(a&~MASK(16)));
+++      store_val(where,MASK(16),a);
++       break;
++     case R_MIPS_GOT_OFST:
++       recurse(s+a);
++@@ -63,8 +54,7 @@
++     case R_MIPS_LO16:
++       recurse(s+a);
++       s+=a;
++-      a=*where&MASK(16);
++-      if (a&0x8000) a|=0xffffffffffff0000; 
+++      a=(short)*where;
++       a+=s&MASK(16);
++       a+=(a&0x8000)<<1; 
++       store_val(where,MASK(16),a);
++--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++++ gcl-2.6.12/h/elf64_mips_reloc_special.h
++@@ -16,6 +16,7 @@ static ul ggot,ggote,la; static Rela *hr
++ 
++ #undef ELF_R_TYPE 
++ #define ELF_R_TYPE(a_) ELF_R_TYPE1(a_)
+++#define MIPS_HIGH(a_) ({ul _a=(a_);(_a-(short)_a)>>16;})
++ 
++ typedef struct {
++   ul entry,gotoff;
++@@ -98,12 +99,12 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++   Sym *sym;
++   Shdr *sec;
++   void *v,*ve;
++-  ul q=0,a,b;
+++  ul a,b;
++ 
++   for (sym=sym1;sym<syme;sym++)
++-    sym->st_size=0;
+++    sym->st_other=sym->st_size=0;
++ 
++-  for (*gs=0,sec=sec1;sec<sece;sec++)
+++  for (sec=sec1;sec<sece;sec++)
++     if (sec->sh_type==SHT_RELA)
++       for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
++      if (ELF_R_TYPE(r->r_info)==R_MIPS_CALL16||
++@@ -116,24 +117,37 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
++ 
++        sym=sym1+ELF_R_SYM(r->r_info);
++ 
++-       a=r->r_addend>>15;
+++       /*unlikely to save got space by recording possible holes in addend range*/
+++       if ((a=MIPS_HIGH(r->r_addend)+1)>sym->st_other)
+++         sym->st_other=a;
+++
+++     }
++ 
++-       if (2*a>=sizeof(sym->st_size) || !((sym->st_size>>(a*16))&0xffff)) {
+++  for (*gs=0,sec=sec1;sec<sece;sec++)
+++    if (sec->sh_type==SHT_RELA)
+++      for (v=v1+sec->sh_offset,ve=v+sec->sh_size,r=v;v<ve;v+=sec->sh_entsize,r=v)
+++     if (ELF_R_TYPE(r->r_info)==R_MIPS_CALL16||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_GOT_DISP||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_GOT_HI16||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_GOT_LO16||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_CALL_HI16||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_CALL_LO16||
+++         ELF_R_TYPE(r->r_info)==R_MIPS_GOT_PAGE) {
++ 
++-         q=++*gs;
++-         if (2*a<sizeof(sym->st_size)) {
++-           massert(q<=0xffff);
++-           sym->st_size|=(q<<(a*16));
++-         }
++-         
++-         massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
+++       sym=sym1+ELF_R_SYM(r->r_info);
++ 
+++       if (sym->st_other) {
+++         sym->st_size=++*gs;
+++         if (sym->st_other>1)
+++           (*gs)+=sym->st_other-1;
+++         else
+++           massert(!make_got_room_for_stub(sec1,sece,sym,st1,gs));
+++         sym->st_other=0;
++        }
++ 
++        b=sizeof(r->r_addend)*4; 
++        massert(!(r->r_addend>>b)); 
++-       q=2*a>=sizeof(sym->st_size) ? q : (sym->st_size>>(a*16))&0xffff; 
++-       r->r_addend|=(q<<=b); 
+++       r->r_addend|=((sym->st_size+MIPS_HIGH(r->r_addend))<<b);
++ 
++      }
++   
++--- gcl-2.6.12.orig/h/pool.h
+++++ gcl-2.6.12/h/pool.h
++@@ -20,7 +20,7 @@ static struct pool {
++   ufixnum s;
++ } *Pool;
++ 
++-static struct flock pl;
+++static struct flock pl,*plp=&pl;
++ 
++ static const char *gcl_pool="/tmp/gcl_pool";
++ 
++@@ -28,7 +28,7 @@ static int
++ set_lock(void) {
++   
++   errno=0;
++-  if (fcntl(pool,F_SETLKW,&pl)) {
+++  if (fcntl(pool,F_SETLKW,plp)) {
++     if (errno==EINTR)
++       set_lock();
++     return -1;
++@@ -90,16 +90,13 @@ open_pool(void) {
++       Pool->s=0;
++       unlock_pool();
++ 
++-      f.l_type=F_UNLCK;
++-      massert(!fcntl(pool,F_SETLK,&f));
++-
++-      fprintf(stderr,"Initializing pool\n");
++-      fflush(stderr);
++-
++     }
++ 
++     f.l_type=F_RDLCK;
++-    massert(!fcntl(pool,F_SETLK,&f));
+++    plp=&f;
+++    massert(!set_lock());
+++
+++    plp=&pl;
++ 
++     register_pool(1);
++     massert(!atexit(close_pool));
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..285f16e75e886f1b7d7cba2aaae23215307e88bf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,103 @@@
++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.
++ .
++ gcl (2.6.12-49) unstable; urgency=medium
++ .
++   * list_order.5
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-06-13
++
++--- gcl-2.6.12.orig/o/eval.c
+++++ gcl-2.6.12/o/eval.c
++@@ -96,18 +96,18 @@ quick_call_sfun(object fun) {
++ 
++ }
++ 
++-/* only for sfun not gfun !!  Does not check number of args */
++-static void
++-call_sfun_no_check(object fun)
++-{ DEBUG_AVMA
++-  int n;
++-  object *base=vs_base;
++-  n=vs_top - base;
++-  base[0]=c_apply_n_fun(fun,n,base);
++-  vs_top=(vs_base=base)+1;
++-  CHECK_AVMA;
++-  return;
++-}
+++/* /\* only for sfun not gfun !!  Does not check number of args *\/ */
+++/* static void */
+++/* call_sfun_no_check(object fun) */
+++/* { DEBUG_AVMA */
+++/*   int n; */
+++/*   object *base=vs_base; */
+++/*   n=vs_top - base; */
+++/*   base[0]=c_apply_n_fun(fun,n,base); */
+++/*   vs_top=(vs_base=base)+1; */
+++/*   CHECK_AVMA; */
+++/*   return; */
+++/* } */
++ static void
++ call_vfun(object fun)
++ { DEBUG_AVMA
++@@ -615,10 +615,11 @@ super_funcall_no_event(object fun) {
++ 
++   switch(type_of(fun)) {
++   case t_cfun:
++-    (*fun->cf.cf_self)();
++-    return;
+++    (*fun->cf.cf_self)(); return;
+++  case t_cclosure:
+++    (*fun->cc.cc_self)(fun); return;
++   case t_sfun:
++-    call_sfun_no_check(fun); return;
+++    /* call_sfun_no_check(fun); return; */
++   case t_gfun:
++     quick_call_sfun(fun); return;
++   case t_vfun:
++@@ -631,7 +632,7 @@ super_funcall_no_event(object fun) {
++     super_funcall_no_event(fun->s.s_gfdef);
++     return;
++   default:
++-    funcall_no_event(fun);
+++    funcall(fun);
++   }
++ 
++ }
++--- gcl-2.6.12.orig/o/read.d
+++++ gcl-2.6.12/o/read.d
++@@ -1176,6 +1176,7 @@ Lsharp_left_parenthesis_reader()
++                      goto L;
++              }
++              vs_base[0]=list(4,siScomma,sLapply,list(2,sLquote,sLvector),vs_base[2]);
+++             vs_top=vs_base+1;
++              return;
++      }
++      vsp = vs_top;
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -369,7 +369,7 @@ memprotect_handler_test(int sig, long co
++     do_gcl_abort();
++   }
++   memprotect_handler_invocations=1;
++-  if (faddr!=memprotect_test_address)
+++  if (page(faddr)!=page(memprotect_test_address))
++     memprotect_result=memprotect_bad_fault_address;
++   else
++     memprotect_result=memprotect_none;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..526b7ee52a3f011e51ca82217d3a755f98918b15
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,47 @@@
++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.
++ .
++ gcl (2.6.12-50) unstable; urgency=medium
++ .
++   * list_order.6
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-06-14
++
++--- gcl-2.6.12.orig/h/m68k-linux.h
+++++ gcl-2.6.12/h/m68k-linux.h
++@@ -63,7 +63,7 @@
++ 
++ 
++ #define      M68K
++-#define SGC
+++/* #define SGC *//*FIXME:  Unknown m68k cpu in modern emulators*/
++ 
++ #include <asm/cachectl.h>
++ int cacheflush(void *,int,int,int);
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -871,7 +871,7 @@ sgc_quit(void) {
++        f=n;
++        n=OBJ_LINK(n);
++      }
++-      SET_LINK(f,OBJNULL);
+++      SET_LINK(f,n!=OBJNULL ? n : o);
++       tm->tm_tail=f;
++       tm->tm_nfree += tm->tm_alt_nfree;
++       tm->tm_alt_nfree = 0;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..37103e27b220d7b1f912684620449d57b5490016
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,78 @@@
++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.
++ .
++ gcl (2.6.12-51) unstable; urgency=medium
++ .
++   * list_order.7
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-06-15
++
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -966,6 +966,11 @@ sweep_phase(void) {
++   STATIC object f;
++   STATIC struct pageinfo *v;
++   
+++  for (j= t_start; j < t_contiguous ; j++) {
+++    tm_of(j)->tm_free=OBJNULL;
+++    tm_of(j)->tm_nfree=0;
+++  }
+++
++   for (v=cell_list_head;v;v=v->next) {
++ 
++     tm = tm_of((enum type)v->type);
++@@ -975,22 +980,23 @@ sweep_phase(void) {
++     k = 0;
++     for (j = tm->tm_nppage; j > 0; --j, p += tm->tm_size) {
++       x = (object)p;
++-      if (is_free(x))
++-     continue;
++-      else if (is_marked(x)) {
+++
+++      if (is_marked(x)) {
++      unmark(x);
++      continue;
++       }
++ 
++-      SET_LINK(f,x);
++       make_free(x);
+++      SET_LINK(f,x);
++       f = x;
++       k++;
+++
++     }
+++
++     SET_LINK(f,OBJNULL);
++     tm->tm_tail = f;
++     tm->tm_nfree += k;
++-    pagetoinfo(page(v))->in_use-=k;
+++    pagetoinfo(page(v))->in_use=tm->tm_nppage-k;
++     
++   }
++ 
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -873,6 +873,7 @@ sgc_quit(void) {
++      }
++       SET_LINK(f,n!=OBJNULL ? n : o);
++       tm->tm_tail=f;
+++      for (;OBJ_LINK(tm->tm_tail)!=OBJNULL;tm->tm_tail=OBJ_LINK(tm->tm_tail));
++       tm->tm_nfree += tm->tm_alt_nfree;
++       tm->tm_alt_nfree = 0;
++       tm->tm_alt_free = OBJNULL;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4cbf3b41faf94fd3928bf5acc966a307ba5270c8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,146 @@@
++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.
++ .
++ gcl (2.6.12-52) unstable; urgency=medium
++ .
++   * list_order.8
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-06-18
++
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -959,7 +959,7 @@ mark_c_stack(jmp_buf env1, int n, void (
++ static void
++ sweep_phase(void) {
++ 
++-  STATIC long j, k;
+++  STATIC long j, k, l;
++   STATIC object x;
++   STATIC char *p;
++   STATIC struct typemanager *tm;
++@@ -977,26 +977,28 @@ sweep_phase(void) {
++     
++     p = pagetochar(page(v));
++     f = FREELIST_TAIL(tm);
++-    k = 0;
+++    l = k = 0;
++     for (j = tm->tm_nppage; j > 0; --j, p += tm->tm_size) {
++       x = (object)p;
++ 
++       if (is_marked(x)) {
++      unmark(x);
+++     l++;
++      continue;
++       }
++ 
+++      k++;
+++
++       make_free(x);
++       SET_LINK(f,x);
++       f = x;
++-      k++;
++ 
++     }
++ 
++     SET_LINK(f,OBJNULL);
++     tm->tm_tail = f;
++     tm->tm_nfree += k;
++-    pagetoinfo(page(v))->in_use=tm->tm_nppage-k;
+++    pagetoinfo(page(v))->in_use=l;
++     
++   }
++ 
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -152,7 +152,7 @@ sgc_mark_phase(void) {
++ 
++ static void
++ sgc_sweep_phase(void) {
++-  STATIC long j, k;
+++  STATIC long j, k, l;
++   STATIC object x;
++   STATIC char *p;
++   STATIC struct typemanager *tm;
++@@ -160,13 +160,18 @@ sgc_sweep_phase(void) {
++   int size;
++   STATIC struct pageinfo *v;
++   
+++  for (j= t_start; j < t_contiguous ; j++) {
+++    tm_of(j)->tm_free=OBJNULL;
+++    tm_of(j)->tm_nfree=0;
+++  }
+++
++   for (v=cell_list_head;v;v=v->next) {
++ 
++     tm = tm_of((enum type)v->type);
++     
++     p = pagetochar(page(v));
++     f = FREELIST_TAIL(tm);
++-    k = 0;
+++    l = k = 0;
++     size=tm->tm_size;
++ 
++     if (v->sgc_flags&SGC_PAGE_FLAG) {
++@@ -175,10 +180,9 @@ sgc_sweep_phase(void) {
++ 
++      x = (object)p;
++      
++-     if (is_free(x))
++-       continue;
++-     else if (is_marked(x)) {
+++     if (is_marked(x)) {
++        unmark(x);
+++       l++;
++        continue;
++      }
++ 
++@@ -187,26 +191,26 @@ sgc_sweep_phase(void) {
++        continue;
++ #endif
++      
++-     /* it is ok to free x */
++-     
++-     SET_LINK(f,x);
+++     k++;
++      make_free(x);
+++     SET_LINK(f,x);
+++     f = x;
+++
++ #ifndef SGC_WHOLE_PAGE
++      if (TYPEWORD_TYPE_P(v->type)) x->d.s = SGC_RECENT;
++ #endif
++-     f = x;
++-     k++;
++ 
++       }
+++
++       SET_LINK(f,OBJNULL);
++       tm->tm_tail = f;
++       tm->tm_nfree += k;
++-      v->in_use-=k;
+++      v->in_use=l;
++ 
++     } else if (WRITABLE_PAGE_P(page(v))) /*non sgc_page */
++       for (j = tm->tm_nppage; --j >= 0;  p += size) {
++      x = (object)p;
++-     if (is_marked(x) && !is_free(x)) {
+++     if (is_marked(x)) {
++        unmark(x);
++      }
++       }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d4b661e128b6775e92e00fb8690e6f7a75eb05d6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,18763 @@@
++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.
++ .
++ gcl (2.6.12-38) unstable; urgency=medium
++ .
++   * Version_2_6_13pre50
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-11
++
++--- gcl-2.6.12.orig/ansi-tests/ansi-aux.lsp
+++++ gcl-2.6.12/ansi-tests/ansi-aux.lsp
++@@ -80,6 +80,10 @@ Results: ~A~%" expected-number form n re
++   "Like EQUALP, but guaranteed to return T for true."
++   (apply #'values (mapcar #'notnot (multiple-value-list (equalp x y)))))
++ 
+++(defun equalpt-or-report (x y)
+++  "Like EQUALPT, but return either T or a list of the arguments."
+++  (or (equalpt x y) (list x y)))
+++
++ (defun =t (x &rest args)
++   "Like =, but guaranteed to return T for true."
++   (apply #'values (mapcar #'notnot (multiple-value-list (apply #'=  x args)))))
++@@ -223,6 +227,13 @@ Results: ~A~%" expected-number form n re
++                      P x p1 x TYPE p2)
++              t)))))
++ 
+++(defun check-predicate (predicate &optional guard (universe *universe*))
+++  "Return all elements of UNIVERSE for which the guard (if present) is false
+++   and for which PREDICATE is false."
+++  (remove-if #'(lambda (e) (or (and guard (funcall guard e))
+++                            (funcall predicate e)))
+++          universe))
+++
++ (declaim (special *catch-error-type*))
++ 
++ (defun catch-continue-debugger-hook (condition dbh)
++@@ -296,7 +307,167 @@ the condition to go uncaught if it canno
++ (defmacro classify-error (form)
++   `(classify-error** ',form))
++ 
+++(defun sequencep (x) (typep x 'sequence))
+++
++ ;;;
+++(defun typef (type) #'(lambda (x) (typep x type)))
+++
+++(defmacro signals-error (form error-name &key (safety 3) (name nil name-p) (inline nil))
+++  `(handler-bind
+++    ((warning #'(lambda (c) (declare (ignore c))
+++                           (muffle-warning))))
+++    (proclaim '(optimize (safety 3)))
+++    (handler-case
+++     (apply #'values
+++         nil
+++         (multiple-value-list
+++          ,(cond
+++            (inline form)
+++            (regression-test::*compile-tests*
+++             `(funcall (compile nil '(lambda ()
+++                                       (declare (optimize (safety ,safety)))
+++                                       ,form))))
+++            (t `(eval ',form)))))
+++     (,error-name (c)
+++               (cond
+++                ,@(case error-name
+++                    (type-error
+++                     `(((typep (type-error-datum c)
+++                               (type-error-expected-type c))
+++                        (values
+++                         nil
+++                         (list (list 'typep (list 'quote
+++                                                  (type-error-datum c))
+++                                     (list 'quote
+++                                           (type-error-expected-type c)))
+++                               "==> true")))))
+++                    ((undefined-function unbound-variable)
+++                     (and name-p
+++                          `(((not (eq (cell-error-name c) ',name))
+++                             (values
+++                              nil
+++                              (list 'cell-error-name "==>"
+++                                    (cell-error-name c)))))))
+++                    ((stream-error end-of-file reader-error)
+++                     `(((not (streamp (stream-error-stream c)))
+++                        (values
+++                         nil
+++                         (list 'stream-error-stream "==>"
+++                               (stream-error-stream c))))))
+++                    (file-error
+++                     `(((not (pathnamep (pathname (file-error-pathname c))))
+++                        (values
+++                         nil
+++                         (list 'file-error-pathname "==>"
+++                               (file-error-pathname c))))))
+++                    (t nil))
+++                (t (printable-p c)))))))
+++
+++(defmacro signals-error-always (form error-name)
+++  `(values
+++    (signals-error ,form ,error-name)
+++    (signals-error ,form ,error-name :safety 0)))
+++
+++(defmacro signals-type-error (var datum-form form &key (safety 3) (inline nil))
+++  (let ((lambda-form
+++      `(lambda (,var)
+++         (declare (optimize (safety ,safety)))
+++         ,form)))
+++    `(let ((,var ,datum-form))
+++       (declare (optimize safety))
+++       (handler-bind
+++     ((warning #'(lambda (c) (declare (ignore c))
+++                   (muffle-warning))))
+++                                     ; (proclaim '(optimize (safety 3)))
+++     (handler-case
+++      (apply #'values
+++             nil
+++             (multiple-value-list
+++              (funcall
+++              ,(cond
+++                (inline `(function ,lambda-form))
+++                (regression-test::*compile-tests*
+++                  `(compile nil ',lambda-form))
+++                (t `(eval ',lambda-form)))
+++               ,var)))
+++      (type-error
+++       (c)
+++       (let ((datum (type-error-datum c))
+++             (expected-type (type-error-expected-type c)))
+++         (cond
+++          ((not (eql ,var datum))
+++           (list :datum-mismatch ,var datum))
+++          ((typep datum expected-type)
+++           (list :is-typep datum expected-type))
+++          (t (printable-p c))))))))))
+++
+++(declaim (special *mini-universe*))
+++
+++(defun check-type-error* (pred-fn guard-fn &optional (universe *mini-universe*))
+++  "Check that for all elements in some set, either guard-fn is true or
+++   pred-fn signals a type error."
+++  (let (val)
+++    (loop for e in universe
+++       unless (or (funcall guard-fn e)
+++                  (equal
+++                   (setf val (multiple-value-list
+++                              (signals-type-error x e (funcall pred-fn x) :inline t)))
+++                   '(t)))
+++     collect (list e val))))
+++
+++(defmacro check-type-error (&body args)
+++  `(locally (declare (optimize safety)) (check-type-error* ,@args)))
+++
+++(defun printable-p (obj)
+++  "Returns T iff obj can be printed to a string."
+++  (with-standard-io-syntax
+++   (let ((*print-readably* nil)
+++      (*print-escape* nil))
+++     (declare (optimize safety))
+++     (handler-case (and (stringp (write-to-string obj)) t)
+++                (condition (c) (declare (ignore c)) nil)))))
+++
+++(defun make-special-string (string &key fill adjust displace base)
+++  (let* ((len (length string))
+++      (len2 (if fill (+ len 4) len))
+++      (etype (if base 'base-char 'character)))
+++    (if displace
+++     (let ((s0 (make-array (+ len2 5)
+++                           :initial-contents
+++                           (concatenate 'string
+++                                        (make-string 2 :initial-element #\X)
+++                                        string
+++                                        (make-string (if fill 7 3)
+++                                                     :initial-element #\Y))
+++                           :element-type etype)))
+++       (make-array len2 :element-type etype
+++                   :adjustable adjust
+++                   :fill-pointer (if fill len nil)
+++                   :displaced-to s0
+++                   :displaced-index-offset 2))
+++      (make-array len2 :element-type etype
+++               :initial-contents
+++               (if fill (concatenate 'string string "ZZZZ") string)
+++               :fill-pointer (if fill len nil)
+++               :adjustable adjust))))
+++
+++(defmacro do-special-strings ((var string-form &optional ret-form) &body forms)
+++  (let ((string (gensym))
+++     (fill (gensym "FILL"))
+++     (adjust (gensym "ADJUST"))
+++     (base (gensym "BASE"))
+++     (displace (gensym "DISPLACE")))
+++    `(let ((,string ,string-form))
+++       (dolist (,fill '(nil t) ,ret-form)
+++      (dolist (,adjust '(nil t))
+++        (dolist (,base '(nil t))
+++          (dolist (,displace '(nil t))
+++            (let ((,var (make-special-string
+++                         ,string
+++                         :fill ,fill :adjust ,adjust
+++                         :base ,base :displace ,displace)))
+++              ,@forms))))))))
+++
++ ;;; A scaffold is a structure that is used to remember the object
++ ;;; identities of the cons cells in a (noncircular) data structure.
++ ;;; This lets us check if the data structure has been changed by
++@@ -1307,6 +1478,13 @@ the condition to go uncaught if it canno
++        (unuse-package package using-package)))
++       (delete-package package))))
++ 
+++(defun delete-all-versions (pathspec)
+++  "Replace the versions field of the pathname specified by pathspec with
+++   :wild, and delete all the files this refers to."
+++  (let* ((wild-pathname (make-pathname :version :wild :defaults (pathname pathspec)))
+++      (truenames (directory wild-pathname)))
+++    (mapc #'delete-file truenames)))
+++
++ (defconstant +fail-count-limit+ 20)
++ 
++ (defmacro test-with-package-iterator (package-list-expr &rest symbol-types)
++@@ -1455,3 +1633,5 @@ the condition to go uncaught if it canno
++                  (list n1)
++                  (random-partition n3 (- p 1 r))))))))))
++ 
+++(defmacro expand-in-current-env (macro-form &environment env)
+++  (macroexpand macro-form env))
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/broadcast-stream-streams.lsp
++@@ -0,0 +1,30 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Jan 29 22:06:28 2004
+++;;;; Contains: Tests of BROADCAST-STREAM-STREAMS
+++
+++(in-package :cl-test)
+++
+++(deftest broadcast-stream-streams.1
+++  (broadcast-stream-streams (make-broadcast-stream))
+++  nil)
+++
+++(deftest broadcast-stream-streams.2
+++  (equalt
+++   (broadcast-stream-streams (make-broadcast-stream *standard-output*))
+++   (list *standard-output*))
+++  t)
+++
+++(deftest broadcast-stream-streams.error.1
+++  (signals-error (broadcast-stream-streams) program-error)
+++  t)
+++
+++(deftest broadcast-stream-streams.error.2
+++  (signals-error (broadcast-stream-streams (make-broadcast-stream) nil)
+++              program-error)
+++  t)
+++
+++
+++
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/clear-input.lsp
++@@ -0,0 +1,64 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Jan 28 06:12:39 2004
+++;;;; Contains: Tests of CLEAR-INPUT
+++
+++(in-package :cl-test)
+++
+++;;; These tests are limited, since whether an input stream can be
+++;;; cleared is not well specified.
+++
+++(deftest clear-input.1
+++  (loop for s in (list *debug-io* *query-io*
+++                    *standard-input* *terminal-io*)
+++     always (eq (clear-input s) nil))
+++  t)
+++
+++(deftest clear-input.2
+++  (clear-input)
+++  nil)
+++
+++(deftest clear-input.3
+++  (clear-input nil)
+++  nil)
+++
+++(deftest clear-input.4
+++  (clear-input t)
+++  nil)
+++
+++(deftest clear-input.5
+++  (with-input-from-string
+++   (is "!?*")
+++   (let ((*terminal-io* (make-two-way-stream is (make-broadcast-stream))))
+++     (clear-input t)))
+++  nil)
+++
+++(deftest clear-input.6
+++  (with-input-from-string
+++   (*standard-input* "345")
+++   (clear-input nil))
+++  nil)
+++
+++;;; Error cases
+++
+++(deftest clear-input.error.1
+++  :notes (:assume-no-simple-streams)
+++  (signals-error (clear-input t nil) program-error)
+++  t)
+++
+++(deftest clear-input.error.2
+++  :notes (:assume-no-simple-streams)
+++  (signals-error (clear-input nil nil) program-error)
+++  t)
+++
+++(deftest clear-input.error.3
+++  (signals-error (clear-input t nil nil) program-error)
+++  t)
+++
+++(deftest clear-input.error.4
+++  (signals-error (clear-input nil nil nil) program-error)
+++  t)
+++
+++(deftest clear-input.error.5
+++  (check-type-error #'clear-input #'(lambda (x) (typep x '(or stream (member nil t)))))
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/clear-output.lsp
++@@ -0,0 +1,53 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Jan 28 06:43:17 2004
+++;;;; Contains: Tests of CLEAR-OUTPUT
+++
+++(in-package :cl-test)
+++
+++(deftest clear-output.1
+++  (progn (finish-output) (clear-output))
+++  nil)
+++
+++(deftest clear-output.2
+++  (progn (finish-output) (clear-output t))
+++  nil)
+++
+++(deftest clear-output.3
+++  (progn (finish-output) (clear-output nil))
+++  nil)
+++
+++(deftest clear-output.4
+++  (loop for s in (list *debug-io* *error-output* *query-io*
+++                    *standard-output* *trace-output* *terminal-io*)
+++     for dummy = (finish-output s)
+++     for results = (multiple-value-list (clear-output s))
+++     unless (equal results '(nil))
+++     collect s)
+++  nil)
+++
+++(deftest clear-output.5
+++  (let ((os (make-string-output-stream)))
+++    (let ((*terminal-io* (make-two-way-stream (make-string-input-stream "")
+++                                           os)))
+++      (clear-output t)))
+++  nil)
+++
+++(deftest clear-output.6
+++  (let ((*standard-output* (make-string-output-stream)))
+++    (clear-output nil))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest clear-output.error.1
+++  (signals-error (clear-output nil nil) program-error)
+++  t)
+++
+++(deftest clear-output.error.2
+++  (signals-error (clear-output t nil) program-error)
+++  t)
+++
+++(deftest clear-output.error.3
+++  (check-type-error #'clear-output #'(lambda (x) (typep x '(or stream (member nil t)))))
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/compile-file-test-file.lsp
++@@ -0,0 +1,3 @@
+++(in-package "CL-TEST")
+++
+++(defun compile-file-test-fun.1 () nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/concatenated-stream-streams.lsp
++@@ -0,0 +1,67 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Feb 14 08:43:45 2004
+++;;;; Contains: Tests of CONCATENATED-STREAM-STREAMS
+++
+++(in-package :cl-test)
+++
+++(deftest concatenated-stream-streams.1
+++  (concatenated-stream-streams (make-concatenated-stream))
+++  nil)
+++
+++(deftest concatenated-stream-streams.2
+++  (equalt (list (list *standard-input*))
+++       (multiple-value-list
+++        (concatenated-stream-streams
+++         (make-concatenated-stream *standard-input*))))
+++  t)
+++
+++(deftest concatenated-stream-streams.3
+++  (with-input-from-string
+++   (s1 "abc")
+++   (with-input-from-string
+++    (s2 "def")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (equalt (list (list s1 s2))
+++           (multiple-value-list
+++            (concatenated-stream-streams s))))))
+++  t)
+++
+++(deftest concatenated-stream-streams.4
+++  (with-input-from-string
+++   (s1 "")
+++   (with-input-from-string
+++    (s2 "def")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (equalt (list (list s1 s2))
+++           (multiple-value-list
+++            (concatenated-stream-streams s))))))
+++  t)
+++
+++(deftest concatenated-stream-streams.5
+++  (with-input-from-string
+++   (s1 "")
+++   (with-input-from-string
+++    (s2 "def")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (values
+++       (read-char s)
+++       (equalt (list (list s2))
+++            (multiple-value-list
+++             (concatenated-stream-streams s)))))))
+++  #\d t)
+++
+++;;; Error cases
+++
+++(deftest concatenated-stream-streams.error.1
+++  (signals-error (concatenated-stream-streams) program-error)
+++  t)
+++
+++(deftest concatenated-stream-streams.error.2
+++  (signals-error (concatenated-stream-streams
+++               (make-concatenated-stream)
+++               nil)
+++              program-error)
+++  t)
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/delete-file.lsp
++@@ -0,0 +1,95 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 13 18:42:29 2004
+++;;;; Contains: Tests for DELETE-FILE
+++
+++(in-package :cl-test)
+++
+++(deftest delete-file.1
+++  (let ((pn "scratchfile.txt"))
+++    (unless (probe-file pn)
+++      (with-open-file (s pn :direction :output)
+++                   (format s "Contents~%")))
+++    (values
+++     (notnot (probe-file pn))
+++     (multiple-value-list (delete-file pn))
+++     (probe-file pn)))
+++  t (t) nil)
+++
+++(deftest delete-file.2
+++  (let ((pn #p"scratchfile.txt"))
+++    (unless (probe-file pn)
+++      (with-open-file (s pn :direction :output)
+++                   (format s "Contents~%")))
+++    (values
+++     (notnot (probe-file pn))
+++     (multiple-value-list (delete-file pn))
+++     (probe-file pn)))
+++  t (t) nil)
+++
+++(deftest delete-file.3
+++  (let ((pn "CLTEST:SCRATCHFILE.TXT"))
+++    (assert (typep (pathname pn) 'logical-pathname))
+++    (unless (probe-file pn)
+++      (with-open-file (s pn :direction :output)
+++                   (format s "Contents~%")))
+++    (values
+++     (notnot (probe-file pn))
+++     (multiple-value-list (delete-file pn))
+++     (probe-file pn)))
+++  t (t) nil)
+++
+++(deftest delete-file.4
+++  (let ((pn "CLTEST:SCRATCHFILE.TXT"))
+++    (assert (typep (pathname pn) 'logical-pathname))
+++    (unless (probe-file pn)
+++      (with-open-file (s pn :direction :output)
+++                   (format s "Contents~%")))
+++    (let ((s (open pn :direction :input)))
+++      (close s)
+++      (values
+++       (notnot (probe-file pn))
+++       (multiple-value-list (delete-file s))
+++       (probe-file pn))))
+++  t (t) nil)
+++
+++;;; Specialized string tests
+++
+++(deftest delete-file.5
+++  (do-special-strings
+++   (pn "scratchfile.txt" nil)
+++   (unless (probe-file pn)
+++     (with-open-file (s pn :direction :output)
+++                  (format s "Contents~%")))
+++   (assert (probe-file pn))
+++   (assert (equal (multiple-value-list (delete-file pn)) '(t)))
+++   (assert (not (probe-file pn))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest delete-file.error.1
+++  (signals-error (delete-file) program-error)
+++  t)
+++
+++(deftest delete-file.error.2
+++  (let ((pn "scratch.txt"))
+++    (unless (probe-file pn)
+++      (with-open-file (s pn :direction :output)
+++                   (format s "Contents~%")))
+++    (values
+++     (notnot (probe-file pn))
+++     (signals-error (delete-file "scratch.txt" nil) program-error)
+++     (notnot (probe-file pn))
+++     (delete-file pn)
+++     (probe-file pn)))
+++  t t t t nil)
+++
+++#|
+++(deftest delete-file.error.3
+++  (let ((pn "nonexistent.txt"))
+++    (when (probe-file pn) (delete-file pn))
+++    (signals-error (delete-file "nonexistent.txt") file-error))
+++  t)
+++|#
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/directory-namestring.lsp
++@@ -0,0 +1,50 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Sep 12 06:21:42 2004
+++;;;; Contains: Tests for DIRECTORY-NAMESTRING
+++
+++(in-package :cl-test)
+++
+++(deftest directory-namestring.1
+++  (let* ((vals (multiple-value-list
+++             (directory-namestring "directory-namestring.lsp")))
+++      (s (first vals)))
+++    (if (and (null (cdr vals))
+++          (stringp s)
+++          (equal (directory-namestring s) s))
+++     :good
+++      vals))
+++  :good)
+++
+++(deftest directory-namestring.2
+++  (do-special-strings
+++   (s "directory-namestring.lsp" nil)
+++   (let ((ns (directory-namestring s)))
+++     (assert (stringp ns))
+++     (assert (string= (directory-namestring ns) ns))))
+++  nil)
+++
+++;;; Lispworks makes another assumption about filename normalization
+++;;; when using file streams as pathname designators, so this test
+++;;; doesn't work there.
+++;;; (This is another example of the difficulty of testing a feature
+++;;;  in which so much is left up to the implementation.)
+++#-lispworks
+++(deftest directory-namestring.3
+++  (let* ((name "directory-namestring.lsp")
+++      (pn (merge-pathnames (pathname name)))
+++      (name2 (with-open-file (s pn :direction :input)
+++                             (directory-namestring s)))
+++      (name3 (directory-namestring pn)))
+++    (or (equalt name2 name3) (list name2 name3)))
+++  t)
+++
+++;;; Error tests
+++
+++(deftest directory-namestring.error.1
+++  (signals-error (directory-namestring) program-error)
+++  t)
+++
+++(deftest directory-namestring.error.2
+++  (signals-error (directory-namestring "directory-namestring.lsp" nil) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/directory.lsp
++@@ -0,0 +1,71 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Jan  1 12:00:18 2004
+++;;;; Contains: Tests of DIRECTORY
+++
+++(in-package :cl-test)
+++
+++(deftest directory.1
+++  (directory "nonexistent")
+++  nil)
+++
+++(deftest directory.2
+++  (directory #p"nonexistent")
+++  nil)
+++
+++(deftest directory.3
+++  (directory "nonexistent" :allow-other-keys nil)
+++  nil)
+++
+++(deftest directory.4
+++  (directory "nonexistent" :allow-other-keys t :foo 'bar)
+++  nil)
+++
+++(deftest directory.5
+++  (directory "nonexistent" :foo 0 :allow-other-keys t)
+++  nil)
+++
+++(deftest directory.6
+++  (let* ((pattern-pathname (make-pathname :name :wild :type :wild
+++                                       :defaults *default-pathname-defaults*))
+++      (pathnames (directory pattern-pathname)))
+++    (values
+++     (remove-if #'pathnamep pathnames)
+++     (loop for pn in pathnames
+++        unless (equal pn (truename pn))
+++        collect pn)
+++;;     (loop for pn in pathnames
+++;;      unless (pathname-match-p pn pattern-pathname)
+++;;      collect pn))
+++     ))
+++  nil nil ;; nil
+++  )
+++
+++(deftest directory.7
+++  (let* ((pattern-pathname (make-pathname :name :wild :type :wild
+++                                       :defaults *default-pathname-defaults*))
+++      (pathnames (directory pattern-pathname)))
+++    (loop for pn in pathnames
+++       unless (equal pn (probe-file pn))
+++       collect pn))
+++  nil)
+++
+++(deftest directory.8
+++  (let* ((pathname-pattern "CLTEST:*.*")
+++      (len (length (directory pathname-pattern))))
+++    (if (< len 300) len nil))
+++  nil)
+++
+++;;; Specialized string tests
+++
+++(deftest directory.9
+++  (do-special-strings
+++   (s "nonexistent" nil)
+++   (assert (null (directory s))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest directory.error.1
+++  (signals-error (directory) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/echo-stream-input-stream.lsp
++@@ -0,0 +1,27 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Feb 12 04:30:40 2004
+++;;;; Contains: Tests of ECHO-STREAM-INPUT-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest echo-stream-input-stream.1
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (equalt (multiple-value-list (echo-stream-input-stream s))
+++         (list is)))
+++  t)
+++
+++(deftest echo-stream-input-stream.error.1
+++  (signals-error (echo-stream-input-stream) program-error)
+++  t)
+++
+++(deftest echo-stream-input-stream.error.2
+++  (signals-error (let* ((is (make-string-input-stream "foo"))
+++                     (os (make-string-output-stream))
+++                     (s (make-echo-stream is os)))
+++                (echo-stream-input-stream s nil))
+++              program-error)
+++  t)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/echo-stream-output-stream.lsp
++@@ -0,0 +1,26 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Feb 12 04:32:33 2004
+++;;;; Contains: Tests off ECHO-STREAM-OUTPUT-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest echo-stream-output-stream.1
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (equalt (multiple-value-list (echo-stream-output-stream s))
+++         (list os)))
+++  t)
+++
+++(deftest echo-stream-output-stream.error.1
+++  (signals-error (echo-stream-output-stream) program-error)
+++  t)
+++
+++(deftest echo-stream-output-stream.error.2
+++  (signals-error (let* ((is (make-string-input-stream "foo"))
+++                     (os (make-string-output-stream))
+++                     (s (make-echo-stream is os)))
+++                (echo-stream-output-stream s nil))
+++              program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/enough-namestring.lsp
++@@ -0,0 +1,84 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Sep 12 06:23:50 2004
+++;;;; Contains: Tests of ENOUGH-NAMESTRING
+++
+++(in-package :cl-test)
+++
+++(deftest enough-namestring.1
+++  (let* ((vals (multiple-value-list (enough-namestring "enough-namestring.lsp")))
+++      (s (first vals)))
+++    (if (and (null (cdr vals))
+++          (stringp s)
+++          (equal (enough-namestring s) s))
+++     :good
+++      vals))
+++  :good)
+++
+++(deftest enough-namestring.2
+++  (do-special-strings
+++   (s "enough-namestring.lsp" nil)
+++   (let ((ns (enough-namestring s)))
+++     (assert (stringp ns))
+++     (assert (string= (enough-namestring ns) ns))))
+++  nil)
+++
+++(deftest enough-namestring.3
+++  (let* ((name "enough-namestring.lsp")
+++      (pn (merge-pathnames (pathname name)))
+++      (name2 (enough-namestring pn))
+++      (name3 (enough-namestring name)))
+++    (or (equalt name2 name3) (list name2 name3)))
+++  t)
+++
+++(deftest enough-namestring.4
+++  (let* ((name "enough-namestring.lsp")
+++      (pn (merge-pathnames (pathname name)))
+++      (name2 (with-open-file (s pn :direction :input) (enough-namestring s)))
+++      (name3 (enough-namestring name)))
+++    (or (equalt name2 name3) (list name2 name3)))
+++  t)
+++
+++(deftest enough-namestring.5
+++  (let* ((vals (multiple-value-list (enough-namestring "enough-namestring.lsp"
+++                                                    *default-pathname-defaults*)))
+++      (s (first vals)))
+++    (if (and (null (cdr vals))
+++          (stringp s)
+++          (equal (enough-namestring s) s))
+++     :good
+++      vals))
+++  :good)
+++
+++(deftest enough-namestring.6
+++  (let* ((vals (multiple-value-list (enough-namestring "enough-namestring.lsp"
+++                                                    (namestring *default-pathname-defaults*))))
+++      (s (first vals)))
+++    (if (and (null (cdr vals))
+++          (stringp s)
+++          (equal (enough-namestring s) s))
+++     :good
+++      vals))
+++  :good)
+++
+++(deftest enough-namestring.7
+++  (do-special-strings
+++   (s (namestring *default-pathname-defaults*) nil)
+++   (let* ((vals (multiple-value-list (enough-namestring "enough-namestring.lsp" s)))
+++      (s2 (first vals)))
+++     (assert (null (cdr vals)))
+++     (assert (stringp s2))
+++     (assert (equal (enough-namestring s2) s2))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest enough-namestring.error.1
+++  (signals-error (enough-namestring) program-error)
+++  t)
+++
+++(deftest enough-namestring.error.2
+++  (signals-error
+++   (enough-namestring "enough-namestring.lsp" *default-pathname-defaults* nil)
+++   program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/ensure-directories-exist.lsp
++@@ -0,0 +1,166 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Mon Jan  5 20:53:03 2004
+++;;;; Contains: Tests of ENSURE-DIRECTORIES-EXIST
+++
+++(in-package :cl-test)
+++
+++(deftest ensure-directories-exist.1
+++  (let* ((pn (make-pathname :name "ensure-directories-exist.lsp"
+++                         :defaults *default-pathname-defaults*))
+++      (results nil)
+++      (verbosity
+++       (with-output-to-string
+++         (*standard-output*)
+++         (setq results (multiple-value-list (ensure-directories-exist pn))))))
+++    (values
+++     (length results)
+++     (equalt (truename pn) (truename (first results)))
+++     (second results)
+++     verbosity))
+++  2 t nil "")
+++
+++(deftest ensure-directories-exist.2
+++  (with-open-file
+++   (s "ensure-directories-exist.lsp" :direction :input)
+++   (let* ((results (multiple-value-list (ensure-directories-exist s))))
+++     (values
+++      (length results)
+++      (equalt (truename (first results)) (truename s))
+++      (second results))))
+++   2 t nil)
+++
+++(deftest ensure-directories-exist.3
+++  (let ((s (open "ensure-directories-exist.lsp" :direction :input)))
+++    (close s)
+++    (let* ((results (multiple-value-list (ensure-directories-exist s))))
+++      (values
+++       (length results)
+++       (equalt (truename (first results)) (truename s))
+++       (second results))))
+++   2 t nil)
+++
+++(deftest ensure-directories-exist.4
+++  (let* ((pn (make-pathname :name "ensure-directories-exist.lsp"
+++                         :defaults *default-pathname-defaults*))
+++      (results nil)
+++      (verbosity
+++       (with-output-to-string
+++         (*standard-output*)
+++         (setq results (multiple-value-list
+++                        (ensure-directories-exist pn :verbose nil))))))
+++    (values
+++     (length results)
+++     (equalt (truename pn) (truename (first results)))
+++     (second results)
+++     verbosity))
+++  2 t nil "")
+++
+++(deftest ensure-directories-exist.5
+++  (let* ((pn (make-pathname :name "ensure-directories-exist.lsp"
+++                         :defaults *default-pathname-defaults*))
+++      (results nil)
+++      (verbosity
+++       (with-output-to-string
+++         (*standard-output*)
+++         (setq results (multiple-value-list
+++                        (ensure-directories-exist pn :verbose t))))))
+++    (values
+++     (length results)
+++     (equalt (truename pn) (truename (first results)))
+++     (second results)
+++     verbosity))
+++  2 t nil "")
+++
+++(deftest ensure-directories-exist.6
+++  (let* ((pn (make-pathname :name "ensure-directories-exist.lsp"
+++                         :defaults *default-pathname-defaults*))
+++      (results nil)
+++      (verbosity
+++       (with-output-to-string
+++         (*standard-output*)
+++         (setq results (multiple-value-list
+++                        (ensure-directories-exist
+++                         pn :allow-other-keys nil))))))
+++    (values
+++     (length results)
+++     (equalt (truename pn) (truename (first results)))
+++     (second results)
+++     verbosity))
+++  2 t nil "")
+++
+++(deftest ensure-directories-exist.7
+++  (let* ((pn (make-pathname :name "ensure-directories-exist.lsp"
+++                         :defaults *default-pathname-defaults*))
+++      (results nil)
+++      (verbosity
+++       (with-output-to-string
+++         (*standard-output*)
+++         (setq results (multiple-value-list
+++                        (ensure-directories-exist
+++                         pn :allow-other-keys t :nonsense t))))))
+++    (values
+++     (length results)
+++     (equalt (truename pn) (truename (first results)))
+++     (second results)
+++     verbosity))
+++  2 t nil "")
+++
+++;;; Case where directory shouldn't exist
+++
+++;; The directort ansi-tests/scratch must not exist before this
+++;; test is run
+++(deftest ensure-directories-exist.8
+++  (let* ((subdir (make-pathname :directory '(:relative "scratch")
+++                             :defaults *default-pathname-defaults*))
+++      (pn (make-pathname :name "foo" :type "txt"
+++                         :defaults subdir)))
+++    (ignore-errors (delete-file pn) (delete-file subdir))
+++    (assert (not (probe-file pn)) ()
+++         "Delete subdirectory scratch and its contents!")
+++    (let* ((results nil)
+++        (verbosity
+++         (with-output-to-string
+++           (*standard-output*)
+++           (setq results (multiple-value-list (ensure-directories-exist pn)))))
+++        (result-pn (first results))
+++        (created (second results)))
+++      ;; Create the file and write to it
+++      (with-open-file (*standard-output*
+++                    pn :direction :output :if-exists :error
+++                    :if-does-not-exist :create)
+++                   (print nil))                    
+++      (values
+++       (length results)
+++       (notnot created)
+++       (equalt pn result-pn)
+++       (notnot (probe-file pn))
+++       verbosity
+++       )))
+++  2 t t t "")
+++
+++;;; Specialized string tests
+++
+++(deftest ensure-directories-exist.9
+++  (do-special-strings
+++   (str "ensure-directories-exist.lsp" nil)
+++   (let* ((results (multiple-value-list (ensure-directories-exist str))))
+++     (assert (eql (length results) 2))
+++     (assert (equalt (truename (first results)) (truename str)))
+++     (assert (null (second results)))))
+++  nil)
+++
+++;; FIXME
+++;; Need to add a LPN test
+++
+++(deftest ensure-directories-exist.error.1
+++  (signals-error-always
+++   (ensure-directories-exist
+++    (make-pathname :directory '(:relative :wild)
+++                :defaults *default-pathname-defaults*))
+++   file-error)
+++  t t)
+++
+++(deftest ensure-directories-exist.error.2
+++  (signals-error (ensure-directories-exist) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/file-author.lsp
++@@ -0,0 +1,88 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan  6 05:41:06 2004
+++;;;; Contains: Tests of FILE-AUTHOR
+++
+++(in-package :cl-test)
+++
+++(deftest file-author.1
+++  (loop for pn in
+++     (directory (make-pathname :name :wild :type :wild
+++                               :defaults *default-pathname-defaults*))
+++     for author = (file-author pn)
+++     unless (or (null author) (stringp author))
+++     collect (list pn author))
+++  nil)
+++
+++(deftest file-author.2
+++  (let ((author (file-author "file-author.lsp")))
+++    (if (or (null author) (stringp author))
+++     nil
+++      author))
+++  nil)
+++
+++(deftest file-author.3
+++  (let ((author (file-author #p"file-author.lsp")))
+++    (if (or (null author) (stringp author))
+++     nil
+++      author))
+++  nil)
+++
+++(deftest file-author.4
+++  (let ((author (file-author (truename "file-author.lsp"))))
+++    (if (or (null author) (stringp author))
+++     nil
+++      author))
+++  nil)
+++
+++(deftest file-author.5
+++  (let ((author (with-open-file (s "file-author.lsp" :direction :input)
+++                             (file-author s))))
+++    (if (or (null author) (stringp author))
+++     nil
+++      author))
+++  nil)
+++
+++(deftest file-author.6
+++  (let ((author (let ((s (open "file-author.lsp" :direction :input)))
+++               (close s)
+++               (file-author s))))
+++    (if (or (null author) (stringp author))
+++     nil
+++      author))
+++  nil)
+++
+++;;; Specialized string tests
+++
+++(deftest file-author.7
+++  (do-special-strings
+++   (s "file-author.lsp" nil)
+++   (assert (equal (file-author s) (file-author "file-author.lsp"))))
+++  nil)
+++
+++;;; FIXME
+++;;; Add LPN test
+++
+++;;; Error tests
+++
+++(deftest file-author.error.1
+++  (signals-error (file-author) program-error)
+++  t)
+++
+++(deftest file-author.error.2
+++  (signals-error (file-author "file-author.lsp" nil) program-error)
+++  t)
+++
+++(deftest file-author.error.3
+++  (signals-error-always
+++   (file-author (make-pathname :name :wild :type "lsp"
+++                            :defaults *default-pathname-defaults*))
+++   file-error)
+++  t t)
+++
+++(deftest file-author.error.4
+++  (signals-error-always
+++   (file-author (make-pathname :name "file-author" :type :wild
+++                            :defaults *default-pathname-defaults*))
+++   file-error)
+++  t t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/file-error.lsp
++@@ -0,0 +1,89 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 13 19:10:02 2004
+++;;;; Contains: Tests of the FILE-ERROR condition, and associated accessor function
+++
+++(in-package :cl-test)
+++
+++(deftest file-error.1
+++  (let ((pn (make-pathname :name :wild
+++                        :type "txt"
+++                        :version :newest
+++                        :defaults *default-pathname-defaults*)))
+++    (handler-case
+++     (probe-file pn)
+++     (error (c)
+++         (values
+++          (notnot (typep c 'file-error))
+++          (if (equalp (file-error-pathname c) pn)
+++              t
+++            (list (file-error-pathname c) pn))))))
+++  t t)
+++
+++(deftest file-error-pathname.1
+++  (let ((c (make-condition 'file-error :pathname "foo.txt")))
+++    (values
+++     (notnot (typep c 'file-error))
+++     (eqlt (class-of c) (find-class 'file-error))
+++     (file-error-pathname c)))
+++  t t "foo.txt")
+++
+++(deftest file-error-pathname.2
+++  (let ((c (make-condition 'file-error :pathname #p"foo.txt")))
+++    (values
+++     (notnot (typep c 'file-error))
+++     (eqlt (class-of c) (find-class 'file-error))
+++     (equalt #p"foo.txt" (file-error-pathname c))))
+++  t t t)
+++
+++(deftest file-error-pathname.3
+++  (let ((c (make-condition 'file-error :pathname "CLTEST:FOO.TXT")))
+++    (values
+++     (notnot (typep c 'file-error))
+++     (eqlt (class-of c) (find-class 'file-error))
+++     (equalpt "CLTEST:FOO.TXT"
+++           (file-error-pathname c))))
+++  t t t)
+++
+++(deftest file-error-pathname.4
+++  (let ((c (make-condition 'file-error :pathname (logical-pathname "CLTEST:FOO.TXT"))))
+++    (values
+++     (notnot (typep c 'file-error))
+++     (eqlt (class-of c) (find-class 'file-error))
+++     (equalpt (logical-pathname "CLTEST:FOO.TXT")
+++           (file-error-pathname c))))
+++  t t t)
+++
+++(deftest file-error-pathname.5
+++  (with-open-file (s "file-error.lsp" :direction :input)
+++               (let ((c (make-condition 'file-error :pathname s)))
+++                 (values
+++                  (notnot (typep c 'file-error))
+++                  (eqlt (class-of c) (find-class 'file-error))
+++                  (equalpt s (file-error-pathname c)))))
+++  t t t)
+++
+++(deftest file-error-pathname.6
+++  (let ((s (open "file-error.lsp" :direction :input)))
+++    (close s)
+++    (let ((c (make-condition 'file-error :pathname s)))
+++      (values
+++       (notnot (typep c 'file-error))
+++       (eqlt (class-of c) (find-class 'file-error))
+++       (equalpt s (file-error-pathname c)))))
+++  t t t)
+++
+++(deftest file-error-pathname.error.1
+++  (signals-error (file-error-pathname) program-error)
+++  t)
+++
+++(deftest file-error-pathname.error.2
+++  (signals-error
+++   (file-error-pathname (make-condition 'file-error :pathname "foo.txt") nil)
+++   program-error)
+++  t)
+++
+++
+++
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/file-length.lsp
++@@ -0,0 +1,176 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Jan 21 06:21:11 2004
+++;;;; Contains: Tests of FILE-LENGTH
+++
+++(in-package :cl-test)
+++
+++(deftest file-length.error.1
+++  (signals-error (file-length) program-error)
+++  t)
+++
+++(deftest file-length.error.2
+++  (signals-error
+++   (with-open-file (is "file-length.lsp" :direction :input)
+++                (file-length is nil))
+++   program-error)
+++  t)
+++
+++(deftest file-length.error.3
+++  (loop for x in *mini-universe*
+++     unless (or (typep x 'file-stream)
+++                (typep x 'broadcast-stream)
+++                (handler-case (progn (file-length x) nil)
+++                              (type-error (c)
+++                                          (assert (not (typep x (type-error-expected-type c))))
+++                                          t)
+++                              (condition () nil)))
+++     collect x)
+++  nil)
+++
+++(deftest file-length.error.4
+++  :notes (:assume-no-simple-streams :assume-no-gray-streams)
+++  (signals-error (with-input-from-string (s "abc") (file-length s))
+++              type-error)
+++  t)
+++
+++(deftest file-length.error.5
+++  (signals-error
+++   (with-open-file
+++    (is "file-length.lsp" :direction :input)
+++    (with-open-file
+++     (os "tmp.txt" :direction :output :if-exists :supersede)
+++     (let ((s (make-two-way-stream is os)))
+++       (unwind-protect (file-length s) (close s)))))
+++   type-error)
+++  t)
+++
+++(deftest file-length.error.6
+++  (signals-error
+++   (with-open-file
+++    (is "file-length.lsp" :direction :input)
+++    (with-open-file
+++     (os "tmp.txt" :direction :output :if-exists :supersede)
+++     (let ((s (make-echo-stream is os)))
+++       (unwind-protect (file-length s) (close s)))))
+++   type-error)
+++  t)
+++
+++(deftest file-length.error.8
+++  (with-open-file
+++   (os "tmp.txt" :direction :output :if-exists :supersede)
+++   (let ((s (make-broadcast-stream os)))
+++     (eqlt (file-length s) (file-length os))))
+++  t)
+++
+++(deftest file-length.error.9
+++  (signals-type-error s (make-concatenated-stream)
+++                   (unwind-protect (file-length s) (close s)))
+++  t)
+++
+++(deftest file-length.error.10
+++  (signals-error
+++   (with-open-file
+++    (is "file-length.lsp" :direction :input)
+++    (let ((s (make-concatenated-stream is)))
+++      (unwind-protect (file-length s) (close s))))
+++   type-error)
+++  t)
+++
+++(deftest file-length.error.11
+++  :notes (:assume-no-simple-streams :assume-no-gray-streams)
+++  (signals-type-error s (make-string-input-stream "abcde")
+++                   (unwind-protect (file-length s) (close s)))
+++  t)
+++
+++(deftest file-length.error.12
+++  :notes (:assume-no-simple-streams :assume-no-gray-streams)
+++  (signals-type-error s (make-string-output-stream)
+++                   (unwind-protect (file-length s) (close s)))
+++  t)
+++
+++;;; Non-error tests
+++
+++(deftest file-length.1
+++  (let ((results (multiple-value-list
+++               (with-open-file
+++                (is "file-length.lsp" :direction :input)
+++                (file-length is)))))
+++    (and (= (length results) 1)
+++      (typep (car results) '(integer 1))
+++      t))
+++  t)
+++
+++(deftest file-length.2
+++  (loop for i from 1 to 32
+++     for etype = `(unsigned-byte ,i)
+++     for e = (max 0 (- (ash 1 i) 5))
+++     for os = (open "tmp.dat" :direction :output
+++                            :if-exists :supersede
+++                            :element-type etype)
+++     do (loop repeat 17 do (write-byte e os))
+++     do (finish-output os)
+++     unless (= (file-length os) 17)
+++     collect (list i (file-length os))
+++     do (close os))
+++  nil)
+++
+++(deftest file-length.3
+++  (loop for i from 1 to 32
+++     for etype = `(unsigned-byte ,i)
+++     for e = (max 0 (- (ash 1 i) 5))
+++     for os = (open "tmp.dat" :direction :output
+++                            :if-exists :supersede
+++                            :element-type etype)
+++     for len = 0
+++     do (loop repeat 17 do (write-byte e os))
+++     do (close os)
+++     unless (let ((is (open "tmp.dat" :direction :input
+++                            :element-type etype)))
+++              (prog1
+++                  (= (file-length is) 17)
+++                (close is)))
+++     collect i)
+++  nil)
+++
+++(deftest file-length.4
+++  (loop for i from 33 to 100
+++     for etype = `(unsigned-byte ,i)
+++     for e = (max 0 (- (ash 1 i) 5))
+++     for os = (open "tmp.dat" :direction :output
+++                            :if-exists :supersede
+++                            :element-type etype)
+++     do (loop repeat 17 do (write-byte e os))
+++     do (finish-output os)
+++     unless (= (file-length os) 17)
+++     collect (list i (file-length os))
+++     do (close os))
+++  nil)
+++
+++(deftest file-length.5
+++  (loop for i from 33 to 100
+++     for etype = `(unsigned-byte ,i)
+++     for e = (max 0 (- (ash 1 i) 5))
+++     for os = (open "tmp.dat" :direction :output
+++                            :if-exists :supersede
+++                            :element-type etype)
+++     for len = 0
+++     do (loop repeat 17 do (write-byte e os))
+++     do (close os)
+++     unless (let ((is (open "tmp.dat" :direction :input
+++                            :element-type etype)))
+++              (prog1
+++                  (= (file-length is) 17)
+++                (close is)))
+++     collect i)
+++  nil)                
+++
+++(deftest file-length.6
+++  (with-open-file
+++   (*foo* "file-length.lsp" :direction :input)
+++   (declare (special *foo*))
+++   (let ((s (make-synonym-stream '*foo*)))
+++     (unwind-protect
+++      (typep* (file-length s) '(integer 1))
+++     (close s))))
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/file-namestring.lsp
++@@ -0,0 +1,44 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Sep 11 07:40:47 2004
+++;;;; Contains: Tests for FILE-NAMESTRING
+++
+++(in-package :cl-test)
+++
+++(deftest file-namestring.1
+++  (let* ((vals (multiple-value-list
+++             (file-namestring "file-namestring.lsp")))
+++      (s (first vals)))
+++    (if (and (null (cdr vals))
+++          (stringp s)
+++          (equal (file-namestring s) s))
+++     :good
+++      vals))
+++  :good)
+++
+++(deftest file-namestring.2
+++  (do-special-strings
+++   (s "file-namestring.lsp" nil)
+++   (let ((ns (file-namestring s)))
+++     (assert (stringp ns))
+++     (assert (string= (file-namestring ns) ns))))
+++  nil)
+++
+++(deftest file-namestring.3
+++  (let* ((name "file-namestring.lsp")
+++      (pn (merge-pathnames (pathname name)))
+++      (name2 (with-open-file (s pn :direction :input)
+++                             (file-namestring s)))
+++      (name3 (file-namestring pn)))
+++    (or (equalt name2 name3) (list name2 name3)))
+++  t)
+++
+++;;; Error tests
+++
+++(deftest file-namestring.error.1
+++  (signals-error (file-namestring) program-error)
+++  t)
+++
+++(deftest file-namestring.error.2
+++  (signals-error (file-namestring "file-namestring.lsp" nil) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/file-position.lsp
++@@ -0,0 +1,170 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Jan 22 03:02:31 2004
+++;;;; Contains: Tests of FILE-POSITION
+++
+++(in-package :cl-test)
+++
+++(deftest file-position.1
+++  (with-open-file (is "file-position.lsp":direction :input)
+++               (file-position is))
+++  0)
+++
+++(deftest file-position.2
+++  (with-open-file (is "file-position.lsp":direction :input)
+++               (values
+++                (multiple-value-list
+++                 (notnot-mv (file-position is :start)))
+++                (file-position is)))
+++                           
+++  (t) 0)
+++
+++(deftest file-position.3
+++  (with-open-file (is "file-position.lsp":direction :input)
+++               (values
+++                (multiple-value-list
+++                 (notnot-mv (file-position is :end)))
+++                (notnot (> (file-position is) 0))))
+++  (t) t)
+++
+++(deftest file-position.4
+++  (with-open-file
+++   (is "file-position.lsp":direction :input)
+++   (values
+++    (file-position is)
+++    (read-char is)
+++    (notnot (> (file-position is) 0))))
+++  0 #\; t)
+++
+++(deftest file-position.5
+++  (with-open-file
+++   (os "tmp.dat":direction :output
+++       :if-exists :supersede)
+++   (values
+++    (file-position os)
+++    (write-char #\x os)
+++    (notnot (> (file-position os) 0))))
+++  0 #\x t)
+++
+++(deftest file-position.6
+++  (with-open-file
+++   (os "tmp.dat":direction :output
+++       :if-exists :supersede)
+++   (let ((p1 (file-position os))
+++      (delta (file-string-length os #\x)))
+++     (write-char #\x os)
+++     (let ((p2 (file-position os)))
+++       (or (null p1) (null p2) (null delta)
+++        (=t (+ p1 delta) p2)))))
+++  t)
+++
+++;;; Byte streams
+++
+++(deftest file-position.7
+++  (loop for len from 1 to 32
+++     for n = (ash 1 len)
+++     do (with-open-file
+++         (os "tmp.dat" :direction :output
+++             :if-exists :supersede
+++             :element-type `(unsigned-byte ,len))
+++         (loop for i from 0 below 100
+++               for r = (logand (1- n) i)
+++               for pos = (file-position os)
+++               do (assert (or (not pos) (eql pos i)))
+++               do (write-byte r os)))
+++     do (with-open-file
+++         (is "tmp.dat" :direction :input
+++             :element-type `(unsigned-byte ,len))
+++         (loop for i from 0 below 100
+++               for pos = (file-position is)
+++               do (assert (or (not pos) (eql pos i)))
+++               do (let ((byte (read-byte is)))
+++                    (assert (eql byte (logand (1- n) i)))))))
+++  nil)
+++
+++(deftest file-position.8
+++  (loop for len from 33 to 100
+++     for n = (ash 1 len)
+++     do (with-open-file
+++         (os "tmp.dat" :direction :output
+++             :if-exists :supersede
+++             :element-type `(unsigned-byte ,len))
+++         (loop for i from 0 below 100
+++               for r = (logand (1- n) i)
+++               for pos = (file-position os)
+++               do (assert (or (not pos) (eql pos i)))
+++               do (write-byte r os)))
+++     do (with-open-file
+++         (is "tmp.dat" :direction :input
+++             :element-type `(unsigned-byte ,len))
+++         (loop for i from 0 below 100
+++               for pos = (file-position is)
+++               do (assert (or (not pos) (eql pos i)))
+++               do (let ((byte (read-byte is)))
+++                    (assert (eql byte (logand (1- n) i)))))))
+++  nil)
+++
+++(deftest file-position.9
+++  (with-input-from-string
+++   (s "abcdefghijklmnopqrstuvwxyz")
+++   (loop repeat 26
+++      for p = (file-position s)
+++      unless (or (not p)
+++                 (progn
+++                   (file-position s p)
+++                   (eql (file-position s) p)))
+++      collect p
+++      do (read-char s)))
+++  nil)
+++
+++(deftest file-position.10
+++  (with-output-to-string
+++   (s)
+++   (loop repeat 26
+++      for p = (file-position s)
+++      unless (or (not p)
+++                 (progn
+++                   (file-position s p)
+++                   (eql (file-position s) p)))
+++      collect p
+++      do (write-char #\x s)))
+++  "xxxxxxxxxxxxxxxxxxxxxxxxxx")
+++
+++;;; Error tests
+++
+++(deftest file-position.error.1
+++  (signals-error (file-position) program-error)
+++  t)
+++
+++(deftest file-position.error.2
+++  (signals-error
+++   (file-position (make-string-input-stream "abc") :start nil)
+++   program-error)
+++  t)
+++
+++;;; It's not clear what 'too large' means -- can we set the
+++;;; file position to a point where the file may later be extended
+++;;; by some other writer?
+++#|
+++(deftest file-position.error.3
+++  (signals-error
+++   (with-open-file
+++    (is "file-position.lsp" :direction :input)
+++    (flet ((%fail () (error 'type-error)))
+++      (unless (file-position is :end) (%fail))
+++      (let ((fp (file-position is)))
+++     (unless fp (%fail))
+++     (file-position is (+ 1000000 fp)))))
+++   error)
+++  t)
+++
+++(deftest file-position.error.4
+++  (signals-error
+++   (with-open-file
+++    (is "file-position.lsp" :direction :input)
+++    (file-position is 1000000000000000000000))
+++   error)
+++  t)
+++|#
+++
+++  
++\ No newline at end of file
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/file-string-length.lsp
++@@ -0,0 +1,73 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Jan 22 21:34:04 2004
+++;;;; Contains: Tests of FILE-STRING-LENGTH
+++
+++(in-package :cl-test)
+++
+++(deftest file-string-length.1
+++  (with-open-file 
+++    (s "tmp.dat" :direction :output
+++       :if-exists :supersede)
+++    (loop for x across +standard-chars+
+++       for len = (file-string-length s x)
+++       do (assert (typep len '(or null (integer 0))))
+++       do (let ((pos1 (file-position s)))
+++            (write-char x s)
+++            (let ((pos2 (file-position s)))
+++              (when (and pos1 pos2 len)
+++                (assert (= (+ pos1 len) pos2)))))))
+++  nil)
+++
+++(deftest file-string-length.2
+++  (with-open-file 
+++    (s "tmp.dat" :direction :output
+++       :if-exists :supersede)
+++    (loop for x across +standard-chars+
+++       for len = (file-string-length s (string x))
+++       do (assert (typep len '(or null (integer 0))))
+++       do (let ((pos1 (file-position s)))
+++            (write-sequence (string x) s)
+++            (let ((pos2 (file-position s)))
+++              (when (and pos1 pos2 len)
+++                (assert (= (+ pos1 len) pos2)))))))
+++  nil)
+++
+++(deftest file-string-length.3
+++  (with-open-file
+++   (stream "tmp.dat" :direction :output
+++        :if-exists :supersede)
+++   (let* ((s1 "abcde")
+++       (n (file-string-length stream s1)))
+++     (do-special-strings
+++      (s2 s1 nil)
+++      (assert (= (file-string-length stream s2) n)))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest file-string-length.error.1
+++  (signals-error (file-string-length) program-error)
+++  t)
+++
+++(deftest file-string-length.error.2
+++  (signals-error
+++   (with-open-file 
+++    (s "tmp.dat" :direction :output
+++       :if-exists :supersede)
+++    (file-string-length s))
+++   program-error)
+++  t)
+++
+++(deftest file-string-length.error.3
+++  (signals-error
+++   (with-open-file 
+++    (s "tmp.dat" :direction :output
+++       :if-exists :supersede)
+++    (file-string-length s #\x nil))
+++   program-error)
+++  t)
+++
+++
+++  
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/file-write-date.lsp
++@@ -0,0 +1,89 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan  6 06:01:35 2004
+++;;;; Contains: Tests for FILE-WRITE-DATE
+++
+++(in-package :cl-test)
+++
+++(deftest file-write-date.1
+++  (let* ((pn "file-write-date.lsp")
+++      (date (file-write-date pn))
+++      (time (get-universal-time)))
+++    (or (null date)
+++     (and (integerp date)
+++          (<= 0 date time)
+++          t)))
+++  t)
+++
+++(deftest file-write-date.2
+++  (let* ((pn #p"file-write-date.lsp")
+++      (date (file-write-date pn))
+++      (time (get-universal-time)))
+++    (or (null date)
+++     (and (integerp date)
+++          (<= 0 date time)
+++          t)))
+++  t)
+++          
+++(deftest file-write-date.3
+++  (let* ((pn (truename "file-write-date.lsp"))
+++      (date (file-write-date pn))
+++      (time (get-universal-time)))
+++    (or (null date)
+++     (and (integerp date)
+++          (<= 0 date time)
+++          t)))
+++  t)
+++
+++(deftest file-write-date.4
+++  (loop for pn in (directory
+++                (make-pathname :name :wild :type :wild
+++                               :defaults *default-pathname-defaults*))
+++     for date = (file-write-date pn)
+++     for time = (get-universal-time)
+++     unless (or (null date)
+++                (<= 0 date time))
+++     collect (list pn date time))
+++  nil)
+++
+++(deftest file-write-date.5
+++  (length (multiple-value-list (file-write-date "file-write-date.lsp")))
+++  1)
+++
+++;;; Specialized string tests
+++
+++(deftest file-write-date.6
+++  (let* ((str "file-write-date.lsp")
+++      (date (file-write-date str)))
+++    (do-special-strings
+++     (s str nil)
+++     (assert (equal (file-write-date s) date))))
+++  nil)
+++
+++;;; FIXME
+++;;; Add LPN test
+++
+++;;; Error tests
+++
+++(deftest file-write-date.error.1
+++  (signals-error (file-write-date) program-error)
+++  t)
+++
+++(deftest file-write-date.error.2
+++  (signals-error (file-write-date "file-write-date.lsp" nil)
+++              program-error)
+++  t)
+++
+++(deftest file-write-date.error.3
+++  (signals-error-always
+++   (file-write-date (make-pathname :name :wild :type "lsp"
+++                                :defaults *default-pathname-defaults*))
+++   file-error)
+++  t t)
+++
+++(deftest file-write-date.error.4
+++  (signals-error-always
+++   (file-write-date (make-pathname :name "file-write-date" :type :wild
+++                                :defaults *default-pathname-defaults*))
+++   file-error)
+++  t t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/finish-output.lsp
++@@ -0,0 +1,54 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Jan 28 06:38:20 2004
+++;;;; Contains: Tests of FINISH-OUTPUT
+++
+++(in-package :cl-test)
+++
+++(deftest finish-output.1
+++  (finish-output)
+++  nil)
+++
+++(deftest finish-output.2
+++  (finish-output t)
+++  nil)
+++
+++(deftest finish-output.3
+++  (finish-output nil)
+++  nil)
+++
+++(deftest finish-output.4
+++  (loop for s in (list *debug-io* *error-output* *query-io*
+++                    *standard-output* *trace-output* *terminal-io*)
+++     for results = (multiple-value-list (finish-output s))
+++     unless (equal results '(nil))
+++     collect s)
+++  nil)
+++
+++(deftest finish-output.5
+++  (let ((os (make-string-output-stream)))
+++    (let ((*terminal-io* (make-two-way-stream (make-string-input-stream "")
+++                                           os)))
+++      (finish-output t)))
+++  nil)
+++
+++(deftest finish-output.6
+++  (let ((*standard-output* (make-string-output-stream)))
+++    (finish-output nil))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest finish-output.error.1
+++  (signals-error (finish-output nil nil) program-error)
+++  t)
+++
+++(deftest finish-output.error.2
+++  (signals-error (finish-output t nil) program-error)
+++  t)
+++
+++(deftest finish-output.error.3
+++  (check-type-error #'finish-output
+++                 #'(lambda (x) (typep x '(or stream (member nil t)))))
+++  nil)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/force-output.lsp
++@@ -0,0 +1,56 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Jan 28 06:41:46 2004
+++;;;; Contains: Tests of FORCE-OUTPUT
+++
+++(in-package :cl-test)
+++
+++(deftest force-output.1
+++  (force-output)
+++  nil)
+++
+++(deftest force-output.2
+++  (force-output t)
+++  nil)
+++
+++(deftest force-output.3
+++  (force-output nil)
+++  nil)
+++
+++(deftest force-output.4
+++  (loop for s in (list *debug-io* *error-output* *query-io*
+++                    *standard-output* *trace-output* *terminal-io*)
+++     for results = (multiple-value-list (force-output s))
+++     unless (equal results '(nil))
+++     collect s)
+++  nil)
+++
+++(deftest force-output.5
+++  (let ((os (make-string-output-stream)))
+++    (let ((*terminal-io* (make-two-way-stream (make-string-input-stream "")
+++                                           os)))
+++      (force-output t)))
+++  nil)
+++
+++(deftest force-output.6
+++  (let ((*standard-output* (make-string-output-stream)))
+++    (force-output nil))
+++  nil)
+++
+++
+++;;; Error tests
+++
+++(deftest force-output.error.1
+++  (signals-error (force-output nil nil) program-error)
+++  t)
+++
+++(deftest force-output.error.2
+++  (signals-error (force-output t nil) program-error)
+++  t)
+++
+++(deftest force-output.error.3
+++  (check-type-error #'force-output
+++                 #'(lambda (x) (typep x '(or stream (member nil t)))))
+++  nil)
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/fresh-line.lsp
++@@ -0,0 +1,87 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Jan 18 20:41:18 2004
+++;;;; Contains: Tests of FRESH-LINE
+++
+++(in-package :cl-test)
+++
+++(deftest fresh-line.1
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (write-char #\a)
+++       (setq result (notnot (fresh-line))))
+++     result))
+++  #.(concatenate 'string "a" (string #\Newline))
+++  t)
+++
+++(deftest fresh-line.2
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (write-char #\a s)
+++       (setq result (notnot (fresh-line s))))
+++     result))
+++  #.(concatenate 'string "a" (string #\Newline))
+++  t)
+++
+++(deftest fresh-line.3
+++  (with-output-to-string
+++    (s)
+++    (write-char #\x s)
+++    (fresh-line s)
+++    (fresh-line s)
+++    (write-char #\y s))
+++  #.(concatenate 'string "x" (string #\Newline) "y"))
+++
+++(deftest fresh-line.4
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (setq result (multiple-value-list (fresh-line))))
+++     result))
+++  "" (nil))
+++
+++(deftest fresh-line.5
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (write-char #\Space s)
+++       (setq result
+++          (list
+++           (multiple-value-list (notnot-mv (fresh-line s)))
+++           (multiple-value-list (fresh-line s))
+++           (multiple-value-list (fresh-line s)))))
+++     result))
+++  " 
+++" ((t) (nil) (nil)))
+++
+++(deftest fresh-line.6
+++  (with-output-to-string
+++    (os)
+++    (let ((*terminal-io* (make-two-way-stream *standard-input* os)))
+++      (write-char #\a t)
+++      (fresh-line t)
+++      (finish-output t)))
+++  #.(concatenate 'string (string #\a) (string #\Newline)))
+++
+++(deftest fresh-line.7
+++  (with-output-to-string
+++    (*standard-output*)
+++    (write-char #\a nil)
+++    (terpri nil))
+++  #.(concatenate 'string (string #\a) (string #\Newline)))
+++
+++;;; Error tests
+++
+++(deftest fresh-line.error.1
+++  (signals-error
+++   (with-output-to-string
+++     (s)
+++     (fresh-line s nil))
+++   program-error)
+++  t)
++--- gcl-2.6.12.orig/ansi-tests/gclload2.lsp
+++++ gcl-2.6.12/ansi-tests/gclload2.lsp
++@@ -46,6 +46,15 @@
++ ;;; Tests of strings
++ (load "load-strings.lsp")
++ 
+++;;; Tests of pathnames
+++(load "load-pathnames.lsp")
+++
+++;;; Tests of file operations
+++(load "load-files.lsp")
+++
+++;;; Tests of streams
+++(load "load-streams.lsp")
+++
++ ;;; Tests for character functions
++ (compile-and-load "char-aux.lsp")
++ (load "character.lsp")
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/get-output-stream-string.lsp
++@@ -0,0 +1,32 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Feb 14 09:48:46 2004
+++;;;; Contains: Tests of GET-OUTPUT-STREAM-STRING
+++
+++(in-package :cl-test)
+++
+++;; this function is used extensively elsewhere in the test suite
+++
+++(deftest get-output-stream-string.1
+++  (let ((s (make-string-output-stream)))
+++    (values
+++     (get-output-stream-string s)
+++     (write-string "abc" s)
+++     (write-string "def" s)
+++     (get-output-stream-string s)
+++     (get-output-stream-string s)))
+++  "" "abc" "def" "abcdef" "")
+++
+++;;; Error cases
+++
+++(deftest get-output-stream-string.error.1
+++  (signals-error (get-output-stream-string) t)
+++  t)
+++
+++(deftest get-output-stream-string.error.2
+++  (signals-error (get-output-stream-string (make-string-output-stream) nil) t)
+++  t)
+++
+++
+++
+++     
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/host-namestring.lsp
++@@ -0,0 +1,49 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Sep 12 06:22:40 2004
+++;;;; Contains: Tests of HOST-NAMESTRING
+++
+++(in-package :cl-test)
+++
+++(deftest host-namestring.1
+++  (let* ((vals (multiple-value-list
+++             (host-namestring "host-namestring.lsp")))
+++      (s (first vals)))
+++    (if (and (null (cdr vals))
+++          (or (null s)
+++              (stringp s)
+++              ;; (equal (host-namestring s) s)
+++              ))
+++     :good
+++      vals))
+++  :good)
+++
+++(deftest host-namestring.2
+++  (do-special-strings
+++   (s "host-namestring.lsp" nil)
+++   (let ((ns (host-namestring s)))
+++     (when ns
+++       (assert (stringp ns))
+++       ;; (assert (string= (host-namestring ns) ns))
+++       )))
+++  nil)
+++
+++(deftest host-namestring.3
+++  (let* ((name "host-namestring.lsp")
+++      (pn (merge-pathnames (pathname name)))
+++      (name2 (with-open-file (s pn :direction :input)
+++                             (host-namestring s)))
+++      (name3 (host-namestring pn)))
+++    (or (equalt name2 name3) (list name2 name3)))
+++  t)
+++
+++;;; Error tests
+++
+++(deftest host-namestring.error.1
+++  (signals-error (host-namestring) program-error)
+++  t)
+++
+++(deftest host-namestring.error.2
+++  (signals-error (host-namestring "host-namestring.lsp" nil) program-error)
+++  t)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/input-stream-p.lsp
++@@ -0,0 +1,40 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 13 19:39:27 2004
+++;;;; Contains: Tests for INPUT-STREAM-P
+++
+++(in-package :cl-test)
+++
+++(deftest input-stream-p.1
+++  (notnot-mv (input-stream-p *standard-input*))
+++  t)
+++
+++(deftest input-stream-p.2
+++  (notnot-mv (input-stream-p *terminal-io*))
+++  t)
+++
+++(deftest input-stream-p.3
+++  (with-open-file (s "input-stream-p.lsp" :direction :input)
+++               (notnot-mv (input-stream-p s)))
+++  t)
+++
+++(deftest input-stream-p.4
+++  (with-open-file (s "foo.txt" :direction :output
+++                  :if-exists :supersede)
+++               (input-stream-p s))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest input-stream-p.error.1
+++  (signals-error (input-stream-p) program-error)
+++  t)
+++
+++(deftest input-stream-p.error.2
+++  (signals-error (input-stream-p *standard-input* nil)
+++              program-error)
+++  t)
+++
+++(deftest input-stream-p.error.3
+++  (check-type-error #'input-stream-p #'streamp)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/interactive-stream-p.lsp
++@@ -0,0 +1,28 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 13 19:47:59 2004
+++;;;; Contains: Tests of INTERACTIVE-STREAM-P
+++
+++(in-package :cl-test)
+++
+++(deftest interactive-stream-p.1
+++  (let ((streams (list *debug-io* *error-output* *query-io*
+++                    *standard-input* *standard-output*
+++                    *trace-output* *terminal-io*)))
+++    (mapc #'interactive-stream-p streams)
+++    ;; no error should occur
+++    nil)
+++  nil)
+++
+++(deftest interactive-stream-p.error.1
+++  (check-type-error #'interactive-stream-p #'streamp)
+++  nil)
+++
+++(deftest interactive-stream-p.error.2
+++  (signals-error (interactive-stream-p) program-error)
+++  t)
+++
+++(deftest interactive-stream-p.error.3
+++  (signals-error (interactive-stream-p *terminal-io* nil)
+++              program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/ldtest.lsp
++@@ -0,0 +1 @@
+++(in-package :cl-test) (defun LOAD-TEST-FUN-3 () :foo)
++\ No newline at end of file
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/listen.lsp
++@@ -0,0 +1,73 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 27 21:16:39 2004
+++;;;; Contains: Tests of LISTEN
+++
+++(in-package :cl-test)
+++
+++(deftest listen.1
+++  (with-input-from-string (s "") (listen s))
+++  nil)
+++
+++(deftest listen.2
+++  (with-input-from-string (s "x") (notnot-mv (listen s)))
+++  t)
+++
+++(deftest listen.3
+++  (with-input-from-string (*standard-input* "") (listen))
+++  nil)
+++
+++(deftest listen.4
+++  (with-input-from-string (*standard-input* "A") (notnot-mv (listen)))
+++  t)
+++
+++;;; (deftest listen.5
+++;;;  (when (interactive-stream-p *standard-input*)
+++;;;    (clear-input) (listen))
+++;;;  nil)
+++
+++(deftest listen.6
+++  (with-input-from-string
+++   (s "x")
+++   (values
+++    (read-char s)
+++    (listen s)
+++    (unread-char #\x s)
+++    (notnot (listen s))
+++    (read-char s)))
+++  #\x nil nil t #\x)
+++
+++(deftest listen.7
+++  (with-open-file
+++   (s "listen.lsp")
+++   (values
+++    (notnot (listen s))
+++    (handler-case
+++     (locally (declare (optimize safety))
+++           (loop (read-char s)))
+++     (end-of-file () (listen s)))))
+++  t nil)
+++
+++(deftest listen.8
+++  (with-input-from-string
+++   (is "abc")
+++   (let ((*terminal-io* (make-two-way-stream is (make-broadcast-stream))))
+++     (notnot-mv (listen t))))
+++  t)
+++
+++(deftest listen.9
+++  (with-input-from-string
+++   (*standard-input* "345")
+++   (notnot-mv (listen nil)))
+++  t)
+++
+++;;; Error tests
+++
+++(deftest listen.error.1
+++  :notes (:assume-no-simple-streams)
+++  (signals-error (listen *standard-input* nil) program-error)
+++  t)
+++
+++(deftest listen.error.2
+++  (signals-error (listen *standard-input* nil nil) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/load-files.lsp
++@@ -0,0 +1,16 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Jan  1 11:59:35 2004
+++;;;; Contains: Load tests of section 20, 'Files'
+++
+++(in-package :cl-test)
+++
+++(load "directory.lsp")
+++(load "probe-file.lsp")
+++(load "ensure-directories-exist.lsp")
+++(load "truename.lsp")
+++(load "file-author.lsp")
+++(load "file-write-date.lsp")
+++(load "rename-file.lsp")
+++(load "delete-file.lsp")
+++(load "file-error.lsp")
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/load-logical-pathname-translations.lsp
++@@ -0,0 +1,34 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Dec 31 09:31:33 2003
+++;;;; Contains: Tests (such as they are) for LOAD-LOGICAL-PATHNAME-TRANSLATIONS
+++
+++(in-package :cl-test)
+++
+++;;; The function LOAD-LOGICAL-PATHNAME-TRANSLATIONS is almost entirely
+++;;; untestable, since the basic behavior is implementation defined.
+++
+++(deftest load-logical-pathname-translations.1
+++  (load-logical-pathname-translations "CLTESTROOT")
+++  nil)
+++
+++;;; Error cases
+++
+++(deftest load-logical-pathname-translations.error.1
+++  (handler-case
+++   (progn (load-logical-pathname-translations
+++        "THEREHADBETTERNOTBEAHOSTCALLEDTHIS")
+++      nil)
+++   (error () :good))
+++  :good)
+++
+++(deftest load-logical-pathname-translations.error.2
+++  (signals-error (load-logical-pathname-translations)
+++              program-error)
+++  t)
+++
+++(deftest load-logical-pathname-translations.error.3
+++  (signals-error (load-logical-pathname-translations "CLTESTROOT" nil)
+++              program-error)
+++  t)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/load-pathnames.lsp
++@@ -0,0 +1,36 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Nov 29 04:33:05 2003
+++;;;; Contains: Load tests for pathnames and logical pathnames
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++(load "pathnames.lsp")
+++(load "pathname.lsp")
+++(load "pathnamep.lsp")
+++(load "make-pathname.lsp")
+++(load "pathname-host.lsp")
+++(load "pathname-device.lsp")
+++(load "pathname-directory.lsp")
+++(load "pathname-name.lsp")
+++(load "pathname-type.lsp")
+++(load "pathname-version.lsp")
+++
+++(load "load-logical-pathname-translations.lsp")
+++(load "logical-pathname.lsp")
+++(load "logical-pathname-translations.lsp")
+++(load "translate-logical-pathname.lsp")
+++
+++(load "namestring.lsp")
+++(load "file-namestring.lsp")
+++(load "directory-namestring.lsp")
+++(load "host-namestring.lsp")
+++(load "enough-namestring.lsp")
+++
+++(load "wild-pathname-p.lsp")
+++(load "merge-pathnames.lsp")
+++(load "pathname-match-p.lsp")
+++
+++(load "parse-namestring.lsp")
++\ No newline at end of file
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/load-streams.lsp
++@@ -0,0 +1,57 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 13 19:38:10 2004
+++;;;; Contains: Load files containing tests for section 21 (streams)
+++
+++(in-package :cl-test)
+++
+++(load "input-stream-p.lsp")
+++(load "output-stream-p.lsp")
+++(load "interactive-stream-p.lsp")
+++(load "open-stream-p.lsp")
+++(load "stream-element-type.lsp")
+++(load "streamp.lsp")
+++(load "read-byte.lsp")
+++(load "peek-char.lsp")
+++(load "read-char.lsp")
+++(load "read-char-no-hang.lsp")
+++(load "terpri.lsp")
+++(load "fresh-line.lsp")
+++(load "unread-char.lsp")
+++(load "write-char.lsp")
+++(load "read-line.lsp")
+++(load "write-string.lsp")
+++(load "write-line.lsp")
+++(load "read-sequence.lsp")
+++(load "write-sequence.lsp")
+++(load "file-length.lsp")
+++(load "file-position.lsp")
+++(load "file-string-length.lsp")
+++(load "open.lsp")
+++(load "stream-external-format.lsp")
+++(load "with-open-file.lsp")
+++(load "with-open-stream.lsp")
+++(load "listen.lsp")
+++(load "clear-input.lsp")
+++(load "finish-output.lsp")
+++(load "force-output.lsp")
+++(load "clear-output.lsp")
+++(load "make-synonym-stream.lsp")
+++(load "synonym-stream-symbol.lsp")
+++(load "make-broadcast-stream.lsp")
+++(load "broadcast-stream-streams.lsp")
+++(load "make-two-way-stream.lsp")
+++(load "two-way-stream-input-stream.lsp")
+++(load "two-way-stream-output-stream.lsp")
+++(load "echo-stream-input-stream.lsp")
+++(load "echo-stream-output-stream.lsp")
+++(load "make-echo-stream.lsp")
+++(load "concatenated-stream-streams.lsp")
+++(load "make-concatenated-stream.lsp")
+++(load "get-output-stream-string.lsp")
+++(load "make-string-input-stream.lsp")
+++(load "make-string-output-stream.lsp")
+++(load "with-input-from-string.lsp")
+++(load "with-output-to-string.lsp")
+++(load "stream-error-stream.lsp")
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/load-system-construction.lsp
++@@ -0,0 +1,12 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Dec 12 19:44:29 2004
+++;;;; Contains: Load tests for system construction (section 24)
+++
+++(in-package :cl-test)
+++
+++(load "compile-file.lsp")
+++(load "load.lsp")
+++(load "with-compilation-unit.lsp")
+++(load "features.lsp")
+++(load "modules.lsp")
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/load-test-file-2.lsp
++@@ -0,0 +1,7 @@
+++(in-package :cl-test)
+++
+++(declaim (special *load-test-var.1* *load-test-var.2*))
+++(eval-when (:load-toplevel)
+++  (setq *load-test-var.1* *load-pathname*)
+++  (setq *load-test-var.2* *load-truename*))
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/load-test-file.lsp
++@@ -0,0 +1,9 @@
+++(in-package :cl-test)
+++
+++(defun load-file-test-fun.1 ()
+++  '#.*load-pathname*)
+++
+++(defun load-file-test-fun.2 ()
+++  '#.*load-truename*)
+++
+++
++--- gcl-2.6.12.orig/ansi-tests/load.lsp
+++++ gcl-2.6.12/ansi-tests/load.lsp
++@@ -1,15 +1,227 @@
++-;; Get the MK package
++-;; I've hardwired a path here; fix for your system
++-;; I assume the package is already compiled.
++-(unless (find-package "MK")
++-  (load #.(concatenate 'string "../defsys30/defsystem."
++-                  #+cmu (C::BACKEND-FASL-FILE-TYPE C::*TARGET-BACKEND*)
++-                  #+allegro "fasl"
++-                  #+(or akcl gcl) "o")))
++-
++-(load "rt/rt.system")
++-(mk::load-system "rt")
++-(mk::compile-system "cltest")
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Apr 12 21:51:49 2005
+++;;;; Contains: Tests of LOAD
+++
++ (in-package :cl-test)
++ 
+++(defun load-file-test (file funname &rest args &key
+++                         if-does-not-exist
+++                         (print nil print-p)
+++                         (verbose nil verbose-p)
+++                         (*load-print* nil)
+++                         (*load-verbose* nil)
+++                         external-format)
+++  (declare (ignorable external-format if-does-not-exist
+++                   print print-p verbose verbose-p))
+++  (fmakunbound funname)
+++  (let* ((str (make-array '(0) :element-type 'character :adjustable t
+++                       :fill-pointer 0))
+++      (vals (multiple-value-list
+++             (with-output-to-string
+++               (*standard-output* str)
+++               (apply #'load file :allow-other-keys t args))))
+++      (print? (if print-p print *load-print*))
+++      (verbose? (if verbose-p verbose *load-verbose*)))
+++      (values
+++       (let ((v1 (car vals))
+++          (v2 (or (and verbose-p (not verbose))
+++                  (and (not verbose-p) (not *load-verbose*))
+++                  (position #\; str)))
+++          (v3 (or (and print-p (not print))
+++                  (and (not print-p) (not *load-print*))
+++                  (> (length str) 0)))
+++          (v4 (if (or print? verbose?)
+++                  (> (length str) 0)
+++                t)))
+++      (if (and (= (length vals) 1) v1 v2 v3 v4) t (list vals v2 v3 v4 str)))
+++       (funcall funname))))
+++
+++(deftest load.1
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1)
+++  t nil)
+++
+++(deftest load.2
+++  (load-file-test #p"compile-file-test-file.lsp" 'compile-file-test-fun.1)
+++  t nil)
+++
+++(deftest load.3
+++  (with-input-from-string
+++   (s "(in-package :cl-test) (defun load-file-test-fun.2 () 'good)")
+++   (load-file-test s 'load-file-test-fun.2))
+++  t good)
+++
+++(deftest load.4
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
+++               :external-format :default)
+++  t nil)
+++
+++(deftest load.5
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
+++               :verbose t)
+++  t nil)
+++
+++(deftest load.6
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
+++               :*load-verbose* t)
+++  t nil)
+++
+++(deftest load.7
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
+++               :*load-verbose* t :verbose nil)
+++  t nil)
+++
+++(deftest load.8
+++  (with-input-from-string
+++   (s "(in-package :cl-test) (defun load-file-test-fun.2 () 'good)")
+++   (load-file-test s 'load-file-test-fun.2 :verbose t))
+++  t good)
+++
+++(deftest load.9
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
+++               :print t)
+++  t nil)
+++
+++(deftest load.10
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
+++               :*load-print* t)
+++  t nil)
+++
+++(deftest load.11
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
+++               :*load-print* t :print nil)
+++  t nil)
+++
+++(deftest load.12
+++  (load-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
+++               :*load-print* nil :print t)
+++  t nil)
+++
+++(deftest load.13
+++  (with-input-from-string
+++   (s "(in-package :cl-test) (defun load-file-test-fun.2 () 'good)")
+++   (load-file-test s 'load-file-test-fun.2 :print t))
+++  t good)
+++
+++(deftest load.14
+++  (load "nonexistent-file.lsp" :if-does-not-exist nil)
+++  nil)
+++
+++(defpackage LOAD-TEST-PACKAGE (:use "COMMON-LISP"))
+++
+++(deftest load.15
+++  (let ((*package* (find-package "LOAD-TEST-PACKAGE")))
+++    (with-input-from-string
+++     (s "(defun f () 'good)")
+++     (load-file-test s 'load-test-package::f)))
+++  t load-test-package::good)
+++
+++(deftest load.15a
+++  (let ((*package* (find-package "CL-TEST")))
+++    (values
+++     (with-input-from-string
+++      (s "(eval-when (:load-toplevel :execute) (setq *package* (find-package \"LOAD-TEST-PACKAGE\")))
+++          (defun f () 'good)")
+++      (multiple-value-list (load-file-test s 'load-test-package::f)))
+++     (read-from-string "GOOD")))
+++  (t load-test-package::good) good)
+++
+++(deftest load.16
+++  (let ((*readtable* (copy-readtable nil)))
+++    (set-macro-character #\! (get-macro-character #\'))
+++    (with-input-from-string
+++     (s "(in-package :cl-test) (defun load-file-test-fun.3 () !good)")
+++     (load-file-test s 'load-file-test-fun.3)))
+++  t good)
+++
+++(deftest load.16a
+++  (let ((*readtable* *readtable*)
+++     (*package* (find-package "CL-TEST")))
+++    (values
+++     (with-input-from-string
+++      (s "(in-package :cl-test)
+++         (eval-when (:load-toplevel :execute)
+++            (setq *readtable* (copy-readtable nil))
+++            (set-macro-character #\\! (get-macro-character #\\')))
+++         (defun load-file-test-fun.3 () !good)")
+++      (multiple-value-list
+++       (load-file-test s 'load-file-test-fun.3)))
+++     (read-from-string "!FOO")))
+++  (t good) !FOO)
+++
+++(deftest load.17
+++  (let ((file #p"load-test-file.lsp"))
+++    (fmakunbound 'load-file-test-fun.1)
+++    (fmakunbound 'load-file-test-fun.2)
+++    (values
+++     (notnot (load file))
+++     (let ((p1 (pathname (merge-pathnames file)))
+++        (p2 (funcall 'load-file-test-fun.1)))
+++       (equalpt-or-report p1 p2))
+++     (let ((p1 (truename file))
+++        (p2 (funcall 'load-file-test-fun.2)))
+++       (equalpt-or-report p1 p2))))
+++  t t t)
+++
+++;;; Test that the load pathname/truename variables are bound
+++;;; properly when loading compiled files
+++
+++(deftest load.18
+++  (let* ((file "load-test-file-2.lsp")
+++      (target (enough-namestring (compile-file-pathname file))))
+++    (declare (special *load-test-var.1* *load-test-var.2*))
+++    (compile-file file)
+++    (makunbound '*load-test-var.1*)
+++    (makunbound '*load-test-var.2*)
+++    (load target)
+++    (values
+++     (let ((p1 (pathname (merge-pathnames target)))
+++        (p2 *load-test-var.1*))
+++       (equalpt-or-report p1 p2))
+++     (let ((p1 (truename target))
+++        (p2 *load-test-var.2*))
+++       (equalpt-or-report p1 p2))))
+++  t t)
+++
+++(deftest load.19
+++  (let ((file (logical-pathname "CLTEST:LDTEST.LSP"))
+++     (fn 'load-test-fun-3)
+++     (*package* (find-package "CL-TEST")))
+++    (with-open-file
+++     (s file :direction :output :if-exists :supersede
+++     :if-does-not-exist :create)
+++     (format s "(in-package :cl-test) (defun ~a () :foo)" fn))
+++    (fmakunbound fn)
+++    (values
+++     (notnot (load file))
+++     (funcall fn)))
+++  t :foo)
+++
+++;;; Defaults of the load variables
+++
+++(deftest load-pathname.1
+++  *load-pathname*
+++  nil)
+++
+++(deftest load-truename.1
+++  *load-truename*
+++  nil)
+++
+++(deftest load-print.1
+++  *load-print*
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest load.error.1
+++  (signals-error (load "nonexistent-file.lsp") file-error)
+++  t)
+++
+++(deftest load.error.2
+++  (signals-error (load) program-error)
+++  t)
++ 
+++(deftest load.error.3
+++  (signals-error (load "compile-file-test-file.lsp" :bad-key-arg t)
+++              program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/logical-pathname-translations.lsp
++@@ -0,0 +1,8 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Dec 31 09:46:08 2003
+++;;;; Contains: Tests of LOGICAL-PATHNAME-TRANSLATIONS
+++
+++(in-package :cl-test)
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/logical-pathname.lsp
++@@ -0,0 +1,93 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Dec 30 19:05:01 2003
+++;;;; Contains: Tests of LOGICAL-PATHNAME
+++
+++(in-package :cl-test)
+++
+++(deftest logical-pathname.1
+++  (loop for x in *logical-pathnames*
+++     always (eql x (logical-pathname x)))
+++  t)
+++
+++(deftest logical-pathname.2
+++  (notnot-mv (typep (logical-pathname "CLTEST:FOO") 'logical-pathname))
+++  t)
+++
+++(deftest logical-pathname.3
+++  (let ((name "CLTEST:TEMP.DAT.NEWEST"))
+++    (with-open-file
+++     (s (logical-pathname name)
+++     :direction :output
+++     :if-exists :supersede
+++     :if-does-not-exist :create)
+++     (or (equalt (logical-pathname s) (logical-pathname name))
+++      (list (logical-pathname s) (logical-pathname name)))))
+++  t)
+++
+++
+++;;; Error tests
+++
+++(deftest logical-pathname.error.1
+++  (check-type-error #'logical-pathname
+++                 (typef '(or string stream logical-pathname)))
+++  nil)
+++
+++(deftest logical-pathname.error.2
+++  ;; Doesn't specify a host
+++  (signals-error (logical-pathname "FOO.TXT") type-error)
+++  t)
+++
+++(deftest logical-pathname.error.3
+++  (signals-error
+++   (with-open-file (s #p"logical-pathname.lsp" :direction :input)
+++                (logical-pathname s))
+++   type-error)
+++  t)
+++
+++(deftest logical-pathname.error.4
+++  (signals-error
+++   (with-open-stream
+++    (is (make-concatenated-stream))
+++    (with-open-stream
+++     (os (make-broadcast-stream))
+++     (with-open-stream
+++      (s (make-two-way-stream is os))
+++      (logical-pathname s))))
+++   type-error)
+++  t)
+++
+++(deftest logical-pathname.error.5
+++  (signals-error
+++   (with-open-stream
+++    (is (make-concatenated-stream))
+++    (with-open-stream
+++     (os (make-broadcast-stream))
+++     (with-open-stream
+++      (s (make-echo-stream is os))
+++      (logical-pathname s))))
+++   type-error)
+++  t)
+++
+++(deftest logical-pathname.error.6
+++  (signals-error (with-open-stream (s (make-broadcast-stream)) (logical-pathname s)) type-error)
+++  t)
+++
+++(deftest logical-pathname.error.7
+++  (signals-error (with-open-stream (s (make-concatenated-stream)) (logical-pathname s)) type-error)
+++  t)
+++
+++(deftest logical-pathname.error.8
+++  (signals-error (with-open-stream (s (make-string-input-stream "foo"))
+++                                (logical-pathname s)) type-error)
+++  t)
+++
+++(deftest logical-pathname.error.9
+++  (signals-error (with-output-to-string (s) (logical-pathname s)) type-error)
+++  t)
+++
+++(deftest logical-pathname.error.10
+++  (handler-case
+++   (progn (eval '(locally (declare (optimize safety)) (logical-pathname "CLROOT:%"))) t)
+++   (type-error () t))
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/make-broadcast-stream.lsp
++@@ -0,0 +1,99 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Jan 29 21:28:25 2004
+++;;;; Contains: Tests of MAKE-BROADCAST-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest make-broadcast-stream.1
+++  (let ((s (make-broadcast-stream)))
+++    (assert (typep s 'stream))
+++    (assert (typep s 'broadcast-stream))
+++    (assert (output-stream-p s))
+++    ;; (assert (not (input-stream-p s)))
+++    (assert (open-stream-p s))
+++    (assert (streamp s))
+++    ;; (assert (eq (stream-element-type s) t))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'broadcast-stream))
+++     (notnot (output-stream-p s))
+++     (progn (write-char #\x s) nil)
+++     ))
+++  t t t nil)
+++
+++(deftest make-broadcast-stream.2
+++  (with-output-to-string
+++    (s1)
+++    (let ((s (make-broadcast-stream s1)))
+++      (assert (typep s 'stream))
+++      (assert (typep s 'broadcast-stream))
+++      (assert (output-stream-p s))
+++      ;; (assert (not (input-stream-p s)))
+++      (assert (open-stream-p s))
+++      (assert (streamp s))
+++      (assert (eql (stream-element-type s)
+++                (stream-element-type s1)))
+++      (write-char #\x s)))
+++  "x")
+++
+++(deftest make-broadcast-stream.3
+++  (let ((s1 (make-string-output-stream))
+++     (s2 (make-string-output-stream)))
+++    (let ((s (make-broadcast-stream s1 s2)))
+++      (assert (typep s 'stream))
+++      (assert (typep s 'broadcast-stream))
+++      (assert (output-stream-p s))
+++      ;; (assert (not (input-stream-p s)))
+++      (assert (open-stream-p s))
+++      (assert (streamp s))
+++      (assert (eql (stream-element-type s)
+++                (stream-element-type s2)))
+++      (format s "This is a test"))
+++    (values
+++     (get-output-stream-string s1)
+++     (get-output-stream-string s2)))
+++  "This is a test"
+++  "This is a test")
+++
+++(deftest make-broadcast-stream.4
+++  (fresh-line (make-broadcast-stream))
+++  nil)
+++
+++(deftest make-broadcast-stream.5
+++  (file-length (make-broadcast-stream))
+++  0)
+++
+++(deftest make-broadcast-stream.6
+++  (file-position (make-broadcast-stream))
+++  0)
+++
+++(deftest make-broadcast-stream.7
+++  (file-string-length (make-broadcast-stream) "antidisestablishmentarianism")
+++  1)
+++
+++(deftest make-broadcast-stream.8
+++  (stream-external-format (make-broadcast-stream))
+++  :default)
+++
+++
+++
+++;;; FIXME
+++;;; Add tests for: close,
+++;;;  peek-char, read-char-no-hang, terpri, fresh-line, unread-char,
+++;;;  read-line, write-line, write-string, read-sequence, write-sequence,
+++;;;  read-byte, write-byte, listen, clear-input, finish-output, force-output,
+++;;;  clear-output, print, prin1 princ
+++
+++;;; Error tests
+++
+++(deftest make-broadcast-stream.error.1
+++  (check-type-error #'make-broadcast-stream
+++                 #'(lambda (x) (and (streamp x) (output-stream-p x))))
+++  nil)
+++
+++(deftest make-broadcast-stream.error.2
+++  (check-type-error #'make-broadcast-stream
+++                 #'(lambda (x) (and (streamp x) (output-stream-p x)))
+++                 *streams*)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/make-concatenated-stream.lsp
++@@ -0,0 +1,323 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Feb 14 08:41:18 2004
+++;;;; Contains: Tests of MAKE-CONCATENATED-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest make-concatenated-stream.1
+++  (let ((s (make-concatenated-stream)))
+++    (read s nil :eof))
+++  :eof)
+++
+++(deftest make-concatenated-stream.2
+++  (let ((s (make-concatenated-stream)))
+++    (notnot-mv (input-stream-p s)))
+++  t)
+++
+++(deftest make-concatenated-stream.3
+++  (let ((s (make-concatenated-stream)))
+++    (output-stream-p s))
+++  nil)
+++
+++(deftest make-concatenated-stream.4
+++  (let ((s (make-concatenated-stream)))
+++    (notnot-mv (streamp s)))
+++  t)
+++
+++(deftest make-concatenated-stream.5
+++  (let ((s (make-concatenated-stream)))
+++    (notnot-mv (typep s 'stream)))
+++  t)
+++
+++(deftest make-concatenated-stream.6
+++  (let ((s (make-concatenated-stream)))
+++    (notnot-mv (typep s 'concatenated-stream)))
+++  t)
+++
+++(deftest make-concatenated-stream.7
+++  (let ((s (make-concatenated-stream)))
+++    (notnot-mv (open-stream-p s)))
+++  t)
+++
+++(deftest make-concatenated-stream.8
+++  (let ((s (make-concatenated-stream *standard-input*)))
+++    (notnot-mv (stream-element-type s)))
+++  t)
+++
+++(deftest make-concatenated-stream.9
+++  (let ((pn #p"tmp.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (s pn :direction :output :element-type element-type
+++                    :if-exists :supersede)
+++                 (dolist (b '(1 5 9 13)) (write-byte b s)))
+++    (with-open-file
+++     (s1 pn :direction :input :element-type element-type)
+++     (with-open-file
+++      (s2 pn :direction :input :element-type element-type)
+++      (let ((s (make-concatenated-stream s1 s2)))
+++     (loop repeat 8 collect (read-byte s))))))
+++  (1 5 9 13 1 5 9 13))
+++
+++(deftest make-concatenated-stream.10
+++  (let ((s (make-concatenated-stream)))
+++    (read-byte s nil :eof))
+++  :eof)
+++
+++(deftest make-concatenated-stream.11
+++  (let ((s (make-concatenated-stream)))
+++    (peek-char nil s nil :eof))
+++  :eof)
+++
+++(deftest make-concatenated-stream.12
+++  (with-input-from-string
+++   (s1 "a")
+++   (with-input-from-string
+++    (s2 "b")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (values
+++       (peek-char nil s)
+++       (read-char s)
+++       (peek-char nil s)
+++       (read-char s)
+++       (peek-char nil s nil :eof)))))
+++  #\a #\a #\b #\b :eof)
+++
+++(deftest make-concatenated-stream.13
+++  (with-input-from-string
+++   (s1 "  a  ")
+++   (with-input-from-string
+++    (s2 "  b  ")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (values
+++       (peek-char t s)
+++       (read-char s)
+++       (peek-char t s)
+++       (read-char s)
+++       (peek-char t s nil :eof)))))
+++  #\a #\a #\b #\b :eof)
+++
+++(deftest make-concatenated-stream.14
+++  (with-input-from-string
+++   (s1 "a")
+++   (with-input-from-string
+++    (s2 "b")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (values
+++       (read-char s)
+++       (unread-char #\a s)
+++       (read-char s)
+++       (read-char s)
+++       (unread-char #\b s)
+++       (read-char s)
+++       (read-char s nil :eof)))))
+++  #\a nil #\a #\b nil #\b :eof)
+++
+++(deftest make-concatenated-stream.15
+++  (let ((s (make-concatenated-stream)))
+++    (read-char-no-hang s nil :eof))
+++  :eof)
+++
+++(deftest make-concatenated-stream.16
+++  (with-input-from-string
+++   (s1 "a")
+++   (with-input-from-string
+++    (s2 "b")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (values
+++       (read-char-no-hang s)
+++       (read-char-no-hang s)
+++       (read-char-no-hang s nil :eof)))))
+++  #\a #\b :eof)
+++
+++(deftest make-concatenated-stream.17
+++  (with-input-from-string
+++   (s1 "a")
+++   (with-input-from-string
+++    (s2 "b")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (multiple-value-bind (str mnp)
+++       (read-line s)
+++     (values str (notnot mnp))))))
+++  "ab" t)
+++
+++(deftest make-concatenated-stream.18
+++  (with-input-from-string
+++   (s1 "ab")
+++   (with-input-from-string
+++    (s2 "")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (multiple-value-bind (str mnp)
+++       (read-line s)
+++     (values str (notnot mnp))))))
+++  "ab" t)
+++
+++(deftest make-concatenated-stream.19
+++  (with-input-from-string
+++   (s1 "")
+++   (with-input-from-string
+++    (s2 "ab")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (multiple-value-bind (str mnp)
+++       (read-line s)
+++     (values str (notnot mnp))))))
+++  "ab" t)
+++
+++(deftest make-concatenated-stream.20
+++  (with-input-from-string
+++   (s1 "ab")
+++   (with-input-from-string
+++    (s2 (concatenate 'string (string #\Newline) "def"))
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (read-line s))))
+++  "ab" nil)
+++
+++(deftest make-concatenated-stream.21
+++  (with-input-from-string
+++   (s1 "")
+++   (with-input-from-string
+++    (s2 "")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (multiple-value-bind (str mnp)
+++       (read-line s nil :eof)
+++     (values str (notnot mnp))))))
+++  :eof t)
+++
+++(deftest make-concatenated-stream.22
+++  (let ((pn #p"tmp.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (s pn :direction :output :element-type element-type
+++                    :if-exists :supersede)
+++                 (dolist (b '(1 5 9 13)) (write-byte b s)))
+++    (with-open-file
+++     (s1 pn :direction :input :element-type element-type)
+++     (with-open-file
+++      (s2 pn :direction :input :element-type element-type)
+++      (let ((s (make-concatenated-stream s1 s2))
+++         (x (vector nil nil nil nil nil nil nil nil)))
+++     (values
+++      (read-sequence x s)
+++      x)))))
+++  8
+++  #(1 5 9 13 1 5 9 13))
+++
+++(deftest make-concatenated-stream.23
+++  (let ((pn #p"tmp.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (s pn :direction :output :element-type element-type
+++                    :if-exists :supersede)
+++                 (dolist (b '(1 5 9 13)) (write-byte b s)))
+++    (with-open-file
+++     (s1 pn :direction :input :element-type element-type)
+++     (with-open-file
+++      (s2 pn :direction :input :element-type element-type)
+++      (let ((s (make-concatenated-stream s1 s2))
+++         (x (vector nil nil nil nil nil nil)))
+++     (values
+++      (read-sequence x s)
+++      x)))))
+++  6
+++  #(1 5 9 13 1 5))
+++
+++(deftest make-concatenated-stream.24
+++  (let ((pn #p"tmp.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (s pn :direction :output :element-type element-type
+++                    :if-exists :supersede)
+++                 (dolist (b '(1 5 9 13)) (write-byte b s)))
+++    (with-open-file
+++     (s1 pn :direction :input :element-type element-type)
+++     (with-open-file
+++      (s2 pn :direction :input :element-type element-type)
+++      (let ((s (make-concatenated-stream s1 s2))
+++         (x (vector nil nil nil nil nil nil nil nil nil nil)))
+++     (values
+++      (read-sequence x s)
+++      x)))))
+++  8
+++  #(1 5 9 13 1 5 9 13 nil nil))
+++
+++(deftest make-concatenated-stream.25
+++  (close (make-concatenated-stream))
+++  t)
+++
+++(deftest make-concatenated-stream.26
+++  (let ((s (make-concatenated-stream)))
+++    (values (prog1 (close s) (close s))
+++         (open-stream-p s)))
+++  t nil)
+++
+++(deftest make-concatenated-stream.27
+++  (with-input-from-string
+++   (s1 "abc")
+++   (let ((s (make-concatenated-stream s1)))
+++     (values
+++      (notnot (open-stream-p s1))
+++      (notnot (open-stream-p s))
+++      (close s)
+++      (notnot (open-stream-p s1))
+++      (open-stream-p s))))
+++  t t t t nil)
+++
+++(deftest make-concatenated-stream.28
+++  (with-input-from-string
+++   (s1 "a")
+++   (let ((s (make-concatenated-stream s1)))
+++     (notnot-mv (listen s))))
+++  t)
+++
+++(deftest make-concatenated-stream.28a
+++  (listen (make-concatenated-stream))
+++  nil)
+++
+++(deftest make-concatenated-stream.29
+++  (with-input-from-string
+++   (s1 "")
+++   (let ((s (make-concatenated-stream s1)))
+++     (listen s)))
+++  nil)
+++
+++(deftest make-concatenated-stream.30
+++  (with-input-from-string
+++   (s1 "")
+++   (with-input-from-string
+++    (s2 "a")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (notnot-mv (listen s)))))
+++  t)
+++
+++(deftest make-concatenated-stream.31
+++  (with-input-from-string
+++   (s1 "")
+++   (with-input-from-string
+++    (s2 "")
+++    (let ((s (make-concatenated-stream s1 s2)))
+++      (listen s))))
+++  nil)
+++
+++(deftest make-concatenated-stream.32
+++  (clear-input (make-concatenated-stream))
+++  nil)
+++
+++(deftest make-concatenated-stream.33
+++  (with-input-from-string
+++   (s1 "abc")
+++   (clear-input (make-concatenated-stream s1)))
+++  nil)
+++
+++;;; Error cases
+++
+++(deftest make-concatenated-stream.error.1
+++  (loop for x in *mini-universe*
+++     unless (or (and (streamp x) (input-stream-p x))
+++                (eval `(signals-error (make-concatenated-stream ',x) t)))
+++     collect x)
+++  nil)
+++
+++(deftest make-concatenated-stream.error.2
+++  (loop for x in *streams*
+++     unless (or (and (streamp x) (input-stream-p x))
+++                (eval `(signals-error (make-concatenated-stream ',x) t)))
+++     collect x)
+++  nil)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/make-echo-stream.lsp
++@@ -0,0 +1,332 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Feb 12 04:34:42 2004
+++;;;; Contains: Tests of MAKE-ECHO-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest make-echo-stream.1
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (read-char s)
+++     (get-output-stream-string os)))
+++  #\f "f")
+++
+++(deftest make-echo-stream.2
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (get-output-stream-string os))
+++  "")
+++
+++(deftest make-echo-stream.3
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values (read-line s nil)
+++         (get-output-stream-string os)))
+++  "foo" "foo")
+++
+++;;; Tests of READ-BYTE on echo streams
+++
+++(deftest make-echo-stream.4
+++  (let ((pn #p"tmp.dat")
+++     (pn2 #p"tmp2.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (os pn
+++                     :direction :output
+++                     :element-type element-type
+++                     :if-exists :supersede)
+++                 (loop for x in '(2 3 5 7 11)
+++                       do (write-byte x os)))
+++    (with-open-file
+++     (is pn :direction :input :element-type element-type)
+++     (values
+++      (with-open-file
+++       (os pn2 :direction :output :if-exists :supersede
+++        :element-type element-type)
+++       (let ((s (make-echo-stream is os)))
+++      (loop repeat 6 collect (read-byte s nil :eof1))))
+++      (with-open-file
+++       (s pn2 :direction :input :element-type element-type)
+++       (loop repeat 6 collect (read-byte s nil :eof2))))))
+++  (2 3 5 7 11 :eof1)
+++  (2 3 5 7 11 :eof2))
+++
+++(deftest make-echo-stream.5
+++  (let ((pn #p"tmp.dat")
+++     (pn2 #p"tmp2.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (os pn
+++                     :direction :output
+++                     :element-type element-type
+++                     :if-exists :supersede)
+++                 (loop for x in '(2 3 5 7 11)
+++                       do (write-byte x os)))
+++    (with-open-file
+++     (is pn :direction :input :element-type element-type)
+++     (values
+++      (with-open-file
+++       (os pn2 :direction :output :if-exists :supersede
+++        :element-type element-type)
+++       (let ((s (make-echo-stream is os)))
+++      (loop repeat 6 collect (read-byte s nil 100))))
+++      (with-open-file
+++       (s pn2 :direction :input :element-type element-type)
+++       (loop repeat 6 collect (read-byte s nil 200))))))
+++  (2 3 5 7 11 100)
+++  (2 3 5 7 11 200))
+++
+++(deftest make-echo-stream.6
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values (coerce (loop repeat 3 collect (read-char-no-hang s)) 'string)
+++         (get-output-stream-string os)))
+++  "foo" "foo")
+++
+++(deftest make-echo-stream.7
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values (coerce (loop repeat 4 collect (read-char-no-hang s nil '#\z))
+++                 'string)
+++         (get-output-stream-string os)))
+++  "fooz" "foo")
+++
+++;;; peek-char + echo streams is tested in peek-char.lsp
+++;;; unread-char + echo streams is tested in unread-char.lsp
+++
+++(deftest make-echo-stream.8
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os))
+++      (x (copy-seq "xxxxxx")))
+++    (values
+++     (read-sequence x s)
+++     x
+++     (get-output-stream-string os)))
+++  3
+++  "fooxxx"
+++  "foo")
+++
+++(deftest make-echo-stream.9
+++  (let ((pn #p"tmp.dat")
+++     (pn2 #p"tmp2.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (os pn
+++                     :direction :output
+++                     :element-type element-type
+++                     :if-exists :supersede)
+++                 (loop for x in '(2 3 5 7 11)
+++                       do (write-byte x os)))
+++    (with-open-file
+++     (is pn :direction :input :element-type element-type)
+++     (values
+++      (with-open-file
+++       (os pn2 :direction :output :if-exists :supersede
+++        :element-type element-type)
+++       (let ((s (make-echo-stream is os))
+++          (x (vector 0 0 0 0 0 0 0 0)))
+++      (list (read-sequence x s)
+++            x)))
+++      (with-open-file
+++       (s pn2 :direction :input :element-type element-type)
+++       (loop repeat 8 collect (read-byte s nil nil))))))
+++  (5 #(2 3 5 7 11 0 0 0))
+++  (2 3 5 7 11 nil nil nil))
+++
+++(deftest make-echo-stream.10
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (notnot (open-stream-p s))
+++     (close s)
+++     (open-stream-p s)
+++     (notnot (open-stream-p is))
+++     (notnot (open-stream-p os))))
+++  t t nil t t)
+++
+++(deftest make-echo-stream.11
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (notnot (listen s))
+++     (read-char s)
+++     (notnot (listen s))
+++     (read-char s)
+++     (notnot (listen s))
+++     (read-char s)
+++     (listen s)))
+++  t #\f t #\o t #\o nil)
+++
+++(deftest make-echo-stream.12
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (notnot (streamp s))
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'echo-stream))
+++     (notnot (input-stream-p s))
+++     (notnot (output-stream-p s))
+++     (notnot (stream-element-type s))))
+++  t t t t t t)
+++
+++;;; FIXME
+++;;; Add tests for clear-input, file-position(?)
+++;;;  Also, add tests for output operations (since echo-streams are
+++;;;   bidirectional)
+++
+++(deftest make-echo-stream.13
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (write-char #\0 s)
+++     (close s)
+++     (get-output-stream-string os)))
+++  #\0 t "0")
+++
+++(deftest make-echo-stream.14
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (terpri s)
+++     (close s)
+++     (get-output-stream-string os)))
+++  nil t #.(string #\Newline))
+++
+++(deftest make-echo-stream.15
+++  (let ((pn #p"tmp.dat")
+++     (pn2 #p"tmp2.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (os pn
+++                     :direction :output
+++                     :element-type element-type
+++                     :if-exists :supersede))
+++    (with-open-file
+++     (is pn :direction :input :element-type element-type)
+++     (values
+++      (with-open-file
+++       (os pn2 :direction :output :if-exists :supersede
+++        :element-type element-type)
+++       (let ((s (make-echo-stream is os))
+++          (x (mapcar #'char-code (coerce "abcdefg" 'list))))
+++      (loop for b in x do
+++            (assert (equal (list b)
+++                           (multiple-value-list (write-byte b s)))))
+++      (close s)))))
+++    (with-open-file
+++     (is pn2 :direction :input :element-type element-type)
+++     (let ((x (vector 0 0 0 0 0 0 0)))
+++       (read-sequence x is)
+++       (values
+++     (read-byte is nil :done)
+++     (map 'string #'code-char x)))))
+++  :done
+++  "abcdefg")
+++
+++(deftest make-echo-stream.16
+++  (let ((pn #p"tmp.dat")
+++     (pn2 #p"tmp2.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (os pn
+++                     :direction :output
+++                     :element-type element-type
+++                     :if-exists :supersede))
+++    (with-open-file
+++     (is pn :direction :input :element-type element-type)
+++     (values
+++      (with-open-file
+++       (os pn2 :direction :output :if-exists :supersede
+++        :element-type element-type)
+++       (let ((s (make-echo-stream is os))
+++          (x (map 'vector #'char-code "abcdefg")))
+++      (assert (equal (multiple-value-list (write-sequence x s)) (list x)))
+++      (close s)))))
+++    (with-open-file
+++     (is pn2 :direction :input :element-type element-type)
+++     (let ((x (vector 0 0 0 0 0 0 0)))
+++       (read-sequence x is)
+++       (values
+++     (read-byte is nil :done)
+++     (map 'string #'code-char x)))))
+++  :done
+++  "abcdefg")
+++
+++(deftest make-echo-stream.17
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (write-char #\X s)
+++     (notnot (fresh-line s))
+++     (finish-output s)
+++     (force-output s)
+++     (close s)
+++     (get-output-stream-string os)))
+++ #\X t nil nil t #.(coerce '(#\X #\Newline) 'string))
+++
+++(deftest make-echo-stream.18
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (write-string "159" s)
+++     (close s)
+++     (get-output-stream-string os)))
+++  "159" t "159")
+++
+++(deftest make-echo-stream.20
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (write-string "0159X" s :start 1 :end 4)
+++     (close s)
+++     (get-output-stream-string os)))
+++  "0159X" t "159")
+++
+++(deftest make-echo-stream.21
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (write-line "159" s)
+++     (close s)
+++     (get-output-stream-string os)))
+++  "159" t #.(concatenate 'string "159" (string #\Newline)))
+++
+++(deftest make-echo-stream.22
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-echo-stream is os)))
+++    (values
+++     (write-char #\0 s)
+++     (clear-output s)))
+++  #\0 nil)
+++
+++;;; Error tests
+++
+++(deftest make-echo-stream.error.1
+++  (signals-error (make-echo-stream) program-error)
+++  t)
+++
+++(deftest make-echo-stream.error.2
+++  (signals-error (make-echo-stream *standard-input*) program-error)
+++  t)
+++
+++(deftest make-echo-stream.error.3
+++  (signals-error (make-echo-stream *standard-input* *standard-output* nil)
+++              program-error)
+++  t)
+++
+++
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/make-pathname.lsp
++@@ -0,0 +1,171 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Nov 29 05:54:30 2003
+++;;;; Contains: Tests of MAKE-PATHNAME
+++
+++(in-package :cl-test)
+++
+++(defvar *null-pathname*
+++    (make-pathname))
+++
+++(defun make-pathname-test
+++  (&rest args &key (defaults nil)
+++      (host (if defaults (pathname-host defaults)
+++              (pathname-host *default-pathname-defaults*)))
+++      (device (if defaults (pathname-device defaults)
+++                (pathname-device *null-pathname*)))
+++      (directory (if defaults (pathname-directory defaults)
+++                   (pathname-directory *null-pathname*)))
+++      (name (if defaults (pathname-name defaults)
+++              (pathname-name  *null-pathname*)))
+++      (type (if defaults (pathname-type defaults)
+++              (pathname-type *null-pathname*)))
+++      (version (if defaults (pathname-version defaults)
+++                 (pathname-version *null-pathname*)))
+++      case)
+++  (declare (ignorable case))
+++  (let* ((vals (multiple-value-list (apply #'make-pathname args)))
+++      (pn (first vals)))
+++    (and (= (length vals) 1)
+++      (typep pn 'pathname)
+++      (equalp (pathname-host pn) host)
+++      (equalp (pathname-device pn) device)
+++      ;; (equalp (pathname-directory pn) directory)
+++      (let ((pnd (pathname-directory pn)))
+++        (if (eq directory :wild)
+++            (member pnd '((:absolute :wild-inferiors)
+++                          (:absolute :wild))
+++                    :test #'equal)
+++          (equalp pnd directory)))        
+++      (equalp (pathname-name pn) name)
+++      (equalp (pathname-type pn) type)
+++      (equalp (pathname-version pn) version)
+++      t)))
+++  
+++  
+++
+++(deftest make-pathname.1
+++  (make-pathname-test)
+++  t)
+++
+++(deftest make-pathname.2
+++  (make-pathname-test :name "foo")
+++  t)
+++
+++(deftest make-pathname.2a
+++  (do-special-strings
+++   (s "foo")
+++   (assert (make-pathname-test :name s)))
+++  nil)
+++
+++(deftest make-pathname.3
+++  (make-pathname-test :name "foo" :type "txt")
+++  t)
+++
+++(deftest make-pathname.3a
+++  (do-special-strings
+++   (s "txt")
+++   (assert (make-pathname-test :name "foo" :type s)))
+++  nil)
+++
+++(deftest make-pathname.4
+++  (make-pathname-test :type "lsp")
+++  t)
+++
+++(deftest make-pathname.5
+++  (make-pathname-test :directory :wild)
+++  t)
+++
+++(deftest make-pathname.6
+++  (make-pathname-test :name :wild)
+++  t)
+++
+++(deftest make-pathname.7
+++  (make-pathname-test :type :wild)
+++  t)
+++
+++(deftest make-pathname.8
+++  (make-pathname-test :version :wild)
+++  t)
+++
+++(deftest make-pathname.9
+++  (make-pathname-test :defaults *default-pathname-defaults*)
+++  t)
+++
+++(deftest make-pathname.10
+++  (make-pathname-test :defaults (make-pathname :name "foo" :type "bar"))
+++  t)
+++
+++(deftest make-pathname.11
+++  (make-pathname-test :version :newest)
+++  t)
+++
+++(deftest make-pathname.12
+++  (make-pathname-test :case :local)
+++  t)
+++
+++(deftest make-pathname.13
+++  (make-pathname-test :case :common)
+++  t)
+++
+++(deftest make-pathname.14
+++  (let ((*default-pathname-defaults*
+++      (make-pathname :name "foo" :type "lsp" :version :newest)))
+++    (make-pathname-test))
+++  t)
+++
+++;;; Works on the components of actual pathnames
+++(deftest make-pathname.rebuild
+++  (loop for p in *pathnames*
+++     for host = (pathname-host p)
+++     for device = (pathname-device p)
+++     for directory = (pathname-directory p)
+++     for name = (pathname-name p)
+++     for type = (pathname-type p)
+++     for version = (pathname-version p)
+++     for p2 = (make-pathname
+++               :host host
+++               :device device
+++               :directory directory
+++               :name name
+++               :type type
+++               :version version)
+++     unless (equal p p2)
+++     collect (list p p2))
+++  nil)
+++
+++;;; Various constraints on :directory
+++
+++(deftest make-pathname-error-absolute-up
+++  (signals-error (directory (make-pathname :directory '(:absolute :up)))
+++              file-error)
+++  t)
+++
+++(deftest make-pathname-error-absolute-back
+++  (signals-error (directory (make-pathname :directory '(:absolute :back)))
+++              file-error)
+++  t)
+++
+++;; The next test is correct, but was causing very large amounts of time to be spent
+++;; in buggy implementations
+++;;#|
+++(deftest make-pathname-error-absolute-wild-inferiors-up
+++  (signals-error (directory (make-pathname :directory '(:absolute :wild-inferiors :up)))
+++              file-error)
+++  t)
+++;;|#
+++
+++(deftest make-pathname-error-relative-wild-inferiors-up
+++  (signals-error (length (directory (make-pathname :directory '(:relative :wild-inferiors :up))))
+++              file-error)
+++  t)
+++
+++(deftest make-pathname-error-absolute-wild-inferiors-back
+++  (signals-error (directory (make-pathname :directory '(:absolute :wild-inferiors :back)))
+++              file-error)
+++  t)
+++
+++(deftest make-pathname-error-relative-wild-inferiors-back
+++  (signals-error (directory (make-pathname :directory '(:relative :wild-inferiors :back)))
+++              file-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/make-string-input-stream.lsp
++@@ -0,0 +1,93 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Feb 14 18:36:48 2004
+++;;;; Contains: Tests for MAKE-STRING-INPUT-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest make-string-input-stream.1
+++  (let ((s (make-string-input-stream "")))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (streamp s))
+++     (notnot (input-stream-p s))
+++     (output-stream-p s)))
+++  t t t nil)
+++
+++(deftest make-string-input-stream.2
+++  (let ((s (make-string-input-stream "abcd")))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (streamp s))
+++     (notnot (input-stream-p s))
+++     (output-stream-p s)))
+++  t t t nil)
+++
+++
+++(deftest make-string-input-stream.3
+++  (let ((s (make-string-input-stream "abcd" 1)))
+++    (values (read-line s)))
+++  "bcd")
+++
+++
+++(deftest make-string-input-stream.4
+++  (let ((s (make-string-input-stream "abcd" 0 2)))
+++    (values (read-line s)))
+++  "ab")
+++
+++(deftest make-string-input-stream.5
+++  (let ((s (make-string-input-stream "abcd" 1 nil)))
+++    (values (read-line s)))
+++  "bcd")
+++
+++(deftest make-string-input-stream.6
+++  (let ((str1 (make-array 6 :element-type 'character
+++                       :initial-contents "abcdef"
+++                       :fill-pointer 4)))
+++    (let ((s (make-string-input-stream str1)))
+++      (values (read-line s) (read-char s nil :eof))))
+++  "abcd" :eof)
+++
+++(deftest make-string-input-stream.7
+++  (let* ((str1 (make-array 6 :element-type 'character
+++                        :initial-contents "abcdef"))
+++      (str2 (make-array 4 :element-type 'character
+++                        :displaced-to str1)))
+++    (let ((s (make-string-input-stream str2)))
+++      (values (read-line s) (read-char s nil :eof))))
+++  "abcd" :eof)
+++
+++(deftest make-string-input-stream.8
+++  (let* ((str1 (make-array 6 :element-type 'character
+++                        :initial-contents "abcdef"))
+++      (str2 (make-array 4 :element-type 'character
+++                        :displaced-to str1
+++                        :displaced-index-offset 1)))
+++    (let ((s (make-string-input-stream str2)))
+++      (values (read-line s) (read-char s nil :eof))))
+++  "bcde" :eof)
+++
+++(deftest make-string-input-stream.9
+++  (let ((str1 (make-array 6 :element-type 'character
+++                       :initial-contents "abcdef"
+++                       :adjustable t)))
+++    (let ((s (make-string-input-stream str1)))
+++      (values (read-line s) (read-char s nil :eof))))
+++  "abcdef" :eof)
+++
+++(deftest make-string-input-stream.10
+++  :notes (:allow-nil-arrays :nil-vectors-are-strings)
+++  (let ((s (make-string-input-stream
+++         (make-array 0 :element-type nil))))
+++    (read-char s nil :eof))
+++  :eof)
+++
+++;;; Error tests
+++
+++(deftest make-string-input-stream.error.1
+++  (signals-error (make-string-input-stream) program-error)
+++  t)
+++
+++(deftest make-string-input-stream.error.2
+++  (signals-error (make-string-input-stream "abc" 1 2 nil) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/make-string-output-stream.lsp
++@@ -0,0 +1,139 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Feb 14 19:42:07 2004
+++;;;; Contains: Tests of MAKE-STRING-OUTPUT-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest make-string-output-stream.1
+++  (let ((s (make-string-output-stream)))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'string-stream))
+++     (input-stream-p s)
+++     (notnot (output-stream-p s))
+++     (notnot (open-stream-p s))))
+++  t t nil t t)
+++
+++(deftest make-string-output-stream.2
+++  (let ((s (make-string-output-stream :element-type 'character)))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'string-stream))
+++     (input-stream-p s)
+++     (notnot (output-stream-p s))
+++     (notnot (open-stream-p s))))
+++  t t nil t t)
+++
+++(deftest make-string-output-stream.3
+++  (let ((s (make-string-output-stream :element-type 'base-char)))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'string-stream))
+++     (input-stream-p s)
+++     (notnot (output-stream-p s))
+++     (notnot (open-stream-p s))))
+++  t t nil t t)
+++
+++(deftest make-string-output-stream.4
+++  :notes (:nil-vectors-are-strings)
+++  (let ((s (make-string-output-stream :element-type nil)))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'string-stream))
+++     (input-stream-p s)
+++     (notnot (output-stream-p s))
+++     (notnot (open-stream-p s))))
+++  t t nil t t)
+++
+++(deftest make-string-output-stream.5
+++  (let ((s (make-string-output-stream :allow-other-keys nil)))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'string-stream))
+++     (input-stream-p s)
+++     (notnot (output-stream-p s))
+++     (notnot (open-stream-p s))))
+++  t t nil t t)
+++
+++(deftest make-string-output-stream.6
+++  (let ((s (make-string-output-stream :allow-other-keys t :foo 'bar)))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'string-stream))
+++     (input-stream-p s)
+++     (notnot (output-stream-p s))
+++     (notnot (open-stream-p s))))
+++  t t nil t t)
+++
+++(deftest make-string-output-stream.7
+++  (let ((s (make-string-output-stream :foo 'bar :allow-other-keys t
+++                                   :allow-other-keys nil
+++                                   :foo2 'x)))
+++    (values
+++     (notnot (typep s 'stream))
+++     (notnot (typep s 'string-stream))
+++     (input-stream-p s)
+++     (notnot (output-stream-p s))
+++     (notnot (open-stream-p s))))
+++  t t nil t t)
+++
+++(deftest make-string-output-stream.8
+++  (let ((s (make-string-output-stream)))
+++    (write-string "abc" s)
+++    (write-string "def" s)
+++    (get-output-stream-string s))
+++  "abcdef")
+++
+++(deftest make-string-output-stream.9
+++  (let ((s (make-string-output-stream :element-type 'character)))
+++    (write-string "abc" s)
+++    (write-string "def" s)
+++    (get-output-stream-string s))
+++  "abcdef")
+++
+++(deftest make-string-output-stream.10
+++  (let ((s (make-string-output-stream :element-type 'base-char)))
+++    (write-string "abc" s)
+++    (write-string "def" s)
+++    (get-output-stream-string s))
+++  "abcdef")
+++
+++(deftest make-string-output-stream.11
+++  :notes (:nil-vectors-are-strings)
+++  (let ((s (make-string-output-stream :element-type nil)))
+++    (get-output-stream-string s))
+++  "")
+++
+++(deftest make-string-output-stream.12
+++  :notes (:nil-vectors-are-strings)
+++  (let ((s (make-string-output-stream :element-type nil)))
+++    (typep #\a (array-element-type (get-output-stream-string s))))
+++  nil)
+++
+++(deftest make-string-output-stream.13
+++  (let ((s (make-string-output-stream)))
+++    (values
+++     (close s)
+++     (open-stream-p s)))
+++  t nil)
+++
+++;;; Error tests
+++
+++(deftest make-string-output-stream.error.1
+++  (signals-error (make-string-output-stream nil) program-error)
+++  t)
+++
+++(deftest make-string-output-stream.error.2
+++  (signals-error (make-string-output-stream :foo nil) program-error)
+++  t)
+++
+++(deftest make-string-output-stream.error.3
+++  (signals-error (make-string-output-stream :allow-other-keys nil
+++                                         :foo 'bar)
+++              program-error)
+++  t)
+++
+++
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/make-synonym-stream.lsp
++@@ -0,0 +1,97 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Jan 28 06:54:33 2004
+++;;;; Contains: Tests of MAKE-SYNONYM-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest make-synonym-stream.1
+++  (with-input-from-string
+++   (*s* "abcde")
+++   (declare (special *s*))
+++   (let ((ss (make-synonym-stream '*s*)))
+++     (assert (typep ss 'stream))
+++     (assert (typep ss 'synonym-stream))
+++     (assert (input-stream-p ss))
+++     (assert (not (output-stream-p ss)))
+++     (assert (open-stream-p ss))
+++     (assert (streamp ss))
+++     (assert (stream-element-type ss))
+++     (values
+++      (read-char *s*)
+++      (read-char ss)
+++      (read-char *s*)
+++      (read-char ss)
+++      (read-char ss))))
+++  #\a #\b #\c #\d #\e)
+++
+++
+++;;; This test was wrong (section 21.1.4)
+++#|
+++(deftest make-synonym-stream.2
+++   (let ((ss (make-synonym-stream '*s*)))
+++     (with-input-from-string
+++      (*s* "z")
+++      (declare (special *s*))
+++      (assert (typep ss 'stream))
+++      (assert (typep ss 'synonym-stream))
+++      (assert (input-stream-p ss))
+++      (assert (not (output-stream-p ss)))
+++      (assert (open-stream-p ss))
+++      (assert (streamp ss))
+++      (assert (stream-element-type ss))
+++      (read-char ss)))
+++   #\z)
+++|#
+++
+++(deftest make-synonym-stream.3
+++  (with-output-to-string
+++   (*s*)
+++   (declare (special *s*))
+++   (let ((ss (make-synonym-stream '*s*)))
+++     (assert (typep ss 'stream))
+++     (assert (typep ss 'synonym-stream))
+++     (assert (output-stream-p ss))
+++     (assert (not (input-stream-p ss)))
+++     (assert (open-stream-p ss))
+++     (assert (streamp ss))
+++     (assert (stream-element-type ss))
+++     (write-char #\a *s*)
+++     (write-char #\b ss)
+++     (write-char #\x *s*)
+++     (write-char #\y ss)))
+++  "abxy")
+++
+++(deftest make-synonym-stream.4
+++  (let ((ss (make-synonym-stream '*terminal-io*)))
+++     (assert (typep ss 'stream))
+++     (assert (typep ss 'synonym-stream))
+++     (assert (output-stream-p ss))
+++     (assert (input-stream-p ss))
+++     (assert (open-stream-p ss))
+++     (assert (streamp ss))
+++     (assert (stream-element-type ss))
+++     nil)
+++  nil)
+++
+++
+++;;; FIXME
+++;;; Add tests for: close,
+++;;;  peek-char, read-char-no-hang, terpri, fresh-line, unread-char,
+++;;;  read-line, write-line, write-string, read-sequence, write-sequence,
+++;;;  read-byte, write-byte, listen, clear-input, finish-output, force-output,
+++;;;  clear-output, format, print, prin1, princ
+++
+++;;; Error cases
+++
+++(deftest make-synonym-stream.error.1
+++  (signals-error (make-synonym-stream) program-error)
+++  t)
+++
+++(deftest make-synonym-stream.error.2
+++  (signals-error (make-synonym-stream '*standard-input* nil) program-error)
+++  t)
+++
+++(deftest make-synonym-stream.error.3
+++  (check-type-error #'make-synonym-stream #'symbolp)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/make-two-way-stream.lsp
++@@ -0,0 +1,244 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Fri Jan 30 05:39:56 2004
+++;;;; Contains: Tests for MAKE-TWO-WAY-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest make-two-way-stream.1
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-two-way-stream is os)))
+++    (assert (typep s 'stream))
+++    (assert (typep s 'two-way-stream))
+++    (assert (streamp s))
+++    (assert (open-stream-p s))
+++    (assert (input-stream-p s))
+++    (assert (output-stream-p s))
+++    (assert (stream-element-type s))
+++    (values
+++     (read-char s)
+++     (write-char #\b s)
+++     (read-char s)
+++     (write-char #\a s)
+++     (read-char s)
+++     (write-char #\r s)
+++     (get-output-stream-string os)))
+++  #\f #\b #\o #\a #\o #\r "bar")
+++
+++(deftest make-two-way-stream.2
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (close s)
+++      (open-stream-p s)
+++      (notnot (open-stream-p is))
+++      (notnot (open-stream-p os))
+++      (write-char #\8 os)
+++      (get-output-stream-string os)))
+++   t nil t t #\8 "8")
+++
+++(deftest make-two-way-stream.3
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (peek-char nil s)
+++      (read-char s)
+++      (get-output-stream-string os)))
+++   #\f #\f "")
+++
+++(deftest make-two-way-stream.4
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (read-char-no-hang s)
+++      (read-char-no-hang s nil)
+++      (read-char-no-hang s t :eof)
+++      (read-char-no-hang s nil :eof)
+++      (get-output-stream-string os)))
+++   #\f #\o #\o :eof "")
+++
+++(deftest make-two-way-stream.5
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (terpri s)
+++      (get-output-stream-string os)))
+++   nil #.(string #\Newline))
+++
+++(deftest make-two-way-stream.6
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (write-char #\+ s)
+++      (notnot (fresh-line s))
+++      (read-char s)
+++      (get-output-stream-string os)))
+++   #\+ t #\f #.(coerce (list #\+ #\Newline) 'string))
+++
+++(deftest make-two-way-stream.7
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (read-char s)
+++      (unread-char #\f s)
+++      (read-char s)
+++      (read-char s)
+++      (unread-char #\o s)
+++      (get-output-stream-string os)))
+++   #\f nil #\f #\o nil "")
+++
+++(deftest make-two-way-stream.8
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (read-line s)
+++      (get-output-stream-string os)))
+++   "foo" "")
+++
+++(deftest make-two-way-stream.9
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (write-string "bar" s)
+++      (get-output-stream-string os)))
+++   "bar" "bar")
+++
+++(deftest make-two-way-stream.10
+++   (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++     (values
+++      (write-line "bar" s)
+++      (get-output-stream-string os)))
+++   "bar" #.(concatenate 'string "bar" '(#\Newline)))
+++
+++(deftest make-two-way-stream.11
+++  (let* ((is (make-string-input-stream "foo"))
+++       (os (make-string-output-stream))
+++       (s (make-two-way-stream is os)))
+++    (let ((x (vector nil nil nil)))
+++     (values
+++      (read-sequence x s)
+++      x
+++      (get-output-stream-string os))))
+++  3 #(#\f #\o #\o) "")
+++
+++(deftest make-two-way-stream.12
+++  (let ((pn1 #p"tmp.dat")
+++     (pn2 #p"tmp2.dat")
+++     (element-type '(unsigned-byte 8)))
+++    (with-open-file (s pn1 :direction :output :if-exists :supersede
+++                    :element-type element-type)
+++                 (dolist (b '(3 8 19 41)) (write-byte b s)))
+++    (with-open-file
+++     (is pn1 :direction :input :element-type element-type)
+++     (with-open-file
+++      (os pn2 :direction :output :element-type element-type
+++       :if-exists :supersede)
+++      (let ((s (make-two-way-stream is os))
+++         (x (vector nil nil nil nil)))
+++     (assert (eql (read-sequence x s) 4))
+++     (assert (equalp x #(3 8 19 41)))
+++     (let ((y #(100 5 18 211 0 178)))
+++       (assert (eql (write-sequence y s) y))
+++       (close s)))))
+++    (with-open-file
+++     (s pn2 :direction :input :element-type element-type)
+++     (let ((x (vector nil nil nil nil nil nil nil)))
+++       (values
+++     (read-sequence x s)
+++     x))))
+++  6
+++  #(100 5 18 211 0 178 nil))
+++
+++(deftest make-two-way-stream.13
+++  (let ((pn1 #p"tmp.dat")
+++     (pn2 #p"tmp2.dat")
+++     (element-type '(unsigned-byte 32)))
+++    (with-open-file (s pn1 :direction :output :if-exists :supersede
+++                    :element-type element-type)
+++                 (dolist (b '(3 8 19 41)) (write-byte b s)))
+++    (with-open-file
+++     (is pn1 :direction :input :element-type element-type)
+++     (with-open-file
+++      (os pn2 :direction :output :element-type element-type
+++       :if-exists :supersede)
+++      (let ((s (make-two-way-stream is os))
+++         (x (vector nil nil nil nil)))
+++     (assert (eql (read-sequence x s) 4))
+++     (assert (equalp x #(3 8 19 41)))
+++     (let ((y #(100 5 18 211 0 178)))
+++       (assert (eql (write-sequence y s) y))
+++       (close s)))))
+++    (with-open-file
+++     (s pn2 :direction :input :element-type element-type)
+++     (let ((x (vector nil nil nil nil nil nil nil)))
+++       (values
+++     (read-sequence x s)
+++     x))))
+++  6
+++  #(100 5 18 211 0 178 nil))
+++
+++(deftest make-two-way-stream.14
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-two-way-stream is os)))
+++    (values
+++     (write-string "abc" s)
+++     (clear-input s)
+++     (write-string "def" s)
+++     (get-output-stream-string os)))
+++  "abc" nil "def" "abcdef")
+++
+++;;; Error tests
+++
+++(deftest make-two-way-stream.error.1
+++  (signals-error (make-two-way-stream) program-error)
+++  t)
+++
+++(deftest make-two-way-stream.error.2
+++  (signals-error (make-two-way-stream (make-string-input-stream "foo"))
+++              program-error)
+++  t)
+++
+++(deftest make-two-way-stream.error.3
+++  (signals-error (let ((os (make-string-output-stream)))
+++                (make-two-way-stream (make-string-input-stream "foo")
+++                                     os nil))
+++              program-error)
+++  t)
+++
+++(deftest make-two-way-stream.error.4
+++  (check-type-error #'(lambda (x) (make-two-way-stream x (make-string-output-stream)))
+++                 #'(lambda (x) (and (streamp x) (input-stream-p x))))
+++  nil)
+++
+++(deftest make-two-way-stream.error.5
+++  (check-type-error #'(lambda (x) (make-two-way-stream x (make-string-output-stream)))
+++                 #'(lambda (x) (and (streamp x) (input-stream-p x)))
+++                 *streams*)
+++  nil)
+++
+++(deftest make-two-way-stream.error.6
+++  (check-type-error #'(lambda (x) (make-two-way-stream (make-string-input-stream "foo") x))
+++                 #'(lambda (x) (and (streamp x) (output-stream-p x))))
+++  nil)
+++
+++(deftest make-two-way-stream.error.7
+++  (check-type-error #'(lambda (x) (make-two-way-stream (make-string-input-stream "foo") x))
+++                 #'(lambda (x) (and (streamp x) (output-stream-p x)))
+++                 *streams*)
+++  nil)
+++
+++
+++
+++                                             
++\ No newline at end of file
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/merge-pathnames.lsp
++@@ -0,0 +1,124 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Dec 31 11:25:55 2003
+++;;;; Contains: Tests of MERGE-PATHNAMES
+++
+++(in-package :cl-test)
+++
+++#|
+++(defun merge-pathnames-test (&rest args)
+++  (assert (<= 1 (length args) 3))
+++  (let* ((p1 (car args))
+++      (p2 (if (cdr args) (cadr args) *default-pathname-defaults*))
+++      (default-version (if (cddr args) (caddr args) :newest))
+++      (results (multiple-value-list (apply #'merge-pathnames args))))
+++    (assert (= (length results) 1))
+++    (let ((p3 (first results)))
+++      
+++|#
+++
+++(deftest merge-pathnames.1
+++  (let* ((p1 (make-pathname :name "foo"))
+++      (p2 (merge-pathnames p1 p1 nil)))
+++    (values
+++     (equalpt (pathname-name p1) "foo")
+++     (if (equalpt p1 p2) t
+++       (list p1 p2))))
+++  t t)
+++
+++(deftest merge-pathnames.2
+++  (let* ((p1 (make-pathname :name "foo"))
+++      (p2 (merge-pathnames p1 p1)))
+++    (values
+++     (equalpt (pathname-host p1) (pathname-host p2))
+++     (equalpt (pathname-device p1) (pathname-device p2))
+++     (equalpt (pathname-directory p1) (pathname-directory p2))
+++     (pathname-name p1)
+++     (pathname-name p2)
+++     (equalpt (pathname-type p1) (pathname-type p2))
+++     (if (pathname-version p1)
+++      (equalpt (pathname-version p1) (pathname-version p2))
+++       (equalpt (pathname-version p2) :newest))))
+++  t t t "foo" "foo" t t)
+++
+++(deftest merge-pathnames.3
+++  (let* ((p1 (make-pathname :name "foo"))
+++      (p2 (make-pathname :name "bar"))
+++      (p3 (merge-pathnames p1 p2)))
+++    (values
+++     (equalpt (pathname-host p1) (pathname-host p3))
+++     (equalpt (pathname-device p1) (pathname-device p3))
+++     (equalpt (pathname-directory p1) (pathname-directory p3))
+++     (pathname-name p1)
+++     (pathname-name p3)
+++     (equalpt (pathname-type p1) (pathname-type p3))
+++     (if (pathname-version p1)
+++      (equalpt (pathname-version p1) (pathname-version p3))
+++       (equalpt (pathname-version p3) :newest))))
+++  t t t "foo" "foo" t t)
+++
+++(deftest merge-pathnames.4
+++  (let* ((p1 (make-pathname :name "foo"))
+++      (p2 (make-pathname :type "lsp"))
+++      (p3 (merge-pathnames p1 p2)))
+++    (values
+++     (equalpt (pathname-host p1) (pathname-host p3))
+++     (equalpt (pathname-device p1) (pathname-device p3))
+++     (equalpt (pathname-directory p1) (pathname-directory p3))
+++     (pathname-name p1)
+++     (pathname-type p2)
+++     (pathname-type p3)
+++     (equalpt (pathname-type p2) (pathname-type p3))
+++     (if (pathname-version p1)
+++      (equalpt (pathname-version p1) (pathname-version p3))
+++       (equalpt (pathname-version p3) :newest))))
+++  t t t "foo" "lsp" "lsp" t t)
+++
+++(deftest merge-pathnames.5
+++  (let* ((p1 (make-pathname :name "foo"))
+++      (p2 (make-pathname :type "lsp" :version :newest))
+++      (p3 (merge-pathnames p1 p2 nil)))
+++    (values
+++     (equalpt (pathname-host p1) (pathname-host p3))
+++     (equalpt (pathname-device p1) (pathname-device p3))
+++     (equalpt (pathname-directory p1) (pathname-directory p3))
+++     (pathname-name p1)
+++     (pathname-name p3)
+++     (pathname-type p2)
+++     (pathname-type p3)
+++     (equalpt (pathname-version p1) (pathname-version p3))))
+++  t t t "foo" "foo" "lsp" "lsp" t)
+++
+++(deftest merge-pathnames.6
+++  (let* ((p1 (make-pathname))
+++      (p2 (make-pathname :name "foo" :version :newest))
+++      (p3 (merge-pathnames p1 p2 nil)))
+++    (values
+++     (equalpt (pathname-host p1) (pathname-host p3))
+++     (equalpt (pathname-device p1) (pathname-device p3))
+++     (equalpt (pathname-directory p1) (pathname-directory p3))
+++     (pathname-name p2)
+++     (pathname-name p3)
+++     (equalpt (pathname-type p2) (pathname-type p3))
+++     (pathname-version p2)
+++     (pathname-version p3)))
+++  t t t "foo" "foo" t :newest :newest)
+++
+++(deftest merge-pathnames.7
+++  (let* ((p1 (make-pathname))
+++      (p2 *default-pathname-defaults*)
+++      (p3 (merge-pathnames p1)))
+++    (values
+++     (equalpt (pathname-host p1) (pathname-host p3))
+++     (equalpt (pathname-host p2) (pathname-host p3))
+++     (equalpt (pathname-device p2) (pathname-device p3))
+++     (equalpt (pathname-directory p2) (pathname-directory p3))
+++     (equalpt (pathname-name p2) (pathname-name p3))
+++     (equalpt (pathname-type p2) (pathname-type p3))
+++     (cond
+++      ((pathname-version p1) (equalpt (pathname-version p1)
+++                                   (pathname-version p3)))
+++      ((pathname-version p2) (equalpt (pathname-version p2)
+++                                   (pathname-version p3)))
+++      (t (equalpt (pathname-version p3) :newest)))))
+++  t t t t t t t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/namestring.lsp
++@@ -0,0 +1,64 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Sep  2 07:24:42 2004
+++;;;; Contains: Tests for NAMESTRING
+++
+++(in-package :cl-test)
+++
+++(deftest namestring.1
+++  (let* ((vals (multiple-value-list (namestring "namestring.lsp")))
+++      (s (first vals)))
+++    (if (and (null (cdr vals))
+++          (stringp s)
+++          (equal (namestring s) s))
+++     :good
+++      vals))
+++  :good)
+++
+++(deftest namestring.2
+++  (do-special-strings
+++   (s "namestring.lsp" nil)
+++   (let ((ns (namestring s)))
+++     (assert (stringp ns))
+++     (assert (string= (namestring ns) ns))))
+++  nil)
+++
+++;;; I'm not convinced these tested required behavior, so I'm commenting
+++;;; them out for now.  FIXME: determine if they are bogus
+++#|
+++(deftest namestring.3
+++  (let* ((name "namestring.lsp")
+++      (pn (merge-pathnames (pathname name)))
+++      (name2 (namestring pn))
+++      (pn2 (pathname name2)))
+++    (or (equalt pn pn2) (list (list pn (pathname-host pn) (pathname-device pn)
+++                                 (pathname-directory pn) (pathname-name pn)
+++                                 (pathname-type pn) (pathname-version pn))
+++                           (list pn2 (pathname-host pn2) (pathname-device pn2)
+++                                 (pathname-directory pn2) (pathname-name pn2)
+++                                 (pathname-type pn2) (pathname-version pn2)))))
+++  t)
+++
+++(deftest namestring.4
+++  (let* ((name "namestring.lsp")
+++      (pn (merge-pathnames (pathname name)))
+++      (name2 (with-open-file (s pn :direction :input) (namestring s)))
+++      (pn2 (pathname name2)))
+++    (or (equalt pn pn2) (list (list pn (pathname-host pn) (pathname-device pn)
+++                                 (pathname-directory pn) (pathname-name pn)
+++                                 (pathname-type pn) (pathname-version pn))
+++                           (list pn2 (pathname-host pn2) (pathname-device pn2)
+++                                 (pathname-directory pn2) (pathname-name pn2)
+++                                 (pathname-type pn2) (pathname-version pn2)))))
+++  t)
+++|#
+++
+++;;; Error tests
+++
+++(deftest namestring.error.1
+++  (signals-error (namestring) program-error)
+++  t)
+++
+++(deftest namestring.error.2
+++  (signals-error (namestring "namestring.lsp" nil) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/open-stream-p.lsp
++@@ -0,0 +1,54 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 13 19:52:30 2004
+++;;;; Contains: Tests of OPEN-STREAM-P
+++
+++(in-package :cl-test)
+++
+++(deftest open-stream-p.1
+++  (loop for s in (list *debug-io* *error-output* *query-io*
+++                    *standard-input* *standard-output*
+++                    *trace-output* *terminal-io*)
+++     for results = (multiple-value-list (open-stream-p s))
+++     unless (and (eql (length results) 1)
+++                 (car results))
+++     collect s)
+++  nil)
+++
+++(deftest open-stream-p.2
+++  (with-open-file (s "open-stream-p.lsp" :direction :input)
+++               (notnot-mv (open-stream-p s)))
+++  t)
+++
+++(deftest open-stream-p.3
+++  (with-open-file (s "foo.txt" :direction :output
+++                  :if-exists :supersede)
+++               (notnot-mv (open-stream-p s)))
+++  t)
+++
+++(deftest open-stream-p.4
+++  (let ((s (open "open-stream-p.lsp" :direction :input)))
+++    (close s)
+++    (open-stream-p s))
+++  nil)
+++
+++(deftest open-stream-p.5
+++  (let ((s (open "foo.txt" :direction :output
+++              :if-exists :supersede)))
+++    (close s)
+++    (open-stream-p s))
+++  nil)
+++
+++;;; error tests
+++
+++(deftest open-stream-p.error.1
+++  (signals-error (open-stream-p) program-error)
+++  t)
+++
+++(deftest open-stream-p.error.2
+++  (signals-error (open-stream-p *standard-input* nil) program-error)
+++  t)
+++
+++(deftest open-stream-p.error.3
+++  (check-type-error #'open-stream-p #'streamp)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/open.lsp
++@@ -0,0 +1,1238 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Fri Jan 23 05:36:55 2004
+++;;;; Contains: Tests of OPEN
+++
+++(in-package :cl-test)
+++
+++;;; Input streams
+++
+++(defun generator-for-element-type (type)
+++  (etypecase type
+++   ((member character base-char)
+++    #'(lambda (i) (aref "abcdefghijklmnopqrstuvwxyz" (mod i 26))))
+++   ((member signed-byte unsigned-byte bit)
+++    #'(lambda (i) (logand i 1)))
+++   (cons
+++    (let ((op (car type))
+++       (arg1 (cadr type))
+++       (arg2 (caddr type)))
+++      (ecase op
+++     (unsigned-byte
+++      (let ((mask (1- (ash 1 arg1))))
+++        #'(lambda (i) (logand i mask))))
+++     (signed-byte
+++      (let ((mask (1- (ash 1 (1- arg1)))))
+++        #'(lambda (i) (logand i mask))))
+++     (integer
+++      (let* ((lo arg1)
+++             (hi arg2)
+++            (lower-bound
+++             (etypecase lo
+++               (integer lo)
+++               (cons (1+ (car lo)))))
+++            (upper-bound
+++             (etypecase hi
+++               (integer hi)
+++               (cons (1- (car hi)))))
+++            (range (1+ (- upper-bound lower-bound))))
+++        #'(lambda (i) (+ lower-bound (mod i range))))))))))
+++
+++(compile 'generator-for-element-type)
+++
+++(defmacro def-open-test (name args form expected
+++                           &key
+++                           (notes nil notes-p)
+++                           (build-form nil build-form-p)
+++                           (element-type 'character element-type-p)
+++                           (pathname #p"tmp.dat"))
+++       
+++  (when element-type-p
+++    (setf args (append args (list :element-type `',element-type))))
+++
+++  (unless build-form-p
+++    (let ((write-element-form
+++        (cond
+++         ((subtypep element-type 'integer)
+++          `(write-byte
+++            (funcall (the function
+++                       (generator-for-element-type ',element-type)) i)
+++            os))
+++         ((subtypep element-type 'character)
+++          `(write-char
+++            (funcall (the function
+++                       (generator-for-element-type ',element-type)) i)
+++            os)))))
+++      (setq build-form
+++         `(with-open-file
+++           (os pn :direction :output
+++               ,@(if element-type-p
+++                     `(:element-type ',element-type))
+++               :if-exists :supersede)
+++           (assert (open-stream-p os))
+++           (dotimes (i 10) ,write-element-form)
+++           (finish-output os)
+++         ))))
+++                           
+++  `(deftest ,name
+++     ,@(when notes-p `(:notes ,notes))
+++     (let ((pn ,pathname))
+++       (delete-all-versions pn)
+++       ,build-form
+++       (let ((s (open pn ,@args)))
+++      (unwind-protect
+++          (progn
+++            (assert (open-stream-p s))
+++            (assert (typep s 'file-stream))
+++            ,@
+++            (unless (member element-type '(signed-byte unsigned-byte))
+++              #-allegro
+++              `((assert (subtypep ',element-type
+++                                  (stream-element-type s))))
+++              #+allegro nil
+++              )
+++            ,form)
+++        (close s))))
+++     ,@expected))
+++
+++;; (compile 'def-open-test)
+++
+++(def-open-test open.1 () (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.2 (:direction :input)
+++  (values (read-line s nil)) ("abcdefghij") :element-type character)
+++(def-open-test open.3 (:direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.4 (:direction :input)
+++  (values (read-line s nil)) ("abcdefghij") :element-type base-char)
+++(def-open-test open.5 (:if-exists :error)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.6 (:if-exists :error :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.7 (:if-exists :new-version)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.8 (:if-exists :new-version :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.9 (:if-exists :rename)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.10 (:if-exists :rename :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.11 (:if-exists :rename-and-delete)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.12 (:if-exists :rename-and-delete :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.13 (:if-exists :overwrite)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.14 (:if-exists :overwrite :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.15 (:if-exists :append)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.16 (:if-exists :append :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.17 (:if-exists :supersede)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.18 (:if-exists :supersede :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.19 (:if-exists nil)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.20 (:if-exists nil :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++
+++(def-open-test open.21 (:if-does-not-exist nil)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.22 (:if-does-not-exist nil :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.23 (:if-does-not-exist :error)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.24 (:if-does-not-exist :error :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.25 (:if-does-not-exist :create)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.26 (:if-does-not-exist :create :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++
+++(def-open-test open.27 (:external-format :default)
+++  (values (read-line s nil)) ("abcdefghij"))
+++(def-open-test open.28 (:external-format :default :direction :input)
+++  (values (read-line s nil)) ("abcdefghij"))
+++
+++(def-open-test open.29 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 0 1 0 1 0 1 0 1)) :element-type (unsigned-byte 1))
+++(def-open-test open.30 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 0 1 0 1 0 1 0 1)) :element-type (unsigned-byte 1))
+++
+++(def-open-test open.31 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 0 1 2 3 0 1)) :element-type (unsigned-byte 2))
+++(def-open-test open.32 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 0 1 2 3 0 1)) :element-type (unsigned-byte 2))
+++
+++(def-open-test open.33 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 0 1)) :element-type (unsigned-byte 3))
+++(def-open-test open.34 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 0 1)) :element-type (unsigned-byte 3))
+++
+++(def-open-test open.35 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 4))
+++(def-open-test open.36 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 4))
+++
+++(def-open-test open.37 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 5))
+++(def-open-test open.38 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 5))
+++
+++(def-open-test open.39 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 6))
+++(def-open-test open.40 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 6))
+++
+++(def-open-test open.41 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 7))
+++(def-open-test open.42 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 7))
+++
+++(def-open-test open.43 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 8))
+++(def-open-test open.44 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 8))
+++
+++(def-open-test open.45 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 9))
+++(def-open-test open.46 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 9))
+++
+++(def-open-test open.47 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 10))
+++(def-open-test open.48 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 10))
+++
+++(def-open-test open.49 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 20))
+++(def-open-test open.50 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 20))
+++
+++(def-open-test open.51 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 25))
+++(def-open-test open.52 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 25))
+++
+++(def-open-test open.53 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 30))
+++(def-open-test open.54 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 30))
+++
+++(def-open-test open.55 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 32))
+++(def-open-test open.56 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 32))
+++
+++(def-open-test open.57 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 33))
+++(def-open-test open.58 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 2 3 4 5 6 7 8 9)) :element-type (unsigned-byte 33))
+++
+++(def-open-test open.59 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 0 1 0 1 0 1 0 1)) :element-type unsigned-byte)
+++(def-open-test open.60 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 0 1 0 1 0 1 0 1)) :element-type unsigned-byte)
+++
+++(def-open-test open.61 ()
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 0 1 0 1 0 1 0 1)) :element-type signed-byte)
+++(def-open-test open.62 (:direction :input)
+++  (let ((seq (make-array 10))) (read-sequence seq s) seq)
+++  (#(0 1 0 1 0 1 0 1 0 1)) :element-type signed-byte)
+++
+++
+++(def-open-test open.63 ()
+++  (values (read-line s nil)) ("abcdefghij")
+++  :pathname "tmp.dat")
+++
+++(def-open-test open.64 ()
+++  (values (read-line s nil)) ("abcdefghij")
+++  :pathname (logical-pathname "CLTEST:TMP.DAT"))
+++
+++;;; It works on recognizable subtypes.
+++(deftest open.65
+++  (let ((type '(or (integer 0 1) (integer 100 200)))
+++     (pn #p"tmp.dat")
+++     (vals '(0 1 100 120 130 190 200 1 0 150)))
+++    (or
+++     (not (subtypep type 'integer))
+++     (progn
+++       (with-open-file
+++     (os pn :direction :output
+++         :element-type type
+++         :if-exists :supersede)
+++     (dolist (e vals) (write-byte e os)))
+++       (let ((s (open pn :direction :input
+++                   :element-type type))
+++          (seq (make-array 10)))
+++      (unwind-protect
+++          (progn (read-sequence seq s) seq)
+++        (close s))
+++      (notnot (every #'eql seq vals))))))
+++  t)
+++
+++;;; FIXME: Add -- tests for when the filespec is a stream
+++
+++(deftest open.66
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (with-open-file
+++     (s pn :direction :io :if-exists :rename-and-delete
+++     :if-does-not-exist :create)
+++     (format s "some stuff~%")
+++     (finish-output s)
+++     (let ((is (open s :direction :input)))
+++       (unwind-protect
+++        (values
+++         (read-char is)
+++         (notnot (file-position s :start))
+++         (read-line is)
+++         (read-line s))
+++      (close is)))))
+++  #\s
+++  t
+++  "ome stuff"
+++  "some stuff")
+++
+++(deftest open.67
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (let ((s (open pn :direction :output)))
+++      (unwind-protect
+++       (progn
+++         (format s "some stuff~%")
+++         (finish-output s)
+++         (close s)
+++         (let ((is (open s :direction :input)))
+++           (unwind-protect
+++               (values (read-line is))
+++             (close is))))
+++     (when (open-stream-p s) (close s)))))
+++  "some stuff")
+++
+++;;; FIXME: Add -- tests for when element-type is :default
+++
+++;;; Tests of file creation
+++
+++(defmacro def-open-output-test
+++  (name args form expected
+++     &rest keyargs
+++     &key
+++     (element-type 'character)
+++     (build-form
+++      `(dotimes (i 10)
+++         ,(cond
+++           ((subtypep element-type 'integer)
+++            `(write-byte
+++              (funcall (the function
+++                         (generator-for-element-type ',element-type)) i)
+++              s))
+++           ((subtypep element-type 'character)
+++            `(write-char
+++              (funcall (the function
+++                         (generator-for-element-type ',element-type)) i)
+++              s)))))
+++     &allow-other-keys)
+++  `(def-open-test ,name (:direction :output ,@args)
+++     (progn
+++       ,build-form
+++       (assert (output-stream-p s))
+++       ,form)
+++     ,expected
+++     :build-form nil
+++     ,@keyargs))
+++
+++;; (compile 'def-open-output-test)
+++
+++(def-open-output-test open.output.1 ()
+++  (progn (close s)
+++      (with-open-file (is #p"tmp.dat") (values (read-line is nil))))
+++  ("abcdefghij"))
+++
+++(def-open-output-test open.output.2 ()
+++  (progn (close s)
+++      (with-open-file (is "tmp.dat") (values (read-line is nil))))
+++  ("abcdefghij")
+++  :pathname "tmp.dat")
+++
+++(def-open-output-test open.output.3
+++  ()
+++  (progn (close s)
+++      (with-open-file (is (logical-pathname "CLTEST:TMP.DAT"))
+++                      (values (read-line is nil))))
+++  ("abcdefghij")
+++  :pathname (logical-pathname "CLTEST:TMP.DAT"))
+++
+++(def-open-output-test open.output.4 ()
+++  (progn (close s)
+++      (with-open-file (is #p"tmp.dat" :element-type 'character)
+++                      (values (read-line is nil))))
+++  ("abcdefghij")
+++  :element-type character)
+++
+++(def-open-output-test open.output.5 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type 'base-char)
+++                                (values (read-line is nil))))
+++  ("abcdefghij")
+++  :element-type base-char)
+++
+++(def-open-output-test open.output.6 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(integer 0 1))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 0 1 0 1 0 1 0 1))
+++  :element-type (integer 0 1))
+++
+++(def-open-output-test open.output.7 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type 'bit)
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 0 1 0 1 0 1 0 1))
+++  :element-type bit)
+++
+++(def-open-output-test open.output.8 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 1))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 0 1 0 1 0 1 0 1))
+++  :element-type (unsigned-byte 1))
+++
+++(def-open-output-test open.output.9 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 2))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 0 1 2 3 0 1))
+++  :element-type (unsigned-byte 2))
+++
+++(def-open-output-test open.output.10 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 3))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 0 1))
+++  :element-type (unsigned-byte 3))
+++
+++(def-open-output-test open.output.11 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 4))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 4))
+++
+++
+++(def-open-output-test open.output.12 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 6))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 6))
+++
+++(def-open-output-test open.output.13 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 8))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 8))
+++
+++(def-open-output-test open.output.14 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 12))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 12))
+++
+++(def-open-output-test open.output.15 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 16))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 16))
+++
+++(def-open-output-test open.output.16 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 24))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 24))
+++
+++(def-open-output-test open.output.17 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 32))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 32))
+++
+++(def-open-output-test open.output.18 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 64))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 64))
+++
+++(def-open-output-test open.output.19 ()
+++  (progn (close s) (with-open-file (is #p"tmp.dat"
+++                                    :element-type '(unsigned-byte 100))
+++                                (let ((seq (make-array 10)))
+++                                  (read-sequence seq is)
+++                                  seq)))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 100))
+++
+++(deftest open.output.20
+++  (let ((pn #p"tmp.dat"))
+++    (with-open-file (s pn :direction :output :if-exists :supersede))
+++    (open pn :direction :output :if-exists nil))
+++  nil)
+++
+++(def-open-test open.output.21 (:if-exists :new-version :direction :output)
+++  (progn (write-sequence "wxyz" s)
+++      (close s)
+++      (with-open-file
+++       (s pn :direction :input)
+++       (values (read-line s nil))))
+++  ("wxyz")
+++  :notes (:open-if-exists-new-version-no-error)
+++  )
+++
+++(def-open-test open.output.22 (:if-exists :rename :direction :output)
+++  (progn (write-sequence "wxyz" s)
+++      (close s)
+++      (with-open-file
+++       (s pn :direction :input)
+++       (values (read-line s nil))))
+++  ("wxyz"))
+++
+++(def-open-test open.output.23 (:if-exists :rename-and-delete
+++                                       :direction :output)
+++  (progn (write-sequence "wxyz" s)
+++      (close s)
+++      (with-open-file
+++       (s pn :direction :input)
+++       (values (read-line s nil))))
+++  ("wxyz"))
+++
+++(def-open-test open.output.24 (:if-exists :overwrite
+++                                       :direction :output)
+++  (progn (write-sequence "wxyz" s)
+++      (close s)
+++      (with-open-file
+++       (s pn :direction :input)
+++       (values (read-line s nil))))
+++  ("wxyzefghij"))
+++
+++(def-open-test open.output.25 (:if-exists :append
+++                                       :direction :output)
+++  (progn (write-sequence "wxyz" s)
+++      (close s)
+++      (with-open-file
+++       (s pn :direction :input)
+++       (values (read-line s nil))))
+++  ("abcdefghijwxyz"))
+++
+++(def-open-test open.output.26 (:if-exists :supersede
+++                                       :direction :output)
+++  (progn (write-sequence "wxyz" s)
+++      (close s)
+++      (with-open-file
+++       (s pn :direction :input)
+++       (values (read-line s nil))))
+++  ("wxyz"))
+++
+++(def-open-output-test open.output.27 (:if-does-not-exist :create
+++                                                      :direction :output)
+++  (progn (close s)
+++      (with-open-file
+++       (is pn :direction :input)
+++       (values (read-line is nil))))
+++  ("abcdefghij"))
+++
+++(deftest open.output.28
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (open pn :direction :output :if-does-not-exist nil))
+++  nil)
+++
+++(def-open-output-test open.output.28a (:external-format :default)
+++  (progn (close s)
+++      (with-open-file (is #p"tmp.dat") (values (read-line is nil))))
+++  ("abcdefghij"))
+++
+++(def-open-output-test open.output.29
+++  (:external-format (prog1
+++                   (with-open-file (s "foo.dat" :direction :output
+++                                      :if-exists :supersede)
+++                                   (stream-external-format s))
+++                   (delete-all-versions "foo.dat")
+++                   ))
+++  (progn (close s)
+++      (with-open-file (is #p"tmp.dat") (values (read-line is nil))))
+++  ("abcdefghij"))
+++
+++;;; Default behavior of open :if-exists is :create when the version
+++;;; of the filespec is :newest
+++
+++(deftest open.output.30
+++  :notes (:open-if-exists-new-version-no-error)
+++  (let ((pn (make-pathname :name "tmp" :type "dat" :version :newest)))
+++    (or (not (eql (pathname-version pn) :newest))
+++     (progn
+++       ;; Create file
+++       (let ((s1 (open pn :direction :output :if-exists :overwrite
+++                       :if-does-not-exist :create)))
+++         (unwind-protect
+++             ;; Now try again
+++             (let ((s2 (open pn :direction :output)))
+++               (unwind-protect
+++                   (write-line "abcdef" s2)
+++                 (close s2))
+++               (unwind-protect
+++                   (progn
+++                     (setq s2 (open s1 :direction :input))
+++                     (equalt (read-line s2 nil) "abcdef"))
+++                 (close s2)))
+++           (close s1)
+++           (delete-all-versions pn)
+++           )))))
+++  t)
+++
+++(def-open-output-test open.output.31 (:if-exists :rename
+++                                   :direction :output)
+++  (progn (close s)
+++      (with-open-file
+++       (is pn :direction :input)
+++       (values (read-line is nil))))
+++  ("abcdefghij"))
+++
+++(def-open-output-test open.output.32 (:if-exists :rename-and-delete
+++                                   :direction :output)
+++  (progn (close s)
+++      (with-open-file
+++       (is pn :direction :input)
+++       (values (read-line is nil))))
+++  ("abcdefghij"))
+++
+++(def-open-output-test open.output.33 (:if-exists :new-version
+++                                   :direction :output)
+++  (progn (close s)
+++      (with-open-file
+++       (is pn :direction :input)
+++       (values (read-line is nil))))
+++  ("abcdefghij"))
+++
+++(def-open-output-test open.output.34 (:if-exists :supersede
+++                                   :direction :output)
+++  (progn (close s)
+++      (with-open-file
+++       (is pn :direction :input)
+++       (values (read-line is nil))))
+++  ("abcdefghij"))
+++
+++(def-open-output-test open.output.35 (:if-exists nil
+++                                   :direction :output)
+++  (progn (close s)
+++      (with-open-file
+++       (is pn :direction :input)
+++       (values (read-line is nil))))
+++  ("abcdefghij"))        
+++
+++;;; Add -- tests for when the filespec is a stream
+++
+++
+++;;; Tests of bidirectional IO
+++
+++(defmacro def-open-io-test
+++  (name args form expected
+++     &rest keyargs
+++     &key
+++     (element-type 'character)
+++     (build-form
+++      `(dotimes (i 10)
+++         ,(cond
+++           ((subtypep element-type 'integer)
+++            `(write-byte
+++              (funcall (the function
+++                         (generator-for-element-type ',element-type)) i)
+++              s))
+++           ((subtypep element-type 'character)
+++            `(write-char
+++              (funcall (the function
+++                         (generator-for-element-type ',element-type)) i)
+++              s)))))
+++     &allow-other-keys)
+++  `(def-open-test ,name (:direction :io ,@args)
+++     (progn
+++       ,build-form
+++       (assert (input-stream-p s))
+++       (assert (output-stream-p s))
+++       ,form)
+++     ,expected
+++     :build-form nil
+++     ,@keyargs))
+++
+++;; (compile 'def-open-io-test)
+++
+++(def-open-io-test open.io.1 ()
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++(def-open-io-test open.io.2 ()
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij")
+++  :pathname "tmp.dat")
+++
+++(def-open-io-test open.io.3
+++  ()
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij")
+++  :pathname (logical-pathname "CLTEST:TMP.DAT"))
+++
+++(def-open-io-test open.io.4 ()
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij")
+++  :element-type character)
+++
+++(def-open-io-test open.io.5 ()
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij")
+++  :element-type base-char)
+++
+++(def-open-io-test open.io.6 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 0 1 0 1 0 1 0 1))
+++  :element-type (integer 0 1))
+++
+++(def-open-io-test open.io.7 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 0 1 0 1 0 1 0 1))
+++  :element-type bit)
+++
+++(def-open-io-test open.io.8 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 0 1 0 1 0 1 0 1))
+++  :element-type (unsigned-byte 1))
+++
+++(def-open-io-test open.io.9 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 0 1 2 3 0 1))
+++  :element-type (unsigned-byte 2))
+++
+++(def-open-io-test open.io.10 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 0 1))
+++  :element-type (unsigned-byte 3))
+++
+++(def-open-io-test open.io.11 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 4))
+++
+++
+++(def-open-io-test open.io.12 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 6))
+++
+++(def-open-io-test open.io.13 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 8))
+++
+++(def-open-io-test open.io.14 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 12))
+++
+++(def-open-io-test open.io.15 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 16))
+++
+++(def-open-io-test open.io.16 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 24))
+++
+++(def-open-io-test open.io.17 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 32))
+++
+++(def-open-io-test open.io.18 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 64))
+++
+++(def-open-io-test open.io.19 ()
+++  (progn (file-position s :start)
+++      (let ((seq (make-array 10)))
+++        (read-sequence seq s)
+++        seq))
+++  (#(0 1 2 3 4 5 6 7 8 9))
+++  :element-type (unsigned-byte 100))
+++
+++(deftest open.io.20
+++  (let ((pn #p"tmp.dat"))
+++    (with-open-file (s pn :direction :io :if-exists :supersede))
+++    (open pn :direction :io :if-exists nil))
+++  nil)
+++
+++(def-open-test open.io.21 (:if-exists :new-version :direction :io)
+++  (progn (write-sequence "wxyz" s)
+++      (file-position s :start)
+++      (values (read-line s nil)))
+++  ("wxyz")
+++  :notes (:open-if-exists-new-version-no-error)
+++  )
+++
+++(def-open-test open.io.22 (:if-exists :rename :direction :io)
+++  (progn (write-sequence "wxyz" s)
+++      (file-position s :start)
+++      (values (read-line s nil)))
+++  ("wxyz"))
+++
+++(def-open-test open.io.23 (:if-exists :rename-and-delete
+++                        :direction :io)
+++  (progn (write-sequence "wxyz" s)
+++      (file-position s :start)
+++      (values (read-line s nil)))
+++  ("wxyz"))
+++
+++(def-open-test open.io.24 (:if-exists :overwrite
+++                        :direction :io)
+++  (progn (write-sequence "wxyz" s)
+++      (file-position s :start)
+++      (values (read-line s nil)))
+++  ("wxyzefghij"))
+++
+++(def-open-test open.io.25 (:if-exists :append
+++                        :direction :io)
+++  (progn (write-sequence "wxyz" s)
+++      (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghijwxyz"))
+++
+++(def-open-test open.io.26 (:if-exists :supersede
+++                        :direction :io)
+++  (progn (write-sequence "wxyz" s)
+++      (file-position s :start)
+++      (values (read-line s nil)))
+++  ("wxyz"))
+++
+++(def-open-io-test open.io.27 (:if-does-not-exist :create
+++                           :direction :io)
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++(deftest open.io.28
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (open pn :direction :io :if-does-not-exist nil))
+++  nil)
+++
+++(def-open-io-test open.io.28a (:external-format :default)
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++(def-open-io-test open.io.29
+++  (:external-format (prog1
+++                   (with-open-file (s "foo.dat" :direction :io
+++                                      :if-exists :supersede)
+++                                   (stream-external-format s))
+++                   (delete-all-versions "foo.dat")
+++                   ))
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++;;; Default behavior of open :if-exists is :create when the version
+++;;; of the filespec is :newest
+++
+++(deftest open.io.30
+++  :notes (:open-if-exists-new-version-no-error)
+++  (let ((pn (make-pathname :name "tmp" :type "dat" :version :newest)))
+++    (or (not (eql (pathname-version pn) :newest))
+++     (progn
+++       ;; Create file
+++       (let ((s1 (open pn :direction :io :if-exists :overwrite
+++                       :if-does-not-exist :create)))
+++         (unwind-protect
+++             ;; Now try again
+++             (let ((s2 (open pn :direction :io)))
+++               (unwind-protect
+++                   (write-line "abcdef" s2)
+++                 (close s2))
+++               (unwind-protect
+++                   (progn
+++                     (setq s2 (open s1 :direction :input))
+++                     (equalt (read-line s2 nil) "abcdef"))
+++                 (close s2)))
+++           (close s1)
+++           (delete-all-versions pn)
+++           )))))
+++  t)
+++
+++(def-open-io-test open.io.31 (:if-exists :rename
+++                           :direction :io)
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++(def-open-io-test open.io.32 (:if-exists :rename-and-delete
+++                           :direction :io)
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++(def-open-io-test open.io.33 (:if-exists :new-version
+++                           :direction :io)
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++(def-open-io-test open.io.34 (:if-exists :supersede
+++                           :direction :io)
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++(def-open-io-test open.io.35 (:if-exists nil
+++                           :direction :io)
+++  (progn (file-position s :start)
+++      (values (read-line s nil)))
+++  ("abcdefghij"))
+++
+++;;;; :PROBE tests
+++
+++(defmacro def-open-probe-test
+++  (name args form
+++     &key (build-form nil build-form-p)
+++     (pathname #p"tmp.dat"))
+++  (unless build-form-p
+++    (setf build-form
+++       `(with-open-file (s pn :direction :output
+++                           :if-exists :supersede))))
+++  `(deftest ,name
+++     (let ((pn ,pathname))
+++       (delete-all-versions pn)
+++       ,build-form
+++       (let ((s (open pn :direction :probe ,@args)))
+++      (values
+++       ,(if build-form
+++            `(and
+++              (typep s 'file-stream)
+++              (not (open-stream-p s))
+++              )
+++          `(not s))
+++       ,form)))
+++     t t))
+++
+++(def-open-probe-test open.probe.1 () t)
+++(def-open-probe-test open.probe.2 (:if-exists :error) t)
+++(def-open-probe-test open.probe.3 (:if-exists :new-version) t)
+++(def-open-probe-test open.probe.4 (:if-exists :rename) t)
+++(def-open-probe-test open.probe.5 (:if-exists :rename-and-delete) t)
+++(def-open-probe-test open.probe.6 (:if-exists :overwrite) t)
+++(def-open-probe-test open.probe.7 (:if-exists :append) t)
+++(def-open-probe-test open.probe.8 (:if-exists :supersede) t)
+++
+++(def-open-probe-test open.probe.9 (:if-does-not-exist :error) t)
+++(def-open-probe-test open.probe.10 (:if-does-not-exist nil) t)
+++(def-open-probe-test open.probe.11 (:if-does-not-exist :create) t)
+++
+++(def-open-probe-test open.probe.12 () t :build-form nil)
+++(def-open-probe-test open.probe.13 (:if-exists :error) t :build-form nil)
+++(def-open-probe-test open.probe.14 (:if-exists :new-version) t :build-form nil)
+++(def-open-probe-test open.probe.15 (:if-exists :rename) t :build-form nil)
+++(def-open-probe-test open.probe.16 (:if-exists :rename-and-delete) t
+++  :build-form nil)
+++(def-open-probe-test open.probe.17 (:if-exists :overwrite) t
+++  :build-form nil)
+++(def-open-probe-test open.probe.18 (:if-exists :append) t
+++  :build-form nil)
+++(def-open-probe-test open.probe.19 (:if-exists :supersede) t
+++  :build-form nil)
+++
+++(def-open-probe-test open.probe.20 (:if-does-not-exist nil) t
+++  :build-form nil)
+++
+++(deftest open.probe.21
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (let ((s (open pn :direction :probe :if-does-not-exist :create)))
+++      (values
+++       (notnot s)
+++       (notnot (probe-file pn)))))
+++  t t)
+++
+++(deftest open.probe.22
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (let ((s (open pn :direction :probe :if-does-not-exist :create
+++                :if-exists :error)))
+++      (values
+++       (notnot s)
+++       (notnot (probe-file pn)))))
+++  t t)
+++
+++(def-open-probe-test open.probe.23 (:external-format :default) t)
+++(def-open-probe-test open.probe.24 (:element-type 'character) t)
+++(def-open-probe-test open.probe.25 (:element-type 'bit) t)
+++(def-open-probe-test open.probe.26 (:element-type '(unsigned-byte 2)) t)
+++(def-open-probe-test open.probe.27 (:element-type '(unsigned-byte 4)) t)
+++(def-open-probe-test open.probe.28 (:element-type '(unsigned-byte 8)) t)
+++(def-open-probe-test open.probe.29 (:element-type '(unsigned-byte 9)) t)
+++(def-open-probe-test open.probe.30 (:element-type '(unsigned-byte 15)) t)
+++(def-open-probe-test open.probe.31 (:element-type '(unsigned-byte 16)) t)
+++(def-open-probe-test open.probe.32 (:element-type '(unsigned-byte 17)) t)
+++(def-open-probe-test open.probe.33 (:element-type '(unsigned-byte 31)) t)
+++(def-open-probe-test open.probe.34 (:element-type '(unsigned-byte 32)) t)
+++(def-open-probe-test open.probe.35 (:element-type '(unsigned-byte 33)) t)
+++(def-open-probe-test open.probe.36 (:element-type '(integer -1002 13112)) t)
+++
+++;;;; Error tests
+++
+++(deftest open.error.1
+++  (signals-error (open) program-error)
+++  t)
+++
+++(deftest open.error.2
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (close (open pn :direction :output :if-does-not-exist :create))
+++     (open pn :if-exists :error :direction :output))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.3
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (close (open pn :direction :output :if-does-not-exist :create))
+++     (open pn :if-exists :error :direction :io))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.4
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.5
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :if-does-not-exist :error))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.6
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :direction :input))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.7
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :if-does-not-exist :error :direction :input))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.8
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :direction :output :if-does-not-exist :error))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.9
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :direction :io :if-does-not-exist :error))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.10
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :direction :probe :if-does-not-exist :error))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.11
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :direction :output :if-exists :overwrite))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.12
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :direction :output :if-exists :append))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.13
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :direction :io :if-exists :overwrite))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.14
+++  (signals-error-always
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (open pn :direction :io :if-exists :append))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.15
+++  (signals-error-always
+++   (open (make-pathname :name :wild :type "lsp"))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.16
+++  (signals-error-always
+++   (open (make-pathname :name "open" :type :wild))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.17
+++  (signals-error-always
+++   (let ((pn (make-pathname :name "open" :type "lsp" :version :wild)))
+++     (if (wild-pathname-p pn) (open pn)
+++       (error 'file-error)))
+++   file-error)
+++  t t)
+++
+++(deftest open.error.18
+++  (signals-error-always
+++   (open #p"tmp.dat" :direction :output :if-exists :supersede
+++      :external-form (gensym))
+++   error)
+++  t t)
+++
+++
+++;;; FIXME -- add tests for :element-type :default
+++
+++;;; FIXME -- add tests for filespec being a specialized string
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/output-stream-p.lsp
++@@ -0,0 +1,39 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 13 19:46:12 2004
+++;;;; Contains: Tests of OUTPUT-STREAM-P
+++
+++(in-package :cl-test)
+++
+++(deftest output-stream-p.1
+++  (notnot-mv (output-stream-p *standard-output*))
+++  t)
+++
+++(deftest output-stream-p.2
+++  (notnot-mv (output-stream-p *terminal-io*))
+++  t)
+++
+++(deftest output-stream-p.3
+++  (with-open-file (s "output-stream-p.lsp" :direction :input)
+++               (output-stream-p s))
+++  nil)
+++
+++(deftest output-stream-p.4
+++  (with-open-file (s "foo.txt" :direction :output
+++                  :if-exists :supersede)
+++               (notnot-mv (output-stream-p s)))
+++  t)
+++
+++;;; Error tests
+++
+++(deftest output-stream-p.error.1
+++  (signals-error (output-stream-p) program-error)
+++  t)
+++
+++(deftest output-stream-p.error.2
+++  (signals-error (output-stream-p *standard-output* nil) program-error)
+++  t)
+++
+++(deftest output-stream-p.error.3
+++  (check-type-error #'output-stream-p #'streamp)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/parse-namestring.lsp
++@@ -0,0 +1,89 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Aug 14 13:59:18 2004
+++;;;; Contains: Tests of PARSE-NAMESTRING
+++
+++(in-package :cl-test)
+++
+++;;; "Parsing a null string always succeeds, producing a pathname
+++;;;  with all components (except the host) equal to nil."
+++
+++(deftest parse-namestring.1
+++  (let ((vals (multiple-value-list (parse-namestring ""))))
+++    (assert (= (length vals) 2))
+++    (let ((pn (first vals))
+++       (pos (second vals)))
+++      (values
+++       (pathname-directory pn)
+++       (pathname-device pn)
+++       (pathname-name pn)
+++       (pathname-type pn)
+++       (pathname-version pn)
+++       pos)))
+++  nil nil nil nil nil 0)
+++
+++(deftest parse-namestring.2
+++  (let ((vals (multiple-value-list (parse-namestring (make-array 0 :element-type 'base-char)))))
+++    (assert (= (length vals) 2))
+++    (let ((pn (first vals))
+++       (pos (second vals)))
+++      (values
+++       (pathname-directory pn)
+++       (pathname-device pn)
+++       (pathname-name pn)
+++       (pathname-type pn)
+++       (pathname-version pn)
+++       pos)))
+++  nil nil nil nil nil 0)
+++
+++(deftest parse-namestring.3
+++  (let ((vals (multiple-value-list (parse-namestring (make-array 4 :element-type 'base-char
+++                                                              :initial-element #\X
+++                                                              :fill-pointer 0)))))
+++    (assert (= (length vals) 2))
+++    (let ((pn (first vals))
+++       (pos (second vals)))
+++      (values
+++       (pathname-directory pn)
+++       (pathname-device pn)
+++       (pathname-name pn)
+++       (pathname-type pn)
+++       (pathname-version pn)
+++       pos)))
+++  nil nil nil nil nil 0)
+++
+++(deftest parse-namestring.4
+++  (loop for etype in '(standard-char base-char character)
+++     for s0 = (make-array 4 :element-type etype :initial-element #\X)
+++     for s = (make-array 0 :element-type etype :displaced-to s0
+++                         :displaced-index-offset 1)
+++     for vals = (multiple-value-list (parse-namestring s))
+++     for pn = (first vals)
+++     for pos = (second vals)
+++     do (assert (= (length vals) 2))
+++     nconc
+++     (let ((result (list (pathname-directory pn)
+++                         (pathname-device pn)
+++                         (pathname-name pn)
+++                         (pathname-type pn)
+++                         (pathname-version pn)
+++                         pos)))
+++       (unless (equal result '(nil nil nil nil nil 0))
+++         (list (list etype result)))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest parse-namestring.error.1
+++  (signals-error (parse-namestring) program-error)
+++  t)
+++
+++(deftest parse-name-string.error.2
+++  (signals-error (parse-namestring "" nil *default-pathname-defaults* :foo nil) program-error)
+++  t)
+++
+++(deftest parse-name-string.error.3
+++  (signals-error (parse-namestring "" nil *default-pathname-defaults* :start) program-error)
+++  t)
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathname-device.lsp
++@@ -0,0 +1,74 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Dec  6 14:23:54 2003
+++;;;; Contains: Tests for PATHNAME-DEVICE
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++(deftest pathname-device.1
+++  (loop for p in *pathnames*
+++     for device = (pathname-device p)
+++     unless (or (stringp device)
+++                (member device '(nil :wild :unspecific)))
+++     collect (list p device))
+++  nil)
+++
+++(deftest pathname-device.2
+++  (loop for p in *pathnames*
+++     for device = (pathname-device p :case :local)
+++     unless (or (stringp device)
+++                (member device '(nil :wild :unspecific)))
+++     collect (list p device))
+++  nil)
+++
+++(deftest pathname-device.3
+++  (loop for p in *pathnames*
+++     for device = (pathname-device p :case :common)
+++     unless (or (stringp device)
+++                (member device '(nil :wild :unspecific)))
+++     collect (list p device))
+++  nil)
+++
+++(deftest pathname-device.4
+++  (loop for p in *pathnames*
+++     for device = (pathname-device p :allow-other-keys nil)
+++     unless (or (stringp device)
+++                (member device '(nil :wild :unspecific)))
+++     collect (list p device))
+++  nil)
+++
+++(deftest pathname-device.5
+++  (loop for p in *pathnames*
+++     for device = (pathname-device p :foo 'bar :allow-other-keys t)
+++     unless (or (stringp device)
+++                (member device '(nil :wild :unspecific)))
+++     collect (list p device))
+++  nil)
+++
+++(deftest pathname-device.6
+++  (loop for p in *pathnames*
+++     for device = (pathname-device p :allow-other-keys t :allow-other-keys nil :foo 'bar)
+++     unless (or (stringp device)
+++                (member device '(nil :wild :unspecific)))
+++     collect (list p device))
+++  nil)
+++
+++;;; section 19.3.2.1
+++(deftest pathname-device.7
+++  (loop for p in *logical-pathnames*
+++     always (eq (pathname-device p) :unspecific))
+++  t)
+++
+++(deftest pathname-device.8
+++  (do-special-strings (s "" nil) (pathname-device s))
+++  nil)
+++
+++(deftest pathname-device.error.1
+++  (signals-error (pathname-device) program-error)
+++  t)
+++
+++(deftest pathname-device.error.2
+++  (check-type-error #'pathname-device #'could-be-pathname-designator)
+++  nil)
++\ No newline at end of file
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathname-directory.lsp
++@@ -0,0 +1,89 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Dec  6 14:24:39 2003
+++;;;; Contains: Tests for PATHNAME-DIRECTORY
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++(deftest pathname-directory.1
+++  (loop for p in *pathnames*
+++     for directory = (pathname-directory p)
+++     unless (or (stringp directory)
+++                (member directory '(nil :wild :unspecific))
+++                (and (consp directory)
+++                     (member (car directory) '(:absolute :relative))))
+++     collect (list p directory))
+++  nil)
+++
+++(deftest pathname-directory.2
+++  (loop for p in *pathnames*
+++     for directory = (pathname-directory p :case :local)
+++     unless (or (stringp directory)
+++                (member directory '(nil :wild :unspecific))
+++                (and (consp directory)
+++                     (member (car directory) '(:absolute :relative))))
+++     collect (list p directory))
+++  nil)
+++
+++(deftest pathname-directory.3
+++  (loop for p in *pathnames*
+++     for directory = (pathname-directory p :case :common)
+++     unless (or (stringp directory)
+++                (member directory '(nil :wild :unspecific))
+++                (and (consp directory)
+++                     (member (car directory) '(:absolute :relative))))
+++     collect (list p directory))
+++  nil)
+++
+++(deftest pathname-directory.4
+++  (loop for p in *pathnames*
+++     for directory = (pathname-directory p :allow-other-keys nil)
+++     unless (or (stringp directory)
+++                (member directory '(nil :wild :unspecific))
+++                (and (consp directory)
+++                     (member (car directory) '(:absolute :relative))))
+++     collect (list p directory))
+++  nil)
+++
+++(deftest pathname-directory.5
+++  (loop for p in *pathnames*
+++     for directory = (pathname-directory p :foo 'bar :allow-other-keys t)
+++     unless (or (stringp directory)
+++                (member directory '(nil :wild :unspecific))
+++                (and (consp directory)
+++                     (member (car directory) '(:absolute :relative))))
+++     collect (list p directory))
+++  nil)
+++
+++(deftest pathname-directory.6
+++  (loop for p in *pathnames*
+++     for directory = (pathname-directory p :allow-other-keys t
+++                                         :allow-other-keys nil
+++                                         'foo 'bar)
+++     unless (or (stringp directory)
+++                (member directory '(nil :wild :unspecific))
+++                (and (consp directory)
+++                     (member (car directory) '(:absolute :relative))))
+++     collect (list p directory))
+++  nil)
+++
+++;;; section 19.3.2.1
+++(deftest pathname-directory.7
+++  (loop for p in *logical-pathnames*
+++     when (eq (pathname-directory p) :unspecific)
+++     collect p)
+++  nil)
+++
+++(deftest pathname-directory.8
+++  (do-special-strings (s "" nil) (pathname-directory s))
+++  nil)
+++
+++(deftest pathname-directory.error.1
+++  (signals-error (pathname-directory) program-error)
+++  t)
+++
+++(deftest pathname-directory.error.2
+++  (check-type-error #'pathname-directory #'could-be-pathname-designator)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathname-host.lsp
++@@ -0,0 +1,79 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Dec  6 14:23:22 2003
+++;;;; Contains: Tests for PATHNAME-HOST
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++(deftest pathname-host.1
+++  (loop for p in *pathnames*
+++     always (eql (length (multiple-value-list (pathname-host p))) 1))
+++  t)
+++
+++(deftest pathname-host.2
+++  (loop for p in *pathnames*
+++     always (eql (length (multiple-value-list (pathname-host p :case :local))) 1))
+++  t)
+++
+++(deftest pathname-host.3
+++  (loop for p in *pathnames*
+++     always (eql (length (multiple-value-list (pathname-host p :case :common))) 1))
+++  t)
+++
+++(deftest pathname-host.4
+++  (loop for p in *pathnames*
+++     always (eql (length (multiple-value-list (pathname-host p :allow-other-keys nil))) 1))
+++  t)
+++
+++(deftest pathname-host.5
+++  (loop for p in *pathnames*
+++     always (eql (length (multiple-value-list
+++                          (pathname-host p :foo t :allow-other-keys t))) 1))
+++  t)
+++
+++(deftest pathname-host.6
+++  (loop for p in *pathnames*
+++     always (eql (length (multiple-value-list
+++                          (pathname-host p :allow-other-keys t
+++                                         :allow-other-keys nil
+++                                         'foo t))) 1))
+++  t)
+++
+++;;; section 19.3.2.1
+++(deftest pathname-host.7
+++  (loop for p in *logical-pathnames*
+++     when (eq (pathname-host p) :unspecific)
+++     collect p)
+++  nil)
+++
+++(deftest pathname-host.8
+++  (do-special-strings (s "" nil) (pathname-host s))
+++  nil)
+++
+++#|
+++(deftest pathname-host.9
+++  (loop for p in *pathnames*
+++     for host = (pathname-host p)
+++     unless (or (stringp host)
+++                (and (listp host) (every #'stringp host))
+++                (eql host :unspecific))
+++     collect (list p host))
+++  nil)
+++|#
+++
+++;;; Error cases
+++
+++(deftest pathname-host.error.1
+++  (signals-error (pathname-host) program-error)
+++  t)
+++
+++(deftest pathname-host.error.2
+++  (check-type-error #'pathname-host #'could-be-pathname-designator)
+++  nil)
+++
+++(deftest pathname-host.error.3
+++  (signals-error (pathname-host *default-pathname-defaults* '#:bogus t)
+++              program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathname-match-p.lsp
++@@ -0,0 +1,103 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Aug 15 07:46:22 2004
+++;;;; Contains: Tests for PATHNAME-MATCH-P
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++;;; Much of the behavior cannot be tested portably.
+++
+++(deftest pathname-match-p.1
+++  (let ((pn1 (make-pathname :name :wild))
+++     (pn2 (make-pathname :name "foo")))
+++    (pathname-match-p pn1 pn2))
+++  nil)
+++
+++(deftest pathname-match-p.2
+++  (let ((pn1 (make-pathname :type :wild))
+++     (pn2 (make-pathname :type "txt")))
+++    (pathname-match-p pn1 pn2))
+++  nil)
+++
+++(deftest pathname-match-p.3
+++  (let ((pn1 (make-pathname :directory '(:absolute :wild)))
+++     (pn2 (make-pathname :directory '(:absolute))))
+++    (pathname-match-p pn1 pn2))
+++  nil)
+++
+++(deftest pathname-match-p.4
+++  (let ((pn1 (make-pathname :directory '(:relative :wild)))
+++     (pn2 (make-pathname :directory '(:relative))))
+++    (pathname-match-p pn1 pn2))
+++  nil)
+++
+++(deftest pathname-match-p.5
+++  (let ((pn1 (make-pathname :directory '(:relative :wild)))
+++     (pn2 (make-pathname :directory nil)))
+++    (and (wild-pathname-p pn1)
+++      (not (pathname-directory pn2))
+++      (not (pathname-match-p pn1 pn2))))
+++  nil)
+++
+++(deftest pathname-match-p.6
+++  (let ((pn1 (make-pathname :version :wild))
+++     (pn2 (make-pathname)))
+++    (and (wild-pathname-p pn1)
+++      (not (pathname-version pn2))
+++      (not (pathname-match-p pn1 pn2))))
+++  nil)
+++
+++;;; Specialized string tests
+++
+++(deftest pathname-match-p.7
+++  (let ((wpn (parse-namestring "CLTEST:*.LSP")))
+++    (assert (wild-pathname-p wpn))
+++    (do-special-strings
+++     (s "CLTEST:FOO.LSP" nil)
+++     (assert (pathname-match-p s wpn))))
+++  nil)
+++
+++(deftest pathname-match-p.8
+++  (do-special-strings
+++   (s "CLTEST:*.LSP" nil)
+++   (assert (pathname-match-p "CLTEST:FOO.LSP" s)))
+++  nil)
+++   
+++
+++;;; Add more tests here
+++
+++;;; Here are error tests
+++
+++(deftest pathname-match-p.error.1
+++  (signals-error (pathname-match-p) program-error)
+++  t)
+++
+++(deftest pathname-match-p.error.2
+++  (signals-error (pathname-match-p #p"") program-error)
+++  t)
+++
+++(deftest pathname-match-p.error.3
+++  (signals-error (pathname-match-p #p"" #p"" nil) program-error)
+++  t)
+++
+++(deftest pathname-match-p.error.4
+++  (check-type-error #'(lambda (x) (pathname-match-p x #p""))
+++                 #'could-be-pathname-designator)
+++  nil)
+++
+++(deftest pathname-match-p.error.5
+++  (check-type-error #'(lambda (x) (declare (optimize (safety 0))) (pathname-match-p x #p""))
+++                 #'could-be-pathname-designator)
+++  nil)
+++
+++(deftest pathname-match-p.error.6
+++  (check-type-error #'(lambda (x) (pathname-match-p #p"" x))
+++                 #'could-be-pathname-designator)
+++  nil)
+++
+++(deftest pathname-match-p.error.7
+++  (check-type-error #'(lambda (x) (declare (optimize (safety 0))) (pathname-match-p #p"" x))
+++                 #'could-be-pathname-designator)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathname-name.lsp
++@@ -0,0 +1,75 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Dec  6 14:45:16 2003
+++;;;; Contains: Tests for PATHNAME-NAME
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++(deftest pathname-name.1
+++  (loop for p in *pathnames*
+++     for name = (pathname-name p)
+++     unless (or (stringp name)
+++                (member name '(nil :wild :unspecific)))
+++     collect (list p name))
+++  nil)
+++
+++(deftest pathname-name.2
+++  (loop for p in *pathnames*
+++     for name = (pathname-name p :case :local)
+++     unless (or (stringp name)
+++                (member name '(nil :wild :unspecific)))
+++     collect (list p name))
+++  nil)
+++
+++(deftest pathname-name.3
+++  (loop for p in *pathnames*
+++     for name = (pathname-name p :case :common)
+++     unless (or (stringp name)
+++                (member name '(nil :wild :unspecific)))
+++     collect (list p name))
+++  nil)
+++
+++(deftest pathname-name.4
+++  (loop for p in *pathnames*
+++     for name = (pathname-name p :allow-other-keys nil)
+++     unless (or (stringp name)
+++                (member name '(nil :wild :unspecific)))
+++     collect (list p name))
+++  nil)
+++
+++(deftest pathname-name.5
+++  (loop for p in *pathnames*
+++     for name = (pathname-name p :foo 'bar :allow-other-keys t)
+++     unless (or (stringp name)
+++                (member name '(nil :wild :unspecific)))
+++     collect (list p name))
+++  nil)
+++
+++(deftest pathname-name.6
+++  (loop for p in *pathnames*
+++     for name = (pathname-name p :allow-other-keys t :allow-other-keys nil :foo 'bar)
+++     unless (or (stringp name)
+++                (member name '(nil :wild :unspecific)))
+++     collect (list p name))
+++  nil)
+++
+++;;; section 19.3.2.1
+++(deftest pathname-name.7
+++  (loop for p in *logical-pathnames*
+++     when (eq (pathname-name p) :unspecific)
+++     collect p)
+++  nil)
+++
+++(deftest pathname-name.8
+++  (do-special-strings (s "" nil) (pathname-name s))
+++  nil)
+++
+++(deftest pathname-name.error.1
+++  (signals-error (pathname-name) program-error)
+++  t)
+++
+++(deftest pathname-name.error.2
+++  (check-type-error #'pathname-name #'could-be-pathname-designator)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathname-type.lsp
++@@ -0,0 +1,75 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Dec  6 14:45:16 2003
+++;;;; Contains: Tests for PATHNAME-TYPE
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++(deftest pathname-type.1
+++  (loop for p in *pathnames*
+++     for type = (pathname-type p)
+++     unless (or (stringp type)
+++                (member type '(nil :wild :unspecific)))
+++     collect (list p type))
+++  nil)
+++
+++(deftest pathname-type.2
+++  (loop for p in *pathnames*
+++     for type = (pathname-type p :case :local)
+++     unless (or (stringp type)
+++                (member type '(nil :wild :unspecific)))
+++     collect (list p type))
+++  nil)
+++
+++(deftest pathname-type.3
+++  (loop for p in *pathnames*
+++     for type = (pathname-type p :case :common)
+++     unless (or (stringp type)
+++                (member type '(nil :wild :unspecific)))
+++     collect (list p type))
+++  nil)
+++
+++(deftest pathname-type.4
+++  (loop for p in *pathnames*
+++     for type = (pathname-type p :allow-other-keys nil)
+++     unless (or (stringp type)
+++                (member type '(nil :wild :unspecific)))
+++     collect (list p type))
+++  nil)
+++
+++(deftest pathname-type.5
+++  (loop for p in *pathnames*
+++     for type = (pathname-type p :foo 'bar :allow-other-keys t)
+++     unless (or (stringp type)
+++                (member type '(nil :wild :unspecific)))
+++     collect (list p type))
+++  nil)
+++
+++(deftest pathname-type.6
+++  (loop for p in *pathnames*
+++     for type = (pathname-type p :allow-other-keys t :allow-other-keys nil :foo 'bar)
+++     unless (or (stringp type)
+++                (member type '(nil :wild :unspecific)))
+++     collect (list p type))
+++  nil)
+++
+++;;; section 19.3.2.1
+++(deftest pathname-type.7
+++  (loop for p in *logical-pathnames*
+++     when (eq (pathname-type p) :unspecific)
+++     collect p)
+++  nil)
+++
+++(deftest pathname-type.8
+++  (do-special-strings (s "" nil) (pathname-type s))
+++  nil)
+++
+++(deftest pathname-type.error.1
+++  (signals-error (pathname-type) program-error)
+++  t)
+++
+++(deftest pathname-type.error.2
+++  (check-type-error #'pathname-type #'could-be-pathname-designator)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathname-version.lsp
++@@ -0,0 +1,40 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Dec  6 14:45:16 2003
+++;;;; Contains: Tests for PATHNAME-VERSION
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++(deftest pathname-version.1
+++  (loop for p in *pathnames*
+++     for version = (pathname-version p)
+++     unless (or (integerp version) (symbolp version))
+++     collect (list p version))
+++  nil)
+++
+++;;; section 19.3.2.1
+++(deftest pathname-version.2
+++  (loop for p in *logical-pathnames*
+++     when (eq (pathname-version p) :unspecific)
+++     collect p)
+++  nil)
+++
+++(deftest pathname-version.3
+++  (do-special-strings (s "" nil) (pathname-version s))
+++  nil)
+++
+++(deftest pathname-version.error.1
+++  (signals-error (pathname-version) program-error)
+++  t)
+++
+++(deftest pathname-version.error.2
+++  (signals-error (pathname-version *default-pathname-defaults* nil)
+++              program-error)
+++  t)
+++
+++(deftest pathname-version.error.3
+++  (check-type-error #'pathname-version #'could-be-pathname-designator)
+++  nil)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathname.lsp
++@@ -0,0 +1,88 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Nov 29 05:06:57 2003
+++;;;; Contains: Tests of the function PATHNAME
+++
+++(in-package :cl-test)
+++
+++(deftest pathname.1
+++  (loop for x in *pathnames*
+++     always (eq x (pathname x)))
+++  t)
+++
+++(deftest pathname.2
+++  (equalt #p"ansi-aux.lsp" (pathname "ansi-aux.lsp"))
+++  t)
+++
+++(deftest pathname.3
+++  (let ((s (open "ansi-aux.lsp" :direction :input)))
+++    (prog1 (equalt (truename (pathname s)) (truename #p"ansi-aux.lsp"))
+++      (close s)))
+++  t)
+++
+++(deftest pathname.4
+++  (let ((s (open "ansi-aux.lsp" :direction :input)))
+++    (close s)
+++    (equalt (truename (pathname s)) (truename #p"ansi-aux.lsp")))
+++  t)
+++
+++(deftest pathname.5
+++  (loop for x in *logical-pathnames*
+++     always (eq x (pathname x)))
+++  t)
+++
+++(deftest pathname.6
+++  (equalt #p"ansi-aux.lsp"
+++       (pathname (make-array 12 :initial-contents "ansi-aux.lsp"
+++                             :element-type 'base-char)))
+++  t)
+++
+++(deftest pathname.7
+++  (equalt #p"ansi-aux.lsp"
+++       (pathname (make-array 15 :initial-contents "ansi-aux.lspXXX"
+++                             :element-type 'base-char
+++                             :fill-pointer 12)))
+++  t)
+++
+++(deftest pathname.8
+++  (equalt #p"ansi-aux.lsp"
+++       (pathname (make-array 12 :initial-contents "ansi-aux.lsp"
+++                             :element-type 'base-char
+++                             :adjustable t)))
+++  t)
+++
+++(deftest pathname.9
+++  (equalt #p"ansi-aux.lsp"
+++       (pathname (make-array 15 :initial-contents "ansi-aux.lspXXX"
+++                             :element-type 'character
+++                             :fill-pointer 12)))
+++  t)
+++
+++(deftest pathname.10
+++  (equalt #p"ansi-aux.lsp"
+++       (pathname (make-array 12 :initial-contents "ansi-aux.lsp"
+++                             :element-type 'character
+++                             :adjustable t)))
+++  t)
+++
+++(deftest pathname.11
+++  (loop for etype in '(standard-char base-char character)
+++     collect
+++     (equalt #p"ansi-aux.lsp"
+++             (pathname
+++              (let* ((s (make-array 15 :initial-contents "XXansi-aux.lspX"
+++                                    :element-type etype)))
+++                (make-array 12 :element-type etype
+++                            :displaced-to s
+++                            :displaced-index-offset 2)))))
+++  (t t t))
+++
+++;;; Error tests
+++
+++(deftest pathname.error.1
+++  (signals-error (pathname) program-error)
+++  t)
+++
+++(deftest pathname.error.2
+++  (signals-error (pathname (first *pathnames*) nil) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathnamep.lsp
++@@ -0,0 +1,31 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Dec  6 10:26:45 2003
+++;;;; Contains: Tests of PATHNAMEP
+++
+++(in-package :cl-test)
+++
+++(deftest pathnamep.1
+++  (check-type-predicate #'pathnamep 'pathname)
+++  0)
+++
+++(deftest pathnamep.2
+++  (check-predicate #'(lambda (x) (eql (length (multiple-value-list (pathnamep x))) 1)))
+++  nil)
+++
+++(deftest pathnamep.3
+++  (check-predicate (typef '(not logical-pathname)) #'pathnamep)
+++  nil)
+++
+++(deftest pathnamep.error.1
+++  (signals-error (pathnamep) program-error)
+++  t)
+++
+++(deftest pathnamep.error.2
+++  (signals-error (pathnamep nil nil) program-error)
+++  t)
+++
+++(deftest pathnamep.error.3
+++  (signals-error (pathnamep *default-pathname-defaults* nil)
+++              program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathnames-aux.lsp
++@@ -0,0 +1,25 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Dec  6 15:05:05 2003
+++;;;; Contains: Functions associated with pathname tests
+++
+++(in-package :cl-test)
+++
+++(defun could-be-pathname-designator (x)
+++  (or (stringp x)
+++      (pathnamep x)
+++      (typep x 'file-stream)
+++      (and (typep x 'synonym-stream)
+++        (could-be-pathname-designator
+++         (symbol-value
+++          (synonym-stream-symbol x))))))
+++
+++(defun explode-pathname (pn)
+++  (list
+++   :host   (pathname-host pn)
+++   :device (pathname-device pn)
+++   :directory (pathname-directory pn)
+++   :name   (pathname-name pn)
+++   :type   (pathname-type pn)
+++   :version (pathname-version pn)))
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/pathnames.lsp
++@@ -0,0 +1,19 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Nov 29 04:21:53 2003
+++;;;; Contains: Various tests on pathnames
+++
+++(in-package :cl-test)
+++
+++(deftest pathnames-print-and-read-properly
+++  (with-standard-io-syntax
+++   (loop
+++    for p1 in *pathnames*
+++    for s = (handler-case (write-to-string p1 :readably t)
+++                       (print-not-readable () :unreadable-error))
+++    unless (eql s :unreadable-error)
+++    append
+++    (let ((p2 (read-from-string s)))
+++     (unless (equal p1 p2)
+++       (list (list p1 s p2))))))
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/peek-char.lsp
++@@ -0,0 +1,329 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Jan 17 21:02:13 2004
+++;;;; Contains: Tests of PEEK-CHAR
+++
+++(in-package :cl-test)
+++
+++(deftest peek-char.1
+++  (with-input-from-string
+++   (*standard-input* "abc")
+++   (values
+++    (peek-char)
+++    (read-char)
+++    (read-char)
+++    (peek-char)
+++    (read-char)))
+++  #\a #\a #\b #\c #\c)
+++
+++(deftest peek-char.2
+++  (with-input-from-string
+++   (*standard-input* "   ab")
+++   (values
+++    (peek-char)
+++    (read-char)
+++    (peek-char t)
+++    (read-char)
+++    (peek-char t)
+++    (read-char)))
+++  #\Space #\Space #\a #\a #\b #\b)
+++
+++(deftest peek-char.3
+++  (with-input-from-string
+++   (*standard-input* (concatenate 'string
+++                               (string #\Newline)
+++                               (string #\Newline)
+++                               "  "
+++                               (string #\Newline)
+++                               "ab"))
+++   (values
+++    (peek-char)
+++    (read-char)
+++    (peek-char t)
+++    (read-char)
+++    (peek-char t)
+++    (read-char)))
+++  #\Newline #\Newline #\a #\a #\b #\b)
+++
+++(when (name-char "Linefeed")
+++  (deftest peek-char.4
+++    (with-input-from-string
+++     (*standard-input* (concatenate 'string
+++                                 (string (name-char "Linefeed"))
+++                                 (string (name-char "Linefeed"))
+++                                 "abc"))
+++     (values
+++      (peek-char)
+++      (read-char)
+++      (peek-char t)
+++      (read-char)))
+++    #.(name-char "Linefeed")
+++    #.(name-char "Linefeed")
+++    #\a #\a))
+++
+++(when (name-char "Page")
+++  (deftest peek-char.5
+++    (with-input-from-string
+++     (*standard-input* (concatenate 'string
+++                                 (string (name-char "Page"))
+++                                 (string (name-char "Page"))
+++                                 "abc"))
+++     (values
+++      (peek-char)
+++      (read-char)
+++      (peek-char t)
+++      (read-char)))
+++    #.(name-char "Page")
+++    #.(name-char "Page")
+++    #\a #\a))
+++
+++(when (name-char "Tab")
+++  (deftest peek-char.6
+++    (with-input-from-string
+++     (*standard-input* (concatenate 'string
+++                                 (string (name-char "Tab"))
+++                                 (string (name-char "Tab"))
+++                                 "abc"))
+++     (values
+++      (peek-char)
+++      (read-char)
+++      (peek-char t)
+++      (read-char)))
+++    #.(name-char "Tab")
+++    #.(name-char "Tab")
+++    #\a #\a))
+++
+++(when (name-char "Return")
+++  (deftest peek-char.7
+++    (with-input-from-string
+++     (*standard-input* (concatenate 'string
+++                                 (string (name-char "Return"))
+++                                 (string (name-char "Return"))
+++                                 "abc"))
+++     (values
+++      (peek-char)
+++      (read-char)
+++      (peek-char t)
+++      (read-char)))
+++    #.(name-char "Return")
+++    #.(name-char "Return")
+++    #\a #\a))
+++
+++(deftest peek-char.8
+++  (with-input-from-string
+++   (s "a bcd")
+++   (values
+++    (peek-char nil s)
+++    (read-char s)
+++    (peek-char t s)
+++    (read-char s)
+++    (peek-char t s)
+++    (read-char s)))
+++  #\a #\a #\b #\b #\c #\c)
+++
+++(deftest peek-char.9
+++  (with-input-from-string
+++   (*standard-input* " a bCcde")
+++   (values
+++    (peek-char #\c)
+++    (read-char)
+++    (read-char)))
+++  #\c #\c #\d)
+++
+++(deftest peek-char.10
+++  (with-input-from-string
+++   (*standard-input* "  ; foo")
+++   (values
+++    (peek-char t)
+++    (read-char)))
+++  #\; #\;)
+++
+++(deftest peek-char.11
+++  (with-input-from-string
+++   (s "")
+++   (peek-char nil s nil))
+++  nil)
+++
+++(deftest peek-char.12
+++  (with-input-from-string
+++   (s "")
+++   (peek-char nil s nil 'foo))
+++  foo)
+++
+++(deftest peek-char.13
+++  (with-input-from-string
+++   (s "   ")
+++   (peek-char t s nil))
+++  nil)
+++
+++(deftest peek-char.14
+++  (with-input-from-string
+++   (s "   ")
+++   (peek-char t s nil 'foo))
+++  foo)
+++
+++(deftest peek-char.15
+++  (with-input-from-string
+++   (s "ab c d")
+++   (peek-char #\z s nil))
+++  nil)
+++
+++(deftest peek-char.16
+++  (with-input-from-string
+++   (s "ab c d")
+++   (peek-char #\z s nil 'foo))
+++  foo)
+++
+++;;; Interaction with echo streams
+++
+++(deftest peek-char.17
+++  (block done
+++    (with-input-from-string
+++     (is "ab")
+++     (with-output-to-string
+++       (os)
+++       (let ((es (make-echo-stream is os)))
+++      (let ((pos1 (file-position os)))
+++        (unless (zerop pos1) (return-from done :good))
+++        (peek-char nil es nil)
+++        (let ((pos2 (file-position os)))
+++          (return-from done
+++            (if (eql pos1 pos2)
+++                :good
+++              (list pos1 pos2)))))))))
+++  :good)
+++
+++(deftest peek-char.18
+++  (block done
+++    (with-input-from-string
+++     (is "   ab")
+++     (with-output-to-string
+++       (os)
+++       (let ((es (make-echo-stream is os)))
+++      (let ((pos1 (file-position os)))
+++        (unless (zerop pos1) (return-from done :good))
+++        (peek-char t es nil)
+++        (let ((pos2 (file-position os)))
+++          (return-from done
+++            (if (eql pos1 pos2)
+++                pos1
+++              :good))))))))
+++  :good)
+++
+++(deftest peek-char.19
+++  (block done
+++    (with-input-from-string
+++     (is "abcde")
+++     (with-output-to-string
+++       (os)
+++       (let ((es (make-echo-stream is os)))
+++      (let ((pos1 (file-position os)))
+++        (unless (zerop pos1) (return-from done :good))
+++        (peek-char #\c es nil)
+++        (let ((pos2 (file-position os)))
+++          (return-from done
+++            (if (eql pos1 pos2)
+++                pos1
+++              :good))))))))
+++  :good)
+++
+++;;; Interactions with the readtable
+++
+++(deftest peek-char.20
+++  (let ((*readtable* (copy-readtable)))
+++    (set-syntax-from-char #\Space #\a)
+++    (with-input-from-string
+++     (*standard-input* "  x")
+++     (values
+++      (peek-char)
+++      (read-char)
+++      (peek-char t)
+++      (read-char))))
+++  #\Space #\Space
+++  #\Space #\Space  ; *not* #\x #\x
+++  )
+++
+++(deftest peek-char.21
+++  (let ((*readtable* (copy-readtable)))
+++    (set-syntax-from-char #\x #\Space)
+++    (with-input-from-string
+++     (*standard-input* "xxa")
+++     (values
+++      (peek-char)
+++      (read-char)
+++      (peek-char t)
+++      (read-char))))
+++  #\x #\x
+++  #\a #\a  ; *not* #\x #\x
+++  )
+++
+++;;; Stream designators are accepted for the stream argument
+++
+++(deftest peek-char.22
+++  (with-input-from-string
+++   (is "!?*")
+++   (let ((*terminal-io* (make-two-way-stream is (make-string-output-stream))))
+++     (peek-char nil t)))
+++  #\!)
+++
+++(deftest peek-char.23
+++  (with-input-from-string
+++   (*standard-input* "345")
+++   (peek-char nil nil))
+++  #\3)
+++
+++;;; Error tests
+++
+++(deftest peek-char.error.1
+++  (signals-error
+++   (with-input-from-string
+++    (s "abc")
+++    (peek-char s nil nil nil nil 'nonsense))
+++   program-error)
+++  t)
+++
+++
+++(deftest peek-char.error.2
+++  (signals-error-always
+++   (with-input-from-string
+++    (*standard-input* "")
+++    (peek-char))
+++   end-of-file)
+++  t t)
+++
+++(deftest peek-char.error.3
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (peek-char nil s))
+++   end-of-file)
+++  t t)
+++
+++(deftest peek-char.error.4
+++  (signals-error-always
+++   (with-input-from-string
+++    (s " ")
+++    (peek-char t s))
+++   end-of-file)
+++  t t)
+++
+++(deftest peek-char.error.5
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "abcd")
+++    (peek-char #\z s))
+++   end-of-file)
+++  t t)
+++
+++;;; There was a consensus on comp.lang.lisp that the requirement
+++;;; that an end-of-file error be thrown in the following case
+++;;; is a spec bug
+++#|
+++(deftest peek-char.error.6
+++  (signals-error
+++   (with-input-from-string
+++    (s "")
+++    (peek-char nil s nil nil t))
+++   end-of-file)
+++  t)
+++|#
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/probe-file.lsp
++@@ -0,0 +1,58 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Mon Jan  5 20:46:29 2004
+++;;;; Contains: Tests of PROBE-FILE
+++
+++(in-package :cl-test)
+++
+++(deftest probe-file.1
+++  (probe-file #p"nonexistent")
+++  nil)
+++
+++(deftest probe-file.2
+++  (let ((s (open #p"probe-file.lsp" :direction :input)))
+++    (prog1
+++     (equalpt (truename #p"probe-file.lsp")
+++              (probe-file s))
+++      (close s)))
+++  t)
+++
+++(deftest probe-file.3
+++  (let ((s (open #p"probe-file.lsp" :direction :input)))
+++    (close s)
+++    (equalpt (truename #p"probe-file.lsp")
+++          (probe-file s)))
+++  t)
+++
+++(deftest probe-file.4
+++  (equalpt (truename #p"probe-file.lsp")
+++        (probe-file "CLTEST:PROBE-FILE.LSP"))
+++  t)
+++
+++;;; Specialized string tests
+++
+++(deftest probe-file.5
+++  (do-special-strings
+++   (str "probe-file.lsp" nil)
+++   (let ((s (open str :direction :input)))
+++     (assert (equalpt (truename #p"probe-file.lsp") (probe-file s)))
+++     (close s)))
+++  nil)
+++       
+++;;; Error tests
+++
+++(deftest probe-file.error.1
+++  (signals-error (probe-file) program-error)
+++  t)
+++
+++(deftest probe-file.error.2
+++  (signals-error (probe-file #p"probe-file.lsp" nil) program-error)
+++  t)
+++
+++(deftest probe-file.error.3
+++  (signals-error-always (probe-file (make-pathname :name :wild)) file-error)
+++  t t)
+++
+++(deftest probe-file.error.4
+++  (signals-error-always (probe-file "CLTEST:*.FOO") file-error)
+++  t t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/read-byte.lsp
++@@ -0,0 +1,194 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Jan 17 17:30:49 2004
+++;;;; Contains: Tests of READ-BYTE, WRITE-BYTE
+++
+++(in-package :cl-test)
+++
+++(deftest read-byte.1
+++  (let ((s (open "foo.txt"
+++              :direction :output
+++              :if-exists :supersede
+++              :element-type '(unsigned-byte 8))))
+++    (values
+++     (write-byte 17 s)
+++     (close s)
+++     (progn
+++       (setq s (open "foo.txt"
+++                  :direction :input
+++                  :element-type '(unsigned-byte 8)))
+++       (read-byte s))
+++     (close s)))
+++  17 t 17 t)
+++
+++(deftest read-byte.2
+++  (let ((s (open "foo.txt"
+++              :direction :output
+++              :if-exists :supersede
+++              :element-type '(unsigned-byte 8))))
+++    (values
+++     (close s)
+++     (progn
+++        (setq s (open "foo.txt"
+++                  :direction :input
+++                  :element-type '(unsigned-byte 8)))
+++     (read-byte s nil 'foo))
+++     (read-byte s nil)
+++     (close s)))
+++  t foo nil t)
+++
+++(deftest read-byte.3
+++  (loop with b1 = 0
+++     and b2 = 0
+++     for i from 1 to 32
+++     do (let ((s (open "foo.txt"
+++                       :direction :output
+++                       :if-exists :supersede
+++                       :element-type `(unsigned-byte ,i))))
+++          (write-byte (1- (ash 1 i)) s)
+++          (write-byte 1 s)
+++          (close s))
+++     unless (let ((s (open "foo.txt"
+++                           :direction :input
+++                           :element-type `(unsigned-byte ,i))))
+++              (prog1
+++                (and (eql (setq b1 (read-byte s)) (1- (ash 1 i)))
+++                     (eql (setq b2 (read-byte s)) 1))
+++                (close s)))
+++     collect (list i b1 b2))
+++  nil)
+++
+++(deftest read-byte.4
+++  (loop with b1 = 0
+++     and b2 = 0
+++     for i from 33 to 200 by 7
+++     do (let ((s (open "foo.txt"
+++                       :direction :output
+++                       :if-exists :supersede
+++                       :element-type `(unsigned-byte ,i))))
+++          (write-byte (1- (ash 1 i)) s)
+++          (write-byte 1 s)
+++          (close s))
+++     unless (let ((s (open "foo.txt"
+++                           :direction :input
+++                           :element-type `(unsigned-byte ,i))))
+++              (prog1
+++                  (and (eql (setq b1 (read-byte s)) (1- (ash 1 i)))
+++                       (eql (setq b2 (read-byte s)) 1))
+++                (close s)))
+++     collect (list i b1 b2))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest read-byte.error.1
+++  (signals-error (read-byte) program-error)
+++  t)
+++
+++(deftest read-byte.error.2
+++  (progn
+++    (let ((s (open "foo.txt"
+++                :direction :output
+++                :if-exists :supersede
+++               :element-type `(unsigned-byte 8))))
+++      (close s))
+++    (signals-error
+++     (let ((s (open "foo.txt"
+++                :direction :input
+++                :element-type '(unsigned-byte 8))))
+++       (read-byte s))
+++     end-of-file))
+++  t)
+++
+++(deftest read-byte.error.3
+++  (progn
+++    (let ((s (open "foo.txt"
+++                :direction :output
+++                :if-exists :supersede)))
+++      (close s))
+++    (signals-error
+++     (let ((s (open "foo.txt" :direction :input)))
+++       (unwind-protect
+++        (read-byte s)
+++      (close s)))
+++     error))
+++  t)
+++
+++(deftest read-byte.error.4
+++  (signals-error-always
+++   (progn
+++     (let ((s (open "foo.txt"
+++                 :direction :output
+++                 :if-exists :supersede
+++                 :element-type '(unsigned-byte 8))))
+++       (close s))
+++     (let ((s (open "foo.txt"
+++                 :direction :input
+++                 :element-type '(unsigned-byte 8))))
+++       (unwind-protect
+++        (read-byte s t)
+++      (close s))))
+++   end-of-file)
+++  t t)
+++
+++(deftest read-byte.error.5
+++  (check-type-error #'read-byte #'streamp)
+++  nil)
+++
+++(deftest read-byte.error.6
+++  (progn
+++    (let ((s (open "foo.txt"
+++                :direction :output
+++                :if-exists :supersede
+++               :element-type '(unsigned-byte 8))))
+++      (close s))
+++    (signals-error
+++     (let ((s (open "foo.txt"
+++                :direction :input
+++                :element-type '(unsigned-byte 8))))
+++       (unwind-protect
+++        (read-byte s t t nil)
+++      (close s)))
+++     program-error))
+++  t)
+++
+++       
+++(deftest write-byte.error.1
+++  (signals-error (write-byte) program-error)
+++  t)
+++
+++(deftest write-byte.error.2
+++  (signals-error (write-byte 0) program-error)
+++  t)
+++
+++(deftest write-byte.error.3
+++  (signals-error
+++   (let ((s (open "foo.txt"
+++               :direction :output
+++               :if-exists :supersede
+++               :element-type '(unsigned-byte 8))))
+++     (unwind-protect
+++      (write 1 s nil)
+++       (close s)))
+++   program-error)
+++  t)
+++
+++(deftest write-byte.error.4
+++  (check-type-error #'(lambda (x) (write-byte 0 x)) #'streamp)
+++  nil)
+++
+++(deftest write-byte.error.5
+++   (signals-error
+++    (let ((s (open "foo.txt"
+++                :direction :output
+++                :if-exists :supersede)))
+++      (unwind-protect
+++       (write 1 s)
+++     (close s)))
+++    error)
+++   t)
+++
+++
+++
+++    
+++    
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/read-char-no-hang.lsp
++@@ -0,0 +1,123 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Jan 18 20:32:38 2004
+++;;;; Contains: Tests of READ-CHAR-NO-HANG
+++
+++(in-package :cl-test)
+++
+++(deftest read-char-no-hang.1
+++  (with-input-from-string
+++   (*standard-input* "a")
+++   (read-char-no-hang))
+++  #\a)
+++
+++(deftest read-char-no-hang.2
+++  (with-input-from-string
+++   (*standard-input* "abc")
+++   (values
+++    (read-char-no-hang)
+++    (read-char-no-hang)
+++    (read-char-no-hang)))
+++  #\a #\b #\c)
+++
+++(when (code-char 0)
+++  (deftest read-char-no-hang.3
+++    (with-input-from-string
+++     (*standard-input* (concatenate 'string
+++                                 "a"
+++                                 (string (code-char 0))
+++                                 "b"))
+++     (values
+++      (read-char-no-hang)
+++      (read-char-no-hang)
+++      (read-char-no-hang)))
+++    #\a #.(code-char 0) #\b))
+++
+++(deftest read-char-no-hang.4
+++  (with-input-from-string
+++   (s "abc")
+++   (values
+++    (read-char-no-hang s)
+++    (read-char-no-hang s)
+++    (read-char-no-hang s)))
+++  #\a #\b #\c)
+++
+++(deftest read-char-no-hang.5
+++  (with-input-from-string
+++   (s "")
+++   (read-char-no-hang s nil))
+++  nil)
+++
+++(deftest read-char-no-hang.6
+++  (with-input-from-string
+++   (s "")
+++   (read-char-no-hang s nil 'foo))
+++  foo)
+++
+++(deftest read-char-no-hang.7
+++  (with-input-from-string
+++   (s "abc")
+++   (values
+++    (read-char-no-hang s nil nil)
+++    (read-char-no-hang s nil nil)
+++    (read-char-no-hang s nil nil)))
+++  #\a #\b #\c)
+++
+++(deftest read-char-no-hang.8
+++  (with-input-from-string
+++   (s "abc")
+++   (values
+++    (read-char-no-hang s nil t)
+++    (read-char-no-hang s nil t)
+++    (read-char-no-hang s nil t)))
+++  #\a #\b #\c)
+++
+++(deftest read-char-no-hang.9
+++  (with-input-from-string
+++   (is "!?*")
+++   (let ((*terminal-io* (make-two-way-stream is (make-string-output-stream))))
+++     (read-char-no-hang t)))
+++  #\!)
+++
+++(deftest read-char-no-hang.10
+++  (with-input-from-string
+++   (*standard-input* "345")
+++   (read-char-no-hang nil))
+++  #\3)
+++
+++;;; Need a test of the non-hanging.
+++;;; This is hard to do portably.
+++
+++;;; Error tests
+++
+++(deftest read-char-no-hang.error.1
+++  (signals-error
+++   (with-input-from-string
+++    (s "abc")
+++    (read-char-no-hang s nil nil nil nil))
+++   program-error)
+++  t)
+++
+++(deftest read-char-no-hang.error.2
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (read-char-no-hang s))
+++   end-of-file)
+++  t t)
+++
+++(deftest read-char-no-hang.error.3
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (read-char-no-hang s t))
+++   end-of-file)
+++  t t)
+++
+++(deftest read-char-no-hang.error.4
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (read-char-no-hang s t t))
+++   end-of-file)
+++  t t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/read-char.lsp
++@@ -0,0 +1,121 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Jan 18 08:53:56 2004
+++;;;; Contains: Tests of READ-CHAR
+++
+++(in-package :cl-test)
+++
+++(deftest read-char.1
+++  (with-input-from-string
+++   (*standard-input* "a")
+++   (read-char))
+++  #\a)
+++
+++(deftest read-char.2
+++  (with-input-from-string
+++   (*standard-input* "abc")
+++   (values
+++    (read-char)
+++    (read-char)
+++    (read-char)))
+++  #\a #\b #\c)
+++
+++(when (code-char 0)
+++  (deftest read-char.3
+++    (with-input-from-string
+++     (*standard-input* (concatenate 'string
+++                                 "a"
+++                                 (string (code-char 0))
+++                                 "b"))
+++     (values
+++      (read-char)
+++      (read-char)
+++      (read-char)))
+++    #\a #.(code-char 0) #\b))
+++
+++(deftest read-char.4
+++  (with-input-from-string
+++   (s "abc")
+++   (values
+++    (read-char s)
+++    (read-char s)
+++    (read-char s)))
+++  #\a #\b #\c)
+++
+++(deftest read-char.5
+++  (with-input-from-string
+++   (s "")
+++   (read-char s nil))
+++  nil)
+++
+++(deftest read-char.6
+++  (with-input-from-string
+++   (s "")
+++   (read-char s nil 'foo))
+++  foo)
+++
+++(deftest read-char.7
+++  (with-input-from-string
+++   (s "abc")
+++   (values
+++    (read-char s nil nil)
+++    (read-char s nil nil)
+++    (read-char s nil nil)))
+++  #\a #\b #\c)
+++
+++(deftest read-char.8
+++  (with-input-from-string
+++   (s "abc")
+++   (values
+++    (read-char s nil t)
+++    (read-char s nil t)
+++    (read-char s nil t)))
+++  #\a #\b #\c)
+++
+++(deftest read-char.9
+++  (with-input-from-string
+++   (is "!?*")
+++   (let ((*terminal-io* (make-two-way-stream is (make-string-output-stream))))
+++     (read-char t)))
+++  #\!)
+++
+++(deftest read-char.10
+++  (with-input-from-string
+++   (*standard-input* "345")
+++   (read-char nil))
+++  #\3)
+++
+++
+++;;; Error tests
+++
+++(deftest read-char.error.1
+++  (signals-error
+++   (with-input-from-string
+++    (s "abc")
+++    (read-char s nil nil nil nil))
+++   program-error)
+++  t)
+++
+++(deftest read-char.error.2
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (read-char s))
+++   end-of-file)
+++  t t)
+++
+++(deftest read-char.error.3
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (read-char s t))
+++   end-of-file)
+++  t t)
+++
+++(deftest read-char.error.4
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (read-char s t t))
+++   end-of-file)
+++  t t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/read-line.lsp
++@@ -0,0 +1,104 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Jan 18 20:53:59 2004
+++;;;; Contains: Tests of READ-LINE
+++
+++(in-package :cl-test)
+++
+++(deftest read-line.1
+++  (with-input-from-string
+++   (*standard-input* " abcd ")
+++   (let ((vals (multiple-value-list (read-line))))
+++     (assert (= (length vals) 2))
+++     (values (first vals) (notnot (second vals)))))
+++  " abcd " t)
+++
+++(deftest read-line.2
+++  (with-input-from-string
+++   (*standard-input* (string #\Newline))
+++   (read-line))
+++  "" nil)
+++
+++(deftest read-line.3
+++  (with-input-from-string
+++   (s (concatenate 'string "abc" (string #\Newline)))
+++   (read-line s))
+++  "abc" nil)
+++
+++(deftest read-line.4
+++  (with-input-from-string
+++   (s "")
+++   (let ((vals (multiple-value-list (read-line s nil))))
+++     (assert (= (length vals) 2))
+++     (values (first vals) (notnot (second vals)))))
+++  nil t)
+++
+++(deftest read-line.5
+++  (with-input-from-string
+++   (s "")
+++   (let ((vals (multiple-value-list (read-line s nil 'foo))))
+++     (assert (= (length vals) 2))
+++     (values (first vals) (notnot (second vals)))))
+++  foo t)
+++
+++(deftest read-line.6
+++  (with-input-from-string
+++   (s " abcd ")
+++   (let ((vals (multiple-value-list (read-line s t nil t))))
+++     (assert (= (length vals) 2))
+++     (values (first vals) (notnot (second vals)))))
+++  " abcd " t)
+++
+++(deftest read-line.7
+++  (with-input-from-string
+++   (is "abc")
+++   (let ((*terminal-io* (make-two-way-stream is *standard-output*)))
+++     (let ((vals (multiple-value-list (read-line t))))
+++       (assert (= (length vals) 2))
+++       (assert (second vals))
+++       (first vals))))
+++  "abc")
+++
+++(deftest read-line.8
+++  (with-input-from-string
+++   (*standard-input* "abc")
+++   (let ((vals (multiple-value-list (read-line nil))))
+++     (assert (= (length vals) 2))
+++     (assert (second vals))
+++     (first vals)))
+++  "abc")
+++
+++;;; Error tests
+++
+++(deftest read-line.error.1
+++  (signals-error
+++   (with-input-from-string
+++    (s (concatenate 'string "abc" (string #\Newline)))
+++    (read-line s t nil nil nil))
+++   program-error)
+++  t)
+++
+++(deftest read-line.error.2
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (read-line s))
+++   end-of-file)
+++  t t)
+++
+++(deftest read-line.error.3
+++  (signals-error-always
+++   (with-input-from-string
+++    (*standard-input* "")
+++    (read-line))
+++   end-of-file)
+++  t t)
+++
+++(deftest read-line.error.4
+++  (signals-error-always
+++   (with-input-from-string
+++    (s "")
+++    (read-line s t))
+++   end-of-file)
+++  t t)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/read-sequence.lsp
++@@ -0,0 +1,300 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Mon Jan 19 06:55:04 2004
+++;;;; Contains: Tests of READ-SEQUENCE
+++
+++(in-package :cl-test)
+++
+++;;; Read into a string
+++
+++(defmacro def-read-sequence-test (name init args input &rest expected)
+++  `(deftest ,name
+++     (let ((s ,init))
+++       (with-input-from-string
+++     (is ,input)
+++     (values
+++      (read-sequence s is ,@args)
+++      s)))
+++     ,@expected))
+++
+++(def-read-sequence-test read-sequence.string.1 (copy-seq "     ")
+++  () "abcdefghijk" 5 "abcde")
+++
+++(def-read-sequence-test read-sequence.string.2 (copy-seq "     ")
+++  () "abc" 3 "abc  ")
+++
+++(def-read-sequence-test read-sequence.string.3 (copy-seq "     ")
+++  (:start 1) "abcdefghijk" 5 " abcd")
+++
+++(def-read-sequence-test read-sequence.string.4 (copy-seq "     ")
+++  (:end 3) "abcdefghijk" 3 "abc  ")
+++
+++(def-read-sequence-test read-sequence.string.5 (copy-seq "     ")
+++  (:start 1 :end 4) "abcdefghijk" 4 " abc ")
+++
+++(def-read-sequence-test read-sequence.string.6 (copy-seq "     ")
+++  (:start 0 :end 0) "abcdefghijk" 0 "     ")
+++
+++(def-read-sequence-test read-sequence.string.7 (copy-seq "     ")
+++  (:end nil) "abcdefghijk" 5 "abcde")
+++
+++(def-read-sequence-test read-sequence.string.8 (copy-seq "     ")
+++  (:allow-other-keys nil) "abcdefghijk" 5 "abcde")
+++
+++(def-read-sequence-test read-sequence.string.9 (copy-seq "     ")
+++  (:allow-other-keys t :foo 'bar) "abcdefghijk" 5 "abcde")
+++
+++(def-read-sequence-test read-sequence.string.10 (copy-seq "     ")
+++  (:foo 'bar :allow-other-keys 'x) "abcdefghijk" 5 "abcde")
+++
+++(def-read-sequence-test read-sequence.string.11 (copy-seq "     ")
+++  (:foo 'bar :allow-other-keys 'x :allow-other-keys nil)
+++  "abcdefghijk" 5 "abcde")
+++
+++(def-read-sequence-test read-sequence.string.12 (copy-seq "     ")
+++  (:end 5 :end 3 :start 0 :start 1) "abcdefghijk" 5 "abcde")
+++
+++;;; Read into a base string
+++
+++(def-read-sequence-test read-sequence.base-string.1
+++  (make-array 5 :element-type 'base-char)
+++  () "abcdefghijk" 5 "abcde")
+++
+++(def-read-sequence-test read-sequence.base-string.2
+++  (make-array 5 :element-type 'base-char :initial-element #\Space)
+++  () "abc" 3 "abc  ")
+++
+++(def-read-sequence-test read-sequence.base-string.3
+++  (make-array 5 :element-type 'base-char :initial-element #\Space)
+++  (:start 1) "abcdefghijk" 5 " abcd")
+++
+++(def-read-sequence-test read-sequence.base-string.4
+++  (make-array 5 :element-type 'base-char :initial-element #\Space)
+++  (:end 3) "abcdefghijk" 3 "abc  ")
+++
+++(def-read-sequence-test read-sequence.base-string.5
+++  (make-array 5 :element-type 'base-char :initial-element #\Space)
+++  (:start 1 :end 4) "abcdefghijk" 4 " abc ")
+++
+++(def-read-sequence-test read-sequence.base-string.6
+++  (make-array 5 :element-type 'base-char :initial-element #\Space)
+++  (:start 0 :end 0) "abcdefghijk" 0 "     ")
+++
+++(def-read-sequence-test read-sequence.base-string.7
+++  (make-array 5 :element-type 'base-char :initial-element #\Space)
+++  (:end nil) "abcdefghijk" 5 "abcde")
+++
+++;;; Read into a list
+++
+++(def-read-sequence-test read-sequence.list.1 (make-list 5)
+++  () "abcdefghijk" 5 (#\a #\b #\c #\d #\e))
+++
+++(def-read-sequence-test read-sequence.list.2 (make-list 5)
+++  () "abc" 3 (#\a #\b #\c nil nil))
+++
+++(def-read-sequence-test read-sequence.list.3 (make-list 5)
+++  (:start 1) "abcdefghijk" 5 (nil #\a #\b #\c #\d))
+++
+++(def-read-sequence-test read-sequence.list.4 (make-list 5)
+++  (:end 3) "abcdefghijk" 3 (#\a #\b #\c nil nil))
+++
+++(def-read-sequence-test read-sequence.list.5 (make-list 5)
+++  (:end 4 :start 1) "abcdefghijk" 4 (nil #\a #\b #\c nil))
+++
+++(def-read-sequence-test read-sequence.list.6 (make-list 5)
+++  (:start 0 :end 0) "abcdefghijk" 0 (nil nil nil nil nil))
+++
+++(def-read-sequence-test read-sequence.list.7 (make-list 5)
+++  (:end nil) "abcdefghijk" 5 (#\a #\b #\c #\d #\e))
+++
+++;;; Read into a vector
+++
+++(def-read-sequence-test read-sequence.vector.1
+++  (vector nil nil nil nil nil)
+++  () "abcdefghijk" 5 #(#\a #\b #\c #\d #\e))
+++
+++(def-read-sequence-test read-sequence.vector.2
+++  (vector nil nil nil nil nil)
+++  () "abc" 3 #(#\a #\b #\c nil nil))
+++
+++(def-read-sequence-test read-sequence.vector.3
+++  (vector nil nil nil nil nil)
+++  (:start 2) "abcdefghijk" 5 #(nil nil #\a #\b #\c))
+++
+++(def-read-sequence-test read-sequence.vector.4
+++  (vector nil nil nil nil nil)
+++  (:start 1 :end 4) "abcdefghijk" 4 #(nil #\a #\b #\c nil))
+++
+++(def-read-sequence-test read-sequence.vector.5
+++  (vector nil nil nil nil nil)
+++  (:end 2) "abcdefghijk" 2 #(#\a #\b nil nil nil))
+++
+++(def-read-sequence-test read-sequence.vector.6
+++  (vector nil nil nil nil nil)
+++  (:end 0 :start 0) "abcdefghijk" 0 #(nil nil nil nil nil))
+++
+++(def-read-sequence-test read-sequence.vector.7
+++  (vector nil nil nil nil nil)
+++  (:end nil) "abcdefghijk" 5 #(#\a #\b #\c #\d #\e))
+++
+++;;; Read into a vector with a fill pointer
+++
+++(def-read-sequence-test read-sequence.fill-vector.1
+++  (make-array 10 :initial-element nil :fill-pointer 5)
+++  () "abcdefghijk" 5 #(#\a #\b #\c #\d #\e))
+++
+++(def-read-sequence-test read-sequence.fill-vector.2
+++  (make-array 10 :initial-element nil :fill-pointer 5)
+++  () "ab" 2 #(#\a #\b nil nil nil))
+++
+++(def-read-sequence-test read-sequence.fill-vector.3
+++  (make-array 10 :initial-element nil :fill-pointer 5)
+++  () "" 0 #(nil nil nil nil nil))
+++
+++(def-read-sequence-test read-sequence.fill-vector.4
+++  (make-array 10 :initial-element nil :fill-pointer 5)
+++  (:start 2) "abcdefghijk" 5 #(nil nil #\a #\b #\c))
+++
+++(def-read-sequence-test read-sequence.fill-vector.5
+++  (make-array 10 :initial-element nil :fill-pointer 5)
+++  (:start 1 :end 4) "abcdefghijk" 4 #(nil #\a #\b #\c nil))
+++
+++(def-read-sequence-test read-sequence.fill-vector.6
+++  (make-array 10 :initial-element nil :fill-pointer 5)
+++  (:end 2) "abcdefghijk" 2 #(#\a #\b nil nil nil))
+++
+++(def-read-sequence-test read-sequence.fill-vector.7
+++  (make-array 10 :initial-element nil :fill-pointer 5)
+++  (:end 0 :start 0) "abcdefghijk" 0 #(nil nil nil nil nil))
+++
+++(def-read-sequence-test read-sequence.fill-vector.8
+++  (make-array 10 :initial-element nil :fill-pointer 5)
+++  (:end nil) "abcdefghijk" 5 #(#\a #\b #\c #\d #\e))
+++
+++;;; Nil vectors
+++
+++(deftest read-sequence.nil-vector.1
+++  :notes (:nil-vectors-are-strings)
+++  (let ((s (make-array 0 :element-type nil)))
+++    (with-input-from-string
+++     (is "abcde")
+++     (values
+++      (read-sequence s is)
+++      s)))
+++  0 "")
+++
+++;;; Read into a bit vector
+++
+++(defmacro def-read-sequence-bv-test (name init args &rest expected)
+++  `(deftest ,name
+++     ;; Create output file
+++     (progn
+++       (let (os)
+++      (unwind-protect
+++          (progn
+++            (setq os (open "temp.dat" :direction :output
+++                           :element-type '(unsigned-byte 8)
+++                           :if-exists :supersede))
+++            (loop for i in '(0 1 1 0 0 1 1 0 1 0 1 1 1 0)
+++                  do (write-byte i os)))
+++        (when os (close os))))
+++       (let (is (bv (copy-seq ,init)))
+++      (unwind-protect
+++          (progn
+++            (setq is (open "temp.dat" :direction :input
+++                           :element-type '(unsigned-byte 8)))
+++            (values
+++             (read-sequence bv is ,@args)
+++             bv))
+++        (when is (close is)))))
+++     ,@expected))
+++     
+++(def-read-sequence-bv-test read-sequence.bv.1 #*00000000000000 ()
+++  14 #*01100110101110)
+++  
+++(def-read-sequence-bv-test read-sequence.bv.2 #*00000000000000 (:start 0)
+++  14 #*01100110101110)
+++  
+++(def-read-sequence-bv-test read-sequence.bv.3 #*00000000000000 (:end 14)
+++  14 #*01100110101110)
+++  
+++(def-read-sequence-bv-test read-sequence.bv.4 #*00000000000000 (:end nil)
+++  14 #*01100110101110)
+++  
+++(def-read-sequence-bv-test read-sequence.bv.5 #*00000000000000 (:start 2)
+++  14 #*00011001101011)
+++  
+++(def-read-sequence-bv-test read-sequence.bv.6 #*00000000000000
+++  (:start 2 :end 13)
+++  13 #*00011001101010)
+++
+++(def-read-sequence-bv-test read-sequence.bv.7 #*00000000000000 (:end 6)
+++  6 #*01100100000000)
+++
+++;;; Error cases
+++
+++(deftest read-sequence.error.1
+++  (signals-error (read-sequence) program-error)
+++  t)
+++
+++(deftest read-sequence.error.2
+++  (signals-error (read-sequence (make-string 10)) program-error)
+++  t)
+++
+++(deftest read-sequence.error.3
+++  (signals-error
+++   (read-sequence (make-string 5) (make-string-input-stream "abc") :start)
+++   program-error)
+++  t)
+++
+++(deftest read-sequence.error.4
+++  (signals-error
+++   (read-sequence (make-string 5) (make-string-input-stream "abc") :foo 1)
+++   program-error)
+++  t)
+++
+++(deftest read-sequence.error.5
+++  (signals-error
+++   (read-sequence (make-string 5) (make-string-input-stream "abc")
+++               :allow-other-keys nil :bar 2)
+++   program-error)
+++  t)
+++
+++(deftest read-sequence.error.6
+++  (check-type-error #'(lambda (x) (read-sequence x (make-string-input-stream "abc")))
+++                 #'sequencep)
+++  nil)
+++
+++(deftest read-sequence.error.7
+++  (signals-error
+++   (read-sequence (cons 'a 'b) (make-string-input-stream "abc"))
+++   type-error)
+++  t)
+++
+++;;; This test appears to cause Allegro CL to crash
+++(deftest read-sequence.error.8
+++  (signals-type-error x -1
+++                   (read-sequence (make-string 3)
+++                                  (make-string-input-stream "abc")
+++                                  :start x))
+++  t)
+++
+++(deftest read-sequence.error.9
+++  (check-type-error #'(lambda (s)
+++                     (read-sequence (make-string 3) (make-string-input-stream "abc")
+++                                    :start s))
+++                 (typef 'unsigned-byte))
+++  nil)
+++
+++(deftest read-sequence.error.10
+++  (signals-type-error x -1
+++                   (read-sequence (make-string 3) (make-string-input-stream "abc")
+++                                  :end x))
+++  t)
+++
+++(deftest read-sequence.error.11
+++  (check-type-error #'(lambda (e)
+++                     (read-sequence (make-string 3) (make-string-input-stream "abc")
+++                                    :end e))
+++                 (typef '(or unsigned-byte null)))
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/rename-file.lsp
++@@ -0,0 +1,199 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Jan  8 06:22:53 2004
+++;;;; Contains: Tests for RENAME-FILE
+++
+++(in-package :cl-test)
+++
+++(deftest rename-file.1
+++  (let ((pn1 #p"file-to-be-renamed.txt")
+++     (pn2 #p"file-that-was-renamed.txt"))
+++    (delete-all-versions pn1)
+++    (delete-all-versions pn2)
+++    (with-open-file (s pn1 :direction :output) (format s "Whatever~%"))
+++    (let ((results (multiple-value-list (rename-file pn1 pn2))))
+++      (destructuring-bind (defaulted-new-name old-truename new-truename)
+++       results
+++       (values
+++        (=t (length results) 3)
+++        (probe-file pn1)
+++        (notnot (probe-file pn2))
+++        (list (notnot (pathnamep defaulted-new-name))
+++              (notnot (pathnamep old-truename))
+++              (notnot (pathnamep new-truename))
+++              (typep old-truename 'logical-pathname)
+++              (typep new-truename 'logical-pathname))
+++        (notnot (probe-file defaulted-new-name))
+++        (probe-file old-truename)
+++        (notnot (probe-file new-truename))))))
+++  t nil t (t t t nil nil) t nil t)
+++
+++(deftest rename-file.2
+++  (let ((pn1 "file-to-be-renamed.txt")
+++     (pn2 "file-that-was-renamed.txt"))
+++    (delete-all-versions pn1)
+++    (delete-all-versions pn2)
+++    (with-open-file (s pn1 :direction :output) (format s "Whatever~%"))
+++    (let ((results (multiple-value-list (rename-file pn1 pn2))))
+++      (destructuring-bind (defaulted-new-name old-truename new-truename)
+++       results
+++       (values
+++        (=t (length results) 3)
+++        (probe-file pn1)
+++        (notnot (probe-file pn2))
+++        (list (notnot (pathnamep defaulted-new-name))
+++              (notnot (pathnamep old-truename))
+++              (notnot (pathnamep new-truename))
+++              (typep old-truename 'logical-pathname)
+++              (typep new-truename 'logical-pathname))
+++        (notnot (probe-file defaulted-new-name))
+++        (probe-file old-truename)
+++        (notnot (probe-file new-truename))))))
+++  t nil t (t t t nil nil) t nil t)
+++
+++ (deftest rename-file.3
+++  (let* ((pn1 (make-pathname :name "file-to-be-renamed"
+++                          :type "txt"
+++                          :version :newest
+++                          :defaults *default-pathname-defaults*))
+++      (pn2 (make-pathname :name "file-that-was-renamed"))
+++      (pn3 (make-pathname :name "file-that-was-renamed"
+++                          :defaults pn1)))
+++    (delete-all-versions pn1)
+++    (delete-all-versions pn3)
+++    (with-open-file (s pn1 :direction :output) (format s "Whatever~%"))
+++    (let ((results (multiple-value-list (rename-file pn1 pn2))))
+++      (destructuring-bind (defaulted-new-name old-truename new-truename)
+++       results
+++       (values
+++        (equalpt (pathname-type pn1)
+++                 (pathname-type defaulted-new-name))
+++        (=t (length results) 3)
+++        (probe-file pn1)
+++        (notnot (probe-file pn3))
+++        (list (notnot (pathnamep defaulted-new-name))
+++              (notnot (pathnamep old-truename))
+++              (notnot (pathnamep new-truename))
+++              (typep old-truename 'logical-pathname)
+++              (typep new-truename 'logical-pathname))
+++        (notnot (probe-file defaulted-new-name))
+++        (probe-file old-truename)
+++        (notnot (probe-file new-truename))))))
+++  t t nil t (t t t nil nil) t nil t)
+++
+++(deftest rename-file.4
+++  (let ((pn1 "file-to-be-renamed.txt")
+++     (pn2 "file-that-was-renamed.txt"))
+++    (delete-all-versions pn1)
+++    (delete-all-versions pn2)
+++    (let ((s (open pn1 :direction :output)))
+++      (format s "Whatever~%")
+++      (close s)
+++      (let ((results (multiple-value-list (rename-file s pn2))))
+++     (destructuring-bind (defaulted-new-name old-truename new-truename)
+++         results
+++       (values
+++        (=t (length results) 3)
+++        (probe-file pn1)
+++        (notnot (probe-file pn2))
+++        (list (notnot (pathnamep defaulted-new-name))
+++              (notnot (pathnamep old-truename))
+++              (notnot (pathnamep new-truename))
+++              (typep old-truename 'logical-pathname)
+++              (typep new-truename 'logical-pathname))
+++        (notnot (probe-file defaulted-new-name))
+++        (probe-file old-truename)
+++        (notnot (probe-file new-truename)))))))
+++  t nil t (t t t nil nil) t nil t)
+++
+++(deftest rename-file.5
+++  (let ((pn1 "CLTEST:FILE-TO-BE-RENAMED.TXT")
+++     (pn2 "CLTEST:FILE-THAT-WAS-RENAMED.TXT"))
+++    (delete-all-versions pn1)
+++    (delete-all-versions pn2)
+++    (assert (typep (pathname pn1) 'logical-pathname))
+++    (assert (typep (pathname pn2) 'logical-pathname))
+++    (with-open-file (s pn1 :direction :output) (format s "Whatever~%"))
+++    (let ((results (multiple-value-list (rename-file pn1 pn2))))
+++      (destructuring-bind (defaulted-new-name old-truename new-truename)
+++       results
+++       (values
+++        (=t (length results) 3)
+++        (probe-file pn1)
+++        (notnot (probe-file pn2))
+++        (list (notnot (pathnamep defaulted-new-name))
+++              (notnot (pathnamep old-truename))
+++              (notnot (pathnamep new-truename))
+++              (typep old-truename 'logical-pathname)
+++              (typep new-truename 'logical-pathname))
+++        (notnot (probe-file defaulted-new-name))
+++        (probe-file old-truename)
+++        (notnot (probe-file new-truename))
+++        (notnot (typep defaulted-new-name 'logical-pathname))
+++        ))))
+++  t nil t (t t t nil nil) t nil t t)
+++
+++;;; Specialized string tests
+++
+++(deftest rename-file.6
+++  (do-special-strings
+++   (s "file-to-be-renamed.txt" nil)
+++   (let ((pn1 s)
+++      (pn2 "file-that-was-renamed.txt"))
+++     (delete-all-versions pn1)
+++     (delete-all-versions pn2)
+++     (with-open-file (s pn1 :direction :output) (format s "Whatever~%"))
+++     (let ((results (multiple-value-list (rename-file pn1 pn2))))
+++       (destructuring-bind (defaulted-new-name old-truename new-truename)
+++        results
+++      (assert
+++       (equal
+++        (list
+++         (=t (length results) 3)
+++         (probe-file pn1)
+++         (notnot (probe-file pn2))
+++         (list (notnot (pathnamep defaulted-new-name))
+++               (notnot (pathnamep old-truename))
+++               (notnot (pathnamep new-truename))
+++               (typep old-truename 'logical-pathname)
+++               (typep new-truename 'logical-pathname))
+++         (notnot (probe-file defaulted-new-name))
+++         (probe-file old-truename)
+++         (notnot (probe-file new-truename)))
+++        '(t nil t (t t t nil nil) t nil t)))))))
+++  nil)
+++
+++(deftest rename-file.7
+++  (do-special-strings
+++   (s "file-that-was-renamed.txt" nil)
+++   (let ((pn1 "file-to-be-renamed.txt")
+++      (pn2 s))
+++     (delete-all-versions pn1)
+++     (delete-all-versions pn2)
+++     (with-open-file (s pn1 :direction :output) (format s "Whatever~%"))
+++     (let ((results (multiple-value-list (rename-file pn1 pn2))))
+++       (destructuring-bind (defaulted-new-name old-truename new-truename)
+++        results
+++      (assert
+++       (equal
+++        (list
+++         (=t (length results) 3)
+++         (probe-file pn1)
+++         (notnot (probe-file pn2))
+++         (list (notnot (pathnamep defaulted-new-name))
+++               (notnot (pathnamep old-truename))
+++               (notnot (pathnamep new-truename))
+++               (typep old-truename 'logical-pathname)
+++               (typep new-truename 'logical-pathname))
+++         (notnot (probe-file defaulted-new-name))
+++         (probe-file old-truename)
+++         (notnot (probe-file new-truename)))
+++        '(t nil t (t t t nil nil) t nil t)))))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest rename-file.error.1
+++  (signals-error (rename-file) program-error)
+++  t)
+++
++--- gcl-2.6.12.orig/ansi-tests/rt.lsp
+++++ gcl-2.6.12/ansi-tests/rt.lsp
++@@ -21,81 +21,147 @@
++  |  SOFTWARE.                                                                 |
++  |----------------------------------------------------------------------------|#
++ 
++-;This is the December 19, 1990 version of the regression tester.
+++;This was the December 19, 1990 version of the regression tester, but
+++;has since been modified.
++ 
++ (in-package :regression-test)
++ 
+++(declaim (ftype (function (t) t) get-entry expanded-eval do-entries))
+++(declaim (type list *entries*))
+++(declaim (ftype (function (t &rest t) t) report-error))
+++(declaim (ftype (function (t &optional t) t) do-entry))
+++
++ (defvar *test* nil "Current test name")
++ (defvar *do-tests-when-defined* nil)
++-(defvar *entries* '(nil) "Test database")
+++(defvar *entries* (list nil) "Test database.  Has a leading dummy cell that does not contain an entry.")
+++(defvar *entries-tail* *entries* "Tail of the *entries* list")
+++(defvar *entries-table* (make-hash-table :test #'equal)
+++    "Map the names of entries to the cons cell in *entries* that precedes the one whose car is the entry.")
++ (defvar *in-test* nil "Used by TEST")
++ (defvar *debug* nil "For debugging")
++ (defvar *catch-errors* t "When true, causes errors in a test to be caught.")
++ (defvar *print-circle-on-failure* nil
++   "Failure reports are printed with *PRINT-CIRCLE* bound to this value.")
++ 
++-(defvar *compile-tests* nil "When true, compile the tests before running
++-them.")
+++(defvar *compile-tests* nil "When true, compile the tests before running them.")
+++(defvar *expanded-eval* nil "When true, convert the tests into a form that is less likely to have compiler optimizations.")
++ (defvar *optimization-settings* '((safety 3)))
++ 
+++(defvar *failed-tests* nil "After DO-TESTS, becomes the list of names of tests that have failed")
+++(defvar *passed-tests* nil "After DO-TESTS, becomes the list of names of tests that have passed")
+++
++ (defvar *expected-failures* nil
++   "A list of test names that are expected to fail.")
++ 
++-(defstruct (entry (:conc-name nil)
++-               (:type list))
++-  pend name form)
++-
++-(defmacro vals (entry) `(cdddr ,entry))
++-
++-(defmacro defn (entry) `(cdr ,entry))
+++(defvar *notes* (make-hash-table :test 'equal)
+++  "A mapping from names of notes to note objects.")
+++  
+++(defstruct (entry (:conc-name nil))
+++  pend name props form vals)
+++
+++;;; Note objects are used to attach information to tests.
+++;;; A typical use is to mark tests that depend on a particular
+++;;; part of a set of requirements, or a particular interpretation
+++;;; of the requirements.
+++
+++(defstruct note
+++  name  
+++  contents
+++  disabled ;; When true, tests with this note are considered inactive
+++  )
+++
+++;; (defmacro vals (entry) `(cdddr ,entry))
+++
+++(defmacro defn (entry)
+++  (let ((var (gensym)))
+++    `(let ((,var ,entry))
+++       (list* (name ,var) (form ,var) (vals ,var)))))
+++
+++(defun entry-notes (entry)
+++  (let* ((props (props entry))
+++      (notes (getf props :notes)))
+++    (if (listp notes)
+++     notes
+++      (list notes))))
+++
+++(defun has-disabled-note (entry)
+++  (let ((notes (entry-notes entry)))
+++    (loop for n in notes
+++       for note = (if (note-p n) n
+++                    (gethash n *notes*))
+++       thereis (and note (note-disabled note)))))
+++
+++(defun has-note (entry note)
+++  (unless (note-p note)
+++    (let ((new-note (gethash note *notes*)))
+++      (setf note new-note)))
+++  (and note (not (not (member note (entry-notes entry))))))
++ 
++ (defun pending-tests ()
++-  (do ((l (cdr *entries*) (cdr l))
++-       (r nil))
++-      ((null l) (nreverse r))
++-    (when (pend (car l))
++-      (push (name (car l)) r))))
+++  (loop for entry in (cdr *entries*)
+++     when (and (pend entry) (not (has-disabled-note entry)))
+++     collect (name entry)))
++ 
++ (defun rem-all-tests ()
++   (setq *entries* (list nil))
+++  (setq *entries-tail* *entries*)
+++  (clrhash *entries-table*)
++   nil)
++ 
++ (defun rem-test (&optional (name *test*))
++-  (do ((l *entries* (cdr l)))
++-      ((null (cdr l)) nil)
++-    (when (equal (name (cadr l)) name)
++-      (setf (cdr l) (cddr l))
++-      (return name))))
+++  (let ((pred (gethash name *entries-table*)))
+++    (when pred
+++      (if (null (cddr pred))
+++       (setq *entries-tail* pred)
+++     (setf (gethash (name (caddr pred)) *entries-table*) pred))
+++      (setf (cdr pred) (cddr pred))
+++      (remhash name *entries-table*)
+++      name)))
++ 
++ (defun get-test (&optional (name *test*))
++   (defn (get-entry name)))
++ 
++ (defun get-entry (name)
++-  (let ((entry (find name (cdr *entries*)
++-                  :key #'name
++-                  :test #'equal)))
+++  (let ((entry ;; (find name (the list (cdr *entries*))
+++            ;;     :key #'name :test #'equal)
+++      (cadr (gethash name *entries-table*))
+++      ))
++     (when (null entry)
++       (report-error t
++         "~%No test with name ~:@(~S~)."
++      name))
++     entry))
++ 
++-(defmacro deftest (name form &rest values)
++-  `(add-entry '(t ,name ,form .,values)))
+++(defmacro deftest (name &rest body)
+++  (let* ((p body)
+++      (properties
+++       (loop while (keywordp (first p))
+++             unless (cadr p)
+++             do (error "Poorly formed deftest: ~A~%"
+++                       (list* 'deftest name body))
+++             append (list (pop p) (pop p))))
+++      (form (pop p))
+++      (vals p))
+++    `(add-entry (make-entry :pend t
+++                         :name ',name
+++                         :props ',properties
+++                         :form ',form
+++                         :vals ',vals))))
++ 
++ (defun add-entry (entry)
++-  (setq entry (copy-list entry))
++-  (do ((l *entries* (cdr l))) (nil)
++-    (when (null (cdr l))
++-      (setf (cdr l) (list entry))
++-      (return nil))
++-    (when (equal (name (cadr l)) 
++-              (name entry))
++-      (setf (cadr l) entry)
+++  (setq entry (copy-entry entry))
+++  (let* ((pred (gethash (name entry) *entries-table*)))
+++    (cond
+++     (pred
+++      (setf (cadr pred) entry)
++       (report-error nil
++         "Redefining test ~:@(~S~)"
++-        (name entry))
++-      (return nil)))
+++        (name entry)))
+++     (t
+++      (setf (gethash (name entry) *entries-table*) *entries-tail*)
+++      (setf (cdr *entries-tail*) (cons entry nil))
+++      (setf *entries-tail* (cdr *entries-tail*))
+++      )))
++   (when *do-tests-when-defined*
++     (do-entry entry))
++   (setq *test* (name entry)))
++@@ -105,53 +171,59 @@ them.")
++       (apply #'format t args)
++       (if error? (throw '*debug* nil)))
++      (error? (apply #'error args))
++-     (t (apply #'warn args))))
+++     (t (apply #'warn args)))
+++  nil)
++ 
++-(defun do-test (&optional (name *test*))
++-  (do-entry (get-entry name)))
+++(defun do-test (&optional (name *test*) &rest key-args)
+++  (flet ((%parse-key-args
+++       (&key
+++        ((:catch-errors *catch-errors*) *catch-errors*)
+++        ((:compile *compile-tests*) *compile-tests*))
+++       (do-entry (get-entry name))))
+++    (apply #'%parse-key-args key-args)))
+++
+++(defun my-aref (a &rest args)
+++  (apply #'aref a args))
+++
+++(defun my-row-major-aref (a index)
+++  (row-major-aref a index))
++ 
++ (defun equalp-with-case (x y)
++   "Like EQUALP, but doesn't do case conversion of characters.
++    Currently doesn't work on arrays of dimension > 2."
++   (cond
+++   ((eq x y) t)
++    ((consp x)
++     (and (consp y)
++       (equalp-with-case (car x) (car y))
++       (equalp-with-case (cdr x) (cdr y))))
++    ((and (typep x 'array)
++       (= (array-rank x) 0))
++-    (equalp-with-case (aref x) (aref y)))
+++    (equalp-with-case (my-aref x) (my-aref y)))
++    ((typep x 'vector)
++     (and (typep y 'vector)
++       (let ((x-len (length x))
++             (y-len (length y)))
++         (and (eql x-len y-len)
++              (loop
++-              for e1 across x
++-              for e2 across y
+++              for i from 0 below x-len
+++              for e1 = (my-aref x i)
+++              for e2 = (my-aref y i)
++               always (equalp-with-case e1 e2))))))
++    ((and (typep x 'array)
++       (typep y 'array)
++       (not (equal (array-dimensions x)
++                   (array-dimensions y))))
++     nil)
++-   #|
++-   ((and (typep x 'array)
++-      (= (array-rank x) 2))
++-    (let ((dim (array-dimensions x)))
++-      (loop for i from 0 below (first dim)
++-         always (loop for j from 0 below (second dim)
++-                      always (equalp-with-case (aref x i j)
++-                                               (aref y i j))))))
++-   |#
++ 
++    ((typep x 'array)
++     (and (typep y 'array)
++       (let ((size (array-total-size x)))
++         (loop for i from 0 below size
++-              always (equalp-with-case (row-major-aref x i)
++-                                       (row-major-aref y i))))))
++-
+++              always (equalp-with-case (my-row-major-aref x i)
+++                                       (my-row-major-aref y i))))))
+++   ((typep x 'pathname)
+++    (equal x y))
++    (t (eql x y))))
++ 
++ (defun do-entry (entry &optional
++@@ -165,49 +237,110 @@ them.")
++         r)
++       ;; (declare (special *break-on-warnings*))
++ 
++-      (flet ((%do
++-           ()
++-           (setf r
++-                 (multiple-value-list
++-                  (if *compile-tests*
++-                      (funcall (compile
++-                                nil
++-                                `(lambda ()
++-                                   (declare
++-                                    (optimize ,@*optimization-settings*))
++-                                   ,(form entry))))
++-                    (eval (form entry)))))))
++-     (block aborted
++-       (if *catch-errors*
++-           (handler-bind (#-ecl (style-warning #'muffle-warning)
++-                                (error #'(lambda (c)
++-                                           (setf aborted t)
++-                                           (setf r (list c))
++-                                           (return-from aborted nil))))
++-                         (%do))
++-         (%do))))
++-      
+++      (block aborted
+++     (setf r
+++           (flet ((%do ()
+++                       (handler-bind
+++                        #-sbcl nil
+++                        #+sbcl ((sb-ext:code-deletion-note #'(lambda (c)
+++                                                               (if (has-note entry :do-not-muffle)
+++                                                                   nil
+++                                                                 (muffle-warning c)))))
+++                        (cond
+++                         (*compile-tests*
+++                          (multiple-value-list
+++                           (funcall (compile
+++                                     nil
+++                                     `(lambda ()
+++                                        (declare
+++                                         (optimize ,@*optimization-settings*))
+++                                        ,(form entry))))))
+++                         (*expanded-eval*
+++                          (multiple-value-list
+++                           (expanded-eval (form entry))))
+++                         (t
+++                          (multiple-value-list
+++                           (eval (form entry))))))))
+++             (if *catch-errors*
+++                 (handler-bind
+++                  (#-ecl (style-warning #'(lambda (c) (if (has-note entry :do-not-muffle-warnings)
+++                                                          c
+++                                                        (muffle-warning c))))
+++                         (error #'(lambda (c)
+++                                    (setf aborted t)
+++                                    (setf r (list c))
+++                                    (return-from aborted nil))))
+++                  (%do))
+++               (%do)))))
+++
++       (setf (pend entry)
++          (or aborted
++              (not (equalp-with-case r (vals entry)))))
+++      
++       (when (pend entry)
++      (let ((*print-circle* *print-circle-on-failure*))
++-       (format s "~&Test ~:@(~S~) failed~%Form: ~S~%Expected value~P:~%"
++-                  *test* (form entry) (length (vals entry)))
++-          (dolist (v (vals entry)) (format s "~10t~S~%" v))
++-       (format s "Actual value~P:~%" (length r))
++-       (dolist (v r)
++-         (format s "~10t~S~:[~; [~2:*~A]~]~%"
++-                 v (typep v 'condition)))))))
+++       (format s "~&Test ~:@(~S~) failed~
+++                   ~%Form: ~S~
+++                   ~%Expected value~P: ~
+++                      ~{~S~^~%~17t~}~%"
+++               *test* (form entry)
+++               (length (vals entry))
+++               (vals entry))
+++       (handler-case
+++        (let ((st (format nil "Actual value~P: ~
+++                      ~{~S~^~%~15t~}.~%"
+++                          (length r) r)))
+++          (format s "~A" st))
+++        (error () (format s "Actual value: #<error during printing>~%")))
+++       (finish-output s)))))
++   (when (not (pend entry)) *test*))
++ 
+++(defun expanded-eval (form)
+++  "Split off top level of a form and eval separately.  This reduces the chance that
+++   compiler optimizations will fold away runtime computation."
+++  (if (not (consp form))
+++      (eval form)
+++   (let ((op (car form)))
+++     (cond
+++      ((eq op 'let)
+++       (let* ((bindings (loop for b in (cadr form)
+++                           collect (if (consp b) b (list b nil))))
+++           (vars (mapcar #'car bindings))
+++           (binding-forms (mapcar #'cadr bindings)))
+++      (apply
+++       (the function
+++         (eval `(lambda ,vars ,@(cddr form))))
+++       (mapcar #'eval binding-forms))))
+++      ((and (eq op 'let*) (cadr form))
+++       (let* ((bindings (loop for b in (cadr form)
+++                           collect (if (consp b) b (list b nil))))
+++           (vars (mapcar #'car bindings))
+++           (binding-forms (mapcar #'cadr bindings)))
+++      (funcall
+++       (the function
+++         (eval `(lambda (,(car vars) &aux ,@(cdr bindings)) ,@(cddr form))))
+++       (eval (car binding-forms)))))
+++      ((eq op 'progn)
+++       (loop for e on (cdr form)
+++          do (if (null (cdr e)) (return (eval (car e)))
+++               (eval (car e)))))
+++      ((and (symbolp op) (fboundp op)
+++         (not (macro-function op))
+++         (not (special-operator-p op)))
+++       (apply (symbol-function op)
+++           (mapcar #'eval (cdr form))))
+++      (t (eval form))))))
+++
++ (defun continue-testing ()
++   (if *in-test*
++       (throw '*in-test* nil)
++       (do-entries *standard-output*)))
++ 
++-(defun do-tests (&optional
++-              (out *standard-output*))
+++(defun do-tests (&key (out *standard-output*)
+++                   ((:catch-errors *catch-errors*) *catch-errors*)
+++                   ((:compile *compile-tests*) *compile-tests*))
+++  (setq *failed-tests* nil
+++     *passed-tests* nil)
++   (dolist (entry (cdr *entries*))
++     (setf (pend entry) t))
++   (if (streamp out)
++@@ -219,13 +352,19 @@ them.")
++ (defun do-entries (s)
++   (format s "~&Doing ~A pending test~:P ~
++              of ~A tests total.~%"
++-          (count t (cdr *entries*)
++-              :key #'pend)
+++          (count t (the list (cdr *entries*)) :key #'pend)
++        (length (cdr *entries*)))
+++  (finish-output s)
++   (dolist (entry (cdr *entries*))
++-    (when (pend entry)
++-      (format s "~@[~<~%~:; ~:@(~S~)~>~]"
++-           (do-entry entry s))))
+++    (when (and (pend entry)
+++            (not (has-disabled-note entry)))
+++      (let ((success? (do-entry entry s)))
+++     (if success?
+++       (push (name entry) *passed-tests*)
+++       (push (name entry) *failed-tests*))
+++     (format s "~@[~<~%~:; ~:@(~S~)~>~]" success?))
+++      (finish-output s)
+++      ))
++   (let ((pending (pending-tests))
++      (expected-table (make-hash-table :test #'equal)))
++     (dolist (ex *expected-failures*)
++@@ -252,19 +391,46 @@ them.")
++                          ~^, ~}~)."
++                  (length new-failures)
++                  new-failures)))
++-          (when *expected-failures*
++-            (let ((pending-table (make-hash-table :test #'equal)))
++-              (dolist (ex pending)
++-                (setf (gethash ex pending-table) t))
++-              (let ((unexpected-successes
++-                     (loop :for ex :in *expected-failures*
++-                       :unless (gethash ex pending-table) :collect ex)))
++-                (if unexpected-successes
++-                    (format t "~&~:D unexpected successes: ~
++-                   ~:@(~{~<~%   ~1:;~S~>~
++-                         ~^, ~}~)."
++-                            (length unexpected-successes)
++-                            unexpected-successes)
++-                    (format t "~&No unexpected successes.")))))
++        ))
+++      (finish-output s)
++       (null pending))))
+++
+++;;; Note handling functions and macros
+++
+++(defmacro defnote (name contents &optional disabled)
+++  `(eval-when (:load-toplevel :execute)
+++     (let ((note (make-note :name ',name
+++                         :contents ',contents
+++                         :disabled ',disabled)))
+++       (setf (gethash (note-name note) *notes*) note)
+++       note)))
+++
+++(defun disable-note (n)
+++  (let ((note (if (note-p n) n
+++             (setf n (gethash n *notes*)))))
+++    (unless note (error "~A is not a note or note name." n))
+++    (setf (note-disabled note) t)
+++    note))
+++
+++(defun enable-note (n)
+++  (let ((note (if (note-p n) n
+++             (setf n (gethash n *notes*)))))
+++    (unless note (error "~A is not a note or note name." n))
+++    (setf (note-disabled note) nil)
+++    note))
+++
+++;;; Extended random regression
+++
+++(defun do-extended-tests (&key (tests *passed-tests*) (count nil)
+++                            ((:catch-errors *catch-errors*) *catch-errors*)
+++                            ((:compile *compile-tests*) *compile-tests*))
+++  "Execute randomly chosen tests from TESTS until one fails or until
+++   COUNT is an integer and that many tests have been executed."
+++  (let ((test-vector (coerce tests 'simple-vector)))
+++    (let ((n (length test-vector)))
+++      (when (= n 0) (error "Must provide at least one test."))
+++      (loop for i from 0
+++         for name = (svref test-vector (random n))
+++         until (eql i count)
+++         do (print name)
+++         unless (do-test name) return (values name (1+ i))))))
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/stream-element-type.lsp
++@@ -0,0 +1,102 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 13 20:09:50 2004
+++;;;; Contains: Tests for STREAM-ELEMENT-TYPE
+++
+++(in-package :cl-test)
+++
+++(deftest stream-element-type.1
+++  (loop for s in (list *debug-io* *error-output* *query-io*
+++                    *standard-input* *standard-output*
+++                    *trace-output* *terminal-io*)
+++     for results = (multiple-value-list (stream-element-type s))
+++     unless (and (eql (length results) 1)
+++                 (car results))
+++     collect s)
+++  nil)
+++
+++(deftest stream-element-type.2
+++  (let ((pn "foo.txt"))
+++    (loop for i from 1 to 100
+++       for etype = `(unsigned-byte ,i)
+++       for s = (progn (delete-all-versions pn)
+++                      (open pn :direction :output
+++                            :element-type etype))
+++       unless
+++       (multiple-value-bind (sub good)
+++           (subtypep etype (stream-element-type s))
+++         (close s)
+++         (or sub (not good)))
+++       collect i))
+++  nil)
+++
+++(deftest stream-element-type.3
+++  (let ((pn "foo.txt"))
+++    (loop for i from 1 to 100
+++       for etype = `(signed-byte ,i)
+++       for s = (progn (delete-all-versions pn)
+++                      (open pn :direction :output
+++                            :element-type etype))
+++       unless
+++       (multiple-value-bind (sub good)
+++           (subtypep etype (stream-element-type s))
+++         (close s)
+++         (or sub (not good)))
+++       collect i))
+++  nil)
+++
+++(deftest stream-element-type.4
+++  (let ((pn "foo.txt"))
+++    (loop for i from 1 to 100
+++       for etype = `(integer 0 ,i)
+++       for s = (progn (delete-all-versions pn)
+++                      (open pn :direction :output
+++                            :element-type etype))
+++       unless
+++       (multiple-value-bind (sub good)
+++           (subtypep etype (stream-element-type s))
+++         (close s)
+++         (or sub (not good)))
+++       collect i))
+++  nil)
+++
+++
+++(deftest stream-element-type.5
+++  :notes (:assume-no-simple-streams)
+++  (let ((pn "foo.txt"))
+++    (delete-all-versions pn)
+++    (let ((s (open pn :direction :output)))
+++      (let ((etype (stream-element-type s)))
+++     (unwind-protect
+++         (equalt (multiple-value-list (subtypep* 'character etype))
+++                 '(nil t))
+++       (close s)))))
+++  nil)
+++
+++(deftest stream-element-type.6
+++  :notes (:assume-no-simple-streams)
+++  (let ((pn "foo.txt"))
+++    (delete-all-versions pn)
+++    (let ((s (open pn :direction :output
+++                :element-type :default)))
+++      (let ((etype (stream-element-type s)))
+++     (unwind-protect
+++         (multiple-value-bind (sub1 good1) (subtypep* etype 'integer)
+++           (multiple-value-bind (sub2 good2) (subtypep* etype 'character)
+++             (or (not good1)
+++                 (not good2)
+++                 sub1 sub2)))
+++       (close s)))))
+++  t)
+++
+++(deftest stream-element-type.error.1
+++  (signals-error (stream-element-type) program-error)
+++  t)
+++
+++(deftest stream-element-type.error.2
+++  (signals-error (stream-element-type *standard-input* nil) program-error)
+++  t)
+++
+++(deftest stream-element-type.error.3
+++  (check-type-error #'stream-element-type #'streamp)
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/stream-error-stream.lsp
++@@ -0,0 +1,34 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Feb 14 20:51:33 2004
+++;;;; Contains: Tests of STREAM-ERROR-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest stream-error-stream.1
+++  (with-input-from-string
+++   (s "")
+++   (handler-case
+++    (read-char s)
+++    (stream-error (c) (eqlt (stream-error-stream c) s))))
+++  t)
+++
+++;;; Error tests
+++
+++(deftest stream-error-stream.error.1
+++  (signals-error (stream-error-stream) program-error)
+++  t)
+++
+++
+++(deftest stream-error-stream.error.2
+++  (signals-error
+++   (with-input-from-string
+++    (s "")
+++    (handler-case
+++     (read-char s)
+++     (stream-error (c) (stream-error-stream c nil))))
+++   program-error)
+++  t)
+++
+++
+++                       
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/stream-external-format.lsp
++@@ -0,0 +1,24 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 27 20:53:21 2004
+++;;;; Contains: Tests of STREAM-EXTERNAL-FORMAT
+++
+++(in-package :cl-test)
+++
+++;;; This is tested in open.lsp
+++
+++;;; Error tests
+++
+++(deftest stream-external-format.error.1
+++  (signals-error (stream-external-format) program-error)
+++  t)
+++
+++(deftest stream-external-format.error.2
+++  (signals-error
+++   (let ((pn #p"tmp.dat"))
+++     (delete-all-versions pn)
+++     (with-open-file
+++      (s pn :direction :output :if-exists :supersede)
+++      (stream-external-format s nil)))
+++   program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/streamp.lsp
++@@ -0,0 +1,44 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Jan 17 17:12:38 2004
+++;;;; Contains: Tests for STREAMP
+++
+++(in-package :cl-test)
+++
+++(deftest streamp.1
+++  (loop for s in (list *debug-io* *error-output* *query-io*
+++                    *standard-input* *standard-output*
+++                    *trace-output* *terminal-io*)
+++     unless (equal (multiple-value-list (notnot-mv (streamp s)))
+++                   '(t))
+++     collect s)
+++  nil)
+++
+++(deftest streamp.2
+++  (check-type-predicate #'streamp 'stream)
+++  0)
+++
+++(deftest streamp.3
+++  (let ((s (open "foo.txt" :direction :output
+++              :if-exists :supersede)))
+++    (close s)
+++    (notnot-mv (streamp s)))
+++  t)
+++
+++(deftest streamp.4
+++  (let ((s (open "foo.txt" :direction :output
+++              :if-exists :supersede)))
+++    (unwind-protect
+++     (notnot-mv (streamp s))
+++      (close s)))
+++  t)
+++
+++;;; Error tests
+++
+++(deftest streamp.error.1
+++  (signals-error (streamp) program-error)
+++  t)
+++
+++(deftest streamp.error.2
+++  (signals-error (streamp *standard-input* nil) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/synonym-stream-symbol.lsp
++@@ -0,0 +1,23 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Jan 29 21:21:06 2004
+++;;;; Contains: Tests of SYNONYM-STREAM-SYMBOL
+++
+++(in-package :cl-test)
+++
+++(deftest synonym-stream-symbol.1
+++  (synonym-stream-symbol (make-synonym-stream '*standard-input*))
+++  *standard-input*)
+++
+++(deftest synonym-stream-symbol.error.1
+++  (signals-error (synonym-stream-symbol) program-error)
+++  t)
+++
+++(deftest synonym-stream-symbol.error.2
+++  (signals-error (synonym-stream-symbol
+++               (make-synonym-stream '*terminal-io*)
+++               nil)
+++              program-error)
+++  t)
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/terpri.lsp
++@@ -0,0 +1,62 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Jan 18 20:35:57 2004
+++;;;; Contains: Tests of TERPRI
+++
+++(in-package :cl-test)
+++
+++(deftest terpri.1
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (write-char #\a)
+++       (setq result (terpri)))
+++     result))
+++  #.(concatenate 'string "a" (string #\Newline))
+++  nil)
+++
+++(deftest terpri.2
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (write-char #\a s)
+++       (setq result (terpri s)))
+++     result))
+++  #.(concatenate 'string "a" (string #\Newline))
+++  nil)
+++
+++(deftest terpri.3
+++  (with-output-to-string
+++    (s)
+++    (write-char #\x s)
+++    (terpri s)
+++    (terpri s)
+++    (write-char #\y s))
+++  #.(concatenate 'string "x" (string #\Newline) (string #\Newline) "y"))
+++
+++(deftest terpri.4
+++  (with-output-to-string
+++    (os)
+++    (let ((*terminal-io* (make-two-way-stream *standard-input* os)))
+++      (terpri t)
+++      (finish-output t)))
+++  #.(string #\Newline))
+++
+++(deftest terpri.5
+++  (with-output-to-string
+++    (*standard-output*)
+++    (terpri nil))
+++  #.(string #\Newline))
+++
+++;;; Error tests
+++
+++(deftest terpri.error.1
+++  (signals-error
+++   (with-output-to-string
+++     (s)
+++     (terpri s nil))
+++   program-error)
+++  t)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/translate-logical-pathname.lsp
++@@ -0,0 +1,48 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Mon Dec 29 14:45:50 2003
+++;;;; Contains: Tests for TRANSLATE-LOGICAL-PATHNAME
+++
+++(in-package :cl-test)
+++
+++;; On physical pathnames, t-l-p returns the pathname itself
+++
+++;;; Every physical pathname is converted to itself
+++(deftest translate-logical-pathname.1
+++  (loop for p in *pathnames*
+++     unless (or (typep p 'logical-pathname)
+++                (eq p (translate-logical-pathname p)))
+++     collect p)
+++  nil)
+++
+++;;; &key arguments are allowed
+++(deftest translate-logical-pathname.2
+++  (loop for p in *pathnames*
+++     unless (or (typep p 'logical-pathname)
+++                (eq p (translate-logical-pathname
+++                       p :allow-other-keys t)))
+++     collect p)
+++  nil)
+++
+++(deftest translate-logical-pathname.3
+++  (loop for p in *pathnames*
+++     unless (or (typep p 'logical-pathname)
+++                (eq p (translate-logical-pathname
+++                       p :allow-other-keys nil)))
+++     collect p)
+++  nil)
+++
+++(deftest translate-logical-pathname.4
+++  (loop for p in *pathnames*
+++     unless (or (typep p 'logical-pathname)
+++                (eq p (translate-logical-pathname
+++                       p :foo 1 :allow-other-keys t :bar 2)))
+++     collect p)
+++  nil)
+++
+++
+++;;; errors
+++
+++(deftest translate-logical-pathname.error.1
+++  (signals-error (translate-logical-pathname) program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/translate-pathname.lsp
++@@ -0,0 +1,50 @@
+++;-*- Mode:     Lisp -*-
+++
+++(in-package :cl-test)
+++
+++(deftest translate-pathname.1 (translate-pathname "foobar" "foobar" "foobar") #P"foobar")
+++(deftest translate-pathname.2 (translate-pathname "foobar" "foobar" "foo*")   #P"foo")
+++(deftest translate-pathname.3 (translate-pathname "foobar" "foobar" "*")      #P"foobar")
+++(deftest translate-pathname.4 (translate-pathname "foobar" "foobar" "")       #P"foobar")
+++
+++(deftest translate-pathname.5 (translate-pathname "foobar" "foo*r"  "foobar") #P"foobar")
+++(deftest translate-pathname.6 (translate-pathname "foobar" "foo*r"  "foo*")   #P"fooba")
+++(deftest translate-pathname.7 (translate-pathname "foobar" "foo*r"  "*")      #P"foobar")
+++(deftest translate-pathname.8 (translate-pathname "foobar" "foo*r"  "")       #P"foobar")
+++
+++(deftest translate-pathname.9  (translate-pathname "foobar" "*"  "foobar") #P"foobar")
+++(deftest translate-pathname.10 (translate-pathname "foobar" "*"  "foo*")   #P"foofoobar")
+++(deftest translate-pathname.11 (translate-pathname "foobar" "*"  "*")      #P"foobar")
+++(deftest translate-pathname.12 (translate-pathname "foobar" "*"  "")       #P"foobar")
+++
+++(deftest translate-pathname.13 (translate-pathname "foobar" ""  "foobar") #P"foobar")
+++(deftest translate-pathname.14 (translate-pathname "foobar" ""  "foo*")   #P"foofoobar")
+++(deftest translate-pathname.15 (translate-pathname "foobar" ""  "*")      #P"foobar")
+++(deftest translate-pathname.16 (translate-pathname "foobar" ""  "")       #P"foobar")
+++
+++(deftest translate-pathname.17 (translate-pathname "/a/bbfb/c/d/" "/a/bbfb/c/d/" "/a/qc/c/d/")   #P"/a/qc/c/d/")
+++(deftest translate-pathname.18 (translate-pathname "/a/bbfb/c/d/" "/a/bbfb/c/d/" "/a/q*c*/c/d/") #P"/a/qc/c/d/")
+++(deftest translate-pathname.19 (translate-pathname "/a/bbfb/c/d/" "/a/bbfb/c/d/" "/a/*/c/d/")    #P"/a/c/d/")
+++(deftest translate-pathname.20 (translate-pathname "/a/bbfb/c/d/" "/a/bbfb/c/d/" "/a/**/d/")     #P"/a/d/")
+++
+++(deftest translate-pathname.21 (translate-pathname "/a/bbfb/c/d/" "/a/b*f*/c/d/" "/a/qc/c/d/")   #P"/a/qc/c/d/")
+++(deftest translate-pathname.22 (translate-pathname "/a/bbfb/c/d/" "/a/b*f*/c/d/" "/a/q*c*/c/d/") #P"/a/qbcb/c/d/")
+++(deftest translate-pathname.23 (translate-pathname "/a/bbfb/c/d/" "/a/b*f*/c/d/" "/a/*/c/d/")    #P"/a/bbfb/c/d/")
+++(deftest translate-pathname.24 (translate-pathname "/a/bbfb/c/d/" "/a/b*f*/c/d/" "/a/**/d/")     #P"/a/bbfb/d/")
+++
+++(deftest translate-pathname.25 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/" "/a/qc/c/d/")   #P"/a/qc/c/d/")
+++(deftest translate-pathname.26 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/" "/a/q*c*/c/d/") #P"/a/qc/c/d/")
+++(deftest translate-pathname.27 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/" "/a/*/d/")      #P"/a/bbfb/d/")
+++(deftest translate-pathname.28 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/" "/a/**/d/")     #P"/a/bbfb/c/d/")
+++
+++(deftest translate-pathname.29 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/" "a/qc/c/d/")    #P"a/qc/c/d/")
+++(deftest translate-pathname.30 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/" "a/q*c*/c/d/")  #P"a/qc/c/d/")
+++(deftest translate-pathname.31 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/" "a/*/d/")       #P"a/bbfb/d/")
+++(deftest translate-pathname.32 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/" "a/**/d/")      #P"a/bbfb/c/d/")
+++
+++(deftest translate-pathname.33 (translate-pathname "/a/bbfb/c/d/" "/a/bbfb/c/d/" "a")        #P"/a/bbfb/c/d/a")
+++(deftest translate-pathname.34 (translate-pathname "/a/bbfb/c/d/" "/a/b*f*/c/d/" "a")        #P"/a/bbfb/c/d/a")
+++(deftest translate-pathname.35 (translate-pathname "/a/bbfb/c/d/" "/a/*/c/d/"    "a")        #P"/a/bbfb/c/d/a")
+++(deftest translate-pathname.36 (translate-pathname "/a/bbfb/c/d/" "/a/**/d/"     "a")        #P"/a/bbfb/c/d/a")
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/truename.lsp
++@@ -0,0 +1,108 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan  6 05:32:37 2004
+++;;;; Contains: Tests of TRUENAME
+++
+++(in-package :cl-test)
+++
+++(deftest truename.1
+++  (let* ((pn #p"truename.lsp")
+++      (tn (truename pn)))
+++    (values
+++     (notnot (pathnamep pn))
+++     (typep pn 'logical-pathname)
+++     (equalt (pathname-name pn) (pathname-name tn))
+++     (equalt (pathname-type pn) (pathname-type tn))
+++     ))
+++  t nil t t)
+++
+++(deftest truename.2
+++  (let* ((name "truename.lsp")
+++      (pn (pathname name))
+++      (tn (truename name)))
+++    (values
+++     (notnot (pathnamep pn))
+++     (typep pn 'logical-pathname)
+++     (equalt (pathname-name pn) (pathname-name tn))
+++     (equalt (pathname-type pn) (pathname-type tn))
+++     ))
+++  t nil t t)
+++
+++(deftest truename.3
+++  (let* ((pn #p"truename.lsp"))
+++    (with-open-file
+++     (s pn :direction :input)
+++     (let ((tn (truename s)))
+++       (values
+++     (notnot (pathnamep pn))
+++     (typep pn 'logical-pathname)
+++     (equalt (pathname-name pn) (pathname-name tn))
+++     (equalt (pathname-type pn) (pathname-type tn))
+++     ))))
+++  t nil t t)
+++
+++(deftest truename.4
+++  (let* ((pn #p"truename.lsp"))
+++    (let ((s (open pn :direction :input)))
+++      (close s)
+++      (let ((tn (truename s)))
+++     (values
+++      (notnot (pathnamep pn))
+++      (typep pn 'logical-pathname)
+++      (equalt (pathname-name pn) (pathname-name tn))
+++      (equalt (pathname-type pn) (pathname-type tn))
+++      ))))
+++  t nil t t)
+++
+++(deftest truename.5
+++  (let* ((lpn "CLTEST:foo.txt")
+++      (pn (translate-logical-pathname lpn)))
+++    (unless (probe-file lpn)
+++      (with-open-file (s lpn :direction :output) (format s "Stuff~%")))
+++    (let ((tn (truename lpn)))
+++      (values
+++       (notnot (pathnamep pn))
+++       (if (equalt (pathname-name pn) (pathname-name tn))
+++        t (list (pathname-name pn) (pathname-name tn)))
+++       (if (equalt (pathname-type pn) (pathname-type tn))
+++        t (list (pathname-type pn) (pathname-type tn)))
+++       )))
+++  t t t)
+++
+++;;; Specialized string tests
+++
+++(deftest truename.6
+++  (do-special-strings
+++   (s "truename.lsp" nil)
+++   (assert (equalp (truename s) (truename "truename.lsp"))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest truename.error.1
+++  (signals-error (truename) program-error)
+++  t)
+++
+++(deftest truename.error.2
+++  (signals-error (truename "truename.lsp" nil) program-error)
+++  t)
+++
+++(deftest truename.error.3
+++  (signals-error-always (truename "nonexistent") file-error)
+++  t t)
+++
+++(deftest truename.error.4
+++  (signals-error-always (truename #p"nonexistent") file-error)
+++  t t)
+++
+++(deftest truename.error.5
+++  (signals-error-always (truename (logical-pathname "CLTESTROOT:NONEXISTENT")) file-error)
+++  t t)
+++
+++(deftest truename.error.6
+++  (signals-error-always
+++   (let ((pn (make-pathname :name :wild
+++                         :defaults *default-pathname-defaults*)))
+++     (truename pn))
+++   file-error)
+++  t t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/two-way-stream-input-stream.lsp
++@@ -0,0 +1,26 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Feb 12 04:22:50 2004
+++;;;; Contains: Tests of TWO-WAY-STREAM-INPUT-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest two-way-stream-input-stream.1
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-two-way-stream is os)))
+++    (equalt (multiple-value-list (two-way-stream-input-stream s))
+++         (list is)))
+++  t)
+++
+++(deftest two-way-stream-input-stream.error.1
+++  (signals-error (two-way-stream-input-stream) program-error)
+++  t)
+++
+++(deftest two-way-stream-input-stream.error.2
+++  (signals-error (let* ((is (make-string-input-stream "foo"))
+++                     (os (make-string-output-stream))
+++                     (s (make-two-way-stream is os)))
+++                (two-way-stream-input-stream s nil))
+++              program-error)
+++  t)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/two-way-stream-output-stream.lsp
++@@ -0,0 +1,26 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Thu Feb 12 04:25:59 2004
+++;;;; Contains: Tests off TWO-WAY-STREAM-OUTPUT-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest two-way-stream-output-stream.1
+++  (let* ((is (make-string-input-stream "foo"))
+++      (os (make-string-output-stream))
+++      (s (make-two-way-stream is os)))
+++    (equalt (multiple-value-list (two-way-stream-output-stream s))
+++         (list os)))
+++  t)
+++
+++(deftest two-way-stream-output-stream.error.1
+++  (signals-error (two-way-stream-output-stream) program-error)
+++  t)
+++
+++(deftest two-way-stream-output-stream.error.2
+++  (signals-error (let* ((is (make-string-input-stream "foo"))
+++                     (os (make-string-output-stream))
+++                     (s (make-two-way-stream is os)))
+++                (two-way-stream-output-stream s nil))
+++              program-error)
+++  t)
++--- gcl-2.6.12.orig/ansi-tests/universe.lsp
+++++ gcl-2.6.12/ansi-tests/universe.lsp
++@@ -307,15 +307,50 @@
++      #-(or GCL CMU ECL) (make-hash-table :test #'equalp)
++      ))
++ 
++-(defvar *pathnames*
++-    (list
++-     (make-pathname :name "foo")
++-     (make-pathname :name "bar")
++-     (make-pathname :name "foo" :type "txt")
++-     (make-pathname :name "bar" :type "txt")
++-     (make-pathname :name :wild)
++-     (make-pathname :name :wild :type "txt")
++-     ))
+++(defparameter *pathnames*
+++  (locally
+++   (declare (optimize safety))
+++   (loop for form in '((make-pathname :name "foo")
+++                    (make-pathname :name "FOO" :case :common)
+++                    (make-pathname :name "bar")
+++                    (make-pathname :name "foo" :type "txt")
+++                    (make-pathname :name "bar" :type "txt")
+++                    (make-pathname :name "XYZ" :type "TXT" :case :common)
+++                    (make-pathname :name nil)
+++                    (make-pathname :name :wild)
+++                    (make-pathname :name nil :type "txt")
+++                    (make-pathname :name :wild :type "txt")
+++                    (make-pathname :name :wild :type "TXT" :case :common)
+++                    (make-pathname :name :wild :type "abc" :case :common)
+++                    (make-pathname :directory :wild)
+++                    (make-pathname :type :wild)
+++                    (make-pathname :version :wild)
+++                    (make-pathname :version :newest))
+++      append (ignore-errors (eval `(list ,form))))))
+++
+++(eval-when (:compile-toplevel :load-toplevel :execute)
+++  (locally
+++   (declare (optimize safety))
+++   (ignore-errors
+++     (setf (logical-pathname-translations "CLTESTROOT")
+++        `(("**;*.*.*" ,(make-pathname :directory '(:absolute :wild-inferiors)
+++                                      :name :wild :type :wild)))))
+++   (ignore-errors
+++     (setf (logical-pathname-translations "CLTEST")
+++        `(("**;*.*.*" ,(make-pathname
+++                        :directory (append
+++                                    (pathname-directory
+++                                     (truename (make-pathname)))
+++                                    '(:wild-inferiors))
+++                        :name :wild :type :wild)))))
+++   ))
+++
+++(defparameter *logical-pathnames*
+++  (locally
+++   (declare (optimize safety))
+++   (append
+++    (ignore-errors (list (logical-pathname "CLTESTROOT:")))
+++    )))
++ 
++ (defvar *streams*
++     (remove-duplicates
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/unread-char.lsp
++@@ -0,0 +1,92 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Jan 18 20:05:36 2004
+++;;;; Contains: Tests of UNREAD-CHAR
+++
+++(in-package :cl-test)
+++
+++(deftest unread-char.1
+++  (with-input-from-string
+++   (*standard-input* "abc")
+++   (values
+++    (read-char)
+++    (unread-char #\a)
+++    (read-char)
+++    (read-char)
+++    (unread-char #\b)
+++    (read-char)
+++    (read-char)))
+++  #\a nil #\a #\b nil #\b #\c)
+++
+++(deftest unread-char.2
+++  (with-input-from-string
+++   (s "abc")
+++   (values
+++    (read-char s)
+++    (unread-char #\a s)
+++    (read-char s)
+++    (read-char s)
+++    (unread-char #\b s)
+++    (read-char s)
+++    (read-char s)))
+++  #\a nil #\a #\b nil #\b #\c)
+++
+++(deftest unread-char.3
+++  (with-input-from-string
+++   (is "abc")
+++   (with-output-to-string
+++     (os)
+++     (let ((s (make-echo-stream is os)))
+++       (read-char s)
+++       (unread-char #\a s)
+++       (read-char s)
+++       (read-char s)
+++       (read-char s)
+++       (unread-char #\c s)
+++       (read-char s))))
+++  "abc")
+++
+++(deftest unread-char.4
+++  (with-input-from-string
+++   (*standard-input* "abc")
+++   (values
+++    (read-char)
+++    (unread-char #\a nil)
+++    (read-char)
+++    (read-char)
+++    (unread-char #\b nil)
+++    (read-char)
+++    (read-char)))
+++  #\a nil #\a #\b nil #\b #\c)
+++
+++(deftest unread-char.5
+++  (with-input-from-string
+++   (is "abc")
+++   (let ((*terminal-io* (make-two-way-stream
+++                      is (make-string-output-stream))))
+++     (values
+++      (read-char t)
+++      (unread-char #\a t)
+++      (read-char t)
+++      (read-char t)
+++      (unread-char #\b t)
+++      (read-char t)
+++      (read-char t))))
+++  #\a nil #\a #\b nil #\b #\c)
+++
+++;;; Error tests
+++
+++(deftest unread-char.error.1
+++  (signals-error (unread-char) program-error)
+++  t)
+++
+++(deftest unread-char.error.2
+++  (signals-error
+++   (with-input-from-string
+++    (s "abc")
+++    (read-char s)
+++    (unread-char #\a s nil))
+++   program-error)
+++  t)
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/wild-pathname-p.lsp
++@@ -0,0 +1,234 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Dec 31 16:54:55 2003
+++;;;; Contains: Tests of WILD-PATHNAME-P
+++
+++(in-package :cl-test)
+++
+++(compile-and-load "pathnames-aux.lsp")
+++
+++(deftest wild-pathname-p.1
+++  (wild-pathname-p (make-pathname))
+++  nil)
+++
+++(deftest wild-pathname-p.2
+++  (loop for key in '(:host :device :directory :name :type :version nil)
+++     when (wild-pathname-p (make-pathname) key)
+++     collect key)
+++  nil)
+++
+++(deftest wild-pathname-p.3
+++  (let ((p (make-pathname :directory :wild)))
+++    (notnot-mv (wild-pathname-p p)))
+++  t)
+++
+++(deftest wild-pathname-p.4
+++  (let ((p (make-pathname :directory :wild)))
+++    (notnot-mv (wild-pathname-p p nil)))
+++  t)
+++
+++(deftest wild-pathname-p.5
+++  (let ((p (make-pathname :directory :wild)))
+++    (notnot-mv (wild-pathname-p p :directory)))
+++  t)
+++
+++(deftest wild-pathname-p.6
+++  (let ((p (make-pathname :directory :wild)))
+++    (loop for key in '(:host :device :name :type :version)
+++     when (wild-pathname-p p key)
+++     collect key))
+++  nil)
+++
+++
+++(deftest wild-pathname-p.7
+++  (let ((p (make-pathname :directory '(:absolute :wild))))
+++    (notnot-mv (wild-pathname-p p)))
+++  t)
+++
+++(deftest wild-pathname-p.8
+++  (let ((p (make-pathname :directory '(:absolute :wild))))
+++    (notnot-mv (wild-pathname-p p nil)))
+++  t)
+++
+++(deftest wild-pathname-p.9
+++  (let ((p (make-pathname :directory '(:absolute :wild))))
+++    (notnot-mv (wild-pathname-p p :directory)))
+++  t)
+++
+++(deftest wild-pathname-p.10
+++  (let ((p (make-pathname :directory '(:absolute :wild))))
+++    (loop for key in '(:host :device :name :type :version)
+++     when (wild-pathname-p p key)
+++     collect key))
+++  nil)
+++
+++
+++(deftest wild-pathname-p.11
+++  (let ((p (make-pathname :directory '(:relative :wild))))
+++    (notnot-mv (wild-pathname-p p)))
+++  t)
+++
+++(deftest wild-pathname-p.12
+++  (let ((p (make-pathname :directory '(:relative :wild))))
+++    (notnot-mv (wild-pathname-p p nil)))
+++  t)
+++
+++(deftest wild-pathname-p.13
+++  (let ((p (make-pathname :directory '(:relative :wild))))
+++    (notnot-mv (wild-pathname-p p :directory)))
+++  t)
+++
+++(deftest wild-pathname-p.14
+++  (let ((p (make-pathname :directory '(:relative :wild))))
+++    (loop for key in '(:host :device :name :type :version)
+++     when (wild-pathname-p p key)
+++     collect key))
+++  nil)
+++
+++;;;
+++
+++(deftest wild-pathname-p.15
+++  (let ((p (make-pathname :name :wild)))
+++    (notnot-mv (wild-pathname-p p)))
+++  t)
+++
+++(deftest wild-pathname-p.16
+++  (let ((p (make-pathname :name :wild)))
+++    (notnot-mv (wild-pathname-p p nil)))
+++  t)
+++
+++(deftest wild-pathname-p.17
+++  (let ((p (make-pathname :name :wild)))
+++    (notnot-mv (wild-pathname-p p :name)))
+++  t)
+++
+++(deftest wild-pathname-p.18
+++  (let ((p (make-pathname :name :wild)))
+++    (loop for key in '(:host :device :directory :type :version)
+++     when (wild-pathname-p p key)
+++     collect key))
+++  nil)
+++
+++;;;    
+++  
+++(deftest wild-pathname-p.19
+++  (let ((p (make-pathname :type :wild)))
+++    (notnot-mv (wild-pathname-p p)))
+++  t)
+++
+++(deftest wild-pathname-p.20
+++  (let ((p (make-pathname :type :wild)))
+++    (notnot-mv (wild-pathname-p p nil)))
+++  t)
+++
+++(deftest wild-pathname-p.21
+++  (let ((p (make-pathname :type :wild)))
+++    (notnot-mv (wild-pathname-p p :type)))
+++  t)
+++
+++(deftest wild-pathname-p.22
+++  (let ((p (make-pathname :type :wild)))
+++    (loop for key in '(:host :device :directory :name :version)
+++     when (wild-pathname-p p key)
+++     collect key))
+++  nil)
+++
+++;;;
+++
+++ (deftest wild-pathname-p.23
+++  (let ((p (make-pathname :version :wild)))
+++    (notnot-mv (wild-pathname-p p)))
+++  t)
+++
+++(deftest wild-pathname-p.24
+++  (let ((p (make-pathname :version :wild)))
+++    (notnot-mv (wild-pathname-p p nil)))
+++  t)
+++
+++(deftest wild-pathname-p.25
+++  (let ((p (make-pathname :version :wild)))
+++    (notnot-mv (wild-pathname-p p :version)))
+++  t)
+++
+++(deftest wild-pathname-p.26
+++  (let ((p (make-pathname :version :wild)))
+++    (loop for key in '(:host :device :directory :name :type)
+++     when (wild-pathname-p p key)
+++     collect key))
+++  nil)
+++
+++;;;
+++
+++(deftest wild-pathname-p.27
+++  (loop for p in (append *pathnames* *logical-pathnames*)
+++     unless (if (wild-pathname-p p) (wild-pathname-p p nil)
+++              (not (wild-pathname-p p nil)))
+++     collect p)
+++  nil)
+++
+++(deftest wild-pathname-p.28
+++  (loop for p in (append *pathnames* *logical-pathnames*)
+++     when (and (loop for key in '(:host :device :directory
+++                                        :name :type :version)
+++                     thereis (wild-pathname-p p key))
+++               (not (wild-pathname-p p)))
+++     collect p)
+++  nil)
+++
+++;;; On streams associated with files
+++
+++(deftest wild-pathname-p.29
+++  (with-open-file (s "foo.lsp"
+++                  :direction :output
+++                  :if-exists :append
+++                  :if-does-not-exist :create)
+++               (wild-pathname-p s))
+++  nil)
+++
+++(deftest wild-pathname-p.30
+++  (let ((s (open "foo.lsp"
+++              :direction :output
+++              :if-exists :append
+++              :if-does-not-exist :create)))
+++    (close s)
+++    (wild-pathname-p s))
+++  nil)
+++
+++;;; logical pathname designators
+++
+++(deftest wild-pathname-p.31
+++  (wild-pathname-p "CLTEST:FOO.LISP")
+++  nil)
+++
+++;;; Odd strings
+++
+++(deftest wild-pathname-p.32
+++  (do-special-strings
+++   (s "CLTEST:FOO.LISP" nil)
+++   (let ((vals (multiple-value-list (wild-pathname-p s))))
+++     (assert (equal vals '(nil)))))
+++  nil)
+++
+++;;;
+++
+++(deftest wild-pathname-p.error.1
+++  (signals-error (wild-pathname-p) program-error)
+++  t)
+++
+++(deftest wild-pathname-p.error.2
+++  (signals-error (wild-pathname-p *default-pathname-defaults* nil nil)
+++              program-error)
+++  t)
+++
+++(deftest wild-pathname-p.error.3
+++  (check-type-error #'wild-pathname-p
+++                 (typef '(or pathname string file-stream
+++                             synonym-stream)))
+++  nil)
+++
+++(deftest wild-pathname-p.error.4
+++  (check-type-error #'(lambda (x) (declare (optimize (safety 0)))
+++                     (wild-pathname-p x))
+++                 (typef '(or pathname string file-stream
+++                             synonym-stream)))
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/with-input-from-string.lsp
++@@ -0,0 +1,245 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Feb 14 20:13:02 2004
+++;;;; Contains: Tests of WITH-INPUT-FROM-STRING
+++
+++(in-package :cl-test)
+++
+++(deftest with-input-from-string.1
+++  (with-input-from-string
+++   (s "abc")
+++   (values (read-char s) (read-char s) (read-char s) (read-char s nil :eof)))
+++  #\a #\b #\c :eof)
+++
+++(deftest with-input-from-string.2
+++  (with-input-from-string (s "abc"))
+++  nil)
+++
+++(deftest with-input-from-string.3
+++  (with-input-from-string (s "abc") (declare (optimize speed)))
+++  nil)
+++
+++(deftest with-input-from-string.3a
+++  (with-input-from-string (s "abc")
+++                       (declare (optimize speed))
+++                       (declare (optimize space)))
+++  nil)
+++
+++(deftest with-input-from-string.4
+++  (with-input-from-string
+++   (s "abc")
+++   (declare (optimize safety))
+++   (read-char s)
+++   (read-char s))
+++  #\b)
+++
+++(deftest with-input-from-string.5
+++  (let ((i nil))
+++    (values
+++     (with-input-from-string
+++      (s "abc" :index i))
+++     i))
+++  nil 0)
+++
+++(deftest with-input-from-string.6
+++  (let ((i (list nil)))
+++    (values
+++     (with-input-from-string
+++      (s "abc" :index (car i)))
+++     i))
+++  nil (0))
+++
+++(deftest with-input-from-string.7
+++  (let ((i nil))
+++    (values
+++     (with-input-from-string
+++      (s "abc" :index i)
+++      (list i (read-char s) i (read-char s) i))
+++     i))
+++  (nil #\a nil #\b nil) 2)
+++
+++(deftest with-input-from-string.9
+++  (with-input-from-string
+++   (s "abc")
+++   (values
+++    (notnot (typep s 'stream))
+++    (notnot (typep s 'string-stream))
+++    (notnot (open-stream-p s))
+++    (notnot (input-stream-p s))
+++    (output-stream-p s)))
+++  t t t t nil)
+++
+++(deftest with-input-from-string.10
+++  :notes (:nil-vectors-are-strings)
+++  (with-input-from-string
+++   (s (make-array 0 :element-type nil))
+++   (values
+++    (notnot (typep s 'stream))
+++    (notnot (typep s 'string-stream))
+++    (notnot (open-stream-p s))
+++    (notnot (input-stream-p s))
+++    (output-stream-p s)))
+++  t t t t nil)
+++
+++(deftest with-input-from-string.11
+++  (with-input-from-string
+++   (s (make-array 3 :element-type 'character :initial-contents "abc"))
+++   (values
+++    (notnot (typep s 'stream))
+++    (notnot (typep s 'string-stream))
+++    (notnot (open-stream-p s))
+++    (notnot (input-stream-p s))
+++    (output-stream-p s)
+++    (read-line s)))
+++  t t t t nil "abc")
+++
+++(deftest with-input-from-string.12
+++  (with-input-from-string
+++   (s (make-array 3 :element-type 'base-char :initial-contents "abc"))
+++   (values
+++    (notnot (typep s 'stream))
+++    (notnot (typep s 'string-stream))
+++    (notnot (open-stream-p s))
+++    (notnot (input-stream-p s))
+++    (output-stream-p s)
+++    (read-line s)))
+++  t t t t nil "abc")
+++
+++(deftest with-input-from-string.13
+++  (with-input-from-string
+++   (s "abcdef" :start 2)
+++   (values
+++    (notnot (typep s 'stream))
+++    (notnot (typep s 'string-stream))
+++    (notnot (open-stream-p s))
+++    (notnot (input-stream-p s))
+++    (output-stream-p s)
+++    (read-line s)))
+++  t t t t nil "cdef")
+++
+++(deftest with-input-from-string.14
+++  (with-input-from-string
+++   (s "abcdef" :end 3)
+++   (values
+++    (notnot (typep s 'stream))
+++    (notnot (typep s 'string-stream))
+++    (notnot (open-stream-p s))
+++    (notnot (input-stream-p s))
+++    (output-stream-p s)
+++    (read-line s)))
+++  t t t t nil "abc")
+++
+++(deftest with-input-from-string.15
+++  (with-input-from-string
+++   (s "abcdef" :start 1 :end 5)
+++   (values
+++    (notnot (typep s 'stream))
+++    (notnot (typep s 'string-stream))
+++    (notnot (open-stream-p s))
+++    (notnot (input-stream-p s))
+++    (output-stream-p s)
+++    (read-line s)))
+++  t t t t nil "bcde")
+++
+++(deftest with-input-from-string.16
+++  (with-input-from-string
+++   (s "abcdef" :start 1 :end nil)
+++   (values
+++    (notnot (typep s 'stream))
+++    (notnot (typep s 'string-stream))
+++    (notnot (open-stream-p s))
+++    (notnot (input-stream-p s))
+++    (output-stream-p s)
+++    (read-line s)))
+++  t t t t nil "bcdef")
+++
+++(deftest with-input-from-string.17
+++  (let ((i 2))
+++    (values
+++     (with-input-from-string
+++      (s "abcdef" :index i :start i)
+++      (read-char s))
+++     i))
+++  #\c 3)
+++
+++;;; Test that there is no implicit tagbody
+++
+++(deftest with-input-from-string.18
+++  (block done
+++    (tagbody
+++     (with-input-from-string
+++      (s "abc")
+++      (go 1)
+++      1
+++      (return-from done :bad))
+++     1
+++     (return-from done :good)))
+++  :good)
+++
+++;;; Free declaration scope
+++
+++(deftest with-input-from-string.19
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good))
+++     (with-input-from-string (s (return-from done x))
+++                             (declare (special x))))))
+++  :good)
+++
+++(deftest with-input-from-string.20
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good))
+++     (with-input-from-string (s "abc" :start (return-from done x))
+++                             (declare (special x))))))
+++  :good)
+++
+++(deftest with-input-from-string.21
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good))
+++     (with-input-from-string (s "abc" :end (return-from done x))
+++                             (declare (special x))))))
+++  :good)
+++
+++;;; index is not updated if the form exits abnormally
+++
+++(deftest with-input-from-string.22
+++  (let ((i nil))
+++    (values
+++     (block done
+++       (with-input-from-string (s "abcde" :index i) (return-from done (read-char s))))
+++     i))
+++  #\a nil)
+++
+++;;; Test that explicit calls to macroexpand in subforms
+++;;; are done in the correct environment
+++
+++(deftest with-input-from-string.23
+++  (macrolet
+++   ((%m (z) z))
+++   (with-input-from-string (s (expand-in-current-env (%m "123")))
+++                       (read-char s)))
+++  #\1)
+++
+++(deftest with-input-from-string.24
+++  (macrolet
+++   ((%m (z) z))
+++   (with-input-from-string (s "123" :start (expand-in-current-env (%m 1)))
+++                        (read-char s)))
+++  #\2)
+++
+++(deftest with-input-from-string.25
+++  (macrolet
+++   ((%m (z) z))
+++   (with-input-from-string (s "123" :start 0
+++                           :end (expand-in-current-env (%m 0)))
+++                        (read-char s nil nil)))
+++  nil)
+++
+++
+++;;; FIXME: Add more tests on specialized strings.
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/with-open-file.lsp
++@@ -0,0 +1,98 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Tue Jan 27 20:57:05 2004
+++;;;; Contains: Tests of WITH-OPEN-FILE
+++
+++(in-package :cl-test)
+++
+++;;; For now, omit most of the options combinations, assuming they will
+++;;; be tested in OPEN.  The tests of OPEN should be ported to here at some
+++;;; point.
+++
+++(deftest with-open-file.1
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (with-open-file (s pn :direction :output)))
+++  nil)
+++
+++(deftest with-open-file.2
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (with-open-file
+++     (s pn :direction :output)
+++     (notnot-mv (output-stream-p s))))
+++  t)
+++
+++(deftest with-open-file.3
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (with-open-file
+++     (s pn :direction :output)
+++     (values))))
+++
+++(deftest with-open-file.4
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (with-open-file
+++     (s pn :direction :output)
+++     (values 1 2 3 4 5 6 7 8)))
+++  1 2 3 4 5 6 7 8)
+++
+++(deftest with-open-file.5
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (with-open-file
+++     (s pn :direction :output)
+++     (declare (ignore s))
+++     (declare (optimize))))
+++  nil)
+++
+++(deftest with-open-file.6
+++  (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (with-open-file
+++     (s pn (cdr '(nil . :direction)) (car '(:output)))
+++     (format s "foo!~%"))
+++    (with-open-file (s pn) (read-line s)))
+++  "foo!" nil)
+++
+++;;; Free declaration scope tests
+++
+++(deftest with-open-file.7
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good))
+++     (with-open-file (s (return-from done x))
+++                     (declare (special x))))))
+++  :good)
+++
+++(deftest with-open-file.8
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good))
+++     (with-open-file (s "with-open-file.lsp" (return-from done x) :input)
+++                     (declare (special x))))))
+++  :good)
+++
+++(deftest with-open-file.9
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good))
+++     (with-open-file (s "with-open-file.lsp" :direction (return-from done x))
+++                     (declare (special x))))))
+++  :good)
+++
+++;;; Test that explicit calls to macroexpand in subforms
+++;;; are done in the correct environment
+++
+++(deftest with-open-file.10
+++  (macrolet
+++   ((%m (z) z))
+++   (let ((pn #p"tmp.dat"))
+++    (delete-all-versions pn)
+++    (with-open-file (s (expand-in-current-env (%m pn)) 
+++                    :direction :output))))
+++  nil)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/with-open-stream.lsp
++@@ -0,0 +1,77 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Mon Dec 13 01:42:59 2004
+++;;;; Contains: Tests of WITH-OPEN-STREAM
+++
+++(in-package :cl-test)
+++
+++(deftest with-open-stream.1
+++  (with-open-stream (os (make-string-output-stream)))
+++  nil)
+++
+++(deftest with-open-stream.2
+++  (with-open-stream (os (make-string-output-stream))
+++                 (declare (ignore os)))
+++  nil)
+++
+++(deftest with-open-stream.3
+++  (with-open-stream (os (make-string-output-stream))
+++                 (declare (ignore os))
+++                 (declare (type string-stream os)))
+++  nil)
+++
+++(deftest with-open-stream.4
+++  (with-open-stream (os (make-string-output-stream))
+++                 (declare (ignore os))
+++                 (values)))
+++
+++(deftest with-open-stream.5
+++  (with-open-stream (os (make-string-output-stream))
+++                 (declare (ignore os))
+++                 (values 'a 'b))
+++  a b)
+++
+++(deftest with-open-stream.6
+++  (let ((s (make-string-output-stream)))
+++    (values
+++     (with-open-stream (os s))
+++     (notnot (typep s 'string-stream))
+++     (open-stream-p s)))
+++  nil t nil)
+++
+++(deftest with-open-stream.7
+++  (let ((s (make-string-input-stream "123")))
+++    (values
+++     (with-open-stream (is s) (read-char s))
+++     (notnot (typep s 'string-stream))
+++     (open-stream-p s)))
+++  #\1 t nil)
+++
+++(deftest with-open-stream.8
+++  (let ((s (make-string-output-stream)))
+++    (values
+++     (block done
+++      (with-open-stream (os s) (return-from done nil)))
+++     (notnot (typep s 'string-stream))
+++     (open-stream-p s)))
+++  nil t nil)
+++
+++(deftest with-open-stream.9
+++  (let ((s (make-string-output-stream)))
+++    (values
+++     (catch 'done
+++      (with-open-stream (os s) (throw 'done nil)))
+++     (notnot (typep s 'string-stream))
+++     (open-stream-p s)))
+++  nil t nil)
+++
+++;;; Free declaration scope
+++
+++(deftest with-open-stream.10
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good))
+++     (with-open-stream (s (return-from done x))
+++                       (declare (special x))))))
+++  :good)
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/with-output-to-string.lsp
++@@ -0,0 +1,129 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sat Feb 14 20:33:51 2004
+++;;;; Contains: Tests of WITH-OUTPUT-TO-STRING
+++
+++(in-package :cl-test)
+++
+++
+++(deftest with-output-to-string.1
+++  (with-output-to-string (s))
+++  "")
+++
+++(deftest with-output-to-string.2
+++  (with-output-to-string (s) (write-char #\3 s))
+++  "3")
+++
+++(deftest with-output-to-string.3
+++  (with-output-to-string (s (make-array 10 :fill-pointer 0
+++                                     :element-type 'character)))
+++  nil)
+++
+++(deftest with-output-to-string.4
+++  :notes (:allow-nil-arrays :nil-vectors-are-strings)
+++  (let ((str (make-array 10 :fill-pointer 0 :element-type 'character)))
+++    (values
+++     (with-output-to-string
+++       (s str :element-type nil)
+++       (write-string "abcdef" s))
+++     str))
+++  "abcdef" "abcdef")
+++
+++(deftest with-output-to-string.5
+++  (with-output-to-string (s (make-array 10 :fill-pointer 0
+++                                     :element-type 'character))
+++                      (values)))
+++
+++(deftest with-output-to-string.6
+++  (with-output-to-string (s (make-array 10 :fill-pointer 0
+++                                     :element-type 'character))
+++                      (values 'a 'b 'c 'd))
+++  a b c d)
+++
+++(deftest with-output-to-string.7
+++  (with-output-to-string (s nil :element-type 'character)
+++                      (write-char #\& s))
+++  "&")
+++
+++(deftest with-output-to-string.8
+++  (let ((str (with-output-to-string (s nil :element-type 'base-char)
+++                                 (write-char #\8 s))))
+++    (assert (typep str 'simple-base-string))
+++    str)
+++  "8")
+++
+++(deftest with-output-to-string.9
+++  :notes (:allow-nil-arrays :nil-vectors-are-strings)
+++  (with-output-to-string (s nil :element-type nil))
+++  "")
+++
+++(deftest with-output-to-string.10
+++  (let* ((s1 (make-array 20 :element-type 'character
+++                      :initial-element #\.))
+++      (s2 (make-array 10 :element-type 'character
+++                      :displaced-to s1
+++                      :displaced-index-offset 5
+++                      :fill-pointer 0)))
+++
+++    (values
+++     (with-output-to-string
+++       (s s2)
+++       (write-string "0123456789" s))
+++     s1
+++     s2))
+++  "0123456789"
+++  ".....0123456789....."
+++  "0123456789")
+++
+++(deftest with-output-to-string.11
+++  (with-output-to-string (s) (declare (optimize safety)))
+++  "")
+++
+++(deftest with-output-to-string.12
+++  (with-output-to-string (s) (declare (optimize safety))
+++                      (declare (optimize (speed 0))))
+++  "")
+++
+++(deftest with-output-to-string.13
+++  (with-output-to-string
+++    (s)
+++    (write-char #\0 s)
+++    (write-char #\4 s)
+++    (write-char #\9 s))
+++  "049")
+++
+++(deftest with-output-to-string.14
+++  (let* ((str1 (make-array '(256) :element-type 'base-char :fill-pointer 0))
+++      (str2 (with-output-to-string
+++              (s nil :element-type 'base-char)
+++              (loop for i below 256
+++                    for c = (code-char i)
+++                    when (typep c 'base-char)
+++                    do (progn (write-char c s)
+++                              (vector-push c str1))))))
+++    (if (string= str1 str2) :good
+++      (list str1 str2)))
+++  :good)
+++
+++;;; Free declaration scope
+++
+++(deftest with-output-to-string.15
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good))
+++     (with-output-to-string (s (return-from done x))
+++                            (declare (special x))))))
+++  :good)
+++
+++(deftest with-output-to-string.16
+++  (block done
+++    (let ((x :bad))
+++      (declare (special x))
+++      (let ((x :good)
+++         (str (make-array '(10) :element-type 'character
+++                          :fill-pointer 0)))
+++     (with-output-to-string (s str :element-type (return-from done x))
+++                            (declare (special x))))))
+++  :good)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/write-char.lsp
++@@ -0,0 +1,51 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Jan 18 20:50:31 2004
+++;;;; Contains: Tests of WRITE-CHAR
+++
+++(in-package :cl-test)
+++
+++(deftest write-char.1
+++  (loop for i from 0 to 255
+++     for c = (code-char i)
+++     when c
+++     unless (string= (with-output-to-string
+++                       (*standard-output*)
+++                       (write-char c))
+++                     (string c))
+++     collect c)
+++  nil)
+++
+++(deftest write-char.2
+++  (with-input-from-string
+++   (is "abcd")
+++   (with-output-to-string
+++     (os)
+++     (let ((*terminal-io* (make-two-way-stream is os)))
+++       (write-char #\$ t)
+++       (close *terminal-io*))))
+++  "$")
+++
+++(deftest write-char.3
+++  (with-output-to-string
+++    (*standard-output*)
+++    (write-char #\: nil))
+++  ":")
+++
+++;;; Error tests
+++
+++(deftest write-char.error.1
+++  (signals-error (write-char) program-error)
+++  t)
+++
+++(deftest write-char.error.2
+++  (signals-error
+++   (with-output-to-string
+++     (s)
+++     (write-char #\a s nil))
+++   program-error)
+++  t)
+++
+++;;; More tests in other files
+++
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/write-line.lsp
++@@ -0,0 +1,165 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Mon Jan 19 06:49:26 2004
+++;;;; Contains: Tests of WRITE-LINE
+++
+++(in-package :cl-test)
+++
+++(deftest write-line.1
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (setq result (multiple-value-list (write-line ""))))
+++     result))
+++  #.(string #\Newline)
+++  (""))
+++
+++(deftest write-line.2
+++  :notes (:nil-vectors-are-strings)
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (setq result
+++          (multiple-value-list
+++           (write-line (make-array '(0) :element-type nil)))))
+++     result))
+++  #.(string #\Newline)
+++  (""))
+++
+++(deftest write-line.3
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (setq result (multiple-value-list (write-line "abcde"))))
+++     result))
+++  #.(concatenate 'string "abcde" (string #\Newline))
+++  ("abcde"))
+++
+++(deftest write-line.4
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list (write-line "abcde" s :start 1))))
+++     result))
+++  #.(concatenate 'string "bcde" (string #\Newline))
+++  ("abcde"))
+++
+++(deftest write-line.5
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list
+++                  (write-line "abcde" s :start 1 :end 3))))
+++     result))
+++  #.(concatenate 'string "bc" (string #\Newline))
+++  ("abcde"))
+++
+++(deftest write-line.6
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list
+++                  (write-line "abcde" s :start 1 :end nil))))
+++     result))
+++  #.(concatenate 'string "bcde" (string #\Newline))
+++  ("abcde"))
+++
+++(deftest write-line.7
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list (write-line "abcde" s :end 3))))
+++     result))
+++  #.(concatenate 'string "abc" (string #\Newline))
+++  ("abcde"))
+++
+++(deftest write-line.8
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list
+++                  (write-line "abcde" s :end 3 :allow-other-keys nil))))
+++     result))
+++  #.(concatenate 'string "abc" (string #\Newline))
+++  ("abcde"))
+++
+++(deftest write-line.9
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result
+++          (multiple-value-list
+++           (write-line "abcde" s :end 3 :allow-other-keys t :foo 'bar))))
+++     result))
+++  #.(concatenate 'string "abc" (string #\Newline))
+++  ("abcde"))
+++
+++(deftest write-line.10
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list
+++                  (write-line "abcde" s :end 3 :end 2))))
+++     result))
+++  #.(concatenate 'string "abc" (string #\Newline))
+++  ("abcde"))
+++
+++(deftest write-line.11
+++  (with-input-from-string
+++   (is "abcd")
+++   (with-output-to-string
+++     (os)
+++     (let ((*terminal-io* (make-two-way-stream is os)))
+++       (write-line "951" t)
+++       (close *terminal-io*))))
+++  #.(concatenate 'string "951" (string #\Newline)))
+++
+++(deftest write-line.12
+++  (with-output-to-string
+++    (*standard-output*)
+++    (write-line "-=|!" nil))
+++  #.(concatenate 'string "-=|!" (string #\Newline)))
+++
+++;;; Specialized string tests
+++
+++(deftest write-line.13
+++  (do-special-strings
+++   (s "abcde" nil)
+++   (assert (equal
+++         (with-output-to-string
+++           (*standard-output*)
+++           (multiple-value-list (write-line "abcde")))
+++         #.(concatenate 'string "abcde" (string #\Newline)))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest write-line.error.1
+++  (signals-error (write-line) program-error)
+++  t)
+++
+++(deftest write-line.error.2
+++  (signals-error (write-line "" *standard-output* :start) program-error)
+++  t)
+++
+++(deftest write-line.error.3
+++  (signals-error (write-line "" *standard-output* :foo nil) program-error)
+++  t)
+++
+++(deftest write-line.error.4
+++  (signals-error (write-line "" *standard-output*
+++                            :allow-other-keys nil
+++                            :foo nil)
+++              program-error)
+++  t)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/write-sequence.lsp
++@@ -0,0 +1,225 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Wed Jan 21 04:07:58 2004
+++;;;; Contains: Tests of WRITE-SEQUENCE
+++
+++(in-package :cl-test)
+++
+++(defmacro def-write-sequence-test (name input args &rest expected)
+++  `(deftest ,name
+++     (let ((s ,input))
+++       (with-output-to-string
+++      (os)
+++      (assert (eq (write-sequence s os ,@args) s))))
+++     ,@expected))
+++
+++;;; on strings
+++
+++(def-write-sequence-test write-sequence.string.1 "abcde" () "abcde")
+++(def-write-sequence-test write-sequence.string.2 "abcde" (:start 1) "bcde")
+++(def-write-sequence-test write-sequence.string.3 "abcde" (:end 3) "abc")
+++(def-write-sequence-test write-sequence.string.4 "abcde"
+++  (:start 1 :end 4) "bcd")
+++(def-write-sequence-test write-sequence.string.5 "abcde" (:end nil) "abcde")
+++(def-write-sequence-test write-sequence.string.6 "abcde" (:start 3 :end 3) "")
+++(def-write-sequence-test write-sequence.string.7 "abcde"
+++  (:end nil :start 1) "bcde")
+++(def-write-sequence-test write-sequence.string.8 "abcde"
+++  (:allow-other-keys nil) "abcde")
+++(def-write-sequence-test write-sequence.string.9 "abcde"
+++  (:allow-other-keys t :foo nil) "abcde")
+++(def-write-sequence-test write-sequence.string.10 "abcde"
+++  (:allow-other-keys t :allow-other-keys nil :foo nil) "abcde")
+++(def-write-sequence-test write-sequence.string.11 "abcde"
+++  (:bar 'x :allow-other-keys t) "abcde")
+++(def-write-sequence-test write-sequence.string.12 "abcde"
+++  (:start 1 :end 4 :start 2 :end 3) "bcd")
+++(def-write-sequence-test write-sequence.string.13 "" () "")
+++
+++(defmacro def-write-sequence-special-test (name string args expected)
+++  `(deftest ,name
+++     (let ((str ,string)
+++        (expected ,expected))
+++       (do-special-strings
+++     (s str nil)
+++     (let ((out (with-output-to-string
+++                  (os)
+++                  (assert (eq (write-sequence s os ,@args) s)))))
+++       (assert (equal out expected)))))
+++     nil))
+++
+++(def-write-sequence-special-test write-sequence.string.14 "12345" () "12345")
+++(def-write-sequence-special-test write-sequence.string.15 "12345" (:start 1 :end 3) "23")
+++
+++;;; on lists
+++
+++(def-write-sequence-test write-sequence.list.1 (coerce "abcde" 'list)
+++  () "abcde")
+++(def-write-sequence-test write-sequence.list.2 (coerce "abcde" 'list)
+++  (:start 1) "bcde")
+++(def-write-sequence-test write-sequence.list.3 (coerce "abcde" 'list)
+++  (:end 3) "abc")
+++(def-write-sequence-test write-sequence.list.4 (coerce "abcde" 'list)
+++  (:start 1 :end 4) "bcd")
+++(def-write-sequence-test write-sequence.list.5 (coerce "abcde" 'list)
+++  (:end nil) "abcde")
+++(def-write-sequence-test write-sequence.list.6 (coerce "abcde" 'list)
+++  (:start 3 :end 3) "")
+++(def-write-sequence-test write-sequence.list.7 (coerce "abcde" 'list)
+++  (:end nil :start 1) "bcde")
+++(def-write-sequence-test write-sequence.list.8 () () "")
+++
+++
+++;;; on vectors
+++
+++(def-write-sequence-test write-sequence.simple-vector.1
+++  (coerce "abcde" 'simple-vector) () "abcde")
+++(def-write-sequence-test write-sequence.simple-vector.2
+++  (coerce "abcde" 'simple-vector) (:start 1) "bcde")
+++(def-write-sequence-test write-sequence.simple-vector.3
+++  (coerce "abcde" 'simple-vector) (:end 3) "abc")
+++(def-write-sequence-test write-sequence.simple-vector.4
+++  (coerce "abcde" 'simple-vector) (:start 1 :end 4) "bcd")
+++(def-write-sequence-test write-sequence.simple-vector.5
+++  (coerce "abcde" 'simple-vector) (:end nil) "abcde")
+++(def-write-sequence-test write-sequence.simple-vector.6
+++  (coerce "abcde" 'simple-vector) (:start 3 :end 3) "")
+++(def-write-sequence-test write-sequence.simple-vector.7
+++  (coerce "abcde" 'simple-vector) (:end nil :start 1) "bcde")
+++(def-write-sequence-test write-sequence.simple-vector.8 #() () "")
+++
+++;;; on vectors with fill pointers
+++
+++(def-write-sequence-test write-sequence.fill-vector.1
+++  (make-array 10 :initial-contents "abcde     " :fill-pointer 5) () "abcde")
+++(def-write-sequence-test write-sequence.fill-vector.2
+++  (make-array 10 :initial-contents "abcde     " :fill-pointer 5)
+++  (:start 1) "bcde")
+++(def-write-sequence-test write-sequence.fill-vector.3
+++  (make-array 10 :initial-contents "abcde     " :fill-pointer 5)
+++  (:end 3) "abc")
+++(def-write-sequence-test write-sequence.fill-vector.4
+++  (make-array 10 :initial-contents "abcde     " :fill-pointer 5)
+++  (:start 1 :end 4) "bcd")
+++(def-write-sequence-test write-sequence.fill-vector.5
+++  (make-array 10 :initial-contents "abcde     " :fill-pointer 5)
+++  (:end nil) "abcde")
+++(def-write-sequence-test write-sequence.fill-vector.6
+++  (make-array 10 :initial-contents "abcde     " :fill-pointer 5)
+++  (:start 3 :end 3) "")
+++(def-write-sequence-test write-sequence.fill-vector.7
+++  (make-array 10 :initial-contents "abcde     " :fill-pointer 5)
+++  (:end nil :start 1) "bcde")
+++
+++;;; on bit vectors
+++
+++(defmacro def-write-sequence-bv-test (name input args expected)
+++  `(deftest ,name
+++     (let ((s ,input)
+++        (expected ,expected))
+++       (with-open-file
+++     (os "tmp.dat" :direction :output
+++         :element-type '(unsigned-byte 8)
+++         :if-exists :supersede)
+++      (assert (eq (write-sequence s os ,@args) s)))
+++       (with-open-file
+++     (is "tmp.dat" :direction :input
+++         :element-type '(unsigned-byte 8))
+++      (loop for i from 0 below (length expected)
+++            for e = (elt expected i)
+++            always (eql (read-byte is) e))))
+++     t))
+++
+++(def-write-sequence-bv-test write-sequence.bv.1 #*00111010
+++  () #*00111010)
+++(def-write-sequence-bv-test write-sequence.bv.2 #*00111010
+++  (:start 1) #*0111010)
+++(def-write-sequence-bv-test write-sequence.bv.3 #*00111010
+++  (:end 5) #*00111)
+++(def-write-sequence-bv-test write-sequence.bv.4 #*00111010
+++  (:start 1 :end 6) #*01110)
+++(def-write-sequence-bv-test write-sequence.bv.5 #*00111010
+++  (:start 1 :end nil) #*0111010)
+++(def-write-sequence-bv-test write-sequence.bv.6 #*00111010
+++  (:start 1 :end nil :end 4) #*0111010)
+++
+++
+++;;; Error tests
+++
+++(deftest write-sequence.error.1
+++  (signals-error (write-sequence) program-error)
+++  t)
+++
+++(deftest write-sequence.error.2
+++  (signals-error (write-sequence "abcde") program-error)
+++  t)
+++
+++(deftest write-sequence.error.3
+++  (signals-error (write-sequence '(#\a . #\b) *standard-output*) type-error)
+++  t)
+++
+++(deftest write-sequence.error.4
+++  (signals-error (write-sequence #\a *standard-output*) type-error)
+++  t)
+++
+++(deftest write-sequence.error.5
+++  (signals-error (write-sequence "ABC" *standard-output* :start -1) type-error)
+++  t)
+++
+++(deftest write-sequence.error.6
+++  (signals-error (write-sequence "ABC" *standard-output* :start 'x) type-error)
+++  t)
+++
+++(deftest write-sequence.error.7
+++  (signals-error (write-sequence "ABC" *standard-output* :start 0.0)
+++              type-error)
+++  t)
+++
+++(deftest write-sequence.error.8
+++  (signals-error (write-sequence "ABC" *standard-output* :end -1)
+++              type-error)
+++  t)
+++
+++(deftest write-sequence.error.9
+++  (signals-error (write-sequence "ABC" *standard-output* :end 'x)
+++              type-error)
+++  t)
+++
+++(deftest write-sequence.error.10
+++  (signals-error (write-sequence "ABC" *standard-output* :end 2.0)
+++              type-error)
+++  t)
+++
+++(deftest write-sequence.error.11
+++  (signals-error (write-sequence "abcde" *standard-output*
+++                              :foo nil) program-error)
+++  t)
+++      
+++(deftest write-sequence.error.12
+++  (signals-error (write-sequence "abcde" *standard-output*
+++                              :allow-other-keys nil :foo t)
+++              program-error)
+++  t)
+++
+++(deftest write-sequence.error.13
+++  (signals-error (write-sequence "abcde" *standard-output* :start)
+++              program-error)
+++  t)
+++
+++(deftest write-sequence.error.14
+++  (check-type-error #'(lambda (x) (write-sequence x *standard-output*))
+++                 #'sequencep)
+++  nil)
+++
+++(deftest write-sequence.error.15
+++  (check-type-error #'(lambda (x) (write-sequence "abcde" *standard-output*
+++                                               :start x))
+++                 (typef 'unsigned-byte))
+++  nil)
+++
+++(deftest write-sequence.error.16
+++  (check-type-error #'(lambda (x) (write-sequence "abcde" *standard-output*
+++                                               :end x))
+++                 (typef '(or null unsigned-byte)))
+++  nil)
+++
++--- /dev/null
+++++ gcl-2.6.12/ansi-tests/write-string.lsp
++@@ -0,0 +1,156 @@
+++;-*- Mode:     Lisp -*-
+++;;;; Author:   Paul Dietz
+++;;;; Created:  Sun Jan 18 21:13:32 2004
+++;;;; Contains: Tests of WRITE-STRING
+++
+++(in-package :cl-test)
+++
+++(deftest write-string.1
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (setq result (multiple-value-list (write-string ""))))
+++     result))
+++  "" (""))
+++
+++(deftest write-string.2
+++  :notes (:nil-vectors-are-strings)
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (setq result
+++          (multiple-value-list
+++           (write-string (make-array '(0) :element-type nil)))))
+++     result))
+++  "" (""))
+++
+++(deftest write-string.3
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (*standard-output*)
+++       (setq result (multiple-value-list (write-string "abcde"))))
+++     result))
+++  "abcde" ("abcde"))
+++
+++(deftest write-string.4
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list (write-string "abcde" s :start 1))))
+++     result))
+++  "bcde" ("abcde"))
+++
+++(deftest write-string.5
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list
+++                  (write-string "abcde" s :start 1 :end 3))))
+++     result))
+++  "bc" ("abcde"))
+++
+++(deftest write-string.6
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list
+++                  (write-string "abcde" s :start 1 :end nil))))
+++     result))
+++  "bcde" ("abcde"))
+++
+++(deftest write-string.7
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list (write-string "abcde" s :end 3))))
+++     result))
+++  "abc" ("abcde"))
+++
+++(deftest write-string.8
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list
+++                  (write-string "abcde" s :end 3 :allow-other-keys nil))))
+++     result))
+++  "abc" ("abcde"))
+++
+++(deftest write-string.9
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result
+++          (multiple-value-list
+++           (write-string "abcde" s :end 3 :allow-other-keys t :foo 'bar))))
+++     result))
+++  "abc" ("abcde"))
+++
+++(deftest write-string.10
+++  (let (result)
+++    (values
+++     (with-output-to-string
+++       (s)
+++       (setq result (multiple-value-list
+++                  (write-string "abcde" s :end 3 :end 2))))
+++     result))
+++  "abc" ("abcde"))
+++
+++(deftest write-string.11
+++  (with-input-from-string
+++   (is "abcd")
+++   (with-output-to-string
+++     (os)
+++     (let ((*terminal-io* (make-two-way-stream is os)))
+++       (write-string "951" t)
+++       (close *terminal-io*))))
+++  "951")
+++
+++(deftest write-string.12
+++  (with-output-to-string
+++    (*standard-output*)
+++    (write-string "-=|!" nil))
+++  "-=|!")
+++
+++;;; Specialized string tests
+++
+++(deftest write-string.13
+++  (let (result)
+++    (do-special-strings
+++     (s "abcde" nil)
+++     (assert (equal
+++           (with-output-to-string
+++             (*standard-output*)
+++             (setq result (multiple-value-list (write-string "abcde"))))
+++           "abcde"))
+++     (assert (equal result '("abcde")))))
+++  nil)
+++
+++;;; Error tests
+++
+++(deftest write-string.error.1
+++  (signals-error (write-string) program-error)
+++  t)
+++
+++(deftest write-string.error.2
+++  (signals-error (write-string "" *standard-output* :start) program-error)
+++  t)
+++
+++(deftest write-string.error.3
+++  (signals-error (write-string "" *standard-output* :foo nil) program-error)
+++  t)
+++
+++(deftest write-string.error.4
+++  (signals-error (write-string "" *standard-output*
+++                            :allow-other-keys nil
+++                            :foo nil)
+++              program-error)
+++  t)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpfun.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpfun.lsp
++@@ -556,6 +556,14 @@
++         ((null type) nil)
++         ((setq f (assoc type *type-alist* :test 'equal))
++          (list (cdr f) x))
+++        ((setq f (when (symbolp type) (get type 'si::type-predicate)))
+++         (list f x))
+++        ((and (consp type) (eq (car type) 'or))
+++         `(or ,@(mapcar (lambda (y) `(typep ,x ',y)) (cdr type))))
+++        ((and (consp type) (eq (car type) 'member))
+++         `(or ,@(mapcar (lambda (y) `(eql ,x ',y)) (cdr type))))
+++        ((and (consp type) (eq (car type) 'eql))
+++         `(eql ,x ',(cadr type)))
++         ((and (consp type)
++               (or (and (eq (car type) 'vector)
++                        (null (cddr type)))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmplabel.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmplabel.lsp
++@@ -44,7 +44,7 @@
++   `(when (cdr ,label) (wt-nl "goto T" (car ,label) ";")(wt-nl1 "T" (car ,label) ":;")))
++ 
++ (defmacro wt-go (label)
++-  `(progn (rplacd ,label t) (wt "goto T" (car ,label) ";")))
+++  `(progn (rplacd ,label t) (wt "goto T" (car ,label) ";")(wt-nl)))
++ 
++ 
++ (defvar *restore-avma* nil)
++--- gcl-2.6.12.orig/cmpnew/gcl_cmplam.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmplam.lsp
++@@ -407,6 +407,12 @@
++            (c2lambda-expr-without-key lambda-list body)))
++   ))
++ 
+++(defun decl-body-safety (body)
+++  (case (car body)
+++    (decl-body (or (cadr (assoc 'safety (caddr body))) 0))
+++    ((let let*) (decl-body-safety (car (last body))))
+++    (otherwise 0)))
+++
++ (defun c2lambda-expr-without-key
++        (lambda-list body
++         &aux (requireds (car lambda-list))
++@@ -439,7 +445,7 @@
++         (when rest (do-decl rest))
++         )
++   ;;; check arguments
++-  (when (or *safe-compile* *compiler-check-args*)
+++  (when (or *safe-compile* *compiler-check-args* (plusp (decl-body-safety body)));FIXME
++     (cond ((or rest optionals)
++            (when requireds
++              (wt-nl "if(vs_top-vs_base<" (length requireds)
++@@ -448,7 +454,7 @@
++              (wt-nl "if(vs_top-vs_base>"
++                     (+ (length requireds) (length optionals))
++                     ") too_many_arguments();")))
++-          (t (wt-nl "check_arg(" (length requireds) ");"))))
+++          (t (when requireds (wt-nl "check_arg(" (length requireds) ");")))))
++ 
++   ;;; Allocate the parameters.
++   (dolist** (var requireds) (setf (var-ref var) (vs-push)))
++@@ -562,7 +568,7 @@
++                   (when (cadddr kwd) (do-decl (cadddr kwd))))
++         )
++   ;;; Check arguments.
++-  (when (and (or *safe-compile* *compiler-check-args*) requireds)
+++  (when (and (or *safe-compile* *compiler-check-args* (plusp (decl-body-safety body))) requireds);FIXME
++         (when requireds
++               (wt-nl "if(vs_top-vs_base<" (length requireds)
++                      ") too_few_arguments();")))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -52,7 +52,7 @@
++ (defvar *cmpinclude-string* 
++   (si::file-to-string 
++    (namestring
++-    (make-pathname :directory (append (pathname-directory si::*system-directory*) (list :parent "h"))
+++    (make-pathname :directory (append (pathname-directory si::*system-directory*) (list :back "h"))
++                 :name "cmpinclude" :type "h"))))
++ 
++ 
++@@ -160,7 +160,7 @@
++ 
++ 
++ (defun compile-file1 (input-pathname
++-                      &key (output-file (truename input-pathname))
+++                      &key (output-file (merge-pathnames ".o" (truename input-pathname)))
++                            (o-file t)
++                            (c-file *default-c-file*)
++                            (h-file *default-h-file*)
++@@ -175,7 +175,7 @@
++                         (*c-debug* c-debug)
++                         (*compile-print* (or print *compile-print*))
++                            (*package* *package*)
++-                        (*DEFAULT-PATHNAME-DEFAULTS* #"")
+++                        (*DEFAULT-PATHNAME-DEFAULTS* #p"")
++                         (*data* (list (make-array 50 :fill-pointer 0 :adjustable t) nil nil))
++                         *init-name*  
++                         (*fasd-data* *fasd-data*)
++@@ -186,25 +186,25 @@
++   (cond (*compiler-in-use*
++          (format t "~&The compiler was called recursively.~%~
++ Cannot compile ~a.~%"
++-                 (namestring (merge-pathnames input-pathname #".lsp")))
+++                 (namestring (merge-pathnames input-pathname #p".lsp")))
++          (setq *error-p* t)
++          (return-from compile-file1 (values)))
++         (t (setq *error-p* nil)
++            (setq *compiler-in-use* t)))  
++ 
++-  (unless (probe-file (merge-pathnames input-pathname #".lsp"))
+++  (unless (probe-file (merge-pathnames input-pathname #p".lsp"))
++     (format t "~&The source file ~a is not found.~%"
++-            (namestring (merge-pathnames input-pathname #".lsp")))
+++            (namestring (merge-pathnames input-pathname #p".lsp")))
++     (setq *error-p* t)
++     (return-from compile-file1 (values)))
++ 
++   (when *compile-verbose*
++-    (format t "~&Compiling ~a.~%" (namestring (merge-pathnames input-pathname #".lsp"))))
+++    (format t "~&Compiling ~a.~%" (namestring (merge-pathnames input-pathname #p".lsp"))))
++ 
++   (and *record-call-info* (clear-call-table))
++ 
++   (with-open-file
++-   (*compiler-input* (merge-pathnames input-pathname #".lsp"))
+++   (*compiler-input* (merge-pathnames input-pathname #p".lsp"))
++    
++    
++    (cond ((numberp *split-files*)
++@@ -232,8 +232,11 @@ Cannot compile ~a.~%"
++       (device (or (and (not (null output-file))
++                        (pathname-device output-file))
++                   (pathname-device input-pathname)))
+++      (typ (or (and (not (null output-file))
+++                    (pathname-type output-file))
+++               "o"))
++       
++-         (o-pathname (get-output-pathname o-file "o" name dir device))
+++         (o-pathname (get-output-pathname o-file typ name dir device))
++          (c-pathname (get-output-pathname c-file "c" name dir device))
++          (h-pathname (get-output-pathname h-file "h" name dir device))
++          (data-pathname (get-output-pathname data-file "data" name dir device)))
++@@ -351,7 +354,7 @@ Cannot compile ~a.~%"
++     (wt-data1 form)  ;; this binds all the print stuff
++     ))
++ 
++-(defun compile (name &optional def &aux tem gaz (*default-pathname-defaults* #"."))
+++(defun compile (name &optional def &aux tem gaz (*default-pathname-defaults* #p"."))
++ 
++   (cond ((not(symbolp name)) (error "Must be a name"))
++      ((and (consp def)
++@@ -797,7 +800,7 @@ Cannot compile ~a.~%"
++ 
++     (with-open-file (st (namestring map) :direction :output))
++     (safe-system 
++-     (let* ((par (namestring (make-pathname :directory '(:parent))))
+++     (let* ((par (namestring (make-pathname :directory '(:back))))
++          (i (concatenate 'string " " par))
++          (j (concatenate 'string " " si::*system-directory* par)))
++        (format nil "~a ~a ~a ~a -L~a ~a ~a ~a"
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpopt.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpopt.lsp
++@@ -1170,6 +1170,14 @@ type_of(#0)==t_complex")
++  (push '((t) t #.(flags ans)"coerce_to_string(#0)")
++    (get 'string 'inline-always))
++ 
+++;;PATHNAME-DESIGNATORP
+++(push '((t) boolean #.(flags)"pathname_designatorp(#0)")
+++      (get 'si::pathname-designatorp 'inline-always))
+++
+++;;PATHNAMEP
+++(push '((t) boolean #.(flags)"pathnamep(#0)")
+++      (get 'pathnamep 'inline-always))
+++
++ ;;STRINGP
++  (push '((t) boolean #.(flags)"type_of(#0)==t_string")
++    (get 'stringp 'inline-always))
++--- gcl-2.6.12.orig/cmpnew/gcl_cmptop.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmptop.lsp
++@@ -209,7 +209,7 @@
++ 
++   (cond ((not sp) "code")
++      ((not (pathnamep p)) (init-name (pathname p) sp gp dc nt))
++-     (gp (init-name (truename (merge-pathnames p #".lsp")) sp nil dc nt))
+++     (gp (init-name (truename (merge-pathnames p #p".lsp")) sp nil dc nt))
++      ((pathname-type p)
++       (init-name (make-pathname
++                      :host (pathname-host p)
++--- gcl-2.6.12.orig/cmpnew/gcl_collectfn.lsp
+++++ gcl-2.6.12/cmpnew/gcl_collectfn.lsp
++@@ -240,22 +240,20 @@
++ 
++ (defvar *warn-on-multiple-fn-definitions* t)
++ 
++-(defun add-fn-data (lis &aux tem file)
++-  (let ((file (and (setq file (si::fp-input-stream *standard-input*))
++-                (truename file))))
+++(defun add-fn-data (lis &aux tem (file *load-truename*))
++   (dolist (v lis)
++-       (cond ((eql (fn-name v) 'other-form)
++-              (setf (fn-name v) (intern
++-                                 (concatenate 'string "OTHER-FORM-"
++-                                              (namestring file))))
++-              (setf (get (fn-name v) 'other-form) t)))
++-       (setf (gethash (fn-name v) *call-table*) v)
++-       (when *warn-on-multiple-fn-definitions*
++-         (when (setq tem (gethash (fn-name v) *file-table*))
++-           (unless (equal tem file)
++-             (warn 'simple-warning :format-control "~% ~a redefined in ~a. Originally in ~a."
++-                   :format-arguments (list (fn-name v) file tem)))))
++-       (setf (gethash (fn-name v) *file-table*) file))))
+++    (cond ((eql (fn-name v) 'other-form)
+++        (setf (fn-name v) (intern
+++                           (concatenate 'string "OTHER-FORM-"
+++                                        (namestring file))))
+++        (setf (get (fn-name v) 'other-form) t)))
+++    (setf (gethash (fn-name v) *call-table*) v)
+++    (when *warn-on-multiple-fn-definitions*
+++      (when (setq tem (gethash (fn-name v) *file-table*))
+++     (unless (equal tem file)
+++       (warn 'simple-warning :format-control "~% ~a redefined in ~a. Originally in ~a."
+++             :format-arguments (list (fn-name v) file tem)))))
+++    (setf (gethash (fn-name v) *file-table*) file)))
++ 
++ (defun dump-fn-data (&optional (file "fn-data.lsp")
++                             &aux (*package* (find-package "COMPILER"))
++--- gcl-2.6.12.orig/cmpnew/gcl_lfun_list.lsp
+++++ gcl-2.6.12/cmpnew/gcl_lfun_list.lsp
++@@ -20,7 +20,6 @@
++ (DEFSYSFUN 'CHAR-NAME "Lchar_name" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'RASSOC-IF "Lrassoc_if" '(T T) 'T NIL NIL) 
++ (DEFSYSFUN 'MAKE-LIST "Lmake_list" '(T *) 'T NIL NIL) 
++-(DEFSYSFUN 'HOST-NAMESTRING "Lhost_namestring" '(T) 'STRING NIL NIL) 
++ (DEFSYSFUN 'MAKE-ECHO-STREAM "Lmake_echo_stream" '(T T) 'T NIL NIL) 
++ ;(DEFSYSFUN 'NTH "Lnth" '(T T) 'T NIL NIL) 
++ (DEFSYSFUN 'SIN "Lsin" '(T) 'T NIL NIL) 
++@@ -31,8 +30,6 @@
++ ;#-clcs (DEFSYSFUN 'OPEN "Lopen" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'BOTH-CASE-P "Lboth_case_p" '(T) 'T NIL T) 
++ (DEFSYSFUN 'NULL "Lnull" '(T) 'T NIL T) 
++-(DEFSYSFUN 'RENAME-FILE "Lrename_file" '(T T) 'T NIL NIL) 
++-(DEFSYSFUN 'FILE-AUTHOR "Lfile_author" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING-CAPITALIZE "Lstring_capitalize" '(T *) 'STRING NIL
++     NIL) 
++ (DEFSYSFUN 'MACROEXPAND "Lmacroexpand" '(T *) '(VALUES T T) NIL NIL) 
++@@ -45,7 +42,6 @@
++ (DEFSYSFUN 'LENGTH "Llength" '(T) 'FIXNUM T NIL) 
++ (DEFSYSFUN 'RASSOC "Lrassoc" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'PPRINT "Lpprint" '(T *) 'T NIL NIL) 
++-(DEFSYSFUN 'PATHNAME-HOST "Lpathname_host" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'NSUBST-IF-NOT "Lnsubst_if_not" '(T T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'FILE-POSITION "Lfile_position" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING< "Lstring_l" '(T T *) 'T NIL NIL) 
++@@ -58,14 +54,11 @@
++ (DEFSYSFUN 'STRING>= "Lstring_ge" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'REALPART "Lrealpart" '(T) 'T NIL NIL) 
++ ;;broken on suns..
++-;(DEFSYSFUN 'USER-HOMEDIR-PATHNAME "Luser_homedir_pathname" '(*) 'T NIL
++-;    NIL) 
++ (DEFSYSFUN 'NBUTLAST "Lnbutlast" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'ARRAY-DIMENSION "Larray_dimension" '(T T) 'FIXNUM NIL NIL) 
++ (DEFSYSFUN 'CDR "Lcdr" '(T) 'T NIL NIL) 
++ ;(DEFSYSFUN 'EQL "Leql" '(T T) 'T NIL T) 
++ (DEFSYSFUN 'LOG "Llog" '(T *) 'T NIL NIL) 
++-(DEFSYSFUN 'DIRECTORY "Ldirectory" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING-NOT-EQUAL "Lstring_not_equal" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'SHADOWING-IMPORT "Lshadowing_import" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'MAPC "Lmapc" '(T T *) 'T NIL NIL) 
++@@ -78,8 +71,6 @@
++ (DEFSYSFUN 'MAKE-SYMBOL "Lmake_symbol" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING-RIGHT-TRIM "Lstring_right_trim" '(T T) 'STRING NIL
++     NIL) 
++-(DEFSYSFUN 'ENOUGH-NAMESTRING "Lenough_namestring" '(T *) 'STRING NIL
++-    NIL) 
++ (DEFSYSFUN 'PRINT "Lprint" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'CDDAAR "Lcddaar" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'CDADAR "Lcdadar" '(T) 'T NIL NIL) 
++@@ -187,7 +178,6 @@
++     NIL) 
++ (DEFSYSFUN 'COPY-ALIST "Lcopy_alist" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'ATAN "Latan" '(T *) 'T NIL NIL) 
++-(DEFSYSFUN 'DELETE-FILE "Ldelete_file" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'FLOAT-RADIX "Lfloat_radix" '(T) 'FIXNUM NIL NIL) 
++ (DEFSYSFUN 'SYMBOL-NAME "Lsymbol_name" '(T) 'STRING NIL NIL) 
++ (DEFSYSFUN 'CLEAR-INPUT "Lclear_input" '(*) 'T NIL NIL) 
++@@ -215,8 +205,6 @@
++ (DEFSYSFUN 'SXHASH "Lsxhash" '(T) 'FIXNUM NIL NIL) 
++ (DEFSYSFUN 'LISTEN "Llisten" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'ARRAYP "Larrayp" '(T) 'T NIL T) 
++-(DEFSYSFUN 'MAKE-PATHNAME "Lmake_pathname" '(*) 'T NIL NIL) 
++-(DEFSYSFUN 'PATHNAME-TYPE "Lpathname_type" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'FUNCALL "Lfuncall" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'CLRHASH "Lclrhash" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'GRAPHIC-CHAR-P "Lgraphic_char_p" '(T) 'T NIL T) 
++@@ -227,14 +215,12 @@
++ (DEFSYSFUN 'SUBST-IF "Lsubst_if" '(T T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'COMPLEXP "Lcomplexp" '(T) 'T NIL T) 
++ (DEFSYSFUN 'READ-LINE "Lread_line" '(*) '(VALUES T T) NIL NIL) 
++-(DEFSYSFUN 'PATHNAMEP "Lpathnamep" '(T) 'T NIL T) 
++ (DEFSYSFUN 'MAX "Lmax" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'IN-PACKAGE "Lin_package" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'READTABLEP "Lreadtablep" '(T) 'T NIL T) 
++ (DEFSYSFUN 'FLOAT-SIGN "Lfloat_sign" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'CHARACTERP "Lcharacterp" '(T) 'T NIL T) 
++ (DEFSYSFUN 'READ "Lread" '(*) 'T NIL NIL) 
++-(DEFSYSFUN 'NAMESTRING "Lnamestring" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'UNREAD-CHAR "Lunread_char" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'CDAAR "Lcdaar" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'CADAR "Lcadar" '(T) 'T NIL NIL) 
++@@ -267,10 +253,8 @@
++ (DEFSYSFUN 'PACKAGEP "Lpackagep" '(T) 'T NIL T) 
++ (DEFSYSFUN 'INPUT-STREAM-P "Linput_stream_p" '(T) 'T NIL T) 
++ (DEFSYSFUN '>= "Lmonotonically_nonincreasing" '(T *) 'T NIL T) 
++-(DEFSYSFUN 'PATHNAME "Lpathname" '(T) 'T NIL NIL) 
++ ;(DEFSYSFUN 'EQ "Leq" '(T T) 'T NIL T) 
++ (DEFSYSFUN 'MAKE-CHAR "Lmake_char" '(T *) 'CHARACTER NIL NIL) 
++-(DEFSYSFUN 'FILE-NAMESTRING "Lfile_namestring" '(T) 'STRING NIL NIL) 
++ (DEFSYSFUN 'CHARACTER "Lcharacter" '(T) 'CHARACTER NIL NIL) 
++ (DEFSYSFUN 'SYMBOL-FUNCTION "Lsymbol_function" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'CONSTANTP "Lconstantp" '(T) 'T NIL T) 
++@@ -307,13 +291,9 @@
++ (DEFSYSFUN 'NUMBERP "Lnumberp" '(T) 'T NIL T) 
++ (DEFSYSFUN 'COPY-READTABLE "Lcopy_readtable" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'RANDOM-STATE-P "Lrandom_state_p" '(T) 'T NIL T) 
++-(DEFSYSFUN 'DIRECTORY-NAMESTRING "Ldirectory_namestring" '(T) 'STRING
++-    NIL NIL) 
++ (DEFSYSFUN 'STANDARD-CHAR-P "Lstandard_char_p" '(T) 'T NIL T) 
++-(DEFSYSFUN 'TRUENAME "Ltruename" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'IDENTITY "Lidentity" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'NREVERSE "Lnreverse" '(T) 'T NIL NIL) 
++-(DEFSYSFUN 'PATHNAME-DEVICE "Lpathname_device" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'UNINTERN "Lunintern" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'UNEXPORT "Lunexport" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'FLOAT-PRECISION "Lfloat_precision" '(T) 'FIXNUM NIL NIL) 
++@@ -324,7 +304,7 @@
++ (DEFSYSFUN 'READ-CHAR-NO-HANG "Lread_char_no_hang" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'FRESH-LINE "Lfresh_line" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'WRITE-CHAR "Lwrite_char" '(T *) 'T NIL NIL) 
++-(DEFSYSFUN 'PARSE-NAMESTRING "Lparse_namestring" '(T *) 'T NIL NIL) 
+++;(DEFSYSFUN 'PARSE-NAMESTRING "Lparse_namestring" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING-NOT-LESSP "Lstring_not_lessp" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'CHAR "Lchar" '(T T) 'CHARACTER NIL NIL) 
++ (DEFSYSFUN 'AREF "Laref" '(T *) 'T NIL NIL) 
++@@ -338,7 +318,6 @@
++ (DEFSYSFUN 'DIGIT-CHAR-P "Ldigit_char_p" '(T *) 'T NIL NIL) 
++ ;; #-clcs (DEFSYSFUN 'ERROR "Lerror" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'CHAR/= "Lchar_neq" '(T *) 'T NIL T) 
++-(DEFSYSFUN 'PATHNAME-DIRECTORY "Lpathname_directory" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'CDAAAR "Lcdaaar" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'CADAAR "Lcadaar" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'CAADAR "Lcaadar" '(T) 'T NIL NIL) 
++@@ -349,7 +328,6 @@
++ (DEFSYSFUN 'FORMAT "Lformat" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'COMPILED-FUNCTION-P "Lcompiled_function_p" '(T) 'T NIL T) 
++ (DEFSYSFUN 'SUBLIS "Lsublis" '(T T *) 'T NIL NIL) 
++-(DEFSYSFUN 'PATHNAME-NAME "Lpathname_name" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'IMPORT "Limport" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'LOGXOR "Llogxor" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'RASSOC-IF-NOT "Lrassoc_if_not" '(T T) 'T NIL NIL) 
++@@ -366,9 +344,7 @@
++ (DEFSYSFUN 'GET-PROPERTIES "Lget_properties" '(T T) '* NIL NIL) 
++ (DEFSYSFUN 'STRING<= "Lstring_le" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'EVALHOOK "siLevalhook" '(T T T *) 'T NIL NIL) 
++-(DEFSYSFUN 'FILE-WRITE-DATE "Lfile_write_date" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'LOGCOUNT "Llogcount" '(T) 'T NIL NIL) 
++-(DEFSYSFUN 'MERGE-PATHNAMES "Lmerge_pathnames" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'MEMBER-IF "Lmember_if" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'READ-BYTE "Lread_byte" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'SIMPLE-VECTOR-P "Lsimple_vector_p" '(T) 'T NIL T) 
++@@ -381,10 +357,8 @@
++ (DEFSYSFUN 'GET "Lget" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'MOD "Lmod" '(T T) 'T NIL NIL) 
++ (DEFSYSFUN 'DIGIT-CHAR "Ldigit_char" '(T *) 'CHARACTER NIL NIL) 
++-(DEFSYSFUN 'PROBE-FILE "Lprobe_file" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING-LEFT-TRIM "Lstring_left_trim" '(T T) 'STRING NIL
++     NIL) 
++-(DEFSYSFUN 'PATHNAME-VERSION "Lpathname_version" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'WRITE-LINE "Lwrite_line" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'EVAL "Leval" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'ATOM "Latom" '(T) 'T NIL T) 
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -4183,7 +4183,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
++ #fi
++ # subst GCC not only under 386-linux, but where available -- CM
++ 
++-TCFLAGS="-fsigned-char"
+++TCFLAGS="-fsigned-char -fno-builtin-malloc -fno-builtin-free"
++ 
++ if test "$GCC" = "yes" ; then
++ 
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -483,7 +483,7 @@ AC_SUBST(CC)
++ #fi
++ # subst GCC not only under 386-linux, but where available -- CM
++ 
++-TCFLAGS="-fsigned-char"
+++TCFLAGS="-fsigned-char -fno-builtin-malloc -fno-builtin-free"
++ 
++ if test "$GCC" = "yes" ; then
++ 
++--- gcl-2.6.12.orig/h/att_ext.h
+++++ gcl-2.6.12/h/att_ext.h
++@@ -116,25 +116,14 @@ float object_to_float();
++ double object_to_double();
++ 
++ /*  error.c  */
++-EXTER object sKerror;
++-EXTER object sKwrong_type_argument;
++ EXTER object sKcatch;
++ EXTER object sKprotect;
++ EXTER object sKcatchall;
++-EXTER object sKtoo_few_arguments;
++-EXTER object sKtoo_many_arguments;
++-EXTER object sKunexpected_keyword;
++-EXTER object sKinvalid_form;
++-EXTER object sKunbound_variable;
++-EXTER object sKinvalid_variable;
++-EXTER object sKundefined_function;
++-EXTER object sKinvalid_function;
++ EXTER object sKdatum;
++ EXTER object sKexpected_type;
++ EXTER object sKpackage;
++ EXTER object sKformat_control;
++ EXTER object sKformat_arguments;
++-EXTER object sKpackage_error;
++ object wrong_type_argument();
++ EXTER object sSuniversal_error_handler;
++ 
++@@ -394,10 +383,11 @@ EXTER object sKname;
++ EXTER object sKtype;
++ EXTER object sKversion;
++ EXTER object sKdefaults;
++-EXTER object sKroot;
++-EXTER object sKcurrent;
++-EXTER object sKparent;
++-EXTER object sKper;
+++
+++EXTER object sKabsolute;
+++EXTER object sKrelative;
+++EXTER object sKup;
+++
++ /* object parse_namestring(); */
++ object coerce_to_pathname();
++ /* object default_device(); */
++--- gcl-2.6.12.orig/h/compdefs.h
+++++ gcl-2.6.12/h/compdefs.h
++@@ -115,3 +115,5 @@ SIGNED_CHAR(x)
++ FEerror(x,y...)
++ FEwrong_type_argument(x,y)
++ BIT_ENDIAN(x)
+++pathname_designatorp(x)
+++pathnamep(x)
++--- gcl-2.6.12.orig/h/error.h
+++++ gcl-2.6.12/h/error.h
++@@ -22,6 +22,7 @@ PFN(numberp)
++ PFN(characterp)
++ PFN(symbolp)
++ PFN(stringp)
+++PFN(pathnamep)
++ PFN(string_symbolp)
++ PFN(packagep)
++ PFN(consp)
++@@ -52,6 +53,7 @@ PFN(functionp)
++ #define check_type_character(a_)                        TPE(a_,characterp_fn,sLcharacter)
++ #define check_type_sym(a_)                              TPE(a_,symbolp_fn,sLsymbol)
++ #define check_type_string(a_)                           TPE(a_,stringp_fn,sLstring)
+++#define check_type_pathname(a_)                         TPE(a_,pathnamep_fn,sLpathname)
++ #define check_type_or_string_symbol(a_)                 TPE(a_,string_symbolp_fn,TSor_symbol_string)
++ #define check_type_or_symbol_string(a_)                 TPE(a_,string_symbolp_fn,TSor_symbol_string)
++ #define check_type_or_pathname_string_symbol_stream(a_) TPE(a_,pathname_string_symbol_streamp_fn,TSor_pathname_string_symbol_stream)
++@@ -79,12 +81,6 @@ PFN(functionp)
++                             set_type_of((a_),t_fixnum);\
++                             (a_)->FIX.FIXVAL=(b_);}
++ 
++-/*FIXME the stack stuff is dangerous It works for error handling, but
++-  simple errors may evan pass the format tring up the stack as a slot
++-  in ansi*/
++-/* #define TYPE_ERROR(a_,b_) {stack_string(tp_err,"~S is not of type ~S.");\ */
++-/*                            Icall_error_handler(sKwrong_type_argument,tp_err,2,(a_),(b_));} */
++-
++ object ihs_top_function_name(ihs_ptr h);
++ #define FEerror(a_,b_...)   Icall_error_handler(sLerror,null_string,\
++                             4,sKformat_control,make_simple_string(a_),sKformat_arguments,list(b_))
++--- gcl-2.6.12.orig/h/lu.h
+++++ gcl-2.6.12/h/lu.h
++@@ -301,7 +301,7 @@ struct pathname {
++   object pn_name;
++   object pn_type;
++   object pn_version;
++-  SPAD;
+++  object pn_namestring;
++ };
++ 
++ struct cfun {
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -47,12 +47,6 @@ EXTER object user_package;
++                       else *__p++ = va_arg(ap,object);} \
++   va_end(ap)
++ 
++-/*  #undef endp */
++-
++-/*  #define  endp(obje)      ((enum type)((endp_temp = (obje))->d.t) == t_cons ? \ */
++-/*                    FALSE : endp_temp == Cnil ? TRUE : \ */
++-/*                    endp1(endp_temp)) */
++-
++ #ifndef NO_DEFUN
++ #undef DEFUN
++ #define DEFUN(string,ret,fname,pack,min,max, flags, ret0a0,a12,a34,a56,doc) ret fname
++@@ -234,7 +228,7 @@ EXTER  bool left_trim;
++ EXTER bool right_trim;
++ int  (*casefun)();
++ 
++-#define      Q_SIZE          128
+++#define      Q_SIZE          256
++ #define IS_SIZE              256
++ 
++ struct printStruct {
++@@ -300,6 +294,8 @@ gcl_init_cmp_anon(void);
++ 
++ #include "gmp_wrappers.h"
++ 
+++char FN1[PATH_MAX],FN2[PATH_MAX],FN3[PATH_MAX],FN4[PATH_MAX],FN5[PATH_MAX];
+++
++ #include <errno.h>
++ #define massert(a_) ({errno=0;if (!(a_)||errno) assert_error(#a_,__LINE__,__FILE__,__FUNCTION__);})
++ 
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -163,24 +163,6 @@ enum aelttype {                  /*  array element type
++ #define STREF(type,x,i) (*((type *)(((char *)((x)->str.str_self))+(i))))
++ #define STSET(type,x,i,val)  do{SGC_TOUCH(x);STREF(type,x,i) = (val);} while(0)
++ 
++-
++-
++-enum smmode {                        /*  stream mode  */
++-     smm_input,              /*  input  */
++-     smm_output,             /*  output  */
++-     smm_io,                 /*  input-output  */
++-     smm_probe,              /*  probe  */
++-     smm_synonym,            /*  synonym  */
++-     smm_broadcast,          /*  broadcast  */
++-     smm_concatenated,       /*  concatenated  */
++-     smm_two_way,            /*  two way  */
++-     smm_echo,               /*  echo  */
++-     smm_string_input,       /*  string input  */
++-     smm_string_output,      /*  string output  */
++-     smm_user_defined,        /*  for user defined */
++-     smm_socket              /*  Socket stream  */
++-};
++-
++ /* for any stream that takes writec_char, directly (not two_way or echo)
++    ie.        smm_output,smm_io, smm_string_output, smm_socket
++  */
++@@ -217,9 +199,9 @@ enum gcl_sm_flags {
++   gcl_sm_tcp_async,
++   gcl_sm_input,
++   gcl_sm_output,
+++  gcl_sm_closed,
++   gcl_sm_had_error
++   
++-  
++ };
++ 
++ enum chattrib {                      /*  character attribute  */
++@@ -496,8 +478,11 @@ object make_si_sfun();
++  Used by the C function to set optionals */
++ 
++ #define  VFUN_NARGS fcall.argd
+++#define RETURN4(x,y,z,w) do{/*  object _x = (void *) x;  */   \
+++                       fcall.values[1]=y;fcall.values[2]=z;fcall.values[3]=w;fcall.nvalues=4; \
+++                       return (x) ;} while(0)
++ #define RETURN2(x,y) do{/*  object _x = (void *) x;  */\
++-                       fcall.values[2]=y;fcall.nvalues=2; \
+++                       fcall.values[1]=y;fcall.nvalues=2; \
++                        return (x) ;} while(0)
++ #define RETURN1(x) do{fcall.nvalues=1; return (x) ;} while(0)
++ #define RETURN0  do{fcall.nvalues=0; return Cnil ;} while(0)
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -88,7 +88,7 @@
++ /* big.c:85:OF */ extern void zero_big (object x); /* (x) object x; */
++ /* bind.c:74:OF */ extern void lambda_bind (object *arg_top); /* (arg_top) object *arg_top; */
++ /* bind.c:564:OF */ extern void bind_var (object var, object val, object spp); /* (var, val, spp) object var; object val; object spp; */
++-/* bind.c:610:OF */ extern object find_special (object body, struct bind_temp *start, struct bind_temp *end); /* (body, start, end) object body; struct bind_temp *start; struct bind_temp *end; */
+++/* bind.c:610:OF */ extern object find_special (object body, struct bind_temp *start, struct bind_temp *end,object *s); /* (body, start, end) object body; struct bind_temp *start; struct bind_temp *end; */
++ /* bind.c:670:OF */ extern object let_bind (object body, struct bind_temp *start, struct bind_temp *end); /* (body, start, end) object body; struct bind_temp *start; struct bind_temp *end; */
++ /* bind.c:688:OF */ extern object letA_bind (object body, struct bind_temp *start, struct bind_temp *end); /* (body, start, end) object body; struct bind_temp *start; struct bind_temp *end; */
++ /* bind.c:712:OF */ extern void parse_key (object *base, bool rest, bool allow_other_keys, register int n, ... ); 
++--- gcl-2.6.12.orig/h/type.h
+++++ gcl-2.6.12/h/type.h
++@@ -7,6 +7,7 @@ enum type {
++   t_shortfloat,
++   t_longfloat,
++   t_complex,
+++  t_stream,
++   t_pathname,
++   t_string,
++   t_bitvector,
++@@ -17,7 +18,6 @@ enum type {
++   t_character,
++   t_symbol,
++   t_package,
++-  t_stream,
++   t_random,
++   t_readtable,
++   t_cfun,
++@@ -36,6 +36,23 @@ enum type {
++ };
++ 
++ 
+++enum smmode {                        /*  stream mode  */
+++     smm_input,              /*  input  */
+++     smm_output,             /*  output  */
+++     smm_io,                 /*  input-output  */
+++     smm_probe,              /*  probe  */
+++     smm_file_synonym,       /*  synonym stream to file_stream  */
+++     smm_synonym,            /*  synonym  */
+++     smm_broadcast,          /*  broadcast  */
+++     smm_concatenated,       /*  concatenated  */
+++     smm_two_way,            /*  two way  */
+++     smm_echo,               /*  echo  */
+++     smm_string_input,       /*  string input  */
+++     smm_string_output,      /*  string output  */
+++     smm_user_defined,        /*  for user defined */
+++     smm_socket              /*  Socket stream  */
+++};
+++
++ #define Zcdr(a_)                 (*(object *)(a_))/* ((a_)->c.c_cdr) */ /*FIXME*/
++ 
++ #ifndef WIDE_CONS
++@@ -82,7 +99,7 @@ enum type {
++ #else
++ #define TYPEWORD_TYPE_P(y_) (y_!=t_cons)
++ #endif
++-  
+++
++ /*Note preserve sgc flag here                                         VVV*/
++ #define set_type_of(x,y) ({object _x=(object)(x);enum type _y=(y);_x->d.f=0;\
++     if (TYPEWORD_TYPE_P(_y)) {_x->d.e=1;_x->d.t=_y;_x->fw|=(fixnum)OBJNULL;}})
++@@ -113,6 +130,7 @@ enum type {
++ #define randomp(a_)    SPP(a_,random)
++ #define characterp(a_) SPP(a_,character)
++ #define symbolp(a_)    SPP(a_,symbol)
+++#define pathnamep(a_)  SPP(a_,pathname)
++ #define stringp(a_)    SPP(a_,string)
++ #define fixnump(a_)    SPP(a_,fixnum)
++ #define readtablep(a_) SPP(a_,readtable)
++@@ -133,3 +151,6 @@ enum type {
++                                                                      || _tp == t_symbol;})
++ #define pathname_string_symbol_streamp(a_) ({enum type _tp=type_of(a_); _tp==t_pathname || _tp == t_string\
++                                                                      || _tp == t_symbol || _tp==t_stream;})
+++
+++#define pathname_designatorp(a_) ({object _a=(a_);enum type _tp=type_of(a_);\
+++      _tp==t_pathname||_tp==t_string||(_tp==t_stream && _a->sm.sm_mode>=smm_input && _a->sm.sm_mode<=smm_file_synonym);})
++--- gcl-2.6.12.orig/lsp/gcl_autoload.lsp
+++++ gcl-2.6.12/lsp/gcl_autoload.lsp
++@@ -410,10 +410,3 @@ Good luck!                                The GCL Development Team"
++ (setf (get 'with-open-file 'si:pretty-print-format) 1)
++ (setf (get 'with-open-stream 'si:pretty-print-format) 1)
++ (setf (get 'with-output-to-string 'si:pretty-print-format) 1)
++-
++-
++-(in-package :si)
++-
++-(defvar *lib-directory* (namestring (truename "../")))
++-
++-(import '(*lib-directory* *load-path* *system-directory*) :user) 
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_directory.lsp
++@@ -0,0 +1,67 @@
+++(in-package :si)
+++
+++(defconstant +d-type-alist+ (d-type-list))
+++
+++(defun ?push (x tp)
+++  (when (and x (eq tp :directory)) (vector-push-extend #\/ x))
+++  x)
+++
+++(defun wreaddir (x s &optional y (ls (length s) lsp) &aux (y (if (rassoc y +d-type-alist+) y :unknown)))
+++  (when lsp (setf (fill-pointer s) ls))
+++  (let ((r (readdir x (car (rassoc y +d-type-alist+)) s)))
+++    (typecase r
+++      (fixnum (wreaddir x (adjust-array s (+ 100 (ash (array-dimension s 0) 1))) y))
+++      (cons (let ((tp (cdr (assoc (cdr r) +d-type-alist+)))) (cons (?push (car r) tp) tp)))
+++      (otherwise (?push r y)))))
+++
+++(defun dot-dir-p (r l) (member-if (lambda (x) (string= x r :start2 l)) '("./" "../")))
+++
+++(defun vector-push-string (x s &optional (ss 0) (lx (length x)) &aux (ls (- (length s) ss)))
+++  (let ((x (if (> ls (- (array-dimension x 0) lx)) (adjust-array x (+ ls (ash lx 1))) x)))
+++    (setf (fill-pointer x) (+ lx ls))
+++    (replace x s :start1 lx :start2 ss)))
+++
+++(defun walk-dir (s e f &optional (y :unknown) (d (opendir s)) (l (length s)) (le (length e))
+++                &aux (r (wreaddir d s y l)))
+++  (cond (r (unless (dot-dir-p r l) (funcall f r (vector-push-string e r l le) l))
+++        (walk-dir s e f y d l le))
+++     ((setf (fill-pointer s) l (fill-pointer e) le) (closedir d))))
+++
+++(defun recurse-dir (x y f)
+++  (funcall f x y)
+++  (walk-dir x y (lambda (x y l) (declare (ignore l)) (recurse-dir x y f)) :directory))
+++
+++(defun make-frame (s &aux (l (length s)))
+++  (replace (make-array l :element-type 'character :adjustable t :fill-pointer l) s))
+++
+++(defun expand-wild-directory (l f zz &optional (yy (make-frame zz)))
+++  (let* ((x (member-if 'wild-dir-element-p l))
+++      (s (namestring (make-pathname :directory (ldiff l x))))
+++      (z (vector-push-string zz s))
+++      (l (length yy))
+++      (y (link-expand (vector-push-string yy s) l))
+++      (y (if (eq y yy) y (make-frame y))))
+++    (when (or (eq (stat z) :directory) (zerop (length z)))
+++      (cond ((eq (car x) :wild-inferiors) (recurse-dir z y f))
+++         (x (walk-dir z y (lambda (q e l)
+++                            (declare (ignore l))
+++                            (expand-wild-directory (cons :relative (cdr x)) f q e)) :directory));FIXME
+++         ((funcall f z y))))))
+++
+++(defun directory (p &key &aux (p (translate-logical-pathname p))(d (pathname-directory p))
+++                 (c (unless (eq (car d) :absolute) (make-frame (concatenate 'string (getcwd) "/"))))
+++                 (lc (when c (length c)))
+++                 (filesp (or (pathname-name p) (pathname-type p)))
+++                 (v (compile-regexp (to-regexp p)))(*up-key* :back) r)
+++  (expand-wild-directory d
+++   (lambda (dir exp &aux (pexp (pathname (if c (vector-push-string c exp 0 lc) exp))))
+++     (if filesp
+++      (walk-dir dir exp
+++                (lambda (dir exp pos)
+++                  (declare (ignore exp))
+++                  (when (pathname-match-p dir v)
+++                    (push (merge-pathnames (parse-namestring dir nil *default-pathname-defaults* :start pos) pexp nil) r)))
+++                :file)
+++       (when (pathname-match-p dir v) (push pexp r))))
+++   (make-frame (if c "./" "")))
+++  r)
++--- gcl-2.6.12.orig/lsp/gcl_fpe.lsp
+++++ gcl-2.6.12/lsp/gcl_fpe.lsp
++@@ -60,7 +60,7 @@
++ 
++ 
++ (defun rf (addr w)
++-  (ecase w (4 (*float addr)) (8 (*double addr))))
+++  (ecase w (4 (*float addr 0 nil nil)) (8 (*double addr 0 nil nil))))
++ 
++ (defun ref (addr p w &aux (i -1)) 
++   (if p 
++@@ -71,7 +71,7 @@
++                (f (eql #\F (aref z 0))))
++   (ref addr (unless f (eql (aref z (- lz 2)) #\P)) (if (or f (eql (aref z (1- lz)) #\D)) 8 4)))
++ 
++-(defun reg-lookup (x) (*fixnum (+ (car *context*) (symbol-value x))))
+++(defun reg-lookup (x) (*fixnum (+ (car *context*) (symbol-value x)) 0 nil nil))
++ 
++ (defun st-lookup (x) (fld (+ (cadr *context*) (symbol-value x))))
++ (defun xmm-lookup (x) (gref (+ (caddr *context*) (symbol-value x))))
++--- gcl-2.6.12.orig/lsp/gcl_fpe_test.lsp
+++++ gcl-2.6.12/lsp/gcl_fpe_test.lsp
++@@ -1,6 +1,6 @@
++-#.`(defun test-fpe (f a r &optional chk &aux cc (o (mapcan (lambda (x) (list x t)) (si::break-on-floating-point-exceptions))))
+++#.`(defun test-fpe (f a r &optional chk &aux cc (o (mapcan (lambda (x) (list x t)) (break-on-floating-point-exceptions))))
++      (flet ((set-break (x) (when (keywordp r)
++-                          (apply 'si::break-on-floating-point-exceptions (append (unless x o) (list r x))))))
+++                          (apply 'break-on-floating-point-exceptions (append (unless x o) (list r x))))))
++        (let* ((rr (handler-case (unwind-protect (progn (set-break t) (apply f a)) (set-break nil))
++                              ,@(mapcar (lambda (x &aux (x (car x))) `(,x (c) (setq cc c) ,(intern (symbol-name x) :keyword)))
++                                        (append si::+fe-list+ '((arithmetic-error)(error)))))))
++--- gcl-2.6.12.orig/lsp/gcl_info.lsp
+++++ gcl-2.6.12/lsp/gcl_info.lsp
++@@ -8,28 +8,6 @@
++       (,op (the fixnum ,x) (the fixnum ,y))))
++ (defmacro fcr (x) `(load-time-value (compile-regexp ,x))))
++ 
++-(eval-when (compile eval load)
++-(defun sharp-u-reader (stream subchar arg)
++-  subchar arg
++-  (let ((tem (make-array 10 :element-type 'character :fill-pointer 0)))
++-    (or (eql (read-char stream) #\")
++-     (error "sharp-u-reader reader needs a \" right after it"))
++-    (loop
++-     (let ((ch (read-char stream)))
++-       (cond ((eql ch #\") (return tem))
++-          ((eql ch #\\)
++-           (setq ch (read-char stream))
++-           (setq ch (or (cdr (assoc ch '((#\n . #\newline)
++-                                         (#\t . #\tab)
++-                                         (#\r . #\return))))
++-                        ch))))
++-       (vector-push-extend ch tem)))
++-    tem))
++-
++-(set-dispatch-macro-character #\# #\u 'sharp-u-reader)
++-
++-)
++-
++ (defconstant +crlu+ (compile-regexp #u"\1f"))
++ (defconstant +crnp+ (compile-regexp #u"[\1f\f]"))
++ 
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -1,3 +1,4 @@
+++;; -*-Lisp-*-
++ ;; Copyright (C) 1994 M. Hagiya, W. Schelter, T. Yuasa
++ 
++ ;; This file is part of GNU Common Lisp, herein referred to as GCL
++@@ -24,130 +25,229 @@
++ 
++ (in-package :si)
++ 
++-(proclaim '(optimize (safety 2) (space 3)))
+++(defun concatenated-stream-streams (stream)
+++  (declare (optimize (safety 2)))
+++  (check-type stream concatenated-stream)
+++  (c-stream-object0 stream))
+++(defun broadcast-stream-streams (stream)
+++  (declare (optimize (safety 2)))
+++  (check-type stream broadcast-stream)
+++  (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))
+++(defun echo-stream-input-stream (stream)
+++  (declare (optimize (safety 2)))
+++  (check-type stream echo-stream)
+++  (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))
+++(defun echo-stream-output-stream (stream)
+++  (declare (optimize (safety 2)))
+++  (check-type stream echo-stream)
+++  (c-stream-object1 stream))
+++(defun synonym-stream-symbol (stream)
+++  (declare (optimize (safety 2)))
+++  (check-type stream synonym-stream)
+++  (c-stream-object0 stream))
++ 
+++(defun maybe-clear-input (&optional (x *standard-input*))
+++  (typecase x
+++    (synonym-stream (maybe-clear-input (symbol-value (synonym-stream-symbol x))))
+++    (two-way-stream (maybe-clear-input (two-way-stream-input-stream x)))
+++    (stream (when (terminal-input-stream-p x) (clear-input t)))))
++ 
++ (defmacro with-open-stream ((var stream) . body)
++-  (multiple-value-bind (ds b)
++-      (find-declarations body)
+++  (declare (optimize (safety 1)))
+++  (multiple-value-bind (ds b) (find-declarations body)
++     `(let ((,var ,stream))
++        ,@ds
++        (unwind-protect
++-         (progn ,@b)
+++        (progn ,@b)
++          (close ,var)))))
++ 
++-
++ (defmacro with-input-from-string ((var string &key index start end) . body)
++-  (let ((x (sgen "X")))
++-    (multiple-value-bind (ds b)
++-     (find-declarations body)
++-      `(let ((,var (make-string-input-stream ,string ,start ,end)))
++-      ,@ds
++-      (unwind-protect
++-          ,(let ((f `(progn ,@b)))
++-             (if index
++-                 `(let ((,x (multiple-value-list ,f))) (setf ,index (get-string-input-stream-index ,var)) (values-list ,x))
++-               f))
++-      (close ,var))))))
+++  (declare (optimize (safety 1)))
+++  (multiple-value-bind (ds b) (find-declarations body)
+++    `(let ((,var (make-string-input-stream ,string ,start ,end)))
+++       ,@ds
+++       (unwind-protect
+++        (multiple-value-prog1
+++         (progn ,@b)
+++         ,@(when index `((setf ,index (get-string-input-stream-index ,var)))))
+++      (close ,var)))))
++   
++ (defmacro with-output-to-string ((var &optional string &key element-type) . body)
++-  (let ((s (sgen "STRING"))(bl (sgen "BLOCK"))(e (sgen "ELEMENT-TYPE"))(x (sgen "X")))
++-    (multiple-value-bind (ds b)
++-     (find-declarations body)
++-      `(let* ((,s ,string)(,e ,element-type)
++-           (,var (if ,s (make-string-output-stream-from-string ,s) (make-string-output-stream :element-type ,e))))
+++  (declare (optimize (safety 1)))
+++  (let ((s (sgen "STRING")))
+++    (multiple-value-bind (ds b) (find-declarations body)
+++      `(let* ((,s ,string)
+++           (,var (if ,s (make-string-output-stream-from-string ,s) (make-string-output-stream :element-type ,element-type))))
++       ,@ds
++       (unwind-protect
++-          (let ((,x (multiple-value-list (progn ,@b)))) (if ,s (values-list ,x) (get-output-stream-string ,var)))
+++          (block nil
+++            (multiple-value-prog1
+++             (progn ,@b)
+++           (unless ,s (return (get-output-stream-string ,var)))))
++         (close ,var))))))
++ 
++ 
++-(defun read-from-string (string
++-                         &optional (eof-error-p t) eof-value
++-                         &key (start 0) (end (length string))
++-                              preserve-whitespace)
++-  (let ((stream (make-string-input-stream string start end)))
++-    (if preserve-whitespace
++-        (values (read-preserving-whitespace stream eof-error-p eof-value)
++-                (si:get-string-input-stream-index stream))
++-        (values (read stream eof-error-p eof-value)
++-                (si:get-string-input-stream-index stream)))))
++-
+++(defun read-from-string (string &optional (eof-error-p t) eof-value
+++                         &key (start 0) end preserve-whitespace)
+++  (declare (optimize (safety 1)))
+++  (check-type string string)
+++  (check-type start seqind)
+++  (check-type end (or null seqind))
+++  (let ((stream (make-string-input-stream string start (or end (length string)))))
+++    (values (if preserve-whitespace
+++             (read-preserving-whitespace stream eof-error-p eof-value)
+++           (read stream eof-error-p eof-value))
+++         (get-string-input-stream-index stream))))
+++
+++;; (defun write (x &key stream
+++;;           (array            *print-array*)
+++;;           (base             *print-base*)
+++;;           (case             *print-case*)
+++;;           (circle           *print-circle*)
+++;;           (escape           *print-escape*)
+++;;           (gensym           *print-gensym*)
+++;;           (length           *print-length*)
+++;;           (level            *print-level*)
+++;;           (lines            *print-lines*)
+++;;           (miser-width      *print-miser-width*)
+++;;           (pprint-dispatch  *print-pprint-dispatch*)
+++;;           (pretty           *print-pretty*)
+++;;           (radix            *print-radix*)
+++;;           (readably         *print-readably*)
+++;;           (right-margin     *print-right-margin*))
+++;;   (write-int x stream array base case circle escape gensym
+++;;        length level lines miser-width pprint-dispatch
+++;;        pretty radix readably right-margin))
++ 
++ (defun write-to-string (object &rest rest
++-                        &key escape radix base
++-                             circle pretty level length
++-                             case gensym array
++-                        &aux (stream (make-string-output-stream)))
++-  (declare (ignore escape radix base
++-                   circle pretty level length
++-                   case gensym array))
+++                            &key (escape *print-escape*)(radix *print-radix*)(base *print-base*)
+++                            (circle *print-circle*)(pretty *print-pretty*)(level *print-level*)
+++                            (length *print-length*)(case *print-case*)(gensym *print-gensym*)
+++                            (array *print-array*)(lines *print-lines*)(miser-width *print-miser-width*)
+++                            (pprint-dispatch *print-pprint-dispatch*)(readably *print-readably*)
+++                            (right-margin *print-right-margin*)
+++                            &aux (stream (make-string-output-stream))
+++                            (*print-escape* escape)(*print-radix* radix)(*print-base* base)
+++                            (*print-circle* circle)(*print-pretty* pretty)(*print-level* level)
+++                            (*print-length* length)(*print-case* case)(*print-gensym* gensym)
+++                            (*print-array* array)(*print-lines* lines)(*print-miser-width* miser-width)
+++                            (*print-pprint-dispatch* pprint-dispatch)(*print-readably* readably )
+++                            (*print-right-margin* right-margin))
+++  (declare (optimize (safety 1))(dynamic-extent rest))
++   (apply #'write object :stream stream rest)
++   (get-output-stream-string stream))
++ 
+++(defun prin1-to-string (object &aux (stream (make-string-output-stream)))
+++  (declare (optimize (safety 1)))
+++  (prin1 object stream)
+++  (get-output-stream-string stream))
++ 
++-(defun prin1-to-string (object
++-                        &aux (stream (make-string-output-stream)))
++-   (prin1 object stream)
++-   (get-output-stream-string stream))
++-
++-
++-(defun princ-to-string (object
++-                        &aux (stream (make-string-output-stream)))
+++(defun princ-to-string (object &aux (stream (make-string-output-stream)))
+++  (declare (optimize (safety 1)))
++   (princ object stream)
++   (get-output-stream-string stream))
++ 
+++;; (defun file-string-length (ostream object)
+++;;   (declare (optimize (safety 2)))
+++;;   (let ((ostream (if (typep ostream 'broadcast-stream)
+++;;                (car (last (broadcast-stream-streams ostream)))
+++;;              ostream)))
+++;;     (cond ((not ostream) 1)
+++;;     ((subtypep1 (stream-element-type ostream) 'character)
+++;;      (length (let ((*print-escape* nil)) (write-to-string object)))))))
+++
+++;; (defmacro with-temp-file ((s pn) (tmp ext) &rest body)
+++;;   (multiple-value-bind
+++;;    (doc decls ctps body)
+++;;    (parse-body-header body)
+++;;    (declare (ignore doc))
+++;;    `(let* ((,s (temp-stream ,tmp ,ext))
+++;;      (,pn (stream-object1 ,s)))
+++;;       ,@decls
+++;;       ,@ctps
+++;;       (unwind-protect (progn ,@body) (progn (close ,s) (delete-file ,s))))))
+++
++ 
++ (defmacro with-open-file ((stream . filespec) . body)
++-  (multiple-value-bind (ds b)
++-      (find-declarations body)
+++  (declare (optimize (safety 1)))
+++  (multiple-value-bind (ds b) (find-declarations body)
++     `(let ((,stream (open ,@filespec)))
++        ,@ds
++        (unwind-protect
++-         (progn ,@b)
++-         (if ,stream (close ,stream))))))
+++        (progn ,@b)
+++         (when ,stream (close ,stream))))))
++ 
+++;; (defun pprint-dispatch (obj &optional (table *print-pprint-dispatch*))
+++;;   (declare (optimize (safety 2)))
+++;;   (let ((fun (si:get-pprint-dispatch obj table)))
+++;;     (if fun (values fun t) (values 'si:default-pprint-object nil))))
+++
+++;; (setq *print-pprint-dispatch* '(pprint-dispatch . nil))
+++
+++;; (defun set-pprint-dispatch (type-spec function &optional
+++;;                       (priority 0)
+++;;                       (table *print-pprint-dispatch*))
+++;;   (declare (optimize (safety 2)))
+++;;   (unless (typep priority 'real)
+++;;     (error 'type-error :datum priority :expected-type 'real))
+++;;   (let ((a (assoc type-spec (cdr table) :test 'equal)))
+++;;     (if a (setf (cdr a) (list function priority))
+++;;   (rplacd (last table) `((,type-spec ,function ,priority)))))
+++;;   nil)
+++
+++;; (defun copy-pprint-dispatch (&optional table)
+++;;   (declare (optimize (safety 2)))
+++;;   (unless table
+++;;     (setq table *print-pprint-dispatch*))
+++;;   (unless (and (eq (type-of table) 'cons)
+++;;           (eq (car table) 'pprint-dispatch))
+++;;     (error 'type-error :datum table :expected-type 'pprint-dispatch))
+++;;   (copy-seq table ))
++ 
++-(defun y-or-n-p (&optional string &rest args)
++-  (do ((reply))
++-      (nil)
++-    (when string (format *query-io* "~&~?  (Y or N) " string args))
++-    (setq reply (read *query-io*))
++-    (cond ((string-equal (symbol-name reply) "Y")
++-           (return-from y-or-n-p t))
++-          ((string-equal (symbol-name reply) "N")
++-           (return-from y-or-n-p nil)))))
++ 
+++(defun y-or-n-p (&optional string &rest args)
+++  (declare (optimize (safety 1)))
+++  (when string (format *query-io* "~&~?  (Y or N) " string args))
+++  (let ((reply (symbol-name (read *query-io*))))
+++    (cond ((string-equal reply "Y") t)
+++       ((string-equal reply "N") nil)
+++       ((apply 'y-or-n-p string args)))))
++ 
++ (defun yes-or-no-p (&optional string &rest args)
++-  (do ((reply))
++-      (nil)
++-    (when string (format *query-io* "~&~?  (Yes or No) " string args))
++-    (setq reply (read *query-io*))
++-    (cond ((string-equal (symbol-name reply) "YES")
++-           (return-from yes-or-no-p t))
++-          ((string-equal (symbol-name reply) "NO")
++-           (return-from yes-or-no-p nil)))))
++-
+++  (declare (optimize (safety 1)))
+++  (when string (format *query-io* "~&~?  (Yes or No) " string args))
+++  (let ((reply (symbol-name (read *query-io*))))
+++    (cond ((string-equal reply "YES") t)
+++       ((string-equal reply "NO") nil)
+++       ((apply 'yes-or-no-p string args)))))
++ 
++ (defun sharp-a-reader (stream subchar arg)
++   (declare (ignore subchar))
++   (let ((initial-contents (read stream nil nil t)))
++-    (if *read-suppress*
++-        nil
++-        (do ((i 0 (1+ i))
++-             (d nil (cons (length ic) d))
++-             (ic initial-contents (if (zerop (length ic)) ic (elt ic 0))))
++-            ((>= i arg)
++-             (make-array (nreverse d)
++-                         :initial-contents initial-contents))))))
+++    (unless *read-suppress*
+++      (do ((i 0 (1+ i))
+++        (d nil (cons (length ic) d))
+++        (ic initial-contents (if (zerop (length ic)) ic (elt ic 0))))
+++       ((>= i arg) (make-array (nreverse d) :initial-contents initial-contents))))))
++ 
++ (set-dispatch-macro-character #\# #\a 'sharp-a-reader)
+++(set-dispatch-macro-character #\# #\a 'sharp-a-reader (standard-readtable))
++ (set-dispatch-macro-character #\# #\A 'sharp-a-reader)
+++(set-dispatch-macro-character #\# #\A 'sharp-a-reader (standard-readtable))
++ 
++ ;; defined in defstruct.lsp
++ (set-dispatch-macro-character #\# #\s 'sharp-s-reader)
+++(set-dispatch-macro-character #\# #\s 'sharp-s-reader (standard-readtable))
++ (set-dispatch-macro-character #\# #\S 'sharp-s-reader)
+++(set-dispatch-macro-character #\# #\S 'sharp-s-reader (standard-readtable))
++ 
++ (defvar *dribble-stream* nil)
++ (defvar *dribble-io* nil)
++@@ -155,6 +255,7 @@
++ (defvar *dribble-saved-terminal-io* nil)
++ 
++ (defun dribble (&optional (pathname "DRIBBLE.LOG" psp) (f :supersede))
+++  (declare (optimize (safety 1)))
++   (cond ((not psp)
++          (when (null *dribble-stream*) (error "Not in dribble."))
++          (if (eq *dribble-io* *terminal-io*)
++@@ -183,73 +284,18 @@
++              (format t "~&Starts dribbling to ~A (~d/~d/~d, ~d:~d:~d)."
++                      namestring year month day hour min sec))))))
++ 
++-(defconstant char-length 8)
++-
++-(defun get-byte-stream-nchars (s)
++-  (check-type s stream)
++-  (let* ((tp (stream-element-type s))
++-      (tp (if (consp tp) (cadr tp) char-length))
++-      (nc (ceiling tp char-length)))
++-    nc))
++-
++-(defun write-byte (j s)
++-  (declare (optimize (safety 1)))
++-  (let ((nc (get-byte-stream-nchars s))
++-     (ff (1- (expt 2 char-length))))
++-    (do ((k 0 (1+ k))(i j (ash i (- char-length)))) ((>= k nc) j)
++-     (write-char (code-char (logand i ff)) s))))
++-
++-(defun read-byte (s &optional (eof-error-p t) eof-value)
++-  (declare (optimize (safety 1)))
++-  (let ((nc (get-byte-stream-nchars s)))
++-    (do ((j 0 (1+ j)) 
++-      (i 0 (logior i
++-            (ash (char-code (let ((ch (read-char s eof-error-p eof-value)))
++-                              (if (and (not eof-error-p) (eq ch eof-value))
++-                                  (return-from read-byte ch)
++-                                ch))) (* j char-length)))))
++-     ((>= j nc) i))))
++-
++-
++-(defun read-sequence (seq strm &key (start 0) end)
++-  (declare (optimize (safety 1)))
++-  (check-type seq sequence)
++-  (check-type start (integer 0))
++-  (check-type end (or null (integer 0)))
++-  (let* ((start (min start array-dimension-limit))
++-      (end   (if end (min end array-dimension-limit) (length seq)))
++-      (l (listp seq))
++-      (seq (if (and l (> start 0)) (nthcdr start seq) seq))
++-      (tp (subtypep (stream-element-type strm) 'character)))
++-    (do ((i start (1+ i))(seq seq (if l (cdr seq) seq)))
++-     ((or (>= i end) (when l (endp seq))) i)
++-     (declare (fixnum i))
++-     (let ((el (if tp (read-char strm nil 'eof) (read-byte strm nil 'eof))))
++-       (when (eq el 'eof) (return i))
++-       (if l (setf (car seq) el) (setf (aref seq i) el))))))
++-
+++;; (defmacro formatter ( control-string )
+++;;   (declare (optimize (safety 2)))
+++;;   `(progn
+++;;      (lambda (*standard-output* &rest arguments)
+++;;        (let ((*format-unused-args* nil))
+++;;    (apply 'format t ,control-string arguments)
+++;;    *format-unused-args*))))
++ 
++-(defun write-sequence (seq strm &key (start 0) end)
+++(defun stream-external-format (s)
++   (declare (optimize (safety 1)))
++-  (check-type seq sequence)
++-  (check-type start (integer 0))
++-  (check-type end (or null (integer 0)))
++-  (let* ((start (min start array-dimension-limit))
++-      (end   (if end (min end array-dimension-limit) (length seq)))
++-      (l (listp seq))
++-      (tp (subtypep (stream-element-type strm) 'character)))
++-    (do ((i start (1+ i))
++-      (seq (if (and l (> start 0)) (nthcdr start seq) seq) (if l (cdr seq) seq))) 
++-     ((or (>= i end) (when l (endp seq)))) 
++-     (declare (fixnum i))
++-     (let ((el (if l (car seq) (aref seq i))))
++-       (if tp (write-char el strm) (write-byte el strm))))
++-    seq))
++-
++-(defmacro with-compilation-unit (opt &rest body)   
++-  (declare (optimize (safety 2)))
++-  (declare (ignore opt)) 
++-  `(progn ,@body))
+++  (check-type s stream)
+++  :default)
++ 
++ (defvar *print-lines* nil)
++ (defvar *print-miser-width* nil)
++@@ -257,7 +303,7 @@
++ (defvar *print-right-margin* nil)
++ 
++ (defmacro with-standard-io-syntax (&body body)
++-  (declare (optimize (safety 2)))
+++  (declare (optimize (safety 1)))
++   `(let* ((*package* (find-package :cl-user))
++        (*print-array* t)
++        (*print-base* 10)
++@@ -269,7 +315,7 @@
++        (*print-level* nil)
++        (*print-lines* nil)
++        (*print-miser-width* nil)
++-       (*print-pprint-dispatch* *print-pprint-dispatch*)
+++       (*print-pprint-dispatch* *print-pprint-dispatch*);FIXME
++        (*print-pretty* nil)
++        (*print-radix* nil)
++        (*print-readably* t)
++@@ -278,37 +324,163 @@
++        (*read-default-float-format* 'single-float)
++        (*read-eval* t)
++        (*read-suppress* nil)
++-       (*readtable* (copy-readtable (si::standard-readtable))));FIXME copy?
+++       (*readtable* (copy-readtable (standard-readtable))))
++      ,@body))
++ 
+++;; (defmacro print-unreadable-object
+++;;     ((object stream &key type identity) &body body)
+++;;   (declare (optimize (safety 2)))
+++;;   (let ((q `(princ " " ,stream)))
+++;;     `(if *print-readably*
+++;;    (error 'print-not-readable :object ,object)
+++;;        (progn
+++;;    (princ "#<" ,stream)
+++;;    ,@(when type `((prin1 (type-of ,object) ,stream) ,q))
+++;;    ,@body
+++;;    ,@(when identity
+++;;        (let ((z `(princ (address ,object) ,stream)))
+++;;          (if (and (not body) type) (list z) (list q z))))
+++;;    (princ ">" ,stream)
+++;;    nil))))
+++
+++;; (defmacro with-compile-file-syntax (&body body)
+++;;   `(let ((*print-radix* nil)
+++;;    (*print-base* 10)
+++;;    (*print-circle* t)
+++;;    (*print-pretty* nil)
+++;;    (*print-level* nil)
+++;;    (*print-length* nil)
+++;;    (*print-case* :downcase)
+++;;    (*print-gensym* t)
+++;;    (*print-array* t)
+++;;    (*print-package* t)
+++;;    (*print-structure* t))
+++;;      ,@body))
+++
+++(defmacro with-compilation-unit (opt &rest body)
+++  (declare (optimize (safety 1)))
+++  (declare (ignore opt))
+++  `(progn ,@body))
+++
+++(defconstant char-length 8)
+++
+++(defun get-byte-stream-nchars (s)
+++  (let* ((tp (stream-element-type s)))
+++    (ceiling (if (consp tp) (cadr tp) char-length) char-length)))
+++
+++;; (defun parse-integer (s &key start end (radix 10) junk-allowed)
+++;;   (declare (optimize (safety 1)))
+++;;   (parse-integer-int s start end radix junk-allowed))
+++
+++(defun write-byte (j s &aux (i j))
+++  (declare (optimize (safety 1)))
+++  (check-type j integer)
+++  (check-type s stream)
+++  (dotimes (k (get-byte-stream-nchars s) j)
+++    (write-char (code-char (logand i #.(1- (ash 1 char-length)))) s)
+++    (setq i (ash i #.(- char-length)))))
+++
+++
+++(defun read-byte (s &optional (eof-error-p t) eof-value &aux (i 0))
+++  (declare (optimize (safety 1)))
+++  (check-type s stream)
+++  (dotimes (k (get-byte-stream-nchars s) i)
+++    (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)))
+++                        (* k char-length))))))
+++
+++
+++(defun read-sequence (seq strm &rest r &key (start 0) end
+++                       &aux (l (listp seq))(seqp (when l (nthcdr start seq)))
+++                       (cp (eq (stream-element-type strm) 'character)))
+++  (declare (optimize (safety 1))(dynamic-extent r))
+++  (check-type seq sequence)
+++  (check-type strm stream)
+++  (check-type start (integer 0))
+++  (check-type end (or null (integer 0)))
+++  (apply 'reduce (lambda (y x &aux (z (if cp (read-char strm nil 'eof) (read-byte strm nil 'eof))))
+++                (declare (seqind y)(ignorable x))
+++                (when (eq z 'eof) (return-from read-sequence y))
+++                (if l (setf (car seqp) z seqp (cdr seqp)) (setf (aref seq y) z))
+++                (1+ y)) seq :initial-value start r))
+++
+++
+++(defun write-sequence (seq strm &rest r &key (start 0) end
+++                        &aux (l (listp seq))(cp (eq (stream-element-type strm) 'character)))
+++  (declare (optimize (safety 1))(dynamic-extent r))
+++  (check-type seq sequence)
+++  (check-type strm stream)
+++  (check-type start (integer 0))
+++  (check-type end (or null (integer 0)))
+++  (apply 'reduce (lambda (y x)
+++                (declare (seqind y))
+++                (if cp (write-char x strm) (write-byte x strm))
+++                (1+ y)) seq :initial-value start r)
+++  seq)
+++
+++(defun restrict-stream-element-type (tp)
+++  (cond ((or (member tp '(character :default)) (subtypep tp 'character)) 'character)
+++     ((subtypep tp 'integer)
+++      (let* ((ntp (car (expand-ranges (normalize-type tp))))
+++             (min (or (cadr ntp) '*))(max (or (caddr ntp) '*))
+++             (s (if (or (eq min '*) (< min 0)) 'signed-byte 'unsigned-byte))
+++             (lim (unless (or (eq min '*) (eq max '*)) (max (integer-length min) (integer-length max))))
+++             (lim (if (and lim (eq s 'signed-byte)) (1+ lim) lim)))
+++        (if lim `(,s ,lim) s)))
+++     ((check-type tp (member character integer)))))
+++
+++(defun open (f &key (direction :input)
+++            (element-type 'character)
+++            (if-exists nil iesp)
+++            (if-does-not-exist nil idnesp)
+++            (external-format :default) &aux (pf (pathname f)))
+++  (declare (optimize (safety 1)))
+++  (check-type f pathname-designator)
+++  (when (wild-pathname-p pf)
+++    (error 'file-error :pathname pf :format-control "Pathname is wild."))
+++  (let* ((s (open-int (namestring (translate-logical-pathname pf)) direction
+++                   (restrict-stream-element-type element-type)
+++                   if-exists iesp if-does-not-exist idnesp external-format)))
+++    (when (typep s 'stream) (c-set-stream-object1 s pf) s)))
+++
+++(defun load-pathname (p print if-does-not-exist external-format
+++                     &aux (pp (merge-pathnames p))
+++                     (epp (reduce (lambda (y x) (or y (probe-file (translate-pathname x "" p))))
+++                                  '(#P".o" #P".lsp" #P".lisp" #P"") :initial-value nil)));FIXME newest?
+++  (if epp
+++      (let* ((*load-pathname* pp)(*load-truename* epp))
+++     (with-open-file
+++      (s epp :external-format external-format)
+++      (if (member (peek-char nil s nil 'eof) '#.(mapcar 'code-char (list 127 #xfe #xff #x4c)))
+++          (load-fasl s print)
+++        (let ((*standard-input* s)) (load-stream s print)))))
+++    (when if-does-not-exist
+++      (error 'file-error :pathname pp :format-control "File does not exist."))))
+++
+++(defun load (p &key (verbose *load-verbose*) (print *load-print*) (if-does-not-exist :error)
+++            (external-format :default) &aux (*readtable* *readtable*)(*package* *package*))
+++  (declare (optimize (safety 1)))
+++  (check-type p (or stream pathname-designator))
+++  (when verbose (format t ";; Loading ~s~%" p))
+++  (prog1
+++      (typecase p
+++     (pathname-designator (load-pathname (pathname p) print if-does-not-exist external-format))
+++     (stream (load-stream p print)))
+++    (when verbose (format t ";; Finished loading ~s~%" p))))
+++
++ (defun ensure-directories-exist (ps &key verbose &aux created)
+++  (declare (optimize (safety 1)))
+++  (check-type ps pathname-designator)
++   (when (wild-pathname-p ps)
++     (error 'file-error :pathname ps :format-control "Pathname is wild"))
++-  (labels ((d (x y &aux (z (ldiff x y)) (p (make-pathname :directory z)))
+++  (labels ((d (x y &aux (z (ldiff x y)) (n (namestring (make-pathname :directory z))))
++            (when (when z (stringp (car (last z))))
++-             (unless (eq :directory (car (stat p)))
++-               (mkdir (namestring p))
+++             (unless (eq :directory (stat n))
+++               (mkdir n)
++                (setq created t)
++-               (when verbose (format *standard-output* "Creating directory ~s~%" p))))
+++               (when verbose (format *standard-output* "Creating directory ~s~%" n))))
++            (when y (d x (cdr y)))))
++     (let ((pd (pathname-directory ps)))
++       (d pd (cdr pd)))
++     (values ps created)))
++ 
++-#.(let ((g '(:host :device :directory :name :type :version)))
++-     `(defun wild-pathname-p (pd &optional f &aux (p (pathname pd)))
++-       (declare (optimize (safety 1)))
++-       (check-type f (or null (member ,@g)))
++-       (labels ((w-f (x)
++-                  (case x
++-                    ,@(mapcar (lambda (x &aux (f (intern (string-concatenate "PATHNAME-" (string-upcase x)))))
++-                                `(,x ,(if (eq x :directory) `(when (member :wild (,f p)) t) `(eq :wild (,f p))))) g))))
++-      (if f 
++-          (w-f f)
++-        (reduce (lambda (z x) (or z (w-f x))) ',g :initial-value nil)))))
++-
++-(defun maybe-clear-input (&optional (x *standard-input*))
++-  (cond ((not (typep x 'stream)) nil)
++-     ((typep x 'synonym-stream) (maybe-clear-input (symbol-value (synonym-stream-symbol x))))
++-     ((typep x 'two-way-stream) (maybe-clear-input (two-way-stream-input-stream x)))
++-     ((terminal-input-stream-p x) (clear-input t))))
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_logical_pathname_translations.lsp
++@@ -0,0 +1,28 @@
+++(in-package :si)
+++
+++(defvar *pathname-logical* nil)
+++
+++(defun setf-logical-pathname-translations (v k)
+++  (declare (optimize (safety 1)))
+++  (check-type v list)
+++  (check-type k string)
+++  (setf (cdr (or (assoc k *pathname-logical* :test 'string-equal) (car (push (cons k t) *pathname-logical*)))) ;(cons k nil)
+++     (mapcar (lambda (x) (list (parse-namestring (car x) k) (parse-namestring (cadr x)))) v)))
+++
+++(defsetf logical-pathname-translations (x) (y) `(setf-logical-pathname-translations ,y ,x))
+++(remprop 'logical-pathname-translations 'si::setf-update-fn)
+++
+++(defun logical-pathname-translations (k)
+++  (declare (optimize (safety 1)))
+++  (check-type k string)
+++  (cdr (assoc k *pathname-logical* :test 'string-equal)))
+++
+++
+++(defun load-logical-pathname-translations (k)
+++  (declare (optimize (safety 1)))
+++  (unless (logical-pathname-translations k)
+++    (error "No translations found for ~s" k)))
+++
+++(defun logical-pathname-host-p (host)
+++  (when host
+++    (logical-pathname-translations host)))
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_make_pathname.lsp
++@@ -0,0 +1,155 @@
+++(in-package :si)
+++
+++;; (defun pathnamep (x)
+++;;   (declare (optimize (safety 1)))
+++;;   (when (typep x 'pathname) t))
+++
+++(defun msub (a x) (if a (msub (cdr a) (substitute (caar a) (cdar a) x)) x))
+++
+++(defvar *glob-to-regexp-alist* (list (cons #v"{[^}]*}" (lambda (x) (msub '((#\| . #\,)(#\( . #\{)(#\) . #\})) x)))
+++                                  (cons #v"\\[[^\\]*\\]" (lambda (x)
+++                                                           (concatenate 'string "("
+++                                                                        (substitute #\^ #\! (subseq x 0 2))
+++                                                                        (subseq x 2) ")")))
+++                                  (cons #v"\\*" (lambda (x) "([^/.]*)"))
+++                                  (cons #v"\\?" (lambda (x) "([^/.])"))
+++                                  (cons #v"\\." (lambda (x) "\\."))))
+++
+++(defun mglist (x &optional (b 0))
+++  (let* ((y (mapcan (lambda (z &aux (w (string-match (car z) x b)))
+++                   (unless (eql w -1)
+++                     (list (list w (match-end 0) z))))
+++                 *glob-to-regexp-alist*))
+++      (z (when y (reduce (lambda (y x) (if (< (car x) (car y)) x y)) y))))
+++    (when z
+++      (cons z (mglist x (cadr z))))))
+++
+++(defun mgsub (x &optional (l (mglist x)) (b 0) &aux (w (pop l)))
+++  (if w
+++      (concatenate 'string
+++                (subseq x b (car w))
+++                (funcall (cdaddr w) (subseq x (car w) (cadr w)))
+++                (mgsub x l (cadr w)))
+++    (subseq x b)))
+++
+++
+++(defun elsub (el x rp lp &aux (y x) (pref (pop y))(dflt (pop y))(post (pop y)))
+++;  (destructuring-bind (pref dflt post &rest y) x
+++    (etypecase el
+++      (string (let ((x (list pref el post))) (unless (zerop (length dflt)) (if rp (mapcar 'mgsub x) x))))
+++      (integer (elsub (write-to-string el) x rp lp))
+++      ((eql :wild-inferiors) (if rp (list "(" dflt "*)") (elsub "**" x rp lp)))
+++      ((eql :wild) (if rp (list dflt) (elsub "*" x rp lp)))
+++      ((eql :newest) (elsub (if rp "(newest|NEWEST)" "NEWEST") x rp lp))
+++      ((member :up :back) (elsub ".." x rp lp))
+++      ((member nil :unspecific) (when rp (list dflt)))
+++      (cons (cons
+++          (if (eq (car el) :absolute) (if lp "" "/") (if lp ";" ""))
+++          (mapcan (lambda (z) (elsub z y rp lp)) (cdr el)))))
+++;    )
+++)
+++
+++(defconstant +physical-pathname-defaults+ '(("" "" "")
+++                                         ("" "" "")
+++                                         ("" "(/?([^/]+/)*)" "" "" "([^/]+/)" "/")
+++                                         ("" "([^/.]*)" "")
+++                                         ("." "(\\.[^/]*)?" "")
+++                                         ("" "" "")))
+++(defconstant +logical-pathname-defaults+  '(("" "([-0-9A-Z]+:)?" ":")
+++                                         ("" "" "")
+++                                         ("" "(;?((\\*?([-0-9A-Z]+\\*?)+|\\*|\\*\\*);)*)" "" "" "((\\*?([-0-9A-Z]+\\*?)+|\\*);)" ";")
+++                                         ("" "(\\*?([-0-9A-Z]+\\*?)+|\\*)?" "")
+++                                         ("." "(\\.(\\*?([-0-9A-Z]+\\*?)+|\\*))?" "")
+++                                         ("." "(\\.([1-9][0-9]*|newest|NEWEST|\\*))?" "")))
+++
+++(defun to-regexp-or-namestring (x rp lp)
+++  (apply 'concatenate 'string
+++      (mapcan (lambda (x y) (elsub x y rp lp))
+++              x (if lp +logical-pathname-defaults+ +physical-pathname-defaults+))))
+++
+++(defun directory-list-check (l)
+++  (when (listp l)
+++    (when (member (car l) '(:absolute :relative))
+++      (mapl (lambda (x &aux (c (car x))(d (cadr x)))
+++           (when (and (member d '(:up :back)) (member c '(:absolute :wild-inferiors)))
+++             (return-from directory-list-check nil))) l))))
+++    
+++(defun canonicalize-pathname-directory (l)
+++  (cond ((eq l :wild) (canonicalize-pathname-directory '(:absolute :wild-inferiors)))
+++     ((stringp l) (canonicalize-pathname-directory (list :absolute l)))
+++     ((mapl (lambda (x &aux (c (car x)))
+++              (when (and (or (stringp c) (eq c :wild)) (eq (cadr x) :back))
+++                (return-from canonicalize-pathname-directory
+++                  (canonicalize-pathname-directory (nconc (ldiff l x) (cddr x)))))) l))))
+++
+++(defvar *default-pathname-defaults* (init-pathname nil nil nil nil nil nil ""))
+++(declaim (type pathname *default-pathname-defaults*))
+++
+++(defun toggle-case (x)
+++  (cond ((symbolp x) x)
+++     ((listp x) (mapcar 'toggle-case x))
+++     ((find-if 'upper-case-p x) (if (find-if 'lower-case-p x) x (string-downcase x)))
+++     ((find-if 'lower-case-p x) (string-upcase x))
+++     (x)))
+++
+++(defun logical-pathname (spec &aux (p (pathname spec)))
+++  (declare (optimize (safety 1)))
+++  (check-type spec pathname-designator)
+++  (check-type p logical-pathname)
+++  p)
+++  
+++(eval-when (compile eval)
+++  (defun strsym (p &rest r)
+++    (declare (:dynamic-extent r))
+++    (intern (apply 'concatenate 'string (mapcar 'string-upcase r)) p)))
+++
+++#.`(defun make-pathname (&key (host nil hostp) (device nil devicep) (directory nil directoryp)
+++                           (name nil namep) (type nil typep) (version nil versionp)
+++                           defaults (case :local) namestring &aux defaulted (def (when defaults (pathname defaults))))
+++     (declare (optimize (safety 1)))
+++     (check-type host (or (member nil :unspecific) string))
+++     (check-type device (member nil :unspecific))
+++     (check-type directory (or (member nil :unspecific :wild) string list))
+++     (check-type name (or string (member nil :unspecific :wild)))
+++     (check-type type (or string (member nil :unspecific :wild)))
+++     (check-type version (or (integer 1) (member nil :unspecific :wild :newest)))
+++     (check-type defaults (or null pathname-designator))
+++     (check-type case (member :common :local))
+++     ,(flet ((def? (k) `(let* (,@(when (eq k 'host) `((def (or def *default-pathname-defaults*))))
+++                            (nk (if ,(strsym :si k "P") ,k (progn (setq defaulted t) (when def (,(strsym :si "C-PATHNAME-" k) def)))))
+++                            (nk (if (eq case :local) nk (progn (setq defaulted t) (toggle-case nk)))))
+++                     nk)))
+++     `(let* ((h ,(def? 'host))
+++             (h (let ((h1 (when (logical-pathname-host-p h) h))) (unless (eq h h1) (setq defaulted t)) h1))
+++             (dev ,(def? 'device))
+++             (d ,(def? 'directory))
+++             (d (let ((d1 (canonicalize-pathname-directory d))) (unless (eq d d1) (setq defaulted t)) d1))
+++             (n ,(def? 'name))
+++             (typ ,(def? 'type))
+++             (v ,(def? 'version))
+++             (p (init-pathname h dev d n typ v
+++                               (or (unless defaulted namestring) (to-regexp-or-namestring (list h dev d n typ v) nil h)))))
+++        (when h (c-set-t-tt p 1))
+++        (unless (eq d (directory-list-check d))
+++          (error 'file-error :pathname p :format-control "Bad directory list"))
+++        p)))
+++
+++(macrolet ((pn-accessor (k &aux (f (strsym :si "PATHNAME-" k)) (c (strsym :si "C-PATHNAME-" k)))
+++           `(defun ,f (p &key (case :local) &aux (pn (pathname p)))
+++              (declare (optimize (safety 1)))
+++              (check-type p pathname-designator)
+++              (let ((x (,c pn))) (if (eq case :local) x (toggle-case x))))))
+++  (pn-accessor host)
+++  (pn-accessor device)
+++  (pn-accessor directory)
+++  (pn-accessor name)
+++  (pn-accessor type)
+++  (pn-accessor version))
+++
+++(defconstant +pathname-keys+ '(:host :device :directory :name :type :version))
+++
+++#.`(defun mlp (p)
+++     (list ,@(mapcar (lambda (x) `(,(strsym :si "C-PATHNAME-" x) p)) +pathname-keys+)))
+++
+++(defun pnl1 (x) (list* (pop x) (pop x) (append (pop x) x)))
+++(defun lnp (x) (list* (pop x) (pop x) (let ((q (last x 3))) (cons (ldiff x q) q))))
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_merge_pathnames.lsp
++@@ -0,0 +1,18 @@
+++(in-package :si)
+++
+++(defun merge-pathnames (p &optional (def *default-pathname-defaults*) (def-v :newest)
+++                       &aux dflt (pn (pathname p))(def-pn (pathname def)))
+++  (declare (optimize (safety 1)))
+++  (check-type p pathname-designator)
+++  (check-type def pathname-designator)
+++  (check-type def-v (or null (eql :newest) seqind))
+++  (labels ((def (x) (when x (setq dflt t) x)))
+++    (make-pathname
+++     :host (or (pathname-host pn) (def (pathname-host def-pn)))
+++     :device (or (pathname-device pn) (def (pathname-device def-pn)))
+++     :directory (let ((d (pathname-directory pn))(defd (pathname-directory def-pn)))
+++               (or (def (when (and defd (eq (car d) :relative)) (append defd (cdr d)))) d (def defd)))
+++     :name (or (pathname-name pn) (def (pathname-name def-pn)))
+++     :type (or (pathname-type pn) (def (pathname-type def-pn)))
+++     :version (or (pathname-version pn) (def (unless (pathname-name pn) (pathname-version def-pn))) (def def-v))
+++     :version (unless dflt (return-from merge-pathnames pn)))))
++--- gcl-2.6.12.orig/lsp/gcl_mislib.lsp
+++++ gcl-2.6.12/lsp/gcl_mislib.lsp
++@@ -114,13 +114,15 @@
++      (* (+ h tz) 3600) (* min 60) sec))
++ 
++ (defun compile-file-pathname (pathname)
++-(make-pathname :defaults pathname :type "o"))
+++  (make-pathname :defaults pathname :type "o"))
+++
++ (defun constantly (x)
++-#'(lambda (&rest args)
+++  (lambda (&rest args)
++     (declare (ignore args) (:dynamic-extent args))
++-x))
+++    x))
+++
++ (defun complement (fn)
++-#'(lambda (&rest args) (not (apply fn args))))
+++  (lambda (&rest args) (not (apply fn args))))
++ 
++ (defun default-system-banner ()
++   (let (gpled-modules)
++--- gcl-2.6.12.orig/lsp/gcl_module.lsp
+++++ gcl-2.6.12/lsp/gcl_module.lsp
++@@ -40,13 +40,13 @@
++ 
++ (defun require (module-name
++                 &optional (pathname (string-downcase (string module-name))))
++-  (let ((*default-pathname-defaults* #""))
+++  (let ((*default-pathname-defaults* (make-pathname)))
++     (unless (member (string module-name)
++                     *modules*
++                     :test #'string=)
++             (if (atom pathname)
++                 (load pathname)
++-                (do ((p pathname (cdr p)))
+++           (do ((p pathname (cdr p)))
++                     ((endp p))
++                   (load (car p)))))))
++           
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_namestring.lsp
++@@ -0,0 +1,39 @@
+++(in-package :si)
+++
+++(defun namestring (x)
+++  (declare (optimize (safety 1)))
+++  (check-type x pathname-designator)
+++  (typecase x
+++    (string x)
+++    (pathname (c-pathname-namestring x))
+++    (stream (namestring (c-stream-object1 x)))))
+++
+++(defun file-namestring (x &aux (px (pathname x)))
+++  (declare (optimize (safety 1)))
+++  (check-type x pathname-designator)
+++  (namestring (make-pathname :name (pathname-name px) :type (pathname-type px) :version (pathname-version px))))
+++
+++(defun directory-namestring (x &aux (px (pathname x)))
+++  (declare (optimize (safety 1)))
+++  (check-type x pathname-designator)
+++  (namestring (make-pathname :directory (pathname-directory px))))
+++
+++(defun host-namestring (x &aux (px (pathname x)))
+++  (declare (optimize (safety 1)))
+++  (check-type x pathname-designator)
+++  (or (pathname-host px) ""))
+++
+++#.`(defun enough-namestring (x &optional (def *default-pathname-defaults*) &aux (px (pathname x))(pdef (pathname def)))
+++     (declare (optimize (safety 1)))
+++     (check-type x pathname-designator)
+++     (check-type def pathname-designator)
+++     ,(labels ((new? (k &aux (f (intern (concatenate 'string "PATHNAME-" (string k)) :si)))
+++                  `(let ((k (,f px))) (unless (equal k (,f pdef)) k))))
+++     `(namestring (make-pathname
+++       ,@(mapcan (lambda (x) (list x (new? x))) +pathname-keys+)))))
+++
+++(defun faslink (file name &aux (pfile (namestring (merge-pathnames (make-pathname :type "o") (pathname file))))(*package* *package*));FIXME
+++  (declare (optimize (safety 1)))
+++  (check-type file pathname-designator)
+++  (check-type name string)
+++  (faslink-int pfile name))
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_parse_namestring.lsp
++@@ -0,0 +1,139 @@
+++(in-package :si)
+++
+++(deftype seqind nil `fixnum)
+++
+++(defun match-beginning (i &aux (v *match-data*))
+++  (declare ((vector fixnum) v)(seqind i))
+++  (the (or (integer -1 -1 ) seqind) (aref v i)))
+++(defun match-end (i &aux (v *match-data*))
+++  (declare ((vector fixnum) v)(seqind i))
+++  (the (or (integer -1 -1 ) seqind) (aref v (+ i (ash (length v) -1)))))
+++
+++(declaim (inline match-beginning match-end))
+++
+++(defun dir-conj (x) (if (eq x :relative) :absolute :relative))
+++
+++(defvar *up-key* :up)
+++
+++(defun mfr (x b i) (subseq x b i));  (make-array (- i b) :element-type 'character :displaced-to x :displaced-index-offset b)
+++
+++(defvar *sym-sub-alist* '((:host . nil)
+++                       (:device . nil)
+++                       (:directory . (("." . nil)(".." . :up)("*" . :wild)("**" . :wild-inferiors)))
+++                       (:name . (("*" . :wild)))
+++                       (:type . (("*" . :wild)))
+++                       (:version . (("*" . :wild)("NEWEST" . :newest)))))
+++
+++(defun element (x b i key)
+++  (let* ((z (when (> i b) (mfr x b i)))
+++      (w (assoc z (cdr (assoc key *sym-sub-alist*)) :test 'string-equal))
+++      (z (if w (cdr w) z)))
+++    (if (eq z :up) *up-key* z)))
+++
+++(defun dir-parse (x sep sepfirst &optional (b 0))
+++  (when (stringp x)
+++    (let ((i (search sep x :start2 b)));string-match spoils outer match results
+++      (when i
+++     (let* ((y (dir-parse x sep sepfirst (1+ i)))
+++            (z (element x b i :directory))
+++            (y (if z (cons z y) y)))
+++       (if (zerop b)
+++           (cons (if (zerop i) sepfirst (dir-conj sepfirst)) y)
+++         y))))))
+++
+++(defun match-component (x i k &optional (boff 0) (eoff 0))
+++  (element x (+ (match-beginning i) boff) (+ (match-end i) eoff) k))
+++
+++(defun version-parse (x)
+++  (typecase x
+++    (string (version-parse (parse-integer x)))
+++;    (integer (locally (check-type x (integer 1)) x))
+++    (otherwise x)))
+++
+++(defconstant +generic-logical-pathname-regexp+ (compile-regexp (to-regexp-or-namestring (make-list (length +logical-pathname-defaults+)) t t)))
+++
+++(defun expand-home-dir (dir)
+++  (cond ((and (eq (car dir) :relative) (stringp (cadr dir)) (eql #\~ (aref (cadr dir) 0)))
+++      (append (dir-parse (home-namestring (cadr dir)) "/" :absolute) (cddr dir)))
+++     (dir)))
+++
+++(defun logical-pathname-parse (x &optional host def (b 0) (e (length x)))
+++  (when (and (eql b (string-match +generic-logical-pathname-regexp+ x b e)) (eql (match-end 0) e))
+++    (let ((mhost (match-component x 1 :host 0 -1)))
+++      (when (and host mhost)
+++     (unless (string-equal host mhost)
+++         (error 'error :format-control "Host part of ~s does not match ~s" :format-arguments (list x host))))
+++      (let ((host (or host mhost (pathname-host def))))
+++     (when (logical-pathname-host-p host)
+++       (let* ((dir (dir-parse (match-component x 2 :none) ";" :relative))
+++              (edir (expand-home-dir dir)))
+++       (make-pathname :host host
+++                      :device :unspecific
+++                      :directory edir
+++                      :name (match-component x 6 :name)
+++                      :type (match-component x 8 :type 1)
+++                      :version (version-parse (match-component x 11 :version 1))
+++                      :namestring (when (and mhost (eql b 0) (eql e (length x)) (eq dir edir)) x))))))))
+++  
+++(defconstant +generic-physical-pathname-regexp+ (compile-regexp (to-regexp-or-namestring (make-list (length +physical-pathname-defaults+)) t nil)))
+++
+++(defun pathname-parse (x b e)
+++  (when (and (eql b (string-match +generic-physical-pathname-regexp+ x b e)) (eql (match-end 0) e))
+++    (let* ((dir (dir-parse (match-component x 1 :none) "/" :absolute))
+++        (edir (expand-home-dir dir)))
+++      (make-pathname :directory edir
+++                  :name (match-component x 3 :name)
+++                  :type (match-component x 4 :type 1)
+++                  :namestring (when (and (eql b 0) (eql e (length x)) (eq dir edir)) x)))))
+++
+++
+++(defun path-stream-name (x)
+++  (check-type x pathname-designator)
+++  (typecase x
+++    (synonym-stream (path-stream-name (symbol-value (synonym-stream-symbol x))))
+++    (stream (path-stream-name (c-stream-object1 x)))
+++    (otherwise x)))
+++
+++(defun parse-namestring (thing &optional host (default-pathname *default-pathname-defaults*) &rest r &key (start 0) end junk-allowed)
+++  (declare (optimize (safety 1))(dynamic-extent r))
+++  (check-type thing pathname-designator)
+++  (check-type host (or null (satisfies logical-pathname-translations)))
+++  (check-type default-pathname pathname-designator)
+++  (check-type start seqind)
+++  (check-type end (or null seqind))
+++  
+++  (typecase thing
+++    (string (let* ((e (or end (length thing)))
+++                (l (logical-pathname-parse thing host default-pathname start e))
+++                (l (or l (unless host (pathname-parse thing start e)))))
+++           (cond (junk-allowed (values l (max 0 (match-end 0))))
+++                 (l (values l e))
+++                 ((error 'parse-error :format-control "~s is not a valid pathname on host ~s" :format-arguments (list thing host))))))
+++    (stream (apply 'parse-namestring (path-stream-name thing) host default-pathname r))
+++    (pathname
+++     (when host
+++       (unless (string-equal host (pathname-host thing))
+++      (error 'file-error :pathname thing :format-control "Host does not match ~s" :format-arguments (list host))))
+++     (values thing start))))
+++
+++(defun pathname (spec)
+++  (declare (optimize (safety 1)))
+++  (check-type spec pathname-designator)
+++  (if (typep spec 'pathname) spec (values (parse-namestring spec))))
+++
+++(defun sharp-p-reader (stream subchar arg)
+++  (declare (ignore subchar arg))
+++  (let ((x (parse-namestring (read stream)))) x))
+++
+++(defun sharp-dq-reader (stream subchar arg);FIXME arg && read-suppress
+++  (declare (ignore subchar arg))
+++  (unread-char #\" stream)
+++  (let ((x (parse-namestring (read stream)))) x))
+++
+++(set-dispatch-macro-character #\# #\p 'sharp-p-reader)
+++(set-dispatch-macro-character #\# #\p 'sharp-p-reader (standard-readtable))
+++(set-dispatch-macro-character #\# #\P 'sharp-p-reader)
+++(set-dispatch-macro-character #\# #\P 'sharp-p-reader (standard-readtable))
+++(set-dispatch-macro-character #\# #\" 'sharp-dq-reader)
+++(set-dispatch-macro-character #\# #\" 'sharp-dq-reader (standard-readtable))
+++
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_pathname_match_p.lsp
++@@ -0,0 +1,14 @@
+++(in-package :si)
+++
+++(defun to-regexp (x &optional (rp t) &aux (px (pathname x))(lp (typep px 'logical-pathname)))
+++  (to-regexp-or-namestring (mlp px) rp lp))
+++
+++(deftype compiled-regexp nil `(vector unsigned-char))
+++
+++(defun pathname-match-p (p w &aux (s (namestring p)))
+++  (declare (optimize (safety 1)))
+++  (check-type p pathname-designator)
+++  (check-type w (or compiled-regexp pathname-designator))
+++  (and (zerop (string-match (if (typep w 'compiled-regexp) w (to-regexp w)) s))
+++       (eql (match-end 0) (length s))))
+++
++--- gcl-2.6.12.orig/lsp/gcl_predlib.lsp
+++++ gcl-2.6.12/lsp/gcl_predlib.lsp
++@@ -110,6 +110,7 @@
++        (not (array-has-fill-pointer-p x))
++        (not (si:displaced-array-p x))))
++ 
+++(defun logical-pathnamep (x) (when (pathnamep x) (eql (c-t-tt x) 1)))
++ 
++ (do ((l '((null . null)
++           (symbol . symbolp)
++@@ -124,7 +125,15 @@
++           (character . characterp)
++           (package . packagep)
++           (stream . streamp)
+++          (file-stream . file-stream-p)
+++          (synonym-stream . synonym-stream-p)
+++          (broadcast-stream . broadcast-stream-p)
+++          (concatenated-stream . concatenated-stream-p)
+++          (two-way-stream . two-way-stream-p)
+++          (echo-stream . echo-stream-p)
++           (pathname . pathnamep)
+++          (pathname-designator . pathname-designatorp)
+++          (logical-pathname . logical-pathnamep)
++           (readtable . readtablep)
++           (hash-table . hash-table-p)
++           (random-state . random-state-p)
++@@ -196,6 +205,8 @@
++          ((null l) t)
++        (unless (typep object (car l)) (return nil))))
++     (satisfies (funcall (car i) object))
+++    (eql (eql (car i) object))
+++    (member (member object i))
++     ((t) t)
++     ((nil) nil)
++     (boolean (or (eq object 't) (eq object 'nil)))
++@@ -280,6 +291,40 @@
++            (typep object (apply tem i)))))))
++ 
++ 
+++
+++(defun minmax (i1 i2 low-p e &aux (fn (if low-p (if e '< '>) (if e '> '<))))
+++  (cond ((eq i1 '*) (if e i1 i2))
+++     ((eq i2 '*) (if e i2 i1))
+++     ((funcall fn i1 i2) i1)
+++     (i2)))
+++
+++(defun expand-range (low high bottom top)
+++  (let ((low (minmax low bottom t t))(high (minmax high top nil t)))
+++    (when (or (eq low '*) (eq high '*) (<= low high)) (list low high))))
+++
+++(defun nc (tp)
+++  (when (consp tp)
+++    (case (car tp)
+++       ;; (immfix (let ((m (cadr tp))(x (caddr tp))
+++       ;;        (list (list 'integer (if (eq m '*) most-negative-immfix m) (if (eq x '*) most-positive-immfix x)))))
+++       ;; (bfix (let* ((m (cadr tp))(x (caddr tp))(m (if (eq m '*) most-negative-fixnum m))(x (if (eq x '*) most-positive-fixnum x)))
+++       ;;      (if (< (* m x) 0)
+++       ;;          `((integer ,m ,(1- most-negative-immfix))(integer ,(1+ most-positive-immfix) ,x))
+++       ;;        `((integer ,m ,x)))))
+++       ;; (bignum (let* ((m (cadr tp))(x (caddr tp))(sm (or (eq m '*) (< m 0)))(sx (or (eq x '*) (>= x 0))))
+++       ;;        (if (and sm sx)
+++       ;;            `((integer ,m ,(1- most-negative-fixnum))(integer ,(1+ most-positive-fixnum) ,x))
+++       ;;          `((integer ,m ,x)))))
+++       ((integer ratio short-float long-float) (list tp))
+++       (otherwise (append (nc (car tp)) (nc (cdr tp)))))))
+++
+++
+++(defun expand-ranges (type)
+++  (reduce (lambda (y x &aux (z (assoc (car x) y)))
+++          (if z (subst (cons (car z) (apply 'expand-range (cadr x) (caddr x) (cdr z))) z y)
+++            (cons x y))) (nc type) :initial-value nil))
+++
+++
++ ;;; NORMALIZE-TYPE normalizes the type using the DEFTYPE definitions.
++ ;;; The result is always a list.
++ (defun normalize-type (type &aux tp i )
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_rename_file.lsp
++@@ -0,0 +1,47 @@
+++(in-package :si)
+++
+++(defun set-path-stream-name (x y)
+++  (check-type x pathname-designator)
+++  (typecase x
+++    (synonym-stream (set-path-stream-name (symbol-value (synonym-stream-symbol x)) y))
+++    (stream (c-set-stream-object1 x y))))
+++
+++(defun rename-file (f n &aux (pf (pathname f))(pn (merge-pathnames n pf nil))
+++                   (tpf (truename pf))(nf (namestring tpf))
+++                   (tpn (translate-logical-pathname pn))(nn (namestring tpn)))
+++  (declare (optimize (safety 1)))
+++  (check-type f pathname-designator)
+++  (check-type n (and pathname-designator (not stream)))
+++  (unless (rename nf nn)
+++    (error 'file-error :pathname pf :format-control "Cannot rename ~s to ~s." :format-arguments (list nf nn)))
+++  (set-path-stream-name f pn)
+++  (values pn tpf (truename tpn)))
+++
+++(defun user-homedir-pathname (&optional (host :unspecific hostp))
+++  (declare (optimize (safety 1)))
+++  (check-type host (or string list (eql :unspecific)))
+++  (unless hostp
+++    (pathname (home-namestring "~"))))
+++
+++(defun delete-file (f &aux (pf (truename f))(nf (namestring pf)))
+++  (declare (optimize (safety 1)))
+++  (check-type f pathname-designator)
+++  (unless (if (eq :directory (stat nf)) (rmdir nf) (unlink nf))
+++    (error 'file-error :pathname (pathname nf) :format-control "Cannot delete pathname."))
+++  t)
+++
+++(defun file-write-date (spec)
+++  (declare (optimize (safety 1)))
+++  (check-type spec pathname-designator)
+++  (multiple-value-bind
+++      (tp sz tm) (stat (namestring (truename spec)))
+++    (+ tm (* (+ 17 (* 70 365)) (* 24 60 60)))))
+++
+++  
+++(defun file-author (spec)
+++  (declare (optimize (safety 1)))
+++  (check-type spec pathname-designator)
+++  (multiple-value-bind
+++      (tp sz tm uid) (stat (namestring (truename spec)))
+++    (uid-to-name uid)))
+++
++--- gcl-2.6.12.orig/lsp/gcl_sharp.lsp
+++++ gcl-2.6.12/lsp/gcl_sharp.lsp
++@@ -61,4 +61,6 @@
++    (otherwise x)))
++ 
++ (set-dispatch-macro-character #\# #\= #'sharp-eq-reader)
+++(set-dispatch-macro-character #\# #\= #'sharp-eq-reader (standard-readtable))
++ (set-dispatch-macro-character #\# #\# #'sharp-sharp-reader)
+++(set-dispatch-macro-character #\# #\# #'sharp-sharp-reader (standard-readtable))
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_sharp_uv.lsp
++@@ -0,0 +1,29 @@
+++(in-package :si)
+++
+++(defun regexp-conv (stream)
+++
+++  (let ((tem (make-array 10 :element-type 'character :fill-pointer 0)))
+++    (or (eql (read-char stream) #\")
+++     (error "sharp-u-reader reader needs a \" right after it"))
+++    (loop
+++     (let ((ch (read-char stream)))
+++       (cond ((eql ch #\") (return tem))
+++          ((eql ch #\\)
+++           (setq ch (read-char stream))
+++           (setq ch (or (cdr (assoc ch '((#\n . #\newline)
+++                                         (#\t . #\tab)
+++                                         (#\r . #\return))))
+++                        ch))))
+++       (vector-push-extend ch tem)))
+++    tem))
+++
+++(defun sharp-u-reader (stream subchar arg)
+++  (declare (ignore subchar arg))
+++  (regexp-conv stream))
+++
+++(defun sharp-v-reader (stream subchar arg)
+++  (declare (ignore subchar arg))
+++  `(load-time-value (compile-regexp ,(regexp-conv stream))))
+++
+++(set-dispatch-macro-character #\# #\u 'sharp-u-reader)
+++(set-dispatch-macro-character #\# #\v 'sharp-v-reader)
++--- gcl-2.6.12.orig/lsp/gcl_top.lsp
+++++ gcl-2.6.12/lsp/gcl_top.lsp
++@@ -83,7 +83,7 @@
++       (progn 
++      (cond
++       (*multiply-stacks* (setq *multiply-stacks* nil))
++-      ((probe-file "init.lsp") (load "init.lsp"))))
+++      ((when (fboundp 'probe-file) (probe-file "init.lsp")) (load "init.lsp"))))
++       (when (if (symbolp *top-level-hook*) (fboundp *top-level-hook*) (functionp *top-level-hook*))
++      (funcall *top-level-hook*)))
++ 
++@@ -122,6 +122,8 @@
++ 
++ (defvar *error-p* nil)
++ 
+++(defvar *lib-directory* nil)
+++
++ (defun process-some-args (args &optional compile &aux *load-verbose*)
++   (when args
++     (let ((x (pop args)))
++@@ -148,7 +150,7 @@
++         (file (cdr (assoc :compile compile)))
++         (o (cdr (assoc :o compile)))
++         (compile (remove :o (remove :compile compile :key 'car) :key 'car))
++-        (compile (cons (cons :output-file (or o file)) compile))
++++       (compile (cons (cons :output-file (or o (merge-pathnames ".o" file))) compile))
++         (result (system:error-set `(apply 'compile-file ,file ',(mapcan (lambda (x) (list (car x) (cdr x))) compile)))))
++       (bye (if (or *error-p* (equal result '(nil))) 1 0)))))
++ 
++@@ -520,15 +522,12 @@ add a new one, add a 'si::break-command
++ 
++ ;;make sure '/' terminated
++ 
++-(defun coerce-slash-terminated (v )
++-  (declare (string v))
++-  (or (stringp v) (error "not a string ~a" v))
+++(defun coerce-slash-terminated (v)
++   (let ((n (length v)))
++-    (declare (fixnum n))
++-    (unless (and (> n 0) (eql
++-                       (the character(aref v (the fixnum (- n 1)))) #\/))
++-         (setf v (format nil "~a/" v))))
++-  v)
+++    (if (and (> n 0) (eql (aref v (1- n)) #\/))
+++     v
+++      (string-concatenate v "/"))))
+++
++ (defun fix-load-path (l)
++   (when (not (equal l *fixed-load-path*))
++       (do ((x l (cdr x)) )
++@@ -587,19 +586,17 @@ First directory is checked for first nam
++     (when (and s (symbol-value s))
++       (list *system-directory*))))
++       
++-
++-(defun get-temp-dir nil
++- (dolist (x `(,@(wine-tmp-redirect) ,@(mapcar 'getenv '("TMPDIR" "TMP" "TEMP")) "/tmp" ""))
++-   (when (or (stringp x) (pathnamep x))
++-     (let* ((x (truename (pathname x)))
++-         (y (namestring (make-pathname :name (pathname-name x) :type (pathname-type x) :version (pathname-version x))))
++-         (y (unless (zerop (length y)) (list y))))
++-       (when (eq :directory (car (stat x)))
++-      (return-from get-temp-dir 
++-        (namestring 
++-         (make-pathname 
++-          :device (pathname-device x)
++-          :directory (append (pathname-directory x) y)))))))))
+++(defun ensure-dir-string (str)
+++  (if (eq (stat str) :directory)
+++      (coerce-slash-terminated str)
+++    str))
+++
+++(defun get-temp-dir ()
+++  (dolist (x `(,@(wine-tmp-redirect) ,@(mapcar 'si::getenv '("TMPDIR" "TMP" "TEMP")) "/tmp" ""))
+++    (when x
+++      (let ((x (coerce-slash-terminated x)))
+++     (when (eq (stat x) :directory)
+++       (return-from get-temp-dir x))))))
++ 
++ (defun get-path (s &aux (m (string-match "([^/ ]*)( |$)" s))(b (match-beginning 1))(e (match-end 1))
++                 (r (with-open-file (s (concatenate 'string "|which " (subseq s b e))) (read s nil 'eof))))
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_translate_pathname.lsp
++@@ -0,0 +1,90 @@
+++(in-package :si)
+++
+++(defun lenel (x lp)
+++  (case x (:wild 1)(:wild-inferiors 2)(:absolute (if lp -1 0))(:relative (if lp 0 -1))
+++     ((:unspecific nil :newest) -1)(otherwise (length x))))
+++
+++(defun next-match (&optional (i 1) (k -1) (m (1- (ash (length *match-data*) -1))))
+++  (cond ((< k (match-beginning i) (match-end i)) i)
+++     ((< i m) (next-match (1+ i) k m))
+++     (i)))
+++
+++(defun mme2 (s lel lp &optional (b 0) (i (next-match)) r el
+++            &aux (e (+ b (lenel (car lel) lp)))(j (match-beginning i))(k (match-end i)))
+++  (cond
+++   ((< (- b 2) j k (+ e 2))
+++    (let* ((z (car lel))(b1 (max b j))(e1 (min k e))
+++        (z (if (or (< b b1) (< e1 e)) (subseq z (- b1 b) (- e1 b)) z))
+++        (r (if el r (cons nil r))))
+++      (mme2 s lel lp b (next-match i k) (cons (cons z (car r)) (cdr r)) (or el (car lel)))))
+++   ((< (1- j) b e (1+ k))
+++    (let ((r (if el r (cons nil r))))
+++      (mme2 s (cdr lel) lp (1+ e) i (cons (cons (car lel) (car r)) (cdr r)) (or el (list (car lel))))))
+++   ((consp el)
+++    (let* ((cr (nreverse (car r))))
+++      (mme2 s lel lp b (next-match i k) (cons (cons (car el) (list cr)) (cdr r)))))
+++   (el
+++    (let* ((cr (nreverse (car r))))
+++      (mme2 s (cdr lel) lp (1+ e) i (cons (cons el cr) (cdr r)))))
+++   (lel (mme2 s (cdr lel) lp (1+ e) i (cons (car lel) r)))
+++   ((nreverse r))))
+++
+++(defun do-repl (x y)
+++  (labels ((r (x l &optional (b 0) &aux (f (string-match #v"\\*" x b)))
+++           (if (eql f -1) (if (eql b 0) x (subseq x b))
+++             (concatenate 'string (subseq x b f) (or (car l) "") (r x (cdr l) (1+ f))))))
+++    (r y x)))
+++
+++(defun dir-p (x) (when (consp x) (member (car x) '(:absolute :relative))))
+++
+++(defun source-portion (x y)
+++  (cond
+++   ((or (dir-p x) (dir-p y))
+++    (mapcan (lambda (z &aux (w (source-portion
+++                             (if y (when (wild-dir-element-p z) (setf x (member-if 'listp x)) (pop x)) z)
+++                             (when y z))))
+++           (if (listp w) w (list w))) (or y x)))
+++   ((if y (eq y :wild-inferiors) t) (if (listp x) (if (listp (cadr x)) (cadr x) (car x)) x));(or  y)
+++   ((eq y :wild) (if (listp x) (car x) x));(or  y)
+++   ((stringp y) (do-repl (when (listp x) (unless (listp (cadr x)) (cdr x))) y))
+++   (y)))
+++
+++(defun list-toggle-case (x f)
+++  (typecase x
+++    (string (funcall f x))
+++    (cons (mapcar (lambda (x) (list-toggle-case x f)) x))
+++    (otherwise x)))
+++
+++(defun mme3 (sx px flp tlp)
+++  (list-toggle-case
+++   (lnp (mme2 sx (pnl1 (mlp px)) flp))
+++   (cond ((eq flp tlp) 'identity)
+++      (flp 'string-downcase)
+++      (tlp 'string-upcase))))
+++
+++(defun translate-pathname (source from to &key
+++                               &aux (psource (pathname source))
+++                               (pto (pathname to))
+++                               (match (pathname-match-p source from)))
+++  (declare (optimize (safety 1)))
+++  (check-type source pathname-designator)
+++  (check-type from pathname-designator)
+++  (check-type to pathname-designator)
+++  (check-type match (not null))
+++  (apply 'make-pathname :host (pathname-host pto) :device (pathname-device pto)
+++      (mapcan 'list +pathname-keys+
+++              (mapcar 'source-portion
+++                      (mme3 (namestring source) psource (typep psource 'logical-pathname) (typep pto 'logical-pathname))
+++                      (mlp pto)))))
+++
+++(defun translate-logical-pathname (spec &key &aux (p (pathname spec)))
+++  (declare (optimize (safety 1)))
+++  (check-type spec pathname-designator)
+++  (typecase p
+++    (logical-pathname
+++     (let ((rules (assoc p (logical-pathname-translations (pathname-host p)) :test 'pathname-match-p)))
+++       (unless rules
+++      (error 'file-error :pathname p :format-control "No matching translations"))
+++       (translate-logical-pathname (apply 'translate-pathname p rules))))
+++    (otherwise p)))
+++    
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_truename.lsp
++@@ -0,0 +1,43 @@
+++(in-package :si)
+++
+++(defun link-expand (str &optional (b 0)      (n (length str)) fr)
+++  (labels ((frame (b e) (make-array (- n b) :element-type 'character
+++                                 :displaced-to str :displaced-index-offset b :fill-pointer (- e b)))
+++        (set-fr (fr e &aux (fr (or fr (frame 0 b)))) (setf (fill-pointer fr) e) fr))
+++    (let* ((i (string-match #v"/" str b))
+++        (fr (set-fr fr (if (eql i -1) n i)))
+++        (l (when (eq (stat fr) :link) (readlinkat 0 fr))))
+++      (cond (l (let ((b (if (eql #\/ (aref l 0)) 0 b)))
+++              (link-expand (concatenate 'string (set-fr fr b) l (frame (if (eql i -1) n i) n)) b)))
+++         ((eql i -1) str)
+++         ((link-expand str (1+ i) n fr))))))
+++
+++(defun logical-pathname-designator-p (x)
+++  (typecase x
+++    (string (logical-pathname-parse x))
+++    (pathname (typep x 'logical-pathname))
+++    (stream (logical-pathname-designator-p (pathname x)))))
+++
+++;(defvar *current-dir* (pathname (concatenate 'string (getcwd) "/"))) FIXME sync with chdir
+++
+++(defun truename (pd &aux (ppd (translate-logical-pathname pd))(ns (namestring ppd)))
+++  (declare (optimize (safety 1)))
+++  (check-type pd pathname-designator)
+++  (when (wild-pathname-p ns)
+++    (error 'file-error :pathname pd :format-control "Pathname is wild"))
+++  (let* ((ns (ensure-dir-string (link-expand ns))))
+++    (unless (or (zerop (length ns)) (stat ns))
+++      (error 'file-error :pathname ns :format-control "Pathname does not exist"))
+++    (let* ((d (pathname-directory ppd))
+++        (d1 (subst :back :up d))
+++        (ppd (if (eq d d1) ppd (make-pathname :directory d1 :defaults ppd))))
+++      (if (eq (car d) :absolute) ppd (merge-pathnames ppd (concatenate 'string (getcwd) "/") nil)))))
+++
+++
+++(defun probe-file (pd &aux (pn (translate-logical-pathname pd)))
+++  (declare (optimize (safety 1)))
+++  (check-type pd pathname-designator)
+++  (when (wild-pathname-p pn)
+++    (error 'file-error :pathname pn :format-control "Pathname is wild"))
+++  (when (eq (stat (namestring pn)) :file)
+++    (truename pn)))
++--- /dev/null
+++++ gcl-2.6.12/lsp/gcl_wild_pathname_p.lsp
++@@ -0,0 +1,28 @@
+++(in-package :si)
+++
+++(defun wild-namestring-p (x)
+++  (when (stringp x) (>= (string-match #v"(\\*|\\?|\\[|\\{)" x) 0)))
+++
+++(defun wild-dir-element-p (x)
+++  (or (eq x :wild) (eq x :wild-inferiors) (wild-namestring-p x)))
+++
+++(defun wild-path-element-p (x)
+++  (or (eq x :wild) (wild-namestring-p x)))
+++
+++#.`(defun wild-pathname-p (pd &optional f)
+++     (declare (optimize (safety 1)))
+++     (check-type pd pathname-designator)
+++     (check-type f (or null (member ,@+pathname-keys+)))
+++     (case f
+++       ((nil) (or (wild-namestring-p (namestring pd))
+++               (when (typep pd 'pathname);FIXME stream
+++                 (eq :wild (pathname-version pd)))))
+++       ;; ((nil) (if (stringp pd) (wild-namestring-p pd)
+++       ;;            (let ((p (pathname pd)))
+++       ;;              (when (member-if (lambda (x) (wild-pathname-p p x)) +pathname-keys+) t))))
+++       ((:host :device) nil)
+++       (:directory (when (member-if 'wild-dir-element-p (pathname-directory pd)) t))
+++       (:name (wild-path-element-p (pathname-name pd)))
+++       (:type (wild-path-element-p (pathname-type pd)))
+++       (:version (wild-path-element-p (pathname-version pd)))))
+++    
++--- gcl-2.6.12.orig/lsp/makefile
+++++ gcl-2.6.12/lsp/makefile
++@@ -13,9 +13,12 @@ OBJS       = gcl_sharp.o gcl_arraylib.o gcl_as
++        gcl_describe.o gcl_evalmacros.o gcl_fpe.o \
++        gcl_iolib.o gcl_listlib.o gcl_mislib.o gcl_module.o gcl_numlib.o \
++        gcl_packlib.o gcl_predlib.o \
+++       gcl_parse_namestring.o gcl_make_pathname.o gcl_namestring.o gcl_translate_pathname.o\
+++       gcl_logical_pathname_translations.o gcl_directory.o gcl_merge_pathnames.o gcl_truename.o gcl_sharp_uv.o\
++        gcl_seq.o gcl_seqlib.o gcl_setf.o gcl_top.o gcl_trace.o gcl_sloop.o \
++           gcl_debug.o gcl_info.o gcl_serror.o gcl_restart.o \
++-       gcl_destructuring_bind.o gcl_defpackage.o gcl_make_defpackage.o gcl_loop.o $(EXTRA_LOBJS)
+++          gcl_rename_file.o gcl_pathname_match_p.o gcl_wild_pathname_p.o \
+++          gcl_destructuring_bind.o gcl_defpackage.o gcl_make_defpackage.o gcl_loop.o $(EXTRA_LOBJS)
++ # export.o autoload.o auto_new.o
++ 
++ LISP=$(PORTDIR)/saved_pre_gcl$(EXE)
++--- gcl-2.6.12.orig/lsp/sys-proclaim.lisp
+++++ gcl-2.6.12/lsp/sys-proclaim.lisp
++@@ -2,361 +2,223 @@
++ (COMMON-LISP::IN-PACKAGE "SYSTEM") 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         ANSI-LOOP::LOOP-EMIT-FINAL-VALUE SYSTEM::INSPECT-CHARACTER
++-         SYSTEM::INSPECT-STRUCTURE SYSTEM::PRINT-IHS SYSTEM::DBL-RPL-LOOP
++-         SYSTEM::RESTART-FUNCTION COMMON-LISP::TANH COMMON-LISP::FIFTH
++-         SLOOP::PARSE-LOOP-INITIALLY SYSTEM::NEXT-STACK-FRAME
++-         SYSTEM::IDESCRIBE SYSTEM::PROCESS-ARGS SYSTEM::LEAP-YEAR-P
++-         SLOOP::AVERAGING-SLOOP-MACRO SYSTEM::FIX-LOAD-PATH
++-         SLOOP::SUBSTITUTE-SLOOP-BODY SYSTEM::RESTART-REPORT-FUNCTION
++-         COMMON-LISP::NINTH SLOOP::SLOOP-SLOOP-MACRO
++-         SYSTEM::S-DATA-CONSTRUCTORS SYSTEM::FREEZE-DEFSTRUCT
++-         COMMON-LISP::EIGHTH SYSTEM::FIND-DOCUMENTATION
++-         ANSI-LOOP::LOOP-PSEUDO-BODY COMMON-LISP::RATIONAL
++-         ANSI-LOOP::LOOP-EMIT-BODY COMMON-LISP::ASIN
++-         COMMON-LISP::COMPILE-FILE-PATHNAME SYSTEM::S-DATA-P
++-         SYSTEM::BKPT-FUNCTION SYSTEM::TRACE-ONE-PREPROCESS
++-         COMMON-LISP::LOGNOT SYSTEM::SIMPLE-ARRAY-P SYSTEM::BKPT-FILE
++-         SYSTEM::S-DATA-STATICP COMMON-LISP::ISQRT SYSTEM::INSTREAM-P
++-         COMMON-LISP::SEVENTH SYSTEM::S-DATA-NAMED
++-         ANSI-LOOP::LOOP-PATH-PREPOSITION-GROUPS SYSTEM::INSPECT-NUMBER
++-         COMMON-LISP::ATANH SYSTEM::RESTART-TEST-FUNCTION
++-         SYSTEM::S-DATA-INCLUDES SYSTEM::S-DATA-HAS-HOLES
++-         SYSTEM::CONTEXT-VEC FPE::XMM-LOOKUP SYSTEM::S-DATA-RAW
++-         ANSI-LOOP::LOOP-UNIVERSE-KEYWORDS
++-         SYSTEM::RESTART-INTERACTIVE-FUNCTION
++-         ANSI-LOOP::LOOP-UNIVERSE-ITERATION-KEYWORDS
++-         ANSI-LOOP::LOOP-COLLECTOR-NAME ANSI-LOOP::LOOP-PATH-NAMES
++-         ANSI-LOOP::LOOP-MINIMAX-ANSWER-VARIABLE
++-         SYSTEM::S-DATA-INCLUDED SYSTEM::S-DATA-SLOT-DESCRIPTIONS
++-         SYSTEM::S-DATA-OFFSET SLOOP::REPEAT-SLOOP-MACRO
++-         SYSTEM::S-DATA-PRINT-FUNCTION ANSI-LOOP::LOOP-PATH-USER-DATA
++-         COMMON-LISP::FIND-ALL-SYMBOLS COMMON-LISP::FIRST
++-         SYSTEM::GET-BYTE-STREAM-NCHARS SYSTEM::BKPT-FORM
++-         SYSTEM::NODES-FROM-INDEX SYSTEM::INSPECT-SYMBOL
++-         SYSTEM::KNOWN-TYPE-P ANSI-LOOP::LOOP-MINIMAX-TEMP-VARIABLE
++-         SYSTEM::MAKE-DEFPACKAGE-FORM COMMON-LISP::ARRAY-DIMENSIONS
++-         SYSTEM::INSERT-BREAK-POINT SLOOP::PARSE-LOOP
++-         ANSI-LOOP::LOOP-PATH-INCLUSIVE-PERMITTED
++-         ANSI-LOOP::LOOP-UNIVERSE-PATH-KEYWORDS SYSTEM::SHORT-NAME
++-         SYSTEM::CHECK-TRACE-SPEC ANSI-LOOP::DESTRUCTURING-SIZE
++-         SYSTEM::BEST-ARRAY-ELEMENT-TYPE SYSTEM::CONTEXT-HASH
++-         COMMON-LISP::SIXTH SYSTEM::IHS-VISIBLE SYSTEM::INSPECT-ARRAY
++-         COMMON-LISP::BYTE-SIZE ANSI-LOOP::LOOP-COLLECTOR-CLASS
++-         ANSI-LOOP::LOOP-HACK-ITERATION
++-         ANSI-LOOP::LOOP-CONSTRUCT-RETURN SYSTEM::S-DATA-SLOT-POSITION
++-         ANSI-LOOP::LOOP-MINIMAX-FLAG-VARIABLE SYSTEM::INSPECT-STRING
++-         COMMON-LISP::PROVIDE COMMON-LISP::CIS
++-         ANSI-LOOP::LOOP-MINIMAX-OPERATIONS
++-         SYSTEM::BREAK-BACKWARD-SEARCH-STACK
++-         ANSI-LOOP::LOOP-COLLECTOR-DTYPE
++-         SYSTEM::IHS-NOT-INTERPRETED-ENV SYSTEM::SEARCH-STACK
++-         COMMON-LISP::TENTH ANSI-LOOP::LOOP-DO-THEREIS
++-         ANSI-LOOP::LOOP-MAXMIN-COLLECTION
++-         ANSI-LOOP::LOOP-MINIMAX-INFINITY-DATA
++-         ANSI-LOOP::LOOP-MAKE-PSETQ SYSTEM::ADD-TO-HOTLIST
++-         SYSTEM::INSPECT-CONS ANSI-LOOP::LOOP-UNIVERSE-TYPE-SYMBOLS
++-         SYSTEM::INSPECT-VECTOR COMMON-LISP::CONSTANTLY
++-         SYSTEM::REWRITE-RESTART-CASE-CLAUSE SYSTEM::DM-BAD-KEY
++-         SYSTEM::PRINT-SYMBOL-APROPOS SYSTEM::FRS-KIND FPE::ST-LOOKUP
++-         COMMON-LISP::FOURTH SYSTEM::TERMINAL-INTERRUPT
++-         SYSTEM::DM-KEY-NOT-ALLOWED SYSTEM::UNIQUE-ID
++-         SYSTEM::S-DATA-FROZEN SLOOP::POINTER-FOR-COLLECT
++-         SYSTEM::INSPECT-PACKAGE SYSTEM::DBL-EVAL
++-         ANSI-LOOP::LOOP-MINIMAX-TYPE ANSI-LOOP::LOOP-UNIVERSE-ANSI
++-         ANSI-LOOP::LOOP-UNIVERSE-TYPE-KEYWORDS SYSTEM::DWIM
++-         SYSTEM::INSTREAM-STREAM-NAME SLOOP::RETURN-SLOOP-MACRO
++-         SYSTEM::PATCH-SHARP SYSTEM::CONTEXT-P SYSTEM::INFO-GET-FILE
++-         SYSTEM::RESTART-P COMMON-LISP::COSH COMMON-LISP::SINH
++-         SYSTEM::GET-NEXT-VISIBLE-FUN SYSTEM::CHECK-DECLARATIONS
++-         SYSTEM::GET-INSTREAM
++-         ANSI-LOOP::LOOP-CODE-DUPLICATION-THRESHOLD SYSTEM::S-DATA-NAME
++-         ANSI-LOOP::LOOP-UNIVERSE-FOR-KEYWORDS
++-         SYSTEM::S-DATA-DOCUMENTATION SYSTEM::SHOW-BREAK-POINT
++-         COMMON-LISP::ACOS COMMON-LISP::INVOKE-DEBUGGER
++-         SYSTEM::BKPT-FILE-LINE ANSI-LOOP::LOOP-COLLECTOR-DATA
++-         COMMON-LISP::THIRD SYSTEM::S-DATA-CONC-NAME
++-         COMMON-LISP::SIGNUM
++-         ANSI-LOOP::LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
++-         SYSTEM::NORMALIZE-TYPE ANSI-LOOP::LOOP-TYPED-INIT
++-         ANSI-LOOP::LOOP-PATH-FUNCTION SYSTEM::INFO-NODE-FROM-POSITION
++-         COMMON-LISP::ASINH SYSTEM::RE-QUOTE-STRING
++-         SLOOP::LOOP-COLLECT-KEYWORD-P SYSTEM::PRINT-FRS
++-         SYSTEM::EVAL-FEATURE ANSI-LOOP::LOOP-COLLECTOR-P
++-         ANSI-LOOP::LOOP-COLLECTOR-HISTORY
++-         ANSI-LOOP::LOOP-LIST-COLLECTION
++-         SYSTEM::BREAK-FORWARD-SEARCH-STACK COMMON-LISP::RESTART-NAME
++-         SLOOP::PARSE-NO-BODY ANSI-LOOP::LOOP-UNIVERSE-P
++-         SYSTEM::NUMBER-OF-DAYS-FROM-1900 SYSTEM::NODE-OFFSET
++-         ANSI-LOOP::LOOP-MINIMAX-P SYSTEM::IHS-FNAME FPE::LOOKUP
++-         SLOOP::LOOP-LET-BINDINGS FPE::GREF COMMON-LISP::PHASE
++-         COMMON-LISP::BYTE-POSITION SYSTEM::INSTREAM-STREAM
++-         ANSI-LOOP::LOOP-PATH-P SYSTEM::SEQTYPE COMMON-LISP::ACOSH
++-         COMMON-LISP::ABS COMMON-LISP::COMPLEMENT
++-         ANSI-LOOP::LOOP-CONSTANTP SYSTEM::WALK-THROUGH
++-         SYSTEM::SETUP-INFO SYSTEM::COMPUTING-ARGS-P
++-         SYSTEM::CONTEXT-SPICE SYSTEM::MAKE-KCL-TOP-RESTART
++-         COMMON-LISP::COMPILER-MACRO-FUNCTION
++-         ANSI-LOOP::LOOP-MAKE-DESETQ SYSTEM::SHOW-ENVIRONMENT
++-         SLOOP::TRANSLATE-NAME SYSTEM::INFO-GET-TAGS
++-         COMMON-LISP::SECOND SYSTEM::RESET-TRACE-DECLARATIONS
++-         SYSTEM::S-DATA-TYPE SYSTEM::FIND-KCL-TOP-RESTART
++-         ANSI-LOOP::MAKE-ANSI-LOOP-UNIVERSE SYSTEM::DO-F
++-         ANSI-LOOP::LOOP-COLLECTOR-TEMPVARS COMMON-LISP::VECTOR-POP)) 
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::ATOI)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
++-         SYSTEM::IHS-BACKTRACE SYSTEM::BREAK-NEXT SYSTEM::BREAK-QUIT
++-         SYSTEM::SHOW-BREAK-VARIABLES SYSTEM::BREAK-BDS
++-         COMMON-LISP::MUFFLE-WARNING SYSTEM::BREAK-PREVIOUS
++-         SYSTEM::INFO-ERROR ANSI-LOOP::LOOP-OPTIONAL-TYPE
++-         SYSTEM::DBL-BACKTRACE SYSTEM::BREAK-LOCAL SYSTEM::BREAK-VS
++-         COMMON-LISP::CONTINUE)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::OR COMMON-LISP::NULL
+++                 COMMON-LISP::HASH-TABLE))
+++         SYSTEM::CONTEXT-HASH)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM)
++-             COMMON-LISP::FIXNUM)
++-         SYSTEM::DBL-WHAT-FRAME FPE::FE-ENABLE)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::PARSE-DEFMACRO-LAMBDA-LIST SYSTEM::PARSE-DEFMACRO)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::*)
++-         COMMON-LISP::SUBTYPEP COMMON-LISP::REDUCE SYSTEM::PARSE-BODY
++-         COMMON-LISP::STABLE-SORT COMMON-LISP::SORT
++-         SLOOP::FIND-IN-ORDERED-LIST)) 
+++         COMMON-LISP::SUBTYPEP COMMON-LISP::REDUCE
+++         SLOOP::FIND-IN-ORDERED-LIST SYSTEM::PARSE-BODY
+++         COMMON-LISP::STABLE-SORT COMMON-LISP::SORT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::*)
++-         SYSTEM::VERIFY-KEYWORDS SYSTEM::RESTART-PRINT
++-         ANSI-LOOP::LOOP-GET-COLLECTION-INFO SYSTEM::LIST-MERGE-SORT
++-         SYSTEM::READ-INSPECT-COMMAND SYSTEM::SHARP---READER
++-         SYSTEM::SHARP-+-READER SYSTEM::SHARP-S-READER)) 
+++         SYSTEM::SHARP-+-READER SYSTEM::SHARP---READER
+++         SYSTEM::SHARP-S-READER ANSI-LOOP::LOOP-GET-COLLECTION-INFO
+++         SYSTEM::VERIFY-KEYWORDS SYSTEM::LIST-MERGE-SORT
+++         SYSTEM::RESTART-PRINT SYSTEM::READ-INSPECT-COMMAND)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
+++                 COMMON-LISP::T)
++              COMMON-LISP::*)
++-         SYSTEM::PUSH-OPTIONAL-BINDING)) 
+++         SYSTEM::TRACE-CALL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++                 COMMON-LISP::*)
++              COMMON-LISP::*)
++-         SYSTEM::PARSE-DEFMACRO-LAMBDA-LIST SYSTEM::PARSE-DEFMACRO)) 
+++         SYSTEM::EXPAND-WILD-DIRECTORY SYSTEM::MASET)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++              COMMON-LISP::*)
++-         SYSTEM::TRACE-CALL)) 
+++         SYSTEM::MME3)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         SYSTEM::MASET)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
++-         FPE::REG-LOOKUP SYSTEM::INSTREAM-LINE SYSTEM::THE-START
++-         SYSTEM::S-DATA-LENGTH SYSTEM::S-DATA-SIZE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
++-         SYSTEM::PUSH-CONTEXT SYSTEM::GET-CONTEXT)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
++-         SYSTEM::BREAK-CURRENT SYSTEM::GCL-TOP-LEVEL
++-         SYSTEM::BREAK-MESSAGE SYSTEM::BREAK-RESUME
++-         ANSI-LOOP::LOOP-DO-FOR SYSTEM::SIMPLE-BACKTRACE
++-         SYSTEM::BREAK-HELP)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::STRING) COMMON-LISP::T)
++-         SYSTEM::COERCE-SLASH-TERMINATED SYSTEM::RESET-SYS-PATHS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         COMMON-LISP::BIT COMMON-LISP::READ-BYTE
++-         COMMON-LISP::CONCATENATE SYSTEM::INFO-SEARCH
++-         COMMON-LISP::ARRAY-IN-BOUNDS-P ANSI-LOOP::LOOP-ERROR
++-         ANSI-LOOP::LOOP-WARN COMMON-LISP::REMOVE-DUPLICATES
++-         SYSTEM::BAD-SEQ-LIMIT SYSTEM::PROCESS-SOME-ARGS
++-         ANSI-LOOP::LOOP-COLLECT-PREPOSITIONAL-PHRASES
++-         SLOOP::LOOP-ADD-TEMPS COMMON-LISP::BIT-NOT COMMON-LISP::SIGNAL
++-         SYSTEM::NTH-STACK-FRAME COMMON-LISP::ARRAY-ROW-MAJOR-INDEX
++-         COMMON-LISP::MAKE-ARRAY SYSTEM::FILE-SEARCH
++-         SYSTEM::LIST-MATCHES COMMON-LISP::FIND-RESTART
++-         SYSTEM::BREAK-LEVEL COMMON-LISP::DELETE-DUPLICATES
++-         SLOOP::ADD-FROM-DATA COMMON-LISP::ERROR COMMON-LISP::WARN
++-         SYSTEM::FILE-TO-STRING
++-         COMMON-LISP::UPGRADED-ARRAY-ELEMENT-TYPE COMMON-LISP::SBIT)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::*)
++-         SYSTEM::FIND-DOC SYSTEM::RESTART-REPORT
++-         ANSI-LOOP::ESTIMATE-CODE-SIZE-1 SYSTEM::NEWLINE
++-         ANSI-LOOP::ESTIMATE-CODE-SIZE SYSTEM::NEW-SEMI-COLON-READER)) 
+++         SYSTEM::PUSH-OPTIONAL-BINDING)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++              (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
++          SYSTEM::MAKE-KEYWORD)) 
++-(COMMON-LISP::MAPC
++-    (COMMON-LISP::LAMBDA (COMPILER::X)
++-      (COMMON-LISP::SETF
++-          (COMMON-LISP::GET COMPILER::X 'SYSTEM::PROCLAIMED-CLOSURE)
++-          COMMON-LISP::T))
++-    '(SYSTEM::SI-CLASS-PRECEDENCE-LIST SYSTEM::SI-CLASSP
++-         SYSTEM::SIMPLE-CONDITION-CLASS-P SYSTEM::UNTRACE-ONE
++-         SYSTEM::CONDITIONP SYSTEM::CONDITION-CLASS-P
++-         SYSTEM::MAKE-ACCESS-FUNCTION SYSTEM::SI-CLASS-NAME
++-         SYSTEM::AUTOLOAD-MACRO SYSTEM::AUTOLOAD SYSTEM::SI-CLASS-OF
++-         SYSTEM::WARNINGP SYSTEM::DEFINE-STRUCTURE
++-         FPE::BREAK-ON-FLOATING-POINT-EXCEPTIONS SYSTEM::SI-FIND-CLASS
++-         SYSTEM::TRACE-ONE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
++                  COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++          SYSTEM::QUICK-SORT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::T
++-                 COMMON-LISP::T)
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
+++                 COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++          SYSTEM::BIGNTHCDR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMMON-LISP::EVERY COMMON-LISP::SET-DIFFERENCE
+++         SYSTEM::VECTOR-PUSH-STRING SYSTEM::PROCESS-ERROR
+++         COMMON-LISP::POSITION-IF-NOT COMMON-LISP::FIND-IF
+++         SLOOP::LOOP-ADD-BINDING COMMON-LISP::BIT-ORC1
+++         COMMON-LISP::READ-SEQUENCE SYSTEM::INTERNAL-COUNT-IF
+++         COMMON-LISP::COUNT COMMON-LISP::MISMATCH
+++         COMMON-LISP::ADJUST-ARRAY COMMON-LISP::INTERSECTION
+++         COMMON-LISP::UNION COMMON-LISP::DELETE-IF-NOT
+++         COMMON-LISP::NINTERSECTION COMMON-LISP::BIT-ANDC1
+++         COMMON-LISP::REMOVE-IF-NOT COMMON-LISP::TYPEP
+++         COMMON-LISP::NUNION COMMON-LISP::WRITE-SEQUENCE
+++         COMMON-LISP::VECTOR-PUSH-EXTEND COMMON-LISP::REMOVE
+++         COMMON-LISP::BIT-IOR SLOOP::PARSE-LOOP-MACRO
+++         COMMON-LISP::SEARCH COMMON-LISP::SUBSETP
+++         COMMON-LISP::SET-EXCLUSIVE-OR SYSTEM::WREADDIR
+++         COMMON-LISP::POSITION-IF COMMON-LISP::DELETE
+++         COMMON-LISP::BIT-EQV COMMON-LISP::BIT-ANDC2
+++         COMMON-LISP::BIT-AND COMMON-LISP::NSET-EXCLUSIVE-OR
+++         SLOOP::IN-ARRAY-SLOOP-FOR ANSI-LOOP::LOOP-CHECK-DATA-TYPE
+++         COMMON-LISP::POSITION COMMON-LISP::MAKE-SEQUENCE
+++         COMMON-LISP::NOTEVERY COMMON-LISP::MAP-INTO
+++         COMMON-LISP::REPLACE COMMON-LISP::NSET-DIFFERENCE
+++         COMMON-LISP::FIND-IF-NOT COMMON-LISP::BIT-ORC2
+++         COMMON-LISP::DELETE-IF COMMON-LISP::CERROR
+++         COMMON-LISP::BIT-XOR COMMON-LISP::FIND COMMON-LISP::FILL
+++         SYSTEM::INTERNAL-COUNT-IF-NOT COMMON-LISP::REMOVE-IF
+++         COMMON-LISP::BIT-NAND COMMON-LISP::BIT-NOR COMMON-LISP::SOME
+++         COMMON-LISP::COUNT-IF SYSTEM::BREAK-CALL
+++         COMMON-LISP::COUNT-IF-NOT SYSTEM::FIND-IHS COMMON-LISP::NOTANY
+++         SYSTEM::INTERNAL-COUNT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         ANSI-LOOP::LOOP-MAKE-ITERATION-VARIABLE ANSI-LOOP::LOOP-FOR-IN
++-         SYSTEM::DEFMACRO* SYSTEM::APPLY-DISPLAY-FUN
++-         SYSTEM::WARN-VERSION ANSI-LOOP::HIDE-VARIABLE-REFERENCE
++-         SYSTEM::SHARP-U-READER ANSI-LOOP::LOOP-FOR-ACROSS
++-         SYSTEM::DM-VL SYSTEM::GET-SLOT-POS
+++         SYSTEM::PATHNAME-PARSE ANSI-LOOP::LOOP-TRANSLATE
+++         SYSTEM::CHECK-S-DATA SYSTEM::MFR FPE::REF
+++         ANSI-LOOP::LOOP-STANDARD-EXPANSION ANSI-LOOP::LOOP-FOR-ON
+++         ANSI-LOOP::LOOP-SUM-COLLECTION SYSTEM::SHARP-DQ-READER
+++         COMMON-LISP::DPB SYSTEM::CHECK-TRACE-ARGS
+++         SLOOP::LOOP-PARSE-ADDITIONAL-COLLECTIONS SYSTEM::RECURSE-DIR
+++         SYSTEM::SHARP-U-READER SYSTEM::FLOATING-POINT-ERROR
+++         ANSI-LOOP::LOOP-FOR-IN ANSI-LOOP::HIDE-VARIABLE-REFERENCE
+++         SYSTEM::GET-SLOT-POS SYSTEM::APPLY-DISPLAY-FUN
++          SYSTEM::RESTART-CASE-EXPRESSION-CONDITION
++-         SYSTEM::CHECK-TRACE-ARGS ANSI-LOOP::LOOP-FOR-ON FPE::REF
++-         ANSI-LOOP::PRINT-LOOP-UNIVERSE ANSI-LOOP::LOOP-ANSI-FOR-EQUALS
++-         SYSTEM::SETF-EXPAND-1 ANSI-LOOP::LOOP-SUM-COLLECTION
++-         ANSI-LOOP::LOOP-STANDARD-EXPANSION SYSTEM::MAKE-T-TYPE
++-         COMMON-LISP::DEPOSIT-FIELD SYSTEM::MAKE-BREAK-POINT
++-         ANSI-LOOP::LOOP-FOR-BEING ANSI-LOOP::LOOP-TRANSLATE
++-         SYSTEM::SHARP-A-READER COMMON-LISP::DPB
++-         SYSTEM::FLOATING-POINT-ERROR SYSTEM::CHECK-S-DATA
++-         SLOOP::LOOP-PARSE-ADDITIONAL-COLLECTIONS)) 
+++         SYSTEM::MAKE-BREAK-POINT SYSTEM::TO-REGEXP-OR-NAMESTRING
+++         COMMON-LISP::DEPOSIT-FIELD SYSTEM::SHARP-V-READER
+++         SYSTEM::MAKE-T-TYPE ANSI-LOOP::LOOP-FOR-ACROSS
+++         ANSI-LOOP::LOOP-ANSI-FOR-EQUALS ANSI-LOOP::PRINT-LOOP-UNIVERSE
+++         ANSI-LOOP::LOOP-FOR-BEING SYSTEM::SHARP-P-READER SYSTEM::DM-VL
+++         SYSTEM::SHARP-A-READER ANSI-LOOP::LOOP-MAKE-ITERATION-VARIABLE
+++         SYSTEM::DEFMACRO* SYSTEM::SETF-EXPAND-1 SYSTEM::WARN-VERSION)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
+++                 COMMON-LISP::*)
++              COMMON-LISP::T)
++-         SLOOP::FIRST-USE-SLOOP-FOR SYSTEM::COERCE-TO-CONDITION SYSTEM::DO-BREAK-LEVEL
++-         SLOOP::FIRST-SLOOP-FOR ANSI-LOOP::LOOP-FOR-ARITHMETIC
++-         SYSTEM::MAYBE-BREAK SYSTEM::SETF-STRUCTURE-ACCESS
++-         SYSTEM::CALL-TEST SYSTEM::FIND-LINE-IN-FUN)) 
+++         SYSTEM::MME2 COMMON-LISP::NSUBSTITUTE SYSTEM::MATCH-COMPONENT
+++         SYSTEM::COMPLETE-PROP SYSTEM::WALK-DIR
+++         COMMON-LISP::TRANSLATE-PATHNAME ANSI-LOOP::ADD-LOOP-PATH
+++         SYSTEM::DIR-PARSE ANSI-LOOP::LOOP-MAKE-VARIABLE
+++         COMMON-LISP::SUBSTITUTE-IF COMMON-LISP::NSUBSTITUTE-IF
+++         SYSTEM::PUSH-LET-BINDING COMMON-LISP::SUBSTITUTE
+++         ANSI-LOOP::LOOP-HASH-TABLE-ITERATION-PATH COMMON-LISP::MAP
+++         COMMON-LISP::SUBSTITUTE-IF-NOT COMMON-LISP::NSUBSTITUTE-IF-NOT
+++         ANSI-LOOP::LOOP-PACKAGE-SYMBOLS-ITERATION-PATH
+++         SLOOP::LOOP-DECLARE-BINDING
+++         ANSI-LOOP::LOOP-SEQUENCE-ELEMENTS-PATH
+++         SYSTEM::CHECK-TYPE-SYMBOL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::T COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807))
++              COMMON-LISP::T)
++-         COMMON-LISP::COUNT-IF COMMON-LISP::BIT-ANDC2
++-         COMMON-LISP::REMOVE SYSTEM::INTERNAL-COUNT-IF
++-         SLOOP::LOOP-ADD-BINDING COMMON-LISP::MAP-INTO
++-         COMMON-LISP::FIND-IF COMMON-LISP::NSET-DIFFERENCE
++-         COMMON-LISP::UNION COMMON-LISP::NUNION
++-         COMMON-LISP::MAKE-SEQUENCE COMMON-LISP::NOTANY
++-         COMMON-LISP::POSITION COMMON-LISP::DELETE-IF
++-         COMMON-LISP::BIT-ORC2 COMMON-LISP::REPLACE COMMON-LISP::DELETE
++-         SYSTEM::BREAK-CALL COMMON-LISP::NINTERSECTION
++-         COMMON-LISP::POSITION-IF SYSTEM::FIND-IHS COMMON-LISP::BIT-AND
++-         COMMON-LISP::DELETE-IF-NOT ANSI-LOOP::LOOP-CHECK-DATA-TYPE
++-         COMMON-LISP::REMOVE-IF COMMON-LISP::READ-SEQUENCE
++-         SLOOP::PARSE-LOOP-MACRO COMMON-LISP::BIT-NAND
++-         SYSTEM::INTERNAL-COUNT-IF-NOT COMMON-LISP::SUBSETP
++-         COMMON-LISP::VECTOR-PUSH-EXTEND COMMON-LISP::EVERY
++-         COMMON-LISP::SOME COMMON-LISP::WRITE-SEQUENCE
++-         COMMON-LISP::MISMATCH COMMON-LISP::SET-EXCLUSIVE-OR
++-         COMMON-LISP::REMOVE-IF-NOT COMMON-LISP::BIT-NOR
++-         COMMON-LISP::BIT-XOR COMMON-LISP::BIT-EQV COMMON-LISP::SEARCH
++-         COMMON-LISP::SET-DIFFERENCE COMMON-LISP::FILL
++-         COMMON-LISP::CERROR COMMON-LISP::ADJUST-ARRAY
++-         COMMON-LISP::BIT-ORC1 SYSTEM::INTERNAL-COUNT
++-         COMMON-LISP::TYPEP SYSTEM::PROCESS-ERROR
++-         COMMON-LISP::COUNT-IF-NOT COMMON-LISP::INTERSECTION
++-         SLOOP::IN-ARRAY-SLOOP-FOR COMMON-LISP::FIND-IF-NOT
++-         COMMON-LISP::BIT-ANDC1 COMMON-LISP::POSITION-IF-NOT
++-         COMMON-LISP::NOTEVERY COMMON-LISP::NSET-EXCLUSIVE-OR
++-         COMMON-LISP::FIND COMMON-LISP::COUNT COMMON-LISP::BIT-IOR)) 
+++         SYSTEM::SHARP-EQ-READER SYSTEM::SHARP-SHARP-READER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++                 COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::PUSH-SUB-LIST-BINDING SYSTEM::DO-ARG-COUNT-ERROR)) 
+++         SYSTEM::ELSUB SLOOP::FIRST-USE-SLOOP-FOR
+++         SLOOP::FIRST-SLOOP-FOR SYSTEM::SETF-STRUCTURE-ACCESS
+++         SYSTEM::FIND-LINE-IN-FUN SYSTEM::COERCE-TO-CONDITION
+++         ANSI-LOOP::LOOP-FOR-ARITHMETIC SYSTEM::MAYBE-BREAK
+++         SYSTEM::ELEMENT SYSTEM::DO-BREAK-LEVEL SYSTEM::CALL-TEST)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
++              COMMON-LISP::T)
++-         ANSI-LOOP::ADD-LOOP-PATH COMMON-LISP::MAP
++-         ANSI-LOOP::LOOP-HASH-TABLE-ITERATION-PATH
++-         ANSI-LOOP::LOOP-PACKAGE-SYMBOLS-ITERATION-PATH
++-         COMMON-LISP::SUBSTITUTE COMMON-LISP::NSUBSTITUTE
++-         COMMON-LISP::NSUBSTITUTE-IF-NOT ANSI-LOOP::LOOP-MAKE-VARIABLE
++-         COMMON-LISP::SUBSTITUTE-IF-NOT
++-         ANSI-LOOP::LOOP-SEQUENCE-ELEMENTS-PATH
++-         SYSTEM::PUSH-LET-BINDING COMMON-LISP::SUBSTITUTE-IF
++-         SYSTEM::CHECK-TYPE-SYMBOL SLOOP::LOOP-DECLARE-BINDING
++-         SYSTEM::COMPLETE-PROP COMMON-LISP::NSUBSTITUTE-IF)) 
+++         ANSI-LOOP::LOOP-SEQUENCER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::MAKE-PREDICATE
++-         SYSTEM::MAKE-CONSTRUCTOR)) 
+++         SYSTEM::MAKE-CONSTRUCTOR SYSTEM::MAKE-PREDICATE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         SYSTEM::UNIVERSAL-ERROR-HANDLER)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::FIXNUM)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::SHARP-SHARP-READER SYSTEM::SHARP-EQ-READER)) 
+++         SYSTEM::PUSH-SUB-LIST-BINDING SYSTEM::DO-ARG-COUNT-ERROR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         SLOOP::DEF-LOOP-INTERNAL SYSTEM::PRINT-STACK-FRAME
++-         COMMON-LISP::MERGE)) 
+++         SLOOP::DEF-LOOP-INTERNAL COMMON-LISP::MERGE
+++         SYSTEM::PRINT-STACK-FRAME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -369,154 +231,389 @@
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         ANSI-LOOP::LOOP-SEQUENCER)) 
+++         SYSTEM::UNIVERSAL-ERROR-HANDLER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMMON-LISP::MERGE-PATHNAMES
+++         COMMON-LISP::TRANSLATE-LOGICAL-PATHNAME ANSI-LOOP::LOOP-ERROR
+++         COMMON-LISP::WILD-PATHNAME-P SLOOP::LOOP-ADD-TEMPS
+++         SYSTEM::FILE-SEARCH SYSTEM::INFO-SEARCH
+++         COMMON-LISP::PATHNAME-VERSION COMMON-LISP::WARN SYSTEM::MGSUB
+++         COMMON-LISP::ARRAY-ROW-MAJOR-INDEX
+++         COMMON-LISP::REMOVE-DUPLICATES COMMON-LISP::PATHNAME-NAME
+++         COMMON-LISP::BIT COMMON-LISP::FIND-RESTART SYSTEM::TO-REGEXP
+++         SYSTEM::PROCESS-SOME-ARGS COMMON-LISP::ERROR
+++         COMMON-LISP::REQUIRE COMMON-LISP::OPEN
+++         COMMON-LISP::UPGRADED-ARRAY-ELEMENT-TYPE SLOOP::ADD-FROM-DATA
+++         SYSTEM::BREAK-LEVEL SYSTEM::LIST-MATCHES
+++         COMMON-LISP::DELETE-DUPLICATES ANSI-LOOP::LOOP-WARN
+++         COMMON-LISP::PATHNAME-DEVICE COMMON-LISP::LOAD
+++         COMMON-LISP::PATHNAME-HOST COMMON-LISP::SBIT SYSTEM::NLOAD
+++         COMMON-LISP::BIT-NOT COMMON-LISP::ENOUGH-NAMESTRING
+++         COMMON-LISP::SIGNAL COMMON-LISP::ARRAY-IN-BOUNDS-P
+++         COMMON-LISP::PATHNAME-TYPE SYSTEM::FILE-TO-STRING
+++         SYSTEM::LOGICAL-PATHNAME-PARSE SYSTEM::NTH-STACK-FRAME
+++         ANSI-LOOP::LOOP-COLLECT-PREPOSITIONAL-PHRASES SYSTEM::MGLIST
+++         COMMON-LISP::DIRECTORY SYSTEM::BAD-SEQ-LIMIT
+++         COMMON-LISP::PATHNAME-DIRECTORY COMMON-LISP::READ-BYTE
+++         SYSTEM::LINK-EXPAND COMMON-LISP::CONCATENATE
+++         COMMON-LISP::MAKE-ARRAY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::NEWLINE SYSTEM::LIST-TOGGLE-CASE
+++         COMMON-LISP::RENAME-FILE ANSI-LOOP::ESTIMATE-CODE-SIZE
+++         SYSTEM::SOURCE-PORTION SYSTEM::RESTART-REPORT SYSTEM::DO-REPL
+++         SYSTEM::FIND-DOC ANSI-LOOP::ESTIMATE-CODE-SIZE-1
+++         SYSTEM::NEW-SEMI-COLON-READER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::STRING COMMON-LISP::FIXNUM)
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
++              COMMON-LISP::FIXNUM)
++-         SYSTEM::ATOI)) 
+++         FPE::FE-ENABLE SYSTEM::DBL-WHAT-FRAME)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::INFO SYSTEM::GET-SETF-METHOD-MULTIPLE-VALUE
+++         COMMON-LISP::FTRUNCATE COMMON-LISP::USE-VALUE
+++         COMMON-LISP::INVOKE-RESTART COMMON-LISP::WRITE-TO-STRING
+++         COMMON-LISP::FCEILING COMMON-LISP::FROUND
+++         COMMON-LISP::READ-FROM-STRING COMMON-LISP::FFLOOR
+++         SYSTEM::PARSE-BODY-HEADER SYSTEM::BREAK-FUNCTION
+++         SYSTEM::APROPOS-DOC COMMON-LISP::APROPOS
+++         COMMON-LISP::APROPOS-LIST
+++         ANSI-LOOP::LOOP-CONSTANT-FOLD-IF-POSSIBLE
+++         COMMON-LISP::GET-SETF-EXPANSION SYSTEM::PRINT-DOC
+++         COMMON-LISP::PARSE-NAMESTRING
+++         COMMON-LISP::ENSURE-DIRECTORIES-EXIST
+++         COMMON-LISP::DECODE-UNIVERSAL-TIME SYSTEM::SHOW-INFO
+++         COMMON-LISP::STORE-VALUE SYSTEM::STEPPER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         COMMON-LISP::VECTOR-PUSH SYSTEM::DM-NTH COMMON-LISP::LOGORC1
+++         SLOOP::L-EQUAL SLOOP::NEVER-SLOOP-COLLECT
+++         COMMON-LISP::LDB-TEST COMMON-LISP::LDB COMMON-LISP::LOGORC2
+++         SLOOP::COUNT-SLOOP-COLLECT SLOOP::MAXIMIZE-SLOOP-COLLECT
+++         SYSTEM::ALL-MATCHES ANSI-LOOP::LOOP-TMEMBER SLOOP::THE-TYPE
+++         SYSTEM::?PUSH SYSTEM::INCREMENT-CURSOR SYSTEM::SET-DIR
+++         SYSTEM::DM-NTH-CDR SYSTEM::IN-INTERVAL-P SLOOP::MAKE-VALUE
+++         SYSTEM::DBL-UP COMMON-LISP::COERCE SYSTEM::MATCH-DIMENSIONS
+++         COMMON-LISP::LOGNAND SLOOP::=-SLOOP-FOR
+++         SYSTEM::KEYWORD-SUPPLIED-P SYSTEM::OVERWRITE-SLOT-DESCRIPTIONS
+++         SYSTEM::LEFT-PARENTHESIS-READER
+++         ANSI-LOOP::LOOP-MAYBE-BIND-FORM SYSTEM::COERCE-TO-STRING
+++         SYSTEM::ADD-FILE SLOOP::PARSE-LOOP-MAP COMMON-LISP::LOGNOR
+++         SYSTEM::MSUB SYSTEM::SET-BACK SYSTEM::SUPER-GO
+++         SYSTEM::SUBSTRINGP ANSI-LOOP::LOOP-TEQUAL
+++         ANSI-LOOP::LOOP-DO-WHILE SYSTEM::GET-LINE-OF-FORM
+++         FPE::READ-INSTRUCTION SYSTEM::SUB-INTERVAL-P
+++         SYSTEM::CHECK-SEQ-START-END SYSTEM::*BREAK-POINTS*
+++         ANSI-LOOP::MAKE-LOOP-MINIMAX SLOOP::IN-PACKAGE-SLOOP-MAP
+++         SYSTEM::DM-V SYSTEM::INFO-AUX
+++         ANSI-LOOP::HIDE-VARIABLE-REFERENCES
+++         SLOOP::COLLATE-SLOOP-COLLECT COMMON-LISP::PATHNAME-MATCH-P
+++         SYSTEM::SET-PATH-STREAM-NAME SLOOP::SUM-SLOOP-COLLECT
+++         ANSI-LOOP::LOOP-LOOKUP-KEYWORD
+++         ANSI-LOOP::LOOP-DECLARE-VARIABLE SYSTEM::BREAK-STEP-NEXT
+++         FPE::RF SLOOP::IN-TABLE-SLOOP-MAP SYSTEM::OBJLT
+++         FPE::READ-OPERANDS SYSTEM::BREAK-STEP-INTO COMMON-LISP::BYTE
+++         SYSTEM::SEQUENCE-CURSOR SYSTEM::LIST-DELQ
+++         SYSTEM::SETF-LOGICAL-PATHNAME-TRANSLATIONS
+++         SYSTEM::CONDITION-PASS SYSTEM::SETF-HELPER FPE::0-READER
+++         SYSTEM::DISPLAY-COMPILED-ENV COMMON-LISP::NTH
+++         COMPILER::COMPILER-DEF-HOOK SYSTEM::DOT-DIR-P
+++         COMMON-LISP::LOGTEST SYSTEM::QUOTATION-READER
+++         SYSTEM::ITERATE-OVER-BKPTS COMMON-LISP::LOGANDC1
+++         SLOOP::ALWAYS-SLOOP-COLLECT SLOOP::DESETQ1
+++         SYSTEM::GET-INFO-CHOICES COMMON-LISP::WRITE-BYTE
+++         ANSI-LOOP::LOOP-DO-IF ANSI-LOOP::LOOP-NOTE-MINIMAX-OPERATION
+++         ANSI-LOOP::LOOP-TASSOC SLOOP::IN-CAREFULLY-SLOOP-FOR
+++         COMMON-LISP::DOCUMENTATION FPE::PAREN-READER SYSTEM::GET-NODES
+++         SYSTEM::PARSE-SLOT-DESCRIPTION SLOOP::IN-FRINGE-SLOOP-MAP
+++         SYSTEM::SAFE-EVAL SYSTEM::DISPLAY-ENV FPE::%-READER
+++         SLOOP::THEREIS-SLOOP-COLLECT SYSTEM::LOOKUP-KEYWORD
+++         COMMON-LISP::LOGANDC2 COMMON-LISP::NTHCDR
+++         SLOOP::MINIMIZE-SLOOP-COLLECT SYSTEM::GET-MATCH
+++         SYSTEM::SETF-EXPAND SLOOP::LOGXOR-SLOOP-COLLECT
+++         ANSI-LOOP::LOOP-DO-ALWAYS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::ROUND-UP)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
++-         SYSTEM::DESCRIBE-ENVIRONMENT SYSTEM::STEP-NEXT
++-         COMMON-LISP::BREAK COMMON-LISP::ABORT SYSTEM::MAKE-S-DATA
++-         ANSI-LOOP::MAKE-LOOP-COLLECTOR SLOOP::PARSE-LOOP-DECLARE
++-         ANSI-LOOP::LOOP-GENTEMP SYSTEM::MAKE-INSTREAM
++-         SYSTEM::MAYBE-CLEAR-INPUT
++-         ANSI-LOOP::MAKE-LOOP-MINIMAX-INTERNAL COMMON-LISP::Y-OR-N-P
++-         SYSTEM::CURRENT-STEP-FUN ANSI-LOOP::LOOP-DISALLOW-CONDITIONAL
++-         COMMON-LISP::DRIBBLE SYSTEM::MAKE-RESTART
++-         SLOOP::PARSE-LOOP-WITH SYSTEM::LOC COMMON-LISP::YES-OR-NO-P
++-         SYSTEM::TRANSFORM-KEYWORDS SYSTEM::MAKE-CONTEXT
++-         COMMON-LISP::COMPUTE-RESTARTS SYSTEM::DBL-READ
++-         SYSTEM::STEP-INTO ANSI-LOOP::MAKE-LOOP-UNIVERSE
++-         SYSTEM::BREAK-LOCALS ANSI-LOOP::MAKE-STANDARD-LOOP-UNIVERSE
++-         COMMON-LISP::VECTOR ANSI-LOOP::MAKE-LOOP-PATH)) 
+++         COMMON-LISP::Y-OR-N-P COMMON-LISP::YES-OR-NO-P
+++         COMMON-LISP::DRIBBLE COMMON-LISP::VECTOR SYSTEM::NEXT-MATCH
+++         SYSTEM::MAKE-S-DATA SYSTEM::LOC SYSTEM::BREAK-LOCALS
+++         SLOOP::PARSE-LOOP-WITH COMMON-LISP::USER-HOMEDIR-PATHNAME
+++         SYSTEM::STEP-INTO SYSTEM::MAYBE-CLEAR-INPUT
+++         ANSI-LOOP::MAKE-LOOP-PATH SYSTEM::STEP-NEXT
+++         ANSI-LOOP::LOOP-GENTEMP COMMON-LISP::COMPUTE-RESTARTS
+++         SYSTEM::CURRENT-STEP-FUN SYSTEM::MAKE-INSTREAM
+++         ANSI-LOOP::MAKE-LOOP-COLLECTOR SYSTEM::MAKE-RESTART
+++         SYSTEM::DESCRIBE-ENVIRONMENT SYSTEM::TRANSFORM-KEYWORDS
+++         COMMON-LISP::ABORT ANSI-LOOP::MAKE-STANDARD-LOOP-UNIVERSE
+++         ANSI-LOOP::MAKE-LOOP-UNIVERSE SLOOP::PARSE-LOOP-DECLARE
+++         COMMON-LISP::BREAK ANSI-LOOP::LOOP-DISALLOW-CONDITIONAL
+++         SYSTEM::MAKE-CONTEXT SYSTEM::DBL-READ
+++         COMMON-LISP::MAKE-PATHNAME
+++         ANSI-LOOP::MAKE-LOOP-MINIMAX-INTERNAL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
++-         ANSI-LOOP::LOOP-LIST-STEP SYSTEM::INSPECT-OBJECT
++-         COMMON-LISP::DESCRIBE ANSI-LOOP::LOOP-OPTIMIZATION-QUANTITIES
++-         SYSTEM::BREAK-GO SYSTEM::GET-&ENVIRONMENT
++-         COMMON-LISP::PRINC-TO-STRING SYSTEM::WAITING
++-         SYSTEM::INSTREAM-NAME ANSI-LOOP::NAMED-VARIABLE
++-         COMMON-LISP::PRIN1-TO-STRING SYSTEM::INFO-SUBFILE
++-         COMMON-LISP::INSPECT SYSTEM::END-WAITING
++-         SYSTEM::FIND-DECLARATIONS
++-         COMMON-LISP::INVOKE-RESTART-INTERACTIVELY
++-         SYSTEM::BREAK-LEVEL-INVOKE-RESTART SYSTEM::ALOAD)) 
+++         ANSI-LOOP::LOOP-OPTIMIZATION-QUANTITIES SYSTEM::BREAK-GO
+++         COMMON-LISP::FILE-AUTHOR SYSTEM::ENSURE-DIR-STRING
+++         SYSTEM::INFO-SUBFILE COMMON-LISP::DESCRIBE SYSTEM::END-WAITING
+++         COMMON-LISP::PRIN1-TO-STRING SYSTEM::FIND-DECLARATIONS
+++         COMMON-LISP::INSPECT ANSI-LOOP::NAMED-VARIABLE
+++         SYSTEM::GET-&ENVIRONMENT SYSTEM::INSPECT-OBJECT
+++         COMMON-LISP::PRINC-TO-STRING ANSI-LOOP::LOOP-LIST-STEP
+++         SYSTEM::INSTREAM-NAME SYSTEM::BREAK-LEVEL-INVOKE-RESTART
+++         SYSTEM::WAITING COMMON-LISP::INVOKE-RESTART-INTERACTIVELY)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         SYSTEM::IHS-NOT-INTERPRETED-ENV COMMON-LISP::NINTH
+++         SYSTEM::FIND-KCL-TOP-RESTART COMMON-LISP::TRUENAME
+++         SYSTEM::DIRECTORY-LIST-CHECK SYSTEM::REAL-ASINH
+++         SYSTEM::SHOW-ENVIRONMENT SYSTEM::PRINT-FRS
+++         SYSTEM::REWRITE-RESTART-CASE-CLAUSE
+++         COMMON-LISP::TWO-WAY-STREAM-OUTPUT-STREAM
+++         ANSI-LOOP::LOOP-COLLECTOR-DATA SLOOP::POINTER-FOR-COLLECT
+++         SYSTEM::MLP SYSTEM::WILD-PATH-ELEMENT-P SYSTEM::LNP
+++         ANSI-LOOP::LOOP-MINIMAX-OPERATIONS SYSTEM::FRS-KIND
+++         SYSTEM::BKPT-FILE COMMON-LISP::FIFTH
+++         ANSI-LOOP::LOOP-COLLECTOR-P ANSI-LOOP::LOOP-UNIVERSE-ANSI
+++         ANSI-LOOP::LOOP-PATH-PREPOSITION-GROUPS SYSTEM::IDESCRIBE
+++         ANSI-LOOP::LOOP-CONSTANTP
+++         ANSI-LOOP::LOOP-UNIVERSE-FOR-KEYWORDS COMMON-LISP::PROBE-FILE
+++         ANSI-LOOP::LOOP-UNIVERSE-P COMMON-LISP::SINH SYSTEM::RESTART-P
+++         SYSTEM::S-DATA-DOCUMENTATION
+++         COMMON-LISP::ECHO-STREAM-OUTPUT-STREAM
+++         SYSTEM::FIND-DOCUMENTATION SYSTEM::INFO-GET-FILE
+++         SLOOP::PARSE-NO-BODY COMMON-LISP::FILE-NAMESTRING
+++         COMMON-LISP::COMPILER-MACRO-FUNCTION SYSTEM::PROCESS-ARGS
+++         ANSI-LOOP::LOOP-COLLECTOR-DTYPE COMMON-LISP::PHASE
+++         SYSTEM::MAKE-FRAME SYSTEM::INSTREAM-STREAM
+++         ANSI-LOOP::LOOP-COLLECTOR-HISTORY SYSTEM::FIX-LOAD-PATH
+++         SYSTEM::COMPUTING-ARGS-P
+++         ANSI-LOOP::LOOP-MINIMAX-ANSWER-VARIABLE COMMON-LISP::TENTH
+++         ANSI-LOOP::MAKE-ANSI-LOOP-UNIVERSE SYSTEM::WILD-NAMESTRING-P
+++         SYSTEM::BEST-ARRAY-ELEMENT-TYPE SYSTEM::DM-BAD-KEY
+++         SYSTEM::TERMINAL-INTERRUPT SYSTEM::REGEXP-CONV
+++         COMMON-LISP::FILE-WRITE-DATE SLOOP::PARSE-LOOP
+++         ANSI-LOOP::LOOP-CONSTRUCT-RETURN SYSTEM::DWIM
+++         ANSI-LOOP::LOOP-UNIVERSE-TYPE-KEYWORDS
+++         SLOOP::RETURN-SLOOP-MACRO SLOOP::AVERAGING-SLOOP-MACRO
+++         SYSTEM::S-DATA-NAME SYSTEM::CHECK-TRACE-SPEC
+++         SYSTEM::RESTRICT-STREAM-ELEMENT-TYPE SLOOP::TRANSLATE-NAME
+++         SYSTEM::ADD-TO-HOTLIST SYSTEM::S-DATA-CONC-NAME
+++         ANSI-LOOP::LOOP-MINIMAX-TYPE SYSTEM::PRINT-IHS
+++         SYSTEM::DBL-RPL-LOOP SYSTEM::CANONICALIZE-PATHNAME-DIRECTORY
+++         SYSTEM::INSPECT-CONS SYSTEM::INSTREAM-STREAM-NAME
+++         SYSTEM::S-DATA-P SYSTEM::EVAL-FEATURE
+++         COMMON-LISP::ARRAY-DIMENSIONS SYSTEM::IHS-VISIBLE
+++         ANSI-LOOP::LOOP-MINIMAX-FLAG-VARIABLE
+++         SYSTEM::CHECK-DECLARATIONS COMMON-LISP::TANH
+++         ANSI-LOOP::LOOP-UNIVERSE-PATH-KEYWORDS
+++         COMMON-LISP::COMPILE-FILE-PATHNAME SYSTEM::INSPECT-PACKAGE
+++         SLOOP::LOOP-LET-BINDINGS COMMON-LISP::CIS SYSTEM::SETUP-INFO
+++         SYSTEM::NORMALIZE-TYPE ANSI-LOOP::LOOP-PSEUDO-BODY
+++         SYSTEM::PATH-STREAM-NAME SYSTEM::INFO-GET-TAGS FPE::ST-LOOKUP
+++         SYSTEM::BREAK-BACKWARD-SEARCH-STACK
+++         ANSI-LOOP::LOOP-MINIMAX-TEMP-VARIABLE SYSTEM::SIMPLE-ARRAY-P
+++         SYSTEM::S-DATA-TYPE COMMON-LISP::CONCATENATED-STREAM-STREAMS
+++         SYSTEM::INSPECT-CHARACTER ANSI-LOOP::DESTRUCTURING-SIZE
+++         SYSTEM::GET-BYTE-STREAM-NCHARS ANSI-LOOP::LOOP-PATH-P
+++         COMMON-LISP::FIRST COMMON-LISP::SECOND
+++         COMMON-LISP::TWO-WAY-STREAM-INPUT-STREAM
+++         SYSTEM::MAKE-DEFPACKAGE-FORM SYSTEM::INSPECT-SYMBOL
+++         SYSTEM::INSPECT-VECTOR
+++         COMMON-LISP::LOAD-LOGICAL-PATHNAME-TRANSLATIONS
+++         SYSTEM::RESTART-INTERACTIVE-FUNCTION SYSTEM::INSPECT-STRING
+++         SYSTEM::DIR-P ANSI-LOOP::LOOP-COLLECTOR-CLASS
+++         SYSTEM::S-DATA-CONSTRUCTORS SYSTEM::NODES-FROM-INDEX
+++         SYSTEM::VERSION-PARSE SYSTEM::BKPT-FILE-LINE COMMON-LISP::ABS
+++         SYSTEM::IHS-FNAME ANSI-LOOP::LOOP-MAKE-PSETQ
+++         SYSTEM::LEAP-YEAR-P ANSI-LOOP::LOOP-EMIT-FINAL-VALUE
+++         SYSTEM::GET-PATH SYSTEM::ALOAD SYSTEM::DM-KEY-NOT-ALLOWED
+++         SYSTEM::MAKE-KCL-TOP-RESTART SYSTEM::S-DATA-SLOT-DESCRIPTIONS
+++         COMMON-LISP::VECTOR-POP ANSI-LOOP::LOOP-UNIVERSE-KEYWORDS
+++         ANSI-LOOP::LOOP-PATH-USER-DATA SYSTEM::S-DATA-SLOT-POSITION
+++         COMMON-LISP::BROADCAST-STREAM-STREAMS
+++         SYSTEM::LOGICAL-PATHNAMEP SYSTEM::BREAK-FORWARD-SEARCH-STACK
+++         SLOOP::SLOOP-SLOOP-MACRO COMMON-LISP::SIGNUM
+++         SYSTEM::RESET-TRACE-DECLARATIONS SYSTEM::CONTEXT-P
+++         SYSTEM::S-DATA-FROZEN SYSTEM::NUMBER-OF-DAYS-FROM-1900
+++         SYSTEM::S-DATA-STATICP ANSI-LOOP::LOOP-PATH-FUNCTION
+++         SYSTEM::KNOWN-TYPE-P COMMON-LISP::PROVIDE SYSTEM::PNL1
+++         ANSI-LOOP::LOOP-CODE-DUPLICATION-THRESHOLD
+++         SYSTEM::COERCE-SLASH-TERMINATED COMMON-LISP::LOGICAL-PATHNAME
+++         SYSTEM::DIR-CONJ SYSTEM::BKPT-FORM
+++         SYSTEM::LOGICAL-PATHNAME-HOST-P SYSTEM::INSPECT-STRUCTURE
+++         ANSI-LOOP::LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
+++         COMMON-LISP::FIND-ALL-SYMBOLS
+++         ANSI-LOOP::LOOP-UNIVERSE-ITERATION-KEYWORDS
+++         ANSI-LOOP::LOOP-PATH-INCLUSIVE-PERMITTED
+++         COMMON-LISP::LOGICAL-PATHNAME-TRANSLATIONS
+++         SYSTEM::TRACE-ONE-PREPROCESS COMMON-LISP::CONSTANTLY
+++         COMMON-LISP::ACOS SYSTEM::S-DATA-OFFSET COMMON-LISP::ASINH
+++         SYSTEM::SHORT-NAME SYSTEM::S-DATA-INCLUDED SYSTEM::DBL-EVAL
+++         SYSTEM::BKPT-FUNCTION SYSTEM::INSPECT-NUMBER
+++         SYSTEM::GET-INSTREAM SYSTEM::SHOW-BREAK-POINT FPE::LOOKUP
+++         SYSTEM::NEXT-STACK-FRAME SYSTEM::INSPECT-ARRAY
+++         SYSTEM::S-DATA-RAW ANSI-LOOP::LOOP-MINIMAX-INFINITY-DATA
+++         SYSTEM::RESTART-REPORT-FUNCTION SYSTEM::TOGGLE-CASE
+++         SYSTEM::NODE-OFFSET SYSTEM::INSTREAM-P
+++         ANSI-LOOP::LOOP-PATH-NAMES SYSTEM::FREEZE-DEFSTRUCT
+++         COMMON-LISP::SEVENTH SYSTEM::SEARCH-STACK COMMON-LISP::SIXTH
+++         ANSI-LOOP::LOOP-UNIVERSE-TYPE-SYMBOLS FPE::GREF
+++         FPE::XMM-LOOKUP COMMON-LISP::HOST-NAMESTRING
+++         ANSI-LOOP::LOOP-TYPED-INIT
+++         SYSTEM::LOGICAL-PATHNAME-DESIGNATOR-P
+++         ANSI-LOOP::LOOP-DO-THEREIS COMMON-LISP::EIGHTH
+++         SYSTEM::UNIQUE-ID COMMON-LISP::THIRD
+++         COMMON-LISP::BYTE-POSITION COMMON-LISP::SYNONYM-STREAM-SYMBOL
+++         SYSTEM::PATCH-SHARP SYSTEM::PRINT-SYMBOL-APROPOS
+++         COMMON-LISP::LOGNOT SLOOP::REPEAT-SLOOP-MACRO
+++         COMMON-LISP::FOURTH SLOOP::SUBSTITUTE-SLOOP-BODY
+++         COMMON-LISP::ATANH SLOOP::LOOP-COLLECT-KEYWORD-P
+++         SYSTEM::SEQTYPE SYSTEM::RE-QUOTE-STRING COMMON-LISP::ISQRT
+++         SYSTEM::DO-F SYSTEM::S-DATA-HAS-HOLES
+++         ANSI-LOOP::LOOP-HACK-ITERATION ANSI-LOOP::LOOP-COLLECTOR-NAME
+++         COMMON-LISP::RESTART-NAME COMMON-LISP::DIRECTORY-NAMESTRING
+++         ANSI-LOOP::LOOP-EMIT-BODY COMMON-LISP::ACOSH
+++         SYSTEM::RESTART-FUNCTION SYSTEM::INFO-NODE-FROM-POSITION
+++         COMMON-LISP::ASIN ANSI-LOOP::LOOP-LIST-COLLECTION
+++         SYSTEM::S-DATA-INCLUDES SYSTEM::GET-NEXT-VISIBLE-FUN
+++         COMMON-LISP::BYTE-SIZE COMMON-LISP::PATHNAME
+++         ANSI-LOOP::LOOP-MINIMAX-P SLOOP::PARSE-LOOP-INITIALLY
+++         COMMON-LISP::COSH SYSTEM::EXPAND-HOME-DIR
+++         COMMON-LISP::ECHO-STREAM-INPUT-STREAM
+++         SYSTEM::INSERT-BREAK-POINT SYSTEM::RESTART-TEST-FUNCTION
+++         SYSTEM::S-DATA-PRINT-FUNCTION SYSTEM::WILD-DIR-ELEMENT-P
+++         SYSTEM::S-DATA-NAMED COMMON-LISP::INVOKE-DEBUGGER
+++         COMMON-LISP::NAMESTRING ANSI-LOOP::LOOP-MAKE-DESETQ
+++         COMMON-LISP::COMPLEMENT SYSTEM::WALK-THROUGH
+++         COMMON-LISP::RATIONAL ANSI-LOOP::LOOP-MAXMIN-COLLECTION
+++         COMMON-LISP::DELETE-FILE ANSI-LOOP::LOOP-COLLECTOR-TEMPVARS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         SYSTEM::BREAK-QUIT SYSTEM::BREAK-BDS SYSTEM::DBL-BACKTRACE
+++         SYSTEM::BREAK-LOCAL SYSTEM::INFO-ERROR
+++         SYSTEM::SHOW-BREAK-VARIABLES SYSTEM::BREAK-VS
+++         COMMON-LISP::CONTINUE COMMON-LISP::MUFFLE-WARNING
+++         SYSTEM::IHS-BACKTRACE ANSI-LOOP::LOOP-OPTIONAL-TYPE
+++         SYSTEM::BREAK-PREVIOUS SYSTEM::BREAK-NEXT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807)
+++              COMMON-LISP::T)
++              COMMON-LISP::T)
++-         ANSI-LOOP::MAKE-LOOP-MINIMAX COMMON-LISP::LDB
++-         SYSTEM::LIST-DELQ FPE::RF SLOOP::L-EQUAL
++-         ANSI-LOOP::LOOP-DECLARE-VARIABLE SYSTEM::DISPLAY-COMPILED-ENV
++-         SYSTEM::SET-BACK ANSI-LOOP::HIDE-VARIABLE-REFERENCES
++-         SYSTEM::GET-LINE-OF-FORM SYSTEM::BREAK-STEP-INTO
++-         SLOOP::THE-TYPE SLOOP::COUNT-SLOOP-COLLECT
++-         SYSTEM::KEYWORD-SUPPLIED-P COMMON-LISP::LOGANDC2
++-         ANSI-LOOP::LOOP-MAYBE-BIND-FORM SYSTEM::SET-DIR
++-         SYSTEM::COERCE-TO-STRING COMMON-LISP::VECTOR-PUSH
++-         SYSTEM::DM-NTH-CDR SLOOP::IN-FRINGE-SLOOP-MAP
++-         SLOOP::MAXIMIZE-SLOOP-COLLECT SYSTEM::ADD-FILE
++-         SYSTEM::ALL-MATCHES SYSTEM::DM-NTH
++-         SLOOP::IN-CAREFULLY-SLOOP-FOR SYSTEM::PARSE-SLOT-DESCRIPTION
++-         ANSI-LOOP::LOOP-LOOKUP-KEYWORD FPE::0-READER
++-         ANSI-LOOP::LOOP-TMEMBER COMPILER::COMPILER-DEF-HOOK
++-         SYSTEM::INFO-AUX COMMON-LISP::NTH SYSTEM::QUOTATION-READER
++-         SYSTEM::CHECK-SEQ-START-END COMMON-LISP::LOGNAND
++-         SYSTEM::SUBSTRINGP COMMON-LISP::LOGORC2
++-         ANSI-LOOP::LOOP-NOTE-MINIMAX-OPERATION SYSTEM::SAFE-EVAL
++-         ANSI-LOOP::LOOP-DO-IF SLOOP::THEREIS-SLOOP-COLLECT
++-         SYSTEM::MATCH-DIMENSIONS SYSTEM::GET-MATCH
++-         SYSTEM::SUB-INTERVAL-P FPE::PAREN-READER
++-         SLOOP::IN-TABLE-SLOOP-MAP COMMON-LISP::LOGTEST
++-         SLOOP::LOGXOR-SLOOP-COLLECT SYSTEM::DM-V
++-         SYSTEM::GET-INFO-CHOICES SLOOP::COLLATE-SLOOP-COLLECT
++-         SYSTEM::BREAK-STEP-NEXT ANSI-LOOP::LOOP-TEQUAL
++-         COMMON-LISP::WRITE-BYTE COMMON-LISP::NTHCDR
++-         SYSTEM::SETF-HELPER SLOOP::NEVER-SLOOP-COLLECT SLOOP::DESETQ1
++-         ANSI-LOOP::LOOP-DO-WHILE COMMON-LISP::DOCUMENTATION
++-         FPE::%-READER SYSTEM::IN-INTERVAL-P SLOOP::SUM-SLOOP-COLLECT
++-         SYSTEM::OBJLT COMMON-LISP::LDB-TEST SLOOP::PARSE-LOOP-MAP
++-         SYSTEM::GET-NODES SLOOP::MAKE-VALUE SYSTEM::CONDITION-PASS
++-         SLOOP::IN-PACKAGE-SLOOP-MAP SYSTEM::INCREMENT-CURSOR
++-         ANSI-LOOP::LOOP-DO-ALWAYS SYSTEM::DISPLAY-ENV SYSTEM::SUPER-GO
++-         SLOOP::MINIMIZE-SLOOP-COLLECT COMMON-LISP::LOGNOR
++-         COMMON-LISP::LOGANDC1 COMMON-LISP::BYTE SYSTEM::DBL-UP
++-         SYSTEM::ITERATE-OVER-BKPTS COMMON-LISP::LOGORC1
++-         FPE::READ-OPERANDS SLOOP::ALWAYS-SLOOP-COLLECT
++-         SYSTEM::SETF-EXPAND SYSTEM::OVERWRITE-SLOT-DESCRIPTIONS
++-         SYSTEM::*BREAK-POINTS* SYSTEM::LOOKUP-KEYWORD
++-         ANSI-LOOP::LOOP-TASSOC SYSTEM::LEFT-PARENTHESIS-READER
++-         SLOOP::=-SLOOP-FOR FPE::READ-INSTRUCTION COMMON-LISP::COERCE
++-         SYSTEM::SEQUENCE-CURSOR)) 
+++         SYSTEM::SMALLNTHCDR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         COMMON-LISP::FFLOOR SYSTEM::BREAK-FUNCTION
++-         COMMON-LISP::APROPOS-LIST COMMON-LISP::DECODE-UNIVERSAL-TIME
++-         SYSTEM::STEPPER COMMON-LISP::REQUIRE SYSTEM::APROPOS-DOC
++-         SYSTEM::PRINT-DOC SYSTEM::INFO COMMON-LISP::USE-VALUE
++-         COMMON-LISP::WRITE-TO-STRING COMMON-LISP::FCEILING
++-         SYSTEM::GET-SETF-METHOD
++-         ANSI-LOOP::LOOP-CONSTANT-FOLD-IF-POSSIBLE SYSTEM::NLOAD
++-         COMMON-LISP::ENSURE-DIRECTORIES-EXIST
++-         COMMON-LISP::WILD-PATHNAME-P COMMON-LISP::FTRUNCATE
++-         COMMON-LISP::FROUND SYSTEM::PARSE-BODY-HEADER
++-         COMMON-LISP::INVOKE-RESTART SYSTEM::SHOW-INFO
++-         COMMON-LISP::READ-FROM-STRING
++-         SYSTEM::GET-SETF-METHOD-MULTIPLE-VALUE COMMON-LISP::APROPOS
++-         COMMON-LISP::STORE-VALUE)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             COMMON-LISP::HASH-TABLE)
+++         SYSTEM::CONTEXT-SPICE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
++-         ANSI-LOOP::LOOP-DO-WITH SYSTEM::WINE-TMP-REDIRECT
++-         SLOOP::PARSE-ONE-WHEN-CLAUSE COMMON-LISP::TYPE-ERROR
++-         SYSTEM::INSPECT-INDENT SYSTEM::SET-CURRENT SYSTEM::TEST-ERROR
++-         SLOOP::LOOP-POP ANSI-LOOP::LOOP-DO-REPEAT
++-         ANSI-LOOP::LOOP-GET-PROGN SYSTEM::DM-TOO-FEW-ARGUMENTS
++-         ANSI-LOOP::LOOP-CONTEXT SYSTEM::READ-EVALUATED-FORM
++-         SYSTEM::ALL-TRACE-DECLARATIONS
++-         COMMON-LISP::LISP-IMPLEMENTATION-VERSION
++-         SYSTEM::DEFAULT-SYSTEM-BANNER ANSI-LOOP::LOOP-DO-RETURN
++-         SYSTEM::INSPECT-INDENT-1 SYSTEM::STEP-READ-LINE
++-         SYSTEM::SET-ENV SYSTEM::DM-TOO-MANY-ARGUMENTS
++-         ANSI-LOOP::LOOP-BIND-BLOCK SLOOP::PARSE-LOOP1
++-         ANSI-LOOP::LOOP-DO-NAMED SLOOP::PARSE-LOOP-COLLECT
++-         SYSTEM::KCL-TOP-RESTARTS SYSTEM::INSPECT-READ-LINE
++-         SYSTEM::SET-UP-TOP-LEVEL SYSTEM::SHOW-RESTARTS SYSTEM::DBL
++-         SLOOP::PARSE-LOOP-FOR ANSI-LOOP::LOOP-ITERATION-DRIVER
++-         ANSI-LOOP::LOOP-WHEN-IT-VARIABLE ANSI-LOOP::LOOP-DO-DO
++-         SYSTEM::DEFAULT-INFO-HOTLIST SYSTEM::GET-TEMP-DIR
++-         ANSI-LOOP::LOOP-POP-SOURCE SLOOP::LOOP-UN-POP
++-         SYSTEM::TOP-LEVEL ANSI-LOOP::LOOP-DO-FINALLY
++-         ANSI-LOOP::LOOP-DO-INITIALLY SYSTEM::GET-INDEX-NODE
++-         SYSTEM::SETUP-LINEINFO SLOOP::PARSE-LOOP-WHEN SYSTEM::CLEANUP
++-         ANSI-LOOP::LOOP-GET-FORM SLOOP::PARSE-LOOP-DO
++-         SYSTEM::INIT-BREAK-POINTS SLOOP::LOOP-PEEK
++-         SYSTEM::GET-SIG-FN-NAME SYSTEM::ILLEGAL-BOA)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         SYSTEM::S-DATA-SIZE FPE::REG-LOOKUP SYSTEM::INSTREAM-LINE
+++         SYSTEM::S-DATA-LENGTH SYSTEM::THE-START)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
+++         SYSTEM::MATCH-BEGINNING SYSTEM::MATCH-END)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(SYSTEM::CONDITION-CLASS-P SYSTEM::WARNINGP SYSTEM::SI-CLASS-OF
+++         SYSTEM::SI-FIND-CLASS SYSTEM::DEFINE-STRUCTURE
+++         FPE::BREAK-ON-FLOATING-POINT-EXCEPTIONS
+++         SYSTEM::SIMPLE-CONDITION-CLASS-P SYSTEM::AUTOLOAD
+++         SYSTEM::SI-CLASS-PRECEDENCE-LIST SYSTEM::SI-CLASS-NAME
+++         SYSTEM::TRACE-ONE SYSTEM::MAKE-ACCESS-FUNCTION
+++         SYSTEM::UNTRACE-ONE SYSTEM::SI-CLASSP SYSTEM::CONDITIONP
+++         SYSTEM::AUTOLOAD-MACRO)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
++              COMMON-LISP::T)
++-         SYSTEM::SMALLNTHCDR)) 
+++         SYSTEM::GET-CONTEXT SYSTEM::PUSH-CONTEXT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::FIXNUM)
++-         SYSTEM::THE-END ANSI-LOOP::DUPLICATABLE-CODE-P
++-         SYSTEM::RELATIVE-LINE SYSTEM::GET-NODE-INDEX)) 
+++         SYSTEM::RELATIVE-LINE SYSTEM::LENEL SYSTEM::THE-END
+++         ANSI-LOOP::DUPLICATABLE-CODE-P SYSTEM::FASLINK
+++         SYSTEM::GET-NODE-INDEX)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         SLOOP::PARSE-ONE-WHEN-CLAUSE ANSI-LOOP::LOOP-DO-FINALLY
+++         SLOOP::LOOP-PEEK ANSI-LOOP::LOOP-DO-INITIALLY SLOOP::LOOP-POP
+++         ANSI-LOOP::LOOP-GET-PROGN SYSTEM::KCL-TOP-RESTARTS
+++         SYSTEM::INSPECT-READ-LINE SLOOP::PARSE-LOOP-WHEN
+++         ANSI-LOOP::LOOP-GET-FORM SYSTEM::DEFAULT-SYSTEM-BANNER
+++         SYSTEM::SET-UP-TOP-LEVEL SYSTEM::GET-INDEX-NODE
+++         ANSI-LOOP::LOOP-DO-DO ANSI-LOOP::LOOP-WHEN-IT-VARIABLE
+++         SYSTEM::SETUP-LINEINFO COMMON-LISP::TYPE-ERROR
+++         SYSTEM::READ-EVALUATED-FORM SYSTEM::INSPECT-INDENT-1
+++         SLOOP::LOOP-UN-POP SLOOP::PARSE-LOOP-DO
+++         ANSI-LOOP::LOOP-DO-WITH SYSTEM::INSPECT-INDENT
+++         SYSTEM::GET-TEMP-DIR ANSI-LOOP::LOOP-ITERATION-DRIVER
+++         SYSTEM::WINE-TMP-REDIRECT SLOOP::PARSE-LOOP-COLLECT
+++         SYSTEM::DEFAULT-INFO-HOTLIST SLOOP::PARSE-LOOP1
+++         SYSTEM::CLEANUP ANSI-LOOP::LOOP-DO-NAMED SYSTEM::DBL
+++         SYSTEM::ALL-TRACE-DECLARATIONS SYSTEM::TEST-ERROR
+++         ANSI-LOOP::LOOP-BIND-BLOCK ANSI-LOOP::LOOP-DO-REPEAT
+++         SYSTEM::ILLEGAL-BOA SYSTEM::SET-ENV SYSTEM::SET-CURRENT
+++         SYSTEM::INIT-BREAK-POINTS SYSTEM::GET-SIG-FN-NAME
+++         ANSI-LOOP::LOOP-DO-RETURN ANSI-LOOP::LOOP-CONTEXT
+++         SYSTEM::SHOW-RESTARTS SYSTEM::STEP-READ-LINE
+++         SLOOP::PARSE-LOOP-FOR SYSTEM::DM-TOO-MANY-ARGUMENTS
+++         COMMON-LISP::LISP-IMPLEMENTATION-VERSION SYSTEM::TOP-LEVEL
+++         ANSI-LOOP::LOOP-POP-SOURCE SYSTEM::DM-TOO-FEW-ARGUMENTS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM)
++-             COMMON-LISP::FIXNUM)
++-         SYSTEM::ROUND-UP))
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*))
+++             COMMON-LISP::T)
+++         SYSTEM::RESET-SYS-PATHS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::VECTOR COMMON-LISP::T))
+++         SYSTEM::CONTEXT-VEC)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
+++         SYSTEM::BREAK-HELP SYSTEM::BREAK-MESSAGE
+++         SYSTEM::SIMPLE-BACKTRACE ANSI-LOOP::LOOP-DO-FOR
+++         SYSTEM::BREAK-CURRENT SYSTEM::GCL-TOP-LEVEL
+++         SYSTEM::BREAK-RESUME)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/o/alloc.c
+++++ gcl-2.6.12/o/alloc.c
++@@ -447,7 +447,6 @@ set_tm_maxpage(struct typemanager *tm,fi
++   
++   fixnum r=tm->tm_type==t_relocatable,j=tm->tm_maxpage,z=(n-j)*(r ? 2 : 1);
++   if (z>available_pages) return 0;
++-  if (r && 2*n+page(rb_start)>real_maxpage) return 0;
++   available_pages-=z;
++   tm->tm_adjgbccnt*=((double)j+1)/(n+1);
++   tm->tm_maxpage=n;
++@@ -909,7 +908,7 @@ alloc_after_reclaiming_pages(struct type
++ 
++   fixnum m=tpage(tm,n),reloc_min;
++ 
++-  if (tm->tm_type>=t_end) return NULL;
+++  if (tm->tm_type>t_end) return NULL;
++ 
++   reloc_min=npage(rb_pointer-rb_start);
++ 
++@@ -925,6 +924,8 @@ alloc_after_reclaiming_pages(struct type
++ 
++   }
++ 
+++  if (tm->tm_type>=t_end) return NULL;
+++
++   maybe_reallocate_page(tm,tm->tm_percent_free*tm->tm_npage);
++ 
++   return alloc_from_freelist(tm,n);
++@@ -1093,8 +1094,7 @@ DEFUNM_NEW("ALLOCATED",object,fSallocate
++           RV(make_fixnum(tm->tm_maxpage)),
++           RV(make_fixnum(tm->tm_nppage)),
++           RV(make_fixnum(tm->tm_gbccount)),
++-          RV(make_fixnum(tm->tm_npage*tm->tm_nppage-tm->tm_nfree))
++-          ));
+++          RV(make_fixnum(tm->tm_npage*tm->tm_nppage-tm->tm_nfree))));
++ }
++  
++ #ifdef SGC_CONT_DEBUG
++@@ -1658,7 +1658,7 @@ DEFUN_NEW("GPROF-QUIT",object,fSgprof_qu
++   massert(getcwd(b,sizeof(b)));
++   massert(!chdir(P_tmpdir));
++   _mcleanup();
++-  massert(snprintf(b1,sizeof(b1),"gprof %s",kcl_self)>0);
+++  massert(snprintf(b1,sizeof(b1),"gprof '%s'",kcl_self)>0);
++   massert((pp=popen(b1,"r")));
++   while ((n=fread(b1,1,sizeof(b1),pp)))
++     massert(fwrite(b1,1,n,stdout));
++--- gcl-2.6.12.orig/o/array.c
+++++ gcl-2.6.12/o/array.c
++@@ -1139,9 +1139,9 @@ Icheck_displaced(object displaced_list,
++ /*  } */
++ /* } */
++ 
++-DEFUNO_NEW("REPLACE-ARRAY",object,fSreplace_array,SI,2,2,NONE,
++-       OO,OO,OO,OO,void,siLreplace_array,(object old,object new),"")
++-{ struct dummy fw ;
+++DEFUN_NEW("REPLACE-ARRAY",object,fSreplace_array,SI,2,2,NONE,OO,OO,OO,OO,(object old,object new),"") {
+++
+++  struct dummy fw;
++   fw = old->d;
++ 
++   old = IisArray(old);
++--- gcl-2.6.12.orig/o/bind.c
+++++ gcl-2.6.12/o/bind.c
++@@ -24,7 +24,6 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ */
++ 
++ #include "include.h"
++-#include <string.h>
++ 
++ static void
++ illegal_lambda(void);
++@@ -95,17 +94,19 @@ lambda_bind(object *arg_top)
++      struct aux *aux=NULL;
++      int naux;
++      bool special_processed;
+++     object s[1],ss;
++      vs_mark;
++ 
++      bds_check;
++      lambda = vs_head;
++-     if (type_of(lambda) != t_cons)
+++     if (!consp(lambda))
++              FEerror("No lambda list.", 0);
++      lambda_list = lambda->c.c_car;
++      body = lambda->c.c_cdr;
++ 
++      required = (struct required *)vs_top;
++      nreq = 0;
+++     s[0]=Cnil;
++      for (;;) {
++              if (endp(lambda_list))
++                      goto REQUIRED_ONLY;
++@@ -152,7 +153,7 @@ OPTIONAL:
++                      goto SEARCH_DECLARE;
++              x = lambda_list->c.c_car;
++              lambda_list = lambda_list->c.c_cdr;
++-             if (type_of(x) == t_cons) {
+++             if (consp(x)) {
++                      check_symbol(x->c.c_car);
++                      check_var(x->c.c_car);
++                      vs_push(x->c.c_car);
++@@ -226,9 +227,9 @@ KEYWORD:
++                      goto SEARCH_DECLARE;
++              x = lambda_list->c.c_car;
++              lambda_list = lambda_list->c.c_cdr;
++-             if (type_of(x) == t_cons) {
++-                     if (type_of(x->c.c_car) == t_cons) {
++-                             if (!keywordp(x->c.c_car->c.c_car))
+++             if (consp(x)) {
+++                     if (consp(x->c.c_car)) {
+++                             if (type_of(x->c.c_car->c.c_car)!=t_symbol)
++                                /* FIXME better message */
++                                      FEunexpected_keyword(x->c.c_car->c.c_car);
++                              vs_push(x->c.c_car->c.c_car);
++@@ -296,7 +297,7 @@ AUX_L:
++                      goto SEARCH_DECLARE;
++              x = lambda_list->c.c_car;
++              lambda_list = lambda_list->c.c_cdr;
++-             if (type_of(x) == t_cons) {
+++             if (consp(x)) {
++                      check_symbol(x->c.c_car);
++                      check_var(x->c.c_car);
++                      vs_push(x->c.c_car);
++@@ -336,10 +337,10 @@ SEARCH_DECLARE:
++                              break;
++                      continue;
++              }
++-             if (type_of(form)!=t_cons || !isdeclare(form->c.c_car))
+++             if (!consp(form) || !isdeclare(form->c.c_car))
++                      break;
++              for (ds = form->c.c_cdr; !endp(ds); ds = ds->c.c_cdr) {
++-                     if (type_of(ds->c.c_car) != t_cons)
+++                     if (!consp(ds->c.c_car))
++                              illegal_declare(form);
++                      if (ds->c.c_car->c.c_car == sLspecial) {
++                              vs = ds->c.c_car->c.c_cdr;
++@@ -381,8 +382,7 @@ SEARCH_DECLARE:
++              }
++      if (special_processed)
++              continue;
++-     /*  lex_special_bind(v);  */
++-     lex_env[0] = MMcons(MMcons(v, Cnil), lex_env[0]);
+++     s[0] = MMcons(MMcons(v, Cnil), s[0]);
++ 
++ /**/
++                              }
++@@ -437,17 +437,20 @@ SEARCH_DECLARE:
++              bind_var(rest->rest_var, vs_head, rest->rest_spp);
++      }
++      if (key_flag) {
+++                int allow_other_keys_found=0;
++              i = narg - nreq - nopt;
++              if (i >= 0 && i%2 != 0)
++                /* FIXME better message */
++                FEunexpected_keyword(Cnil);
++              other_keys_appeared = FALSE;
++              for (i = nreq + nopt;  i < narg;  i += 2) {
++-                     if (!keywordp(base[i]))
+++                     if (type_of(base[i])!=t_symbol)
++                              FEunexpected_keyword(base[i]);
++-                     if (base[i] == sKallow_other_keys &&
++-                         base[i+1] != Cnil)
+++                     if (base[i] == sKallow_other_keys && !allow_other_keys_found) {
+++                         allow_other_keys_found=1;
+++                         if (base[i+1] != Cnil)
++                              allow_other_keys_flag = TRUE;
+++                        }
++                      for (j = 0;  j < nkey;  j++) {
++                              if (keyword[j].key_word == base[i]) {
++                                      if (keyword[j].key_svar_val
++@@ -460,7 +463,8 @@ SEARCH_DECLARE:
++                                      goto NEXT_ARG;
++                              }
++                      }
++-                     other_keys_appeared = TRUE;
+++                        if (base[i] != sKallow_other_keys)
+++                       other_keys_appeared = TRUE;
++ 
++              NEXT_ARG:
++                      continue;
++@@ -492,7 +496,7 @@ SEARCH_DECLARE:
++              eval_assign(temporary, aux[i].aux_init);
++              bind_var(aux[i].aux_var, temporary, aux[i].aux_spp);
++      }
++-     if (type_of(body) != t_cons || body->c.c_car == form) {
+++     if (!consp(body) || body->c.c_car == form) {
++              vs_reset;
++              vs_head = body;
++      } else {
++@@ -500,6 +504,13 @@ SEARCH_DECLARE:
++              vs_reset;
++              vs_head = body;
++      }
+++
+++     if (s[0]!=Cnil) {
+++       for (ss=s[0];ss->c.c_cdr!=Cnil;ss=ss->c.c_cdr);
+++       ss->c.c_cdr=lex_env[0];
+++       lex_env[0]=s[0];
+++     }
+++
++      return;
++ 
++ REQUIRED_ONLY:
++@@ -515,10 +526,10 @@ REQUIRED_ONLY:
++                              break;
++                      continue;
++              }
++-             if (type_of(form)!=t_cons || !isdeclare(form->c.c_car))
+++             if (!consp(form) || !isdeclare(form->c.c_car))
++                      break;
++              for (ds = form->c.c_cdr; !endp(ds); ds = ds->c.c_cdr) {
++-                     if (type_of(ds->c.c_car) != t_cons)
+++                     if (!consp(ds->c.c_car))
++                              illegal_declare(form);
++                      if (ds->c.c_car->c.c_car == sLspecial) {
++                              vs = ds->c.c_car->c.c_cdr;
++@@ -537,7 +548,7 @@ REQUIRED_ONLY:
++              continue;
++      /*  lex_special_bind(v);  */
++      temporary = MMcons(v, Cnil);
++-     lex_env[0] = MMcons(temporary, lex_env[0]);
+++     s[0] = MMcons(temporary, s[0]);
++ 
++ /**/
++                              }
++@@ -555,7 +566,7 @@ REQUIRED_ONLY:
++              bind_var(required[i].req_var,
++                       base[i],
++                       required[i].req_spp);
++-     if (type_of(body) != t_cons || body->c.c_car == form) {
+++     if (!consp(body) || body->c.c_car == form) {
++              vs_reset;
++              vs_head = body;
++      } else {
++@@ -563,6 +574,13 @@ REQUIRED_ONLY:
++              vs_reset;
++              vs_head = body;
++      }
+++
+++     if (s[0]!=Cnil) {
+++       for (ss=s[0];ss->c.c_cdr!=Cnil;ss=ss->c.c_cdr);
+++       ss->c.c_cdr=lex_env[0];
+++       lex_env[0]=s[0];
+++     }
+++
++ }
++ 
++ void
++@@ -612,7 +630,7 @@ struct bind_temp {
++ */
++ 
++ object
++-find_special(object body, struct bind_temp *start, struct bind_temp *end)
+++find_special(object body, struct bind_temp *start, struct bind_temp *end,object *s)
++ { 
++         object temporary;
++      object form=Cnil;
++@@ -622,6 +640,7 @@ find_special(object body, struct bind_te
++      vs_mark;
++ 
++      vs_push(Cnil);
+++     s=s ? s : lex_env;
++      for (;  !endp(body);  body = body->c.c_cdr) {
++              form = body->c.c_car;
++ 
++@@ -634,10 +653,10 @@ find_special(object body, struct bind_te
++                              break;
++                      continue;
++              }
++-             if (type_of(form)!=t_cons || !isdeclare(form->c.c_car))
+++             if (!consp(form) || !isdeclare(form->c.c_car))
++                      break;
++              for (ds = form->c.c_cdr; !endp(ds); ds = ds->c.c_cdr) {
++-                     if (type_of(ds->c.c_car) != t_cons)
+++                     if (!consp(ds->c.c_car))
++                              illegal_declare(form);
++                      if (ds->c.c_car->c.c_car == sLspecial) {
++                              vs = ds->c.c_car->c.c_cdr;
++@@ -655,14 +674,14 @@ find_special(object body, struct bind_te
++              continue;
++      /*  lex_special_bind(v);  */
++      temporary = MMcons(v, Cnil);
++-     lex_env[0] = MMcons(temporary, lex_env[0]);
+++     s[0] = MMcons(temporary, s[0]);
++ /**/
++                              }
++                      }
++              }
++      }
++ 
++-     if (body != Cnil && body->c.c_car != form)
+++     if (body != Cnil && body->c.c_car != form && type_of(form)==t_cons && isdeclare(form->c.c_car))/*FIXME*/
++              body = make_cons(form, body->c.c_cdr);
++      vs_reset;
++      return(body);
++@@ -674,10 +693,10 @@ let_bind(object body, struct bind_temp *
++      struct bind_temp *bt;
++ 
++      bds_check;
++-     vs_push(find_special(body, start, end));
++      for (bt = start;  bt < end;  bt++) {
++              eval_assign(bt->bt_init, bt->bt_init);
++      }
+++     vs_push(find_special(body, start, end,NULL));
++      for (bt = start;  bt < end;  bt++) {
++              bind_var(bt->bt_var, bt->bt_init, bt->bt_spp);
++      }
++@@ -688,13 +707,20 @@ object
++ letA_bind(object body, struct bind_temp *start, struct bind_temp *end)
++ {
++      struct bind_temp *bt;
++-     
+++     object s[1],ss;
+++
++      bds_check;
++-     vs_push(find_special(body, start, end));
+++     s[0]=Cnil;
+++     vs_push(find_special(body, start, end,s));
++      for (bt = start;  bt < end;  bt++) {
++              eval_assign(bt->bt_init, bt->bt_init);
++              bind_var(bt->bt_var, bt->bt_init, bt->bt_spp);
++      }
+++     if (s[0]!=Cnil) {
+++       for (ss=s[0];ss->c.c_cdr!=Cnil;ss=ss->c.c_cdr);
+++       ss->c.c_cdr=lex_env[0];
+++       lex_env[0]=s[0];
+++     }
++      return(vs_pop);
++ }
++ 
++@@ -703,12 +729,12 @@ letA_bind(object body, struct bind_temp
++ 
++ #endif
++ 
++-#define      NOT_YET         10
++-#define      FOUND           11
+++#define      NOT_YET         stp_ordinary
+++#define      FOUND           stp_special
++ #define      NOT_KEYWORD     1
++ 
++ void
++-parse_key(object *base, bool rest, bool allow_other_keys,int n, ...)
+++parse_key(object *base, bool rest, bool allow_other_keys, int n, ...)
++ { 
++         object temporary;
++      va_list ap;
++@@ -735,7 +761,7 @@ parse_key(object *base, bool rest, bool
++        FEunexpected_keyword(Cnil);
++      if (narg == 2) {
++              k = base[0];
++-             if (!keywordp(k))
+++             if (type_of(k)!=t_symbol)
++                FEunexpected_keyword(k);
++              if (k == sKallow_other_keys && ! allow_other_keys_found) {
++                allow_other_keys_found=1;
++@@ -777,7 +803,7 @@ parse_key(object *base, bool rest, bool
++      va_end(ap);
++      for (v = base;  v < vs_top;  v += 2) {
++              k = v[0];
++-             if (!keywordp(k)) {
+++             if (type_of(k)!=t_symbol) {
++                      error_flag = NOT_KEYWORD;
++                      other_key = k;
++                      continue;
++@@ -827,16 +853,19 @@ check_other_key(object l, int n, ...)
++      object k;
++      int i;
++      bool allow_other_keys = FALSE;
+++     int allow_other_keys_found=0;
++ 
++      for (;  !endp(l);  l = l->c.c_cdr->c.c_cdr) {
++              k = l->c.c_car;
++-             if (!keywordp(k))
+++             if (type_of(k)!=t_symbol)
++                FEunexpected_keyword(k);
++              if (endp(l->c.c_cdr))
++                /* FIXME better message */
++                FEunexpected_keyword(Cnil);
++-             if (k == sKallow_other_keys && l->c.c_cdr->c.c_car != Cnil) {
++-                     allow_other_keys = TRUE;
+++             if (k == sKallow_other_keys && !allow_other_keys_found) {
+++               allow_other_keys_found=1;
+++               if (l->c.c_cdr->c.c_car != Cnil)
+++                 allow_other_keys = TRUE;
++              } else {
++                char buf [100];
++                bzero(buf,n);
++@@ -1110,7 +1139,7 @@ gcl_init_bind(void)
++      make_cons(make_ordinary("&BODY"), Cnil)))))))));
++ 
++      make_constant("LAMBDA-PARAMETERS-LIMIT",
++-                   make_fixnum(64));
+++                   make_fixnum(MAX_ARGS+1));
++ 
++ 
++ 
++--- gcl-2.6.12.orig/o/error.c
+++++ gcl-2.6.12/o/error.c
++@@ -490,49 +490,78 @@ vfun_wrong_number_of_args(object x)
++ 
++ 
++ void
++-check_arg_range(int n, int m)
++-{  
++-  object x,x1;
+++check_arg_range(int n, int m) {
++ 
++-  x=make_fixnum(n);
++-  x1=make_fixnum(VFUN_NARGS);
++   if (VFUN_NARGS < n)
++-    Icall_error_handler(
++-                     sKtoo_few_arguments,
++-                      make_simple_string("Needed at least ~D args, but received ~d"),
++-                      2,x,x1);
++-   else if (VFUN_NARGS > m)
++-          Icall_error_handler(
++-                      sKtoo_many_arguments,
++-                      make_simple_string("Needed no more than ~D args, but received ~d"),
++-                      2,x,x1);
++- }
+++    FEtoo_few_arguments(0,VFUN_NARGS);
+++  if (VFUN_NARGS > m)
+++    FEtoo_many_arguments(0,VFUN_NARGS);
+++
+++}
++                       
++      
++ DEF_ORDINARY("TERMINAL-INTERRUPT",sSterminal_interrupt,SI,"");
++-DEF_ORDINARY("WRONG-TYPE-ARGUMENT",sKwrong_type_argument,KEYWORD,"");
++-DEF_ORDINARY("TOO-FEW-ARGUMENTS",sKtoo_few_arguments,KEYWORD,"");
++-DEF_ORDINARY("TOO-MANY-ARGUMENTS",sKtoo_many_arguments,KEYWORD,"");
++-DEF_ORDINARY("UNEXPECTED-KEYWORD",sKunexpected_keyword,KEYWORD,"");
++-DEF_ORDINARY("INVALID-FORM",sKinvalid_form,KEYWORD,"");
++-DEF_ORDINARY("UNBOUND-VARIABLE",sKunbound_variable,KEYWORD,"");
++-DEF_ORDINARY("INVALID-VARIABLE",sKinvalid_variable,KEYWORD,"");
++-DEF_ORDINARY("UNDEFINED-FUNCTION",sKundefined_function,KEYWORD,"");
++-DEF_ORDINARY("INVALID-FUNCTION",sKinvalid_function,KEYWORD,"");
++-DEF_ORDINARY("PACKAGE-ERROR",sKpackage_error,KEYWORD,"");
++-DEF_ORDINARY("DATUM",sKdatum,KEYWORD,"");
++-DEF_ORDINARY("EXPECTED-TYPE",sKexpected_type,KEYWORD,"");
++-DEF_ORDINARY("PACKAGE",sKpackage,KEYWORD,"");
++-DEF_ORDINARY("FORMAT-CONTROL",sKformat_control,KEYWORD,"");
++-DEF_ORDINARY("FORMAT-ARGUMENTS",sKformat_arguments,KEYWORD,"");
++ DEF_ORDINARY("CATCH",sKcatch,KEYWORD,"");
++ DEF_ORDINARY("PROTECT",sKprotect,KEYWORD,"");
++ DEF_ORDINARY("CATCHALL",sKcatchall,KEYWORD,"");
++ 
++ 
+++DEF_ORDINARY("CONDITION",sLcondition,LISP,"");
+++DEF_ORDINARY("SERIOUS-CONDITION",sLserious_condition,LISP,"");
+++DEF_ORDINARY("SIMPLE-CONDITION",sLsimple_condition,LISP,"");
+++
+++DEF_ORDINARY("ERROR",sLerror,LISP,"");
+++DEF_ORDINARY("SIMPLE-ERROR",sLsimple_error,LISP,"");
+++DEF_ORDINARY("FORMAT-CONTROL",sKformat_control,KEYWORD,"");
+++DEF_ORDINARY("FORMAT-ARGUMENTS",sKformat_arguments,KEYWORD,"");
+++
+++DEF_ORDINARY("TYPE-ERROR",sLtype_error,LISP,"");
+++DEF_ORDINARY("DATUM",sKdatum,KEYWORD,"");
+++DEF_ORDINARY("EXPECTED-TYPE",sKexpected_type,KEYWORD,"");
+++DEF_ORDINARY("SIMPLE-TYPE-ERROR",sLsimple_type_error,LISP,"");
+++
+++DEF_ORDINARY("PROGRAM-ERROR",sLprogram_error,LISP,"");
+++DEF_ORDINARY("CONTROL-ERROR",sLcontrol_error,LISP,"");
+++DEF_ORDINARY("PACKAGE-ERROR",sLpackage_error,LISP,"");
+++DEF_ORDINARY("PACKAGE",sKpackage,KEYWORD,"");
+++
+++DEF_ORDINARY("STREAM-ERROR",sLstream_error,LISP,"");
+++DEF_ORDINARY("STREAM",sKstream,KEYWORD,"");
+++DEF_ORDINARY("END-OF-FILE",sLend_of_file,LISP,"");
+++
+++DEF_ORDINARY("FILE-ERROR",sLfile_error,LISP,"");
+++DEF_ORDINARY("PATHNAME",sKpathname,KEYWORD,"");
+++
+++DEF_ORDINARY("CELL-ERROR",sLcell_error,LISP,"");
+++DEF_ORDINARY("NAME",sKname,KEYWORD,"");
+++DEF_ORDINARY("UNBOUND-SLOT",sLunbound_slot,LISP,"");
+++DEF_ORDINARY("UNBOUND-VARIABLE",sLunbound_variable,LISP,"");
+++DEF_ORDINARY("UNDEFINED-FUNCTION",sLundefined_function,LISP,"");
+++
+++DEF_ORDINARY("ARITHMETIC-ERROR",sLarithmetic_error,LISP,"");
+++DEF_ORDINARY("OPERATION",sKoperation,KEYWORD,"");
+++DEF_ORDINARY("OPERANDS",sKoperands,KEYWORD,"");
+++DEF_ORDINARY("DIVISION-BY-ZERO",sLdivision_by_zero,LISP,"");
+++DEF_ORDINARY("FLOATING-POINT-OVERFLOW",sLfloating_point_overflow,LISP,"");
+++DEF_ORDINARY("FLOATING-POINT-UNDERFLOW",sLfloating_point_underflow,LISP,"");
+++DEF_ORDINARY("FLOATING-POINT-INEXACT",sLfloating_point_inexact,LISP,"");
+++DEF_ORDINARY("FLOATING-POINT-INVALID-OPERATION",sLfloating_point_invalid_operation,LISP,"");
+++
+++DEF_ORDINARY("PARSE-ERROR",sLparse_error,LISP,"");
+++
+++DEF_ORDINARY("PRINT-NOT-READABLE",sLprint_not_readable,LISP,"");
+++
+++DEF_ORDINARY("READER-ERROR",sLreader_error,LISP,"");
+++DEF_ORDINARY("PATHNAME-ERROR",sLpathname_error,SI,"");
+++
+++DEF_ORDINARY("STORAGE-CONDITION",sLstorage_condition,LISP,"");
+++
+++DEF_ORDINARY("WARNING",sLwarning,LISP,"");
+++DEF_ORDINARY("SIMPLE-WARNING",sLsimple_warning,LISP,"");
+++DEF_ORDINARY("STYLE-WARNING",sLstyle_warning,LISP,"");
+++
++ void
++-gcl_init_error(void)
++-{
++-     null_string = make_simple_string("");
++-     enter_mark_origin(&null_string);
+++gcl_init_error(void) {
+++  null_string = make_simple_string("");
+++  enter_mark_origin(&null_string);
++ }
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -1501,14 +1501,12 @@ read_fasl_vector(object in)
++  object d;
++  int tem;
++  if (((tem=getc(((FILE *)in->sm.sm_fp))) == EOF) && feof(((FILE *)in->sm.sm_fp)))
++-   { d = coerce_to_pathname(in);
++-     d = make_pathname(d->pn.pn_host,
++-                    d->pn.pn_device,
++-                    d->pn.pn_directory,
++-                    d->pn.pn_name,
++-                    make_simple_string("data"),
++-                    d->pn.pn_version);
++-     d = coerce_to_namestring(d);
+++   { char *pf;
+++     coerce_to_filename(in,FN1);
+++     for (pf=FN1+strlen(FN1);pf>FN1 && pf[-1]!='.';pf--);
+++     if (pf==FN1) {pf=FN1+strlen(FN1);*pf++='.';}
+++     snprintf(pf,sizeof(FN1)-(pf-FN1),"data");
+++     d=make_simple_string(FN1);
++      in = open_stream(d,smm_input,Cnil,Cnil);
++      if (in == Cnil) 
++        FEerror("Can't open file ~s",1,d);
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -138,7 +138,7 @@ void
++ end_of_stream(strm)
++ object strm;
++ {
++-     FEerror("Unexpected end of ~S.", 1, strm);
+++  END_OF_FILE(strm);
++ }
++ 
++ /*
++@@ -167,6 +167,7 @@ BEGIN:
++      case smm_probe:
++              return(FALSE);
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -223,6 +224,7 @@ BEGIN:
++      case smm_probe:
++              return(FALSE);
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -270,6 +272,7 @@ BEGIN:
++      case smm_socket:
++          return (sLcharacter);
++          
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -341,220 +344,208 @@ cannot_create(object);
++      Fn is a namestring.
++ */
++ object
++-open_stream(fn, smm, if_exists, if_does_not_exist)
++-object fn;
++-enum smmode smm;
++-object if_exists, if_does_not_exist;
++-{
++-     object x;
++-     FILE *fp=NULL;
++-     char fname[PATH_MAX];
++-     object unzipped = 0;
++-     vs_mark;
+++open_stream(object fn,enum smmode smm, object if_exists, object if_does_not_exist) {
++ 
++-/*
++-     if (type_of(fn) != t_string)
++-             FEwrong_type_argument(sLstring, fn);
++-*/
++-     /* if (fn->st.st_fillp > BUFSIZ - 1) */
++-     /*      too_long_file_name(fn); */
++-     /* for (i = 0;  i < fn->st.st_fillp;  i++) */
++-     /*      fname[i] = fn->st.st_self[i]; */
++-     
++-     /* fname[i] = '\0'; */
++-     coerce_to_filename(fn,fname);
++-     if (smm == smm_input || smm == smm_probe) {
++-                if(fname[0]=='|')
++-               fp = popen(fname+1,"r");
++-             else 
++-               fp = fopen_not_dir(fname, "r");
++-             
++-           AGAIN:
++-             if (fp == NULL) {
++-                     if (sSAallow_gzipped_fileA->s.s_dbind != sLnil)
++-                       { 
++-                         static struct string st;
++-                         char buf[256];
++-                         if (snprintf(buf,sizeof(buf),"%s.gz",fname)<=0)
++-                           FEerror("Cannot write .gz filename",0);
++-                         st.st_self=buf;
++-                         st.st_dim=st.st_fillp=strlen(buf);
++-                         set_type_of(&st,t_string);
++-                         if (file_exists((object)&st)) {
++-                           FILE *pp;
++-                           int n;
++-                           if (!(fp=tmpfile()))
++-                             FEerror("Cannot create temporary file",0);
++-                           if (snprintf(buf,sizeof(buf),"zcat %s.gz",fname)<=0)
++-                             FEerror("Cannot write zcat pipe name",0);
++-                           if (!(pp=popen(buf,"r")))
++-                             FEerror("Cannot open zcat pipe",0);
++-                           while((n=fread(buf,1,sizeof(buf),pp)))
++-                             if (!fwrite(buf,1,n,fp))
++-                               FEerror("Cannot write pipe output to temporary file",0);
++-                           if (pclose(pp)<0)
++-                             FEerror("Cannot close zcat pipe",0);
++-                           if (fseek(fp,0,SEEK_SET))
++-                             FEerror("Cannot rewind temporary file\n",0); 
++-                           goto AGAIN;
++-                         }
++-                       }
++-                           
++-/*                       fp = fopen_not_dir(buf,"r"); */
++-/*                       if (fp) */
++-/*                         {  */
++-/* #ifdef NO_MKSTEMP */
++-/*                           char *tmp; */
++-/* #else */
++-/*                           char tmp[200]; */
++-/* #endif */
++-/*                           char command [500]; */
++-/*                           fclose(fp); */
++-/* #ifdef NO_MKSTEMP */
++-/*                           tmp = tmpnam(0); */
++-/* #else */
++-/*                           snprintf(tmp,sizeof(tmp),"uzipXXXXXX"); */
++-                             /* mkstemp(tmp); */ /* fixme: catch errors */
++-/* #endif */
++-/*                           unzipped = make_simple_string(tmp); */
++-/*                           sprintf(command,"gzip -dc %s > %s",buf,tmp); */
++-/*                           fp = 0; */
++-/*                           if (0 == system(command)) */
++-/*                             { */
++-/*                               fp = fopen_not_dir(tmp,"r"); */
++-/*                               if (fp)  */
++-/*                                 goto AGAIN; */
++-/*                               /\* should not get here *\/ */
++-/*                               else { unlink(tmp);}} */
++-/*                         }} */
++-                     if (if_does_not_exist == sKerror)
++-                             cannot_open(fn);
++-                     else if (if_does_not_exist == sKcreate) {
++-                             fp = fopen_not_dir(fname, "w");
++-                             if (fp == NULL)
++-                                     cannot_create(fn);
++-                             fclose(fp);
++-                             fp = fopen_not_dir(fname, "r");
++-                             if (fp == NULL)
++-                                     cannot_open(fn);
++-                     } else if (if_does_not_exist == Cnil)
++-                             return(Cnil);
++-                     else
++-                      FEerror("~S is an illegal IF-DOES-NOT-EXIST option.",
++-                              1, if_does_not_exist);
++-             }
++-     } else if (smm == smm_output || smm == smm_io) {
++-             if (if_exists == sKnew_version && if_does_not_exist == sKcreate)
++-                     goto CREATE;
++-             fp = fopen_not_dir(fname, "r");
++-             if (fp != NULL) {
++-                     fclose(fp);
++-                     if (if_exists == sKerror)
++-                             FEerror("The file ~A already exists.", 1, fn);
++-                     else if (if_exists == sKrename) {
++-                             if (smm == smm_output)
++-                                     fp = backup_fopen(fname, "w");
++-                             else
++-                                     fp = backup_fopen(fname, "w+");
++-                             if (fp == NULL)
++-                                     cannot_create(fn);
++-                     } else if (if_exists == sKrename_and_delete ||
++-                                if_exists == sKnew_version ||
++-                                if_exists == sKsupersede) {
++-                             if (smm == smm_output)
++-                                     fp = fopen_not_dir(fname, "w");
++-                             else
++-                                     fp = fopen_not_dir(fname, "w+");
++-                             if (fp == NULL)
++-                                     cannot_create(fn);
++-                     } else if (if_exists == sKoverwrite) {
++-                             fp = fopen_not_dir(fname, "r+");
++-                             if (fp == NULL)
++-                                     cannot_open(fn);
++-                     } else if (if_exists == sKappend) {
++-                             if (smm == smm_output)
++-                                     fp = fopen_not_dir(fname, "a");
++-                             else
++-                                     fp = fopen_not_dir(fname, "a+");
++-                             if (fp == NULL)
++-                             FEerror("Cannot append to the file ~A.",1,fn);
++-                     } else if (if_exists == Cnil)
++-                             return(Cnil);
++-                     else
++-                             FEerror("~S is an illegal IF-EXISTS option.",
++-                                     1, if_exists);
++-             } else {
++-                     if (if_does_not_exist == sKerror)
++-                             FEerror("The file ~A does not exist.", 1, fn);
++-                     else if (if_does_not_exist == sKcreate) {
++-                     CREATE:
++-                             if (smm == smm_output)
++-                               {
++-                                 if(fname[0]=='|')
++-                                   fp = popen(fname+1,"w");
++-                                 else 
++-                                    fp = fopen_not_dir(fname, "w");
++-                               }
++-                             else
++-                                     fp = fopen_not_dir(fname, "w+");
++-                             if (fp == NULL)
++-                                     cannot_create(fn);
++-                     } else if (if_does_not_exist == Cnil)
++-                             return(Cnil);
++-                     else
++-                      FEerror("~S is an illegal IF-DOES-NOT-EXIST option.",
++-                              1, if_does_not_exist);
++-             }
+++  object x;
+++  FILE *fp=NULL;
+++  vs_mark;
+++
+++  coerce_to_filename(fn,FN1);
+++  if (smm == smm_input || smm == smm_probe) {
+++    if(FN1[0]=='|')
+++      fp = popen(FN1+1,"r");
+++    else
+++      fp = fopen_not_dir(FN1, "r");
+++
+++    if ((fp == NULL) &&
+++     (sSAallow_gzipped_fileA->s.s_dbind != sLnil)) {
+++      union lispunion st;
+++      char buf[256];
+++      if (snprintf(buf,sizeof(buf),"%s.gz",FN1)<=0)
+++     FEerror("Cannot write .gz filename",0);
+++      st.st.st_self=buf;
+++      st.st.st_dim=st.st.st_fillp=strlen(buf);
+++      set_type_of(&st,t_string);
+++      if (fSstat((object)&st)!=Cnil) {
+++     FILE *pp;
+++     int n;
+++     if (!(fp=tmpfile()))
+++       FEerror("Cannot create temporary file",0);
+++     if (snprintf(buf,sizeof(buf),"zcat %s.gz",FN1)<=0)
+++       FEerror("Cannot write zcat pipe name",0);
+++     if (!(pp=popen(buf,"r")))
+++       FEerror("Cannot open zcat pipe",0);
+++     while((n=fread(buf,1,sizeof(buf),pp)))
+++       if (!fwrite(buf,1,n,fp))
+++         FEerror("Cannot write pipe output to temporary file",0);
+++     if (pclose(pp)<0)
+++       FEerror("Cannot close zcat pipe",0);
+++     if (fseek(fp,0,SEEK_SET))
+++       FEerror("Cannot rewind temporary file\n",0);
+++      }
+++    }
+++    if (fp == NULL) {
+++      if (if_does_not_exist == sKerror)
+++     cannot_open(fn);
+++      else if (if_does_not_exist == sKcreate) {
+++     fp = fopen_not_dir(FN1, "w");
+++     if (fp == NULL)
+++       cannot_create(fn);
+++     fclose(fp);
+++     fp = fopen_not_dir(FN1, "r");
+++     if (fp == NULL)
+++       cannot_open(fn);
+++      } else if (if_does_not_exist == Cnil)
+++     return(Cnil);
+++      else
+++     FEerror("~S is an illegal IF-DOES-NOT-EXIST option.",
+++             1, if_does_not_exist);
+++    }
+++  } else if (smm == smm_output || smm == smm_io) {
+++    if (FN1[0] == '|')
+++      fp = NULL;
+++    else
+++      fp = fopen_not_dir(FN1, "r");
+++    if (fp != NULL) {
+++      fclose(fp);
+++      if (if_exists == sKerror)
+++     FILE_ERROR(fn,"File exists");
+++      else if (if_exists == sKrename) {
+++     massert(snprintf(FN2,sizeof(FN2),"%s.BAK",FN1)>=0);
+++     massert(!rename(FN1,FN2));
+++     if (smm == smm_output)
+++       fp = fopen(FN1, "w");
+++     else
+++       fp = fopen(FN1, "w+");
+++     if (fp == NULL)
+++       cannot_create(fn);
+++      } else if (if_exists == sKrename_and_delete ||
+++              if_exists == sKnew_version ||
+++              if_exists == sKsupersede) {
+++     if (smm == smm_output)
+++       fp = fopen_not_dir(FN1, "w");
+++     else
+++       fp = fopen_not_dir(FN1, "w+");
+++     if (fp == NULL)
+++       cannot_create(fn);
+++      } else if (if_exists == sKoverwrite) {
+++     fp = fopen_not_dir(FN1, "r+");
+++     if (fp == NULL)
+++       cannot_open(fn);
+++      } else if (if_exists == sKappend) {
+++     if (smm == smm_output)
+++       fp = fopen_not_dir(FN1, "a");
+++     else
+++       fp = fopen_not_dir(FN1, "a+");
+++     if (fp == NULL)
+++       FEerror("Cannot append to the file ~A.",1,fn);
+++      } else if (if_exists == Cnil)
+++     return(Cnil);
+++      else
+++     FEerror("~S is an illegal IF-EXISTS option.",
+++             1, if_exists);
+++    } else {
+++      if (if_does_not_exist == sKerror)
+++     FILE_ERROR(fn,"The file does not exist");
+++      else if (if_does_not_exist == sKcreate) {
+++     if (smm == smm_output) {
+++       if(FN1[0]=='|')
+++         fp = popen(FN1+1,"w");
+++       else
+++         fp = fopen_not_dir(FN1, "w");
++      } else
++-             error("illegal stream mode");
++-     x = alloc_object(t_stream);
++-     x->sm.sm_mode = (short)smm;
++-     x->sm.sm_fp = fp;
+++       fp = fopen_not_dir(FN1, "w+");
+++     if (fp == NULL)
+++       cannot_create(fn);
+++      } else if (if_does_not_exist == Cnil)
+++     return(Cnil);
+++      else
+++     FEerror("~S is an illegal IF-DOES-NOT-EXIST option.",
+++             1, if_does_not_exist);
+++    }
+++  } else
+++    FEerror("Illegal open mode for ~S.",1,fn);
+++
+++  vs_push(make_simple_string(FN1));
+++  x = alloc_object(t_stream);
+++  x->sm.sm_mode = (short)smm;
+++  x->sm.sm_fp = fp;
+++  x->sm.sm_buffer = 0;
+++  x->sm.sm_object0 = sLcharacter;
+++  x->sm.sm_object1 = vs_head;
+++  x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++  x->sm.sm_flags=0;
+++  vs_push(x);
+++
+++  setup_stream_buffer(x);
+++  vs_reset;
+++
+++  if (smm==smm_probe)
+++    close_stream(x);
+++
+++  return(x);
++ 
++-     x->sm.sm_buffer = 0;
++-     x->sm.sm_object0 = (unzipped ? make_cons(sSAallow_gzipped_fileA,unzipped) : sLcharacter);
++-     x->sm.sm_object1 = fn;
++-     x->sm.sm_int0 = x->sm.sm_int1 = 0;
++-     vs_push(x);
++-     setup_stream_buffer(x);
++-     vs_reset;
++-     return(x);
++ }
++ 
++ static void
++ gclFlushSocket(object);
++ 
+++DEFUN_NEW("OPEN-INT",object,fSopen_int,SI,8,8,NONE,OO,OO,OO,OO,
+++       (object fn,object direction,object element_type,object if_exists,
+++        object iesp,object if_does_not_exist,object idnesp,
+++        object external_format),"") {
+++
+++  enum smmode smm=0;
+++  vs_mark;
+++  object strm,filename;
+++
+++  filename=fn;
+++  if (direction == sKinput) {
+++    smm = smm_input;
+++    if (idnesp==Cnil)
+++      if_does_not_exist = sKerror;
+++  } else if (direction == sKoutput) {
+++    smm = smm_output;
+++    if (iesp==Cnil)
+++      if_exists = sKnew_version;
+++    if (idnesp==Cnil) {
+++      if (if_exists == sKoverwrite ||
+++       if_exists == sKappend)
+++     if_does_not_exist = sKerror;
+++      else
+++     if_does_not_exist = sKcreate;
+++    }
+++  } else if (direction == sKio) {
+++    smm = smm_io;
+++    if (iesp==Cnil)
+++      if_exists = sKnew_version;
+++    if (idnesp==Cnil) {
+++      if (if_exists == sKoverwrite ||
+++       if_exists == sKappend)
+++     if_does_not_exist = sKerror;
+++      else
+++     if_does_not_exist = sKcreate;
+++    }
+++  } else if (direction == sKprobe) {
+++    smm = smm_probe;
+++    if (idnesp==Cnil)
+++      if_does_not_exist = Cnil;
+++  } else
+++    FEerror("~S is an illegal DIRECTION for OPEN.", 1, direction);
+++  strm = open_stream(filename, smm, if_exists, if_does_not_exist);
+++  if (type_of(strm) == t_stream) {
+++    strm->sm.sm_object0 = element_type;
+++    strm->sm.sm_object1 = fn;
+++  }
+++  vs_reset;
+++  RETURN1(strm);
+++}
++ 
++ DEFUN_NEW("OPEN-STREAM-P",object,fLopen_stream_p,LISP,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++ 
++   check_type_stream(&x);
++ 
++-  switch(x->sm.sm_mode) {
++-  case smm_output:
++-  case smm_input:
++-  case smm_io:
++-  case smm_probe:
++-  case smm_socket:
++-  case smm_string_input:
++-  case smm_string_output:
++-    return x->d.tt==1 ? Cnil : Ct;
++-  case smm_synonym:
++-    return FFN(fLopen_stream_p)(symbol_value(x->sm.sm_object0));
++-  case smm_broadcast:
++-  case smm_concatenated:
++-    for (x=x->sm.sm_object0;!endp(x);x=x->c.c_cdr)
++-      if (!FFN(fLopen_stream_p)(x))
++-     return Cnil;
++-    return Ct;
++-  case smm_two_way:
++-  case smm_echo:
++-    if (FFN(fLopen_stream_p)(STREAM_INPUT_STREAM(x))==Cnil)
++-      return Cnil;
++-    return FFN(fLopen_stream_p)(STREAM_OUTPUT_STREAM(x));
++-  default:
++-    error("illegal stream mode");
++-    return Cnil;
++-  }
+++  return GET_STREAM_FLAG(x,gcl_sm_closed) ? Cnil : Ct;
++ 
++ }
++     /*
++@@ -562,94 +553,132 @@ DEFUN_NEW("OPEN-STREAM-P",object,fLopen_
++      The abort_flag is not used now.
++ */
++ void
++-close_stream(strm)
++-object strm;
++-/*bool abort_flag; */        /*  Not used now!  */
++-{
++-     object x;
+++close_stream(object strm)  {
++ 
++-BEGIN:
++-     strm->d.tt=1;
+++  object x;
++ 
++-     switch (strm->sm.sm_mode) {
++-     case smm_output:
++-             if (strm->sm.sm_fp == stdout)
++-                     FEerror("Cannot close the standard output.", 0);
++-             if (strm->sm.sm_fp == NULL) break;
++-             fflush(strm->sm.sm_fp);
++-             deallocate_stream_buffer(strm);
++-             fclose(strm->sm.sm_fp);
++-             strm->sm.sm_fp = NULL;
++-             break;
+++  if (FFN(fLopen_stream_p)(strm)==Cnil)
+++    return;
++ 
+++  switch (strm->sm.sm_mode) {
+++  case smm_output:
+++    if (strm->sm.sm_fp == stdout)
+++      FEerror("Cannot close the standard output.", 0);
+++    fflush(strm->sm.sm_fp);
+++    deallocate_stream_buffer(strm);
+++    fclose(strm->sm.sm_fp);
+++    strm->sm.sm_fp = NULL;
+++    strm->sm.sm_fd = -1;
+++    break;
++ 
++-     case smm_socket:
++-       if (SOCKET_STREAM_FD(strm) < 2)
++-         emsg("tried Closing %d ! as socket \n",SOCKET_STREAM_FD(strm));
++-       else {
+++  case smm_socket:
+++    if (SOCKET_STREAM_FD(strm) < 2)
+++      emsg("tried Closing %d ! as socket \n",SOCKET_STREAM_FD(strm));
+++    else {
++ #ifdef HAVE_NSOCKET
++-          if (GET_STREAM_FLAG(strm,gcl_sm_output))
++-              {       
++-             gclFlushSocket(strm);
++-                 /* there are two for one fd so close only one */
++-               tcpCloseSocket(SOCKET_STREAM_FD(strm));
++-               } 
+++      if (GET_STREAM_FLAG(strm,gcl_sm_output)) {
+++     gclFlushSocket(strm);
+++     /* there are two for one fd so close only one */
+++     tcpCloseSocket(SOCKET_STREAM_FD(strm));
+++      }
++ #endif
++-       SOCKET_STREAM_FD(strm)=-1;
++-       }
+++      SOCKET_STREAM_FD(strm)=-1;
+++    }
++ 
++-     case smm_input:
++-             if (strm->sm.sm_fp == stdin)
++-                     FEerror("Cannot close the standard input.", 0);
++-       
++-     case smm_io:
++-     case smm_probe:
++-             if (strm->sm.sm_fp == NULL) break;
++-             deallocate_stream_buffer(strm);
++-             if (strm->sm.sm_object1 &&
++-                 type_of(strm->sm.sm_object1)==t_string &&
++-                 strm->sm.sm_object1->st.st_self[0] =='|')
++-               pclose(strm->sm.sm_fp);
++-             else 
++-               fclose(strm->sm.sm_fp);
++-             strm->sm.sm_fp = NULL;
++-             if (strm->sm.sm_object0 &&
++-                 type_of(strm->sm.sm_object0 ) == t_cons &&
++-                 Mcar(strm->sm.sm_object0 ) == sSAallow_gzipped_fileA)
++-               fLdelete_file(Mcdr(strm->sm.sm_object0));
++-             break;
+++  case smm_input:
+++    if (strm->sm.sm_fp == stdin)
+++      FEerror("Cannot close the standard input.", 0);
++ 
++-     case smm_synonym:
++-             strm = symbol_value(strm->sm.sm_object0);
++-             if (type_of(strm) != t_stream)
++-                     FEwrong_type_argument(sLstream, strm);
++-             goto BEGIN;
+++  case smm_io:
+++  case smm_probe:
+++    deallocate_stream_buffer(strm);
+++    if (strm->sm.sm_object1 &&
+++     type_of(strm->sm.sm_object1)==t_string &&
+++     strm->sm.sm_object1->st.st_self[0] =='|')
+++      pclose(strm->sm.sm_fp);
+++    else
+++      fclose(strm->sm.sm_fp);
+++    strm->sm.sm_fp = NULL;
+++    strm->sm.sm_fd = -1;
+++    if (strm->sm.sm_object0 &&
+++     type_of(strm->sm.sm_object0 )==t_cons &&
+++     Mcar(strm->sm.sm_object0)==sSAallow_gzipped_fileA)
+++      ifuncall1(sLdelete_file,Mcdr(strm->sm.sm_object0));
+++    break;
++ 
++-     case smm_broadcast:
++-             for (x = strm->sm.sm_object0; !endp(x); x = x->c.c_cdr)
++-                     close_stream(x->c.c_car);
++-             break;
+++  case smm_file_synonym:
+++  case smm_synonym:
+++    strm = symbol_value(strm->sm.sm_object0);
+++    if (type_of(strm) != t_stream)
+++      TYPE_ERROR(strm,sLstream);
+++    close_stream(strm);
+++    break;
++ 
++-     case smm_concatenated:
++-             for (x = strm->sm.sm_object0; !endp(x); x = x->c.c_cdr)
++-                     close_stream(x->c.c_car);
++-             break;
+++  case smm_broadcast:
+++  case smm_concatenated:
+++    for (x = strm->sm.sm_object0; !endp(x); x = x->c.c_cdr)
+++      close_stream(x->c.c_car);
+++    break;
++ 
++-     case smm_two_way:
++-     case smm_echo:
++-             close_stream(STREAM_INPUT_STREAM(strm));
++-             close_stream(STREAM_OUTPUT_STREAM(strm));
++-             break;
+++  case smm_two_way:
+++  case smm_echo:
+++    close_stream(STREAM_INPUT_STREAM(strm));
+++    close_stream(STREAM_OUTPUT_STREAM(strm));
+++    break;
++ 
++-     case smm_string_input:
++-             break;          /*  There is nothing to do.  */
+++  case smm_string_input:
+++  case smm_string_output:
+++    break;
++ 
++-     case smm_string_output:
++-             break;          /*  There is nothing to do.  */
+++  default:
+++    error("Illegal stream mode");
+++  }
+++
+++  SET_STREAM_FLAG(strm,gcl_sm_closed,1);
+++
+++}
+++
+++DEFUN_NEW("INTERACTIVE-STREAM-P",object,fLinteractive_stream_p,LISP,1,1,NONE,OO,OO,OO,OO,(object strm),"") {
+++
+++  check_type_stream(&strm);
+++
+++  switch (strm->sm.sm_mode) {
+++  case smm_output:
+++  case smm_input:
+++  case smm_io:
+++  case smm_probe:
+++    if ((strm->sm.sm_fp == stdin) ||
+++     (strm->sm.sm_fp == stdout) ||
+++     (strm->sm.sm_fp == stderr))
+++      return Ct;
+++    return Cnil;
+++    break;
+++  case smm_file_synonym:
+++  case smm_synonym:
+++    strm = symbol_value(strm->sm.sm_object0);
+++    if (type_of(strm) != t_stream)
+++      FEwrong_type_argument(sLstream, strm);
+++    break;
+++
+++  case smm_broadcast:
+++  case smm_concatenated:
+++    if (( consp(strm->sm.sm_object0) ) &&
+++     ( type_of(strm->sm.sm_object0->c.c_car) == t_stream ))
+++      strm=strm->sm.sm_object0->c.c_car;
+++    else
+++      return Cnil;
+++    break;
+++
+++  case smm_two_way:
+++  case smm_echo:
+++    strm=STREAM_INPUT_STREAM(strm);
+++    break;
+++  default:
+++    return Cnil;
+++  }
+++
+++  return Cnil;
++ 
++-     default:
++-             error("illegal stream mode");
++-     }
++ }
++ 
++ object
++@@ -665,6 +694,7 @@ object istrm, ostrm;
++      STREAM_INPUT_STREAM(strm) = istrm;
++      STREAM_OUTPUT_STREAM(strm) = ostrm;
++      strm->sm.sm_int0 = strm->sm.sm_int1 = 0;
+++     strm->sm.sm_flags=0;
++      return(strm);
++ }
++ 
++@@ -694,6 +724,7 @@ int istart, iend;
++      strm->sm.sm_object1 = OBJNULL;
++      STRING_INPUT_STREAM_NEXT(strm)= istart;
++      STRING_INPUT_STREAM_END(strm)= iend;
+++     strm->sm.sm_flags=0;
++      return(strm);
++ }
++ 
++@@ -729,6 +760,7 @@ int line_length;
++      STRING_STREAM_STRING(strm) = strng;
++      strm->sm.sm_object1 = OBJNULL;
++      strm->sm.sm_int0 = STREAM_FILE_COLUMN(strm) = 0;
+++     strm->sm.sm_flags=0;
++      vs_reset;
++      return(strm);
++ }
++@@ -782,6 +814,7 @@ BEGIN:
++              /* strm->sm.sm_int0++; */
++              return(c==EOF ? c : (c&0377));
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -884,6 +917,7 @@ BEGIN:
++              /* --strm->sm.sm_int0; */  /* use ftell now for position */
++              break;
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -985,6 +1019,7 @@ BEGIN:
++ 
++              break;
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1095,6 +1130,7 @@ BEGIN:
++ #endif
++                closed_stream(strm);
++              break;
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1183,6 +1219,7 @@ BEGIN:
++      case smm_probe:
++              return(FALSE);
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              check_stream(strm);
++@@ -1308,6 +1345,7 @@ BEGIN:
++ #endif
++              return TRUE;
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1363,6 +1401,7 @@ BEGIN:
++      case smm_string_output:
++              return(STRING_STREAM_STRING(strm)->st.st_fillp);
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1412,6 +1451,7 @@ BEGIN:
++              }
++              return(0);
++ 
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1448,6 +1488,7 @@ BEGIN:
++              
++ 
++        
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1487,6 +1528,7 @@ BEGIN:
++      case smm_two_way:
++            strm=STREAM_OUTPUT_STREAM(strm);
++            goto BEGIN;
+++     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1553,6 +1595,22 @@ load(const char *s) {
++ 
++ \f
++ 
+++static int
+++file_synonym_stream_p(object x) {
+++  switch(x->sm.sm_mode) {
+++  case smm_input:
+++  case smm_output:
+++  case smm_io:
+++  case smm_probe:
+++  case smm_file_synonym:
+++    return 1;
+++  case smm_synonym:
+++    return file_synonym_stream_p(x->sm.sm_object0->s.s_dbind);
+++  default:
+++    return 0;
+++  }
+++}
+++
++ LFD(Lmake_synonym_stream)()
++ {
++      object x;
++@@ -1560,12 +1618,13 @@ LFD(Lmake_synonym_stream)()
++      check_arg(1);
++      check_type_sym(&vs_base[0]);
++      x = alloc_object(t_stream);
++-     x->sm.sm_mode = (short)smm_synonym;
+++     x->sm.sm_mode = file_synonym_stream_p(vs_base[0]) ? (short)smm_file_synonym : (short)smm_synonym;
++      x->sm.sm_fp = NULL;
++      x->sm.sm_buffer = 0;
++      x->sm.sm_object0 = vs_base[0];
++      x->sm.sm_object1 = OBJNULL;
++      x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++     x->sm.sm_flags=0;
++      vs_base[0] = x;
++ }
++ 
++@@ -1589,6 +1648,7 @@ LFD(Lmake_broadcast_stream)()
++      x->sm.sm_object0 = vs_base[0];
++      x->sm.sm_object1 = OBJNULL;
++      x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++     x->sm.sm_flags=0;
++      vs_base[0] = x;
++ }
++ 
++@@ -1612,6 +1672,7 @@ LFD(Lmake_concatenated_stream)()
++      x->sm.sm_object0 = vs_base[0];
++      x->sm.sm_object1 = OBJNULL;
++      x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++     x->sm.sm_flags=0;
++      vs_base[0] = x;
++ }
++ 
++@@ -1700,6 +1761,38 @@ LFD(siLoutput_stream_string)()
++      vs_base[0] = vs_base[0]->sm.sm_object0;
++ }
++ 
+++DEFUN_NEW("FILE-STREAM-P",object,fSfile_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(type_of(x)==t_stream &&
+++       (x->sm.sm_mode==smm_input || x->sm.sm_mode==smm_output || x->sm.sm_mode==smm_io || x->sm.sm_mode==smm_probe)
+++       ? Ct : Cnil);
+++}
+++
+++DEFUN_NEW("SYNONYM-STREAM-P",object,fSsynonym_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(type_of(x)==t_stream && (x->sm.sm_mode==smm_file_synonym || x->sm.sm_mode==smm_synonym) ? Ct : Cnil);
+++}
+++
+++DEFUN_NEW("TERMINAL-INPUT-STREAM-P",object,fSterminal_input_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(type_of(x)==t_stream && x->sm.sm_mode==smm_input && x->sm.sm_fp && isatty(fileno((FILE *)x->sm.sm_fp)) ? Ct : Cnil);
+++}
+++
+++DEFUN_NEW("BROADCAST-STREAM-P",object,fSbroadcast_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(type_of(x)==t_stream && x->sm.sm_mode==smm_broadcast ? Ct : Cnil);
+++}
+++
+++DEFUN_NEW("ECHO-STREAM-P",object,fSecho_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(type_of(x)==t_stream && x->sm.sm_mode==smm_echo ? Ct : Cnil);
+++}
+++
+++DEFUN_NEW("TWO-WAY-STREAM-P",object,fStwo_way_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(type_of(x)==t_stream && x->sm.sm_mode==smm_two_way ? Ct : Cnil);
+++}
+++
+++DEFUN_NEW("CONCATENATED-STREAM-P",object,fSconcatenated_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(type_of(x)==t_stream && x->sm.sm_mode==smm_concatenated ? Ct : Cnil);
+++}
+++
+++
+++
++ LFD(Lstreamp)()
++ {
++      check_arg(1);
++@@ -1747,54 +1840,6 @@ LFD(Lstream_element_type)()
++      @(return Ct)
++ @)
++ 
++-@(static defun open (filename
++-           &key (direction sKinput)
++-                (element_type sLcharacter)
++-                (if_exists Cnil iesp)
++-                (if_does_not_exist Cnil idnesp)
++-           &aux strm)
++-     enum smmode smm=0;
++-@
++-     check_type_or_pathname_string_symbol_stream(&filename);
++-     filename = coerce_to_namestring(filename);
++-     if (direction == sKinput) {
++-             smm = smm_input;
++-             if (!idnesp)
++-                     if_does_not_exist = sKerror;
++-     } else if (direction == sKoutput) {
++-             smm = smm_output;
++-             if (!iesp)
++-                     if_exists = sKnew_version;
++-             if (!idnesp) {
++-                     if (if_exists == sKoverwrite ||
++-                         if_exists == sKappend)
++-                             if_does_not_exist = sKerror;
++-                     else
++-                             if_does_not_exist = sKcreate;
++-             }
++-     } else if (direction == sKio) {
++-             smm = smm_io;
++-             if (!iesp)
++-                     if_exists = sKnew_version;
++-             if (!idnesp) {
++-                     if (if_exists == sKoverwrite ||
++-                         if_exists == sKappend)
++-                             if_does_not_exist = sKerror;
++-                     else
++-                             if_does_not_exist = sKcreate;
++-             }
++-     } else if (direction == sKprobe) {
++-             smm = smm_probe;
++-             if (!idnesp)
++-                     if_does_not_exist = Cnil;
++-     } else
++-             FEerror("~S is an illegal DIRECTION for OPEN.",
++-                     1, direction);
++-     strm = open_stream(filename, smm, if_exists, if_does_not_exist);
++-     if (type_of(strm) == t_stream)
++-         strm->sm.sm_object0 = element_type;
++-     @(return strm)
++-@)
++ 
++ @(defun file_position (file_stream &o position)
++      int i=0;
++@@ -1838,175 +1883,72 @@ object sLAload_pathnameA;
++ DEFVAR("*COLLECT-BINARY-MODULES*",sSAcollect_binary_modulesA,SI,sLnil,"");
++ DEFVAR("*BINARY-MODULES*",sSAbinary_modulesA,SI,Cnil,"");
++ 
++-@(static defun load (pathname
++-           &key (verbose `symbol_value(sLAload_verboseA)`)
++-                 print
++-                 (if_does_not_exist sKerror)
++-           &aux pntype fasl_filename lsp_filename filename
++-                defaults strm stdoutput x
++-                package)
++-     bds_ptr old_bds_top;
++-     int i;
++-     object strm1;
++-@
++-     check_type_or_pathname_string_symbol_stream(&pathname);
++-     pathname = coerce_to_pathname(pathname);
++-     defaults = symbol_value(Vdefault_pathname_defaults);
++-     defaults = coerce_to_pathname(defaults);
++-     pathname = merge_pathnames(pathname, defaults, sKnewest);
++-     pntype = pathname->pn.pn_type;
++-     filename = coerce_to_namestring(pathname);
++-     if (user_match(filename->st.st_self,filename->st.st_fillp))
++-             @(return Cnil)
++-        old_bds_top=bds_top;
++-     if (pntype == Cnil || pntype == sKwild ||
++-         (type_of(pntype) == t_string &&
++-#ifdef UNIX
++-         string_eq(pntype, FASL_string))) {
++-#endif
++-#ifdef AOSVS
+++DEFUN_NEW("LOAD-STREAM",object,fSload_stream,SI,2,2,NONE,OO,OO,OO,OO,(object strm,object print),"") {
++ 
++-#endif
++-             pathname->pn.pn_type = FASL_string;
++-             fasl_filename = coerce_to_namestring(pathname);
++-     }
++-     if (pntype == Cnil || pntype == sKwild ||
++-         (type_of(pntype) == t_string &&
++-#ifdef UNIX
++-         string_eq(pntype, LSP_string))) {
++-#endif
++-#ifdef AOSVS
+++  object x;
++ 
++-#endif
++-             pathname->pn.pn_type = LSP_string;
++-             lsp_filename = coerce_to_namestring(pathname);
++-     }
++-     if (fasl_filename != Cnil && file_exists(fasl_filename)) {
++-             if (verbose != Cnil) {
++-                     SETUP_PRINT_DEFAULT(fasl_filename);
++-                     if (file_column(PRINTstream) != 0)
++-                             write_str("\n");
++-                     write_str("Loading ");
++-                     PRINTescape = FALSE;
++-                     write_object(fasl_filename, 0);
++-                     write_str("\n");
++-                     CLEANUP_PRINT_DEFAULT;
++-                     flush_stream(PRINTstream);
++-             }
++-             package = symbol_value(sLApackageA);
++-             bds_bind(sLApackageA, package);
++-             bds_bind(sLAload_pathnameA,fasl_filename);
++-             if (sSAcollect_binary_modulesA->s.s_dbind==Ct) {
++-               object _x=sSAbinary_modulesA->s.s_dbind;
++-               object _y=Cnil;
++-               while (_x!=Cnil) {
++-                 _y=_x;
++-                 _x=_x->c.c_cdr;
++-               }
++-               if (_y==Cnil)
++-                 sSAbinary_modulesA->s.s_dbind=make_cons(fasl_filename,Cnil);
++-               else 
++-                 _y->c.c_cdr=make_cons(fasl_filename,Cnil);
++-             }
++-             i = fasload(fasl_filename);
++-             if (print != Cnil) {
++-                     SETUP_PRINT_DEFAULT(Cnil);
++-                     vs_top = PRINTvs_top;
++-                     if (file_column(PRINTstream) != 0)
++-                             write_str("\n");
++-                     write_str("Fasload successfully ended.");
++-                     write_str("\n");
++-                     CLEANUP_PRINT_DEFAULT;
++-                     flush_stream(PRINTstream);
++-             }
++-             bds_unwind(old_bds_top);
++-             if (verbose != Cnil) {
++-                     SETUP_PRINT_DEFAULT(fasl_filename);
++-                     if (file_column(PRINTstream) != 0)
++-                             write_str("\n");
++-                     write_str("Finished loading ");
++-                     PRINTescape = FALSE;
++-                     write_object(fasl_filename, 0);
++-                     write_str("\n");
++-                     CLEANUP_PRINT_DEFAULT;
++-                     flush_stream(PRINTstream);
++-             }
++-             @(return `make_fixnum(i)`)
++-     }
++-     if (lsp_filename != Cnil && file_exists(lsp_filename)) {
++-             filename = lsp_filename;
++-     }
++-     if (if_does_not_exist != Cnil)
++-             if_does_not_exist = sKerror;
++-     strm1 = strm
++-     = open_stream(filename, smm_input, Cnil, if_does_not_exist);
++-     if (strm == Cnil)
++-             @(return Cnil)
++-     if (verbose != Cnil) {
++-             SETUP_PRINT_DEFAULT(filename);
++-             if (file_column(PRINTstream) != 0)
++-                     write_str("\n");
++-             write_str("Loading ");
++-             PRINTescape = FALSE;
++-             write_object(filename, 0);
++-             write_str("\n");
++-             CLEANUP_PRINT_DEFAULT;
++-             flush_stream(PRINTstream);
++-     }
++-     package = symbol_value(sLApackageA);
++-     bds_bind(sLAload_pathnameA,pathname);
++-     bds_bind(sLApackageA, package);
++-     bds_bind(sLAstandard_inputA, strm);
++-     frs_push(FRS_PROTECT, Cnil);
++-     if (nlj_active) {
++-             close_stream(strm1);
++-             nlj_active = FALSE;
++-             frs_pop();
++-             bds_unwind(old_bds_top);
++-             unwind(nlj_fr, nlj_tag);
++-     }
++-     for (;;) {
++-             preserving_whitespace_flag = FALSE;
++-             detect_eos_flag = TRUE;
++-             x = read_object_non_recursive(strm);
++-             if (x == OBJNULL)
++-                     break;
++-             {
++-                     object *base = vs_base, *top = vs_top, *lex = lex_env;
++-                     object xx;
++-
++-                     lex_new();
++-                     eval(x);
++-                     xx = vs_base[0];
++-                     lex_env = lex;
++-                     vs_top = top;
++-                     vs_base = base;
++-                     x = xx;
++-             }
++-             if (print != Cnil) {
++-                     SETUP_PRINT_DEFAULT(x);
++-                     write_object(x, 0);
++-                     write_str("\n");
++-                     CLEANUP_PRINT_DEFAULT;
++-                     flush_stream(PRINTstream);
++-             }
++-     }
++-     close_stream(strm);
++-     frs_pop();
++-     bds_unwind(old_bds_top);
++-     if (verbose != Cnil) {
++-             SETUP_PRINT_DEFAULT(filename);
++-             if (file_column(PRINTstream) != 0)
++-                     write_str("\n");
++-             write_str("Finished loading ");
++-             PRINTescape = FALSE;
++-             write_object(filename, 0);
++-             write_str("\n");
++-             CLEANUP_PRINT_DEFAULT;
++-             flush_stream(PRINTstream);
++-     }
++-     @(return Ct)
++-@)
+++  for (;;) {
+++    preserving_whitespace_flag = FALSE;
+++    detect_eos_flag = TRUE;
+++    x = read_object_non_recursive(strm);
+++    if (x == OBJNULL)
+++      break;
+++    {
+++      object *base = vs_base, *top = vs_top, *lex = lex_env;
+++      object xx;
+++
+++      lex_new();
+++      eval(x);
+++      xx = vs_base[0];
+++      lex_env = lex;
+++      vs_top = top;
+++      vs_base = base;
+++      x = xx;
+++    }
+++    if (print != Cnil) {
+++      SETUP_PRINT_DEFAULT(x);
+++      write_object(x, 0);
+++      write_str("\n");
+++      CLEANUP_PRINT_DEFAULT;
+++      flush_stream(PRINTstream);
+++    }
+++  }
+++
+++  RETURN1(Ct);
+++
+++}
+++
+++DEFUN_NEW("LOAD-FASL",object,fSload_fasl,SI,2,2,NONE,OO,OO,OO,OO,(object fasl_filename,object print),"") {
+++
+++  int i;
+++
+++  if (sSAcollect_binary_modulesA->s.s_dbind==Ct) {
+++    object _x=sSAbinary_modulesA->s.s_dbind;
+++    object _y=Cnil;
+++    while (_x!=Cnil) {
+++      _y=_x;
+++      _x=_x->c.c_cdr;
+++    }
+++    if (_y==Cnil)
+++      sSAbinary_modulesA->s.s_dbind=make_cons(fasl_filename,Cnil);
+++    else
+++      _y->c.c_cdr=make_cons(fasl_filename,Cnil);
+++  }
+++  i = fasload(fasl_filename);
+++  if (print != Cnil) {
+++    SETUP_PRINT_DEFAULT(Cnil);
+++    vs_top = PRINTvs_top;
+++    if (file_column(PRINTstream) != 0)
+++      write_str("\n");
+++    write_str(";; Fasload successfully ended.");
+++    write_str("\n");
+++    CLEANUP_PRINT_DEFAULT;
+++    flush_stream(PRINTstream);
+++  }
+++
+++  RETURN1(make_fixnum(i));
+++
+++}
++ 
++ static void
++ FFN(siLget_string_input_stream_index)()
++@@ -2018,9 +1960,6 @@ FFN(siLget_string_input_stream_index)()
++      vs_base[0] = make_fixnum(STRING_INPUT_STREAM_NEXT(vs_base[0]));
++ }
++ 
++-DEFUN_NEW("TERMINAL-INPUT-STREAM-P",object,fSterminal_input_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++-  RETURN1(type_of(x)==t_stream && x->sm.sm_mode==smm_input && x->sm.sm_fp && isatty(fileno((FILE *)x->sm.sm_fp)) ? Ct : Cnil);
++-}
++ 
++ LFD(siLmake_string_output_stream_from_string)()
++ {
++@@ -2038,6 +1977,7 @@ LFD(siLmake_string_output_stream_from_st
++      strm->sm.sm_object1 = OBJNULL;
++      /* strm->sm.sm_int0 = strng->st.st_fillp; */
++      STREAM_FILE_COLUMN(strm) = 0;
+++     strm->sm.sm_flags=0;
++      vs_base[0] = strm;
++ }
++ 
++@@ -2071,14 +2011,14 @@ static void
++ cannot_open(fn)
++ object fn;
++ {
++-     FEerror("Cannot open the file ~A.", 1, fn);
+++     FILE_ERROR(fn,"Cannot open");
++ }
++ 
++ static void
++ cannot_create(fn)
++ object fn;
++ {
++-     FEerror("Cannot create the file ~A.", 1, fn);
+++     FILE_ERROR(fn,"Cannot create");
++ }
++ 
++ static void
++@@ -2141,6 +2081,7 @@ int out;
++  if (type_of(strm) != t_stream)
++    FEwrong_type_argument(sLstream, strm);
++  switch (strm->sm.sm_mode){
+++ case smm_file_synonym:
++  case smm_synonym:
++   strm = symbol_value(strm->sm.sm_object0);
++   if (type_of(strm) != t_stream)
++@@ -2566,6 +2507,7 @@ gcl_init_file(void)
++ #endif
++      standard_input->sm.sm_int0 = 0; /* unused */
++      standard_input->sm.sm_int1 = 0; /* unused */
+++     standard_input->sm.sm_flags=0;
++ 
++      standard_output = alloc_object(t_stream);
++      standard_output->sm.sm_mode = (short)smm_output;
++@@ -2578,18 +2520,20 @@ gcl_init_file(void)
++ #endif
++      standard_output->sm.sm_int0 = 0; /* unused */
++      STREAM_FILE_COLUMN(standard_output) = 0;
+++     standard_output->sm.sm_flags=0;
++ 
++      terminal_io = standard
++      = make_two_way_stream(standard_input, standard_output);
++      enter_mark_origin(&terminal_io);
++ 
++      x = alloc_object(t_stream);
++-     x->sm.sm_mode = (short)smm_synonym;
+++     x->sm.sm_mode = (short)smm_file_synonym;
++      x->sm.sm_fp = NULL;
++      x->sm.sm_buffer = 0;
++      x->sm.sm_object0 = sLAterminal_ioA;
++      x->sm.sm_object1 = OBJNULL;
++      x->sm.sm_int0 = x->sm.sm_int1 = 0; /* unused */
+++     x->sm.sm_flags=0;
++      standard_io = x;
++      enter_mark_origin(&standard_io);        
++ 
++@@ -2597,7 +2541,9 @@ gcl_init_file(void)
++ 
++ DEFVAR("*IGNORE-EOF-ON-TERMINAL-IO*",sSAignore_eof_on_terminal_ioA,SI,Cnil,"");
++ DEFVAR("*LOAD-PATHNAME*",sLAload_pathnameA,LISP,Cnil,"");
+++DEFVAR("*LOAD-TRUENAME*",sSAload_truenameA,LISP,Cnil,"");
++ DEFVAR("*LOAD-VERBOSE*",sLAload_verboseA,LISP,Ct,"");
+++DEFVAR("*LOAD-PRINT*",sLAload_printA,LISP,Cnil,"");
++ 
++ DEF_ORDINARY("ABORT",sKabort,KEYWORD,"");
++ DEF_ORDINARY("APPEND",sKappend,KEYWORD,"");
++@@ -2622,6 +2568,7 @@ DEF_ORDINARY("SUPERSEDE",sKsupersede,KEY
++ DEF_ORDINARY("VERBOSE",sKverbose,KEYWORD,"");
++ 
++ 
+++DEF_ORDINARY("DELETE-FILE",sLdelete_file,LISP,"");
++ 
++ 
++ void
++@@ -2673,13 +2620,9 @@ gcl_init_file_function()
++      make_function("STREAM-ELEMENT-TYPE", Lstream_element_type);
++      make_function("CLOSE", Lclose);
++ 
++-     make_function("OPEN", Lopen);
++-
++      make_function("FILE-POSITION", Lfile_position);
++      make_function("FILE-LENGTH", Lfile_length);
++ 
++-     make_function("LOAD", Lload);
++-
++      make_si_function("GET-STRING-INPUT-STREAM-INDEX",
++                       siLget_string_input_stream_index);
++      make_si_function("MAKE-STRING-OUTPUT-STREAM-FROM-STRING",
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -57,7 +57,7 @@ mark_contblock(void *, int);
++    since this is more portable and faster lets use them --W. Schelter
++    These assume that DBEGIN is divisible by 32, or else we should have
++    #define Shamt(x) (((((int) x -DBEGIN) >> 2) & ~(~0 << 5)))
++-*/ 
+++*/
++ #define LOG_BITS_CHAR 3
++ 
++ #if CPTR_SIZE == 8
++@@ -72,7 +72,7 @@ void *
++ cb_in(void *p) {
++   struct contblock **cbpp;
++   int i;
++-  
+++
++   for (cbpp=&cb_pointer,i=0;*cbpp;cbpp=&((*cbpp)->cb_link),i++) {
++     if ((void *)*cbpp<=p && ((void *)(*cbpp)+(*cbpp)->cb_size) >p)
++       return *cbpp;
++@@ -84,7 +84,7 @@ int
++ cb_print(void) {
++   struct contblock **cbpp;
++   int i;
++-  
+++
++   for (cbpp=&cb_pointer,i=0;*cbpp;cbpp=&((*cbpp)->cb_link),i++)
++     emsg("%lu at %p\n",(*cbpp)->cb_size,*cbpp);
++   emsg("%u blocks\n",i);
++@@ -146,7 +146,7 @@ pageinfo_p(void *v) {
++     (!pi->next || (void *)pi->next>=v+(pi->type==t_contiguous ? pi->in_use : 1)*PAGESIZE);
++ 
++ }
++-    
+++
++ static inline char
++ get_bit(char *v,struct pageinfo *pi,void *x) {
++   void *ve=CB_DATA_START(pi);
++@@ -157,16 +157,6 @@ get_bit(char *v,struct pageinfo *pi,void
++   return (v[i]>>s)&0x1;
++ }
++ 
++-/* static inline void */
++-/* set_bit(char *v,struct pageinfo *pi,void *x) { */
++-/*   void *ve=CB_DATA_START(pi); */
++-/*   fixnum off=(x-ve)>>LOG_BYTES_CONTBLOCK,i=off>>LOG_BITS_CHAR,s=off&~(~0UL<<LOG_BITS_CHAR); */
++-/* #ifdef CONTBLOCK_MARK_DEBUG */
++-/*   off_check(v,ve,i,pi); */
++-/* #endif */
++-/*   v[i]|=(1UL<<s); */
++-/* } */
++-
++ #define bit_get(v,i,s) ((v[i]>>s)&0x1)
++ #define bit_set(v,i,s) (v[i]|=(1UL<<s))
++ #define ptr_get(v,i,s) (v+(((i<<LOG_BITS_CHAR)|s)<<LOG_BYTES_CONTBLOCK))
++@@ -226,11 +216,6 @@ get_mark_bit(struct pageinfo *pi,void *x
++   return get_bit(CB_MARK_START(pi),pi,x);
++ }
++ 
++-/* static inline void */
++-/* set_mark_bit(struct pageinfo *pi,void *x) { */
++-/*   set_bit(CB_MARK_START(pi),pi,x); */
++-/* } */
++-
++ static inline void *
++ get_mark_bits(struct pageinfo *pi,void *x) {
++   return get_bits(CB_MARK_START(pi),pi,x);
++@@ -248,11 +233,6 @@ get_sgc_bit(struct pageinfo *pi,void *x)
++   return get_bit(CB_SGCF_START(pi),pi,x);
++ }
++ 
++-/* static inline void */
++-/* set_sgc_bit(struct pageinfo *pi,void *x) { */
++-/*   set_bit(CB_SGCF_START(pi),pi,x); */
++-/* } */
++-
++ static inline void *
++ get_sgc_bits(struct pageinfo *pi,void *x) {
++   return get_bits(CB_SGCF_START(pi),pi,x);
++@@ -438,16 +418,16 @@ mark_leaf_data(object x,void **pp,ufixnu
++   if (!marking(p)||!collecting(p))
++     return;
++ 
++-  if (what_to_collect!=t_contiguous && 
+++  if (what_to_collect!=t_contiguous &&
++       x && x->d.st>=ngc_thresh &&
++       (dp=alloc_contblock_no_gc(s,static_promotion_limit))) {
++-    
+++
++     *pp=memcpy(dp,p,s);
++     x->d.st=0;
++ 
++     return;
++ 
++-  } 
+++  }
++ 
++   if (x && x->d.st<rst.d.st) x->d.st++;
++ 
++@@ -460,7 +440,7 @@ mark_leaf_data(object x,void **pp,ufixnu
++ 
++ static void mark_object1(object);
++ #define mark_object(x) if (marking(x)) mark_object1(x)
++-    
+++
++ static inline void
++ mark_object_address(object *o,int f) {
++ 
++@@ -468,7 +448,7 @@ mark_object_address(object *o,int f) {
++   static ufixnum lr;
++ 
++   ufixnum p=page(o);
++-  
+++
++   if (lp!=p || !f) {
++     lp=p;
++     lr=
++@@ -496,7 +476,7 @@ mark_object_array(object *o,object *oe)
++ 
++ static void
++ mark_object1(object x) {
++-  
+++
++   fixnum i,j=0;/*FIXME*/
++ 
++   if (is_marked_or_free(x))
++@@ -567,7 +547,7 @@ mark_object1(object x) {
++     break;
++     
++   case t_array:
++-    MARK_LEAF_DATA(x,x->a.a_dims,sizeof(int)*x->a.a_rank);
+++    MARK_LEAF_DATA(x,x->a.a_dims,sizeof(*x->a.a_dims)*x->a.a_rank);
++ 
++   case t_vector:
++   case t_bitvector:
++@@ -615,7 +595,7 @@ mark_object1(object x) {
++      x->v.v_self=p;
++      adjust_displaced(x,j);
++       }
++-    } 
+++    }
++     mark_object(x->v.v_displaced);
++     break;
++     
++@@ -627,7 +607,7 @@ mark_object1(object x) {
++       mark_object(x->str.str_def);
++       if (x->str.str_self)
++      for (i=0,j=S_DATA(def)->length;i<j;i++)
++-       if (s_type[i]==0)
+++       if (s_type[i]==aet_object)
++          mark_object_address(&STREF(object,x,s_pos[i]),i);
++       MARK_LEAF_DATA(x,x->str.str_self,S_DATA(def)->size);
++     }
++@@ -646,7 +626,8 @@ mark_object1(object x) {
++      MARK_LEAF_DATA(x,x->sm.sm_buffer,BUFSIZ);
++       }
++       break;
++-    
+++
+++    case smm_file_synonym:
++     case smm_synonym:
++       mark_object(x->sm.sm_object0);
++       break;
++@@ -676,7 +657,7 @@ mark_object1(object x) {
++       error("mark stream botch");
++     }
++     break;
++-    
+++
++   case t_random:
++     MARK_LEAF_DATA_ALIGNED(x,x->rnd.rnd_state._mp_seed->_mp_d,x->rnd.rnd_state._mp_seed->_mp_alloc*MP_LIMB_SIZE,MP_LIMB_SIZE);
++     break;
++@@ -700,6 +681,7 @@ mark_object1(object x) {
++     mark_object(x->pn.pn_name);
++     mark_object(x->pn.pn_type);
++     mark_object(x->pn.pn_version);
+++    mark_object(x->pn.pn_namestring);
++     break;
++     
++   case t_closure:
++@@ -854,24 +836,6 @@ mark_phase(void) {
++   }
++ #endif
++   
++-  /*
++-    if (what_to_collect != t_symbol &&
++-    (int)what_to_collect < (int)t_contiguous) {
++-  */
++-  
++-  /* {int size; */
++-  
++-  /* for (pp = pack_pointer;  pp != NULL;  pp = pp->p_link) { */
++-  /*   size = pp->p_internal_size; */
++-  /*   if (pp->p_internal != NULL) */
++-  /*     for (i = 0;  i < size;  i++) */
++-  /*         mark_object(pp->p_internal[i]); */
++-  /*   size = pp->p_external_size; */
++-  /*   if (pp->p_external != NULL) */
++-  /*     for (i = 0;  i < size;  i++) */
++-  /*         mark_object(pp->p_external[i]); */
++-  /* }} */
++-  
++   /* mark the c stack */
++ #ifndef N_RECURSION_REQD
++ #define N_RECURSION_REQD 2
++@@ -979,15 +943,15 @@ mark_c_stack(jmp_buf env1, int n, void (
++     extern void * __libc_ia64_register_backing_store_base;
++     void * bst=GC_save_regs_in_stack();
++     void * bsb=__libc_ia64_register_backing_store_base;
++-    
+++
++     if (bsb>bst)
++       (*fn)(bsb,bst,C_GC_OFFSET);
++     else
++       (*fn)(bst,bsb,C_GC_OFFSET);
++-    
+++
++   }
++ #endif
++-  
+++
++ }
++ 
++ static void
++@@ -1035,7 +999,7 @@ contblock_sweep_phase(void) {
++   struct pageinfo *v;
++   STATIC char *s, *e, *p, *q;
++   ufixnum i;
++-    
+++
++   reset_contblock_freelist();
++ 
++   for (i=0;i<contblock_array->v.v_fillp && (v=(void *)contblock_array->v.v_self[i]);i++) {
++@@ -1045,7 +1009,7 @@ contblock_sweep_phase(void) {
++ #ifdef SGC
++     if (sgc_enabled && !(v->sgc_flags&SGC_PAGE_FLAG)) continue;
++ #endif
++-    
+++
++     s=CB_DATA_START(v);
++     e=(void *)v+v->in_use*PAGESIZE;
++ 
++@@ -1070,25 +1034,6 @@ contblock_sweep_phase(void) {
++ int (*GBC_enter_hook)() = NULL;
++ int (*GBC_exit_hook)() = NULL;
++ 
++-/* void */
++-/* ttss(void) { */
++-
++-/*   struct typemanager *tm; */
++-/*   void *x,*y; */
++-
++-/*   for (tm=tm_table;tm<tm_table+t_end;tm++) { */
++-
++-/*     for (x=tm->tm_free;x!=OBJNULL;x=(void *)((struct freelist *)x)->f_link) { */
++-/*       if (x==Cnil) */
++-/*   printf("barr\n"); */
++-/*       /\* for (y=(void *)((struct freelist *)x)->f_link;y!=OBJNULL && y!=x;y=(void *)((struct freelist *)y)->f_link); *\/ */
++-/*       /\* if (y==x) *\/ */
++-/*       /\*         printf("circle\n"); *\/ */
++-/*     } */
++-/*   } */
++-
++-/* } */
++-
++ fixnum fault_pages=0;
++ 
++ static ufixnum
++@@ -1102,7 +1047,7 @@ count_contblocks(void) {
++   return ncb;
++   
++ }
++- 
+++
++ 
++ void
++ GBC(enum type t) {
++@@ -1120,7 +1065,7 @@ GBC(enum type t) {
++ 
++   ngc_thresh=fix(sSAleaf_collection_thresholdA->s.s_dbind);
++   recent_allocation=0;
++-  
+++
++   if (in_signal_handler && t == t_relocatable)
++     error("cant gc relocatable in signal handler");
++   
++@@ -1146,7 +1091,6 @@ GBC(enum type t) {
++          close_stream(o);
++      }
++ 
++-    /* t = t_relocatable; */
++     gc_time = -1;
++     }
++ 
++@@ -1265,54 +1209,6 @@ GBC(enum type t) {
++ #endif
++   }
++   
++-
++-/*   { */
++-/*     static int promoting; */
++-/*     if (!promoting && promotion_pointer>promotion_pointer1) { */
++-/*       object *p,st; */
++-/*       promoting=1; */
++-/*       st=alloc_simple_string(""); */
++-/*       for (p=promotion_pointer1;p<promotion_pointer;p++) { */
++-/*   fixnum j; */
++-/*   object x=*p; */
++-     
++-/*   if (type_of(x)==t_string) */
++-
++-/*     j=x->st.st_dim; */
++-
++-/*   else switch (x->v.v_elttype) { */
++-
++-/*     case aet_lf: */
++-/*       j=sizeof(longfloat)*x->v.v_dim; */
++-/*       break; */
++-/*     case aet_bit: */
++-/* #define W_SIZE (8*sizeof(fixnum)) */
++-/*       j=sizeof(fixnum)*((BV_OFFSET(x) + x->bv.bv_dim + W_SIZE -1)/W_SIZE); */
++-/*       break; */
++-/*     case aet_char: */
++-/*     case aet_uchar: */
++-/*       j=sizeof(char)*x->v.v_dim; */
++-/*       break; */
++-/*     case aet_short: */
++-/*     case aet_ushort: */
++-/*       j=sizeof(short)*x->v.v_dim; */
++-/*       break; */
++-/*     default: */
++-/*       j=sizeof(fixnum)*x->v.v_dim; */
++-/*     } */
++-
++-/*   st->st.st_dim=j; */
++-/*   st->st.st_self=alloc_contblock(st->st.st_dim); */
++-/*   fprintf(stderr,"Promoting vector leaf bytes %lu at %p, %p -> %p\n",j,x,x->v.v_self,st->st.st_self); */
++-/*   fflush(stderr); */
++-/*   memcpy(st->st.st_self,x->v.v_self,st->st.st_dim); */
++-/*   x->v.v_self=(void *)st->st.st_self; */
++-/*       } */
++-/*       promoting=0; */
++-/*     } */
++-/*   } */
++-     
++-
++ #ifdef DEBUG
++   if (debug) {
++     int i,j;
++@@ -1361,8 +1257,6 @@ GBC(enum type t) {
++ 
++   CHECK_INTERRUPT;
++ 
++-  /* ttss(); */
++-
++ }
++ 
++ static void
++@@ -1472,7 +1366,7 @@ mark_contblock(void *p, int s) {
++   STATIC char *q;
++   STATIC char *x, *y;
++   struct pageinfo *v;
++-  
+++
++   if (NULL_OR_ON_C_STACK(p))
++     return;
++ 
++@@ -1495,17 +1389,17 @@ DEFUN_NEW("CONTIGUOUS-REPORT",object,fSc
++   ufixnum i,j,k,s;
++   struct typemanager *tm=tm_of(t_cfdata);
++   void *p;
++-  
+++
++   for (i=j=0,cbpp=&cb_pointer;(*cbpp);) {
++     for (k=0,s=(*cbpp)->cb_size,p=*cbpp;*cbpp && (*cbpp)->cb_size==s;i+=(*cbpp)->cb_size,j++,k++,cbpp=&(*cbpp)->cb_link);
++     emsg("%lu %lu starting at %p\n",k,s,p);
++   }
++   emsg("\nTotal free %lu in %lu pieces\n\n",i,j);
++-  
++-  for (i=j=k=0;k<contblock_array->v.v_fillp && (v=(void *)contblock_array->v.v_self[k]);k++,i+=v->in_use,j++) 
+++
+++  for (i=j=k=0;k<contblock_array->v.v_fillp && (v=(void *)contblock_array->v.v_self[k]);k++,i+=v->in_use,j++)
++     emsg("%lu pages at %p\n",(unsigned long)v->in_use,v);
++   emsg("\nTotal pages %lu in %lu pieces\n\n",i,j);
++-  
+++
++   for (i=j=0,v=cell_list_head;v;v=v->next)
++     if (tm->tm_type==v->type) {
++       void *p;
++@@ -1520,7 +1414,7 @@ DEFUN_NEW("CONTIGUOUS-REPORT",object,fSc
++       }
++     }
++   emsg("\nTotal code bytes %lu in %lu pieces\n",i,j);
++-  
+++
++   for (i=j=0,v=cell_list_head;v;v=v->next) {
++     struct typemanager *tm=tm_of(v->type);
++     void *p;
++@@ -1589,15 +1483,13 @@ DEFUN_NEW("CONTIGUOUS-REPORT",object,fSc
++     }
++   }
++   emsg("\nTotal leaf bytes %lu in %lu pieces\n",i,j);
++-  
+++
++   return Cnil;
++ 
++ }
++ 
++ DEFUN_NEW("GBC",object,fSgbc,SI,1,1,NONE,OO,OO,OO,OO,(object x0),"") {
++ 
++-   /* 1 args */
++-  
++   if (x0 == Ct) {
++     tm_table[t_contiguous].tm_adjgbccnt--;
++     GBC(t_other);
++@@ -1644,5 +1536,5 @@ gcl_init_GBC(void) {
++ #ifdef SGC
++   make_si_function("SGC-ON",siLsgc_on);
++ #endif
++-  
+++
++ }
++--- gcl-2.6.12.orig/o/iteration.c
+++++ gcl-2.6.12/o/iteration.c
++@@ -95,7 +95,7 @@ do_var_list(object var_list)
++           
++ 
++ 
++-             if (type_of(x) != t_cons)
+++             if (!consp(x))
++                      FEinvalid_form("The index, ~S, is illegal.", x);
++              y = MMcar(x);
++              check_var(y);
++@@ -326,7 +326,7 @@ FFN(Fdolist)(VOL object arg)
++      }
++ 
++      eval_assign(start->bt_init, listform);
++-     body = find_special(MMcdr(arg), start, start+1);
+++     body = find_special(MMcdr(arg), start, start+1,NULL); /*?*/
++      vs_push(body);
++      bind_var(start->bt_var, Cnil, start->bt_spp);
++      if ((enum stype)start->bt_var->s.s_stype != stp_ordinary)
++@@ -410,7 +410,7 @@ FFN(Fdotimes)(VOL object arg)
++      if (type_of(start->bt_init) != t_fixnum &&
++          type_of(start->bt_init) != t_bignum)
++              FEwrong_type_argument(sLinteger, start->bt_init);
++-     body = find_special(MMcdr(arg), start, start+1);
+++     body = find_special(MMcdr(arg), start, start+1,NULL); /*?*/
++      vs_push(body);
++      bind_var(start->bt_var, make_fixnum(0), start->bt_spp);
++      if ((enum stype)start->bt_var->s.s_stype != stp_ordinary) {
++--- gcl-2.6.12.orig/o/let.c
+++++ gcl-2.6.12/o/let.c
++@@ -151,7 +151,7 @@ FFN(Fmultiple_value_bind)(object form)
++      }
++      {
++       object *vt = vs_top;
++-      vs_push(find_special(body, start, (struct bind_temp *)vt));
+++      vs_push(find_special(body, start, (struct bind_temp *)vt,NULL)); /*?*/
++      }
++      for (i = 0;  i < n;  i++)
++              bind_var(start[i].bt_var,
++@@ -230,7 +230,7 @@ is an illegal function definition in FLE
++              lex_fun_bind(MMcar(def), top[0]);
++              def_list = MMcdr(def_list);
++      }
++-     vs_push(find_special(MMcdr(args), NULL, NULL));
+++     vs_push(find_special(MMcdr(args), NULL, NULL,NULL));
++      Fprogn(vs_head);
++      lex_env = lex;
++ }
++@@ -271,7 +271,7 @@ is an illegal function definition in LAB
++              MMcaar(closure_list) = lex_env[1];
++              closure_list = MMcdr(closure_list);
++      }
++-     vs_push(find_special(MMcdr(args), NULL, NULL));
+++     vs_push(find_special(MMcdr(args), NULL, NULL,NULL));
++      Fprogn(vs_head);
++      lex_env = lex;
++ }
++@@ -304,7 +304,7 @@ is an illegal macro definition in MACROF
++              lex_macro_bind(MMcar(def), MMcaddr(top[0]));
++              def_list = MMcdr(def_list);
++      }
++-     vs_push(find_special(MMcdr(args), NULL, NULL));
+++     vs_push(find_special(MMcdr(args), NULL, NULL,NULL));
++      Fprogn(vs_head);
++      lex_env = lex;
++ }
++--- gcl-2.6.12.orig/o/pathname.d
+++++ gcl-2.6.12/o/pathname.d
++@@ -28,744 +28,93 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #include <string.h>
++ #include "include.h"
++ 
+++DEFUN_NEW("C-SET-T-TT",object,fSc_set_t_tt,SI,2,2,NONE,OO,IO,OO,OO,(object x,fixnum y),"") {
+++  x->d.tt=y;
+++  RETURN1(x);
+++}
+++
+++
+++DEFUN_NEW("C-T-TT",object,fSc_t_tt,SI,1,1,NONE,IO,OO,OO,OO,(object x),"") {
+++  RETURN1((object)(fixnum)x->d.tt);
+++}
+++
+++
+++DEFUN_NEW("C-SET-PATHNAME-NAMESTRING",object,fSc_set_pathname_namestring,SI,2,2,NONE,OO,OO,OO,OO,(object x,object y),"") {
+++  check_type_pathname(&x);
+++  x->pn.pn_namestring=y;
+++  RETURN1(x);
+++}
+++
+++DEFUN_NEW("C-PATHNAME-HOST",object,fSc_pathname_host,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_pathname(&x);
+++  RETURN1(x->pn.pn_host);
+++}
+++DEFUN_NEW("C-PATHNAME-DEVICE",object,fSc_pathname_device,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_pathname(&x);
+++  RETURN1(x->pn.pn_device);
+++}
+++DEFUN_NEW("C-PATHNAME-DIRECTORY",object,fSc_pathname_directory,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_pathname(&x);
+++  RETURN1(x->pn.pn_directory);
+++}
+++DEFUN_NEW("C-PATHNAME-NAME",object,fSc_pathname_name,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_pathname(&x);
+++  RETURN1(x->pn.pn_name);
+++}
+++DEFUN_NEW("C-PATHNAME-TYPE",object,fSc_pathname_type,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_pathname(&x);
+++  RETURN1(x->pn.pn_type);
+++}
+++DEFUN_NEW("C-PATHNAME-VERSION",object,fSc_pathname_version,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_pathname(&x);
+++  RETURN1(x->pn.pn_version);
+++}
+++DEFUN_NEW("C-PATHNAME-NAMESTRING",object,fSc_pathname_namestring,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_pathname(&x);
+++  RETURN1(x->pn.pn_namestring);
+++}
++ 
++-object
++-make_pathname(host, device, directory, name, type, version)
++-object host, device, directory, name, type, version;
++-{
++-     object x;
++-
++-     x = alloc_object(t_pathname);
++-     x->pn.pn_host = host;
++-     x->pn.pn_device = device;
++-     x->pn.pn_directory = directory;
++-     x->pn.pn_name = name;
++-     x->pn.pn_type = type;
++-     x->pn.pn_version = version;
++-     return(x);
++-}
++-
++-static void
++-make_one(s, end)
++-char *s;
++-int end;
++-{
++-     int i;
++-
++-#ifdef UNIX
++-     for (i = 0;  i < end;  i++)
++-             token->st.st_self[i] = s[i];
++-#endif
++-#ifdef AOSVS
++-
++-
++-
++-#endif
++-     token->st.st_fillp = end;
++-     vs_push(copy_simple_string(token));
++-}
++-
++-/* The function below does not attempt to handle DOS pathnames 
++-   which use backslashes as directory separators.  It needs 
++-   TLC from someone who feels pedantic. MJT */
++-
++-/* !!!!! Bug Fix. NLG */
++-object
++-parse_namestring(s, start, end, ep)
++-object s;
++-int start, end, *ep;
++-{
++-     int i, j, k, founddosdev = FALSE, oldstart=start, oldend=end, justdevice = FALSE;
++-     int d;
++-     object *vsp;
++-     object x;
++-     vs_mark;
++-
++-#ifndef IS_DIR_SEPARATOR
++-#define IS_DIR_SEPARATOR(x) (x == '/')
++-#endif
++-
++-     *ep=oldend;
++-     vsp = vs_top + 1;
++-     for (;--end >= start && isspace((int)s->st.st_self[end]););
++-
++-     /* Check for a DOS path and process later */
++-     if ( ( (start+1) <= end) &&  (s->st.st_self[start+1] == ':' )) {
++-         start+=2;
++-         founddosdev = TRUE;
++-        }
++-        if ( start > end ) {
++-         make_one(&s->st.st_self[0], 0);
++-         justdevice = TRUE;
++-     } else {
++-         for (i = j = start;  i <= end;  ) {
++-#ifdef UNIX
++-             if (IS_DIR_SEPARATOR(s->st.st_self[i])) {
++-#endif
++-                     if (j == start && i == start) {
++-                             i++;
++-                             vs_push(sKroot);
++-                             j = i;
++-                             continue;
++-                     }
++-#ifdef UNIX
++-                     if (i-j == 1 && s->st.st_self[j] == '.') {
++-                             vs_push(sKcurrent);
++-                     } else if (i-j == 1 && s->st.st_self[j] == '*') {
++-                             vs_push(sKwild);
++-                     } else if (i-j==2 && s->st.st_self[j]=='.' && s->st.st_self[j+1]=='.') {
++-                             vs_push(sKparent);
++-                     } else {
++-                             make_one(&s->st.st_self[j], i-j);
++-                        }
++-#endif
++-                     i++;
++-                     j = i;
++-             } else {
++-                     i++;
++-             }
++-         }
++-         *ep = i;
++-         vs_push(Cnil);
++-         while (vs_top > vsp)
++-             stack_cons();
++-         if (i == j) {
++-             /*  no file and no type  */
++-             vs_push(Cnil);
++-             vs_push(Cnil);
++-             goto L;
++-         }
++-         for (k = j, d = -1;  k < i;  k++)
++-             if (s->st.st_self[k] == '.')
++-                     d = k;
++-         if (d == -1) {
++-             /*  no file type  */
++-#ifdef UNIX
++-             if (i-j == 1 && s->st.st_self[j] == '*')
++-#endif
++-                     vs_push(sKwild);
++-             else
++-                     make_one(&s->st.st_self[j], i-j);
++-             
++-             vs_push(Cnil);
++-         } else if (d == j) {
++-             /*  no file name  */
++-             vs_push(Cnil);
++-#ifdef UNIX
++-             if (i-d-1 == 1 && s->st.st_self[d+1] == '*')
++-#endif
++-                     vs_push(sKwild);
++-             else
++-                     make_one(&s->st.st_self[d+1], i-d-1);
++-         } else {
++-             /*  file name and file type  */
++-#ifdef UNIX
++-             if (d-j == 1 && s->st.st_self[j] == '*')
++-#endif
++-                     vs_push(sKwild);
++-             else {
++-                     make_one(&s->st.st_self[j], d-j);
++-                  }
++-#ifdef UNIX
++-             if (i-d-1 == 1 && s->st.st_self[d+1] == '*')
++-#endif
++-                     vs_push(sKwild);
++-             else
++-                     make_one(&s->st.st_self[d+1], i-d-1);
++-         }
++-        }
++-L:
++-     /* Process DOS device name found earlier, build a string in a list and push it */
++-     if ( founddosdev ) {
++-         /* Drive letter */
++-         token->st.st_self[0] = s->st.st_self[oldstart];
++-         /* Colon */
++-         token->st.st_self[1] = s->st.st_self[oldstart+1];
++-         /* Fill pointer */
++-         token->st.st_fillp = 2;
++-         /* Push */
++-         vs_push(make_cons(copy_simple_string(token),Cnil));
++-     } else {
++-         /* No device name */
++-         vs_push(Cnil);
++-     }
++-     if ( justdevice ) {
++-         x = make_pathname ( Cnil, vs_top[-1], Cnil, Cnil, Cnil, Cnil );
++-     } else {
++-         x = make_pathname ( Cnil, vs_top[-1], vs_top[-4], vs_top[-3], vs_top[-2], Cnil );
++-     }
++-     vs_reset;
++-     return(x);
++-}
++-
++-object
++-coerce_to_pathname(x)
++-object x;
++-{
++-     object y;
++-     int e;
++-
++-L:
++-     switch (type_of(x)) {
++-     case t_symbol:
++-     case t_string:
++-                /* !!!!! Bug Fix. NLG */
++-             y = parse_namestring(x, 0, x->st.st_fillp, &e);
++-             if (y == OBJNULL || e != x->st.st_fillp)
++-                     goto CANNOT_COERCE;
++-             return(y);
++-
++-     case t_pathname:
++-             return(x);
++-
++-     case t_stream:
++-             switch (x->sm.sm_mode) {
++-             case smm_input:
++-             case smm_output:
++-             case smm_probe:
++-             case smm_io:
++-                     x = x->sm.sm_object1;
++-                     /*
++-                             The file was stored in sm.sm_object1.
++-                             See open.
++-                     */
++-                     goto L;
++-
++-             case smm_synonym:
++-                     x = symbol_value(x->sm.sm_object0);
++-                     goto L;
++-
++-             default:
++-                     goto CANNOT_COERCE;
++-             }
++-
++-     default:
++-     CANNOT_COERCE:
++-             FEerror("~S cannot be coerced to a pathname.", 1, x);
++-             return(Cnil);
++-     }
++-}
++-
++-static object
++-default_device(host)
++-object host;
++-{
++-     return(Cnil);
++-     /*  not implemented yet  */
++-}
++-
++-object
++-merge_pathnames(path, defaults, default_version)
++-object path, defaults, default_version;
++-{
++-     object host, device, directory, name, type, version;
++-
++-     if (path->pn.pn_host == Cnil)
++-             host = defaults->pn.pn_host;
++-     else
++-             host = path->pn.pn_host;
++-     if (path->pn.pn_device == Cnil)
++-             if (path->pn.pn_host == Cnil)
++-                     device = defaults->pn.pn_device;
++-             else if (path->pn.pn_host == defaults->pn.pn_host)
++-                     device = defaults->pn.pn_device;
++-             else
++-                     device = default_device(path->pn.pn_host);
++-     else
++-             device = path->pn.pn_device;
++-
++-     if (defaults->pn.pn_directory==Cnil || 
++-        (type_of(path->pn.pn_directory)==t_cons
++-         && path->pn.pn_directory->c.c_car==sKroot))
++-             directory=path->pn.pn_directory;
++-     else 
++-       directory=path->pn.pn_directory==Cnil ? 
++-         defaults->pn.pn_directory :
++-         append(defaults->pn.pn_directory,path->pn.pn_directory);
++-
++-     if (path->pn.pn_name == Cnil)
++-             name = defaults->pn.pn_name;
++-     else
++-             name = path->pn.pn_name;
++-     if (path->pn.pn_type == Cnil)
++-             type = defaults->pn.pn_type;
++-     else
++-             type = path->pn.pn_type;
++-     version = Cnil;
++-     /*
++-             In this implimentation, version is not counted
++-     */
++-     return(make_pathname(host,device,directory,name,type,version));
++-}
++-
++-/*
++-     Namestring(x) converts a pathname to a namestring.
++-*/
++-object
++-namestring(x)
++-object x;
++-{
++-
++-     int i, j;
++-     object l, y;
++-
++-     i = 0;
++-
++-     l = x->pn.pn_device;
++-     if (endp(l)) {
++-             goto D;
++-     }
++-     y = l->c.c_car;
++-     y = coerce_to_string(y);
++-     for (j = 0;  j < y->st.st_fillp;  j++) {
++-         token->st.st_self[i++] = y->st.st_self[j];
++-     }
++-
++-D:   l = x->pn.pn_directory;
++-     if (endp(l))
++-             goto L;
++-     y = l->c.c_car;
++-     if (y == sKroot) {
++-#ifdef UNIX
++-             token->st.st_self[i++] = '/';
++-#endif
++-             l = l->c.c_cdr;
++-     }
++-     for (;  !endp(l);  l = l->c.c_cdr) {
++-             y = l->c.c_car;
++-#ifdef UNIX
++-             if (y == sKcurrent) {
++-                     token->st.st_self[i++] = '.';
++-                     token->st.st_self[i++] = '/';
++-                     continue;
++-             } else if (y == sKwild) {
++-                     token->st.st_self[i++] = '*';
++-                     token->st.st_self[i++] = '/';
++-                     continue;
++-             } else if (y == sKparent) {
++-                     token->st.st_self[i++] = '.';
++-                     token->st.st_self[i++] = '.';
++-                     token->st.st_self[i++] = '/';
++-                     continue;
++-             }
++-#endif
++-             y = coerce_to_string(y);
++-             for (j = 0;  j < y->st.st_fillp;  j++)
++-                     token->st.st_self[i++]
++-                     = y->st.st_self[j];
++-#ifdef UNIX
++-             token->st.st_self[i++] = '/';
++-#endif
++-#ifdef AOSVS
++-
++-#endif
++-     }
++-L:
++-     y = x->pn.pn_name;
++-     if (y == Cnil)
++-             goto M;
++-     if (y == sKwild) {
++-#ifdef UNIX
++-             token->st.st_self[i++] = '*';
++-#endif
++-#ifdef AOSVS
++-
++-#endif
++-             goto M;
++-     }
++-     if (type_of(y) != t_string)
++-             FEerror("~S is an illegal pathname name.", 1, y);
++-     for (j = 0;  j < y->st.st_fillp;  j++)
++-             token->st.st_self[i++] = y->st.st_self[j];
++-M:
++-     y = x->pn.pn_type;
++-     if (y == Cnil)
++-             goto N;
++-     if (y == sKwild) {
++-             token->st.st_self[i++] = '.';
++-#ifdef UNIX
++-             token->st.st_self[i++] = '*';
++-#endif
++-#ifdef AOSVS
++-
++-#endif
++-             goto N;
++-     }
++-     if (type_of(y) != t_string)
++-             FEerror("~S is an illegal pathname name.", 1, y);
++-     token->st.st_self[i++] = '.';
++-     for (j = 0;  j < y->st.st_fillp;  j++)
++-             token->st.st_self[i++] = y->st.st_self[j];
++-N:
++-     token->st.st_fillp = i;
++-#ifdef FIX_FILENAME
++-        {char buf[MAXPATHLEN];
++-         if (i > MAXPATHLEN-1) i =MAXPATHLEN-1;
++-         memcpy(buf,token->st.st_self,i);
++-         buf[i]=0;
++-         FIX_FILENAME(x,buf);
++-         return (make_simple_string(buf));
++-         }
++-#endif
++-     return(copy_simple_string(token));
++-}
++-
++-object
++-coerce_to_namestring(x)
++-object x;
++-{
++-
++-L:
++-     switch (type_of(x)) {
++-     case t_symbol:
++-     {BEGIN_NO_INTERRUPT;
++-             vs_push(alloc_simple_string(x->s.s_fillp));
++-             /* By Nick Gall */
++-             vs_head->st.st_self = alloc_relblock(x->s.s_fillp);
++-             {
++-                     int i;
++-                     for (i = 0;  i < x->s.s_fillp;  i++)
++-                             vs_head->st.st_self[i] = x->s.s_self[i];
++-             }
++-     END_NO_INTERRUPT;}
++-                return(vs_pop);
++-
++-     case t_string:
++-             return(x);
++-
++-     case t_pathname:
++-             return(namestring(x));
++-
++-     case t_stream:
++-             switch (x->sm.sm_mode) {
++-             case smm_input:
++-             case smm_output:
++-             case smm_probe:
++-             case smm_io:
++-                     x = x->sm.sm_object1;
++-                     /*
++-                             The file was stored in sm.sm_object1.
++-                             See open.
++-                     */
++-                     goto L;
++-
++-             case smm_synonym:
++-                     x = symbol_value(x->sm.sm_object0);
++-                     goto L;
++-
++-             default:
++-                     goto CANNOT_COERCE;
++-             }
++-
++-     default:
++-     CANNOT_COERCE:
++-             FEerror("~S cannot be coerced to a namestring.", 1, x);
++-             return(Cnil);
++-     }
++-}
++-
++-LFD(Lpathname)(void)
++-{
++-     check_arg(1);
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-}
++-
++-@(defun parse_namestring (thing
++-     &o host
++-        (defaults `symbol_value(Vdefault_pathname_defaults)`)
++-     &k start end junk_allowed
++-     &a x y)
++-     int s, e, ee;
++-@
++-     check_type_or_pathname_string_symbol_stream(&thing);
++-     check_type_or_pathname_string_symbol_stream(&defaults);
++-     defaults = coerce_to_pathname(defaults);
++-     x = thing;
++-L:
++-     switch (type_of(x)) {
++-     case t_symbol:
++-     case t_string:
++-             get_string_start_end(x, start, end, &s, &e);
++-             for (;  s < e && isspace((int)x->st.st_self[s]);  s++)
++-                     ;
++-             y
++-                  /* !!!!! Bug Fix. NLG */
++-             = parse_namestring(x,
++-                                   s,
++-                                e - s,
++-                                &ee);
++-             if (junk_allowed == Cnil) {
++-                     for (;  ee < e - s;  ee++)
++-                             if (!isspace((int)x->st.st_self[s + ee]))
++-                                     break;
++-                     if (y == OBJNULL || ee != e - s)
++-                             FEerror("Cannot parse the namestring ~S~%\
++-from ~S to ~S.",
++-                                     3, x, start, end);
++-             } else
++-                     if (y == OBJNULL)
++-                             @(return Cnil `make_fixnum(s + ee)`)
++-             start = make_fixnum(s + ee);
++-             break;
++-
++-     case t_pathname:
++-             y = x;
++-             break;
++-
++-     case t_stream:
++-             switch (x->sm.sm_mode) {
++-             case smm_input:
++-             case smm_output:
++-             case smm_probe:
++-             case smm_io:
++-                     x = x->sm.sm_object1;
++-                     /*
++-                             The file was stored in sm.sm_object1.
++-                             See open.
++-                     */
++-                     goto L;
++-
++-             case smm_synonym:
++-                     x = symbol_value(x->sm.sm_object0);
++-                     goto L;
++-
++-             default:
++-                     goto CANNOT_PARSE;
++-             }
++-
++-     default:
++-     CANNOT_PARSE:
++-             FEerror("Cannot parse the namestring ~S.", 1, x);
++-     }
++-     if (host != Cnil && y->pn.pn_host != Cnil &&
++-         host != y->pn.pn_host)
++-             FEerror("The hosts ~S and ~S do not match.",
++-                     2, host, y->pn.pn_host);
++-     @(return y start)
++-@)
++-
++-@(defun merge_pathnames (path
++-     &o (defaults `symbol_value(Vdefault_pathname_defaults)`)
++-        (default_version sKnewest))
++-@
++-     check_type_or_pathname_string_symbol_stream(&path);
++-     check_type_or_pathname_string_symbol_stream(&defaults);
++-     path = coerce_to_pathname(path);
++-     defaults = coerce_to_pathname(defaults);
++-     @(return `merge_pathnames(path, defaults, default_version)`)
++-@)
++-
++-@(defun make_pathname (&key
++-        (host `Cnil` host_supplied_p)
++-     (device `Cnil` device_supplied_p)
++-     (directory `Cnil` directory_supplied_p)
++-     (name `Cnil` name_supplied_p)
++-     (type `Cnil` type_supplied_p)
++-     (version `Cnil` version_supplied_p)
++-     defaults
++-                    &aux x)
++-@
++-     if ( defaults == Cnil ) {
++-             defaults = symbol_value ( Vdefault_pathname_defaults );
++-             defaults = coerce_to_pathname ( defaults );
++-             defaults = make_pathname ( defaults->pn.pn_host,
++-                              Cnil, Cnil, Cnil, Cnil, Cnil);
++-     } else {
++-             defaults = coerce_to_pathname(defaults);
++-        }
++-     x = make_pathname(host, device, directory, name, type, version);
++-     x = merge_pathnames(x, defaults, Cnil);
++-        if ( host_supplied_p) x->pn.pn_host = host;
++-     if (device_supplied_p) x->pn.pn_device = device;
++-     if (directory_supplied_p) x->pn.pn_directory = directory;
++-     if (name_supplied_p) x->pn.pn_name = name;
++-     if (type_supplied_p) x->pn.pn_type = type;
++-     if (version_supplied_p) x->pn.pn_version = version;
++-     @(return x)
++-@)
++-
++-LFD(Lpathnamep)(void)
++-{
++-     check_arg(1);
++-
++-     if (type_of(vs_base[0]) == t_pathname)
++-             vs_base[0] = Ct;
++-     else
++-             vs_base[0] = Cnil;
++-}
++-
++-LFD(Lpathname_host)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0] = vs_base[0]->pn.pn_host;
++-}
++-
++-LFD(Lpathname_device)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0] = vs_base[0]->pn.pn_device;
++-}
++-
++-LFD(Lpathname_directory)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0] = vs_base[0]->pn.pn_directory;
++-}
++-
++-LFD(Lpathname_name)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0] = vs_base[0]->pn.pn_name;
++-}
++-
++-LFD(Lpathname_type)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0] = vs_base[0]->pn.pn_type;
++-}
++-
++-LFD(Lpathname_version)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0] = vs_base[0]->pn.pn_version;
++-}
++-
++-LFD(Lnamestring)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_namestring(vs_base[0]);
++-}
++-
++-LFD(Lfile_namestring)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0]
++-     = make_pathname(Cnil, Cnil, Cnil,
++-                     vs_base[0]->pn.pn_name,
++-                     vs_base[0]->pn.pn_type,
++-                     vs_base[0]->pn.pn_version);
++-     vs_base[0] = namestring(vs_base[0]);
++-}
++-
++-LFD(Ldirectory_namestring)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0]
++-     = make_pathname(Cnil, Cnil,
++-                     vs_base[0]->pn.pn_directory,
++-                     Cnil, Cnil, Cnil);
++-     vs_base[0] = namestring(vs_base[0]);
++-}
++-
++-LFD(Lhost_namestring)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0] = vs_base[0]->pn.pn_host;
++-     if (vs_base[0] == Cnil || vs_base[0] == sKwild)
++-             vs_base[0] = make_simple_string("");
++-}
++-
++-@(defun enough_namestring (path
++-     &o (defaults `symbol_value(Vdefault_pathname_defaults)`))
++-@
++-     check_type_or_pathname_string_symbol_stream(&path);
++-     check_type_or_pathname_string_symbol_stream(&defaults);
++-     defaults = coerce_to_pathname(defaults);
++-     path = coerce_to_pathname(path);
++-     path
++-     = make_pathname(equalp(path->pn.pn_host, defaults->pn.pn_host) ?
++-                     Cnil : path->pn.pn_host,
++-                     equalp(path->pn.pn_device,
++-                            defaults->pn.pn_device) ?
++-                     Cnil : path->pn.pn_device,
++-                     equalp(path->pn.pn_directory,
++-                            defaults->pn.pn_directory) ?
++-                     Cnil : path->pn.pn_directory,
++-                     equalp(path->pn.pn_name, defaults->pn.pn_name) ?
++-                     Cnil : path->pn.pn_name,
++-                     equalp(path->pn.pn_type, defaults->pn.pn_type) ?
++-                     Cnil : path->pn.pn_type,
++-                     equalp(path->pn.pn_version,
++-                            defaults->pn.pn_version) ?
++-                     Cnil : path->pn.pn_version);
++-     @(return `namestring(path)`)
++-@)
+++
+++DEFUN_NEW("C-STREAM-OBJECT0",object,fSc_stream_object0,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(x->sm.sm_object0);
+++}
+++
+++DEFUN_NEW("C-STREAM-OBJECT1",object,fSc_stream_object1,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(x->sm.sm_object1);
+++}
+++
+++DEFUN_NEW("C-SET-STREAM-OBJECT1",object,fSc_set_stream_object1,SI,2,2,NONE,OO,OO,OO,OO,(object x,object y),"") {
+++  x->sm.sm_object1=y;
+++  RETURN1(x);
+++}
+++
+++DEFUN_NEW("INIT-PATHNAME",object,fSinit_pathname,SI,7,7,NONE,OO,OO,OO,OO,
+++      (object host,object device,object directory,object name,object type,object version,object namestring),"") {
+++
+++  object x=alloc_object(t_pathname);
+++
+++  x->pn.pn_host=host;
+++  x->pn.pn_device=device;
+++  x->pn.pn_directory=directory;
+++  x->pn.pn_name=name;
+++  x->pn.pn_type=type;
+++  x->pn.pn_version=version;
+++  x->pn.pn_namestring=namestring;
+++
+++  RETURN1(x);
+++
+++}
+++
+++DEFUN_NEW("PATHNAMEP",object,fLpathnamep,LISP,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(type_of(x)==t_pathname ? Ct : Cnil);
+++}
++ 
++ void
++-gcl_init_pathname(void)
++-{
++-     Vdefault_pathname_defaults =
++-     make_special("*DEFAULT-PATHNAME-DEFAULTS*",
++-                  make_pathname(Cnil, Cnil, Cnil, Cnil, Cnil, Cnil));
++-
++-     sKwild = make_keyword("WILD");
++-     sKnewest = make_keyword("NEWEST");
++-
++-     sKstart = make_keyword("START");
++-     sKend = make_keyword("END");
++-     sKjunk_allowed = make_keyword("JUNK-ALLOWED");
++-
++-     sKhost = make_keyword("HOST");
++-     sKdevice = make_keyword("DEVICE");
++-     sKdirectory = make_keyword("DIRECTORY");
++-     sKname = make_keyword("NAME");
++-     sKtype = make_keyword("TYPE");
++-     sKversion = make_keyword("VERSION");
++-     sKdefaults = make_keyword("DEFAULTS");
++-
++-     sKroot = make_keyword("ROOT");
++-     sKcurrent = make_keyword("CURRENT");
++-     sKparent = make_keyword("PARENT");
++-     sKper = make_keyword("PER");
+++gcl_init_pathname(void) {
+++
++ }
++ 
++ void
++-gcl_init_pathname_function()
++-{
++-     make_function("PATHNAME", Lpathname);
++-     make_function("PARSE-NAMESTRING", Lparse_namestring);
++-     make_function("MERGE-PATHNAMES", Lmerge_pathnames);
++-     make_function("MAKE-PATHNAME", Lmake_pathname);
++-     make_function("PATHNAMEP", Lpathnamep);
++-     make_function("PATHNAME-HOST", Lpathname_host);
++-     make_function("PATHNAME-DEVICE", Lpathname_device);
++-     make_function("PATHNAME-DIRECTORY", Lpathname_directory);
++-     make_function("PATHNAME-NAME", Lpathname_name);
++-     make_function("PATHNAME-TYPE", Lpathname_type);
++-     make_function("PATHNAME-VERSION", Lpathname_version);
++-     make_function("NAMESTRING", Lnamestring);
++-     make_function("FILE-NAMESTRING", Lfile_namestring);
++-     make_function("DIRECTORY-NAMESTRING", Ldirectory_namestring);
++-     make_function("HOST-NAMESTRING", Lhost_namestring);
++-     make_function("ENOUGH-NAMESTRING", Lenough_namestring);
+++gcl_init_pathname_function(void) {
+++
++ }
++--- gcl-2.6.12.orig/o/predicate.c
+++++ gcl-2.6.12/o/predicate.c
++@@ -29,6 +29,10 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #include <string.h>
++ #include "include.h"
++ 
+++DEFUN_NEW("PATHNAME-DESIGNATORP",object,fSpathname_designatorp,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  RETURN1(pathname_designatorp(x) ? Ct : Cnil);
+++}
+++
++ DEFUNO_NEW("NULL",object,fLnull,LISP
++        ,1,1,NONE,OO,OO,OO,OO,void,Lnull,(object x0),"")
++ {
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -1260,6 +1260,7 @@ int level;
++                      write_ch('>');
++                      break;
++ 
+++             case smm_file_synonym:
++              case smm_synonym:
++                      write_str("#<synonym stream to ");
++                      write_object(x->sm.sm_object0, level);
++@@ -1381,7 +1382,7 @@ int level;
++              if (1 || PRINTescape) {
++                      write_ch('#');
++                      write_ch('p');
++-                     vs_push(namestring(x));
+++                     vs_push(x->pn.pn_namestring==Cnil ? make_simple_string("") : x->pn.pn_namestring);
++                      write_object(vs_head, level);
++                      vs_popp;
++              } else {
++--- gcl-2.6.12.orig/o/read.d
+++++ gcl-2.6.12/o/read.d
++@@ -1564,38 +1564,6 @@ Ldefault_dispatch_macro()
++ }
++ 
++ /*
++-     #p" ... " returns the pathname with namestring ... .
++-*/
++-static void
++-Lsharp_p_reader()
++-{
++-     check_arg(3);
++-     if (vs_base[2] != Cnil && !READsuppress)
++-             extra_argument('p');
++-     vs_popp;
++-     vs_popp;
++-     vs_base[0] = read_object(vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-}
++-
++-/*
++-     #" ... " returns the pathname with namestring ... .
++-*/
++-static void
++-Lsharp_double_quote_reader()
++-{
++-     check_arg(3);
++-
++-     if (vs_base[2] != Cnil && !READsuppress)
++-             extra_argument('"');
++-     vs_popp;
++-     unread_char(vs_base[1], vs_base[0]);
++-     vs_popp;
++-     vs_base[0] = read_object(vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-}
++-
++-/*
++      #$ fixnum returns a random-state with the fixnum
++      as its content.
++ */
++@@ -2369,9 +2337,6 @@ gcl_init_read()
++      dtab['<'] = make_cf(Lsharp_less_than_reader);
++ */
++      dtab['|'] = make_cf(Lsharp_vertical_bar_reader);
++-     dtab['"'] = make_cf(Lsharp_double_quote_reader);
++-     dtab['p'] = make_cf(Lsharp_p_reader);
++-     dtab['P'] = make_cf(Lsharp_p_reader);
++      /*  This is specific to this implimentation  */
++      dtab['$'] = make_cf(Lsharp_dollar_reader);
++      /*  This is specific to this implimentation  */
++--- gcl-2.6.12.orig/o/regexp.c
+++++ gcl-2.6.12/o/regexp.c
++@@ -117,7 +117,7 @@ min_initial_branch_length(regexp *, unsi
++ #define      PLUS    11      /* node Match this (simple) thing 1 or more times. */
++ #define      OPEN    20      /* no   Mark this point in input as start of #n. */
++                      /*      OPEN+1 is number 1, etc. */
++-#define      CLOSE   30      /* no   Analogous to OPEN. */
+++#define      CLOSE   (OPEN+NSUBEXP)  /* no   Analogous to OPEN. */
++ 
++ /*
++  * Opcode notes:
++@@ -1083,15 +1083,8 @@ regmatch(char *prog)
++                      break;
++              case BACK:
++                      break;
++-             case OPEN+1:
++-             case OPEN+2:
++-             case OPEN+3:
++-             case OPEN+4:
++-             case OPEN+5:
++-             case OPEN+6:
++-             case OPEN+7:
++-             case OPEN+8:
++-             case OPEN+9: {
+++             case OPEN+1 ... OPEN+NSUBEXP-1:
+++               {
++                              register int no;
++                              register char *save;
++ 
++@@ -1112,15 +1105,8 @@ regmatch(char *prog)
++                      }
++                      /* NOTREACHED */
++                      break;
++-             case CLOSE+1:
++-             case CLOSE+2:
++-             case CLOSE+3:
++-             case CLOSE+4:
++-             case CLOSE+5:
++-             case CLOSE+6:
++-             case CLOSE+7:
++-             case CLOSE+8:
++-             case CLOSE+9: {
+++             case CLOSE+1 ... CLOSE+NSUBEXP-1:
+++               {
++                              register int no;
++                              register char *save;
++ 
++@@ -1394,27 +1380,11 @@ char *op;
++      case END:
++              p = "END";
++              break;
++-     case OPEN+1:
++-     case OPEN+2:
++-     case OPEN+3:
++-     case OPEN+4:
++-     case OPEN+5:
++-     case OPEN+6:
++-     case OPEN+7:
++-     case OPEN+8:
++-     case OPEN+9:
+++     case OPEN+1 ... OPEN+NSUBEXP-1:
++              sprintf(buf+strlen(buf), "OPEN%d", OP(op)-OPEN);
++              p = NULL;
++              break;
++-     case CLOSE+1:
++-     case CLOSE+2:
++-     case CLOSE+3:
++-     case CLOSE+4:
++-     case CLOSE+5:
++-     case CLOSE+6:
++-     case CLOSE+7:
++-     case CLOSE+8:
++-     case CLOSE+9:
+++     case CLOSE+1 ... CLOSE+NSUBEXP-1:
++              sprintf(buf+strlen(buf), "CLOSE%d", OP(op)-CLOSE);
++              p = NULL;
++              break;
++--- gcl-2.6.12.orig/o/regexp.h
+++++ gcl-2.6.12/o/regexp.h
++@@ -1,7 +1,7 @@
++ #ifndef _REGEXP
++ #define _REGEXP 1
++ 
++-#define NSUBEXP  10
+++#define NSUBEXP  19
++ typedef struct regexp {
++      char *startp[NSUBEXP];
++      char *endp[NSUBEXP];
++--- gcl-2.6.12.orig/o/regexpr.c
+++++ gcl-2.6.12/o/regexpr.c
++@@ -81,6 +81,7 @@ DEFUN_NEW("COMPILE-REGEXP",object,fScomp
++   res->v.v_elttype=aet_uchar;
++   res->v.v_adjustable=0;
++   res->v.v_offset=0;
+++  res->v.v_self=NULL;
++   if (!(res->v.v_self=(void *)regcomp(tmp,&res->v.v_dim)))
++     FEerror("regcomp failure",0);
++   res->v.v_fillp=res->v.v_dim;
++--- gcl-2.6.12.orig/o/run_process.c
+++++ gcl-2.6.12/o/run_process.c
++@@ -177,10 +177,12 @@ void run_process ( char *name )
++     stream_in->sm.sm_mode = smm_input;
++     stream_in->sm.sm_fp = ofp;
++     stream_in->sm.sm_buffer = 0;
+++    stream_in->sm.sm_flags=0;
++     stream_out = (object) alloc_object(t_stream);
++     stream_out->sm.sm_mode = smm_output;
++     stream_out->sm.sm_fp = ifp;
++     stream_out->sm.sm_buffer = 0;
+++    stream_out->sm.sm_flags=0;
++     setup_stream_buffer ( stream_in );
++     setup_stream_buffer ( stream_out );
++     stream = make_two_way_stream ( stream_in, stream_out );
++@@ -433,6 +435,7 @@ enum smmode smm;
++      stream->sm.sm_object0 = sLcharacter;
++      stream->sm.sm_object1 = host_l;
++      stream->sm.sm_int0 = stream->sm.sm_int1 = 0;
+++     stream->sm.sm_flags=0;
++      vs_push(stream);
++      setup_stream_buffer(stream);
++      vs_reset;
++@@ -503,6 +506,7 @@ make_socket_pair()
++   stream_in->sm.sm_int0 = sockets_in[1];
++   stream_in->sm.sm_int1 = 0;
++   stream_in->sm.sm_object0=stream_in->sm.sm_object1=OBJNULL;
+++  stream_in->sm.sm_flags = 0;
++   stream_out = (object) alloc_object(t_stream);
++   stream_out->sm.sm_mode = smm_output;
++   stream_out->sm.sm_fp = fp2;
++@@ -511,6 +515,7 @@ make_socket_pair()
++   setup_stream_buffer(stream_out);
++   stream_out->sm.sm_int0 = sockets_out[1];
++   stream_out->sm.sm_int1 = 0;
+++  stream_out->sm.sm_flags = 0;
++   stream_out->sm.sm_object0=stream_out->sm.sm_object1=OBJNULL;
++   stream = make_two_way_stream(stream_in, stream_out);
++   return(stream);
++--- gcl-2.6.12.orig/o/sfaslcoff.c
+++++ gcl-2.6.12/o/sfaslcoff.c
++@@ -151,6 +151,16 @@ find_init_address(struct syment *sym,str
++ 
++ }    
++ 
+++static ul
+++get_sym_value(const char *name) {
+++
+++  struct node *answ;
+++
+++  return (answ=find_sym_ptable(name)) ? answ->address :
+++    ({massert(!emsg("Unrelocated non-local symbol: %s\n",name));0;});
+++
+++}
+++
++ static void
++ relocate_symbols(struct syment *sym,struct syment *sye,struct scnhdr *sec1,char *st1) {
++ 
++@@ -163,22 +173,10 @@ relocate_symbols(struct syment *sym,stru
++ 
++     else if (!sym->n_scnum) {
++ 
++-      char c=0,*s;
++-
++-      if (sym->n.n.n_zeroes) {
++-     c=sym->n.n_name[8];
++-     sym->n.n_name[8]=0;
++-     s=sym->n.n_name;
++-      } else
++-     s=st1+sym->n.n.n_offset;
++-
++-      if ((answ=find_sym_ptable(s))) 
++-     sym->n_value=answ->address;
+++      if (sym->n.n.n_zeroes)
+++     STOP(sym->n.n_name,sym->n_value=get_sym_value(sym->n.n_name));
++       else
++-     massert(!emsg("Unrelocated non-local symbol: %s\n",s));
++-
++-      if (c)
++-     sym->n.n_name[8]=c;
+++     sym->n_value=get_sym_value(st1+sym->n.n.n_offset);
++ 
++     }
++ 
++@@ -391,13 +389,11 @@ fasload(object faslfile) {
++   struct reloc *rel,*rele;
++   object memory, data;
++   FILE *fp;
++-  char filename[MAXPATHLEN],*st1,*ste;
+++  char *st1,*ste;
++   int i;
++   ul init_address=0;
++   void *st,*est;
++ 
++-  coerce_to_filename(faslfile, filename);
++-  faslfile = open_stream(faslfile, smm_input, Cnil, sKerror);
++   fp = faslfile->sm.sm_fp;
++ 
++   massert(st=get_mmap(fp,&est));
++@@ -427,7 +423,6 @@ fasload(object faslfile) {
++   data = read_fasl_vector(faslfile);
++ 
++   massert(!un_mmap(st,est));
++-  close_stream(faslfile);
++ 
++ #ifdef CLEAR_CACHE
++   CLEAR_CACHE;
++--- gcl-2.6.12.orig/o/sfaslelf.c
+++++ gcl-2.6.12/o/sfaslelf.c
++@@ -542,15 +542,13 @@ int
++ fasload(object faslfile) {
++ 
++   FILE *fp;
++-  char filename[256],*sn,*st1,*dst1;
+++  char *sn,*st1,*dst1;
++   ul init_address=0,end,gs=0,*got=&gs,*gote=got+1;
++   object memory,data;
++   Shdr *sec1,*sece;
++   Sym *sym1,*syme,*dsym1,*dsyme;
++   void *v1,*ve;
++ 
++-  coerce_to_filename(faslfile, filename);
++-  faslfile = open_stream(faslfile, smm_input, Cnil, sKerror);
++   fp = faslfile->sm.sm_fp;
++   
++   massert(v1=get_mmap(fp,&ve));
++@@ -573,7 +571,6 @@ fasload(object faslfile) {
++   data=feof(fp) ? 0 : read_fasl_vector(faslfile);
++   
++   massert(!un_mmap(v1,ve));
++-  close_stream(faslfile);
++   
++   massert(!clear_protect_memory(memory));
++ 
++--- gcl-2.6.12.orig/o/sfaslmacho.c
+++++ gcl-2.6.12/o/sfaslmacho.c
++@@ -524,7 +524,6 @@ fasload(object faslfile) {
++ 
++   FILE *fp;
++   object data;
++-  char filename[256];
++   ul init_address=-1;
++   object memory;
++   void *v1,*ve,*p;
++@@ -533,8 +532,6 @@ fasload(object faslfile) {
++   char *st1=NULL,*ste=NULL;
++   ul gs,*got=&gs,*gote,*io1=NULL,rls,start;
++ 
++-  coerce_to_filename(faslfile, filename);
++-  faslfile = open_stream(faslfile, smm_input, Cnil, sKerror);
++   fp = faslfile->sm.sm_fp;
++ 
++   massert(v1=get_mmap(fp,&ve));
++@@ -563,7 +560,6 @@ fasload(object faslfile) {
++ #endif
++   
++   massert(!un_mmap(v1,ve));
++-  close_stream(faslfile);
++   
++   init_address-=(ul)memory->cfd.cfd_start;
++   call_init(init_address,memory,data,0);
++--- gcl-2.6.12.orig/o/sgbc.c
+++++ gcl-2.6.12/o/sgbc.c
++@@ -717,7 +717,7 @@ sgc_start(void) {
++       void *p=NULL,*pe;
++       struct pageinfo *pi;
++       ufixnum i;
++-      
+++
++       old_cb_pointer=cb_pointer;
++       reset_contblock_freelist();
++ 
++@@ -774,6 +774,8 @@ sgc_start(void) {
++       object v=sSAwritableA->s.s_dbind;
++       for (i=page(v->v.v_self);i<=page(v->v.v_self+CEI(v->bv.bv_offset+v->v.v_dim-1,8*sizeof(fixnum))/(8*sizeof(fixnum)));i++)
++      SET_WRITABLE(i);
+++      SET_WRITABLE(page(v));
+++      SET_WRITABLE(page(sSAwritableA));
++     }
++ 
++     tm_of(t_relocatable)->tm_alt_npage=0;
++@@ -787,7 +789,7 @@ sgc_start(void) {
++      Turn  memory protection on for the pages which are writable.
++   */
++   sgc_enabled=1;
++-  if (memory_protect(1)) 
+++  if (memory_protect(1))
++     sgc_quit();
++   if (sSAnotify_gbcA->s.s_dbind != Cnil)
++     emsg("[SGC on]");
++@@ -897,7 +899,7 @@ sgc_quit(void) {
++       for (p=pagetochar(page(v)),j=tm->tm_nppage;j>0;--j,p+=tm->tm_size)
++      ((object) p)->d.s=SGC_NORMAL;
++ #endif
++-  
+++
++   for (i=0;i<contblock_array->v.v_fillp &&(v=(void *)contblock_array->v.v_self[i]);i++)
++     if (v->sgc_flags&SGC_PAGE_FLAG) 
++       bzero(CB_SGCF_START(v),CB_DATA_START(v)-CB_SGCF_START(v));
++@@ -931,7 +933,7 @@ memprotect_handler(int sig, long code, v
++ #endif 
++   if (faddr >= (void *)core_end || faddr < data_start) {
++     static void *old_faddr;
++-    if (old_faddr==faddr) 
+++    if (old_faddr==faddr)
++       if (fault_count++ > 300) error("fault count too high");
++     old_faddr=faddr;
++     INSTALL_MPROTECT_HANDLER;
++@@ -1017,7 +1019,7 @@ memory_protect(int on) {
++ 
++     if (writable==WRITABLE_PAGE_P(i) && i<end) continue;
++ 
++-    if (sgc_mprotect(beg,i-beg,writable)) 
+++    if (sgc_mprotect(beg,i-beg,writable))
++       return -1;
++     writable=1-writable;
++     beg=i;
++--- gcl-2.6.12.orig/o/toplevel.c
+++++ gcl-2.6.12/o/toplevel.c
++@@ -173,7 +173,7 @@ FFN(Flocally)(object body)
++      object *oldlex = lex_env;
++ 
++      lex_copy();
++-     body = find_special(body, NULL, NULL);
+++     body = find_special(body, NULL, NULL,NULL);
++      vs_push(body);
++      Fprogn(body);
++      lex_env = oldlex;
++--- gcl-2.6.12.orig/o/typespec.c
+++++ gcl-2.6.12/o/typespec.c
++@@ -231,114 +231,71 @@ DEF_ORDINARY("SIGNED-SHORT",sSsigned_sho
++ DEF_ORDINARY("UNSIGNED-SHORT",sSunsigned_short,SI,"");
++ DEF_ORDINARY("*",sLA,LISP,"");
++ DEF_ORDINARY("PLUSP",sLplusp,LISP,"");
++-DEF_ORDINARY("DIVISION-BY-ZERO",sLdivision_by_zero,LISP,"");
++-DEF_ORDINARY("FLOATING-POINT-INEXACT",sLfloating_point_inexact,LISP,"");
++-DEF_ORDINARY("FLOATING-POINT-INVALID-OPERATION",sLfloating_point_invalid_operation,LISP,"");
++-DEF_ORDINARY("FLOATING-POINT-OVERFLOW",sLfloating_point_overflow,LISP,"");
++-DEF_ORDINARY("FLOATING-POINT-UNDERFLOW",sLfloating_point_underflow,LISP,"");
++-DEF_ORDINARY("PROGRAM-ERROR",sLprogram_error,LISP,"");
++-DEF_ORDINARY("UNDEFINED-FUNCTION",sLundefined_function,LISP,"");
++-DEF_ORDINARY("UNBOUND-VARIABLE",sLunbound_variable,LISP,"");
++-DEF_ORDINARY("PACKAGE-ERROR",sLpackage_error,LISP,"");
++ 
++ DEF_ORDINARY("METHOD-COMBINATION",sLmethod_combination,LISP,"");
++-DEF_ORDINARY("ARITHMETIC-ERROR",sLarithmetic_error,LISP,"");
++ DEF_ORDINARY("BASE-CHAR",sLbase_char,LISP,"");
++ DEF_ORDINARY("BASE-STRING",sLbase_string,LISP,"");
++ DEF_ORDINARY("BROADCAST-STREAM",sLbroadcast_stream,LISP,"");
++ DEF_ORDINARY("BUILT-IN-CLASS",sLbuilt_in_class,LISP,"");
++-DEF_ORDINARY("CELL-ERROR",sLcell_error,LISP,"");
++ DEF_ORDINARY("CLASS",sLclass,LISP,"");
++ DEF_ORDINARY("CONCATENATED-STREAM",sLconcatenated_stream,LISP,"");
++-DEF_ORDINARY("CONDITION",sLcondition,LISP,"");
++-DEF_ORDINARY("CONTROL-ERROR",sLcontrol_error,LISP,"");
++ DEF_ORDINARY("ECHO-STREAM",sLecho_stream,LISP,"");
++-DEF_ORDINARY("END-OF-FILE",sLend_of_file,LISP,"");
++-DEF_ORDINARY("ERROR",sLerror,LISP,"");
++ DEF_ORDINARY("EXTENDED-CHAR",sLextended_char,LISP,"");
++-DEF_ORDINARY("FILE-ERROR",sLfile_error,LISP,"");
++ DEF_ORDINARY("FILE-STREAM",sLfile_stream,LISP,"");
++ DEF_ORDINARY("GENERIC-FUNCTION",sLgeneric_function,LISP,"");
++ DEF_ORDINARY("LOGICAL-PATHNAME",sLlogical_pathname,LISP,"");
++ DEF_ORDINARY("METHOD",sLmethod,LISP,"");
++ /* FIXME -- need this for types in predlib.lsp, why can't we use the keyword sKpackage_error ? */
++-DEF_ORDINARY("PARSE-ERROR",sLparse_error,LISP,"");
++-DEF_ORDINARY("PRINT-NOT-READABLE",sLprint_not_readable,LISP,"");
++-DEF_ORDINARY("READER-ERROR",sLreader_error,LISP,"");
++-DEF_ORDINARY("SERIOUS-CONDITION",sLserious_condition,LISP,"");
++ DEF_ORDINARY("SIMPLE-BASE-STRING",sLsimple_base_string,LISP,"");
++-DEF_ORDINARY("SIMPLE-CONDITION",sLsimple_condition,LISP,"");
++-DEF_ORDINARY("SIMPLE-TYPE-ERROR",sLsimple_type_error,LISP,"");
++-DEF_ORDINARY("SIMPLE-WARNING",sLsimple_warning,LISP,"");
++ DEF_ORDINARY("STANDARD-CLASS",sLstandard_class,LISP,"");
++ DEF_ORDINARY("STANDARD-GENERIC-FUNCTION",sLstandard_generic_function,LISP,"");
++ DEF_ORDINARY("STANDARD-METHOD",sLstandard_method,LISP,"");
++ DEF_ORDINARY("STANDARD-OBJECT",sLstandard_object,LISP,"");
++-DEF_ORDINARY("STORAGE-CONDITION",sLstorage_condition,LISP,"");
++-DEF_ORDINARY("STREAM-ERROR",sLstream_error,LISP,"");
++ DEF_ORDINARY("STRING-STREAM",sLstring_stream,LISP,"");
++ DEF_ORDINARY("STRUCTURE-CLASS",sLstructure_class,LISP,"");
++ DEF_ORDINARY("STRUCTURE-OBJECT",sLstructure_object,LISP,"");
++-DEF_ORDINARY("STYLE-WARNING",sLstyle_warning,LISP,"");
++ DEF_ORDINARY("SYNONYM-STREAM",sLsynonym_stream,LISP,"");
++ DEF_ORDINARY("TWO-WAY-STREAM",sLtwo_way_stream,LISP,"");
++-DEF_ORDINARY("TYPE-ERROR",sLtype_error,LISP,"");
++-DEF_ORDINARY("UNBOUND-SLOT",sLunbound_slot,LISP,"");
++-DEF_ORDINARY("WARNING",sLwarning,LISP,"");
++ 
++ DEFCONST("CHAR-SIZE",sSchar_size,SI,small_fixnum(CHAR_SIZE),"Size in bits of a character");
++ DEFCONST("SHORT-SIZE",sSshort_size,SI,small_fixnum(CHAR_SIZE*sizeof(short)),"Size in bits of a short integer");
++ 
++ void     
++-gcl_init_typespec(void)
++-{
+++gcl_init_typespec(void) {
++ }
++ 
++ void
++-gcl_init_typespec_function(void)
++-{
++-     TSor_symbol_string
++-     = make_cons(sLor, make_cons(sLsymbol, make_cons(sLstring, Cnil)));
++-     enter_mark_origin(&TSor_symbol_string);
++-     TSor_string_symbol
++-     = make_cons(sLor, make_cons(sLstring, make_cons(sLsymbol, Cnil)));
++-     enter_mark_origin(&TSor_string_symbol);
++-     TSor_symbol_string_package
++-     = make_cons(sLor,
++-                 make_cons(sLsymbol,
++-                           make_cons(sLstring,
++-                                     make_cons(sLpackage, Cnil))));
++-     enter_mark_origin(&TSor_symbol_string_package);
++-
++-     TSnon_negative_integer
++-     = make_cons(sLinteger,
++-                 make_cons(make_fixnum(0), make_cons(sLA, Cnil)));
++-     enter_mark_origin(&TSnon_negative_integer);
++-     TSpositive_number = make_cons(sLsatisfies, make_cons(sLplusp, Cnil));
++-     enter_mark_origin(&TSpositive_number);
++-     TSor_integer_float
++-     = make_cons(sLor, make_cons(sLinteger, make_cons(sLfloat, Cnil)));
++-     enter_mark_origin(&TSor_integer_float);
++-     TSor_rational_float
++-     = make_cons(sLor, make_cons(sLrational, make_cons(sLfloat, Cnil)));
++-     enter_mark_origin(&TSor_rational_float);
+++gcl_init_typespec_function(void) {
+++
+++  TSor_symbol_string=make_cons(sLor, make_cons(sLsymbol, make_cons(sLstring, Cnil)));
+++  enter_mark_origin(&TSor_symbol_string);
+++
+++  TSor_string_symbol=make_cons(sLor, make_cons(sLstring, make_cons(sLsymbol, Cnil)));
+++  enter_mark_origin(&TSor_string_symbol);
+++
+++  TSor_symbol_string_package=make_cons(sLor,make_cons(sLsymbol,make_cons(sLstring,make_cons(sLpackage, Cnil))));
+++  enter_mark_origin(&TSor_symbol_string_package);
+++
+++  TSnon_negative_integer= make_cons(sLinteger,make_cons(make_fixnum(0), make_cons(sLA, Cnil)));
+++  enter_mark_origin(&TSnon_negative_integer);
+++
+++  TSpositive_number=make_cons(sLsatisfies, make_cons(sLplusp, Cnil));
+++  enter_mark_origin(&TSpositive_number);
+++
+++  TSor_integer_float=make_cons(sLor, make_cons(sLinteger, make_cons(sLfloat, Cnil)));
+++  enter_mark_origin(&TSor_integer_float);
+++
+++  TSor_rational_float=make_cons(sLor, make_cons(sLrational, make_cons(sLfloat, Cnil)));
+++  enter_mark_origin(&TSor_rational_float);
+++
++ #ifdef UNIX
++-     TSor_pathname_string_symbol
++-     = make_cons(sLor,
++-                 make_cons(sLpathname,
++-                           make_cons(sLstring,
++-                                     make_cons(sLsymbol,
++-                                               Cnil))));
++-     enter_mark_origin(&TSor_pathname_string_symbol);
+++  TSor_pathname_string_symbol=make_cons(sLor,make_cons(sLpathname,make_cons(sLstring,make_cons(sLsymbol,Cnil))));
+++  enter_mark_origin(&TSor_pathname_string_symbol);
++ #endif
++-     TSor_pathname_string_symbol_stream
++-     = make_cons(sLor,
++-                 make_cons(sLpathname,
++-                           make_cons(sLstring,
++-                                     make_cons(sLsymbol,
++-                                               make_cons(sLstream,
++-                                                         Cnil)))));
++-     enter_mark_origin(&TSor_pathname_string_symbol_stream);
++ 
++-     make_function("TYPE-OF", Ltype_of);
+++  TSor_pathname_string_symbol_stream=make_cons(sLor,make_cons(sLpathname,make_cons(sLstring,make_cons(sLsymbol,make_cons(sLstream,Cnil)))));
+++  enter_mark_origin(&TSor_pathname_string_symbol_stream);
+++
+++  make_function("TYPE-OF", Ltype_of);
+++
++ }                            
++--- gcl-2.6.12.orig/o/unexec-19.29.c
+++++ gcl-2.6.12/o/unexec-19.29.c
++@@ -936,7 +936,7 @@ copy_text_and_data (int new, int a_out)
++    
++ 
++     /* The use of _execname is incompatible with RISCiX 1.1 */
++-    sprintf (command, "nm %s | fgrep mcount", _execname);
+++    sprintf (command, "nm '%s' | fgrep mcount", _execname);
++ 
++     if ( (pfile = popen(command, "r")) == NULL)
++     {
++--- gcl-2.6.12.orig/o/unexec.c
+++++ gcl-2.6.12/o/unexec.c
++@@ -937,7 +937,7 @@ copy_text_and_data (int new, int a_out)
++    
++ 
++     /* The use of _execname is incompatible with RISCiX 1.1 */
++-    sprintf (command, "nm %s | fgrep mcount", _execname);
+++    sprintf (command, "nm '%s' | fgrep mcount", _execname);
++ 
++     if ( (pfile = popen(command, "r")) == NULL)
++     {
++--- gcl-2.6.12.orig/o/unixfasl.c
+++++ gcl-2.6.12/o/unixfasl.c
++@@ -279,9 +279,7 @@ AGAIN:
++ #define FASLINK
++ #ifndef PRIVATE_FASLINK
++ 
++-static int
++-faslink(object faslfile, object ldargstring)
++-{
+++DEFUN_NEW("FASLINK-INT",object,fSfaslink_int,SI,2,2,NONE,II,OO,OO,OO,(object faslfile, object ldargstring),"") {
++ #if defined(__ELF__) || defined(DARWIN)
++   FEerror("faslink() not supported for ELF or DARWIN yet",0);
++   return 0;
++@@ -381,36 +379,10 @@ SEEK_TO_END_OFILE(faslfile->sm.sm_fp);
++ 
++ #endif
++ 
++-static void
++-FFN(siLfaslink)(void)
++-{
++-     bds_ptr old_bds_top;
++-     int i;
++-     object package;
++-
++-     check_arg(2);
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     check_type_string(&vs_base[1]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[0]->pn.pn_type = FASL_string;
++-     vs_base[0] = namestring(vs_base[0]);
++-     package = symbol_value(sLApackageA);
++-     old_bds_top = bds_top;
++-     bds_bind(sLApackageA, package);
++-     i = faslink(vs_base[0], vs_base[1]);
++-     bds_unwind(old_bds_top);
++-     vs_top = vs_base;
++-     vs_push(make_fixnum(i));
++-}
++-
++ #endif
++ #endif/*  svr4 */
++ #endif /* UNIXFASL */
++ 
++ void
++-gcl_init_unixfasl(void)
++-{
++-#ifdef FASLINK
++-     make_si_function("FASLINK", siLfaslink);
++-#endif
+++gcl_init_unixfasl(void) {
++ }
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -44,10 +44,6 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #define HAVE_RENAME
++ #endif
++ 
++-void Ldirectory(void);
++-
++-
++-
++ #ifdef NEED_GETWD
++ #include <sys/dir.h>
++ 
++@@ -168,17 +164,41 @@ getwd(char *buffer) {
++       b_[_c+_d]=0;\
++       })
++ 
+++static object
+++get_string(object x) {
+++  switch(type_of(x)) {
+++  case t_symbol:
+++  case t_string:
+++    return x;
+++  case t_pathname:
+++    return x->pn.pn_namestring;
+++  case t_stream:
+++    switch(x->sm.sm_mode) {
+++    case smm_input:
+++    case smm_output:
+++    case smm_probe:
+++    case smm_io:
+++      return get_string(x->sm.sm_object1);
+++    case smm_file_synonym:
+++    case smm_synonym:
+++      return get_string(x->sm.sm_object0->s.s_dbind);
+++    }
+++  }
+++  return Cnil;
+++}
+++
+++
++ void
++ coerce_to_filename(object pathname,char *p) {
++ 
++-  object namestring=coerce_to_namestring(pathname);
+++  object namestring=get_string(pathname);
++   unsigned e=namestring->st.st_fillp;
++-  char *q=namestring->st.st_self,*qe=q+e;;
+++  char *q=namestring->st.st_self,*qe=q+e;
++ 
++-  if (pathname==Cnil)
+++  if (pathname==Cnil||namestring==Cnil)
++     FEerror ( "NIL argument.", 1, pathname ); 
++   
++-  if (*q=='~') {
+++  if (*q=='~' && e) {
++ 
++     unsigned m=0;
++     char *s=++q,*c;
++@@ -224,134 +244,6 @@ coerce_to_filename(object pathname,char
++     
++ }
++ 
++-object
++-truename(object pathname)
++-{
++-     register char *p, *q;
++-     char filename[MAXPATHLEN];
++-     char truefilename[MAXPATHLEN];
++-     char current_directory[MAXPATHLEN];
++-     char directory[MAXPATHLEN];
++-#ifdef __MINGW32__ 
++-        DWORD current_directory_length =
++-            GetCurrentDirectory ( MAXPATHLEN, current_directory ); 
++-        if ( MAXPATHLEN < current_directory_length ) { 
++-           FEerror ( "truename got a current directory name larger than MAXPATHLEN", 1, "" ); 
++-        } 
++-        if ( 0 == current_directory_length ) { 
++-           FEerror ( "truename could not determine the current directory.", 1, "" ); 
++-        } 
++-#else 
++-        massert(current_directory==getcwd(current_directory,sizeof(current_directory))); 
++-#endif 
++-    
++-     coerce_to_filename(pathname, filename);
++-     
++-#ifdef S_IFLNK
++- {
++-
++-   struct stat filestatus;
++-   int islinkcount=8;
++-
++-   if (lstat(filename, &filestatus) >= 0)
++-
++-     while (((filestatus.st_mode&S_IFMT) == S_IFLNK) && (--islinkcount>0)) {
++-
++-       char newname[MAXPATHLEN];
++-       int newlen;
++-
++-       newlen=readlink(filename,newname,MAXPATHLEN-1);
++-       if (newlen < 0)
++-         return((FEerror("Symlink broken at ~S.",1,pathname),Cnil));
++-
++-       for (p = filename, q = 0;  *p != '\0';  p++)
++-         if (*p == '/') q = p;
++-       if (q == 0 || *newname == '/')
++-         q = filename;
++-       else
++-         q++;
++-
++-       memcpy(q,newname,newlen);
++-       q[newlen]=0;
++-       if (lstat(filename, &filestatus) < 0) 
++-         islinkcount=0; /* It would be ANSI to do the following :
++-                           return(file_error("Symlink broken at ~S.",pathname));
++-                           but this would break DIRECTORY if a file points to nowhere */
++-     }
++- }
++-#endif
++-
++-     for (p = filename, q = 0;  *p != '\0';  p++)
++-             if (*p == '/')
++-                     q = p;
++-     if (q == filename) {
++-             q++;
++-             p = "/";
++-     } else if (q == 0) {
++-             q = filename;
++-             p = current_directory;
++-     } else
++-#ifdef __MINGW32__
++-        if ( ( q > filename ) && ( q[-1] == ':' ) ) {
++-          int current = (q++, q[0]);
++-          q[0]=0;
++-          if (chdir(filename) < 0)
++-            FEerror("Cannot get the truename of ~S.", 1, pathname);
++-             current_directory_length =
++-               GetCurrentDirectory ( MAXPATHLEN, directory );
++-             if ( MAXPATHLEN < current_directory_length ) { 
++-               FEerror ( "truename got a current directory name larger than MAXPATHLEN", 1, "" ); 
++-             } 
++-             if ( 0 == current_directory_length ) { 
++-               FEerror ( "truename could not determine the current directory.", 1, "" ); 
++-             } 
++-             p = directory; 
++-             if ( p[1]==':' && ( p[2]=='\\' || p[2]=='/' ) && p[3]==0 ) p[2]=0; 
++-          q[0]=current;
++-          }
++-       else
++-#endif       
++-       {
++-             *q++ = '\0';
++-             if (chdir(filename) < 0)
++-                 FEerror("Cannot get the truename of ~S.", 1, pathname);
++-#ifdef __MINGW32__ 
++-                current_directory_length = GetCurrentDirectory ( MAXPATHLEN, directory ); 
++-                if ( MAXPATHLEN < current_directory_length ) { 
++-                    FEerror ( "truename got a current directory name larger than MAXPATHLEN", 1, "" ); 
++-                } 
++-                if ( 0 == current_directory_length ) { 
++-                    FEerror ( "truename could not determine the current directory.", 1, "" ); 
++-                } 
++-                p = directory; 
++-#else 
++-             p = getcwd(directory,sizeof(directory));
++-#endif                
++-     }
++-     if (p[0] == '/' && p[1] == '\0') {
++-             if (strcmp(q, "..") == 0)
++-                     strcpy(truefilename, "/.");
++-             else
++-                     sprintf(truefilename, "/%s", q);
++-     } else if (strcmp(q, ".") == 0)
++-             strcpy(truefilename, p);
++-     else if (strcmp(q, "..") == 0) {
++-             for (q = p + strlen(p);  *--q != '/';) ;
++-             if (p == q)
++-                     strcpy(truefilename, "/.");
++-             else {
++-                     *q = '\0';
++-                     strcpy(truefilename, p);
++-                     *q = '/';
++-             }
++-     } else
++-             sprintf(truefilename, "%s/%s", p, q);
++-     massert(!chdir(current_directory));
++-     vs_push(make_simple_string(truefilename));
++-     pathname = coerce_to_pathname(vs_head);
++-     vs_popp;
++-     return(pathname);
++-}
++ object sSAallow_gzipped_fileA;
++ 
++ bool
++@@ -429,41 +321,6 @@ file_len(FILE *fp)
++      else return 0;
++ }
++ 
++-LFD(Ltruename)(void)
++-{
++-     check_arg(1);
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = truename(vs_base[0]);
++-}
++-
++-LFD(Lrename_file)(void)
++-{
++-     char filename[MAXPATHLEN];
++-     char newfilename[MAXPATHLEN];
++-
++-     check_arg(2);
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     check_type_or_Pathname_string_symbol(&vs_base[1]);
++-     coerce_to_filename(vs_base[0], filename);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_base[1] = coerce_to_pathname(vs_base[1]);
++-     vs_base[1] = merge_pathnames(vs_base[1], vs_base[0], Cnil);
++-     coerce_to_filename(vs_base[1], newfilename);
++-#ifdef HAVE_RENAME
++-     if (rename(filename, newfilename) < 0)
++-             FEerror("Cannot rename the file ~S to ~S.",
++-                     2, vs_base[0], vs_base[1]);
++-#else
++-     sprintf(command, "mv %s %s", filename, newfilename);
++-     msystem(command);
++-#endif
++-     vs_push(vs_base[1]);
++-     vs_push(truename(vs_base[0]));
++-     vs_push(truename(vs_base[1]));
++-     vs_base += 2;
++-}
++-
++-
++ DEF_ORDINARY("DIRECTORY",sKdirectory,KEYWORD,"");
++ DEF_ORDINARY("LINK",sKlink,KEYWORD,"");
++ DEF_ORDINARY("FILE",sKfile,KEYWORD,"");
++@@ -500,33 +357,28 @@ int gcl_putc(int i,void *v) {return putc
++ 
++ 
++ 
++-DEFUN_NEW("STAT",object,fSstat,SI,1,1,NONE,OO,OO,OO,OO,(object path),"") {
+++DEFUNM_NEW("STAT",object,fSstat,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++ 
++-  char filename[4096];
++   struct stat ss;
++-  
++ 
++-  bzero(filename,sizeof(filename));
++-  coerce_to_filename(path,filename);
+++  check_type_string(&x);
+++  coerce_to_filename(x,FN1);
+++
++ #ifdef __MINGW32__
++   {
++-    char *p=filename+strlen(filename)-1;
++-    for (;p>filename && *p=='/';p--)
+++    char *p=FN1+strlen(FN1)-1;
+++    for (;p>FN1 && *p=='/';p--)
++       *p=0;
++   }
++ #endif
++-  if (lstat(filename,&ss))
+++  if (lstat(FN1,&ss))
++     RETURN1(Cnil);
++-  else {/* ctime_r insufficiently portable */
++-    /* int j;
++-       ctime_r(&ss.st_ctime,filename);
++-       j=strlen(filename);
++-       if (isspace(filename[j-1]))
++-       filename[j-1]=0;*/
++-    RETURN1(list(3,S_ISDIR(ss.st_mode) ? sKdirectory : 
++-              (S_ISLNK(ss.st_mode) ? sKlink : sKfile),
++-              make_fixnum(ss.st_size),make_fixnum(ss.st_ctime)));
++-  }
+++  else
+++    RETURN4(S_ISDIR(ss.st_mode) ? sKdirectory :
+++         (S_ISLNK(ss.st_mode) ? sKlink : sKfile),
+++         make_fixnum(ss.st_size),
+++         make_fixnum(ss.st_ctime),
+++         make_fixnum(ss.st_uid));
++ }
++ 
++ DEFUN_NEW("SETENV",object,fSsetenv,SI,2,2,NONE,OO,OO,OO,OO,(object variable,object value),"Set environment VARIABLE to VALUE")
++@@ -551,266 +403,6 @@ DEFUN_NEW("SETENV",object,fSsetenv,SI,2,
++   RETURN1((res == 0 ? Ct : Cnil ));
++ }
++ 
++-DEFUNO_NEW("DELETE-FILE",object,fLdelete_file,LISP
++-   ,1,1,NONE,OO,OO,OO,OO,void,Ldelete_file,(object path),"")
++-
++-{
++-     char filename[MAXPATHLEN];
++-
++-     /* 1 args */
++-     check_type_or_pathname_string_symbol_stream(&path);
++-     coerce_to_filename(path, filename);
++-     if (unlink(filename) < 0 && rmdir(filename) < 0)
++-             FEerror("Cannot delete the file ~S: ~s.", 2, path, make_simple_string(strerror(errno)));
++-     path = Ct;
++-     RETURN1(path);
++-}
++-#ifdef STATIC_FUNCTION_POINTERS
++-object
++-fLdelete_file(object path) {
++-  return FFN(fLdelete_file)(path);
++-}
++-#endif
++-
++-LFD(Lprobe_file)(void)
++-{
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     if (file_exists(vs_base[0]))
++-             vs_base[0] = truename(vs_base[0]);
++-     else
++-             vs_base[0] = Cnil;
++-}
++-
++-LFD(Lfile_write_date)(void)
++-{
++-     char filename[MAXPATHLEN];
++-     struct stat filestatus;
++-
++-     check_arg(1);
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     coerce_to_filename(vs_base[0], filename);
++-     if (stat(filename, &filestatus) < 0 || S_ISDIR(filestatus.st_mode))
++-       { vs_base[0] = Cnil; return;}
++-     vs_base[0] = unix_time_to_universal_time(filestatus.st_mtime);
++-}
++-
++-LFD(Lfile_author)(void)
++-{
++-#if !defined(NO_PWD_H) && !defined(STATIC_LINKING)
++-     char filename[MAXPATHLEN];
++-     struct stat filestatus;
++-     struct passwd *pwent;
++-#ifndef __STDC__
++-     extern struct passwd *getpwuid();
++-#endif
++-
++-     check_arg(1);
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     coerce_to_filename(vs_base[0], filename);
++-     if (stat(filename, &filestatus) < 0 || S_ISDIR(filestatus.st_mode))
++-       { vs_base[0] = Cnil; return;}
++-     pwent = getpwuid(filestatus.st_uid);
++-     vs_base[0] = make_simple_string(pwent->pw_name);
++-#else
++-     vs_base[0] = Cnil; return;
++-#endif       
++-     
++-}
++-
++-static void
++-FFN(Luser_homedir_pathname)(void)
++-{
++-
++-  char filename[MAXPATHLEN];
++-
++-  coerce_to_filename(make_simple_string("~/"),filename);
++-  vs_base[0]=coerce_to_pathname(make_simple_string(filename));
++-  vs_top = vs_base+1; 
++-  
++-}
++-
++-
++-#ifdef BSD
++-LFD(Ldirectory)(void)
++-{
++-     char filename[MAXPATHLEN];
++-     char command[MAXPATHLEN * 2];
++-     FILE *fp;
++-     register int i, c;
++-     object *top = vs_top;
++-     char iobuffer[BUFSIZ];
++-     extern FILE *popen(const char *, const char *);
++-
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     if (vs_base[0]->pn.pn_name==Cnil && vs_base[0]->pn.pn_type==Cnil) {
++-             coerce_to_filename(vs_base[0], filename);
++-             strcat(filename, "*");
++-     } else if (vs_base[0]->pn.pn_name==Cnil) {
++-             vs_base[0]->pn.pn_name = sKwild;
++-             coerce_to_filename(vs_base[0], filename);
++-             vs_base[0]->pn.pn_name = Cnil;
++-     } else if (vs_base[0]->pn.pn_type==Cnil) {
++-             coerce_to_filename(vs_base[0], filename);
++-             strcat(filename, "*");
++-     } else
++-             coerce_to_filename(vs_base[0], filename);
++-     sprintf(command, "ls -d %s 2> /dev/null", filename);
++-     fp = popen(command, "r");
++-     setbuf(fp, iobuffer);
++-     for (;;) {
++-             for (i = 0;  (c = getc(fp));  i++)
++-                     if (c <= 0)
++-                             goto L;
++-                     else if (c == '\n')
++-                             break;
++-                     else
++-                             filename[i] = c;
++-             filename[i] = '\0';
++-             vs_push(make_simple_string(filename));
++-             vs_head = truename(vs_head);
++-     }
++-L:
++-     pclose(fp);
++-     vs_push(Cnil);
++-     while (vs_top > top + 1)
++-             stack_cons();
++-     vs_base = top;
++-}
++-#endif
++-
++-
++-#ifdef ATT
++-LFD(Ldirectory)()
++-{
++-     object name, type;
++-     char filename[MAXPATHLEN];
++-     FILE *fp;
++-     object *top = vs_top;
++-     char iobuffer[BUFSIZ];
++-     struct direct dir;
++-     int i;
++-
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_push(vs_base[0]->pn.pn_name);
++-     vs_push(vs_base[0]->pn.pn_type);
++-     vs_base[0]->pn.pn_name = Cnil;
++-     vs_base[0]->pn.pn_type = Cnil;
++-     coerce_to_filename(vs_base[0], filename);
++-     type = vs_base[0]->pn.pn_type = vs_pop;
++-     name = vs_base[0]->pn.pn_name = vs_pop;
++-     i = strlen(filename);
++-     if (i > 1 && filename[i-1] == '/')
++-             filename[i-1] = '\0';
++-     if (i == 0)
++-             strcpy(filename, ".");
++-     fp = fopen(filename, "r");
++-     if (fp == NULL) {
++-             vs_push(make_simple_string(filename));
++-             FEerror("Can't open the directory ~S.", 1, vs_head);
++-     }
++-     setbuf(fp, iobuffer);
++-     fread(&dir, sizeof(struct direct), 1, fp);
++-     fread(&dir, sizeof(struct direct), 1, fp);
++-     filename[DIRSIZ] = '\0';
++-     for (;;) {
++-             if (fread(&dir, sizeof(struct direct), 1, fp) <=0)
++-                     break;
++-             if (dir.d_ino == 0)
++-                     continue;
++-             strncpy(filename, dir.d_name, DIRSIZ);
++-             vs_push(make_simple_string(filename));
++-             vs_head = coerce_to_pathname(vs_head);
++-             if ((name == Cnil || name == sKwild ||
++-                  equal(name, vs_head->pn.pn_name)) &&
++-                 (type == Cnil || type == sKwild ||
++-                  equal(type, vs_head->pn.pn_type))) {
++-                     vs_head->pn.pn_directory
++-                     = vs_base[0]->pn.pn_directory;
++-                     vs_head = truename(vs_head);
++-             } else
++-                     vs_pop;
++-     }
++-     fclose(fp);
++-     vs_push(Cnil);
++-     while (vs_top > top + 1)
++-             stack_cons();
++-     vs_base = top;
++-}
++-#endif
++-
++-
++-#ifdef E15
++-#include <sys/dir.h>
++-
++-LFD(Ldirectory)()
++-{
++-     object name, type;
++-     char filename[MAXPATHLEN];
++-     FILE *fp;
++-     object *top = vs_top;
++-     char iobuffer[BUFSIZ];
++-     struct direct dir;
++-     int i;
++-
++-     check_arg(1);
++-
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     vs_push(vs_base[0]->pn.pn_name);
++-     vs_push(vs_base[0]->pn.pn_type);
++-     vs_base[0]->pn.pn_name = Cnil;
++-     vs_base[0]->pn.pn_type = Cnil;
++-     coerce_to_filename(vs_base[0], filename);
++-     type = vs_base[0]->pn.pn_type = vs_pop;
++-     name = vs_base[0]->pn.pn_name = vs_pop;
++-     i = strlen(filename);
++-     if (i > 1 && filename[i-1] == '/')
++-             filename[i-1] = '\0';
++-     if (i == 0)
++-             strcpy(filename, ".");
++-     fp = fopen(filename, "r");
++-     if (fp == NULL) {
++-             vs_push(make_simple_string(filename));
++-             FEerror("Can't open the directory ~S.", 1, vs_head);
++-     }
++-     setbuf(fp, iobuffer);
++-     fread(&dir, sizeof(struct direct), 1, fp);
++-     fread(&dir, sizeof(struct direct), 1, fp);
++-     filename[DIRSIZ] = '\0';
++-     for (;;) {
++-             if (fread(&dir, sizeof(struct direct), 1, fp) <=0)
++-                     break;
++-             if (dir.d_ino == 0)
++-                     continue;
++-             strncpy(filename, dir.d_name, DIRSIZ);
++-             vs_push(make_simple_string(filename));
++-             vs_head = coerce_to_pathname(vs_head);
++-             if ((name == Cnil || name == sKwild ||
++-                  equal(name, vs_head->pn.pn_name)) &&
++-                 (type == Cnil || type == sKwild ||
++-                  equal(type, vs_head->pn.pn_type))) {
++-                     vs_head->pn.pn_directory
++-                     = vs_base[0]->pn.pn_directory;
++-                     vs_head = truename(vs_head);
++-             } else
++-                     vs_pop;
++-     }
++-     fclose(fp);
++-     vs_push(Cnil);
++-     while (vs_top > top + 1)
++-             stack_cons();
++-     vs_base = top;
++-}
++-#endif
++-
++ #include <sys/types.h>
++ #include <dirent.h>
++ 
++@@ -840,17 +432,31 @@ DEFUN_NEW("D-TYPE-LIST",object,fSd_type_
++ }
++ #endif
++ 
++-DEFUN_NEW("READDIR",object,fSreaddir,SI,2,2,NONE,OI,IO,OO,OO,(fixnum x,fixnum y),"") {
+++DEFUN_NEW("READDIR",object,fSreaddir,SI,3,3,NONE,OI,IO,OO,OO,(fixnum x,fixnum y,object s),"") {
++   struct dirent *e;
++   object z;
+++  long tl;
+++  size_t l;
++   if (!x) RETURN1(Cnil);
++-  e=readdir((DIR *)x);
++-  RETURN1(e ? make_simple_string(e->d_name) : Cnil);
+++  tl=telldir((DIR *)x);
++ #ifdef HAVE_D_TYPE
++   for (;(e=readdir((DIR *)x)) && y!=DT_UNKNOWN && e->d_type!=y;);
++ #endif
++   if (!e) RETURN1(Cnil);
++-  z=make_simple_string(e->d_name);
+++  if (s==Cnil)
+++    z=make_simple_string(e->d_name);
+++  else {
+++    check_type_string(&s);
+++    l=strlen(e->d_name);
+++    if (s->st.st_dim-s->st.st_fillp>=l) {
+++      memcpy(s->st.st_self+s->st.st_fillp,e->d_name,l);
+++      s->st.st_fillp+=l;
+++      z=s;
+++    } else {
+++      seekdir((DIR *)x,tl);
+++      RETURN1(make_fixnum(l));
+++    }
+++  }
++ #ifdef HAVE_D_TYPE
++   if (y==DT_UNKNOWN) z=MMcons(z,make_fixnum(e->d_type));
++ #endif
++@@ -882,7 +488,126 @@ DEFUN_NEW("MKDIR",object,fSmkdir,SI,1,1,
++ 
++ }
++ 
+++DEFUN_NEW("RMDIR",object,fSrmdir,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_string(&x);
+++
+++  coerce_to_filename(x,FN1);
+++
+++  RETURN1(rmdir(FN1) ? Cnil : Ct);
+++
+++}
+++
+++
+++
+++#include <sys/types.h>
+++#include <dirent.h>
+++#include <fcntl.h>
+++#include <unistd.h>
+++
+++DEFUN_NEW("READLINKAT",object,fSreadlinkat,SI,2,2,NONE,OI,OO,OO,OO,(fixnum d,object s),"") {
+++  char *b1,*b2=NULL;
+++  ssize_t l,z1,z2;
+++  check_type_string(&s);
+++  /* l=s->st.st_hasfillp ? s->st.st_fillp : s->st.st_dim; */
+++  z1=length(s);
+++  massert((b1=alloca(z1+1)));
+++  memcpy(b1,s->st.st_self,z1);
+++  b1[z1]=0;
+++  for (l=z2=0;l>=z2;) {
+++    memset(b2,0,z2);
+++    z2+=z2+10;
+++    massert((b2=alloca(z2)));
+++    massert((l=readlinkat(d ? dirfd((DIR *)d) : AT_FDCWD,b1,b2,z2))>=0);
+++  }
+++  b2[l]=0;
+++  s=make_simple_string(b2);
+++  memset(b1,0,z1);
+++  memset(b2,0,z2);
+++  RETURN1(s);
+++}
+++
+++DEFUN_NEW("GETCWD",object,fSgetcwd,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
+++  char *b=NULL;
+++  size_t z;
+++  object s;
+++
+++  for (z=0;!(errno=0) && !getcwd(b,z) && errno==ERANGE;b=memset(b,0,z),z+=z+10,({massert((b=alloca(z)));}));
+++  massert((b=getcwd(b,z)));
+++  s=make_simple_string(b);
+++  memset(b,0,z);
+++  RETURN1(s);
+++
+++}
+++
+++DEFUN_NEW("UID-TO-NAME",object,fSuid_to_name,SI,1,1,NONE,OI,OO,OO,OO,(fixnum uid),"") {
+++  struct passwd *pwent,pw;
+++  char *b;
+++  long r;
+++
+++  massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
+++  massert(b=alloca(r));
+++
+++  massert(!getpwuid_r(uid,&pw,b,r,&pwent));
+++
+++  RETURN1(make_simple_string(pwent->pw_name));
+++
+++}
+++
+++DEFUN_NEW("HOME-NAMESTRING",object,fShome_namestring,SI,1,1,NONE,OO,OO,OO,OO,(object nm),"") {
+++
+++  struct passwd *pwent,pw;
+++  char *b;
+++  long r;
+++
+++  massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
+++  massert(b=alloca(r));
++ 
+++  if (nm->st.st_fillp==1)
+++
+++    if ((pw.pw_dir=getenv("HOME")))
+++      pwent=&pw;
+++    else
+++      massert(!getpwuid_r(getuid(),&pw,b,r,&pwent));
+++
+++  else {
+++
+++    char *name;
+++
+++    massert(name=alloca(nm->st.st_fillp));
+++    memcpy(name,nm->st.st_self+1,nm->st.st_fillp-1);
+++    name[nm->st.st_fillp-1]=0;
+++
+++    massert(!getpwnam_r(name,&pw,b,r,&pwent));
+++
+++  }
+++
+++  massert((b=alloca(strlen(pwent->pw_dir)+2)));
+++  memcpy(b,pwent->pw_dir,strlen(pwent->pw_dir));
+++  b[strlen(pwent->pw_dir)]='/';
+++  b[strlen(pwent->pw_dir)+1]=0;
+++  RETURN1(make_simple_string(b));
+++
+++}
+++
+++DEFUN_NEW("RENAME",object,fSrename,SI,2,2,NONE,OO,OO,OO,OO,(object x,object y),"") {
+++
+++  check_type_string(&x);
+++  check_type_string(&y);
+++
+++  coerce_to_filename(x,FN1);
+++  coerce_to_filename(y,FN2);
+++
+++  RETURN1(rename(FN1,FN2) ? Cnil : Ct);
+++
+++}
+++
+++DEFUN_NEW("UNLINK",object,fSunlink,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++
+++  coerce_to_filename(x,FN1);
+++
+++  RETURN1(unlink(FN1) ? Cnil : Ct);
+++
+++}
++ 
++ 
++ static void
++@@ -900,16 +625,8 @@ FFN(siLchdir)(void)
++ }
++ 
++ void
++-gcl_init_unixfsys(void)
++-{
++-     make_function("TRUENAME", Ltruename);
++-     make_function("RENAME-FILE", Lrename_file);
++-     make_function("DELETE-FILE", Ldelete_file);
++-     make_function("PROBE-FILE", Lprobe_file);
++-     make_function("FILE-WRITE-DATE", Lfile_write_date);
++-     make_function("FILE-AUTHOR", Lfile_author);
++-     make_function("USER-HOMEDIR-PATHNAME", Luser_homedir_pathname);
++-     make_function("DIRECTORY", Ldirectory);
+++gcl_init_unixfsys(void) {
+++
+++  make_si_function("CHDIR", siLchdir);
++ 
++-     make_si_function("CHDIR", siLchdir);
++ }
++--- gcl-2.6.12.orig/o/usig.c
+++++ gcl-2.6.12/o/usig.c
++@@ -148,13 +148,15 @@ DEFUN_NEW("FLD",object,fSfld,SI,1,1,NONE
++ 
++ #endif
++ 
++-DEFUN_NEW("*FIXNUM",fixnum,fSAfixnum,SI,1,1,NONE,II,OO,OO,OO,(fixnum addr),"") {
++-  RETURN1(*(fixnum *)addr);
+++/* For now ignore last three args governing offsets and data modification, just to
+++   support fpe sync with master*/
+++DEFUN_NEW("*FIXNUM",object,fSAfixnum,SI,4,4,NONE,OI,OO,OO,OO,(fixnum addr,object x,object y,object z),"") {
+++  RETURN1((object)*(fixnum *)addr);
++ }
++-DEFUN_NEW("*FLOAT",object,fSAfloat,SI,1,1,NONE,OI,OO,OO,OO,(fixnum addr),"") {
+++DEFUN_NEW("*FLOAT",object,fSAfloat,SI,4,4,NONE,OI,OO,OO,OO,(fixnum addr,object x,object y,object z),"") {
++   RETURN1(make_shortfloat(*(float *)addr));
++ }
++-DEFUN_NEW("*DOUBLE",object,fSAdouble,SI,1,1,NONE,OI,OO,OO,OO,(fixnum addr),"") {
+++DEFUN_NEW("*DOUBLE",object,fSAdouble,SI,4,4,NONE,OI,OO,OO,OO,(fixnum addr,object x,object y,object z),"") {
++   RETURN1(make_longfloat(*(double *)addr));
++ }
++ 
++@@ -264,7 +266,6 @@ sigpipe(void)
++      FEerror("Broken pipe", 0);
++ }
++ 
++-
++ void
++ sigint(void)
++ {
++@@ -272,8 +273,6 @@ sigint(void)
++   terminal_interrupt(1);
++ }
++ 
++-
++-
++ static void
++ sigalrm(void)
++ {
++--- gcl-2.6.12.orig/unixport/sys_ansi_gcl.c
+++++ gcl-2.6.12/unixport/sys_ansi_gcl.c
++@@ -41,7 +41,6 @@ gcl_init_system(object no_init)
++ #ifdef HAVE_JAPI_H
++   ar_check_init(gcl_japi,no_init);
++ #endif
++-  ar_check_init(gcl_iolib,no_init);
++   ar_check_init(gcl_listlib,no_init);
++   ar_check_init(gcl_mislib,no_init);
++   ar_check_init(gcl_numlib,no_init);
++@@ -56,9 +55,23 @@ gcl_init_system(object no_init)
++   ar_check_init(gcl_defpackage,no_init);
++   ar_check_init(gcl_make_defpackage,no_init);
++   ar_check_init(gcl_sharp,no_init);
++-  ar_check_init(gcl_fpe,no_init);
++ 
+++  ar_check_init(gcl_sharp_uv,no_init);
+++  ar_check_init(gcl_namestring,no_init);
+++  ar_check_init(gcl_logical_pathname_translations,no_init);
+++  ar_check_init(gcl_make_pathname,no_init);
+++  ar_check_init(gcl_parse_namestring,no_init);
+++  ar_check_init(gcl_translate_pathname,no_init);
+++  ar_check_init(gcl_directory,no_init);
+++  ar_check_init(gcl_merge_pathnames,no_init);
+++  ar_check_init(gcl_truename,no_init);
+++  ar_check_init(gcl_rename_file,no_init);
+++  ar_check_init(gcl_wild_pathname_p,no_init);
+++  ar_check_init(gcl_pathname_match_p,no_init);
++      
+++  ar_check_init(gcl_iolib,no_init);
+++  ar_check_init(gcl_fpe,no_init);
+++
++   ar_check_init(gcl_cmpinline,no_init);
++   ar_check_init(gcl_cmputil,no_init);
++ 
++@@ -107,6 +120,7 @@ gcl_init_system(object no_init)
++   ar_check_init(gcl_index,no_init);
++ #endif
++   
+++  lsp_init("../pcl/package.lisp");
++   ar_check_init(gcl_pcl_pkg,no_init);
++   ar_check_init(gcl_pcl_walk,no_init);
++   ar_check_init(gcl_pcl_iterate,no_init);
++@@ -142,6 +156,7 @@ gcl_init_system(object no_init)
++   ar_check_init(gcl_pcl_precom1,no_init);
++   ar_check_init(gcl_pcl_precom2,no_init);
++ 
+++  lsp_init("../clcs/package.lisp");
++   ar_check_init(gcl_clcs_precom,no_init);
++   ar_check_init(gcl_clcs_handler,no_init);
++   ar_check_init(gcl_clcs_conditions,no_init);
++--- gcl-2.6.12.orig/unixport/sys_gcl.c
+++++ gcl-2.6.12/unixport/sys_gcl.c
++@@ -34,7 +34,6 @@ gcl_init_system(object no_init) {
++ #ifdef HAVE_JAPI_H
++   ar_check_init(gcl_japi,no_init);
++ #endif
++-  ar_check_init(gcl_iolib,no_init);
++   ar_check_init(gcl_listlib,no_init);
++   ar_check_init(gcl_mislib,no_init);
++   ar_check_init(gcl_numlib,no_init);
++@@ -49,9 +48,23 @@ gcl_init_system(object no_init) {
++   ar_check_init(gcl_defpackage,no_init);
++   ar_check_init(gcl_make_defpackage,no_init);
++   ar_check_init(gcl_sharp,no_init);
++-  ar_check_init(gcl_fpe,no_init);
++ 
+++  ar_check_init(gcl_sharp_uv,no_init);
+++  ar_check_init(gcl_namestring,no_init);
+++  ar_check_init(gcl_logical_pathname_translations,no_init);
+++  ar_check_init(gcl_make_pathname,no_init);
+++  ar_check_init(gcl_parse_namestring,no_init);
+++  ar_check_init(gcl_translate_pathname,no_init);
+++  ar_check_init(gcl_directory,no_init);
+++  ar_check_init(gcl_merge_pathnames,no_init);
+++  ar_check_init(gcl_truename,no_init);
+++  ar_check_init(gcl_rename_file,no_init);
+++  ar_check_init(gcl_wild_pathname_p,no_init);
+++  ar_check_init(gcl_pathname_match_p,no_init);
++      
+++  ar_check_init(gcl_iolib,no_init);
+++  ar_check_init(gcl_fpe,no_init);
+++
++   ar_check_init(gcl_cmpinline,no_init);
++   ar_check_init(gcl_cmputil,no_init);
++ 
++--- gcl-2.6.12.orig/unixport/sys_init.lsp.in
+++++ gcl-2.6.12/unixport/sys_init.lsp.in
++@@ -9,9 +9,6 @@
++ (in-package :system)
++ (use-package :fpe)
++ 
++-#+(or pcl ansi-cl)(load "../pcl/package.lisp")
++-#+ansi-cl(load "../clcs/package.lisp")
++-
++ (init-system) 
++ (in-package :si)
++ (gbc t)
++@@ -20,7 +17,7 @@
++   (setq *link-array* (make-array (ash 1 11) :element-type 'character :fill-pointer 0)))
++ (use-fast-links t)
++ 
++-(let* ((x (append (pathname-directory *system-directory*) (list :parent)))
+++(let* ((x (append (pathname-directory *system-directory*) (list :back)))
++        (lsp (append x (list "lsp")))
++        (cmpnew (append x (list "cmpnew")))
++        (h (append x (list "h")))
++@@ -59,6 +56,7 @@
++ 
++ (fmakunbound 'init-cmp-anon)
++ (when (fboundp 'user-init) (user-init))
+++
++ (in-package :compiler)
++ (setq *cc* @LI-CC@
++       *ld* @LI-LD@
++@@ -79,7 +77,9 @@
++ #-ansi-cl(do-symbols (s :cltl1-compat) (export s :lisp)))
++ 
++ #+ansi-cl (use-package :pcl :user)
++-#+ansi-cl (import 'si::(clines defentry defcfun object void int double quit bye gbc system) :user)
+++
+++(import 'si::(clines defentry defcfun object void int double quit bye gbc system
+++                  *lib-directory* *system-directory*) :user)
++ 
++ (let* ((i 4096)(j (si::equal-tail-recursion-check i)))
++   (unless (<= (ash i -1) j)
++--- gcl-2.6.12.orig/unixport/sys_pcl_gcl.c
+++++ gcl-2.6.12/unixport/sys_pcl_gcl.c
++@@ -41,7 +41,6 @@ gcl_init_system(object no_init)
++ #ifdef HAVE_JAPI_H
++   ar_check_init(gcl_japi,no_init);
++ #endif
++-  ar_check_init(gcl_iolib,no_init);
++   ar_check_init(gcl_listlib,no_init);
++   ar_check_init(gcl_mislib,no_init);
++   ar_check_init(gcl_numlib,no_init);
++@@ -56,9 +55,23 @@ gcl_init_system(object no_init)
++   ar_check_init(gcl_defpackage,no_init);
++   ar_check_init(gcl_make_defpackage,no_init);
++   ar_check_init(gcl_sharp,no_init);
++-  ar_check_init(gcl_fpe,no_init);
++ 
+++  ar_check_init(gcl_sharp_uv,no_init);
+++  ar_check_init(gcl_namestring,no_init);
+++  ar_check_init(gcl_logical_pathname_translations,no_init);
+++  ar_check_init(gcl_make_pathname,no_init);
+++  ar_check_init(gcl_parse_namestring,no_init);
+++  ar_check_init(gcl_translate_pathname,no_init);
+++  ar_check_init(gcl_directory,no_init);
+++  ar_check_init(gcl_merge_pathnames,no_init);
+++  ar_check_init(gcl_truename,no_init);
+++  ar_check_init(gcl_rename_file,no_init);
+++  ar_check_init(gcl_wild_pathname_p,no_init);
+++  ar_check_init(gcl_pathname_match_p,no_init);
++      
+++  ar_check_init(gcl_iolib,no_init);
+++  ar_check_init(gcl_fpe,no_init);
+++
++   ar_check_init(gcl_cmpinline,no_init);
++   ar_check_init(gcl_cmputil,no_init);
++ 
++@@ -107,6 +120,7 @@ gcl_init_system(object no_init)
++   ar_check_init(gcl_index,no_init);
++ #endif
++   
+++  lsp_init("../pcl/package.lisp");
++   ar_check_init(gcl_pcl_pkg,no_init);
++   ar_check_init(gcl_pcl_walk,no_init);
++   ar_check_init(gcl_pcl_iterate,no_init);
++--- gcl-2.6.12.orig/unixport/sys_pre_gcl.c
+++++ gcl-2.6.12/unixport/sys_pre_gcl.c
++@@ -39,7 +39,6 @@ gcl_init_system(object no_init)
++ #ifdef HAVE_JAPI_H
++   lsp_init("../lsp/gcl_japi.lsp");
++ #endif
++-  lsp_init("../lsp/gcl_iolib.lsp");
++ /*   lsp_init("../lsp/gcl_listlib.lsp"); */
++   lsp_init("../lsp/gcl_mislib.lsp");
++   lsp_init("../lsp/gcl_numlib.lsp");
++@@ -54,6 +53,21 @@ gcl_init_system(object no_init)
++   lsp_init("../lsp/gcl_defpackage.lsp");
++   lsp_init("../lsp/gcl_make_defpackage.lsp");
++   lsp_init("../lsp/gcl_sharp.lsp");
+++
+++  lsp_init("../lsp/gcl_sharp_uv.lsp");
+++  lsp_init("../lsp/gcl_logical_pathname_translations.lsp");
+++  lsp_init("../lsp/gcl_make_pathname.lsp");
+++  lsp_init("../lsp/gcl_parse_namestring.lsp");
+++  lsp_init("../lsp/gcl_namestring.lsp");
+++  lsp_init("../lsp/gcl_translate_pathname.lsp");
+++  lsp_init("../lsp/gcl_directory.lsp");
+++  lsp_init("../lsp/gcl_merge_pathnames.lsp");
+++  lsp_init("../lsp/gcl_truename.lsp");
+++  lsp_init("../lsp/gcl_rename_file.lsp");
+++  lsp_init("../lsp/gcl_wild_pathname_p.lsp");
+++  lsp_init("../lsp/gcl_pathname_match_p.lsp");
+++
+++  lsp_init("../lsp/gcl_iolib.lsp");
++   lsp_init("../lsp/gcl_fpe.lsp");
++ 
++   lsp_init("../cmpnew/gcl_cmpinline.lsp");
++--- gcl-2.6.12.orig/xbin/make-fn
+++++ gcl-2.6.12/xbin/make-fn
++@@ -6,10 +6,13 @@ TMP=/tmp/tmpd$$
++ mkdir ${TMP}
++ cp $@ ${TMP}
++ 
++-for v in $@ ; 
+++for v in $1 ;
++ do
++ echo '(load (format nil "~a~a" si::*system-directory* "../cmpnew/gcl_collectfn"))' \
++    '(compiler::emit-fn t)'\
+++   "(compile-file \"${TMP}/$v\" :o-file nil)"
+++echo '(load (format nil "~a~a" si::*system-directory* "../cmpnew/gcl_collectfn"))' \
+++   '(compiler::emit-fn t)'\
++    "(compile-file \"${TMP}/$v\" :o-file nil)" | ${LISP}
++ done
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..71bab9219889023645914a3ba9b76aa41cdcfc46
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,246 @@@
++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.
++ .
++ gcl (2.6.12-45) unstable; urgency=high
++ .
++   * pathnames1.11
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-31
++
++--- gcl-2.6.12.orig/cmpnew/gcl_lfun_list.lsp
+++++ gcl-2.6.12/cmpnew/gcl_lfun_list.lsp
++@@ -144,7 +144,7 @@
++ (DEFSYSFUN 'SVREF "Lsvref" '(T T) 'T NIL NIL) 
++ (DEFSYSFUN 'APPLY "Lapply" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'DECODE-FLOAT "Ldecode_float" '(T) '(VALUES T T T) NIL NIL) 
++-(DEFSYSFUN 'SUBST-IF-NOT "Lsubst_if_not" '(T T T *) 'T NIL NIL) 
+++;(DEFSYSFUN 'SUBST-IF-NOT "Lsubst_if_not" '(T T T *) 'T NIL NIL)
++ (DEFSYSFUN 'RPLACA "Lrplaca" '(T T) 'T NIL NIL) 
++ (DEFSYSFUN 'SYMBOL-PLIST "Lsymbol_plist" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'WRITE-STRING "Lwrite_string" '(T *) 'T NIL NIL) 
++@@ -210,7 +210,7 @@
++ (DEFSYSFUN 'NSUBLIS "Lnsublis" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'CHAR-NOT-EQUAL "Lchar_not_equal" '(T *) 'T NIL T) 
++ (DEFSYSFUN 'MACRO-FUNCTION "Lmacro_function" '(T) 'T NIL NIL) 
++-(DEFSYSFUN 'SUBST-IF "Lsubst_if" '(T T T *) 'T NIL NIL) 
+++;(DEFSYSFUN 'SUBST-IF "Lsubst_if" '(T T T *) 'T NIL NIL)
++ (DEFSYSFUN 'COMPLEXP "Lcomplexp" '(T) 'T NIL T) 
++ (DEFSYSFUN 'READ-LINE "Lread_line" '(*) '(VALUES T T) NIL NIL) 
++ (DEFSYSFUN 'MAX "Lmax" '(T *) 'T NIL NIL) 
++@@ -232,7 +232,7 @@
++ (DEFSYSFUN 'FLOAT "Lfloat" '(T *) 'T NIL NIL) 
++ ;(DEFSYSFUN 'FIRST "Lcar" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'ROUND "Lround" '(T *) '(VALUES T T) NIL NIL) 
++-(DEFSYSFUN 'SUBST "Lsubst" '(T T T *) 'T NIL NIL) 
+++;(DEFSYSFUN 'SUBST "Lsubst" '(T T T *) 'T NIL NIL)
++ (DEFSYSFUN 'UPPER-CASE-P "Lupper_case_p" '(T) 'T NIL T) 
++ (DEFSYSFUN 'ARRAY-ELEMENT-TYPE "Larray_element_type" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'ADJOIN "Ladjoin" '(T T *) 'T NIL NIL) 
++--- gcl-2.6.12.orig/lsp/gcl_arraylib.lsp
+++++ gcl-2.6.12/lsp/gcl_arraylib.lsp
++@@ -262,8 +262,6 @@
++                        (static (staticp array))
++                      &aux (fill-pointer (or fill-pointer (when (array-has-fill-pointer-p array) (fill-pointer array)))))
++ 
++-  (declare (ignore element-type))
++-
++   (let ((x (if initial-contents-supplied-p
++             (make-array new-dimensions
++                     :adjustable t
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -80,7 +80,7 @@
++      0 l)))
++ 
++ (defun get-string-input-stream-index (stream &aux (s (c-stream-object0 stream)))
++-  (+ (fill-pointer s) (multiple-value-bind (a b) (array-displacement s) b)))
+++  (+ (fill-pointer s) (multiple-value-bind (a b) (array-displacement s) (declare (ignore a)) b)))
++ 
++ (defmacro with-input-from-string ((var string &key index (start 0) end) . body)
++   (declare (optimize (safety 1)))
++@@ -457,10 +457,10 @@
++                    if-exists iesp if-does-not-exist idnesp external-format)))
++     (when (typep s 'stream) (c-set-stream-object1 s pf) s)))
++ 
++-(defun load-pathname-exists (z)
++-  (or (probe-file z)
++-      (when *allow-gzipped-file*
++-     (when (probe-file (string-concatenate (namestring z) ".gz"))
+++(defun load-pathname-exists (z &aux (z (link-expand (namestring z))))
+++  (cond ((eq (stat z) :file) z)
+++     (*allow-gzipped-file*
+++      (when (eq (stat (string-concatenate (namestring z) ".gz")) :file)
++        z))))
++ 
++ (defun load-pathname (p print if-does-not-exist external-format
++--- gcl-2.6.12.orig/lsp/gcl_listlib.lsp
+++++ gcl-2.6.12/lsp/gcl_listlib.lsp
++@@ -180,3 +180,34 @@
++ (defmacro nth-value (n expr)
++   (declare (optimize (safety 1)))
++   `(nth ,n (multiple-value-list ,expr)))
+++
+++(eval-when (compile eval)
+++
+++  (defmacro repl-if (tc) `(labels ((l (tr &aux (k (if kf (funcall kf tr) tr)))
+++                                    (cond (,tc n)
+++                                          ((atom tr) tr)
+++                                          ((let* ((ca (car tr))(a (l ca))(cd (cdr tr))(d (l cd)))
+++                                             (if (and (eq a ca) (eq d cd)) tr (cons a d)))))))
+++                          (declare (ftype (function (t) t) l))
+++                          (l tr))))
+++
+++(defun subst (n o tr &key key test test-not
+++             &aux (kf (when key (coerce key 'function)))
+++             (tf (when test (coerce test 'function)))
+++             (ntf (when test-not (coerce test-not 'function))))
+++  (declare (optimize (safety 1)))
+++  (check-type key (or null function))
+++  (check-type test (or null function))
+++  (check-type test-not (or null function))
+++  (repl-if (cond (tf (funcall tf o k))(ntf (not (funcall ntf o k)))((eql o k)))))
+++
+++(defun subst-if (n p tr &key key &aux (kf (when key (coerce key 'function))))
+++  (declare (optimize (safety 1)))
+++  (check-type p function)
+++  (check-type key (or null function))
+++  (repl-if (funcall p k)))
+++(defun subst-if-not (n p tr &key key &aux (kf (when key (coerce key 'function))))
+++  (declare (optimize (safety 1)))
+++  (check-type p function)
+++  (check-type key (or null function))
+++  (repl-if (not (funcall p k)))))
++--- gcl-2.6.12.orig/lsp/gcl_truename.lsp
+++++ gcl-2.6.12/lsp/gcl_truename.lsp
++@@ -23,7 +23,8 @@
++   (check-type pd pathname-designator)
++   (when (wild-pathname-p ns)
++     (error 'file-error :pathname pd :format-control "Pathname is wild"))
++-  (let* ((ns (ensure-dir-string (link-expand ns)))(ppd (pathname ns)))
+++  (let* ((ns (ensure-dir-string (link-expand ns)))
+++      (ppd (if (eq (namestring pd) ns) pd (pathname ns))))
++     (unless (or (zerop (length ns)) (stat ns))
++       (error 'file-error :pathname ns :format-control "Pathname does not exist"))
++     (let* ((d (pathname-directory ppd))
++--- gcl-2.6.12.orig/o/list.d
+++++ gcl-2.6.12/o/list.d
++@@ -528,26 +528,26 @@ object x;
++              vs_check_push(x);
++ }
++ 
++-/*
++-     Subst(new, tree) pushes
++-     the result of substituting new in tree
++-     onto vs.
++-*/
++-static void
++-subst(new, tree)
++-object new, tree;
++-{
++-     cs_check(new);
++-
++-     if (TEST(tree))
++-             vs_check_push(new);
++-     else if (type_of(tree) == t_cons) {
++-             subst(new, tree->c.c_car);
++-             subst(new, tree->c.c_cdr);
++-             stack_cons();
++-     } else
++-             vs_check_push(tree);
++-}
+++/* /\* */
+++/*   Subst(new, tree) pushes */
+++/*   the result of substituting new in tree */
+++/*   onto vs. */
+++/* *\/ */
+++/* static void */
+++/* subst(new, tree) */
+++/* object new, tree; */
+++/* { */
+++/*   cs_check(new); */
+++
+++/*   if (TEST(tree)) */
+++/*           vs_check_push(new); */
+++/*   else if (type_of(tree) == t_cons) { */
+++/*           subst(new, tree->c.c_car); */
+++/*           subst(new, tree->c.c_cdr); */
+++/*           stack_cons(); */
+++/*   } else */
+++/*           vs_check_push(tree); */
+++/* } */
++ 
++ /* static object */
++ /* subst1(object new, object tree) { */
++@@ -1153,25 +1153,25 @@ LFD(Lrplacd)()
++      vs_popp;
++ }
++ 
++-@(defun subst (new old tree &key test test_not key)
++-     saveTEST;
++-@
++-     protectTEST;
++-     setupTEST(old, test, test_not, key);
++-     subst(new, tree);
++-     tree = vs_pop;
++-        /* if (kf==identity && */
++-     /*     tf==test_eql && */
++-     /*     (is_imm_fixnum(item_compared) || */
++-     /*      ({enum type tp=type_of(item_compared);tp>t_complex || tp<t_fixnum;}))) */
++-     /*   tree=subst1qi(new,tree); */
++-     /* else */
++-     /*   tree=subst1(new,tree); */
++-     restoreTEST;
++-     @(return tree)
++-@)
+++/* @(defun subst (new old tree &key test test_not key) */
+++/*   saveTEST; */
+++/* @ */
+++/*   protectTEST; */
+++/*   setupTEST(old, test, test_not, key); */
+++/*   subst(new, tree); */
+++/*   tree = vs_pop; */
+++/*         /\* if (kf==identity && *\/ */
+++/*   /\*     tf==test_eql && *\/ */
+++/*   /\*     (is_imm_fixnum(item_compared) || *\/ */
+++/*   /\*      ({enum type tp=type_of(item_compared);tp>t_complex || tp<t_fixnum;}))) *\/ */
+++/*   /\*   tree=subst1qi(new,tree); *\/ */
+++/*   /\* else *\/ */
+++/*   /\*   tree=subst1(new,tree); *\/ */
+++/*   restoreTEST; */
+++/*   @(return tree) */
+++/* @) */
++ 
++-PREDICATE(Lsubst,Lsubst_if,Lsubst_if_not, 3)
+++/* PREDICATE(Lsubst,Lsubst_if,Lsubst_if_not, 3) */
++ 
++ 
++ @(defun nsubst (new old tree &key test test_not key)
++@@ -1506,9 +1506,9 @@ gcl_init_list_function()
++      make_function("LDIFF", Lldiff);
++      make_function("RPLACA", Lrplaca);
++      make_function("RPLACD", Lrplacd);
++-     make_function("SUBST", Lsubst);
++-     make_function("SUBST-IF", Lsubst_if);
++-     make_function("SUBST-IF-NOT", Lsubst_if_not);
+++     /* make_function("SUBST", Lsubst); */
+++     /* make_function("SUBST-IF", Lsubst_if); */
+++     /* make_function("SUBST-IF-NOT", Lsubst_if_not); */
++      make_function("NSUBST", Lnsubst);
++      make_function("NSUBST-IF", Lnsubst_if);
++      make_function("NSUBST-IF-NOT", Lnsubst_if_not);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..aa04f9dba9bed058eb2b3b45b62089b9df49baa6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,68 @@@
++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.
++ .
++ gcl (2.6.12-46) unstable; urgency=high
++ .
++   * pathnames1.12
++   * Bug fix: "maintainer script(s) do not start on #!", thanks to
++     treinen@debian.org</a>; (Closes: #843303).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/843303
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-11-18
++
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -457,11 +457,10 @@
++                    if-exists iesp if-does-not-exist idnesp external-format)))
++     (when (typep s 'stream) (c-set-stream-object1 s pf) s)))
++ 
++-(defun load-pathname-exists (z &aux (z (link-expand (namestring z))))
++-  (cond ((eq (stat z) :file) z)
++-     (*allow-gzipped-file*
++-      (when (eq (stat (string-concatenate (namestring z) ".gz")) :file)
++-       z))))
+++(defun load-pathname-exists (z)
+++  (or (probe-file z)
+++      (when *allow-gzipped-file*
+++     (probe-file (string-concatenate (namestring z) ".gz")))))
++ 
++ (defun load-pathname (p print if-does-not-exist external-format
++                      &aux (pp (merge-pathnames p))
++--- gcl-2.6.12.orig/lsp/gcl_listlib.lsp
+++++ gcl-2.6.12/lsp/gcl_listlib.lsp
++@@ -123,8 +123,8 @@
++ 
++ (defun smallnthcdr (n x)
++   (declare (fixnum n))
++-  (cond ((atom x) (when x (tp-error x proper-list)))
++-     ((= n 0) x)
+++  (cond ((= n 0) x)
+++     ((atom x) (when x (tp-error x proper-list)))
++      ((smallnthcdr (1- n) (cdr x)))))
++ 
++ (defun bignthcdr (n i s f) 
++--- gcl-2.6.12.orig/lsp/gcl_truename.lsp
+++++ gcl-2.6.12/lsp/gcl_truename.lsp
++@@ -38,5 +38,5 @@
++   (check-type pd pathname-designator)
++   (when (wild-pathname-p pn)
++     (error 'file-error :pathname pn :format-control "Pathname is wild"))
++-  (when (eq (stat (namestring pn)) :file)
+++  (when (eq (stat (link-expand (namestring pn))) :file)
++     (truename pn)))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..57073da4b78d4886243074a433e6161dd088d784
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,40 @@@
++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.
++ .
++ gcl (2.6.12-46) unstable; urgency=high
++ .
++   * pathnames1.12
++   * Bug fix: "maintainer script(s) do not start on #!", thanks to
++     treinen@debian.org</a>; (Closes: #843303).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/843303
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-11-22
++
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -460,7 +460,8 @@
++ (defun load-pathname-exists (z)
++   (or (probe-file z)
++       (when *allow-gzipped-file*
++-     (probe-file (string-concatenate (namestring z) ".gz")))))
+++     (when (probe-file (string-concatenate (namestring z) ".gz"))
+++       z))))
++ 
++ (defun load-pathname (p print if-does-not-exist external-format
++                      &aux (pp (merge-pathnames p))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f7bb11141854b90b5025750bc188f2aa6faaa74b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1196 @@@
++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.
++ .
++ gcl (2.6.12-39) unstable; urgency=medium
++ .
++   * pathnames1.1
++   * ansi-test clean target
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-12
++
++--- gcl-2.6.12.orig/h/notcomp.h
+++++ gcl-2.6.12/h/notcomp.h
++@@ -296,6 +296,8 @@ gcl_init_cmp_anon(void);
++ 
++ char FN1[PATH_MAX],FN2[PATH_MAX],FN3[PATH_MAX],FN4[PATH_MAX],FN5[PATH_MAX];
++ 
+++#define coerce_to_filename(a_,b_) coerce_to_filename1(a_,b_,sizeof(b_))
+++
++ #include <errno.h>
++ #define massert(a_) ({errno=0;if (!(a_)||errno) assert_error(#a_,__LINE__,__FILE__,__FUNCTION__);})
++ 
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -508,7 +508,7 @@ typedef void (*funcvoid)(void);
++ /* unexlin.c:808:OF */ extern int write_segment (int new, register char *ptr, register char *end); /* (new, ptr, end) int new; register char *ptr; register char *end; */
++ /* unixfasl.c:409:OF */ extern void gcl_init_unixfasl (void); /* () */
++ /* unixfsys.c:145:OF */ extern char *getwd (char *buffer); /* (buffer) char *buffer; */
++-/* unixfsys.c:209:OF */ extern void coerce_to_filename (object pathname, char *p); /* (pathname, p) object pathname; char *p; */
+++/* unixfsys.c:209:OF */ extern void coerce_to_filename1 (object pathname, char *p,unsigned sz); /* (pathname, p) object pathname; char *p; */
++ /* unixfsys.c:329:OF */ extern bool file_exists (object file); /* (file) object file; */
++ /* unixfsys.c:359:OF */ extern FILE *backup_fopen (char *filename, char *option); /* (filename, option) char *filename; char *option; */
++ /* unixfsys.c:359:OF */ extern FILE *fopen_not_dir (char *filename, char *option); /* (filename, option) char *filename; char *option; */
++--- gcl-2.6.12.orig/lsp/gcl_directory.lsp
+++++ gcl-2.6.12/lsp/gcl_directory.lsp
++@@ -48,8 +48,12 @@
++                             (expand-wild-directory (cons :relative (cdr x)) f q e)) :directory));FIXME
++          ((funcall f z y))))))
++ 
+++(defun chdir (s)
+++  (when (chdir1 (namestring (pathname s)));to expand ~/
+++    (setq *current-directory* (current-directory-pathname))))
+++
++ (defun directory (p &key &aux (p (translate-logical-pathname p))(d (pathname-directory p))
++-                 (c (unless (eq (car d) :absolute) (make-frame (concatenate 'string (getcwd) "/"))))
+++                 (c (unless (eq (car d) :absolute) (make-frame (namestring *current-directory*))))
++                  (lc (when c (length c)))
++                  (filesp (or (pathname-name p) (pathname-type p)))
++                  (v (compile-regexp (to-regexp p)))(*up-key* :back) r)
++--- gcl-2.6.12.orig/lsp/gcl_rename_file.lsp
+++++ gcl-2.6.12/lsp/gcl_rename_file.lsp
++@@ -35,6 +35,7 @@
++   (check-type spec pathname-designator)
++   (multiple-value-bind
++       (tp sz tm) (stat (namestring (truename spec)))
+++    (declare (ignore tp sz))
++     (+ tm (* (+ 17 (* 70 365)) (* 24 60 60)))))
++ 
++   
++@@ -43,5 +44,6 @@
++   (check-type spec pathname-designator)
++   (multiple-value-bind
++       (tp sz tm uid) (stat (namestring (truename spec)))
+++    (declare (ignore tp sz tm))
++     (uid-to-name uid)))
++ 
++--- gcl-2.6.12.orig/lsp/gcl_top.lsp
+++++ gcl-2.6.12/lsp/gcl_top.lsp
++@@ -607,8 +607,13 @@ First directory is checked for first nam
++ (defvar *ld* "ld")
++ (defvar *objdump* "objdump --source ")
++ 
+++(defvar *current-directory* *system-directory*)
+++
+++(defun current-directory-pathname nil (pathname (concatenate 'string (getcwd) "/")))
+++
++ (defun set-up-top-level (&aux (i (argc)) tem)
++   (declare (fixnum i))
+++  (setq *current-directory* (current-directory-pathname))
++   (setq *tmp-dir* (get-temp-dir)
++      *cc* (get-path *cc*)
++      *ld* (get-path *ld*)
++--- gcl-2.6.12.orig/lsp/gcl_truename.lsp
+++++ gcl-2.6.12/lsp/gcl_truename.lsp
++@@ -18,20 +18,18 @@
++     (pathname (typep x 'logical-pathname))
++     (stream (logical-pathname-designator-p (pathname x)))))
++ 
++-;(defvar *current-dir* (pathname (concatenate 'string (getcwd) "/"))) FIXME sync with chdir
++-
++-(defun truename (pd &aux (ppd (translate-logical-pathname pd))(ns (namestring ppd)))
+++(defun truename (pd &aux (ns (namestring (translate-logical-pathname pd))))
++   (declare (optimize (safety 1)))
++   (check-type pd pathname-designator)
++   (when (wild-pathname-p ns)
++     (error 'file-error :pathname pd :format-control "Pathname is wild"))
++-  (let* ((ns (ensure-dir-string (link-expand ns))))
+++  (let* ((ns (ensure-dir-string (link-expand ns)))(ppd (pathname ns)))
++     (unless (or (zerop (length ns)) (stat ns))
++       (error 'file-error :pathname ns :format-control "Pathname does not exist"))
++     (let* ((d (pathname-directory ppd))
++         (d1 (subst :back :up d))
++         (ppd (if (eq d d1) ppd (make-pathname :directory d1 :defaults ppd))))
++-      (if (eq (car d) :absolute) ppd (merge-pathnames ppd (concatenate 'string (getcwd) "/") nil)))))
+++      (if (eq (car d) :absolute) ppd (merge-pathnames ppd *current-directory* nil)))))
++ 
++ 
++ (defun probe-file (pd &aux (pn (translate-logical-pathname pd)))
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -351,120 +351,86 @@ open_stream(object fn,enum smmode smm, o
++   vs_mark;
++ 
++   coerce_to_filename(fn,FN1);
++-  if (smm == smm_input || smm == smm_probe) {
++-    if(FN1[0]=='|')
++-      fp = popen(FN1+1,"r");
++-    else
++-      fp = fopen_not_dir(FN1, "r");
++ 
++-    if ((fp == NULL) &&
++-     (sSAallow_gzipped_fileA->s.s_dbind != sLnil)) {
++-      union lispunion st;
++-      char buf[256];
++-      if (snprintf(buf,sizeof(buf),"%s.gz",FN1)<=0)
++-     FEerror("Cannot write .gz filename",0);
++-      st.st.st_self=buf;
++-      st.st.st_dim=st.st.st_fillp=strlen(buf);
++-      set_type_of(&st,t_string);
++-      if (fSstat((object)&st)!=Cnil) {
+++  switch(smm) {
+++
+++  case smm_input:
+++  case smm_probe:
+++
+++    if (!(fp=*FN1=='|' ? popen(FN1+1,"r") : fopen_not_dir(FN1,"r")) && sSAallow_gzipped_fileA->s.s_dbind!=Cnil) {
+++
+++      struct stat ss;
+++      massert(snprintf(FN2,sizeof(FN2),"%s.gz",FN1)>0);
+++
+++      if (!stat(FN2,&ss)) {
+++
++      FILE *pp;
++      int n;
++-     if (!(fp=tmpfile()))
++-       FEerror("Cannot create temporary file",0);
++-     if (snprintf(buf,sizeof(buf),"zcat %s.gz",FN1)<=0)
++-       FEerror("Cannot write zcat pipe name",0);
++-     if (!(pp=popen(buf,"r")))
++-       FEerror("Cannot open zcat pipe",0);
++-     while((n=fread(buf,1,sizeof(buf),pp)))
++-       if (!fwrite(buf,1,n,fp))
++-         FEerror("Cannot write pipe output to temporary file",0);
++-     if (pclose(pp)<0)
++-       FEerror("Cannot close zcat pipe",0);
++-     if (fseek(fp,0,SEEK_SET))
++-       FEerror("Cannot rewind temporary file\n",0);
+++
+++     massert((fp=tmpfile()));
+++     massert(snprintf(FN3,sizeof(FN2),"zcat %s",FN2)>0);
+++     massert(pp=popen(FN3,"r"));
+++     while ((n=fread(FN4,1,sizeof(FN3),pp)))
+++       massert(fwrite(FN4,1,n,fp)==n);
+++     massert(pclose(pp)>=0);
+++     massert(!fseek(fp,0,SEEK_SET));
+++
++       }
+++
++     }
++-    if (fp == NULL) {
++-      if (if_does_not_exist == sKerror)
++-     cannot_open(fn);
++-      else if (if_does_not_exist == sKcreate) {
++-     fp = fopen_not_dir(FN1, "w");
++-     if (fp == NULL)
++-       cannot_create(fn);
+++
+++    if (!fp) {
+++
+++      if (if_does_not_exist==sKerror) cannot_open(fn);
+++      else if (if_does_not_exist==sKcreate) {
+++     if (!(fp=fopen_not_dir(FN1,"w"))) cannot_create(fn);
++      fclose(fp);
++-     fp = fopen_not_dir(FN1, "r");
++-     if (fp == NULL)
++-       cannot_open(fn);
++-      } else if (if_does_not_exist == Cnil)
++-     return(Cnil);
++-      else
++-     FEerror("~S is an illegal IF-DOES-NOT-EXIST option.",
++-             1, if_does_not_exist);
+++     if (!(fp=fopen_not_dir(FN1,"r"))) cannot_open(fn);
+++      } else if (if_does_not_exist==Cnil) return(Cnil);
+++      else FEerror("~S is an illegal IF-DOES-NOT-EXIST option.",1,if_does_not_exist);
+++
++     }
++-  } else if (smm == smm_output || smm == smm_io) {
++-    if (FN1[0] == '|')
++-      fp = NULL;
++-    else
++-      fp = fopen_not_dir(FN1, "r");
++-    if (fp != NULL) {
+++    break;
+++
+++  case smm_output:
+++  case smm_io:
+++
+++    if ((fp=*FN1=='|' ? NULL : fopen_not_dir(FN1,"r"))) {
+++
++       fclose(fp);
++-      if (if_exists == sKerror)
++-     FILE_ERROR(fn,"File exists");
++-      else if (if_exists == sKrename) {
+++      if (if_exists==sKerror) FILE_ERROR(fn,"File exists");
+++      else if (if_exists==sKrename) {
++      massert(snprintf(FN2,sizeof(FN2),"%s.BAK",FN1)>=0);
++      massert(!rename(FN1,FN2));
++-     if (smm == smm_output)
++-       fp = fopen(FN1, "w");
++-     else
++-       fp = fopen(FN1, "w+");
++-     if (fp == NULL)
++-       cannot_create(fn);
++-      } else if (if_exists == sKrename_and_delete ||
++-              if_exists == sKnew_version ||
++-              if_exists == sKsupersede) {
++-     if (smm == smm_output)
++-       fp = fopen_not_dir(FN1, "w");
++-     else
++-       fp = fopen_not_dir(FN1, "w+");
++-     if (fp == NULL)
++-       cannot_create(fn);
++-      } else if (if_exists == sKoverwrite) {
++-     fp = fopen_not_dir(FN1, "r+");
++-     if (fp == NULL)
++-       cannot_open(fn);
++-      } else if (if_exists == sKappend) {
++-     if (smm == smm_output)
++-       fp = fopen_not_dir(FN1, "a");
++-     else
++-       fp = fopen_not_dir(FN1, "a+");
++-     if (fp == NULL)
+++     if (!(fp=fopen(FN1,smm==smm_output ? "w" : "w+"))) cannot_create(fn);
+++      } else if (if_exists==sKrename_and_delete ||
+++              if_exists==sKnew_version ||
+++              if_exists==sKsupersede) {
+++     if (!(fp=fopen(FN1,smm==smm_output ? "w" : "w+"))) cannot_create(fn);
+++      } else if (if_exists==sKoverwrite) {
+++     if (!(fp=fopen_not_dir(FN1,"r+"))) cannot_open(fn);
+++      } else if (if_exists==sKappend) {
+++     if (!(fp = fopen_not_dir(FN1,smm==smm_output ? "a" : "a+")))
++        FEerror("Cannot append to the file ~A.",1,fn);
++-      } else if (if_exists == Cnil)
++-     return(Cnil);
++-      else
++-     FEerror("~S is an illegal IF-EXISTS option.",
++-             1, if_exists);
+++      } else if (if_exists == Cnil) return(Cnil);
+++      else FEerror("~S is an illegal IF-EXISTS option.",1,if_exists);
+++
++     } else {
+++
++       if (if_does_not_exist == sKerror)
++      FILE_ERROR(fn,"The file does not exist");
++       else if (if_does_not_exist == sKcreate) {
++-     if (smm == smm_output) {
++-       if(FN1[0]=='|')
++-         fp = popen(FN1+1,"w");
++-       else
++-         fp = fopen_not_dir(FN1, "w");
++-     } else
++-       fp = fopen_not_dir(FN1, "w+");
++-     if (fp == NULL)
+++     if (!(fp=smm==smm_output ? (*FN1=='|' ? popen(FN1+1,"w") : fopen_not_dir(FN1, "w")) : fopen_not_dir(FN1, "w+")))
++        cannot_create(fn);
++-      } else if (if_does_not_exist == Cnil)
++-     return(Cnil);
++-      else
++-     FEerror("~S is an illegal IF-DOES-NOT-EXIST option.",
++-             1, if_does_not_exist);
+++      } else if (if_does_not_exist==Cnil) return(Cnil);
+++      else FEerror("~S is an illegal IF-DOES-NOT-EXIST option.",1,if_does_not_exist);
++     }
++-  } else
+++    break;
+++
+++  default:
++     FEerror("Illegal open mode for ~S.",1,fn);
+++    break;
+++  }
++ 
++   vs_push(make_simple_string(FN1));
++   x = alloc_object(t_stream);
++@@ -600,10 +566,6 @@ close_stream(object strm)  {
++       fclose(strm->sm.sm_fp);
++     strm->sm.sm_fp = NULL;
++     strm->sm.sm_fd = -1;
++-    if (strm->sm.sm_object0 &&
++-     type_of(strm->sm.sm_object0 )==t_cons &&
++-     Mcar(strm->sm.sm_object0)==sSAallow_gzipped_fileA)
++-      ifuncall1(sLdelete_file,Mcdr(strm->sm.sm_object0));
++     break;
++ 
++   case smm_file_synonym:
++@@ -1762,9 +1724,7 @@ LFD(siLoutput_stream_string)()
++ }
++ 
++ DEFUN_NEW("FILE-STREAM-P",object,fSfile_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++-  RETURN1(type_of(x)==t_stream &&
++-       (x->sm.sm_mode==smm_input || x->sm.sm_mode==smm_output || x->sm.sm_mode==smm_io || x->sm.sm_mode==smm_probe)
++-       ? Ct : Cnil);
+++  RETURN1(type_of(x)==t_stream && file_synonym_stream_p(x) ? Ct : Cnil);
++ }
++ 
++ DEFUN_NEW("SYNONYM-STREAM-P",object,fSsynonym_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -19,8 +19,6 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ 
++ */
++ 
++-#include <string.h>
++-#include <stdlib.h>
++ #include <unistd.h>
++ #include <errno.h>
++ 
++@@ -32,140 +30,17 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #include <pwd.h>
++ #endif
++ 
++-#ifdef __MINGW32__ 
++-#  include <windows.h> 
+++#ifdef __MINGW32__
+++#  include <windows.h>
++ /* Windows has no symlink, therefore no lstat.  Without symlinks lstat
++    is equivalent to stat anyway.  */
++ #  define S_ISLNK(a) 0
++ #  define lstat stat
++-#endif 
++-
++-#ifdef BSD
++-#define HAVE_RENAME
++ #endif
++ 
++-#ifdef NEED_GETWD
++-#include <sys/dir.h>
++-
++-
++-#ifndef HAVE_GETCWD
++-char dotdot[3*16+2] = "../../../../../../../../../../../../../../../../.";
++-#include <mnttab.h>
++-static char *getwd_buf;
++-static int getwd_bufp;
++-
++-static char *
++-getwd(buffer)
++-char *buffer;
++-{
++-     getwd_buf = buffer;
++-     getwd1(0);
++-     if (getwd_bufp == 0)
++-             getwd_buf[getwd_bufp++] = '/';
++-     getwd_buf[getwd_bufp] = '\0';
++-     return(getwd_buf);
++-}
++-
++-getwd1(n)
++-int n;
++-{
++-     struct stat st, dev_st;
++-     struct direct dir;
++-     ino_t ino;
++-     struct mnttab mnt;
++-     FILE *fp;
++-     register int i;
++-     char buf[BUFSIZ];
++-     static char dev_name[64];
++-
++-     if (stat(dotdot+(16-n)*3, &st) < 0)
++-             FEerror("Can't get the current working directory.", 0);
++-     ino = st.st_ino;
++-     if (ino == 2)
++-             goto ROOT;
++-     getwd1(n+1);
++-     fp = fopen(dotdot+(16-n-1)*3, "r");
++-     if (fp == NULL)
++-             FEerror("Can't get the current working directory.", 0);
++-     setbuf(fp, buf);
++-     fread(&dir, sizeof(struct direct), 1, fp);
++-     fread(&dir, sizeof(struct direct), 1, fp);
++-     for (;;) {
++-             if (fread(&dir, sizeof(struct direct), 1, fp) <= 0)
++-                     break;
++-             if (dir.d_ino == ino)
++-                     goto FOUND;
++-     }
++-     fclose(fp);
++-     FEerror("Can't get the current working directory.", 0);
++-
++-FOUND:
++-     fclose(fp);
++-     getwd_buf[getwd_bufp++] = '/';
++-     for (i = 0;  i < DIRSIZ && dir.d_name[i] != '\0';  i++)
++-             getwd_buf[getwd_bufp++] = dir.d_name[i];
++-     return;
++-
++-ROOT:
++-     fp = fopen("/etc/mnttab", "r");
++-     if (fp == NULL)
++-             FEerror("Can't get the current working directory.", 0);
++-     setbuf(fp, buf);
++-     for (;;) {
++-             if (fread(&mnt, sizeof(struct mnttab), 1, fp) <= 0)
++-                     break;
++-             if (mnt.mt_dev[0] != '/') {
++-                     strcpy(dev_name, "/dev/dsk/");
++-                     strcat(dev_name, mnt.mt_dev);
++-                     stat(dev_name, &dev_st);
++-             } else
++-                     stat(mnt.mt_dev, &dev_st);
++-             if (dev_st.st_rdev == st.st_dev)
++-                     goto DEV_FOUND;
++-     }
++-     fclose(fp);
++-     getwd_bufp = 0;
++-     return;
++-
++-DEV_FOUND:
++-     fclose(fp);
++-     getwd_bufp = 0;
++-     for (i = 0;  mnt.mt_filsys[i] != '\0';  i++)
++-             getwd_buf[i] = mnt.mt_filsys[i];
++-     /* BUG FIX by Grant J. Munsey */
++-     if (i == 1 && *getwd_buf == '/')
++-             i = 0;  /* don't add an empty directory name */
++-     /* END OF BUG FIX */
++-     getwd_bufp = i;
++-}
++-#endif   /* not HAVE_GETCWD */
++-#endif
++-
++-#ifndef MAXPATHLEN
++-#define MAXPATHLEN 512
++-#endif
++-
++-
++-#ifdef HAVE_GETCWD
++-char *
++-getwd(char *buffer) {
++-#ifndef _WIN32    
++-  char *getcwd(char *, size_t);
++-#endif
++-  return(getcwd(buffer, MAXPATHLEN));
++-}
++-#endif
++-
++-
++-#define pcopy(a_,b_,c_,d_) ({\
++-      unsigned _c=c_,_d=d_;\
++-      if (_c+_d>=MAXPATHLEN-16) FEerror("Can't expand pathname ~a",1,namestring);\
++-      bcopy(a_,b_+_c,_d);\
++-      b_[_c+_d]=0;\
++-      })
++-
++ static object
++ get_string(object x) {
+++
++   switch(type_of(x)) {
++   case t_symbol:
++   case t_string:
++@@ -180,182 +55,110 @@ get_string(object x) {
++     case smm_io:
++       return get_string(x->sm.sm_object1);
++     case smm_file_synonym:
++-    case smm_synonym:
++       return get_string(x->sm.sm_object0->s.s_dbind);
++     }
++   }
+++
++   return Cnil;
++-}
++ 
+++}
++ 
++ void
++-coerce_to_filename(object pathname,char *p) {
+++coerce_to_filename1(object spec, char *p,unsigned sz) {
++ 
++-  object namestring=get_string(pathname);
++-  unsigned e=namestring->st.st_fillp;
++-  char *q=namestring->st.st_self,*qe=q+e;
+++  object namestring=get_string(spec);
++ 
++-  if (pathname==Cnil||namestring==Cnil)
++-    FEerror ( "NIL argument.", 1, pathname ); 
++-  
++-  if (*q=='~' && e) {
+++  massert(namestring->st.st_fillp<sz);
+++  memcpy(p,namestring->st.st_self,namestring->st.st_fillp);
+++  p[namestring->st.st_fillp]=0;
++ 
++-    unsigned m=0;
++-    char *s=++q,*c;
+++#ifdef FIX_FILENAME
+++  FIX_FILENAME(spec,p);
+++#endif
++ 
++-    for (;s<qe && *s!='/';s++);
+++}
++ 
++-    if (s==q && (c=getenv("HOME")))
+++DEFUN_NEW("UID-TO-NAME",object,fSuid_to_name,SI,1,1,NONE,OI,OO,OO,OO,(fixnum uid),"") {
+++  struct passwd *pwent,pw;
+++  long r;
++ 
++-      pcopy(c,p,0,m=strlen(c));
++-
++-#if !defined(NO_PWD_H) && !defined(STATIC_LINKING)
++-    else {
++-#ifndef __STDC__
++-      extern struct passwd *getpwuid();
++-      extern struct passwd *getpwnam();
++-#endif
++-      struct passwd *pwent;
++-      
++-      if (s==q)
++-     pwent=getpwuid(getuid());
++-      else {
++-     *s=0;
++-     pwent=getpwnam(q);
++-     *s='/';
++-      }
++-      
++-      if (!pwent)
++-     FEerror("Can't expand pathname ~a",1,namestring);
++-      pcopy(pwent->pw_dir,p,0,m=strlen(pwent->pw_dir));
++-      
++-    }
++-#endif
+++  massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
+++  massert(r<sizeof(FN1));
++ 
++-    pcopy(s,p,m,qe-s);
++-    
++-  } else
+++  massert(!getpwuid_r(uid,&pw,FN1,r,&pwent));
+++
+++  RETURN1(make_simple_string(pwent->pw_name));
++ 
++-    pcopy(q,p,0,e);
++-  
++-#ifdef FIX_FILENAME
++-  FIX_FILENAME(pathname,p);
++-#endif
++-    
++ }
++ 
++-object sSAallow_gzipped_fileA;
+++DEFUN_NEW("HOME-NAMESTRING",object,fShome_namestring,SI,1,1,NONE,OO,OO,OO,OO,(object nm),"") {
++ 
++-bool
++-file_exists(object file)
++-{
++-     char filename[MAXPATHLEN];
++-     struct stat filestatus;
+++  struct passwd *pwent,pw;
+++  long r;
++ 
++-     coerce_to_filename(file, filename);
+++  massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
+++  massert(r<sizeof(FN1));
++ 
++-#ifdef __MINGW32__
++-        {
++-            char *p;
++-            for (p = filename;  *p != '\0';  p++);
++-            if ( (p > filename) &&
++-                 ( ( *(p-1) == '/' ) || ( *(p-1) == '\\' ) ) ) {
++-               *(p-1) = '\0'; 
++-            }
++-        }
++-#endif        
++-
++-     if (stat(filename, &filestatus) >= 0 && !S_ISDIR(filestatus.st_mode))
++-       {
++-#ifdef AIX
++-         /* if /tmp/foo is not a directory /tmp/foo/ should not exist */
++-         if (filename[strlen(filename)-1] == '/' &&
++-             !( filestatus.st_mode & S_IFDIR))
++-             return(FALSE);
++-#endif           
++-
++-         return TRUE;
++-       }
++-     else
++-       if (sSAallow_gzipped_fileA->s.s_dbind != sLnil
++-           && (strcat(filename,".gz"),
++-               stat(filename, &filestatus) >= 0 && !S_ISDIR(filestatus.st_mode)))
++-           
++-           return TRUE;
+++  if (nm->st.st_fillp==1)
++ 
++-     else
++-             return(FALSE);
++-}
+++    if ((pw.pw_dir=getenv("HOME")))
+++      pwent=&pw;
+++    else
+++      massert(!getpwuid_r(getuid(),&pw,FN1,r,&pwent) && pwent);
++ 
++-FILE *
++-fopen_not_dir(char *filename,char * option) {
+++  else {
++ 
++-  struct stat ss;
+++    massert(nm->st.st_fillp<sizeof(FN2));
+++    memcpy(FN2,nm->st.st_self+1,nm->st.st_fillp-1);
+++    FN2[nm->st.st_fillp-1]=0;
++ 
++-  if (!stat(filename,&ss) && S_ISDIR(ss.st_mode))
++-    return NULL;
++-  else
++-    return fopen(filename,option);
+++    massert(!getpwnam_r(FN2,&pw,FN1,r,&pwent) && pwent);
+++
+++  }
+++
+++  massert(strlen(pwent->pw_dir)+2<sizeof(FN3));
+++  memcpy(FN3,pwent->pw_dir,strlen(pwent->pw_dir));
+++  FN3[strlen(pwent->pw_dir)]='/';
+++  FN3[strlen(pwent->pw_dir)+1]=0;
+++  RETURN1(make_simple_string(FN3));
++ 
++ }
++ 
+++#define FILE_EXISTS_P(a_,b_) !stat(a_,&b_) && S_ISREG(b_.st_mode)
+++#define DIR_EXISTS_P(a_,b_) !stat(a_,&b_) && S_ISDIR(b_.st_mode)
+++
++ FILE *
++-backup_fopen(char *filename, char *option)
++-{
++-     char backupfilename[MAXPATHLEN];
++-     char command[MAXPATHLEN * 2];
+++fopen_not_dir(char *filename,char *option) {
+++
+++  struct stat ss;
+++
+++  return DIR_EXISTS_P(filename,ss) ? NULL : fopen(filename,option);
++ 
++-     strcat(strcpy(backupfilename, filename), ".BAK");
++-     sprintf(command, "mv %s %s", filename, backupfilename);
++-     msystem(command);
++-     return(fopen(filename, option));
++ }
++ 
++ int
++-file_len(FILE *fp)
++-{
++-     struct stat filestatus;
+++file_len(FILE *fp) {/*FIXME dir*/
++ 
++-     if (fstat(fileno(fp), &filestatus)==0) 
++-     return(filestatus.st_size);
++-     else return 0;
++-}
+++  struct stat filestatus;
++ 
++-DEF_ORDINARY("DIRECTORY",sKdirectory,KEYWORD,"");
++-DEF_ORDINARY("LINK",sKlink,KEYWORD,"");
++-DEF_ORDINARY("FILE",sKfile,KEYWORD,"");
+++  return fstat(fileno(fp), &filestatus) ? 0 : filestatus.st_size;
++ 
++-/* export these for AXIOM */
++-int gcl_putenv(char *s) {return putenv(s);}
++-char *gcl_strncpy(char *d,const char *s,size_t z) {return strncpy(d,s,z);}
++-char *gcl_strncpy_chk(size_t z) {char a[10],b[10];return strncpy(a,b,z);}/*compile in __strncpy_chk with FORTIFY_SOURCE*/
++-#ifdef __MINGW32__ 
++-#define uid_t int
++-#endif
++-uid_t gcl_geteuid(void) {
++-#ifndef __MINGW32__ 
++-  return geteuid();
++-#else
++-  return 0;
++-#endif
++-}
++-uid_t gcl_getegid(void) {
++-#ifndef __MINGW32__ 
++-  return getegid();
++-#else
++-  return 0;
++-#endif
++ }
++-int gcl_dup2(int o,int n) {return dup2(o,n);}
++-char *gcl_gets(char *s,int z) {return fgets(s,z,stdin);}
++-int gcl_puts(const char *s) {int i=fputs(s,stdout);fflush(stdout);return i;}
++ 
+++bool
+++file_exists(object x) {
++ 
++-int gcl_feof(void *v) {return feof(((FILE *)v));}
++-int gcl_getc(void *v) {return getc(((FILE *)v));}
++-int gcl_putc(int i,void *v) {return putc(i,((FILE *)v));}
+++  struct stat ss;
+++
+++  coerce_to_filename(x,FN1);
++ 
+++  return FILE_EXISTS_P(FN1,ss) ? TRUE : FALSE;
++ 
+++}
+++
+++DEF_ORDINARY("DIRECTORY",sKdirectory,KEYWORD,"");
+++DEF_ORDINARY("LINK",sKlink,KEYWORD,"");
+++DEF_ORDINARY("FILE",sKfile,KEYWORD,"");
++ 
++ DEFUNM_NEW("STAT",object,fSstat,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++ 
++@@ -381,6 +184,31 @@ DEFUNM_NEW("STAT",object,fSstat,SI,1,1,N
++          make_fixnum(ss.st_uid));
++ }
++ 
+++#include <sys/types.h>
+++#include <dirent.h>
+++#include <fcntl.h>
+++#include <unistd.h>
+++
+++DEFUN_NEW("READLINKAT",object,fSreadlinkat,SI,2,2,NONE,OI,OO,OO,OO,(fixnum d,object s),"") {
+++  ssize_t l,z1;
+++
+++  check_type_string(&s);
+++  /* l=s->st.st_hasfillp ? s->st.st_fillp : s->st.st_dim; */
+++  z1=length(s);
+++  massert(z1<sizeof(FN1));
+++  memcpy(FN1,s->st.st_self,z1);
+++  FN1[z1]=0;
+++  massert((l=readlinkat(d ? dirfd((DIR *)d) : AT_FDCWD,FN1,FN2,sizeof(FN2)))>=0 && l<sizeof(FN2));
+++  FN2[l]=0;
+++  RETURN1(make_simple_string(FN2));
+++
+++}
+++
+++DEFUN_NEW("GETCWD",object,fSgetcwd,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
+++  massert((getcwd(FN1,sizeof(FN1))));
+++  RETURN1(make_simple_string(FN1));
+++}
+++
++ DEFUN_NEW("SETENV",object,fSsetenv,SI,2,2,NONE,OO,OO,OO,OO,(object variable,object value),"Set environment VARIABLE to VALUE")
++ 
++ {
++@@ -407,13 +235,9 @@ DEFUN_NEW("SETENV",object,fSsetenv,SI,2,
++ #include <dirent.h>
++ 
++ DEFUN_NEW("OPENDIR",object,fSopendir,SI,1,1,NONE,IO,OO,OO,OO,(object x),"") {
++-  DIR *d;
++-  char filename[MAXPATHLEN];
++   check_type_string(&x);
++-  memcpy(filename,x->st.st_self,x->st.st_fillp);
++-  filename[x->st.st_fillp]=0;
++-  d=opendir(filename);
++-  return (object)d;
+++  coerce_to_filename(x,FN1);
+++  return (object)opendir(FN1);
++ }
++ 
++ #ifdef HAVE_D_TYPE
++@@ -430,19 +254,27 @@ DEFUN_NEW("D-TYPE-LIST",object,fSd_type_
++             MMcons(make_fixnum(DT_UNKNOWN),make_keyword("UNKNOWN"))
++             ));
++ }
+++#else
+++#define DT_UNKNOWN 0
++ #endif
++ 
++ DEFUN_NEW("READDIR",object,fSreaddir,SI,3,3,NONE,OI,IO,OO,OO,(fixnum x,fixnum y,object s),"") {
+++
++   struct dirent *e;
++   object z;
++   long tl;
++   size_t l;
+++
++   if (!x) RETURN1(Cnil);
+++
++   tl=telldir((DIR *)x);
++-#ifdef HAVE_D_TYPE
++-  for (;(e=readdir((DIR *)x)) && y!=DT_UNKNOWN && e->d_type!=y;);
+++
+++#ifndef HAVE_D_TYPE
+++  y=DT_UNKNOWN;
++ #endif
+++  for (;(e=readdir((DIR *)x)) && y!=DT_UNKNOWN && e->d_type!=y;);
++   if (!e) RETURN1(Cnil);
+++
++   if (s==Cnil)
++     z=make_simple_string(e->d_name);
++   else {
++@@ -457,10 +289,13 @@ DEFUN_NEW("READDIR",object,fSreaddir,SI,
++       RETURN1(make_fixnum(l));
++     }
++   }
+++
++ #ifdef HAVE_D_TYPE
++   if (y==DT_UNKNOWN) z=MMcons(z,make_fixnum(e->d_type));
++ #endif
+++
++   RETURN1(z);
+++
++ }
++ 
++ DEFUN_NEW("CLOSEDIR",object,fSclosedir,SI,1,1,NONE,OI,OO,OO,OO,(fixnum x),"") {
++@@ -468,165 +303,174 @@ DEFUN_NEW("CLOSEDIR",object,fSclosedir,S
++   return Cnil;
++ }
++ 
++-DEFUN_NEW("MKDIR",object,fSmkdir,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++-
++-  char filename[MAXPATHLEN];
+++DEFUN_NEW("RENAME",object,fSrename,SI,2,2,NONE,OO,OO,OO,OO,(object x,object y),"") {
++ 
++   check_type_string(&x);
+++  check_type_string(&y);
++ 
++-  memcpy(filename,x->st.st_self,x->st.st_fillp);
++-  filename[x->st.st_fillp]=0;
++-
++-#ifdef __MINGW32__
++-  if (mkdir(filename) < 0)
++-#else        
++-  if (mkdir(filename,01777) < 0)
++-#endif        
++-    FEerror("Cannot make the directory ~S.", 1, vs_base[0]);
+++  coerce_to_filename(x,FN1);
+++  coerce_to_filename(y,FN2);
++ 
++-  RETURN1(x);
+++  RETURN1(rename(FN1,FN2) ? Cnil : Ct);
++ 
++ }
++ 
++-DEFUN_NEW("RMDIR",object,fSrmdir,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++DEFUN_NEW("UNLINK",object,fSunlink,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++
++   check_type_string(&x);
++ 
++   coerce_to_filename(x,FN1);
++ 
++-  RETURN1(rmdir(FN1) ? Cnil : Ct);
+++  RETURN1(unlink(FN1) ? Cnil : Ct);
++ 
++ }
++ 
++ 
+++DEFUN_NEW("CHDIR1",object,fSchdir1,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++ 
++-#include <sys/types.h>
++-#include <dirent.h>
++-#include <fcntl.h>
++-#include <unistd.h>
+++  check_type_string(&x);
++ 
++-DEFUN_NEW("READLINKAT",object,fSreadlinkat,SI,2,2,NONE,OI,OO,OO,OO,(fixnum d,object s),"") {
++-  char *b1,*b2=NULL;
++-  ssize_t l,z1,z2;
++-  check_type_string(&s);
++-  /* l=s->st.st_hasfillp ? s->st.st_fillp : s->st.st_dim; */
++-  z1=length(s);
++-  massert((b1=alloca(z1+1)));
++-  memcpy(b1,s->st.st_self,z1);
++-  b1[z1]=0;
++-  for (l=z2=0;l>=z2;) {
++-    memset(b2,0,z2);
++-    z2+=z2+10;
++-    massert((b2=alloca(z2)));
++-    massert((l=readlinkat(d ? dirfd((DIR *)d) : AT_FDCWD,b1,b2,z2))>=0);
++-  }
++-  b2[l]=0;
++-  s=make_simple_string(b2);
++-  memset(b1,0,z1);
++-  memset(b2,0,z2);
++-  RETURN1(s);
++-}
+++  coerce_to_filename(x,FN1);
++ 
++-DEFUN_NEW("GETCWD",object,fSgetcwd,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
++-  char *b=NULL;
++-  size_t z;
++-  object s;
++-
++-  for (z=0;!(errno=0) && !getcwd(b,z) && errno==ERANGE;b=memset(b,0,z),z+=z+10,({massert((b=alloca(z)));}));
++-  massert((b=getcwd(b,z)));
++-  s=make_simple_string(b);
++-  memset(b,0,z);
++-  RETURN1(s);
+++  RETURN1(chdir(FN1) ? Cnil : Ct);
++ 
++ }
++ 
++-DEFUN_NEW("UID-TO-NAME",object,fSuid_to_name,SI,1,1,NONE,OI,OO,OO,OO,(fixnum uid),"") {
++-  struct passwd *pwent,pw;
++-  char *b;
++-  long r;
+++DEFUN_NEW("MKDIR",object,fSmkdir,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++ 
++-  massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
++-  massert(b=alloca(r));
+++  check_type_string(&x);
++ 
++-  massert(!getpwuid_r(uid,&pw,b,r,&pwent));
+++  coerce_to_filename(x,FN1);
++ 
++-  RETURN1(make_simple_string(pwent->pw_name));
+++  RETURN1(mkdir(FN1
+++#ifndef __MINGW32__
+++             ,01777
+++#endif
+++             ) ? Cnil : Ct);
++ 
++ }
++ 
++-DEFUN_NEW("HOME-NAMESTRING",object,fShome_namestring,SI,1,1,NONE,OO,OO,OO,OO,(object nm),"") {
+++DEFUN_NEW("RMDIR",object,fSrmdir,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
+++  check_type_string(&x);
++ 
++-  struct passwd *pwent,pw;
++-  char *b;
++-  long r;
+++  coerce_to_filename(x,FN1);
++ 
++-  massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
++-  massert(b=alloca(r));
+++  RETURN1(rmdir(FN1) ? Cnil : Ct);
++ 
++-  if (nm->st.st_fillp==1)
+++}
++ 
++-    if ((pw.pw_dir=getenv("HOME")))
++-      pwent=&pw;
++-    else
++-      massert(!getpwuid_r(getuid(),&pw,b,r,&pwent));
+++DEFVAR("*LOAD-WITH-FREAD*",sSAload_with_freadA,SI,Cnil,"");
++ 
++-  else {
+++#ifdef _WIN32
++ 
++-    char *name;
+++void *
+++get_mmap(FILE *fp,void **ve) {
++ 
++-    massert(name=alloca(nm->st.st_fillp));
++-    memcpy(name,nm->st.st_self+1,nm->st.st_fillp-1);
++-    name[nm->st.st_fillp-1]=0;
+++  int n;
+++  void *st;
+++  size_t sz;
+++  HANDLE handle;
+++
+++  massert((sz=file_len(fp))>0);
+++  if (sSAload_with_freadA->s.s_dbind==Cnil) {
+++    n=fileno(fp);
+++    massert((n=fileno(fp))>2);
+++    massert(handle = CreateFileMapping((HANDLE)_get_osfhandle(n), NULL, PAGE_WRITECOPY, 0, 0, NULL));
+++    massert(st=MapViewOfFile(handle,FILE_MAP_COPY,0,0,sz));
+++    CloseHandle(handle);
+++  } else {
+++    massert(st=malloc(sz));
+++    massert(fread(st,sz,1,fp)==1);
+++  }
++ 
++-    massert(!getpwnam_r(name,&pw,b,r,&pwent));
+++  *ve=st+sz;
++ 
++-  }
+++  return st;
+++
+++}
++ 
++-  massert((b=alloca(strlen(pwent->pw_dir)+2)));
++-  memcpy(b,pwent->pw_dir,strlen(pwent->pw_dir));
++-  b[strlen(pwent->pw_dir)]='/';
++-  b[strlen(pwent->pw_dir)+1]=0;
++-  RETURN1(make_simple_string(b));
+++int
+++un_mmap(void *v1,void *ve) {
+++
+++  if (sSAload_with_freadA->s.s_dbind==Cnil)
+++    return UnmapViewOfFile(v1) ? 0 : -1;
+++  else {
+++    free(v1);
+++    return 0;
+++  }
++ 
++ }
++ 
++-DEFUN_NEW("RENAME",object,fSrename,SI,2,2,NONE,OO,OO,OO,OO,(object x,object y),"") {
++ 
++-  check_type_string(&x);
++-  check_type_string(&y);
+++#else
++ 
++-  coerce_to_filename(x,FN1);
++-  coerce_to_filename(y,FN2);
+++#include <sys/mman.h>
++ 
++-  RETURN1(rename(FN1,FN2) ? Cnil : Ct);
+++void *
+++get_mmap(FILE *fp,void **ve) {
+++
+++  int n;
+++  void *v1;
+++  struct stat ss;
+++
+++  massert((n=fileno(fp))>2);
+++  massert(!fstat(n,&ss));
+++  if (sSAload_with_freadA->s.s_dbind==Cnil) {
+++    massert((v1=mmap(0,ss.st_size,PROT_READ|PROT_WRITE,MAP_PRIVATE,n,0))!=(void *)-1);
+++  } else {
+++    massert(v1=malloc(ss.st_size));
+++    massert(fread(v1,ss.st_size,1,fp)==1);
+++  }
+++
+++  *ve=v1+ss.st_size;
+++  return v1;
++ 
++ }
++ 
++-DEFUN_NEW("UNLINK",object,fSunlink,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++ 
++-  coerce_to_filename(x,FN1);
+++int
+++un_mmap(void *v1,void *ve) {
++ 
++-  RETURN1(unlink(FN1) ? Cnil : Ct);
+++  if (sSAload_with_freadA->s.s_dbind==Cnil)
+++    return munmap(v1,ve-v1);
+++  else {
+++    free(v1);
+++    return 0;
+++  }
++ 
++ }
++ 
+++#endif
++ 
++-static void
++-FFN(siLchdir)(void)
++-{
++-     char filename[MAXPATHLEN];
++-
++-     check_arg(1);
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     coerce_to_filename(vs_base[0], filename);
++-
++-     if (chdir(filename) < 0)
++-             FEerror("Can't change the current directory to ~S.",
++-                     1, vs_base[0]);
+++/* export these for AXIOM */
+++int gcl_putenv(char *s) {return putenv(s);}
+++char *gcl_strncpy(char *d,const char *s,size_t z) {return strncpy(d,s,z);}
+++char *gcl_strncpy_chk(size_t z) {char a[10],b[10];return strncpy(a,b,z);}/*compile in __strncpy_chk with FORTIFY_SOURCE*/
+++#ifdef __MINGW32__
+++#define uid_t int
+++#endif
+++uid_t gcl_geteuid(void) {
+++#ifndef __MINGW32__
+++  return geteuid();
+++#else
+++  return 0;
+++#endif
+++}
+++uid_t gcl_getegid(void) {
+++#ifndef __MINGW32__
+++  return getegid();
+++#else
+++  return 0;
+++#endif
++ }
+++int gcl_dup2(int o,int n) {return dup2(o,n);}
+++char *gcl_gets(char *s,int z) {return fgets(s,z,stdin);}
+++int gcl_puts(const char *s) {int i=fputs(s,stdout);fflush(stdout);return i;}
+++
+++int gcl_feof(void *v) {return feof(((FILE *)v));}
+++int gcl_getc(void *v) {return getc(((FILE *)v));}
+++int gcl_putc(int i,void *v) {return putc(i,((FILE *)v));}
++ 
++ void
++ gcl_init_unixfsys(void) {
++-
++-  make_si_function("CHDIR", siLchdir);
++-
++ }
++--- gcl-2.6.12.orig/o/unixsys.c
+++++ gcl-2.6.12/o/unixsys.c
++@@ -235,89 +235,6 @@ DEFUN_NEW("GETPID",object,fSgetpid,SI,0,
++ }
++ 
++ 
++-DEFVAR("*LOAD-WITH-FREAD*",sSAload_with_freadA,SI,Cnil,"");
++-
++-#ifdef _WIN32
++-
++-void *
++-get_mmap(FILE *fp,void **ve) {
++-  
++-  int n;
++-  void *st;
++-  size_t sz;
++-  HANDLE handle;
++-
++-  massert((sz=file_len(fp))>0);
++-  if (sSAload_with_freadA->s.s_dbind==Cnil) {
++-    n=fileno(fp);
++-    massert((n=fileno(fp))>2);
++-    massert(handle = CreateFileMapping((HANDLE)_get_osfhandle(n), NULL, PAGE_WRITECOPY, 0, 0, NULL));
++-    massert(st=MapViewOfFile(handle,FILE_MAP_COPY,0,0,sz));
++-    CloseHandle(handle);
++-  } else {
++-    massert(st=malloc(sz));
++-    massert(fread(st,sz,1,fp)==1);
++-  }
++-
++-  *ve=st+sz;
++-
++-  return st;
++-
++-}
++-
++-int
++-un_mmap(void *v1,void *ve) {
++-
++-  if (sSAload_with_freadA->s.s_dbind==Cnil)
++-    return UnmapViewOfFile(v1) ? 0 : -1;
++-  else {
++-    free(v1);
++-    return 0;
++-  }
++-
++-}
++-
++-
++-#else
++-
++-#include <sys/mman.h>
++-
++-void *
++-get_mmap(FILE *fp,void **ve) {
++-  
++-  int n;
++-  void *v1;
++-  struct stat ss;
++-
++-  massert((n=fileno(fp))>2);
++-  massert(!fstat(n,&ss));
++-  if (sSAload_with_freadA->s.s_dbind==Cnil) {
++-    massert((v1=mmap(0,ss.st_size,PROT_READ|PROT_WRITE,MAP_PRIVATE,n,0))!=(void *)-1);
++-  } else {
++-    massert(v1=malloc(ss.st_size));
++-    massert(fread(v1,ss.st_size,1,fp)==1);
++-  }
++-
++-  *ve=v1+ss.st_size;
++-  return v1;
++-
++-}
++- 
++-
++-int
++-un_mmap(void *v1,void *ve) {
++-
++-  if (sSAload_with_freadA->s.s_dbind==Cnil)
++-    return munmap(v1,ve-v1);
++-  else {
++-    free(v1);
++-    return 0;
++-  }
++-
++-}
++-
++-#endif
++-
++ void
++ gcl_init_unixsys(void) {
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..311c6277e0c9012b7e7c3be1d2c546dd42ac7257
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,48 @@@
++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.
++ .
++ gcl (2.6.12-40) unstable; urgency=medium
++ .
++   * pathnames1.2
++   * Bug fix: "popen arguments not quoted causes trouble and security
++     issues", thanks to axel (Closes: #802203).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/802203
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-14
++
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -83,7 +83,7 @@ DEFUN_NEW("UID-TO-NAME",object,fSuid_to_
++   long r;
++ 
++   massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
++-  massert(r<sizeof(FN1));
+++  massert(r<=sizeof(FN1));/*FIXME maybe once at image startup*/
++ 
++   massert(!getpwuid_r(uid,&pw,FN1,r,&pwent));
++ 
++@@ -97,7 +97,7 @@ DEFUN_NEW("HOME-NAMESTRING",object,fShom
++   long r;
++ 
++   massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
++-  massert(r<sizeof(FN1));
+++  massert(r<=sizeof(FN1));/*FIXME maybe once at image startup*/
++ 
++   if (nm->st.st_fillp==1)
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e52d891610b14d2b519574229c698dd3fd459537
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++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.
++ .
++ gcl (2.6.12-41) unstable; urgency=medium
++ .
++   * pathnames1.3, kfreebsd fix
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-14
++
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -180,7 +180,7 @@ DEFUNM_NEW("STAT",object,fSstat,SI,1,1,N
++     RETURN4(S_ISDIR(ss.st_mode) ? sKdirectory :
++          (S_ISLNK(ss.st_mode) ? sKlink : sKfile),
++          make_fixnum(ss.st_size),
++-         make_fixnum(ss.st_ctime),
+++         make_fixnum(ss.st_mtime),
++          make_fixnum(ss.st_uid));
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..66b8ac0d0fbb56d9dfa12e56e0bd1af434227d25
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,10494 @@@
++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.
++ .
++ gcl (2.6.12-41) unstable; urgency=medium
++ .
++   * pathnames1.4, kfreebsd fix
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-26
++
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -488,20 +488,6 @@ Cannot compile ~a.~%"
++        (t (setq dir ".")))
++     (setq na  (namestring
++             (make-pathname :name name :type (pathname-type(first args)))))
++-   #+(or dos winnt)
++-      (format nil "~a -I~a ~a ~a -c -w ~a -o ~a"
++-           *cc*
++-           (concatenate 'string si::*system-directory* "../h")
++-           (if (and (boundp '*c-debug*) *c-debug*) " -g " "")
++-           (case *speed*
++-                 (3 *opt-three* )
++-                 (2 *opt-two*) 
++-                 (t ""))     
++-           (namestring (make-pathname  :type "c" :defaults (first args)))
++-           (namestring (make-pathname  :type "o" :defaults (first args)))
++-           )
++-
++-   #-(or dos winnt)
++    (format nil  "~a -I~a ~a ~a -c ~a -o ~a ~a"
++         *cc*
++         (concatenate 'string si::*system-directory* "../h")
++@@ -527,8 +513,8 @@ Cannot compile ~a.~%"
++                       #+expect-unresolved "-expect_unresolved '*'"
++                       na na na))     
++                          
++-          #+bsd ""; "-w"
++-          #-(or aix3 bsd irix3) " 2> /dev/null ")
+++          #+(or winnt bsd) ""; "-w"
+++          #-(or aix3 bsd winnt irix3) " 2> /dev/null ")
++                
++               
++         )
++@@ -543,30 +529,14 @@ Cannot compile ~a.~%"
++        (prep-win-path-acc finish (concatenate 'string acc start "~")))
++       (concatenate 'string acc s))))
++ 
++-#+winnt
++-(defun no-device (c)
++-  (let* ((c (namestring (truename c)))
++-      (p (search ":" c)))
++-    (if p (subseq c (1+ p)) c)))
++-
++-;; #+winnt
++-;; (defun prep-win-path (c o)
++-;;   (let* ((w si::*wine-detected*)
++-;;    (c (if w (no-device c) c))
++-;;    (o (if w (no-device o) o)))
++-;;     (prep-win-path-acc (compiler-command c o) "")))
++-
++ (defun compiler-cc (c-pathname o-pathname)
++   (safe-system
++    (format
++      nil
++-     (prog1
++-      #+irix5 (compiler-command c-pathname o-pathname )
++-      #+vax "~a ~@[~*-O ~]-S -I. -w ~a ; as -J -W -o ~A ~A"
++-      #+(or system-v e15 dgux sgi ) "~a ~@[~*-O ~]-c -I. ~a 2> /dev/null"
++-      #+winnt (prep-win-path-acc (compiler-command c-pathname o-pathname) "")
++-      #-winnt (compiler-command c-pathname o-pathname)
++-     )
+++     #+vax "~a ~@[~*-O ~]-S -I. -w ~a ; as -J -W -o ~A ~A"
+++     #+(or system-v e15 dgux sgi ) "~a ~@[~*-O ~]-c -I. ~a 2> /dev/null"
+++     #+winnt (prep-win-path-acc (compiler-command c-pathname o-pathname) "")
+++     #-(or vax system-v e15 dgux sgi) (compiler-command c-pathname o-pathname)
++      *cc*
++      (if (or (= *speed* 2) (= *speed* 3)) t nil)
++             (namestring c-pathname)
++@@ -763,20 +733,9 @@ Cannot compile ~a.~%"
++     `(let ((,q (si::string-match ,x ,y ,@(when z (list z)))))
++        (if (= ,q -1) (length ,y) ,q)))))
++ 
++-(defun ts (s &optional (r ""))
++-  (declare (string s) (ignorable r))
++-  #+winnt
++-  (if (not si::*wine-detected*) s
++-    (let* ((x (sml (fcr #u"[^ \n\t]") s))
++-        (y (sml (fcr #u"[ \n\t]") s x))
++-        (f (subseq s x y))
++-        (l (subseq s y))
++-        (k (when (> (length f) 0) (aref f 0)))
++-        (q (if (eql k #\") (string k) ""))
++-        (f (if (eql k #\") (subseq f 1 (1- (length f))) f))
++-        (f (if (and k (not (eql k #\-))) (namestring (no-device f)) f)))
++-      (if k (concatenate 'string r q f q (ts l " ")) "")))
++-  #-winnt s)
+++(defun ts (s)
+++  (declare (string s))
+++  s)
++ 
++ (defun mdelete-file (x)
++   (delete-file (ts (namestring x))))
++@@ -795,8 +754,7 @@ Cannot compile ~a.~%"
++                             raw))
++       (map (merge-pathnames (make-pathname
++                              :name (concatenate 'string (pathname-name raw) "_map")) raw))
++-      #+winnt (raw (merge-pathnames (make-pathname :type "exe") raw))
++-      )
+++      #+winnt (raw (merge-pathnames (make-pathname :type "exe") raw)))
++ 
++     (with-open-file (st (namestring map) :direction :output))
++     (safe-system 
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -624,7 +624,6 @@ use
++ GNU_LD
++ LEADING_UNDERSCORE
++ EXTRA_LOBJS
++-PRELINK_CHECK
++ O2FLAGS
++ O3FLAGS
++ NIFLAGS
++@@ -678,6 +677,7 @@ EGREP
++ GREP
++ MAKEINFO
++ AWK
+++GCL_CC
++ CPP
++ OBJEXT
++ EXEEXT
++@@ -686,7 +686,7 @@ CPPFLAGS
++ LDFLAGS
++ CFLAGS
++ CC
++-PROCESSOR_FLAGS
+++PRELINK_CHECK
++ host_os
++ host_vendor
++ host_cpu
++@@ -738,41 +738,38 @@ SHELL'
++ ac_subst_files=''
++ ac_user_opts='
++ enable_option_checking
+++enable_machine
++ enable_widecons
++ enable_safecdr
++ enable_safecdrdbg
++ enable_prelink
++-enable_fastimmfix
++-enable_holepage
++ enable_vssize
++ enable_bdssize
++ enable_ihssize
++ enable_frssize
++-enable_machine
++-enable_immfix
++-enable_notify
++-enable_tcltk
++-enable_tkconfig
++-enable_tclconfig
++ enable_infodir
++ enable_emacsdir
++-enable_common_binary
++-enable_japi
++-enable_xdr
++ enable_xgcl
++ enable_dlopen
++ enable_statsysbfd
++ enable_dynsysbfd
++ enable_custreloc
++ enable_debug
++-enable_gprof
++ enable_static
++ enable_pic
++-enable_oldgmp
+++enable_gprof
++ enable_dynsysgmp
++ with_x
++-enable_readline
+++enable_xdr
+++enable_immfix
+++enable_fastimmfix
++ enable_ansi
+++enable_japi
+++enable_readline
+++enable_tcltk
+++enable_tkconfig
+++enable_tclconfig
+++enable_notify
++ '
++       ac_precious_vars='build_alias
++ host_alias
++@@ -1410,51 +1407,37 @@ Optional Features:
++   --disable-option-checking  ignore unrecognized --enable/--with options
++   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
++   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
++-use a three word cons with simplified typing
++-protect cdr from immfix and speed up type processing
++-debug safecdr code
++---enable-prelink will insist that the produced images may be prelinked
++---enable-fastimmfix=XXXX will reject low immediate fixnums unless 1<<XXXX can be attained
++- --enable-holepage=XXXX will compile in a XXX-sized hole between the heap and relocatable memory area (eg '--enable-holepage=64*1024' would give 64K pages allowing 256 MB if pages are 4K each)
++- --enable-vssize=XXXX will compile in a value stack of size XXX
++- --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-machine=XXXX will force the use of one of the definitions in h/XXXX.defs
++- --enable-immfix        will enable an immediate fixnum table
++-                         above the C stack
++- --enable-notify=no will disable the automatic notification of gcl maintainers of successful builds/problems
++- 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
++- --enable-tclconfig=XXXX will force the use of a TCL_CONFIG_PREFIX=XXXXX as place to look for tclConfig.sh and tclConfig.sh
++- --enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info
++- --enable-emacsdir=XXXX will manually specify the location for elisp files
++- --enable-common-binary=yes forces use of lowest common denominator instruction sets, (default is =yes)
++- --enable-japi=yes will compile in support for the JAPI graphical interface if present on your system
++- --enable-xdr=yes will compile in support for XDR
++- --enable-xgcl=yes will compile in support for XGCL
++- --enable-dlopen uses dlopen for loading objects, which can then not be retained  in saved images
++-
++- --enable-statsysbfd uses a static sytem bfd library for loading and relocationing object files
++-
++- --enable-dynsysbfd uses a dynamic shared sytem bfd library for loading and relocationing object files
++-
++- --enable-custreloc uses custom gcl code if available for loading  and relocationing object files
++-
++- --enable-debug builds gcl with -g in CFLAGS to enable running under gdb
++-
++- --enable-gprof builds gcl with -pg in CFLAGS to enable profiling with gprof
++-
++- --enable-static will link your GCL against static as opposed to shared system libraries
++- --enable-pic builds gcl with -fPIC in CFLAGS
++-
++- --enable-oldgmp will link against gmp2 instead of gmp3
++-
++- --enable-dynsysgmp will link against the system libgmp3 overriding certain functions with patched versions from the local source
++-
++---enable-readline    enables command line completion via the readline library
++---enable-ansi builds a large gcl aiming for ansi compliance,
++-                 --disable-ansi builds the smaller traditional CLtL1 image
+++  --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
+++  --enable-safecdrdbg will debug safecdr code
+++  --enable-prelink will insist that the produced images may be prelinked
+++  --enable-vssize=XXXX will compile in a value stack of size XXX
+++  --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-emacsdir=XXXX will manually specify the location for elisp files
+++  --enable-xgcl=yes will compile in support for XGCL
+++  --enable-dlopen uses dlopen for loading objects, which can then not be retained  in saved images
+++  --enable-statsysbfd uses a static sytem bfd library for loading and relocationing object files
+++  --enable-dynsysbfd uses a dynamic shared sytem bfd library for loading and relocationing object files
+++  --enable-custreloc uses custom gcl code if available for loading  and relocationing object files
+++  --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
+++  --enable-pic builds gcl with -fPIC in CFLAGS
+++  --enable-gprof builds gcl with -pg in CFLAGS to enable profiling with gprof
+++  --enable-dynsysgmp will link against the system libgmp3 overriding certain functions with patched versions from the local source
+++  --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-ansi builds a large gcl aiming for ansi compliance
+++  --enable-japi=yes will compile in support for the JAPI graphical interface if present on your system
+++  --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
+++  --enable-tclconfig=XXXX will force the use of a TCL_CONFIG_PREFIX=XXXXX as place to look for tclConfig.sh and tclConfig.sh
+++  --enable-notify=no will disable the automatic notification of gcl maintainers of successful builds/problems
++ 
++ Optional Packages:
++   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
++@@ -1844,6 +1827,52 @@ $as_echo "$ac_res" >&6; }
++ 
++ } # ac_fn_c_check_member
++ 
+++# ac_fn_c_try_link LINENO
+++# -----------------------
+++# Try to link conftest.$ac_ext, and return whether this succeeded.
+++ac_fn_c_try_link ()
+++{
+++  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+++  rm -f conftest.$ac_objext conftest$ac_exeext
+++  if { { ac_try="$ac_link"
+++case "(($ac_try" in
+++  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+++  *) ac_try_echo=$ac_try;;
+++esac
+++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+++$as_echo "$ac_try_echo"; } >&5
+++  (eval "$ac_link") 2>conftest.err
+++  ac_status=$?
+++  if test -s conftest.err; then
+++    grep -v '^ *+' conftest.err >conftest.er1
+++    cat conftest.er1 >&5
+++    mv -f conftest.er1 conftest.err
+++  fi
+++  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+++  test $ac_status = 0; } && {
+++      test -z "$ac_c_werror_flag" ||
+++      test ! -s conftest.err
+++       } && test -s conftest$ac_exeext && {
+++      test "$cross_compiling" = yes ||
+++      test -x conftest$ac_exeext
+++       }; then :
+++  ac_retval=0
+++else
+++  $as_echo "$as_me: failed program was:" >&5
+++sed 's/^/| /' conftest.$ac_ext >&5
+++
+++     ac_retval=1
+++fi
+++  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+++  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+++  # interfere with the next link command; also delete a directory that is
+++  # left behind by Apple's compiler.  We do this before executing the actions.
+++  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+++  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+++  as_fn_set_status $ac_retval
+++
+++} # ac_fn_c_try_link
+++
++ # ac_fn_c_check_func LINENO FUNC VAR
++ # ----------------------------------
++ # Tests whether FUNC exists, setting the cache variable VAR accordingly
++@@ -2506,226 +2535,6 @@ ac_config_headers="$ac_config_headers h/
++ VERSION=`cat majvers`.`cat minvers`
++ 
++ 
++-# some parts of this configure script are taken from the tcl configure.in
++-
++-#
++-# Arguments
++-#
++-
++-
++-
++-
++-# Check whether --enable-widecons was given.
++-if test "${enable_widecons+set}" = set; then :
++-  enableval=$enable_widecons;
++-$as_echo "#define WIDE_CONS 1" >>confdefs.h
++-
++-fi
++-
++-
++-
++-# Check whether --enable-safecdr was given.
++-if test "${enable_safecdr+set}" = set; then :
++-  enableval=$enable_safecdr;
++-else
++-  enable_safecdr="no"
++-fi
++-
++-if test "$enable_safecdr" = "yes" ; then
++-
++-$as_echo "#define USE_SAFE_CDR 1" >>confdefs.h
++-
++-fi
++-# Check whether --enable-safecdrdbg was given.
++-if test "${enable_safecdrdbg+set}" = set; then :
++-  enableval=$enable_safecdrdbg;
++-$as_echo "#define DEBUG_SAFE_CDR 1" >>confdefs.h
++-
++-fi
++-
++-
++-# Check whether --enable-prelink was given.
++-if test "${enable_prelink+set}" = set; then :
++-  enableval=$enable_prelink; PRELINK_CHECK=t
++-else
++-  PRELINK_CHECK=
++-fi
++-
++-
++-# Check whether --enable-fastimmfix was given.
++-if test "${enable_fastimmfix+set}" = set; then :
++-  enableval=$enable_fastimmfix;
++-else
++-  enable_fastimmfix=64
++-fi
++-
++-
++-
++-# Check whether --enable-holepage was given.
++-if test "${enable_holepage+set}" = set; then :
++-  enableval=$enable_holepage;
++-cat >>confdefs.h <<_ACEOF
++-#define HOLEPAGE $enable_holepage
++-_ACEOF
++-
++-fi
++-
++-
++-# Check whether --enable-vssize was given.
++-if test "${enable_vssize+set}" = set; then :
++-  enableval=$enable_vssize;
++-else
++-  enable_vssize=262144
++-fi
++-
++-
++-cat >>confdefs.h <<_ACEOF
++-#define VSSIZE $enable_vssize
++-_ACEOF
++-
++-
++-# Check whether --enable-bdssize was given.
++-if test "${enable_bdssize+set}" = set; then :
++-  enableval=$enable_bdssize;
++-else
++-  enable_bdssize=2048
++-fi
++-
++-
++-cat >>confdefs.h <<_ACEOF
++-#define BDSSIZE $enable_bdssize
++-_ACEOF
++-
++-
++-# Check whether --enable-ihssize was given.
++-if test "${enable_ihssize+set}" = set; then :
++-  enableval=$enable_ihssize;
++-else
++-  enable_ihssize=4096
++-fi
++-
++-
++-cat >>confdefs.h <<_ACEOF
++-#define IHSSIZE $enable_ihssize
++-_ACEOF
++-
++-
++-# Check whether --enable-frssize was given.
++-if test "${enable_frssize+set}" = set; then :
++-  enableval=$enable_frssize;
++-else
++-  enable_frssize=4096
++-fi
++-
++-
++-cat >>confdefs.h <<_ACEOF
++-#define FRSSIZE $enable_frssize
++-_ACEOF
++-
++-
++-# Check whether --enable-machine was given.
++-if test "${enable_machine+set}" = set; then :
++-  enableval=$enable_machine; enable_machine=$enableval
++-else
++-  enable_machine=""
++-fi
++-
++-
++-# Check whether --enable-immfix was given.
++-if test "${enable_immfix+set}" = set; then :
++-  enableval=$enable_immfix;
++-else
++-  enable_immfix=yes
++-fi
++-
++-
++-#AC_ARG_ENABLE(gmp,[ --enable-gmp=no will disable use of GMP gnu multiprecision arithmetic, (default is =yes)] ,
++-#[use_gmp=$enableval],[use_gmp="yes"])
++-
++-use_gmp="yes"
++-
++-# Check whether --enable-notify was given.
++-if test "${enable_notify+set}" = set; then :
++-  enableval=$enable_notify; enable_notify=$enableval
++-else
++-  enable_notify="yes"
++-fi
++-
++-
++-# Check whether --enable-tcltk was given.
++-if test "${enable_tcltk+set}" = set; then :
++-  enableval=$enable_tcltk; enable_tcltk=$enableval
++-else
++-  enable_tcltk="yes"
++-fi
++-
++-
++-# Check whether --enable-tkconfig was given.
++-if test "${enable_tkconfig+set}" = set; then :
++-  enableval=$enable_tkconfig; TK_CONFIG_PREFIX=$enableval
++-else
++-  TK_CONFIG_PREFIX="unknown"
++-fi
++-
++-
++-
++-# Check whether --enable-tclconfig was given.
++-if test "${enable_tclconfig+set}" = set; then :
++-  enableval=$enable_tclconfig; TCL_CONFIG_PREFIX=$enableval
++-else
++-  TCL_CONFIG_PREFIX="unknown"
++-fi
++-
++-
++-# Check whether --enable-infodir was given.
++-if test "${enable_infodir+set}" = set; then :
++-  enableval=$enable_infodir; INFO_DIR=$enableval
++-else
++-  INFO_DIR=$prefix/share/info
++-fi
++-
++-INFO_DIR=`eval echo $INFO_DIR/`
++-
++-# Check whether --enable-emacsdir was given.
++-if test "${enable_emacsdir+set}" = set; then :
++-  enableval=$enable_emacsdir; EMACS_SITE_LISP=$enableval
++-else
++-  EMACS_SITE_LISP=$prefix/share/emacs/site-lisp
++-fi
++-
++-EMACS_SITE_LISP=`eval echo $EMACS_SITE_LISP/`
++-
++-# Check whether --enable-common-binary was given.
++-if test "${enable_common_binary+set}" = set; then :
++-  enableval=$enable_common_binary; use_common_binary=$enableval
++-else
++-  use_common_binary="yes"
++-fi
++-
++-
++-# Check whether --enable-japi was given.
++-if test "${enable_japi+set}" = set; then :
++-  enableval=$enable_japi; try_japi=$enableval
++-else
++-  try_japi="no"
++-fi
++-
++-
++-# Check whether --enable-xdr was given.
++-if test "${enable_xdr+set}" = set; then :
++-  enableval=$enable_xdr; enable_xdr=$enableval
++-else
++-  enable_xdr="yes"
++-fi
++-
++-
++-# Check whether --enable-xgcl was given.
++-if test "${enable_xgcl+set}" = set; then :
++-  enableval=$enable_xgcl; enable_xgcl=$enableval
++-else
++-  enable_xgcl="yes"
++-fi
++-
++ 
++ #
++ # Host information
++@@ -2856,380 +2665,247 @@ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: host=$host" >&5
++ $as_echo "host=$host" >&6; }
++ 
++-PROCESSOR_FLAGS=${PROCESSOR_FLAGS:-""}
++-
++ use=unknown
++-TLDFLAGS=""
++ case $canonical in
++-     older)
++-     use=386-bsd;;
++-
++-     sh4*linux*)
++-     use=sh4-linux;;
++-
++-     *x86_64*linux*)
++-     use=amd64-linux;;
++-
++-     *x86_64*kfreebsd*)
++-     use=amd64-kfreebsd;;
++-
++-     *86*linux*)
++-     use=386-linux;;
++-
++-     *86*kfreebsd*)
++-     use=386-kfreebsd;;
++-
++-     *86*gnu*)
++-     use=386-gnu;;
++-
++-# m6800 not working with gcc-3.2
++-     m68k*linux*)
++-       if test "$use_common_binary" = "yes"; then
++-         host=m68020-unknown-linux-gnu
++-         echo "The host is canonicalised to $host"
++-       fi
++-             use=m68k-linux;;
++-
++-     alpha*linux*)
++-             use=alpha-linux;;
++-
++-     mips*linux*)
++-             use=mips-linux;;
++-
++-     mipsel*linux*)
++-             use=mipsel-linux;;
++-
++-     sparc*linux*)
++-             use=sparc-linux;;
++-
++-     aarch64*linux*)
++-        use=aarch64-linux;;
++-
++-     arm*linux*)
++-             use=arm-linux;;
++-
++-     s390*linux*)
++-             use=s390-linux;;
++-
++-     ia64*linux*)
++-             use=ia64-linux;;
++-
++-     hppa*linux*)
++-             use=hppa-linux;;
++-
++-     powerpc*linux*)
++-             use=powerpc-linux;;
++-
++-     powerpc-*-darwin*)
++-             use=powerpc-macosx;;
++-
++-     *86*darwin*)
++-             use=386-macosx
++-     if test "$build_cpu" = "x86_64" ; then
++-        CFLAGS="-m64 $CFLAGS";
++-        LDFLAGS="-m64 -Wl,-headerpad,72 -Wl,-no_pie $LDFLAGS";
++-     else
++-        CFLAGS="-m32 $CFLAGS";
++-        LDFLAGS="-m32  -Wl,-headerpad,56 -Wl,-no_pie $LDFLAGS";
+++    sh4*linux*) use=sh4-linux;;
+++    *x86_64*linux*) use=amd64-linux;;
+++    *x86_64*kfreebsd*)       use=amd64-kfreebsd;;
+++    *86*linux*) use=386-linux;;
+++    *86*kfreebsd*) use=386-kfreebsd;;
+++    *86*gnu*)        use=386-gnu;;
+++    m68k*linux*) use=m68k-linux;;
+++    alpha*linux*) use=alpha-linux;;
+++    mips*linux*) use=mips-linux;;
+++    mipsel*linux*) use=mipsel-linux;;
+++    sparc*linux*) use=sparc-linux;;
+++    aarch64*linux*) use=aarch64-linux;;
+++    arm*linux*) use=arm-linux;;
+++    s390*linux*) use=s390-linux;;
+++    ia64*linux*) use=ia64-linux;;
+++    hppa*linux*) use=hppa-linux;;
+++    powerpc*linux*) use=powerpc-linux;;
+++    powerpc-*-darwin*) use=powerpc-macosx;;
+++    *86*darwin*) use=386-macosx;;
+++    i*mingw*|i*msys*) use=mingw;;
+++    i*cygwin*)
+++        if $CC -v 2>&1 | fgrep ming > /dev/null ;
+++        then use=mingw
+++        else use=gnuwin95
++         fi;;
+++    *openbsd*) use=FreeBSD;;
+++    sparc-sun-solaris*) use=solaris;;
+++    i?86-pc-solaris*) use=solaris-i386;;
+++esac
++ 
++-     alpha-dec-osf)
++-     use=alpha-osf1;;
++-
++-     mips-dec-ultrix)
++-     use=dec3100;;
++-
++-     old)
++-     use=dos-go32;;
++-
++-     *86*-freebsd*)
++-     use=FreeBSD;;
++-
++-     hp3*-*hpux*)
++-     use=hp300;;
++-
++-     hp3*-*-*bsd*)
++-     use=hp300-bsd;;
++-
++-     hppa*-*hpux*)
++-     use=hp800;;
++-
++-     mips-sgi-irix)
++-       case $system in
++-           IRIX5*)
++-            use=irix5;;
++-           IRIX6*)
++-            use=irix6;;
++-           IRIX3*)
++-            use=sgi4d;;
++-       esac ;;
++-
++-
++-     m68k-apple-aux*)
++-     use=mac2;;
++-
++-     old)
++-     use=mp386;;
+++# Check whether --enable-machine was given.
+++if test "${enable_machine+set}" = set; then :
+++  enableval=$enable_machine; echo enable_machine=$enableval ; use=$enableval
+++fi
++ 
++-     *86-ncr-sysv4)
++-     use=ncr;;
++ 
++-     *3-986-*netbsd*)
++-     use=NetBSD;;
+++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: use=$use" >&5
+++$as_echo "use=$use" >&6; }
++ 
++-     old)
++-     use=NeXT;;
+++def_dlopen="no"
+++def_statsysbfd="no"
+++def_custreloc="yes"
+++def_oldgmp="no"
+++def_pic="no";
+++def_static="no";
+++def_debug="no";
+++case $use in
+++    *kfreebsd)
+++     ln -snf linux.defs h/$use.defs;;
+++    *gnu)
+++     ln -snf linux.defs h/$use.defs;;
+++    *linux)
+++     ln -snf linux.defs h/$use.defs;
+++     case $use in
+++         ia64*)
+++             def_dlopen="yes" ; def_custreloc="no" ;;
+++         hppa*)
+++             def_pic="yes" ;;
+++     esac;;
+++esac
++ 
++-     old)
++-     use=NeXT30-m68k;;
+++# Check whether --enable-widecons was given.
+++if test "${enable_widecons+set}" = set; then :
+++  enableval=$enable_widecons; if test "$enableval" = "yes" ; then
+++$as_echo "#define WIDE_CONS 1" >>confdefs.h
+++ fi
+++fi
++ 
++-     *86-*nextstep*)
++-     use=NeXT32-i386;;
++ 
++-     *m68*-*nextstep*)
++-     use=NeXT32-m68k;;
+++# Check whether --enable-safecdr was given.
+++if test "${enable_safecdr+set}" = set; then :
+++  enableval=$enable_safecdr; if test "$enableval" = "yes" ; then
++ 
++-     *rs6000-*-aix4*)
++-     use=rios;;
+++$as_echo "#define USE_SAFE_CDR 1" >>confdefs.h
++ 
++-     *rs6000-*-aix3*)
++-     use=rios-aix3;;
+++                # Check whether --enable-safecdrdbg was given.
+++if test "${enable_safecdrdbg+set}" = set; then :
+++  enableval=$enable_safecdrdbg; if test "$enableval" = "yes" ; then
+++$as_echo "#define DEBUG_SAFE_CDR 1" >>confdefs.h
+++ fi
+++fi
++ 
++-     old)
++-     use=rt_aix;;
+++            fi
+++fi
++ 
++-     old)
++-     use=sgi;;
++ 
++-     sparc-sun-solaris*)
++-     use=solaris;;
+++# Check whether --enable-prelink was given.
+++if test "${enable_prelink+set}" = set; then :
+++  enableval=$enable_prelink; if test "$enable_prelink" = "yes" ; then PRELINK_CHECK=t; fi
+++fi
++ 
++-     i?86-pc-solaris*)
++-     use=solaris-i386;;
++ 
++-     old)
++-     use=sun2r3;;
++ 
++-     old)
++-     use=sun3;;
+++# Check whether --enable-vssize was given.
+++if test "${enable_vssize+set}" = set; then :
+++  enableval=$enable_vssize;
+++cat >>confdefs.h <<_ACEOF
+++#define VSSIZE $enableval
+++_ACEOF
++ 
++-     m68*-sunos*)
++-     use=sun3-os4;;
+++fi
++ 
++-     old)
++-     use=sun386i;;
+++# Check whether --enable-bdssize was given.
+++if test "${enable_bdssize+set}" = set; then :
+++  enableval=$enable_bdssize;
+++cat >>confdefs.h <<_ACEOF
+++#define BDSSIZE $enableval
+++_ACEOF
++ 
++-     sparc*sunos*)
++-     use=sun4;;
+++fi
++ 
++-     *86-sequent-dynix)
++-     use=symmetry;;
+++# Check whether --enable-ihssize was given.
+++if test "${enable_ihssize+set}" = set; then :
+++  enableval=$enable_ihssize;
+++cat >>confdefs.h <<_ACEOF
+++#define IHSSIZE $enableval
+++_ACEOF
++ 
++-     u370*aix)
++-     use=u370_aix;;
+++fi
++ 
++-     old)
++-     use=vax;;
+++# Check whether --enable-frssize was given.
+++if test "${enable_frssize+set}" = set; then :
+++  enableval=$enable_frssize;
+++cat >>confdefs.h <<_ACEOF
+++#define FRSSIZE $enableval
+++_ACEOF
++ 
++-     i*mingw*)
++-       if test "$use_common_binary" = "yes"; then
++-         host=i386-pc-mingw32
++-      PROCESSOR_FLAGS="-march=i386 "
++-         echo "The host is canonicalised to $host"
++-       fi
++-     use=mingw;;
+++fi
++ 
++-     i*cygwin*)
++-     if $CC -v 2>&1 | fgrep ming > /dev/null ;
++-            then use=mingw
++-          else  use=gnuwin95
++-        fi;;
++ 
++-     *openbsd*)
++-     # 'ld -Z' means disable W^X
++-     TLDFLAGS="$TLDFLAGS -Z"
++-     use=FreeBSD;;
+++# Check whether --enable-infodir was given.
+++if test "${enable_infodir+set}" = set; then :
+++  enableval=$enable_infodir; INFO_DIR=$enableval
+++else
+++  INFO_DIR=$prefix/share/info
+++fi
++ 
++-esac
+++INFO_DIR=`eval echo $INFO_DIR/`
++ 
+++# Check whether --enable-emacsdir was given.
+++if test "${enable_emacsdir+set}" = set; then :
+++  enableval=$enable_emacsdir; EMACS_SITE_LISP=$enableval
+++else
+++  EMACS_SITE_LISP=$prefix/share/emacs/site-lisp
+++fi
++ 
+++EMACS_SITE_LISP=`eval echo $EMACS_SITE_LISP/`
++ 
++-echo enable_machine=$enable_machine
++-if test "x$enable_machine" != "x" ; then
++-  use=$enable_machine
+++# Check whether --enable-xgcl was given.
+++if test "${enable_xgcl+set}" = set; then :
+++  enableval=$enable_xgcl;
+++else
+++  enable_xgcl=yes
++ fi
++ 
++-def_dlopen="no"
++-def_statsysbfd="no"
++-def_custreloc="yes"
++-#def_statsysbfd="yes"
++-#def_custreloc="no"
++-def_locbfd="no"
++-def_oldgmp="no"
++-def_pic="no";
++-def_static="no";
++-def_debug="no";
++-case $use in
++-     *kfreebsd)
++-     ln -snf linux.defs h/$use.defs;;
++-     *gnu)
++-     ln -snf linux.defs h/$use.defs;;
++-     *linux)
++-     ln -snf linux.defs h/$use.defs;
++-     case $use in
++-# def_static -- Function descriptors are currently realized at runtime in a non-reproducible fashion
++-# on these architectures -- CM
++-                     powerpc*)
++-#                    if test "$host_cpu" = "powerpc64" ; then def_dlopen="yes" ; def_custreloc="no" ; fi
++-                     ;;
++-             ia64*)
++-                     def_dlopen="yes" ; def_custreloc="no" ;;
++-             hppa*)
++-                     def_pic="yes" ;;
++-#                    def_dlopen="yes" ; def_custreloc="no" ; def_pic="yes" ;;
++-     esac;;
++-esac
++ 
++ # Check whether --enable-dlopen was given.
++ if test "${enable_dlopen+set}" = set; then :
++   enableval=$enable_dlopen;
++ else
++-  enable_dlopen="$def_dlopen"
+++  enable_dlopen=$def_dlopen
++ fi
++ 
++ # Check whether --enable-statsysbfd was given.
++ if test "${enable_statsysbfd+set}" = set; then :
++   enableval=$enable_statsysbfd;
++ else
++-  enable_statsysbfd="$def_statsysbfd"
+++  enable_statsysbfd=$def_statsysbfd
++ fi
++ 
++ # Check whether --enable-dynsysbfd was given.
++ if test "${enable_dynsysbfd+set}" = set; then :
++   enableval=$enable_dynsysbfd;
++ else
++-  enable_dynsysbfd="no"
+++  enable_dynsysbfd=no
++ fi
++ 
++-#AC_ARG_ENABLE(locbfd,
++-#    [ --enable-locbfd uses a static bfd library built from this source tree for loading and relocationing object files ]
++-#    ,,enable_locbfd="$def_locbfd")
++ # Check whether --enable-custreloc was given.
++ if test "${enable_custreloc+set}" = set; then :
++   enableval=$enable_custreloc;
++ else
++-  enable_custreloc="$def_custreloc"
+++  enable_custreloc=$def_custreloc
++ fi
++ 
+++
++ # Check whether --enable-debug was given.
++ if test "${enable_debug+set}" = set; then :
++   enableval=$enable_debug;
++ else
++-  enable_debug="$def_debug"
++-fi
++-
++-# Check whether --enable-gprof was given.
++-if test "${enable_gprof+set}" = set; then :
++-  enableval=$enable_gprof;
++-else
++-  enable_gprof="no"
+++  enable_debug=$def_debug
++ fi
++ 
++ # Check whether --enable-static was given.
++ if test "${enable_static+set}" = set; then :
++-  enableval=$enable_static; enable_static=$enableval
+++  enableval=$enable_static;
++ else
++-  enable_static="$def_static"
+++  enable_static=$def_static
++ fi
++ 
++ # Check whether --enable-pic was given.
++ if test "${enable_pic+set}" = set; then :
++   enableval=$enable_pic;
++ else
++-  enable_pic="$def_pic"
++-fi
++-
++-
++-# Check whether --enable-oldgmp was given.
++-if test "${enable_oldgmp+set}" = set; then :
++-  enableval=$enable_oldgmp;
++-else
++-  enable_oldgmp="$def_oldgmp"
+++  enable_pic=$def_pic
++ fi
++ 
++ 
++-# Check whether --enable-dynsysgmp was given.
++-if test "${enable_dynsysgmp+set}" = set; then :
++-  enableval=$enable_dynsysgmp;
++-else
++-  enable_dynsysgmp="yes"
++-fi
++-
++-
++-load_opt="0"
+++load_opt=0
++ if test "$enable_dlopen" = "yes" ; then
++-   load_opt=1
+++    load_opt=1
++ fi
++ if test "$enable_statsysbfd" = "yes" ; then
++-   case $load_opt in
++-   0) load_opt=1;;
++-   1) load_opt=2;;
++-   esac
+++    case $load_opt in
+++     0) load_opt=1;;
+++     1) load_opt=2;;
+++    esac
++ fi
++ if test "$enable_dynsysbfd" = "yes" ; then
++-   case $load_opt in
++-   0) load_opt=1;;
++-   1) load_opt=2;;
++-   2) load_opt=3;;
++-   esac
++-fi
++-if test "$enable_locbfd" = "yes" ; then
++-   case $load_opt in
++-   0) load_opt=1;;
++-   1) load_opt=2;;
++-   2) load_opt=3;;
++-   3) load_opt=4;;
++-   esac
+++    case $load_opt in
+++     0) load_opt=1;;
+++     1) load_opt=2;;
+++     2) load_opt=3;;
+++    esac
++ fi
++ if test "$enable_custreloc" = "yes" ; then
++-   case $load_opt in
++-   0) load_opt=1;;
++-   1) load_opt=2;;
++-   2) load_opt=3;;
++-   3) load_opt=4;;
++-   4) load_opt=5;;
++-   esac
+++    case $load_opt in
+++     0) load_opt=1;;
+++     1) load_opt=2;;
+++     2) load_opt=3;;
+++     3) load_opt=4;;
+++     4) load_opt=5;;
+++    esac
++ fi
++ 
++ if test "$load_opt" != "1" ; then
++-     echo "Exactly one loader option must be chosen: dlopen=$enable_dlopen statsysbfd=$enable_statsysbfd dynsysbfd=$enable_dynsysbfd locbfd=$enable_locbfd custreloc=$enable_custreloc"
++-     exit 1
+++    echo "Exactly one loader option must be chosen: dlopen=$enable_dlopen statsysbfd=$enable_statsysbfd dynsysbfd=$enable_dynsysbfd custreloc=$enable_custreloc"
+++    as_fn_error $? "loader option failure" "$LINENO" 5
++ fi
++ 
++-TLDFLAGS=""
++-if test "$enable_static" = "yes" ; then
++-   TLDFLAGS="-static -Wl,-zmuldefs $TLDFLAGS"; #FIXME should be in unixport/makefile
++-
++-$as_echo "#define STATIC_LINKING 1" >>confdefs.h
++-
++-fi
++-case $use in
++-     *gnuwin*)
++-     TLDFLAGS="$TLDFLAGS -Wl,--stack,8000000";;
++-esac
++-
++-## finally warn if we did not find a recognized machine.s
++-##
++-#if test "$use" = "unknown" ; then
++-#types=`echo h/*.defs` | sed -e "s:h/::g" -e "s:\.defs:g"`
++-#echo got canonical=$canonical, but was not recognized.
++-#echo Unable to guess type to use.  Try one of
++-#exit(1)
++-#fi
++-
++-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: use=$use" >&5
++-$as_echo "use=$use" >&6; }
++-
++ 
++ #
++ # System programs
++@@ -3238,10 +2914,10 @@ $as_echo "use=$use" >&6; }
++ # We set the default CFLAGS below, and don't want the autoconf default
++ # CM 20040106
++ if test "$CFLAGS" = "" ; then
++-     CFLAGS=" "
+++    CFLAGS=" "
++ fi
++ if test "$LDFLAGS" = "" ; then
++-     LDFLAGS=" "
+++    LDFLAGS=" "
++ fi
++ 
++ ac_ext=c
++@@ -4171,74 +3847,90 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
++ ac_compiler_gnu=$ac_cv_c_compiler_gnu
++ 
++ 
+++GCL_CC=`basename $CC`
+++if echo $GCL_CC |grep gcc |grep -q win; then
+++    GCL_CC=gcc
+++fi
++ 
++ 
++-# can only test for numbers -- CM
++-# if test "${GCC}" -eq "yes" ; then
++-#if [[ "${GCC}" = "yes" ]] ; then
++-# Allog for environment variable overrides on compiler selection -- CM
++-#GCC=$CC
++-#else
++-#GCC=""
++-#fi
++-# subst GCC not only under 386-linux, but where available -- CM
++-
++-TCFLAGS="-fsigned-char -fno-builtin-malloc -fno-builtin-free"
++-
++-if test "$GCC" = "yes" ; then
++-
++-   TCFLAGS="$TCFLAGS -Wall"
+++add_arg_to_tcflags() {
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang" >&5
++-$as_echo_n "checking for clang... " >&6; }
+++    local i=1
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAG $1" >&5
+++$as_echo_n "checking for CFLAG $1... " >&6; }
+++    CFLAGS_ORI=$CFLAGS
+++    CFLAGS="$CFLAGS -Werror $1 `echo $1|sed 's,-Wno-,-W,1'`"
++ 
++ if test "$cross_compiling" = yes; then :
++-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++-as_fn_error $? "cannot run test program while cross compiling
++-See \`config.log' for more details" "$LINENO" 5; }
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+++$as_echo "no" >&6; }
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
+++int
+++main ()
+++{
++ 
++-             int main() {
++-             return
++-             #ifdef __clang__
++-             0
++-             #else
++-             1
++-             #endif
++-             ;}
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++-$as_echo "yes" >&6; }
++-      clang="yes"
++-      TCFLAGS="$TCFLAGS -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign"
++-
++-$as_echo "#define CLANG 1" >>confdefs.h
++-
+++  TCFLAGS="$TCFLAGS $1";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++$as_echo "yes" >&6; };i=0
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++-      #FIXME -Wno-unused-but-set-variable when time
++-      TMPF=-Wno-unused-but-set-variable
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAG $TMPF" >&5
++-$as_echo_n "checking for CFLAG $TMPF... " >&6; }
++-      CFLAGS_ORI=$CFLAGS
++-      CFLAGS="$CFLAGS $TMPF"
++-      if test "$cross_compiling" = yes; then :
+++fi
+++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+++  conftest.$ac_objext conftest.beam conftest.$ac_ext
+++fi
+++
+++    CFLAGS=$CFLAGS_ORI
+++    return $i
+++
+++}
+++
+++assert_arg_to_tcflags() {
+++    if ! add_arg_to_tcflags $1 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot add $1 to CFLAGS" >&5
+++$as_echo "cannot add $1 to CFLAGS" >&6; }; exit 1 ; fi
+++    return 0
+++}
+++
+++add_args_to_tcflags() {
+++
+++    while test "$#" -ge 1 ; do
+++     add_arg_to_tcflags $1
+++     shift
+++    done
+++}
+++
+++add_arg_to_tldflags() {
+++
+++    local i=1
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LDFLAG $1" >&5
+++$as_echo_n "checking for LDFLAG $1... " >&6; }
+++    LDFLAGS_ORI=$LDFLAGS
+++    LDFLAGS="$LDFLAGS -Werror $1"
+++    if test "$cross_compiling" = yes; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-int main() {return 0;}
+++
+++int
+++main ()
+++{
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++-  TCFLAGS="$TCFLAGS $TMPF";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++-$as_echo "yes" >&6; }
+++  TLDFLAGS="$TLDFLAGS $1";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++$as_echo "yes" >&6; };i=0
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++@@ -4247,48 +3939,136 @@ rm -f core *.core core.conftest.* gmon.o
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-      CFLAGS=$CFLAGS_ORI
+++    LDFLAGS=$LDFLAGS_ORI
+++    return $i
+++
+++}
+++
+++assert_arg_to_tldflags() {
+++    if ! add_arg_to_tldflags $1 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot add $1 to LDFLAGS" >&5
+++$as_echo "cannot add $1 to LDFLAGS" >&6; }; exit 1 ; fi
+++    return 0
+++}
+++
+++add_args_to_tldflags() {
+++
+++    while test "$#" -ge 1 ; do
+++     add_arg_to_tldflags $1
+++     shift
+++    done
+++}
+++
+++remove_arg_from_ldflags() {
+++
+++    NEW_LDFLAGS=""
+++    for i in $LDFLAGS; do
+++     if ! test "$i" = "$1" ; then
+++                 NEW_LDFLAGS="$NEW_LDFLAGS $i"
+++     else
+++            { $as_echo "$as_me:${as_lineno-$LINENO}: result: removing $1 from LDFLAGS" >&5
+++$as_echo "removing $1 from LDFLAGS" >&6; }
+++     fi
+++    done
+++    LDFLAGS=$NEW_LDFLAGS
+++
+++    return 0
+++
+++}
+++
+++TCFLAGS=""
+++add_args_to_tcflags -fsigned-char -pipe \
+++                    -fno-builtin-malloc -fno-builtin-free \
+++                    -fno-PIE -fno-pie -fno-PIC -fno-pic \
+++                 -Wall \
+++                 -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign \
+++                 -Wno-unused-but-set-variable -Wno-misleading-indentation
+++
+++TLDFLAGS=""
+++add_args_to_tldflags -Wl,-no_pie -no-pie -Wl,-z,lazy
+++
+++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang" >&5
+++$as_echo_n "checking for clang... " >&6; }
+++if test "$cross_compiling" = yes; then :
+++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+++as_fn_error $? "cannot run test program while cross compiling
+++See \`config.log' for more details" "$LINENO" 5; }
+++else
+++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+++/* end confdefs.h.  */
+++
+++                      #ifdef __clang__
+++                      #define RET 0
+++                      #else
+++                      #define RET 1
+++                      #endif
+++
+++int
+++main ()
+++{
+++
+++                      return RET;
+++
+++  ;
+++  return 0;
+++}
+++_ACEOF
+++if ac_fn_c_try_run "$LINENO"; then :
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++$as_echo "yes" >&6; }
+++     clang="yes"
+++     remove_arg_from_ldflags -pie
+++
+++$as_echo "#define CLANG 1" >>confdefs.h
+++
+++else
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+++$as_echo "no" >&6; }
++ fi
++ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-fi
++ 
++-if test "$GCC" = "yes" ; then
++-     TCFLAGS="$TCFLAGS -pipe"
++-     case $use in
++-          *mingw*)
++-#            echo "WARNING: Remove -fno-zero-initialized-in-bss from makedefs if gcc less than 3.3.1."
++-#            echo "         It is otherwise needed for the Unexec stuff to work."
++-#            if test "$enable_debug" = "yes" ; then TCFLAGS="$TCFLAGS -gstabs" ; fi
++-             TCFLAGS="$TCFLAGS -fno-zero-initialized-in-bss -mms-bitfields";;
++-          *gnuwin*)
++-#            echo "WARNING: Remove -fno-zero-initialized-in-bss from makedefs if gcc less than 3.3.1."
++-#            echo "         It is otherwise needed for the Unexec stuff to work."
++-#            if test "$enable_debug" = "yes" ; then TCFLAGS="$TCFLAGS -gstabs" ; fi
++-             TCFLAGS="$TCFLAGS -fno-zero-initialized-in-bss -mms-bitfields";;
++-        esac
++-fi
++-#if test -f /proc/sys/kernel/exec-shield ; then
++-#    exec_stat=`cat /proc/sys/kernel/exec-shield`
++-#    if test "$exec_stat" != "0" ; then
++-#            # CFLAGS here to hopefully cover the DBEGIN routine below
++-#            CFLAGS="$CFLAGS -Wa,--execstack"
++-#    fi
++-#fi
+++case $use in
+++    *mingw*)
+++     assert_arg_to_tcflags -fno-zero-initialized-in-bss
+++     assert_arg_to_tcflags -mms-bitfields;;
+++    *gnuwin*)
+++     assert_arg_to_tcflags -fno-zero-initialized-in-bss
+++     assert_arg_to_tcflags -mms-bitfields
+++        assert_arg_to_tldflags -Wl,--stack,8000000;;
+++    386-macosx)
+++     assert_arg_to_tldflags -Wl,-no_pie
+++     if test "$build_cpu" = "x86_64" ; then
+++         assert_arg_to_tcflags -m64
+++         assert_arg_to_tldflags -m64
+++         assert_arg_to_tldflags -Wl,-headerpad,72
+++        else
+++         assert_arg_to_tcflags -m32
+++         assert_arg_to_tldflags -m32
+++         assert_arg_to_tldflags -Wl,-headerpad,56
+++        fi;;
+++    FreeBSD) assert_arg_to_tldflags -Z;;
+++esac
+++
+++if test "$enable_static" = "yes" ; then
+++    assert_arg_to_tldflags -static
+++    assert_arg_to_tldflags -Wl,-zmuldefs
+++
+++$as_echo "#define STATIC_LINKING 1" >>confdefs.h
+++
+++fi
++ 
++ TO3FLAGS=""
++ TO2FLAGS=""
++ 
++-#TFPFLAG="-fomit-frame-pointer"
++-# FIXME -- remove when mingw compiler issues are fixed
++ case "$use" in
++-  *mingw*)
+++    *mingw*)
++      TFPFLAG="";;
++-  m68k*)#FIXME gcc 4.x bug workaround
+++    m68k*)#FIXME gcc 4.x bug workaround
++      TFPFLAG="";;
++-  *)
+++    *)
++      TFPFLAG="-fomit-frame-pointer";;
++ esac
++ 
++@@ -4335,143 +4115,104 @@ fi
++ done
++ 
++ 
++-# Work around system/gprof mips/hppa hang
++-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking working gprof" >&5
+++# Check whether --enable-gprof was given.
+++if test "${enable_gprof+set}" = set; then :
+++  enableval=$enable_gprof; if test "$enableval" = "yes" ; then
+++                { $as_echo "$as_me:${as_lineno-$LINENO}: checking working gprof" >&5
++ $as_echo_n "checking working gprof... " >&6; }
++-old_enable_gprof=$enable_gprof
++-case $use in
++-  powerpc*) if test "$host_cpu" = "powerpc64le" ; then enable_gprof="no"; fi;;
++-  sh4*)  enable_gprof="no";;
++-  ia64*)  enable_gprof="no";;
++-#  mips*) enable_gprof="no";;
++-  hppa*) enable_gprof="no";;
++-  arm*)  enable_gprof="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++-  *gnu)  enable_gprof="no";;
++-esac
++-if test "$enable_gprof" = "$old_enable_gprof" ; then
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
++-$as_echo "ok" >&6; }
++-else
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+++                case $use in
+++                    powerpc*) if test "$host_cpu" = "powerpc64le" ; then enableval="no"; fi;;
+++                    sh4*)  enableval="no";;
+++                    ia64*) enableval="no";;
+++                    hppa*) enableval="no";;
+++                    arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
+++                    *gnu)  enableval="no";;
+++                esac
+++                if test "$enableval" != "yes" ; then
+++                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
++ $as_echo "disabled" >&6; }
++-fi
++-
++-if test "$enable_gprof" = "yes" ; then
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for text start" >&5
+++                else
+++                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+++$as_echo "ok" >&6; }
+++                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for text start" >&5
++ $as_echo_n "checking for text start... " >&6; }
++-     echo 'int main () {return(0);}' >foo.c
++-     $CC foo.c -o foo
++-     GCL_GPROF_START=`nm foo | $AWK  '/  *[TD]  *__*start$/ {print $NF}'` # D for ppc64 -- FIXME custreloc
++-     rm -f foo.c foo
++-     if test "$GCL_GPROF_START" != "" ; then
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCL_GPROF_START" >&5
+++                    echo 'int main () {return(0);}' >foo.c
+++                    $CC foo.c -o foo
+++                    GCL_GPROF_START=`nm foo | $AWK  '/  *[TD]  *__*start$/ {print $NF}'` # D for ppc64 -- FIXME custreloc
+++                    rm -f foo.c foo
+++                    if test "$GCL_GPROF_START" != "" ; then
+++                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCL_GPROF_START" >&5
++ $as_echo "$GCL_GPROF_START" >&6; }
++ 
++ cat >>confdefs.h <<_ACEOF
++ #define GCL_GPROF_START $GCL_GPROF_START
++ _ACEOF
++ 
++-             case "$use" in
++-                arm*)
++-                  #FIXME report and remove this when done
++-                  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Reducing optimization on profiling arm build to workaround gcc bug" >&5
++-$as_echo "Reducing optimization on profiling arm build to workaround gcc bug" >&6; }
++-                  enable_debug=yes;;
++-             esac
++-                TCFLAGS="$TCFLAGS -pg";
++-             case $use in
++-             s390*) ;; # relocation truncation bug in gcc
++-             *) TLIBS="$TLIBS -pg";;
++-             esac
++-             TFPFLAG=""
+++                        assert_arg_to_tcflags -pg
+++                        case $use in
+++                            s390*) ;; # relocation truncation bug in gcc
+++                            *) TLIBS="$TLIBS -pg";;
+++                        esac
+++                                TFPFLAG=""
++ 
++ $as_echo "#define GCL_GPROF 1" >>confdefs.h
++ 
++-     else
++-                enable_gprof="no";
++-     fi
++-fi
++-
++-if $CC -v 2>&1 | tail -1 | grep "gcc version 4.6.1" >/dev/null ; then
++-   case "$use" in
++-     arm*)
++-     #FIXME report and remove this when done
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: Reducing optimization on arm build to workaround gcc 4.6 bug" >&5
++-$as_echo "Reducing optimization on arm build to workaround gcc 4.6 bug" >&6; }
++-     enable_debug=yes;;
++-   esac
+++                    fi
+++                fi
+++            fi
++ fi
++ 
++ 
++ if test "$enable_debug" = "yes" ; then
++-     TCFLAGS="$TCFLAGS -g"
++-     # for subconfigurations
++-     CFLAGS="$CFLAGS -g"
+++    assert_arg_to_tcflags -g
+++    # for subconfigurations
+++    CFLAGS="$CFLAGS -g"
++ else
++-     TO3FLAGS="-O3 $TFPFLAG"
++-     TO2FLAGS="-O"
+++    TO3FLAGS="-O3 $TFPFLAG"
+++    TO2FLAGS="-O"
++ fi
++ 
++ # gcc on ppc cannot compile our new_init.c with full opts --CM
++ TONIFLAGS=""
++ case $use in
++-     powerpc*macosx)
++-        TCFLAGS="$TCFLAGS -mlongcall";;
++-     *linux)
+++    powerpc*macosx) assert_arg_to_tcflags -mlongcall;;
+++    *linux)
++      case $use in
++-#            amd64*) # stack-boundary option does not work
++-#                    TCFLAGS="$TCFLAGS -m64 -mpreferred-stack-boundary=8";;
++-             alpha*)
++-                     TCFLAGS="$TCFLAGS -mieee"
++-                     if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
++-                     ;;
++-#            m68k*)
++-#                    TCFLAGS="$TCFLAGS -ffloat-store";;
++-             aarch64*)
++-                     TLIBS="$TLIBS -lgcc_s";;
++-             hppa*)
++-                     TCFLAGS="$TCFLAGS -mlong-calls "
++-                     TLIBS="$TLIBS -lgcc_s" # workaround hppa __moddi3 local func symbols with default linker flags
++-                     if test "$enable_debug" != "yes" ; then TO3FLAGS="-O2" ; TFPFLAG=""; fi #FIXME needed asof gcc 4.8.1
++-#                    TCFLAGS="$TCFLAGS -ffunction-sections"
++-#                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O $TFPFLAG" ; fi
++-#                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++-                     ;;
++-             mips*)
++-                     case $canonical in
++-                     mips64*linux*)
++-                             TLIBS="$TLIBS -Wl,-z -Wl,now";;
++-                     esac
++-#                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.6.2
++-                     ;;
++-             ia64*)
++-                     if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
++-                     ;;
++-             arm*)
++-                     TCFLAGS="$TCFLAGS -mlong-calls -fdollars-in-identifiers -g "
++-#                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.6.2
++-#                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++-                     ;;
++-             powerpc*)
++-                        TCFLAGS="$TCFLAGS -mlongcall"
++-                     ;;
++-#                    if $CC -v 2>&1 | grep -q "gcc version 3.2" ; then
++-#                       echo Reducing optimization for buggy gcc-3.2
++-#                       if test "$enable_debug" != "yes" ; then TONIFLAGS="-O $TFPFLAG" ; fi
++-#                    fi;
++-#                    echo Probing for longcall
++-#                    if ! $CC -v 2>&1 | $AWK '/^gcc version / {split($3,A,".");if (A[[1]]+0>3 || (A[[1]]+0>=3 && A[[2]]+0>=3)) exit 1;}'; then
++-#                       echo Enabling longcall on gcc 3.3 or later
++-#                       TCFLAGS="$TCFLAGS -mlongcall"
++-#                       echo Reducing optimization for buggy gcc 3.3 or later
++-#                       if test "$enable_debug" != "yes" ; then TONIFLAGS="-O $TFPFLAG" ; fi
++-#                    fi;;
+++         alpha*)
+++             assert_arg_to_tcflags -mieee
+++             if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
+++             ;;
+++         aarch64*)
+++             TLIBS="$TLIBS -lgcc_s";;
+++         hppa*)
+++             assert_arg_to_tcflags -mlong-calls
+++             TLIBS="$TLIBS -lgcc_s" # workaround hppa __moddi3 local func symbols with default linker flags
+++             if test "$enable_debug" != "yes" ; then TO3FLAGS="-O2" ; TFPFLAG=""; fi #FIXME needed asof gcc 4.8.1
+++             ;;
+++         mips*)
+++             case $canonical in
+++                 mips64*linux*)
+++                     assert_arg_to_tldflags -Wl,-z,now;;
+++             esac
+++             ;;
+++         ia64*)
+++             if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
+++             ;;
+++         arm*)
+++             assert_arg_to_tcflags -mlong-calls
+++             assert_arg_to_tcflags -fdollars-in-identifiers
+++             assert_arg_to_tcflags -g #?
+++             ;;
+++         powerpc*)
+++             assert_arg_to_tcflags -mlongcall
+++             ;;
++      esac;;
++ esac
++ if test "$enable_pic" = "yes" ; then
++-     TCFLAGS="$TCFLAGS -fPIC"
+++    assert_arg_to_tcflags -fPIC
++ fi
++ 
+++
++ FDEBUG=`echo $CFLAGS | tr ' ' '\012' |grep "^\-g$"|tr '\012' ' '`
++ #CFLAGS=`echo $CFLAGS | tr ' ' '\012' |grep -v "^\-g$"`
++ FOMITF=`echo $CFLAGS | tr ' ' '\012' |grep "^\-fomit-frame-pointer$"|tr '\012' ' '`
++@@ -4488,27 +4229,27 @@ FOOPT0=`echo $CFLAGS | tr ' ' '\012' |gr
++ CFLAGS=`echo $CFLAGS | tr ' ' '\012' |grep -v "^\-O0$"|tr '\012' ' '`
++ 
++ if test "$FOOPT0" != "" ; then
++-   TO3FLAGS=`echo $TO3FLAGS | sed 's,\-O[123 ],-O0 ,g' | sed 's,\-O$,-O0 ,g'`
++-   TO2FLAGS=`echo $TO2FLAGS | sed 's,\-O[123 ],-O0 ,g' | sed 's,\-O$,-O0 ,g'`
+++    TO3FLAGS=`echo $TO3FLAGS | sed 's,\-O[123 ],-O0 ,g' | sed 's,\-O$,-O0 ,g'`
+++    TO2FLAGS=`echo $TO2FLAGS | sed 's,\-O[123 ],-O0 ,g' | sed 's,\-O$,-O0 ,g'`
++ else
++-if test "$FOOPT1" != "" ; then
++-   TO3FLAGS=`echo $TO3FLAGS | sed 's,\-O[2-3],-O1,g'`
++-   TO2FLAGS=`echo $TO2FLAGS | sed 's,\-O[2-3],-O1,g'`
++-else
++-if test "$FOOPT2" != "" ; then
++-   TO3FLAGS=`echo "$TO3FLAGS" | sed 's,\-O3,-O2,g'`
++-   TO2FLAGS=`echo "$TO2FLAGS" | sed 's,\-O3,-O2,g'`
++-fi
++-fi
+++    if test "$FOOPT1" != "" ; then
+++     TO3FLAGS=`echo $TO3FLAGS | sed 's,\-O[2-3],-O1,g'`
+++     TO2FLAGS=`echo $TO2FLAGS | sed 's,\-O[2-3],-O1,g'`
+++    else
+++     if test "$FOOPT2" != "" ; then
+++         TO3FLAGS=`echo "$TO3FLAGS" | sed 's,\-O3,-O2,g'`
+++         TO2FLAGS=`echo "$TO2FLAGS" | sed 's,\-O3,-O2,g'`
+++     fi
+++    fi
++ fi
++ 
++ if test "$FDEBUG" != "" ; then
++-   TO3FLAGS=`echo $TO3FLAGS | sed 's,\-fomit-frame-pointer,,g'`
++-   TO2FLAGS=`echo $TO2FLAGS | sed 's,\-fomit-frame-pointer,,g'`
+++    TO3FLAGS=`echo $TO3FLAGS | sed 's,\-fomit-frame-pointer,,g'`
+++    TO2FLAGS=`echo $TO2FLAGS | sed 's,\-fomit-frame-pointer,,g'`
++ fi
++ 
++ if test "$FOMITF" != "" ; then
++-   TO3FLAGS="$TO3FLAGS $FOMITF"
+++    TO3FLAGS="$TO3FLAGS $FOMITF"
++ fi
++ 
++ # Step 1: set the variable "system" to hold the name and version number
++@@ -4569,8 +4310,8 @@ if test -f /usr/lib/NextStep/software_ve
++ else
++     system=`uname -s`-`uname -r`
++     if test "$?" -ne 0 ; then
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown (can't find uname command)" >&5
++-$as_echo "unknown (can't find uname command)" >&6; }
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown (cannot find uname command)" >&5
+++$as_echo "unknown (cannot find uname command)" >&6; }
++      system=unknown
++     else
++      # Special check for weird MP-RAS system (uname returns weird
++@@ -4588,7 +4329,7 @@ $as_echo "$system" >&6; }
++ fi
++ 
++ case $use in
++-     *macosx)
+++    *macosx)
++ 
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
++ $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
++@@ -4864,7 +4605,7 @@ fi
++ done
++ 
++      ac_fn_c_check_member "$LINENO" "struct _malloc_zone_t" "memalign" "ac_cv_member_struct__malloc_zone_t_memalign" "
++-             #include <malloc/malloc.h>
+++                         #include <malloc/malloc.h>
++ 
++ "
++ if test "x$ac_cv_member_struct__malloc_zone_t_memalign" = xyes; then :
++@@ -4877,7 +4618,6 @@ fi
++      ;;
++ esac
++ 
++-
++ for ac_header in setjmp.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default"
++@@ -4887,7 +4627,7 @@ if test "x$ac_cv_header_setjmp_h" = xyes
++ _ACEOF
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking sizeof jmp_buf" >&5
++ $as_echo_n "checking sizeof jmp_buf... " >&6; }
++-     if test "$cross_compiling" = yes; then :
+++     if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -4896,19 +4636,24 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
+++                  #include <stdio.h>
+++                  #include <setjmp.h>
++ 
++-                     #include <stdio.h>
++-                     #include <setjmp.h>
++-                     int main() {
++-                        FILE *fp=fopen("conftest1","w");
++-                        fprintf(fp,"%lu\n",sizeof(jmp_buf));
++-                        fclose(fp);
++-                        return 0;
++-                     }
+++int
+++main ()
+++{
+++
+++                  FILE *fp=fopen("conftest1","w");
+++                  fprintf(fp,"%lu\n",sizeof(jmp_buf));
+++                  fclose(fp);
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   sizeof_jmp_buf=`cat conftest1`
++-                      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sizeof_jmp_buf" >&5
+++       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sizeof_jmp_buf" >&5
++ $as_echo "$sizeof_jmp_buf" >&6; }
++ 
++ cat >>confdefs.h <<_ACEOF
++@@ -4929,7 +4674,6 @@ done
++ 
++ 
++ # sysconf
++-
++ for ac_header in unistd.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
++@@ -4944,52 +4688,6 @@ if ${ac_cv_lib_c_sysconf+:} false; then
++ else
++   ac_check_lib_save_LIBS=$LIBS
++ LIBS="-lc  $LIBS"
++-
++-# ac_fn_c_try_link LINENO
++-# -----------------------
++-# Try to link conftest.$ac_ext, and return whether this succeeded.
++-ac_fn_c_try_link ()
++-{
++-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
++-  rm -f conftest.$ac_objext conftest$ac_exeext
++-  if { { ac_try="$ac_link"
++-case "(($ac_try" in
++-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++-  *) ac_try_echo=$ac_try;;
++-esac
++-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
++-$as_echo "$ac_try_echo"; } >&5
++-  (eval "$ac_link") 2>conftest.err
++-  ac_status=$?
++-  if test -s conftest.err; then
++-    grep -v '^ *+' conftest.err >conftest.er1
++-    cat conftest.er1 >&5
++-    mv -f conftest.er1 conftest.err
++-  fi
++-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++-  test $ac_status = 0; } && {
++-      test -z "$ac_c_werror_flag" ||
++-      test ! -s conftest.err
++-       } && test -s conftest$ac_exeext && {
++-      test "$cross_compiling" = yes ||
++-      test -x conftest$ac_exeext
++-       }; then :
++-  ac_retval=0
++-else
++-  $as_echo "$as_me: failed program was:" >&5
++-sed 's/^/| /' conftest.$ac_ext >&5
++-
++-     ac_retval=1
++-fi
++-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
++-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
++-  # interfere with the next link command; also delete a directory that is
++-  # left behind by Apple's compiler.  We do this before executing the actions.
++-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
++-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
++-  as_fn_set_status $ac_retval
++-
++-} # ac_fn_c_try_link
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++@@ -5022,39 +4720,40 @@ $as_echo "$ac_cv_lib_c_sysconf" >&6; }
++ if test "x$ac_cv_lib_c_sysconf" = xyes; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking _SC_CLK_TCK" >&5
++ $as_echo_n "checking _SC_CLK_TCK... " >&6; }
++-             if test "$cross_compiling" = yes; then :
++-  hz=0
+++          hz=0
+++          if test "$cross_compiling" = yes; then :
+++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+++as_fn_error $? "cannot run test program while cross compiling
+++See \`config.log' for more details" "$LINENO" 5; }
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <unistd.h>
++-                         #include <stdio.h>
++-                         int
++-                         main() {
++-                             FILE *fp=fopen("conftest1","w");
++-                             fprintf(fp,"%lu\n",sysconf(_SC_CLK_TCK));
++-                             fclose(fp);
++-                             return 0;
++-                         }
++-_ACEOF
++-if ac_fn_c_try_run "$LINENO"; then :
++-  hz=`cat conftest1`
++ 
++-cat >>confdefs.h <<_ACEOF
++-#define HZ $hz
++-_ACEOF
+++                          #include <unistd.h>
+++                          #include <stdio.h>
++ 
+++int
+++main ()
+++{
+++
+++                          FILE *fp=fopen("conftest1","w");
+++                          fprintf(fp,"%lu\n",sysconf(_SC_CLK_TCK));
+++                          fclose(fp);
+++
+++  ;
+++  return 0;
+++}
+++_ACEOF
+++if ac_fn_c_try_run "$LINENO"; then :
++ 
++-else
++-  hz=0
++ fi
++ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hz" >&5
+++          { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hz" >&5
++ $as_echo "$hz" >&6; }
++-
++ fi
++ 
++ fi
++@@ -5063,20 +4762,16 @@ done
++ 
++ 
++ 
++-#MY_SUBDIRS=
++-
++-#
++-# GMP
++-#
++-
++ rm -f makedefsafter
++ 
++-MP_INCLUDE=""
++-if test $use_gmp = yes ; then
+++# Check whether --enable-dynsysgmp was given.
+++if test "${enable_dynsysgmp+set}" = set; then :
+++  enableval=$enable_dynsysgmp;
+++fi
+++
++ 
++- PATCHED_SYMBOLS=""
++- if test "$enable_dynsysgmp" = "yes" ; then
++-     for ac_header in gmp.h
+++if test "$enable_dynsysgmp" != "no" ; then
+++    for ac_header in gmp.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default"
++ if test "x$ac_cv_header_gmp_h" = xyes; then :
++@@ -5120,100 +4815,97 @@ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpz_init" >&5
++ $as_echo "$ac_cv_lib_gmp___gmpz_init" >&6; }
++ if test "x$ac_cv_lib_gmp___gmpz_init" = xyes; then :
++-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for external gmp version\"" >&5
++-$as_echo_n "checking \"for external gmp version\"... " >&6; }
++-                     if test "$cross_compiling" = yes; then :
++-  echo "Cannot use dynamic gmp lib"
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for external gmp version" >&5
+++$as_echo_n "checking for external gmp version... " >&6; }
+++              if test "$cross_compiling" = yes; then :
+++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+++as_fn_error $? "cannot run test program while cross compiling
+++See \`config.log' for more details" "$LINENO" 5; }
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <gmp.h>
++-                                 int main() {
++-                                 #if __GNU_MP_VERSION > 3
++-                                     return 0;
++-                                 #else
++-                                     return -1;
++-                                 #endif
++-                                 }
+++
+++                              #include <gmp.h>
+++
+++int
+++main ()
+++{
+++
+++                              #if __GNU_MP_VERSION > 3
+++                              return 0;
+++                              #else
+++                              return -1;
+++                              #endif
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++-  #                          MPFILES=$GMPDIR/mpn/mul_n.o
++-#                            PATCHED_SYMBOLS=__gmpn_toom3_mul_n
++-                             MPFILES=
++-                             PATCHED_SYMBOLS=
++-#                            if test "$use" = "m68k-linux" ; then
++-#                                    MPFILES="$MPFILES $GMPDIR/mpn/lshift.o $GMPDIR/mpn/rshift.o"
++-#                                    PATCHED_SYMBOLS="$PATCHED_SYMBOLS __gmpn_lshift __gmpn_rshift"
++-#                            fi
++-                             TLIBS="$TLIBS -lgmp"
++-                             echo "#include \"gmp.h\"" >foo.c
++-                             echo "int main() {return 0;}" >>foo.c
++-                             MP_INCLUDE=`cpp foo.c | $AWK '/(\/|\\\\)gmp.h/ {if (!i) print $3;i=1}' | tr -d '"'`
++-                             rm -f foo.c
++-else
++-  echo "Cannot use dynamic gmp lib"
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: good" >&5
+++$as_echo "good" >&6; }
+++                   TLIBS="$TLIBS -lgmp"
+++                   echo "#include \"gmp.h\"" >foo.c
+++                   echo "int main() {return 0;}" >>foo.c
+++                   MP_INCLUDE=`cpp foo.c | $AWK '/(\/|\\\\)gmp.h/ {if (!i) print $3;i=1}' | tr -d '"'`
+++                   rm -f foo.c
++ fi
++ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-else
++-  echo "Cannot use dynamic gmp lib"
++ fi
++ 
++-else
++-  echo "Cannot use dynamic gmp lib"
++ fi
++ 
++ done
++ 
+++
+++    if test "$MP_INCLUDE" = "" ; then
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cannot use dynamic gmp lib" >&5
+++$as_echo "Cannot use dynamic gmp lib" >&6; }
+++    fi
+++
++ fi
++ 
++-NEED_LOCAL_GMP=''
+++
++ if test "$MP_INCLUDE" = "" ; then
++-     NEED_LOCAL_GMP=1;
++-fi
++-if test "$PATCHED_SYMBOLS" != "" ; then
++-     NEED_LOCAL_GMP=1;
++-fi
++ 
++-if test "$NEED_LOCAL_GMP" != "" ; then
+++    GMPDIR=gmp4
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking doing configure in gmp directory" >&5
+++$as_echo_n "checking doing configure in gmp directory... " >&6; }
+++    echo
+++    echo "#"
+++    echo "#"
+++    echo "# -------------------"
+++    echo "# Subconfigure of GMP"
+++    echo "#"
+++    echo "#"
++ 
++-      GMPDIR=gmp4
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking use_gmp=yes, doing configure in gmp directory" >&5
++-$as_echo_n "checking use_gmp=yes, doing configure in gmp directory... " >&6; }
++-      echo
++-      echo "#"
++-      echo "#"
++-      echo "# -------------------"
++-      echo "# Subconfigure of GMP"
++-      echo "#"
++-      echo "#"
++-
++-      if test "$use_common_binary" = "yes"; then
++-        cd $GMPDIR && ./configure --build=$host && cd ..
++-      else
++-        cd $GMPDIR && ./configure && cd ..
++-      fi
++-     #MY_SUBDIRS="$MY_SUBDIRS $GMPDIR"
++-
++-      echo "#"
++-      echo "#"
++-      echo "#"
++-      echo "# Subconfigure of GMP done"
++-      echo "# ------------------------"
++-      echo "#"
++-
++-     if test "$MP_INCLUDE" = "" ; then
++-             cp $GMPDIR/gmp.h h/gmp.h
++-             MP_INCLUDE=h/gmp.h
++-             MPFILES=gmp_all
++-     fi
+++    if test "$use_common_binary" = "yes"; then
+++     cd $GMPDIR && ./configure --build=$host && cd ..
+++    else
+++     cd $GMPDIR && ./configure --host=$host --build=$build && cd ..
+++    fi
+++    #MY_SUBDIRS="$MY_SUBDIRS $GMPDIR"
++ 
+++    echo "#"
+++    echo "#"
+++    echo "#"
+++    echo "# Subconfigure of GMP done"
+++    echo "# ------------------------"
+++    echo "#"
+++
+++    if test "$MP_INCLUDE" = "" ; then
+++     cp $GMPDIR/gmp.h h/gmp.h
+++     MP_INCLUDE=h/gmp.h
+++     MPFILES=gmp_all
+++    fi
++ fi
++ 
++-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for leading underscore in object symbols\"" >&5
++-$as_echo_n "checking \"for leading underscore in object symbols\"... " >&6; }
+++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for leading underscore in object symbols" >&5
+++$as_echo_n "checking for leading underscore in object symbols... " >&6; }
++ cat>foo.c <<EOFF
++ #include <math.h>
++ #include <stdio.h>
++@@ -5221,15 +4913,15 @@ int main() {FILE *f;double d=0.0;getc(f)
++ EOFF
++ $CC -c foo.c -o foo.o
++ if nm foo.o |grep " U " | grep "_cos" >/dev/null || nm foo.o |grep " U " | grep " _getc" >/dev/null ; then
++-     LEADING_UNDERSCORE=1
+++    LEADING_UNDERSCORE=1
++ 
++ $as_echo "#define LEADING_UNDERSCORE 1" >>confdefs.h
++ 
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
++ $as_echo "\"yes\"" >&6; }
++ else
++-     LEADING_UNDERSCORE=""
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
+++    LEADING_UNDERSCORE=""
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
++ $as_echo "\"no\"" >&6; }
++ fi
++ 
++@@ -5239,16 +4931,16 @@ $as_echo_n "checking \"for GNU ld option
++ touch map
++ $CC -o foo  -Wl,-Map  map foo.o >/dev/null 2>&1
++ if test `cat map | wc -l` != "0" ; then
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
++ $as_echo "\"yes\"" >&6; }
++ 
++ $as_echo "#define HAVE_GNU_LD 1" >>confdefs.h
++ 
++-     GNU_LD=1
+++    GNU_LD=1
++ else
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
++ $as_echo "\"no\"" >&6; }
++-     GNU_LD=
+++    GNU_LD=
++ fi
++ rm -f foo.c foo.o foo map
++ 
++@@ -5263,17 +4955,16 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-        #include <stdio.h>
++-     #include "$MP_INCLUDE"
+++                                #include <stdio.h>
+++                                #include "$MP_INCLUDE"
++ 
++ int
++ main ()
++ {
++ 
++-     FILE *fp=fopen("conftest1","w");
++-     fprintf(fp,"%u",sizeof(mp_limb_t));
++-     fclose(fp);
++-     return 0;
+++                                FILE *fp=fopen("conftest1","w");
+++                                fprintf(fp,"%u",sizeof(mp_limb_t));
+++                                fclose(fp);
++ 
++   ;
++   return 0;
++@@ -5307,18 +4998,18 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-        #include <stdio.h>
++-     #include "$MP_INCLUDE"
+++                                #include <stdio.h>
+++                                #include "$MP_INCLUDE"
++ 
++ int
++ main ()
++ {
++ 
++-     #ifdef _SHORT_LIMB
++-     return 0;
++-     #else
++-     return 1;
++-     #endif
+++                                #ifdef _SHORT_LIMB
+++                                return 0;
+++                                #else
+++                                return 1;
+++                                #endif
++ 
++   ;
++   return 0;
++@@ -5349,18 +5040,18 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-     #include <stdio.h>
++-     #include "$MP_INCLUDE"
+++                                #include <stdio.h>
+++                                #include "$MP_INCLUDE"
++ 
++ int
++ main ()
++ {
++ 
++-     #ifdef _LONG_LONG_LIMB
++-     return 0;
++-     #else
++-     return 1;
++-     #endif
+++                                #ifdef _LONG_LONG_LIMB
+++                                return 0;
+++                                #else
+++                                return 1;
+++                                #endif
++ 
++   ;
++   return 0;
++@@ -5380,17 +5071,17 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++ 
++- GMP=1
+++GMP=1
++ 
++ $as_echo "#define GMP 1" >>confdefs.h
++ 
++ 
++ 
++- echo > makedefsafter
++- echo "MPFILES=$MPFILES" >> makedefsafter
++- echo "PATCHED_SYMBOLS=$PATCHED_SYMBOLS" >> makedefsafter
++- echo >> makedefsafter
++-fi
+++echo > makedefsafter
+++echo "MPFILES=$MPFILES" >> makedefsafter
+++echo "PATCHED_SYMBOLS=$PATCHED_SYMBOLS" >> makedefsafter
+++echo >> makedefsafter
+++
++ 
++ 
++ #
++@@ -5399,7 +5090,7 @@ fi
++ 
++ if test "$enable_xgcl" = "yes" ; then
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
++ $as_echo_n "checking for X... " >&6; }
++ 
++ 
++@@ -5592,24 +5283,14 @@ else
++ $as_echo "libraries $x_libraries, headers $x_includes" >&6; }
++ fi
++ 
++-#   AC_PATH_XTRA
++-#   echo $X_CFLAGS
++-#   echo $X_LIBS
++-#   echo $X_EXTRA_LIBS
++-#   echo $X_PRE_LIBS
++-
++-   miss=0
++-#   AC_CHECK_LIB(Xmu,main,X_LIBS="$X_LIBS",miss=1,$X_LIBS)#FIXME remove these
++-#   AC_CHECK_LIB(Xt,main,X_LIBS="$X_LIBS",miss=1,$X_LIBS)
++-#   AC_CHECK_LIB(Xext,main,X_LIBS="$X_LIBS",miss=1,$X_LIBS)
++-#   AC_CHECK_LIB(Xaw,main,X_LIBS="$X_LIBS",miss=1,$X_LIBS)#until here
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lX11" >&5
+++
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lX11" >&5
++ $as_echo_n "checking for main in -lX11... " >&6; }
++ if ${ac_cv_lib_X11_main+:} false; then :
++   $as_echo_n "(cached) " >&6
++ else
++   ac_check_lib_save_LIBS=$LIBS
++-LIBS="-lX11 $X_LIBS $LIBS"
+++LIBS="-lX11  $LIBS"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++@@ -5635,22 +5316,14 @@ fi
++ $as_echo "$ac_cv_lib_X11_main" >&6; }
++ if test "x$ac_cv_lib_X11_main" = xyes; then :
++   X_LIBS="$X_LIBS -lX11"
+++$as_echo "#define HAVE_XGCL 1" >>confdefs.h
+++
++ else
++-  miss=1
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: missing x libraries -- cannot compile xgcl" >&5
+++$as_echo "missing x libraries -- cannot compile xgcl" >&6; }
++ fi
++ 
++ 
++-   if test "$miss" = "1" ; then
++-      X_CFLAGS=
++-      X_LIBS=
++-      X_EXTRA_LIBS=
++-      X_PRE_LIBS=
++-      echo missing x libraries -- cannot compile xgcl
++-   else
++-
++-$as_echo "#define HAVE_XGCL 1" >>confdefs.h
++-
++-   fi
++ fi
++ 
++ 
++@@ -5663,7 +5336,7 @@ fi
++ 
++ if test "$enable_dlopen" = "yes" ; then
++ 
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
++ $as_echo_n "checking for dlopen in -ldl... " >&6; }
++ if ${ac_cv_lib_dl_dlopen+:} false; then :
++   $as_echo_n "(cached) " >&6
++@@ -5700,25 +5373,27 @@ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
++ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
++ if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
++-  have_dl=1
+++  cat >>confdefs.h <<_ACEOF
+++#define HAVE_LIBDL 1
+++_ACEOF
+++
+++  LIBS="-ldl $LIBS"
+++
++ else
++-  have_dl=0
+++  as_fn_error $? "Cannot find dlopen" "$LINENO" 5
++ fi
++ 
++-     if test "$have_dl" = "0" ; then
++-             echo "Cannot find dlopen in -dl"
++-             exit 1
++-     fi
++ 
++-     TLIBS="$TLIBS -ldl -rdynamic"
++-     TCFLAGS="-fPIC $TCFLAGS"
+++    TLIBS="$TLIBS -ldl -rdynamic"
+++    assert_arg_to_tcflags -fPIC
++ 
++ $as_echo "#define USE_DLOPEN 1" >>confdefs.h
++ 
+++
++ fi
++ 
++ if test "$enable_statsysbfd" = "yes" || test "$enable_dynsysbfd" = "yes" ; then
++-     for ac_header in bfd.h
+++    for ac_header in bfd.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "bfd.h" "ac_cv_header_bfd_h" "$ac_includes_default"
++ if test "x$ac_cv_header_bfd_h" = xyes; then :
++@@ -5763,18 +5438,28 @@ fi
++ $as_echo "$ac_cv_lib_bfd_bfd_init" >&6; }
++ if test "x$ac_cv_lib_bfd_bfd_init" = xyes; then :
++   #
++-             # Old binutils appear to need CONST defined to const
++-             #
++-                     { $as_echo "$as_me:${as_lineno-$LINENO}: checking if need to define CONST for bfd" >&5
++-$as_echo_n "checking if need to define CONST for bfd... " >&6; }
++-                     if test "$cross_compiling" = yes; then :
+++         # Old binutils appear to need CONST defined to const
+++         #
+++         { $as_echo "$as_me:${as_lineno-$LINENO}: checking need to define CONST for bfd" >&5
+++$as_echo_n "checking need to define CONST for bfd... " >&6; }
+++         if test "$cross_compiling" = yes; then :
++   as_fn_error $? "cannot use bfd" "$LINENO" 5
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#define IN_GCC
++-                                 #include <bfd.h>
++-                                 int main() { symbol_info t; return 0;}
+++
+++                         #define IN_GCC
+++                         #include <bfd.h>
+++
+++int
+++main ()
+++{
+++
+++                         symbol_info t;
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++@@ -5785,10 +5470,20 @@ else
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#define CONST const
++-                                            #define IN_GCC
++-                                         #include <bfd.h>
++-                                         int main() {symbol_info t; return 0;}
+++
+++                             #define CONST const
+++                             #define IN_GCC
+++                             #include <bfd.h>
+++
+++int
+++main ()
+++{
+++
+++                             symbol_info t;
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++@@ -5820,13 +5515,13 @@ done
++ $as_echo "#define HAVE_LIBBFD 1" >>confdefs.h
++ 
++ 
++-#
++-# BFD boolean syntax
++-#
+++    #
+++    # BFD boolean syntax
+++    #
++ 
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for useable bfd_boolean" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for useable bfd_boolean" >&5
++ $as_echo_n "checking for useable bfd_boolean... " >&6; }
++-     if test "$cross_compiling" = yes; then :
+++    if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -5835,14 +5530,14 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-             #define IN_GCC
++-             #include <bfd.h>
++-             bfd_boolean foo() {return FALSE;}
+++                 #define IN_GCC
+++                 #include <bfd.h>
+++                 bfd_boolean foo() {return FALSE;}
++ 
++ int
++ main ()
++ {
++-return 0;
+++
++   ;
++   return 0;
++ }
++@@ -5862,13 +5557,13 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++ 
++-#
++-# bfd_link_info.output_bfd minimal configure change check
++-#
++-
++-     ac_fn_c_check_member "$LINENO" "struct bfd_link_info" "output_bfd" "ac_cv_member_struct_bfd_link_info_output_bfd" "
++-             #include <bfd.h>
++-             #include <bfdlink.h>
+++    #
+++    # bfd_link_info.output_bfd minimal configure change check
+++    #
+++
+++    ac_fn_c_check_member "$LINENO" "struct bfd_link_info" "output_bfd" "ac_cv_member_struct_bfd_link_info_output_bfd" "
+++                     #include <bfd.h>
+++                     #include <bfdlink.h>
++ 
++ "
++ if test "x$ac_cv_member_struct_bfd_link_info_output_bfd" = xyes; then :
++@@ -5879,25 +5574,25 @@ fi
++ 
++ 
++ 
++-#
++-# FIXME: Need to workaround mingw before this point -- CM
++-#
++-     if test "$enable_statsysbfd" = "yes" && ! $CC -v 2>&1 | fgrep ming > /dev/null ; then
++-             echo 'int main() {bfd_init();bfd_openr("/dev/null",0);return 0;}' >foo.c
++-             MP=`$CC  -Wl,-M  -static -o foo foo.c -lbfd -liberty -ldl 2>&1 | grep -v : | tr '()' '\012\012' | $AWK '{print $NF}' | sort | uniq`
++-             rm -f foo.c foo
++-             if echo $MP | tr ' ' '\012' | grep libbfd.a >/dev/null; then
++-                LIBBFD="`echo $MP | tr ' ' '\012' | grep libbfd.a | $AWK '{i=split($1,A,"/");for (j=1;j<=i;j++) if (j>1 && A[j]=="..") {j--;i-=2;for (k=j;k<=i;k++) A[k]=A[k+2];j--;}} END {for (j=1;j<=i;j++) printf("%s%s",A[j],j!=i ? "/" : "")}'`"
++-             else
++-                as_fn_error $? "cannot locate external libbfd.a" "$LINENO" 5
++-             fi
++-             if echo $MP | tr ' ' '\012' | grep libiberty.a >/dev/null ; then
++-                LIBIBERTY="`echo $MP | tr ' ' '\012' | grep libiberty.a | $AWK '{i=split($1,A,"/");for (j=1;j<=i;j++) if (j>1 && A[j]=="..") {j--;i-=2;for (k=j;k<=i;k++) A[k]=A[k+2];j--;}} END {for (j=1;j<=i;j++) printf("%s%s",A[j],j!=i ? "/" : "")}'`"
++-             else
++-                as_fn_error $? "cannot locate external libiberty.a" "$LINENO" 5
++-             fi
++-             BUILD_BFD=copy_bfd
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5
+++    #
+++    # FIXME: Need to workaround mingw before this point -- CM
+++    #
+++    if test "$enable_statsysbfd" = "yes" && ! $CC -v 2>&1 | fgrep ming > /dev/null ; then
+++     echo 'int main() {bfd_init();bfd_openr("/dev/null",0);return 0;}' >foo.c
+++     MP=`$CC  -Wl,-M  -static -o foo foo.c -lbfd -liberty -ldl 2>&1 | grep -v : | tr '()' '\012\012' | $AWK '{print $NF}' | sort | uniq`
+++     rm -f foo.c foo
+++     if echo $MP | tr ' ' '\012' | grep libbfd.a >/dev/null; then
+++         LIBBFD="`echo $MP | tr ' ' '\012' | grep libbfd.a | $AWK '{i=split($1,A,\"/\");for (j=1;j<=i;j++) if (j>1 && A[j]==\"..\") {j--;i-=2;for (k=j;k<=i;k++) A[k]=A[k+2];j--;}} END {for (j=1;j<=i;j++) printf(\"%s%s\",A[j],j!=i ? \"/\" : \"\")}'`"
+++     else
+++         as_fn_error $? "cannot locate external libbfd.a" "$LINENO" 5
+++     fi
+++     if echo $MP | tr ' ' '\012' | grep libiberty.a >/dev/null ; then
+++         LIBIBERTY="`echo $MP | tr ' ' '\012' | grep libiberty.a | $AWK '{i=split($1,A,\"/\");for (j=1;j<=i;j++) if (j>1 && A[j]==\"..\") {j--;i-=2;for (k=j;k<=i;k++) A[k]=A[k+2];j--;}} END {for (j=1;j<=i;j++) printf(\"%s%s\",A[j],j!=i ? \"/\" : \"\")}'`"
+++     else
+++         as_fn_error $? "cannot locate external libiberty.a" "$LINENO" 5
+++     fi
+++     BUILD_BFD=copy_bfd
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5
++ $as_echo_n "checking for inflate in -lz... " >&6; }
++ if ${ac_cv_lib_z_inflate+:} false; then :
++   $as_echo_n "(cached) " >&6
++@@ -5939,7 +5634,7 @@ else
++   as_fn_error $? "Need zlib for bfd linking" "$LINENO" 5
++ fi
++ 
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
++ $as_echo_n "checking for dlsym in -ldl... " >&6; }
++ if ${ac_cv_lib_dl_dlsym+:} false; then :
++   $as_echo_n "(cached) " >&6
++@@ -5985,76 +5680,22 @@ fi
++ 
++ 
++ 
++-     else
++-             TLIBS="$TLIBS -lbfd -liberty -ldl"
++-     fi
+++    else
+++     TLIBS="$TLIBS -lbfd -liberty -ldl"
+++    fi
++ fi
++ 
++-if test "$enable_locbfd" = "yes" ; then
++-
++-     # check for gettext.  It is part of glibc, but others
++-     # need GNU gettext separately.
++-#    AC_CHECK_HEADERS(libintl.h, true,
++-#                       AC_MSG_ERROR(libintl.h (gettext) not found))
++-#    AC_SEARCH_LIBS(dgettext, intl, true, AC_MSG_ERROR(gettext library not found))
++-
++-     echo "#"
++-     echo "#"
++-     echo "# -------------------------"
++-     echo "# Subconfigure of LIBINTL"
++-     echo "#"
++-     echo "#"
++-     cd binutils/intl && chmod +x configure && ./configure --disable-nls && cd ../..
++-#       MY_SUBDIRS="$MY_SUBDIRS binutils/libiberty "
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# Subconfigure of LIBINTL done"
++-     echo "# ------------------------------"
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# -------------------------"
++-     echo "# Subconfigure of LIBIBERTY"
++-     echo "#"
++-     echo "#"
++-     cd binutils/libiberty && chmod +x configure && ./configure --disable-nls && cd ../..
++-#       MY_SUBDIRS="$MY_SUBDIRS binutils/libiberty "
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# Subconfigure of LIBIBERTY done"
++-     echo "# ------------------------------"
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# -------------------"
++-     echo "# Subconfigure of BFD"
++-     echo "#"
++-     echo "#"
++-     cd binutils/bfd && chmod +x configure && ./configure --with-included-gettext --disable-nls && cd ../..
++-#       MY_SUBDIRS="$MY_SUBDIRS binutils/bfd "
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# Subconfigure of BFD done"
++-     echo "# ------------------------"
++-     echo "#"
++-#    TLIBS="$TLIBS `pwd`/binutils/bfd/libbfd.a `pwd`/binutils/libiberty/libiberty.a"
++-
++-$as_echo "#define HAVE_LIBBFD 1" >>confdefs.h
++-
++-     BUILD_BFD="h/bfd.h h/bfdlink.h h/ansidecl.h h/symcat.h"
++-
+++# Check whether --enable-xdr was given.
+++if test "${enable_xdr+set}" = set; then :
+++  enableval=$enable_xdr;
++ fi
++ 
++ 
++-if test "$enable_xdr" = "yes" ; then
++-   ac_fn_c_check_func "$LINENO" "xdr_double" "ac_cv_func_xdr_double"
+++if test "$enable_xdr" != "no" ; then
+++    XDR_LIB=""
+++    ac_fn_c_check_func "$LINENO" "xdr_double" "ac_cv_func_xdr_double"
++ if test "x$ac_cv_func_xdr_double" = xyes; then :
++-
++-$as_echo "#define HAVE_XDR 1" >>confdefs.h
++-
+++  XDR_LIB=" "
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdr_double in -ltirpc" >&5
++ $as_echo_n "checking for xdr_double in -ltirpc... " >&6; }
++@@ -6093,10 +5734,7 @@ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tirpc_xdr_double" >&5
++ $as_echo "$ac_cv_lib_tirpc_xdr_double" >&6; }
++ if test "x$ac_cv_lib_tirpc_xdr_double" = xyes; then :
++-
++-$as_echo "#define HAVE_XDR 1" >>confdefs.h
++-
++-                     TLIBS="$TLIBS -ltirpc" TCFLAGS="$TCFLAGS -I/usr/include/tirpc"
+++  XDR_LIB=tirpc
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdr_double in -lgssrpc" >&5
++ $as_echo_n "checking for xdr_double in -lgssrpc... " >&6; }
++@@ -6135,10 +5773,7 @@ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssrpc_xdr_double" >&5
++ $as_echo "$ac_cv_lib_gssrpc_xdr_double" >&6; }
++ if test "x$ac_cv_lib_gssrpc_xdr_double" = xyes; then :
++-
++-$as_echo "#define HAVE_XDR 1" >>confdefs.h
++-
++-                     TLIBS="$TLIBS -lgssrpc" TCFLAGS="$TCFLAGS -I/usr/include/gssrpc"
+++  XDR_LIB=gssrpc
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdr_double in -lrpc" >&5
++ $as_echo_n "checking for xdr_double in -lrpc... " >&6; }
++@@ -6177,10 +5812,7 @@ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rpc_xdr_double" >&5
++ $as_echo "$ac_cv_lib_rpc_xdr_double" >&6; }
++ if test "x$ac_cv_lib_rpc_xdr_double" = xyes; then :
++-
++-$as_echo "#define HAVE_XDR 1" >>confdefs.h
++-
++-                     TLIBS="$TLIBS -lrpc" TCFLAGS="$TCFLAGS -I/usr/include/rpc"
+++  XDR_LIB=rpc
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdr_double in -loncrpc" >&5
++ $as_echo_n "checking for xdr_double in -loncrpc... " >&6; }
++@@ -6219,10 +5851,7 @@ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_oncrpc_xdr_double" >&5
++ $as_echo "$ac_cv_lib_oncrpc_xdr_double" >&6; }
++ if test "x$ac_cv_lib_oncrpc_xdr_double" = xyes; then :
++-
++-$as_echo "#define HAVE_XDR 1" >>confdefs.h
++-
++-                     TLIBS="$TLIBS -loncrpc" TCFLAGS="$TCFLAGS -I/usr/include/oncrpc"
+++  XDR_LIB=oncrpc
++ fi
++ 
++ fi
++@@ -6233,6 +5862,16 @@ fi
++ 
++ fi
++ 
+++
+++    if test "$XDR_LIB" != ""; then
+++
+++$as_echo "#define HAVE_XDR 1" >>confdefs.h
+++
+++     if test "$XDR_LIB" != " "; then
+++         TLIBS="$TLIBS -l$XDR_LIB"
+++         add_arg_to_tcflags -I/usr/include/$XDR_LIB
+++     fi
+++    fi
++ fi
++ 
++ 
++@@ -6247,18 +5886,24 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-  #include <stdio.h>
++-  #include <unistd.h>
++-  int main() {
++-      unsigned long u;
++-      long j;
++-      if (__builtin_clzl(0)!=sizeof(long)*8)
++-              return -1;
++-      for (u=1,j=sizeof(long)*8-1;j>=0;j--,u<<=1)
++-               if (__builtin_clzl(u)!=j)
++-          return -1;
++-      return 0;
++-   }
+++             #include <stdio.h>
+++             #include <unistd.h>
+++
+++int
+++main ()
+++{
+++
+++             unsigned long u;
+++             long j;
+++             if (__builtin_clzl(0)!=sizeof(long)*8)
+++                        return -1;
+++                for (u=1,j=sizeof(long)*8-1;j>=0;j--,u<<=1)
+++                            if (__builtin_clzl(u)!=j)
+++                       return -1;
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++@@ -6286,18 +5931,24 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-  #include <stdio.h>
++-  #include <unistd.h>
++-  int main() {
++-      unsigned long u;
++-      long j;
++-      if (__builtin_ctzl(0)!=sizeof(long)*8)
++-              return -1;
++-      for (u=1,j=0;j<sizeof(long)*8-1;j++,u<<=1)
++-               if (__builtin_ctzl(u)!=j)
++-          return -1;
++-      return 0;
++-   }
+++             #include <stdio.h>
+++             #include <unistd.h>
+++
+++int
+++main ()
+++{
+++
+++             unsigned long u;
+++             long j;
+++             if (__builtin_ctzl(0)!=sizeof(long)*8)
+++                        return -1;
+++                for (u=1,j=0;j<sizeof(long)*8-1;j++,u<<=1)
+++                            if (__builtin_ctzl(u)!=j)
+++                       return -1;
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++@@ -6316,13 +5967,13 @@ fi
++ 
++ 
++ case $use in
++-     sh4*) ;;     #FIXME, these exceptions needed as of gcc 4.7
++-     hppa*) ;;    #FIXME
++-     powerpc*) ;; #FIXME
++-     alpha*) ;;   #FIXME
++-     ia64*) ;;    #FIXME
++-     *)
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking __builtin___clear_cache" >&5
+++    sh4*) ;;     #FIXME, these exceptions needed as of gcc 4.7
+++    hppa*) ;;    #FIXME
+++    powerpc*) ;; #FIXME
+++    alpha*) ;;   #FIXME
+++    ia64*) ;;    #FIXME
+++    *)
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: checking __builtin___clear_cache" >&5
++ $as_echo_n "checking __builtin___clear_cache... " >&6; }
++      if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++@@ -6333,7 +5984,6 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-
++ int
++ main ()
++ {
++@@ -6349,7 +5999,7 @@ if ac_fn_c_try_run "$LINENO"; then :
++ 
++ $as_echo "#define HAVE_BUILTIN_CLEAR_CACHE 1" >>confdefs.h
++ 
++-                              { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++          { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++@@ -6414,13 +6064,10 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-
++-
++ int
++ main ()
++ {
++ 
++-
++              /* Are we little or big endian?  Adapted from Harbison&Steele.  */
++              union {long l;char c[sizeof(long)];} u;
++              u.l = 1;
++@@ -6459,8 +6106,6 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-
++-
++ int
++ main ()
++ {
++@@ -6494,8 +6139,8 @@ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pagewidth" >&5
++ $as_echo_n "checking for pagewidth... " >&6; }
++ case $use in
++-     mips*) min_pagewidth=14;;
++-     *) min_pagewidth=12;;
+++    mips*) min_pagewidth=14;;
+++    *) min_pagewidth=12;;
++ esac
++ if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++@@ -6506,23 +6151,21 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-
++-         #include <stdio.h>
++-            #include <unistd.h>
++-            #ifdef __CYGWIN__
++-            #define getpagesize() 4096
++-            #endif
+++             #include <stdio.h>
+++             #include <unistd.h>
+++             #ifdef __CYGWIN__
+++             #define getpagesize() 4096
+++             #endif
++ 
++ int
++ main ()
++ {
++ 
++-         size_t i=getpagesize(),j;
++-         FILE *fp=fopen("conftest1","w");
++-         for (j=0;i>>=1;j++);
++-         j=j<$min_pagewidth ? $min_pagewidth : j;
++-         fprintf(fp,"%u",j);
++-         return 0;
+++             size_t i=getpagesize(),j;
+++             FILE *fp=fopen("conftest1","w");
+++             for (j=0;i>>=1;j++);
+++                 j=j<$min_pagewidth ? $min_pagewidth : j;
+++                 fprintf(fp,"%u",j);
++ 
++   ;
++   return 0;
++@@ -6557,27 +6200,27 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-        #include <stdio.h>
++-     #define EXTER
++-     #define INLINE
++-     #include "$MP_INCLUDE"
++-     #include "./h/enum.h"
++-     #define OBJ_ALIGN
++-     #include "./h/type.h"
++-     #include "./h/lu.h"
++-     #include "./h/object.h"
+++             #include <stdio.h>
+++             #define EXTER
+++             #define INLINE
+++             #include "$MP_INCLUDE"
+++             #include "./h/enum.h"
+++             #define OBJ_ALIGN
+++             #include "./h/type.h"
+++             #include "./h/lu.h"
+++             #include "./h/object.h"
++ 
++ int
++ main ()
++ {
++ 
++-     unsigned long i;
++-     FILE *fp=fopen("conftest1","w");
++-     for (i=1;i && NOT_OBJECT_ALIGNED(i); i<<=1);
++-     if (!i) return -1;
++-     fprintf(fp,"%lu",i);
++-     fclose(fp);
++-     return 0;
+++             unsigned long i;
+++             FILE *fp=fopen("conftest1","w");
+++             for (i=1;i && NOT_OBJECT_ALIGNED(i); i<<=1);
+++                 if (!i) return -1;
+++                    fprintf(fp,"%lu",i);
+++                    fclose(fp);
+++                    return 0;
++ 
++   ;
++   return 0;
++@@ -6585,7 +6228,7 @@ main ()
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   obj_align=`cat conftest1`
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $obj_align" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $obj_align" >&5
++ $as_echo "$obj_align" >&6; }
++ 
++ cat >>confdefs.h <<_ACEOF
++@@ -6615,8 +6258,8 @@ int
++ main ()
++ {
++ 
++-         char *v __attribute__ ((aligned ($obj_align)));
++-         return 0;
+++                      char *v __attribute__ ((aligned ($obj_align)));
+++
++   ;
++   return 0;
++ }
++@@ -6653,8 +6296,8 @@ int
++ main ()
++ {
++ 
++-         extern int v() __attribute__ ((noreturn));
++-         return 0;
+++                      extern int v() __attribute__ ((noreturn));
+++
++   ;
++   return 0;
++ }
++@@ -6679,68 +6322,43 @@ _ACEOF
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking sizeof struct contblock" >&5
++ $as_echo_n "checking sizeof struct contblock... " >&6; }
++ 
++-# work around MSYS pwd result incompatibility
++-if test "$use" = "mingw" ; then
++ if test "$cross_compiling" = yes; then :
++-  echo Cannot find sizeof struct contblock;exit 1
+++  as_fn_error $? "Cannot find sizeof struct contblock" "$LINENO" 5
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <stdio.h>
++-     #define EXTER
++-     #define INLINE
++-     #include "$MP_INCLUDE"
++-     #include "h/enum.h"
++-     #include "h/type.h"
++-     #include "h/lu.h"
++-     #include "h/object.h"
++-     int main(int argc,char **argv,char **envp) {
++-     FILE *f=fopen("conftest1","w");
++-     fprintf(f,"%u",sizeof(struct contblock));
++-     fclose(f);
++-     return 0;
++-     }
++-_ACEOF
++-if ac_fn_c_try_run "$LINENO"; then :
++-  sizeof_contblock=`cat conftest1`
++-else
++-  echo Cannot find sizeof struct contblock;exit 1
++-fi
++-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++-  conftest.$ac_objext conftest.beam conftest.$ac_ext
++-fi
++ 
++-else
++-if test "$cross_compiling" = yes; then :
++-  echo Cannot find sizeof struct contblock;exit 1
++-else
++-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++-/* end confdefs.h.  */
++-#include <stdio.h>
++-     #define EXTER
++-     #define INLINE
++-     #include "$MP_INCLUDE"
++-     #include "`pwd`/h/enum.h"
++-     #include "`pwd`/h/type.h"
++-     #include "`pwd`/h/lu.h"
++-     #include "`pwd`/h/object.h"
++-     int main(int argc,char **argv,char **envp) {
++-     FILE *f=fopen("conftest1","w");
++-     fprintf(f,"%u",sizeof(struct contblock));
++-     fclose(f);
++-     return 0;
++-     }
+++             #include <stdio.h>
+++             #define EXTER
+++             #define INLINE
+++             #include "$MP_INCLUDE"
+++             #include "h/enum.h"
+++             #include "h/type.h"
+++             #include "h/lu.h"
+++             #include "h/object.h"
+++
+++int
+++main ()
+++{
+++
+++             FILE *f=fopen("conftest1","w");
+++             fprintf(f,"%u",sizeof(struct contblock));
+++             fclose(f);
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   sizeof_contblock=`cat conftest1`
++ else
++-  echo Cannot find sizeof struct contblock;exit 1
+++  as_fn_error $? "Cannot find sizeof struct contblock" "$LINENO" 5
++ fi
++ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-fi
+++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sizeof_contblock" >&5
++ $as_echo "$sizeof_contblock" >&6; }
++ 
++@@ -6758,19 +6376,25 @@ $as_echo "no: WARNING you must be able t
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <unistd.h>
++-         #include <stdio.h>
++-         int main() {
+++
+++             #include <unistd.h>
+++             #include <stdio.h>
+++
+++int
+++main ()
+++{
+++
++              FILE *f;
++              if (!(f=fopen("conftest1","w")))
++-                     return -1;
++-             fprintf(f,"%u",sbrk(0));
++-             return 0;
++-             }
+++                return -1;
+++                fprintf(f,"%u",sbrk(0));
+++
+++  ;
+++  return 0;
+++}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++-  HAVE_SBRK=1
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++  HAVE_SBRK=1;{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: WARNING you must be able to emulate sbrk: as on mingw or macosx" >&5
++@@ -6782,16 +6406,16 @@ fi
++ 
++ 
++ if test "$use" = "386-macosx" ; then
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: emulating sbrk for mac" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: emulating sbrk for mac" >&5
++ $as_echo "emulating sbrk for mac" >&6; };
++-   HAVE_SBRK=0
+++    HAVE_SBRK=0
++ fi
++ 
++ if test "$HAVE_SBRK" = "1" ; then
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ADDR_NO_RANDOMIZE constant" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ADDR_NO_RANDOMIZE constant" >&5
++ $as_echo_n "checking for ADDR_NO_RANDOMIZE constant... " >&6; }
++-   if test "$cross_compiling" = yes; then :
+++    if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -6800,18 +6424,16 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-
++-            #include <sys/personality.h>
++-         #include <stdio.h>
+++                 #include <sys/personality.h>
+++                 #include <stdio.h>
++ 
++ int
++ main ()
++ {
++ 
++-         FILE *f;
++-         if (!(f=fopen("conftest1","w"))) return -1;
++-         fprintf(f,"%x",ADDR_NO_RANDOMIZE);
++-         return 0;
+++                 FILE *f;
+++                 if (!(f=fopen("conftest1","w"))) return -1;
+++                    fprintf(f,"%x",ADDR_NO_RANDOMIZE);
++ 
++   ;
++   return 0;
++@@ -6819,11 +6441,11 @@ main ()
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   ADDR_NO_RANDOMIZE=`cat conftest1`
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes $ADDR_NO_RANDOMIZE" >&5
+++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes $ADDR_NO_RANDOMIZE" >&5
++ $as_echo "yes $ADDR_NO_RANDOMIZE" >&6; }
++ else
++   ADDR_NO_RANDOMIZE=0
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no assuming 0x40000" >&5
+++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no assuming 0x40000" >&5
++ $as_echo "no assuming 0x40000" >&6; }
++ 
++ cat >>confdefs.h <<_ACEOF
++@@ -6836,9 +6458,9 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ADDR_COMPAT_LAYOUT constant" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ADDR_COMPAT_LAYOUT constant" >&5
++ $as_echo_n "checking for ADDR_COMPAT_LAYOUT constant... " >&6; }
++-   if test "$cross_compiling" = yes; then :
+++    if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -6847,18 +6469,16 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-
++-            #include <sys/personality.h>
++-         #include <stdio.h>
+++                 #include <sys/personality.h>
+++                 #include <stdio.h>
++ 
++ int
++ main ()
++ {
++ 
++-         FILE *f;
++-         if (!(f=fopen("conftest1","w"))) return -1;
++-         fprintf(f,"%x",ADDR_COMPAT_LAYOUT);
++-         return 0;
+++                 FILE *f;
+++                 if (!(f=fopen("conftest1","w"))) return -1;
+++                    fprintf(f,"%x",ADDR_COMPAT_LAYOUT);
++ 
++   ;
++   return 0;
++@@ -6866,11 +6486,11 @@ main ()
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   ADDR_COMPAT_LAYOUT=`cat conftest1`
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes $ADDR_COMPAT_LAYOUT" >&5
+++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes $ADDR_COMPAT_LAYOUT" >&5
++ $as_echo "yes $ADDR_COMPAT_LAYOUT" >&6; }
++ else
++   ADDR_COMPAT_LAYOUT=0
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++ 
++ cat >>confdefs.h <<_ACEOF
++@@ -6883,9 +6503,9 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ADDR_LIMIT_3GB constant" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ADDR_LIMIT_3GB constant" >&5
++ $as_echo_n "checking for ADDR_LIMIT_3GB constant... " >&6; }
++-   if test "$cross_compiling" = yes; then :
+++    if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -6894,18 +6514,16 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-
++-            #include <sys/personality.h>
++-         #include <stdio.h>
+++                 #include <sys/personality.h>
+++                 #include <stdio.h>
++ 
++ int
++ main ()
++ {
++ 
++-         FILE *f;
++-         if (!(f=fopen("conftest1","w"))) return -1;
++-         fprintf(f,"%x",ADDR_LIMIT_3GB);
++-         return 0;
+++                 FILE *f;
+++                 if (!(f=fopen("conftest1","w"))) return -1;
+++                    fprintf(f,"%x",ADDR_LIMIT_3GB);
++ 
++   ;
++   return 0;
++@@ -6913,11 +6531,11 @@ main ()
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   ADDR_LIMIT_3GB=`cat conftest1`
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes $ADDR_LIMIT_3GB" >&5
+++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes $ADDR_LIMIT_3GB" >&5
++ $as_echo "yes $ADDR_LIMIT_3GB" >&6; }
++ else
++   ADDR_LIMIT_3GB=0
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++ 
++ cat >>confdefs.h <<_ACEOF
++@@ -6930,9 +6548,9 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for personality(ADDR_NO_RANDOMIZE) support" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for personality(ADDR_NO_RANDOMIZE) support" >&5
++ $as_echo_n "checking for personality(ADDR_NO_RANDOMIZE) support... " >&6; }
++-   if test "$cross_compiling" = yes; then :
+++    if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -6941,12 +6559,13 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
+++                 #include <stdio.h>
+++                 #include <stdlib.h>
+++                 int main(int argc,char *argv[],char *envp[]) {
+++                     #include "h/unrandomize.h"
+++                     return 0;
+++                 }
++ 
++-             #include <stdio.h>
++-             #include <stdlib.h>
++-             int main(int argc,char **argv,char **envp) {
++-             #include "h/unrandomize.h"
++-             return 0;}
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++@@ -6963,92 +6582,89 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++ 
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking that sbrk is (now) non-random" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking that sbrk is (now) non-random" >&5
++ $as_echo_n "checking that sbrk is (now) non-random... " >&6; }
++-     if test "$cross_compiling" = yes; then :
++-  SBRK=0
+++    SBRK=0
+++    if test "$cross_compiling" = yes; then :
+++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+++as_fn_error $? "cannot run test program while cross compiling
+++See \`config.log' for more details" "$LINENO" 5; }
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <stdio.h>
++-                 #include <stdlib.h>
+++
+++                 #include <stdio.h>
+++                 #include <stdlib.h>
++                  int main(int argc,char * argv[],char * envp[]) {
++                      FILE *f;
++                      #ifdef CAN_UNRANDOMIZE_SBRK
++                      #include "h/unrandomize.h"
++                      #endif
++-                     if (!(f=fopen("conftest1","w"))) return -1;
++-                     fprintf(f,"%u",sbrk(0));
++-                     return 0;}
+++                     if (!(f=fopen("conftest1","w")))
+++                        return -1;
+++                        fprintf(f,"%u",sbrk(0));
+++                        return 0;
+++                 }
+++
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   SBRK=`cat conftest1`
++-else
++-  SBRK=0
++ fi
++ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-     if test "$SBRK" = "0" ; then
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot trap sbrk" >&5
++-$as_echo "cannot trap sbrk" >&6; }
++-             exit 1
++-     fi
++-     if test "$cross_compiling" = yes; then :
++-  SBRK1=0
+++    if test "$SBRK" = "0" ; then
+++     as_fn_error $? "cannot trap sbrk" "$LINENO" 5
+++    fi
+++
+++    SBRK1=0
+++    if test "$cross_compiling" = yes; then :
+++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+++as_fn_error $? "cannot run test program while cross compiling
+++See \`config.log' for more details" "$LINENO" 5; }
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <stdio.h>
++-                 #include <stdlib.h>
+++
+++                 #include <stdio.h>
+++                 #include <stdlib.h>
++                  int main(int argc,char * argv[],char * envp[]) {
++                      FILE *f;
++                      #ifdef CAN_UNRANDOMIZE_SBRK
++                      #include "h/unrandomize.h"
++                      #endif
++                      if (!(f=fopen("conftest1","w"))) return -1;
++-                     fprintf(f,"%u",sbrk(0));
++-                     return 0;}
+++                        fprintf(f,"%u",sbrk(0));
+++                        return 0;
+++                 }
+++
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   SBRK1=`cat conftest1`
++-else
++-  SBRK1=0
++ fi
++ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-     if test "$SBRK1" = "0" ; then
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot trap sbrk" >&5
++-$as_echo "cannot trap sbrk" >&6; }
++-             exit 1
++-     fi
++-     if test "$SBRK" = "$SBRK1" ; then
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++    if test "$SBRK1" = "0" ; then
+++     as_fn_error $? "cannot trap sbrk" "$LINENO" 5
+++    fi
+++    if test "$SBRK" = "$SBRK1" ; then
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++-     else
++-             { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+++    else
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++-             echo "Cannot build with randomized sbrk. Your options:"
++-             echo " - upgrade to a kernel/libc that knows about personality(ADDR_NO_RANDOMIZE)"
++-             echo " - recompile your kernel with CONFIG_COMPAT_BRK (if it has that option)"
++-             echo " - run sysctl kernel.randomize_va_space=0 before using gcl"
++-             exit 1
++-     fi
+++     echo "Cannot build with randomized sbrk. Your options:"
+++     echo " - upgrade to a kernel/libc that knows about personality(ADDR_NO_RANDOMIZE)"
+++     echo " - recompile your kernel with CONFIG_COMPAT_BRK (if it has that option)"
+++     echo " - run sysctl kernel.randomize_va_space=0 before using gcl"
+++     as_fn_error $? "exiting" "$LINENO" 5
+++    fi
++ fi
++-
++-
++-
++-
++-
++-
++-
++-
++-
++-
++-
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking CSTACK_ADDRESS" >&5
++ $as_echo_n "checking CSTACK_ADDRESS... " >&6; }
++ if test "$cross_compiling" = yes; then :
++@@ -7060,34 +6676,35 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     void *
++-     foo() {
++-           int i;
++-           return (void *)&i;
++-        }
++-
++-     int main(int argc,char **argv,char **envp) {
++-     void *v ;
++-     FILE *fp = fopen("conftest1","w");
++-     unsigned long i,j;
++-
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     j=1;
++-     j<<=$PAGEWIDTH;
++-     j<<=16;
++-     i=(unsigned long)&v;
++-     if (foo()>i) i-=j;
++-     j--;
++-     i+=j;
++-     i&=~j;
++-     fprintf(fp,"0x%lx",i-1);
++-     fclose(fp);
++-     return 0;
++-}
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             void *
+++             foo() {
+++                 int i;
+++                 return (void *)&i;
+++             }
+++
+++             int
+++             main(int argc,char **argv,char **envp) {
+++                 void *v ;
+++                 FILE *fp = fopen("conftest1","w");
+++                 unsigned long i,j;
+++
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 j=1;
+++                 j<<=$PAGEWIDTH;
+++                 j<<=16;
+++                 i=(unsigned long)&v;
+++                 if (foo()>i) i-=j;
+++                    j--;
+++                    i+=j;
+++                    i&=~j;
+++                    fprintf(fp,"0x%lx",i-1);
+++                    fclose(fp);
+++                    return 0;
+++             }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   cstack_address=`cat conftest1`
++@@ -7117,35 +6734,36 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     void *
++-     foo() {
++-           int i;
++-           return (void *)&i;
++-        }
++-
++-     int main(int argc,char **argv,char **envp) {
++-     void *v ;
++-     FILE *fp = fopen("conftest1","w");
++-     unsigned long i,j;
++-
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     j=1;
++-     j<<=$PAGEWIDTH;
++-     j<<=16;
++-     i=(unsigned long)&v;
++-     if (foo()>i) i-=j;
++-     j--;
++-     i+=j;
++-     i&=~j;
++-     for (j=0;(i>>j)!=(i>>(sizeof(long)*8-1));j++);
++-     fprintf(fp,"%d",j);
++-     fclose(fp);
++-     return 0;
++-}
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             void *
+++             foo() {
+++                 int i;
+++                 return (void *)&i;
+++             }
+++
+++             int
+++             main(int argc,char **argv,char **envp) {
+++                 void *v ;
+++                 FILE *fp = fopen("conftest1","w");
+++                 unsigned long i,j;
+++
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 j=1;
+++                 j<<=$PAGEWIDTH;
+++                 j<<=16;
+++                 i=(unsigned long)&v;
+++                 if (foo()>i) i-=j;
+++                    j--;
+++                    i+=j;
+++                    i&=~j;
+++                    for (j=0;(i>>j)!=(i>>(sizeof(long)*8-1));j++);
+++                        fprintf(fp,"%d",j);
+++                        fclose(fp);
+++                        return 0;
+++             }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   cstack_bits=`cat conftest1`
++@@ -7175,33 +6793,33 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     int main(int argc,char **argv,char **envp) {
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     return (long)$cstack_address<0 ? 0 : -1;
++-}
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             int
+++             main(int argc,char **argv,char **envp) {
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 return (long)$cstack_address<0 ? 0 : -1;
+++             }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++-     neg_cstack_address=1
+++     neg_cstack_address=1
++ 
++ $as_echo "#define NEG_CSTACK_ADDRESS 1" >>confdefs.h
++ 
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++-     neg_cstack_address=0
+++     neg_cstack_address=0
++ fi
++ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++ 
++-
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking finding CSTACK_ALIGNMENT" >&5
++ $as_echo_n "checking finding CSTACK_ALIGNMENT... " >&6; }
++ if test "$cross_compiling" = yes; then :
++@@ -7213,23 +6831,23 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     int main(int argc,char **argv,char **envp) {
++-     void *b,*c;
++-     FILE *fp = fopen("conftest1","w");
++-     long n;
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     b=alloca(sizeof(b));
++-     c=alloca(sizeof(c));
++-     n=b>c ? b-c : c-b;
++-     n=n>sizeof(c) ? n : 1;
++-     fprintf(fp,"%ld",n);
++-     fclose(fp);
++-     return 0;
++-}
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             int main(int argc,char **argv,char **envp) {
+++                 void *b,*c;
+++                 FILE *fp = fopen("conftest1","w");
+++                 long n;
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 b=alloca(sizeof(b));
+++                 c=alloca(sizeof(c));
+++                 n=b>c ? b-c : c-b;
+++                 n=n>sizeof(c) ? n : 1;
+++                 fprintf(fp,"%ld",n);
+++                 fclose(fp);
+++                 return 0;
+++             }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   cstack_alignment=`cat conftest1`
++@@ -7259,24 +6877,25 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     void *
++-     foo(void) {
++-     int i;
++-     return (void *)&i;
++-     }
++-
++-     int main(int argc,char **argv,char **envp) {
++-     char *b;
++-     FILE *fp = fopen("conftest1","w");
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     fprintf(fp,"%d",((long) &b) > ((long) foo()) ? -1 : 1);
++-     fclose(fp);
++-     return 0;
++-}
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             void *
+++             foo(void) {
+++                 int i;
+++                 return (void *)&i;
+++             }
+++
+++             int
+++             main(int argc,char **argv,char **envp) {
+++                 char *b;
+++                 FILE *fp = fopen("conftest1","w");
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 fprintf(fp,"%d",((long) &b) > ((long) foo()) ? -1 : 1);
+++                 fclose(fp);
+++                 return 0;
+++             }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++   cstack_direction=`cat conftest1`
++@@ -7295,62 +6914,74 @@ _ACEOF
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cstack_direction" >&5
++ $as_echo "$cstack_direction" >&6; }
++ 
+++# Check whether --enable-immfix was given.
+++if test "${enable_immfix+set}" = set; then :
+++  enableval=$enable_immfix;
+++fi
+++
+++
+++# Check whether --enable-fastimmfix was given.
+++if test "${enable_fastimmfix+set}" = set; then :
+++  enableval=$enable_fastimmfix;
+++else
+++  enable_fastimmfix=64
+++fi
++ 
++ 
++ 
++ if test "$use" != "386-gnu" ; then #hurd can push .data below C stack, but sbrk(0) remains above, foiling unexec
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking finding default linker script" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking finding default linker script" >&5
++ $as_echo_n "checking finding default linker script... " >&6; }
++-   touch unixport/gcl.script
++-   echo "int main() {return 0;}" >foo.c
++-   $CC -Wl,--verbose foo.c -o foo 2>&1 | \
++-       $AWK '/\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=/ {i=1-i;next} {if (i) print}' >gcl.script
++-   rm -rf foo.c foo
+++    touch unixport/gcl.script
+++    echo "int main() {return 0;}" >foo.c
+++    $CC $TLDFLAGS -Wl,--verbose foo.c -o foo 2>&1 | \
+++     $AWK '/\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=/ {i=1-i;next} {if (i) print}' >gcl.script
+++    rm -rf foo.c foo
++ 
++-   if test "`cat gcl.script | wc -l`" != "0" ; then
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: got it" >&5
+++    if test "`cat gcl.script | wc -l`" != "0" ; then
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: got it" >&5
++ $as_echo "got it" >&6; }
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: trying to adjust text start" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: trying to adjust text start" >&5
++ $as_echo "$as_me: trying to adjust text start" >&6;}
++-      cp gcl.script gcl.script.def
+++     cp gcl.script gcl.script.def
++ 
++-      n=-1;
++-      k=0;
++-      lim=`$AWK 'END {printf("%d\n",m*8-2)}' m=$ac_cv_sizeof_long`;
++-      max=0;
++-      min=$lim;
++-      while test $n -lt $lim ; do
++-        j=`$AWK 'END {for (i=j=0;j<=n;j++) i=i ? i*2 : 1;printf("%x\n",3*i)}' n=$n </dev/null`
++-        cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[0-9]*","0x" j,$0);} {print}' j=$j >gcl.script
++-#        diff -u gcl.script.def gcl.script
++-        echo "int main() {return 0;}" >foo.c
++-        if ( $CC -Wl,-T gcl.script foo.c -o foo && ./foo ) >/dev/null 2>&1 ; then
++-         if test $n -lt $min ; then min=$n; fi;
++-         if test $n -gt $max; then max=$n; fi;
++-     elif test $max -gt 0 ; then
++-      break;
++-        fi;
++-        n=`$AWK 'END {print n+1}' n=$n </dev/null`
++-      done
+++     n=-1;
+++     k=0;
+++     lim=`$AWK 'END {printf("%d\n",m*8-2)}' m=$ac_cv_sizeof_long`;
+++     max=0;
+++     min=$lim;
+++     while test $n -lt $lim ; do
+++            j=`$AWK 'END {for (i=j=0;j<=n;j++) i=i ? i*2 : 1;printf("%x\n",3*i)}' n=$n </dev/null`
+++            cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[0-9]*","0x" j,$0);} {print}' j=$j >gcl.script
+++         #        diff -u gcl.script.def gcl.script
+++            echo "int main() {return 0;}" >foo.c
+++            if ( $CC $TLDFLAGS -Wl,-T gcl.script foo.c -o foo && ./foo ) >/dev/null 2>&1 ; then
+++             if test $n -lt $min ; then min=$n; fi;
+++             if test $n -gt $max; then max=$n; fi;
+++         elif test $max -gt 0 ; then
+++             break;
+++            fi;
+++            n=`$AWK 'END {print n+1}' n=$n </dev/null`
+++     done
++ 
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: min log text start $min" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: min log text start $min" >&5
++ $as_echo "$as_me: min log text start $min" >&6;}
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: max log text start $max" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: max log text start $max" >&5
++ $as_echo "$as_me: max log text start $max" >&6;}
++ 
++-      if test $neg_cstack_address -eq 1 ; then #FIXME test this
++-              if test $cstack_bits -lt $max ; then
++-         max=$cstack_bits;
++-            { $as_echo "$as_me:${as_lineno-$LINENO}: max log text start reduced to $max considering c stack address" >&5
+++     if test $neg_cstack_address -eq 1 ; then #FIXME test this
+++                 if test $cstack_bits -lt $max ; then
+++             max=$cstack_bits;
+++             { $as_echo "$as_me:${as_lineno-$LINENO}: max log text start reduced to $max considering c stack address" >&5
++ $as_echo "$as_me: max log text start reduced to $max considering c stack address" >&6;}
++-      fi
++-      fi
+++         fi
+++     fi
++ 
++-      j=-1;
++-      low_shft="";
++-      if test $min -le $max ; then
++-            if test $max -ge $enable_fastimmfix && test "$enable_immfix" = "yes" ; then
+++     j=-1;
+++     low_shft="";
+++     if test $min -le $max ; then
+++            if test $max -ge $enable_fastimmfix && test "$enable_immfix" != "no" ; then
++              j=`$AWK 'END {for (i=j=0;j<=n;j++) i=i ? i*2 : 1;printf("%x\n",3*i)}' n=$max </dev/null`
++              low_shft=`$AWK 'END {print n+1}' n=$max </dev/null`;
++              { $as_echo "$as_me:${as_lineno-$LINENO}: raising log text to $j for a $max bit wide low immfix table" >&5
++@@ -7360,9 +6991,9 @@ $as_echo "$as_me: raising log text to $j
++              { $as_echo "$as_me:${as_lineno-$LINENO}: lowering log text to $j to maximize data area" >&5
++ $as_echo "$as_me: lowering log text to $j to maximize data area" >&6;}
++          fi
++-      fi
+++     fi
++ 
++-      if test "$low_shft" != "" ; then
+++     if test "$low_shft" != "" ; then
++ 
++ cat >>confdefs.h <<_ACEOF
++ #define LOW_SHFT $low_shft
++@@ -7373,34 +7004,34 @@ cat >>confdefs.h <<_ACEOF
++ #define OBJNULL (object)0x$j
++ _ACEOF
++ 
++-      else
+++     else
++ 
++ cat >>confdefs.h <<_ACEOF
++ #define OBJNULL NULL
++ _ACEOF
++ 
++-      fi
+++     fi
++ 
++-#      echo $j;
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking our linker script" >&5
+++     #      echo $j;
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: checking our linker script" >&5
++ $as_echo_n "checking our linker script... " >&6; }
++-      if test "$j" -ne "-1" ; then
+++     if test "$j" -ne "-1" ; then
++             cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[0-9]*","0x" j,$0);} {print}' j=$j >gcl.script
++          { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
++ $as_echo "done" >&6; }
++          rm -f gcl.script.def
++          LDFLAGS="$LDFLAGS -Wl,-T gcl.script "
++          cp gcl.script unixport
++-      else
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: none found or not needed" >&5
+++     else
+++         { $as_echo "$as_me:${as_lineno-$LINENO}: result: none found or not needed" >&5
++ $as_echo "none found or not needed" >&6; }
++-      rm -f gcl.script gcl.script.def
++-      fi
++-      rm -rf foo.c foo
++-  else
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+++         rm -f gcl.script gcl.script.def
+++     fi
+++     rm -rf foo.c foo
+++    else
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
++ $as_echo "not found" >&6; }
++-  fi
+++    fi
++ 
++ else
++ 
++@@ -7412,19 +7043,6 @@ _ACEOF
++ 
++ fi
++ 
++-
++-
++-
++-
++-
++-
++-
++-
++-
++-
++-
++-
++-
++ mem_top=0
++ mem_range=0
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking mem top" >&5
++@@ -7438,30 +7056,30 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-     #include <stdio.h>
+++             #include <stdio.h>
++ 
++ int
++ main ()
++ {
++ 
++-     void *v;
++-     unsigned long i,j,k,l,m;
++-     FILE *fp = fopen("conftest1","w");
++-
++-     for (i=2,k=1;i;k=i,i<<=1);
++-     l=$cstack_address;
++-     l=$cstack_direction==1 ? (l<k ? k-1 : -1) : l;
++-     for (i=j=k;j && i<l;j>>=1,i|=j);
++-     if (j<(k>>3)) i=0;
++-     j=1;
++-     j<<=$PAGEWIDTH;
++-     j<<=4;
++-     j--;
++-     i+=j;
++-     i&=~j;
++-     fprintf(fp,"0x%lx",i);
++-     fclose(fp);
++-     return 0;
+++             void *v;
+++             unsigned long i,j,k,l,m;
+++             FILE *fp = fopen("conftest1","w");
+++
+++             for (i=2,k=1;i;k=i,i<<=1);
+++                 l=$cstack_address;
+++                 l=$cstack_direction==1 ? (l<k ? k-1 : -1) : l;
+++                 for (i=j=k;j && i<l;j>>=1,i|=j);
+++                     if (j<(k>>3)) i=0;
+++                        j=1;
+++                        j<<=$PAGEWIDTH;
+++                        j<<=4;
+++                        j--;
+++                        i+=j;
+++                        i&=~j;
+++                        fprintf(fp,"0x%lx",i);
+++                        fclose(fp);
+++                        return 0;
++ 
++   ;
++   return 0;
++@@ -7478,10 +7096,11 @@ fi
++ 
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mem_top" >&5
++ $as_echo "$mem_top" >&6; }
+++
++ if test "$mem_top" != "0x0" ; then
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking finding upper mem half range" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking finding upper mem half range" >&5
++ $as_echo_n "checking finding upper mem half range... " >&6; }
++-   if test "$cross_compiling" = yes; then :
+++    if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -7490,19 +7109,19 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-   #include <stdio.h>
+++                 #include <stdio.h>
++ 
++ int
++ main ()
++ {
++ 
++-   unsigned long j;
++-   FILE *fp = fopen("conftest1","w");
+++                 unsigned long j;
+++                 FILE *fp = fopen("conftest1","w");
++ 
++-   for (j=1;j && !(j& $mem_top);j<<=1);
++-   fprintf(fp,"0x%lx",j>>1);
++-   fclose(fp);
++-   return 0;
+++                 for (j=1;j && !(j& $mem_top);j<<=1);
+++                     fprintf(fp,"0x%lx",j>>1);
+++                     fclose(fp);
+++                     return 0;
++ 
++   ;
++   return 0;
++@@ -7517,9 +7136,9 @@ rm -f core *.core core.conftest.* gmon.o
++   conftest.$ac_objext conftest.beam conftest.$ac_ext
++ fi
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mem_range" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mem_range" >&5
++ $as_echo "$mem_range" >&6; }
++-   if test "$mem_range" != "0x0" ; then
+++    if test "$mem_range" != "0x0" ; then
++ 
++ cat >>confdefs.h <<_ACEOF
++ #define MEM_TOP $mem_top
++@@ -7530,12 +7149,12 @@ cat >>confdefs.h <<_ACEOF
++ #define MEM_RANGE $mem_range
++ _ACEOF
++ 
++-   fi
+++    fi
++ fi
++ 
++-if test "$enable_immfix" = "yes" ; then
++-  if test "$mem_top" != "0x0" ; then
++-     if test "$mem_range" != "0x0" ; then
+++if test "$enable_immfix" != "no" ; then
+++    if test "$mem_top" != "0x0" ; then
+++     if test "$mem_range" != "0x0" ; then
++ 
++ cat >>confdefs.h <<_ACEOF
++ #define IM_FIX_BASE $mem_top
++@@ -7546,24 +7165,10 @@ cat >>confdefs.h <<_ACEOF
++ #define IM_FIX_LIM $mem_range
++ _ACEOF
++ 
++-     fi
++-  fi
+++     fi
+++    fi
++ fi
++ 
++-
++-
++-
++-# On systems with execshield, brk is randomized.  We need to catch
++-# this and restore the traditional behavior here
++-
++-
++-
++-
++-
++-
++-
++-
++-
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking sizeof long long int" >&5
++ $as_echo_n "checking sizeof long long int... " >&6; }
++ if test "$cross_compiling" = yes; then :
++@@ -7575,14 +7180,14 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-     #include <stdio.h>
+++             #include <stdio.h>
++ 
++ int
++ main ()
++ {
++ 
++-     if (sizeof(long long int) == 2*sizeof(long)) return 0;
++-     return 1;
+++             if (sizeof(long long int) == 2*sizeof(long)) return 0;
+++                return 1;
++ 
++   ;
++   return 0;
++@@ -7604,7 +7209,6 @@ fi
++ 
++ 
++ 
++-
++ for ac_header in dirent.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "dirent.h" "ac_cv_header_dirent_h" "$ac_includes_default"
++@@ -7614,21 +7218,21 @@ if test "x$ac_cv_header_dirent_h" = xyes
++ _ACEOF
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for d_type" >&5
++ $as_echo_n "checking for d_type... " >&6; }
++-     if test "$cross_compiling" = yes; then :
+++              if test "$cross_compiling" = yes; then :
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-             #include <dirent.h>
+++                              #include <dirent.h>
++ 
++ int
++ main ()
++ {
++ 
++-             struct dirent d;
++-             return d.d_type=0;
+++                              struct dirent d;
+++                              return d.d_type=0;
++ 
++   ;
++   return 0;
++@@ -7652,32 +7256,18 @@ fi
++ done
++ 
++ 
++-# readline
++-# Check whether --enable-readline was given.
++-if test "${enable_readline+set}" = set; then :
++-  enableval=$enable_readline;
++-else
++-  enable_readline="yes"
++-fi
++-
++-
++ # ansi lisp
+++SYSTEM=ansi_gcl
+++CLSTANDARD=ANSI
++ # Check whether --enable-ansi was given.
++ if test "${enable_ansi+set}" = set; then :
++-  enableval=$enable_ansi;
++-else
++-  enable_ansi="yes"
+++  enableval=$enable_ansi; if test "$enable_ansi" = "no" ; then
+++                SYSTEM=gcl
+++                CLSTANDARD=CLtL1
+++            fi
++ fi
++ 
++ 
++-if test "$enable_ansi" = "yes" ; then
++-     SYSTEM=ansi_gcl
++-     CLSTANDARD=ANSI
++-else
++-     SYSTEM=gcl
++-     CLSTANDARD=CLtL1
++-fi
++-
++ FLISP="saved_$SYSTEM"
++ 
++ 
++@@ -7913,23 +7503,22 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-
++-            #include <stdio.h>
+++             #include <stdio.h>
++ 
++ int
++ main ()
++ {
++ 
++-            char *s= "2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416928368190255151086574637721112523897844250569536967707854499699679468644549059879316368892300987931277361782154249992295763514822082698951936680331825288693984964651058209392398294887933203625094431173012381970684161404";
++-         int n, m;
++-         double f;
++-         char *endptr;
++-            FILE *fp=fopen("conftest1","w");
+++             char *s= "2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416928368190255151086574637721112523897844250569536967707854499699679468644549059879316368892300987931277361782154249992295763514822082698951936680331825288693984964651058209392398294887933203625094431173012381970684161404";
+++             int n, m;
+++             double f;
+++             char *endptr;
+++             FILE *fp=fopen("conftest1","w");
++ 
++-         n=sscanf(s,"%lf%n",&f,&m);
++-         fprintf(fp,"%d",m);
++-         fclose(fp);
++-         return s[m];
+++             n=sscanf(s,"%lf%n",&f,&m);
+++             fprintf(fp,"%d",m);
+++             fclose(fp);
+++             return s[m];
++ 
++   ;
++   return 0;
++@@ -7940,7 +7529,7 @@ if ac_fn_c_try_run "$LINENO"; then :
++ $as_echo "none" >&6; }
++ else
++   buggy_maximum_sscanf_length=`cat conftest1`
++-         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $buggy_maximum_sscanf_length" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $buggy_maximum_sscanf_length" >&5
++ $as_echo "$buggy_maximum_sscanf_length" >&6; }
++ 
++ cat >>confdefs.h <<_ACEOF
++@@ -7955,8 +7544,10 @@ fi
++ 
++ 
++ EXTRA_LOBJS=
++-if test "$try_japi" = "yes" ; then
++-   for ac_header in japi.h
+++# Check whether --enable-japi was given.
+++if test "${enable_japi+set}" = set; then :
+++  enableval=$enable_japi; if test "$enable_japi" = "yes" ; then
+++                for ac_header in japi.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "japi.h" "ac_cv_header_japi_h" "$ac_includes_default"
++ if test "x$ac_cv_header_japi_h" = xyes; then :
++@@ -7965,14 +7556,16 @@ if test "x$ac_cv_header_japi_h" = xyes;
++ _ACEOF
++  $as_echo "#define HAVE_JAPI_H 1" >>confdefs.h
++ 
++-                              EXTRA_LOBJS="${EXTRA_LOBJS} gcl_japi.o"
++-                              LIBS="${LIBS} -ljapi -lwsock32"
+++                                  EXTRA_LOBJS="${EXTRA_LOBJS} gcl_japi.o"
+++                                  LIBS="${LIBS} -ljapi -lwsock32"
++ fi
++ 
++ done
++ 
+++            fi
++ fi
++ 
+++
++ # Should really find a way to check for prototypes, but this
++ # basically works for now.  CM
++ #
++@@ -8057,15 +7650,15 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-            #define _GNU_SOURCE
++-         #include <math.h>
+++             #define _GNU_SOURCE
+++             #include <math.h>
++ 
++ int
++ main ()
++ {
++ 
++-         float f;
++-         return isnormal(f) || !isnormal(f) ? 0 : 1;
+++             float f;
+++             return isnormal(f) || !isnormal(f) ? 0 : 1;
++ 
++   ;
++   return 0;
++@@ -8077,9 +7670,9 @@ $as_echo "#define HAVE_ISNORMAL 1" >>con
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++ else
++-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass in ieeefp.h" >&5
++-$as_echo_n "checking for fpclass in ieeefp.h... " >&6; }
++-              if test "$cross_compiling" = yes; then :
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpclass of ieeefp.h" >&5
+++$as_echo_n "checking for fpclass of ieeefp.h... " >&6; }
+++     if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -8088,14 +7681,14 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-                     #include <ieeefp.h>
+++                  #include <ieeefp.h>
++ 
++ int
++ main ()
++ {
++ 
++-                     float f;
++-                     return fpclass(f)>=FP_NZERO || fpclass(f)<FP_NZERO ? 0 : 1;
+++                  float f;
+++                  return fpclass(f)>=FP_NZERO || fpclass(f)<FP_NZERO ? 0 : 1;
++ 
++   ;
++   return 0;
++@@ -8131,15 +7724,15 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-        #define _GNU_SOURCE
++-     #include <math.h>
+++             #define _GNU_SOURCE
+++             #include <math.h>
++ 
++ int
++ main ()
++ {
++ 
++-     float f;
++-     return isfinite(f) || !isfinite(f) ? 0 : 1;
+++             float f;
+++             return isfinite(f) || !isfinite(f) ? 0 : 1;
++ 
++   ;
++   return 0;
++@@ -8153,7 +7746,7 @@ $as_echo "yes" >&6; }
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite()" >&5
++ $as_echo_n "checking for finite()... " >&6; }
++-           if test "$cross_compiling" = yes; then :
+++     if test "$cross_compiling" = yes; then :
++   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++ as_fn_error $? "cannot run test program while cross compiling
++@@ -8162,15 +7755,15 @@ else
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-             #include <math.h>
++-             #include <ieeefp.h>
+++                  #include <math.h>
+++                  #include <ieeefp.h>
++ 
++ int
++ main ()
++ {
++ 
++-             float f;
++-             return finite(f) || !finite(f) ? 0 : 1;
+++                  float f;
+++                  return finite(f) || !finite(f) ? 0 : 1;
++ 
++   ;
++   return 0;
++@@ -8194,8 +7787,6 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++ 
++-
++-
++ #--------------------------------------------------------------------
++ #    Check for the existence of the -lsocket and -lnsl libraries.
++ #    The order here is important, so that they end up in the right
++@@ -8315,10 +7906,19 @@ fi
++ fi
++ 
++ 
++-RL_OBJS=""
++-RL_LIB=""
++-if test "$enable_readline" = "yes" ; then
++-     for ac_header in readline/readline.h
+++# readline
+++# Check whether --enable-readline was given.
+++if test "${enable_readline+set}" = set; then :
+++  enableval=$enable_readline;
+++fi
+++
+++
+++if test "$use" = "mingw" ; then
+++    enable_readline=no
+++fi
+++
+++if test "$enable_readline" != "no" ; then
+++    for ac_header in readline/readline.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
++ if test "x$ac_cv_header_readline_readline_h" = xyes; then :
++@@ -8365,12 +7965,8 @@ if test "x$ac_cv_lib_readline_rl_initial
++ 
++ $as_echo "#define HAVE_READLINE 1" >>confdefs.h
++ 
++-                     TLIBS="$TLIBS -lreadline" #some machines don't link this, e.g. Slackware
++-                     RL_OBJS=gcl_readline.o
++-# Readline support now initialized automatically when compiled in, this lisp
++-# object no longer needed -- 20040102 CM
++-#                    RL_LIB=lsp/gcl_readline.o
++-
+++                                TLIBS="$TLIBS -lreadline" #some machines don't link this, e.g. Slackware
+++                                RL_OBJS=gcl_readline.o
++ fi
++ 
++ fi
++@@ -8378,8 +7974,8 @@ fi
++ done
++ 
++ 
++-# These tests discover differences between readline 4.1 and 4.3
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -lreadline" >&5
+++    # These tests discover differences between readline 4.1 and 4.3
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -lreadline" >&5
++ $as_echo_n "checking for rl_completion_matches in -lreadline... " >&6; }
++ if ${ac_cv_lib_readline_rl_completion_matches+:} false; then :
++   $as_echo_n "(cached) " >&6
++@@ -8429,34 +8025,37 @@ fi
++ 
++ 
++ 
+++# sockets
+++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking For network code for nsocket.c" >&5
++ $as_echo_n "checking For network code for nsocket.c... " >&6; }
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++ 
++-#include <sys/time.h>
++-#include <sys/types.h>
++-#include <unistd.h>
++-
++-#include <errno.h>
++-#include <fcntl.h>
++-#include <stdio.h>
++-
++-/************* for the sockets ******************/
++-#include <sys/socket.h>              /* struct sockaddr, SOCK_STREAM, ... */
++-#ifndef NO_UNAME
++-#   include <sys/utsname.h>  /* uname system call. */
++-#endif
++-#include <netinet/in.h>              /* struct in_addr, struct sockaddr_in */
++-#include <arpa/inet.h>               /* inet_ntoa() */
++-#include <netdb.h>           /* gethostbyname() */
+++             #include <sys/time.h>
+++             #include <sys/types.h>
+++             #include <unistd.h>
+++
+++             #include <errno.h>
+++             #include <fcntl.h>
+++             #include <stdio.h>
+++
+++             /************* for the sockets ******************/
+++             #include <sys/socket.h>         /* struct sockaddr, SOCK_STREAM, ... */
+++             #ifndef NO_UNAME
+++             #   include <sys/utsname.h>     /* uname system call. */
+++             #endif
+++             #include <netinet/in.h>         /* struct in_addr, struct sockaddr_in */
+++             #include <arpa/inet.h>          /* inet_ntoa() */
+++             #include <netdb.h>              /* gethostbyname() */
++ 
++ int
++ main ()
++ {
++- connect(0,(struct sockaddr *)0,0);
++-    gethostbyname("jil");
++-    socket(AF_INET, SOCK_STREAM, 0);
+++
+++             connect(0,(struct sockaddr *)0,0);
+++             gethostbyname("jil");
+++             socket(AF_INET, SOCK_STREAM, 0);
++ 
++   ;
++   return 0;
++@@ -8466,7 +8065,7 @@ if ac_fn_c_try_link "$LINENO"; then :
++ 
++ $as_echo "#define HAVE_NSOCKET 1" >>confdefs.h
++ 
++- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++@@ -8480,16 +8079,18 @@ rm -f core conftest.err conftest.$ac_obj
++ $as_echo_n "checking check for listen using fcntl... " >&6; }
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <stdio.h>
++-#include <fcntl.h>
+++
+++             #include <stdio.h>
+++             #include <fcntl.h>
++ 
++ int
++ main ()
++ {
++-FILE *fp=fopen("configure.in","r");
++-  int orig;
++-  orig = fcntl(fileno(fp), F_GETFL);
++-  if (! (orig & O_NONBLOCK )) return 0;
+++
+++             FILE *fp=fopen("configure.in","r");
+++             int orig;
+++             orig = fcntl(fileno(fp), F_GETFL);
+++             if (! (orig & O_NONBLOCK )) return 0;
++ 
++   ;
++   return 0;
++@@ -8499,7 +8100,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
++ 
++ $as_echo "#define LISTEN_USE_FCNTL 1" >>confdefs.h
++ 
++- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++@@ -8508,8 +8109,6 @@ fi
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ 
++ 
++-
++-
++ ac_fn_c_check_func "$LINENO" "profil" "ac_cv_func_profil"
++ if test "x$ac_cv_func_profil" = xyes; then :
++ 
++@@ -8531,7 +8130,7 @@ fi
++ 
++ 
++ if test "$no_setenv" = "1" ; then
++-ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv"
+++    ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv"
++ if test "x$ac_cv_func_putenv" = xyes; then :
++ 
++ $as_echo "#define HAVE_PUTENV 1" >>confdefs.h
++@@ -8551,17 +8150,11 @@ fi
++ 
++ gcl_ok=no
++ 
++-
++-
++-
++-
++-
++-# if test "x$enable_machine" = "x" ; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking FIONBIO vs. O_NONBLOCK for nonblocking I/O" >&5
++ $as_echo_n "checking FIONBIO vs. O_NONBLOCK for nonblocking I/O... " >&6; }
++ 
++ case $system in
++-       OSF*)
+++    OSF*)
++ 
++ $as_echo "#define USE_FIONBIO 1" >>confdefs.h
++ 
++@@ -8593,8 +8186,9 @@ esac
++ $as_echo_n "checking check for SV_ONSTACK... " >&6; }
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <signal.h>
++-int joe=SV_ONSTACK;
+++
+++             #include <signal.h>
+++             int joe=SV_ONSTACK;
++ 
++ int
++ main ()
++@@ -8609,7 +8203,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
++ $as_echo "#define HAVE_SV_ONSTACK 1" >>confdefs.h
++ 
++ 
++- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++@@ -8621,8 +8215,9 @@ rm -f core conftest.err conftest.$ac_obj
++ $as_echo_n "checking check for SIGSYS... " >&6; }
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <signal.h>
++-int joe=SIGSYS;
+++
+++             #include <signal.h>
+++             int joe=SIGSYS;
++ 
++ int
++ main ()
++@@ -8637,7 +8232,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
++ $as_echo "#define HAVE_SIGSYS 1" >>confdefs.h
++ 
++ 
++- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++@@ -8650,8 +8245,9 @@ rm -f core conftest.err conftest.$ac_obj
++ $as_echo_n "checking check for SIGEMT... " >&6; }
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <signal.h>
++-int joe=SIGEMT;
+++
+++             #include <signal.h>
+++             int joe=SIGEMT;
++ 
++ int
++ main ()
++@@ -8666,7 +8262,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
++ $as_echo "#define HAVE_SIGEMT 1" >>confdefs.h
++ 
++ 
++- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++ $as_echo "yes" >&6; }
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++@@ -8705,7 +8301,7 @@ if test "x$ac_cv_header_dis_asm_h" = xye
++ #define HAVE_DIS_ASM_H 1
++ _ACEOF
++  MLIBS=$LIBS
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for init_disassemble_info in -lopcodes" >&5
+++              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for init_disassemble_info in -lopcodes" >&5
++ $as_echo_n "checking for init_disassemble_info in -lopcodes... " >&6; }
++ if ${ac_cv_lib_opcodes_init_disassemble_info+:} false; then :
++   $as_echo_n "(cached) " >&6
++@@ -8750,7 +8346,7 @@ _ACEOF
++ 
++ fi
++ 
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+++              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
++ $as_echo_n "checking for dlopen in -ldl... " >&6; }
++ if ${ac_cv_lib_dl_dlopen+:} false; then :
++   $as_echo_n "(cached) " >&6
++@@ -8788,7 +8384,7 @@ fi
++ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
++ if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
++   #opcodes changes too quickly to link directly
++-             for ac_func in print_insn_i386
+++                           for ac_func in print_insn_i386
++ do :
++   ac_fn_c_check_func "$LINENO" "print_insn_i386" "ac_cv_func_print_insn_i386"
++ if test "x$ac_cv_func_print_insn_i386" = xyes; then :
++@@ -8807,7 +8403,7 @@ done
++ 
++ 
++ #if test $use = "386-linux" ; then
++-     for ac_header in asm/sigcontext.h
+++for ac_header in asm/sigcontext.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "asm/sigcontext.h" "ac_cv_header_asm_sigcontext_h" "$ac_includes_default"
++ if test "x$ac_cv_header_asm_sigcontext_h" = xyes; then :
++@@ -8819,7 +8415,7 @@ fi
++ 
++ done
++ 
++-     for ac_header in asm/signal.h
+++for ac_header in asm/signal.h
++ do :
++   ac_fn_c_check_header_mongrel "$LINENO" "asm/signal.h" "ac_cv_header_asm_signal_h" "$ac_includes_default"
++ if test "x$ac_cv_header_asm_signal_h" = xyes; then :
++@@ -8831,17 +8427,18 @@ fi
++ 
++ done
++ 
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext..." >&5
+++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext..." >&5
++ $as_echo_n "checking for sigcontext...... " >&6; }
++-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <signal.h>
+++
+++             #include <signal.h>
++ 
++ int
++ main ()
++ {
++ 
++-        struct sigcontext foo;
+++             struct sigcontext foo;
++ 
++   ;
++   return 0;
++@@ -8849,38 +8446,31 @@ main ()
++ _ACEOF
++ if ac_fn_c_try_compile "$LINENO"; then :
++ 
++-        sigcontext_works=1;
++-
++ $as_echo "#define SIGNAL_H_HAS_SIGCONTEXT 1" >>confdefs.h
++ 
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: sigcontext in signal.h" >&5
++-$as_echo "sigcontext in signal.h" >&6; }
++-
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: result: sigcontext of signal.h" >&5
+++$as_echo "sigcontext of signal.h" >&6; }
++ else
++-  sigcontext_works=0;
++-         { $as_echo "$as_me:${as_lineno-$LINENO}: result: sigcontext NOT in signal.h" >&5
++-$as_echo "sigcontext NOT in signal.h" >&6; }
++-
++-fi
++-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++-       if test "$sigcontext_works" = 0 ; then
++-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext..." >&5
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: sigcontext NOT of signal.h" >&5
+++$as_echo "sigcontext NOT of signal.h" >&6; }
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext..." >&5
++ $as_echo_n "checking for sigcontext...... " >&6; }
++-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+++     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ /* end confdefs.h.  */
++-#include <signal.h>
++-             #ifdef HAVE_ASM_SIGCONTEXT_H
++-             #include <asm/sigcontext.h>
++-             #endif
++-             #ifdef HAVE_ASM_SIGNAL_H
++-             #include <asm/signal.h>
++-             #endif
+++
+++                  #include <signal.h>
+++                  #ifdef HAVE_ASM_SIGCONTEXT_H
+++                  #include <asm/sigcontext.h>
+++                  #endif
+++                  #ifdef HAVE_ASM_SIGNAL_H
+++                  #include <asm/signal.h>
+++                  #endif
++ 
++ int
++ main ()
++ {
++ 
++-        struct sigcontext foo;
+++                  struct sigcontext foo;
++ 
++   ;
++   return 0;
++@@ -8888,39 +8478,17 @@ main ()
++ _ACEOF
++ if ac_fn_c_try_compile "$LINENO"; then :
++ 
++-
++ $as_echo "#define HAVE_SIGCONTEXT 1" >>confdefs.h
++ 
++-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: sigcontext in asm files" >&5
++-$as_echo "sigcontext in asm files" >&6; }
++-
+++       { $as_echo "$as_me:${as_lineno-$LINENO}: result: sigcontext asm files" >&5
+++$as_echo "sigcontext asm files" >&6; }
++ else
++-
++-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no sigcontext found" >&5
+++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no sigcontext found" >&5
++ $as_echo "no sigcontext found" >&6; }
++-
++ fi
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++-
++-
++-       fi
++-#    echo 'foo() {}' > conftest1.c
++-#    $CC -S conftest1.c
++-#    use_underscore=0
++-#    if fgrep _foo conftest1.s ; then use_underscore=1 ; fi
++-#    if test $use_underscore = 0 ; then
++-#            MPI_FILE=mpi-386_no_under.o
++-#          else
++-#         MPI_FILE=mpi-386d.o
++-#        fi
++-#    AC_SUBST(MPI_FILE)
++-#       GCC=$CC
++-#        if test -x  /usr/bin/i386-glibc20-linux-gcc ; then
++-#          GCC=/usr/bin/i386-glibc20-linux-gcc
++-#       fi
++-#    AC_SUBST(GCC)
++-
++-#fi
+++fi
+++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ 
++ # Extract the first word of "emacs", so it can be a program name with args.
++ set dummy emacs; ac_word=$2
++@@ -8980,11 +8548,11 @@ EOF
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking emacs site lisp directory" >&5
++ $as_echo_n "checking emacs site lisp directory... " >&6; }
++ if [ "$EMACS_SITE_LISP" = "unknown" ] ; then
++-     if [ "$EMACS" != "" ] ; then
++-             EMACS_SITE_LISP=`$EMACS -q -batch --no-site-file -l conftest.el 2>&1 | sed -e /Loading/d | sed -e /load/d  |sed -e /Warning:/d`
++-     else
++-             EMACS_SITE_LISP=""
++-     fi
+++    if [ "$EMACS" != "" ] ; then
+++     EMACS_SITE_LISP=`$EMACS -q -batch --no-site-file -l conftest.el 2>&1 | sed -e /Loading/d | sed -e /load/d  |sed -e /Warning:/d`
+++    else
+++     EMACS_SITE_LISP=""
+++    fi
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EMACS_SITE_LISP" >&5
++ $as_echo "$EMACS_SITE_LISP" >&6; }
++@@ -9005,14 +8573,14 @@ EOF
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking emacs default.el" >&5
++ $as_echo_n "checking emacs default.el... " >&6; }
++ if [ "$EMACS" != "" ] ; then
++-     EMACS_DEFAULT_EL=`$EMACS -q -batch --no-site-file -l conftest.el 2>&1 | sed -e /Loading/d | sed -e /load/d |sed -e /Warning:/d`
+++    EMACS_DEFAULT_EL=`$EMACS -q -batch --no-site-file -l conftest.el 2>&1 | sed -e /Loading/d | sed -e /load/d |sed -e /Warning:/d`
++ else
++-     EMACS_DEFAULT_EL=""
+++    EMACS_DEFAULT_EL=""
++ fi
++ if  test -f "${EMACS_DEFAULT_EL}"  ; then true;else
++-  if test -d $EMACS_SITE_LISP ; then
++-     EMACS_DEFAULT_EL=${EMACS_SITE_LISP}/default.el
++-  fi
+++    if test -d $EMACS_SITE_LISP ; then
+++     EMACS_DEFAULT_EL=${EMACS_SITE_LISP}/default.el
+++    fi
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EMACS_DEFAULT_EL" >&5
++ $as_echo "$EMACS_DEFAULT_EL" >&6; }
++@@ -9046,14 +8614,34 @@ fi
++ $as_echo "$INFO_DIR" >&6; }
++ 
++ 
++-if test "$enable_tcltk" = "yes" ; then
+++# Check whether --enable-tcltk was given.
+++if test "${enable_tcltk+set}" = set; then :
+++  enableval=$enable_tcltk;
+++fi
+++
+++# Check whether --enable-tkconfig was given.
+++if test "${enable_tkconfig+set}" = set; then :
+++  enableval=$enable_tkconfig; TK_CONFIG_PREFIX=$enableval
+++else
+++  TK_CONFIG_PREFIX=unknown
+++fi
+++
+++# Check whether --enable-tclconfig was given.
+++if test "${enable_tclconfig+set}" = set; then :
+++  enableval=$enable_tclconfig; TCL_CONFIG_PREFIX=$enableval
+++else
+++  TCL_CONFIG_PREFIX=unknown
+++fi
+++
+++
+++if test "$enable_tcltk" != "no" ; then
++ 
++-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tcl/tk" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tcl/tk" >&5
++ $as_echo_n "checking for tcl/tk... " >&6; }
++ 
++-   if test -d "${TCL_CONFIG_PREFIX}"  ; then true ; else
+++    if test -d "${TCL_CONFIG_PREFIX}"  ; then true ; else
++ 
++-     # Extract the first word of "tclsh", so it can be a program name with args.
+++     # Extract the first word of "tclsh", so it can be a program name with args.
++ set dummy tclsh; ac_word=$2
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++ $as_echo_n "checking for $ac_word... " >&6; }
++@@ -9092,76 +8680,76 @@ fi
++ 
++ 
++ 
++-     if test "${TCLSH}" = "" ; then true ; else
+++     if test "${TCLSH}" = "" ; then true ; else
++ 
++-        rm -f conftest.tcl
++-        cat >> conftest.tcl <<EOF
+++         rm -f conftest.tcl
+++         cat >> conftest.tcl <<EOF
++ 
++ puts [set tcl_version]
++ 
++ EOF
++ 
++-        TCL_VERSION=`${TCLSH} < conftest.tcl`
++-     fi
+++         TCL_VERSION=`${TCLSH} < conftest.tcl`
+++     fi
++ 
++-     if test -x /usr/lib/tcl$TCL_VERSION/tclConfig.sh ; then
++-       TCL_CONFIG_PREFIX=/usr/lib/tcl$TCL_VERSION
++-     fi
+++     if test -x /usr/lib/tcl$TCL_VERSION/tclConfig.sh ; then
+++         TCL_CONFIG_PREFIX=/usr/lib/tcl$TCL_VERSION
+++     fi
++ 
++-   fi
+++    fi
++ 
++-   if test -f ${TCL_CONFIG_PREFIX}/tclConfig.sh  ; then . ${TCL_CONFIG_PREFIX}/tclConfig.sh ; fi
+++    if test -f ${TCL_CONFIG_PREFIX}/tclConfig.sh  ; then . ${TCL_CONFIG_PREFIX}/tclConfig.sh ; fi
++ 
++-   if test -d "${TK_CONFIG_PREFIX}"  ; then true ; else
++-      if test -f ${TCL_CONFIG_PREFIX}/tkConfig.sh ; then
++-         TK_CONFIG_PREFIX=${TCL_CONFIG_PREFIX}
++-      else
++-         if test -x `echo $TCL_CONFIG_PREFIX | sed 's,tcl,tk,g'`/tkConfig.sh ; then
++-            TK_CONFIG_PREFIX=`echo $TCL_CONFIG_PREFIX | sed 's,tcl,tk,g'`
++-         fi
++-      fi
++-   fi
+++    if test -d "${TK_CONFIG_PREFIX}"  ; then true ; else
+++     if test -f ${TCL_CONFIG_PREFIX}/tkConfig.sh ; then
+++         TK_CONFIG_PREFIX=${TCL_CONFIG_PREFIX}
+++     else
+++         if test -x `echo $TCL_CONFIG_PREFIX | sed 's,tcl,tk,g'`/tkConfig.sh ; then
+++             TK_CONFIG_PREFIX=`echo $TCL_CONFIG_PREFIX | sed 's,tcl,tk,g'`
+++         fi
+++     fi
+++    fi
++ 
++-   if test -f ${TK_CONFIG_PREFIX}/tkConfig.sh  ; then . ${TK_CONFIG_PREFIX}/tkConfig.sh ; fi
+++    if test -f ${TK_CONFIG_PREFIX}/tkConfig.sh  ; then . ${TK_CONFIG_PREFIX}/tkConfig.sh ; fi
++ 
++-   if test -d ${TCL_CONFIG_PREFIX}/tcl${TCL_VERSION} ; then
++-      TCL_LIBRARY=${TCL_CONFIG_PREFIX}/tcl${TCL_VERSION}
++-   else
++-      if test -d ${TCL_CONFIG_PREFIX}/../tcl${TCL_VERSION} ; then
++-        TCL_LIBRARY=${TCL_CONFIG_PREFIX}/../tcl${TCL_VERSION}
++-      fi
++-   fi
+++    if test -d ${TCL_CONFIG_PREFIX}/tcl${TCL_VERSION} ; then
+++     TCL_LIBRARY=${TCL_CONFIG_PREFIX}/tcl${TCL_VERSION}
+++    else
+++     if test -d ${TCL_CONFIG_PREFIX}/../tcl${TCL_VERSION} ; then
+++         TCL_LIBRARY=${TCL_CONFIG_PREFIX}/../tcl${TCL_VERSION}
+++     fi
+++    fi
++ 
++-   if test -d ${TK_CONFIG_PREFIX}/tk${TK_VERSION} ; then
++-      TK_LIBRARY=${TK_CONFIG_PREFIX}/tk${TK_VERSION}
++-   else
++-      if test -d ${TK_CONFIG_PREFIX}/../tk${TK_VERSION} ; then
++-        TK_LIBRARY=${TK_CONFIG_PREFIX}/../tk${TK_VERSION}
++-      fi
++-   fi
+++    if test -d ${TK_CONFIG_PREFIX}/tk${TK_VERSION} ; then
+++     TK_LIBRARY=${TK_CONFIG_PREFIX}/tk${TK_VERSION}
+++    else
+++     if test -d ${TK_CONFIG_PREFIX}/../tk${TK_VERSION} ; then
+++         TK_LIBRARY=${TK_CONFIG_PREFIX}/../tk${TK_VERSION}
+++     fi
+++    fi
++ 
++-   if test -f ${TCL_CONFIG_PREFIX}/../include/tcl.h ; then
++-      TCL_INCLUDE=-I${TCL_CONFIG_PREFIX}/../include
++-   else
++-      if test -f /usr/include/tcl${TCL_VERSION}/tcl.h ; then
++-        TCL_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
++-      fi
++-   fi
+++    if test -f ${TCL_CONFIG_PREFIX}/../include/tcl.h ; then
+++     TCL_INCLUDE=-I${TCL_CONFIG_PREFIX}/../include
+++    else
+++     if test -f /usr/include/tcl${TCL_VERSION}/tcl.h ; then
+++         TCL_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
+++     fi
+++    fi
++ 
++-   if test -f ${TK_CONFIG_PREFIX}/../include/tk.h ; then
++-      TK_INCLUDE=-I${TK_CONFIG_PREFIX}/../include
++-   else
++-      if test -f /usr/include/tcl${TCL_VERSION}/tk.h ; then
++-        TK_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
++-      fi
++-   fi
+++    if test -f ${TK_CONFIG_PREFIX}/../include/tk.h ; then
+++     TK_INCLUDE=-I${TK_CONFIG_PREFIX}/../include
+++    else
+++     if test -f /usr/include/tcl${TCL_VERSION}/tk.h ; then
+++         TK_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
+++     fi
+++    fi
++ 
++-   TCL_VERSION_DOT_FREE=`echo ${TCL_VERSION} | tr -d .`
++-   if test -f ${TK_CONFIG_PREFIX}/../bin/tcl${TCL_VERSION_DOT_FREE}.dll  ; then
++-      TCL_LIBS="-L${TK_CONFIG_PREFIX}/../bin -ltk${TCL_VERSION_DOT_FREE} -ltcl${TCL_VERSION_DOT_FREE}"
++-      TCL_STUB_LIBS="-L${TK_CONFIG_PREFIX}/lib -ltkstub${TCL_VERSION_DOT_FREE} -ltclstub${TCL_VERSION_DOT_FREE}"
++-   else
++-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -llieee" >&5
+++    TCL_VERSION_DOT_FREE=`echo ${TCL_VERSION} | tr -d .`
+++    if test -f ${TK_CONFIG_PREFIX}/../bin/tcl${TCL_VERSION_DOT_FREE}.dll  ; then
+++     TCL_LIBS="-L${TK_CONFIG_PREFIX}/../bin -ltk${TCL_VERSION_DOT_FREE} -ltcl${TCL_VERSION_DOT_FREE}"
+++     TCL_STUB_LIBS="-L${TK_CONFIG_PREFIX}/lib -ltkstub${TCL_VERSION_DOT_FREE} -ltclstub${TCL_VERSION_DOT_FREE}"
+++    else
+++     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -llieee" >&5
++ $as_echo_n "checking for main in -llieee... " >&6; }
++ if ${ac_cv_lib_lieee_main+:} false; then :
++   $as_echo_n "(cached) " >&6
++@@ -9197,14 +8785,11 @@ else
++   have_ieee=0
++ fi
++ 
++-      if test "$have_ieee" = "0" ; then
++-        TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-lieee::g" `
++-      fi
++-      if test "$have_dl" = "0" ; then
++-        TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-ldl::g"`
++-      fi
++-      TCL_STUB_LIBS=""
++-   fi
+++     if test "$have_ieee" = "0" ; then
+++         TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-lieee::g" `
+++     fi
+++     TCL_STUB_LIBS=""
+++    fi
++ 
++ fi
++ 
++@@ -9229,16 +8814,18 @@ fi
++ 
++ 
++ if test -d "${TK_CONFIG_PREFIX}" ; then
++-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using TK_VERSION=${TK_VERSION} in ${TK_CONFIG_PREFIX}" >&5
++-$as_echo "using TK_VERSION=${TK_VERSION} in ${TK_CONFIG_PREFIX}" >&6; }
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: using TK_VERSION=${TK_VERSION} of ${TK_CONFIG_PREFIX}" >&5
+++$as_echo "using TK_VERSION=${TK_VERSION} of ${TK_CONFIG_PREFIX}" >&6; }
++ else
++-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
++ $as_echo "not found" >&6; }
++ fi
++ 
++-NOTIFY=$enable_notify
++-
+++# Check whether --enable-notify was given.
+++if test "${enable_notify+set}" = set; then :
+++  enableval=$enable_notify; NOTIFY=$enable_notify
++ 
+++fi
++ 
++ 
++ 
++@@ -9477,42 +9064,17 @@ _ACEOF
++ fi
++ 
++ 
++-# alloca
++-
++-# dlopen etc
++-# idea make it so you do something dlopen(libX.so,RTLD_GLOBAL)
++-# then dlload("foo.o") a lisp file can refer to things in libX.so
++-#
++-
++-# what machine this is, and include then a machine specific hdr.
++-# and machine specific defs.
++-
++-# check bzero,
++-
++-# check getcwd, getwd etc..
++-
++ 
+++LDFLAGS="`echo $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'` $TLDFLAGS"
++ 
+++LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS $LIBS $TLIBS"
++ 
++-# check socket stuff..
++-
++-# getrlimit
++-
++-# fionread or block
++-
++-# redhat/cygnus released for some reason a buggy version of gcc,
++-# which no one else released.   Catch that here.
++-
++-LDFLAGS="`echo $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'`"
++-
++-LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS $TLDFLAGS $LIBS $TLIBS"
++-
++-FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS $TCFLAGS $PROCESSOR_FLAGS"
+++FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS $TCFLAGS"
++ 
++ # Work around bug with gcc on ppc -- CM
++-NIFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TONIFLAGS $PROCESSOR_FLAGS -I\$(GCLDIR)/o"
+++NIFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TONIFLAGS -I\$(GCLDIR)/o"
++ 
++-CFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TO3FLAGS $PROCESSOR_FLAGS -I\$(GCLDIR)/o"
+++CFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TO3FLAGS -I\$(GCLDIR)/o"
++ 
++ O3FLAGS=$TO3FLAGS
++ 
++@@ -9522,12 +9084,10 @@ O2FLAGS=$TO2FLAGS
++ 
++ 
++ 
++-
++-
++ if test -f h/$use.defs  ; then
++ 
++ 
++-  ac_config_files="$ac_config_files makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp"
+++    ac_config_files="$ac_config_files makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp"
++ 
++ cat >confcache <<\_ACEOF
++ # This file is a shell script that caches the results of configure
++@@ -10804,13 +10364,13 @@ if test -n "$ac_unrecognized_opts" && te
++ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
++ fi
++ 
++-  echo makedefc
++-  cat makedefc
+++    echo makedefc
+++    cat makedefc
++ 
++-  echo    add-defs1 $use
++-  CC=$CC ./add-defs1 $use
+++    echo    add-defs1 $use
+++    CC=$CC ./add-defs1 $use
++ 
++ else
++-  echo "Unable to guess machine type"
++-  echo use configure --enable-machine=XXX,  for XXX such that h/XXX.defs exists, ie in h/*.defs
+++    echo "Unable to guess machine type"
+++    echo use configure --enable-machine=XXX,  for XXX such that h/XXX.defs exists, ie in h/*.defs
++ fi
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -5,107 +5,6 @@ AC_CONFIG_HEADER(h/gclincl.h)
++ VERSION=`cat majvers`.`cat minvers`
++ AC_SUBST(VERSION)
++ 
++-# some parts of this configure script are taken from the tcl configure.in
++-
++-#
++-# Arguments
++-#
++-
++-dnl help="--enable-maxpage=XXXX will compile in a page table of size XXX (default ${default_maxpage})"
++-
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl      #include <stdio.h>
++-dnl             #include <unistd.h>
++-dnl      ]],[[
++-dnl      FILE *fp=fopen("conftest1","w");
++-dnl      fprintf(fp,"%u",262144*( SIZEOF_LONG >>2)/(1<<($PAGEWIDTH-12)));
++-dnl      return 0;]])],[def_maxpage=`cat conftest1`],[def_maxpage=262144])
++-
++-dnl AC_ARG_ENABLE(maxpage,
++-dnl [ --enable-maxpage=XXXX  will compile in a page table of size XXX
++-dnl                          (eg '--enable-maxpage=64*1024' would produce
++-dnl                   64K pages allowing 256 MB if pages are 4K each)],
++-dnl ,enable_maxpage=$def_maxpage)
++-
++-AC_ARG_ENABLE(widecons,[use a three word cons with simplified typing],[AC_DEFINE([WIDE_CONS],[1],[three word cons])])
++-
++-
++-AC_ARG_ENABLE(safecdr,[protect cdr from immfix and speed up type processing],,[enable_safecdr="no"])
++-if test "$enable_safecdr" = "yes" ; then
++-   AC_DEFINE([USE_SAFE_CDR],[1],[protect cdr from immfix and speed up type processing])
++-fi
++-AC_ARG_ENABLE(safecdrdbg,[debug safecdr code],[AC_DEFINE([DEBUG_SAFE_CDR],[1],[debug safecdr code])])
++-
++-AC_ARG_ENABLE([prelink],[--enable-prelink will insist that the produced images may be prelinked],[PRELINK_CHECK=t],[PRELINK_CHECK=])
++-
++-AC_ARG_ENABLE([fastimmfix],[--enable-fastimmfix=XXXX will reject low immediate fixnums unless 1<<XXXX can be attained],
++-,[enable_fastimmfix=64])
++-
++-
++-AC_ARG_ENABLE(holepage,[ --enable-holepage=XXXX will compile in a XXX-sized hole between the heap and relocatable memory area (eg '--enable-holepage=64*1024' would give 64K pages allowing 256 MB if pages are 4K each)] ,
++-[AC_DEFINE_UNQUOTED(HOLEPAGE,$enable_holepage,[number of pages to use for hole])])
++-
++-AC_ARG_ENABLE(vssize,[ --enable-vssize=XXXX will compile in a value stack of size XXX] ,
++-,enable_vssize=262144)
++-AC_DEFINE_UNQUOTED(VSSIZE,$enable_vssize,[value stack size])
++-
++-AC_ARG_ENABLE(bdssize,[ --enable-bdssize=XXXX will compile in a binding stack of size XXX] ,
++-,enable_bdssize=2048)
++-AC_DEFINE_UNQUOTED(BDSSIZE,$enable_bdssize,[binding stack size])
++-
++-AC_ARG_ENABLE(ihssize,[ --enable-ihssize=XXXX will compile in a invocation history stack of size XXX] ,
++-,enable_ihssize=4096)
++-AC_DEFINE_UNQUOTED(IHSSIZE,$enable_ihssize,[invocation history stack size])
++-
++-AC_ARG_ENABLE(frssize,[ --enable-frssize=XXXX will compile in a frame stack of size XXX] ,
++-,enable_frssize=4096)
++-AC_DEFINE_UNQUOTED(FRSSIZE,$enable_frssize,[frame stack size])
++-
++-AC_ARG_ENABLE(machine,[ --enable-machine=XXXX will force the use of one of the definitions in h/XXXX.defs] ,
++-[enable_machine=$enableval],[enable_machine=""])
++-
++-AC_ARG_ENABLE(immfix,
++-[ --enable-immfix        will enable an immediate fixnum table
++-                         above the C stack],
++-,enable_immfix=yes)
++-
++-#AC_ARG_ENABLE(gmp,[ --enable-gmp=no will disable use of GMP gnu multiprecision arithmetic, (default is =yes)] ,
++-#[use_gmp=$enableval],[use_gmp="yes"])
++-
++-use_gmp="yes"
++-
++-AC_ARG_ENABLE(notify,[ --enable-notify=no will disable the automatic notification of gcl maintainers of successful builds/problems] ,
++-[enable_notify=$enableval],[enable_notify="yes"])
++-
++-AC_ARG_ENABLE(tcltk,[ try to build gcl-tk ] ,
++-[enable_tcltk=$enableval],[enable_tcltk="yes"])
++-
++-AC_ARG_ENABLE(tkconfig,[ --enable-tkconfig=XXXX will force the use of a TK_CONFIG_PREFIX=XXXXX as place to look for tkConfig.sh and tclConfig.sh ] ,
++-[TK_CONFIG_PREFIX=$enableval],[TK_CONFIG_PREFIX="unknown"])
++-
++-
++-AC_ARG_ENABLE(tclconfig,[ --enable-tclconfig=XXXX will force the use of a TCL_CONFIG_PREFIX=XXXXX as place to look for tclConfig.sh and tclConfig.sh ] ,
++-[TCL_CONFIG_PREFIX=$enableval],[TCL_CONFIG_PREFIX="unknown"])
++-
++-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/`
++-
++-AC_ARG_ENABLE(emacsdir,[ --enable-emacsdir=XXXX will manually specify the location for elisp files ] ,
++-[EMACS_SITE_LISP=$enableval],[EMACS_SITE_LISP=$prefix/share/emacs/site-lisp])
++-EMACS_SITE_LISP=`eval echo $EMACS_SITE_LISP/`
++-
++-AC_ARG_ENABLE(common-binary,[ --enable-common-binary=yes forces use of lowest common denominator instruction sets, (default is =yes)] ,
++-[use_common_binary=$enableval],[use_common_binary="yes"])
++-
++-AC_ARG_ENABLE(japi,[ --enable-japi=yes will compile in support for the JAPI graphical interface if present on your system],
++-[try_japi=$enableval],[try_japi="no"])
++-
++-AC_ARG_ENABLE(xdr,[ --enable-xdr=yes will compile in support for XDR],
++-[enable_xdr=$enableval],[enable_xdr="yes"])
++-
++-AC_ARG_ENABLE(xgcl,[ --enable-xgcl=yes will compile in support for XGCL],
++-[enable_xgcl=$enableval],[enable_xgcl="yes"])
++ 
++ #
++ # Host information 
++@@ -119,341 +18,150 @@ my_host_system=`echo $host_os | awk '{j=
++ AC_DEFINE_UNQUOTED(HOST_CPU,"`echo $host_cpu | awk '{print toupper($0)}'`",[Host cpu])
++ AC_DEFINE_UNQUOTED(HOST_KERNEL,"`echo $my_host_kernel | awk '{print toupper($0)}'`",[Host kernel])
++ if test "$my_host_system" != "" ; then 
++-     AC_DEFINE_UNQUOTED(HOST_SYSTEM,"`echo $my_host_system | awk '{print toupper($0)}'`",[Host system])
+++    AC_DEFINE_UNQUOTED(HOST_SYSTEM,"`echo $my_host_system | awk '{print toupper($0)}'`",[Host system])
++ fi
++ ## host=CPU-COMPANY-SYSTEM
++ AC_MSG_RESULT(host=$host)
++ 
++-PROCESSOR_FLAGS=${PROCESSOR_FLAGS:-""}
++-
++ use=unknown
++-TLDFLAGS=""
++ case $canonical in
++-     older)
++-     use=386-bsd;;
++-
++-     sh4*linux*)
++-     use=sh4-linux;;
++-
++-     *x86_64*linux*)
++-     use=amd64-linux;;
++-
++-     *x86_64*kfreebsd*)
++-     use=amd64-kfreebsd;;
++-
++-     *86*linux*)
++-     use=386-linux;;
++-
++-     *86*kfreebsd*)
++-     use=386-kfreebsd;;
++-
++-     *86*gnu*)
++-     use=386-gnu;;
++-
++-# m6800 not working with gcc-3.2
++-     m68k*linux*)
++-       if test "$use_common_binary" = "yes"; then
++-         host=m68020-unknown-linux-gnu
++-         echo "The host is canonicalised to $host"
++-       fi
++-             use=m68k-linux;;
++-
++-     alpha*linux*)
++-             use=alpha-linux;;
++-
++-     mips*linux*)
++-             use=mips-linux;;
++-
++-     mipsel*linux*)
++-             use=mipsel-linux;;
++-
++-     sparc*linux*)
++-             use=sparc-linux;;
++-
++-     aarch64*linux*)
++-        use=aarch64-linux;;
++-
++-     arm*linux*)
++-             use=arm-linux;;
++-
++-     s390*linux*)
++-             use=s390-linux;;
++-
++-     ia64*linux*)
++-             use=ia64-linux;;
++-
++-     hppa*linux*)
++-             use=hppa-linux;;
++-
++-     powerpc*linux*)
++-             use=powerpc-linux;;
++-
++-     powerpc-*-darwin*)
++-             use=powerpc-macosx;;
++-     
++-     *86*darwin*)
++-             use=386-macosx
++-     if test "$build_cpu" = "x86_64" ; then 
++-        CFLAGS="-m64 $CFLAGS";
++-        LDFLAGS="-m64 -Wl,-headerpad,72 -Wl,-no_pie $LDFLAGS"; 
++-     else 
++-        CFLAGS="-m32 $CFLAGS";
++-        LDFLAGS="-m32  -Wl,-headerpad,56 -Wl,-no_pie $LDFLAGS"; 
++-        fi;;
++-     
++-     alpha-dec-osf)
++-     use=alpha-osf1;;
++-
++-     mips-dec-ultrix)
++-     use=dec3100;;
++-
++-     old)
++-     use=dos-go32;;
++-
++-     *86*-freebsd*)
++-     use=FreeBSD;;
++-
++-     hp3*-*hpux*)
++-     use=hp300;;
++-
++-     hp3*-*-*bsd*)
++-     use=hp300-bsd;;
++-
++-     hppa*-*hpux*)
++-     use=hp800;;
++-
++-     mips-sgi-irix)
++-       case $system in
++-           IRIX5*)
++-            use=irix5;;
++-           IRIX6*)
++-            use=irix6;;
++-           IRIX3*)
++-            use=sgi4d;;
++-       esac ;;
++- 
++-
++-     m68k-apple-aux*)
++-     use=mac2;;
++-
++-     old)
++-     use=mp386;;
++-
++-     *86-ncr-sysv4)
++-     use=ncr;;
++-
++-     *[3-9]86-*netbsd*)
++-     use=NetBSD;;
++-
++-     old)
++-     use=NeXT;;
++-
++-     old)
++-     use=NeXT30-m68k;;
++-
++-     *86-*nextstep*)
++-     use=NeXT32-i386;;
++-
++-     *m68*-*nextstep*)
++-     use=NeXT32-m68k;;
++-
++-     *rs6000-*-aix4*)
++-     use=rios;;
++-
++-     *rs6000-*-aix3*)
++-     use=rios-aix3;;
++-
++-     old)
++-     use=rt_aix;;
++-
++-     old)
++-     use=sgi;;
++-
++-     sparc-sun-solaris*)
++-     use=solaris;;
++-
++-     i?86-pc-solaris*)
++-     use=solaris-i386;;
++-
++-     old)
++-     use=sun2r3;;
++-
++-     old)
++-     use=sun3;;
++-
++-     m68*-sunos*)
++-     use=sun3-os4;;
++-
++-     old)
++-     use=sun386i;;
++-
++-     sparc*sunos*)
++-     use=sun4;;
++-
++-     *86-sequent-dynix)
++-     use=symmetry;;
++-
++-     u370*aix)
++-     use=u370_aix;;
++-
++-     old)
++-     use=vax;;
++-
++-     i*mingw*)
++-       if test "$use_common_binary" = "yes"; then
++-         host=i386-pc-mingw32
++-      PROCESSOR_FLAGS="-march=i386 "
++-         echo "The host is canonicalised to $host"
++-       fi
++-     use=mingw;;
++-
++-     i*cygwin*)
++-     if $CC -v 2>&1 | fgrep ming > /dev/null ;
++-            then use=mingw
++-          else  use=gnuwin95
+++    sh4*linux*) use=sh4-linux;;
+++    *x86_64*linux*) use=amd64-linux;;
+++    *x86_64*kfreebsd*)       use=amd64-kfreebsd;;
+++    *86*linux*) use=386-linux;;
+++    *86*kfreebsd*) use=386-kfreebsd;;
+++    *86*gnu*)        use=386-gnu;;
+++    m68k*linux*) use=m68k-linux;;
+++    alpha*linux*) use=alpha-linux;;
+++    mips*linux*) use=mips-linux;;
+++    mipsel*linux*) use=mipsel-linux;;
+++    sparc*linux*) use=sparc-linux;;
+++    aarch64*linux*) use=aarch64-linux;;
+++    arm*linux*) use=arm-linux;;
+++    s390*linux*) use=s390-linux;;
+++    ia64*linux*) use=ia64-linux;;
+++    hppa*linux*) use=hppa-linux;;
+++    powerpc*linux*) use=powerpc-linux;;
+++    powerpc-*-darwin*) use=powerpc-macosx;;
+++    *86*darwin*) use=386-macosx;;
+++    i*mingw*|i*msys*) use=mingw;;
+++    i*cygwin*)
+++        if $CC -v 2>&1 | fgrep ming > /dev/null ;
+++        then use=mingw
+++        else use=gnuwin95
++         fi;;
++-
++-     *openbsd*)
++-     # 'ld -Z' means disable W^X
++-     TLDFLAGS="$TLDFLAGS -Z"
++-     use=FreeBSD;;
++-  
+++    *openbsd*) use=FreeBSD;;
+++    sparc-sun-solaris*) use=solaris;;
+++    i?86-pc-solaris*) use=solaris-i386;;
++ esac
++ 
++-AC_SUBST(PROCESSOR_FLAGS)
+++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])
++ 
++-echo enable_machine=$enable_machine
++-if test "x$enable_machine" != "x" ; then
++-  use=$enable_machine
++-fi
+++AC_MSG_RESULT([use=$use])    
++ 
++ def_dlopen="no"
++ def_statsysbfd="no"
++ def_custreloc="yes"
++-#def_statsysbfd="yes"
++-#def_custreloc="no"
++-def_locbfd="no"
++ def_oldgmp="no"
++ def_pic="no";
++ def_static="no";
++ def_debug="no";
++ case $use in 
++-     *kfreebsd)
+++    *kfreebsd)
++      ln -snf linux.defs h/$use.defs;;
++-     *gnu)
+++    *gnu)
++      ln -snf linux.defs h/$use.defs;;
++-     *linux)
+++    *linux)
++      ln -snf linux.defs h/$use.defs;
++      case $use in
++-# def_static -- Function descriptors are currently realized at runtime in a non-reproducible fashion
++-# on these architectures -- CM                       
++-                     powerpc*)
++-#                    if test "$host_cpu" = "powerpc64" ; then def_dlopen="yes" ; def_custreloc="no" ; fi
++-                     ;;
++-             ia64*)
++-                     def_dlopen="yes" ; def_custreloc="no" ;;
++-             hppa*)
++-                     def_pic="yes" ;;
++-#                    def_dlopen="yes" ; def_custreloc="no" ; def_pic="yes" ;;
+++         ia64*)
+++             def_dlopen="yes" ; def_custreloc="no" ;;
+++         hppa*)
+++             def_pic="yes" ;;
++      esac;;
++ esac
++ 
++-AC_ARG_ENABLE(dlopen,
++-     [ --enable-dlopen uses dlopen for loading objects, which can then not be retained  in saved images ]
++-     ,,enable_dlopen="$def_dlopen")
++-AC_ARG_ENABLE(statsysbfd,
++-     [ --enable-statsysbfd uses a static sytem bfd library for loading and relocationing object files ]
++-     ,,enable_statsysbfd="$def_statsysbfd")
++-AC_ARG_ENABLE(dynsysbfd,
++-     [ --enable-dynsysbfd uses a dynamic shared sytem bfd library for loading and relocationing object files ]
++-     ,,enable_dynsysbfd="no")
++-#AC_ARG_ENABLE(locbfd,
++-#    [ --enable-locbfd uses a static bfd library built from this source tree for loading and relocationing object files ]
++-#    ,,enable_locbfd="$def_locbfd")
++-AC_ARG_ENABLE(custreloc,
++-     [ --enable-custreloc uses custom gcl code if available for loading  and relocationing object files ]
++-     ,,enable_custreloc="$def_custreloc")
++-AC_ARG_ENABLE(debug,
++-     [ --enable-debug builds gcl with -g in CFLAGS to enable running under gdb ]
++-     ,,enable_debug="$def_debug")
++-AC_ARG_ENABLE(gprof,
++-     [ --enable-gprof builds gcl with -pg in CFLAGS to enable profiling with gprof ]
++-     ,,enable_gprof="no")
++-AC_ARG_ENABLE(static,[ --enable-static will link your GCL against static as opposed to shared system libraries ] ,
++-        [enable_static=$enableval],[enable_static="$def_static"])
++-AC_ARG_ENABLE(pic,
++-     [ --enable-pic builds gcl with -fPIC in CFLAGS ]
++-     ,,enable_pic="$def_pic")
++-
++-AC_ARG_ENABLE(oldgmp,
++-     [ --enable-oldgmp will link against gmp2 instead of gmp3 ]
++-     ,,enable_oldgmp="$def_oldgmp")
++-
++-AC_ARG_ENABLE(dynsysgmp,
++-     [ --enable-dynsysgmp will link against the system libgmp3 overriding certain functions with patched versions from the local source ]
++-     ,,enable_dynsysgmp="yes")
+++AC_ARG_ENABLE([widecons],[  --enable-widecons will use a three word cons with simplified typing],
+++           [if test "$enableval" = "yes" ; then AC_DEFINE([WIDE_CONS],[1],[three word cons]) fi])
+++
+++AC_ARG_ENABLE([safecdr],[  --enable-safecdr will protect cdr from immfix and speed up type processing],
+++           [if test "$enableval" = "yes" ; then
+++                AC_DEFINE([USE_SAFE_CDR],[1],[protect cdr from immfix and speed up type processing])
+++                AC_ARG_ENABLE([safecdrdbg],[  --enable-safecdrdbg will debug safecdr code],
+++                              [if test "$enableval" = "yes" ; then AC_DEFINE([DEBUG_SAFE_CDR],[1],[debug safecdr code]) fi])
+++            fi])
+++
+++AC_ARG_ENABLE([prelink],[  --enable-prelink will insist that the produced images may be prelinked],
+++           [if test "$enable_prelink" = "yes" ; then PRELINK_CHECK=t; fi])
+++AC_SUBST(PRELINK_CHECK)
+++
+++AC_ARG_ENABLE([vssize],[  --enable-vssize=XXXX will compile in a value stack of size XXX],
+++           [AC_DEFINE_UNQUOTED(VSSIZE,$enableval,[value stack size])])
+++AC_ARG_ENABLE([bdssize],[  --enable-bdssize=XXXX will compile in a binding stack of size XXX],
+++           [AC_DEFINE_UNQUOTED(BDSSIZE,$enableval,[binding stack size])])
+++AC_ARG_ENABLE([ihssize],[  --enable-ihssize=XXXX will compile in a invocation history stack of size XXX],
+++           [AC_DEFINE_UNQUOTED(IHSSIZE,$enableval,[invocation history stack size])])
+++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],
+++           [INFO_DIR=$enableval],[INFO_DIR=$prefix/share/info])
+++INFO_DIR=`eval echo $INFO_DIR/`
+++
+++AC_ARG_ENABLE([emacsdir],[  --enable-emacsdir=XXXX will manually specify the location for elisp files],
+++           [EMACS_SITE_LISP=$enableval],[EMACS_SITE_LISP=$prefix/share/emacs/site-lisp])
+++EMACS_SITE_LISP=`eval echo $EMACS_SITE_LISP/`
+++
+++AC_ARG_ENABLE([xgcl],[  --enable-xgcl=yes will compile in support for XGCL],,[enable_xgcl=yes])
++ 
++-load_opt="0"
+++AC_ARG_ENABLE([dlopen],[  --enable-dlopen uses dlopen for loading objects, which can then not be retained  in saved images],
+++           ,[enable_dlopen=$def_dlopen])
+++AC_ARG_ENABLE([statsysbfd],[  --enable-statsysbfd uses a static sytem bfd library for loading and relocationing object files],
+++           ,[enable_statsysbfd=$def_statsysbfd])
+++AC_ARG_ENABLE([dynsysbfd],[  --enable-dynsysbfd uses a dynamic shared sytem bfd library for loading and relocationing object files],
+++           ,[enable_dynsysbfd=no])
+++AC_ARG_ENABLE([custreloc],[  --enable-custreloc uses custom gcl code if available for loading  and relocationing object files],
+++           ,[enable_custreloc=$def_custreloc])
+++
+++AC_ARG_ENABLE([debug],[  --enable-debug builds gcl with -g in CFLAGS to enable running under gdb],
+++           ,[enable_debug=$def_debug])
+++AC_ARG_ENABLE([static],[  --enable-static will link your GCL against static as opposed to shared system libraries],
+++           ,[enable_static=$def_static])
+++AC_ARG_ENABLE([pic],[  --enable-pic builds gcl with -fPIC in CFLAGS],,[enable_pic=$def_pic])
+++
+++load_opt=0
++ if test "$enable_dlopen" = "yes" ; then
++-   load_opt=1
+++    load_opt=1
++ fi
++ if test "$enable_statsysbfd" = "yes" ; then
++-   case $load_opt in
++-   0) load_opt=1;;
++-   1) load_opt=2;;
++-   esac
+++    case $load_opt in
+++     0) load_opt=1;;
+++     1) load_opt=2;;
+++    esac
++ fi
++ if test "$enable_dynsysbfd" = "yes" ; then
++-   case $load_opt in
++-   0) load_opt=1;;
++-   1) load_opt=2;;
++-   2) load_opt=3;;
++-   esac
++-fi
++-if test "$enable_locbfd" = "yes" ; then
++-   case $load_opt in
++-   0) load_opt=1;;
++-   1) load_opt=2;;
++-   2) load_opt=3;;
++-   3) load_opt=4;;
++-   esac
+++    case $load_opt in
+++     0) load_opt=1;;
+++     1) load_opt=2;;
+++     2) load_opt=3;;
+++    esac
++ fi
++ if test "$enable_custreloc" = "yes" ; then
++-   case $load_opt in
++-   0) load_opt=1;;
++-   1) load_opt=2;;
++-   2) load_opt=3;;
++-   3) load_opt=4;;
++-   4) load_opt=5;;
++-   esac
+++    case $load_opt in
+++     0) load_opt=1;;
+++     1) load_opt=2;;
+++     2) load_opt=3;;
+++     3) load_opt=4;;
+++     4) load_opt=5;;
+++    esac
++ fi
++ 
++ if test "$load_opt" != "1" ; then
++-     echo "Exactly one loader option must be chosen: dlopen=$enable_dlopen statsysbfd=$enable_statsysbfd dynsysbfd=$enable_dynsysbfd locbfd=$enable_locbfd custreloc=$enable_custreloc"
++-     exit 1
+++    echo "Exactly one loader option must be chosen: dlopen=$enable_dlopen statsysbfd=$enable_statsysbfd dynsysbfd=$enable_dynsysbfd custreloc=$enable_custreloc"
+++    AC_MSG_ERROR([loader option failure])
++ fi
++ 
++-TLDFLAGS=""
++-if test "$enable_static" = "yes" ; then
++-   TLDFLAGS="-static -Wl,-zmuldefs $TLDFLAGS"; #FIXME should be in unixport/makefile
++-   AC_DEFINE(STATIC_LINKING,1,[staticly linked images])
++-fi
++-case $use in
++-     *gnuwin*)
++-     TLDFLAGS="$TLDFLAGS -Wl,--stack,8000000";;
++-esac
++-
++-## finally warn if we did not find a recognized machine.s
++-##
++-#if test "$use" = "unknown" ; then
++-#types=`echo h/*.defs` | sed -e "s:h/::g" -e "s:\.defs:g"`
++-#echo got canonical=$canonical, but was not recognized. 
++-#echo Unable to guess type to use.  Try one of 
++-#exit(1)
++-#fi
++-
++-AC_MSG_RESULT([use=$use])    
++-
++ 
++ #
++ # System programs
++@@ -462,221 +170,250 @@ AC_MSG_RESULT([use=$use])
++ # We set the default CFLAGS below, and don't want the autoconf default
++ # CM 20040106
++ if test "$CFLAGS" = "" ; then
++-     CFLAGS=" "
+++    CFLAGS=" "
++ fi
++ if test "$LDFLAGS" = "" ; then
++-     LDFLAGS=" "
+++    LDFLAGS=" "
++ fi
++ 
++ AC_PROG_CC
++ AC_PROG_CPP
++ AC_SUBST(CC)
+++GCL_CC=`basename $CC`
+++if echo $GCL_CC |grep gcc |grep -q win; then
+++    GCL_CC=gcc
+++fi
+++AC_SUBST(GCL_CC)
++ 
+++add_arg_to_tcflags() {
+++    
+++    local i=1
+++    AC_MSG_CHECKING([for CFLAG $1])
+++    CFLAGS_ORI=$CFLAGS
+++    CFLAGS="$CFLAGS -Werror $1 `echo $1|sed 's,-Wno-,-W,1'`"
+++    AC_RUN_IFELSE(
+++     [AC_LANG_PROGRAM([[]],[[]])],
+++     [TCFLAGS="$TCFLAGS $1";AC_MSG_RESULT([yes]);i=0],
+++     [AC_MSG_RESULT([no])],
+++     [AC_MSG_RESULT([no])])
+++    CFLAGS=$CFLAGS_ORI
+++    return $i
+++    
+++}
++ 
++-# can only test for numbers -- CM
++-# if test "${GCC}" -eq "yes" ; then
++-#if [[ "${GCC}" = "yes" ]] ; then
++-# Allog for environment variable overrides on compiler selection -- CM
++-#GCC=$CC
++-#else
++-#GCC=""
++-#fi
++-# subst GCC not only under 386-linux, but where available -- CM
++-
++-TCFLAGS="-fsigned-char -fno-builtin-malloc -fno-builtin-free"
++-
++-if test "$GCC" = "yes" ; then
++-
++-   TCFLAGS="$TCFLAGS -Wall"
++-
++-   AC_MSG_CHECKING([for clang])
++-   AC_RUN_IFELSE([
++-     AC_LANG_SOURCE([[
++-             int main() {
++-             return
++-             #ifdef __clang__
++-             0
++-             #else
++-             1
++-             #endif
++-             ;}]])],
++-     [AC_MSG_RESULT([yes])
++-      clang="yes"
++-      TCFLAGS="$TCFLAGS -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign"
++-      AC_DEFINE([CLANG],[1],[running clang compiler])],      
++-     [AC_MSG_RESULT([no])
++-      #FIXME -Wno-unused-but-set-variable when time
++-      TMPF=-Wno-unused-but-set-variable
++-      AC_MSG_CHECKING([for CFLAG $TMPF])
++-      CFLAGS_ORI=$CFLAGS
++-      CFLAGS="$CFLAGS $TMPF"
++-      AC_TRY_RUN([int main() {return 0;}],TCFLAGS="$TCFLAGS $TMPF";AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
++-      CFLAGS=$CFLAGS_ORI])
++-fi
+++assert_arg_to_tcflags() {
+++    if ! add_arg_to_tcflags $1 ; then AC_MSG_RESULT([cannot add $1 to CFLAGS]); exit 1 ; fi
+++    return 0
+++}
++ 
++-if test "$GCC" = "yes" ; then
++-     TCFLAGS="$TCFLAGS -pipe"
++-     case $use in
++-          *mingw*)
++-#            echo "WARNING: Remove -fno-zero-initialized-in-bss from makedefs if gcc less than 3.3.1."
++-#            echo "         It is otherwise needed for the Unexec stuff to work."
++-#            if test "$enable_debug" = "yes" ; then TCFLAGS="$TCFLAGS -gstabs" ; fi
++-             TCFLAGS="$TCFLAGS -fno-zero-initialized-in-bss -mms-bitfields";;
++-          *gnuwin*)
++-#            echo "WARNING: Remove -fno-zero-initialized-in-bss from makedefs if gcc less than 3.3.1."
++-#            echo "         It is otherwise needed for the Unexec stuff to work."
++-#            if test "$enable_debug" = "yes" ; then TCFLAGS="$TCFLAGS -gstabs" ; fi
++-             TCFLAGS="$TCFLAGS -fno-zero-initialized-in-bss -mms-bitfields";;
++-        esac
++-fi
++-#if test -f /proc/sys/kernel/exec-shield ; then
++-#    exec_stat=`cat /proc/sys/kernel/exec-shield`
++-#    if test "$exec_stat" != "0" ; then
++-#            # CFLAGS here to hopefully cover the DBEGIN routine below
++-#            CFLAGS="$CFLAGS -Wa,--execstack"
++-#    fi
++-#fi
+++add_args_to_tcflags() {
+++    
+++    while test "$#" -ge 1 ; do
+++     add_arg_to_tcflags $1
+++     shift
+++    done
+++}
+++
+++add_arg_to_tldflags() {
+++    
+++    local i=1
+++    AC_MSG_CHECKING([for LDFLAG $1])
+++    LDFLAGS_ORI=$LDFLAGS
+++    LDFLAGS="$LDFLAGS -Werror $1"
+++    AC_RUN_IFELSE(
+++     [AC_LANG_PROGRAM([[]],[[]])],
+++     [TLDFLAGS="$TLDFLAGS $1";AC_MSG_RESULT([yes]);i=0],
+++     [AC_MSG_RESULT([no])],
+++     [AC_MSG_RESULT([no])])
+++    LDFLAGS=$LDFLAGS_ORI
+++    return $i
+++    
+++}
+++
+++assert_arg_to_tldflags() {
+++    if ! add_arg_to_tldflags $1 ; then AC_MSG_RESULT([cannot add $1 to LDFLAGS]); exit 1 ; fi
+++    return 0
+++}
+++
+++add_args_to_tldflags() {
+++    
+++    while test "$#" -ge 1 ; do
+++     add_arg_to_tldflags $1
+++     shift
+++    done
+++}
+++
+++remove_arg_from_ldflags() {
+++    
+++    NEW_LDFLAGS=""     
+++    for i in $LDFLAGS; do
+++     if ! test "$i" = "$1" ; then
+++                 NEW_LDFLAGS="$NEW_LDFLAGS $i"
+++     else
+++            AC_MSG_RESULT([removing $1 from LDFLAGS])
+++     fi
+++    done
+++    LDFLAGS=$NEW_LDFLAGS
+++    
+++    return 0
+++    
+++}
+++
+++TCFLAGS=""
+++add_args_to_tcflags -fsigned-char -pipe \
+++                    -fno-builtin-malloc -fno-builtin-free \
+++                    -fno-PIE -fno-pie -fno-PIC -fno-pic \
+++                 -Wall \
+++                 -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign \
+++                 -Wno-unused-but-set-variable -Wno-misleading-indentation
+++
+++TLDFLAGS=""
+++add_args_to_tldflags -Wl,-no_pie -no-pie -Wl,-z,lazy
+++
+++AC_MSG_CHECKING([for clang])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM([[
+++                      #ifdef __clang__
+++                      #define RET 0
+++                      #else
+++                      #define RET 1
+++                      #endif
+++                  ]],
+++                  [[
+++                      return RET;
+++                  ]])],
+++    [AC_MSG_RESULT([yes])
+++     clang="yes"
+++     remove_arg_from_ldflags -pie
+++     AC_DEFINE([CLANG],[1],[running clang compiler])],       
+++    [AC_MSG_RESULT([no])])
+++
+++case $use in
+++    *mingw*)
+++     assert_arg_to_tcflags -fno-zero-initialized-in-bss
+++     assert_arg_to_tcflags -mms-bitfields;;
+++    *gnuwin*)
+++     assert_arg_to_tcflags -fno-zero-initialized-in-bss
+++     assert_arg_to_tcflags -mms-bitfields
+++        assert_arg_to_tldflags -Wl,--stack,8000000;;
+++    386-macosx)
+++     assert_arg_to_tldflags -Wl,-no_pie
+++     if test "$build_cpu" = "x86_64" ; then
+++         assert_arg_to_tcflags -m64
+++         assert_arg_to_tldflags -m64
+++         assert_arg_to_tldflags -Wl,-headerpad,72
+++        else
+++         assert_arg_to_tcflags -m32
+++         assert_arg_to_tldflags -m32
+++         assert_arg_to_tldflags -Wl,-headerpad,56
+++        fi;;
+++    FreeBSD) assert_arg_to_tldflags -Z;;
+++esac
+++
+++if test "$enable_static" = "yes" ; then
+++    assert_arg_to_tldflags -static
+++    assert_arg_to_tldflags -Wl,-zmuldefs
+++    AC_DEFINE(STATIC_LINKING,1,[staticly linked images])
+++fi
++ 
++ TO3FLAGS=""
++ TO2FLAGS=""
++ 
++-#TFPFLAG="-fomit-frame-pointer"
++-# FIXME -- remove when mingw compiler issues are fixed
++ case "$use" in
++-  *mingw*)
+++    *mingw*)
++      TFPFLAG="";;
++-  m68k*)#FIXME gcc 4.x bug workaround
+++    m68k*)#FIXME gcc 4.x bug workaround
++      TFPFLAG="";;
++-  *)
+++    *)
++      TFPFLAG="-fomit-frame-pointer";;
++ esac
++ 
++ AC_CHECK_PROGS(AWK,[gawk nawk awk])
++ 
++-# Work around system/gprof mips/hppa hang
++-AC_MSG_CHECKING([working gprof])
++-old_enable_gprof=$enable_gprof
++-case $use in
++-  powerpc*) if test "$host_cpu" = "powerpc64le" ; then enable_gprof="no"; fi;;
++-  sh4*)  enable_gprof="no";;
++-  ia64*)  enable_gprof="no";;
++-#  mips*) enable_gprof="no";;
++-  hppa*) enable_gprof="no";;
++-  arm*)  enable_gprof="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
++-  *gnu)  enable_gprof="no";;
++-esac              
++-if test "$enable_gprof" = "$old_enable_gprof" ; then
++-   AC_MSG_RESULT([ok])
++-else
++-   AC_MSG_RESULT([disabled])
++-fi
++-
++-if test "$enable_gprof" = "yes" ; then
++-     AC_MSG_CHECKING(for text start)
++-     echo 'int main () {return(0);}' >foo.c
++-     $CC foo.c -o foo
++-     GCL_GPROF_START=`nm foo | $AWK  '/  *[[TD]]  *__*start$/ {print $NF}'` # D for ppc64 -- FIXME custreloc
++-     rm -f foo.c foo
++-     if test "$GCL_GPROF_START" != "" ; then
++-             AC_MSG_RESULT($GCL_GPROF_START)
++-             AC_DEFINE_UNQUOTED(GCL_GPROF_START,$GCL_GPROF_START,[starting address for gprof])
++-             case "$use" in  
++-                arm*)        
++-                  #FIXME report and remove this when done
++-                  AC_MSG_RESULT(Reducing optimization on profiling arm build to workaround gcc bug)
++-                  enable_debug=yes;;
++-             esac
++-                TCFLAGS="$TCFLAGS -pg";
++-             case $use in
++-             s390*) ;; # relocation truncation bug in gcc
++-             *) TLIBS="$TLIBS -pg";;
++-             esac
++-             TFPFLAG=""
++-             AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
++-     else                       
++-                enable_gprof="no";
++-     fi                         
++-fi
++-
++-if $CC -v 2>&1 | tail -1 | grep "gcc version 4.6.1" >/dev/null ; then
++-   case "$use" in    
++-     arm*)   
++-     #FIXME report and remove this when done
++-     AC_MSG_RESULT(Reducing optimization on arm build to workaround gcc 4.6 bug)
++-     enable_debug=yes;;
++-   esac
++-fi
++-
+++AC_ARG_ENABLE([gprof],[  --enable-gprof builds gcl with -pg in CFLAGS to enable profiling with gprof],
+++           [if test "$enableval" = "yes" ; then
+++                AC_MSG_CHECKING([working gprof])
+++                case $use in
+++                    powerpc*) if test "$host_cpu" = "powerpc64le" ; then enableval="no"; fi;;
+++                    sh4*)  enableval="no";;
+++                    ia64*) enableval="no";;
+++                    hppa*) enableval="no";;
+++                    arm*)  enableval="no";;#FIXME mcount compiled as a 24/22 bit reloc even with -mlong-calls, marginally accessible
+++                    *gnu)  enableval="no";;
+++                esac              
+++                if test "$enableval" != "yes" ; then
+++                    AC_MSG_RESULT([disabled])
+++                else
+++                    AC_MSG_RESULT([ok])
+++                    AC_MSG_CHECKING([for text start])
+++                    echo 'int main () {return(0);}' >foo.c
+++                    $CC foo.c -o foo
+++                    GCL_GPROF_START=`nm foo | $AWK  '/  *[[TD]]  *__*start$/ {print $NF}'` # D for ppc64 -- FIXME custreloc
+++                    rm -f foo.c foo
+++                    if test "$GCL_GPROF_START" != "" ; then
+++                        AC_MSG_RESULT($GCL_GPROF_START)
+++                        AC_DEFINE_UNQUOTED(GCL_GPROF_START,$GCL_GPROF_START,[starting address for gprof])
+++                        assert_arg_to_tcflags -pg
+++                        case $use in
+++                            s390*) ;; # relocation truncation bug in gcc
+++                            *) TLIBS="$TLIBS -pg";;
+++                        esac
+++                                TFPFLAG=""
+++                        AC_DEFINE(GCL_GPROF,1,[use gprof profiling])
+++                    fi                          
+++                fi
+++            fi])
++ 
++ if test "$enable_debug" = "yes" ; then
++-     TCFLAGS="$TCFLAGS -g"
++-     # for subconfigurations
++-     CFLAGS="$CFLAGS -g"
+++    assert_arg_to_tcflags -g
+++    # for subconfigurations
+++    CFLAGS="$CFLAGS -g"
++ else
++-     TO3FLAGS="-O3 $TFPFLAG"
++-     TO2FLAGS="-O"
+++    TO3FLAGS="-O3 $TFPFLAG"
+++    TO2FLAGS="-O"
++ fi
++ 
++ # gcc on ppc cannot compile our new_init.c with full opts --CM
++ TONIFLAGS=""
++ case $use in 
++-     powerpc*macosx)
++-        TCFLAGS="$TCFLAGS -mlongcall";;
++-     *linux)
+++    powerpc*macosx) assert_arg_to_tcflags -mlongcall;;
+++    *linux)
++      case $use in
++-#            amd64*) # stack-boundary option does not work
++-#                    TCFLAGS="$TCFLAGS -m64 -mpreferred-stack-boundary=8";;  
++-             alpha*)
++-                     TCFLAGS="$TCFLAGS -mieee"
++-                     if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
++-                     ;;
++-#            m68k*)
++-#                    TCFLAGS="$TCFLAGS -ffloat-store";;
++-             aarch64*)
++-                     TLIBS="$TLIBS -lgcc_s";;
++-             hppa*)
++-                     TCFLAGS="$TCFLAGS -mlong-calls "
++-                     TLIBS="$TLIBS -lgcc_s" # workaround hppa __moddi3 local func symbols with default linker flags
++-                     if test "$enable_debug" != "yes" ; then TO3FLAGS="-O2" ; TFPFLAG=""; fi #FIXME needed asof gcc 4.8.1
++-#                    TCFLAGS="$TCFLAGS -ffunction-sections"
++-#                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O $TFPFLAG" ; fi
++-#                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++-                     ;;
++-             mips*)
++-                     case $canonical in
++-                     mips64*linux*)
++-                             TLIBS="$TLIBS -Wl,-z -Wl,now";;
++-                     esac
++-#                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.6.2
++-                     ;;
++-             ia64*)
++-                     if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
++-                     ;;
++-             arm*)
++-                     TCFLAGS="$TCFLAGS -mlong-calls -fdollars-in-identifiers -g "
++-#                    if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.6.2
++-#                    if test "$enable_debug" != "yes" ; then TO2FLAGS="-O" ; fi
++-                     ;;
++-             powerpc*) 
++-                        TCFLAGS="$TCFLAGS -mlongcall"
++-                     ;;
++-#                    if $CC -v 2>&1 | grep -q "gcc version 3.2" ; then
++-#                       echo Reducing optimization for buggy gcc-3.2
++-#                       if test "$enable_debug" != "yes" ; then TONIFLAGS="-O $TFPFLAG" ; fi
++-#                    fi;
++-#                    echo Probing for longcall
++-#                    if ! $CC -v 2>&1 | $AWK '/^gcc version / {split($3,A,".");if (A[[1]]+0>3 || (A[[1]]+0>=3 && A[[2]]+0>=3)) exit 1;}'; then
++-#                       echo Enabling longcall on gcc 3.3 or later
++-#                       TCFLAGS="$TCFLAGS -mlongcall"
++-#                       echo Reducing optimization for buggy gcc 3.3 or later
++-#                       if test "$enable_debug" != "yes" ; then TONIFLAGS="-O $TFPFLAG" ; fi
++-#                    fi;;
+++         alpha*)
+++             assert_arg_to_tcflags -mieee
+++             if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
+++             ;;
+++         aarch64*)
+++             TLIBS="$TLIBS -lgcc_s";;
+++         hppa*)
+++             assert_arg_to_tcflags -mlong-calls
+++             TLIBS="$TLIBS -lgcc_s" # workaround hppa __moddi3 local func symbols with default linker flags
+++             if test "$enable_debug" != "yes" ; then TO3FLAGS="-O2" ; TFPFLAG=""; fi #FIXME needed asof gcc 4.8.1
+++             ;;
+++         mips*)
+++             case $canonical in
+++                 mips64*linux*)
+++                     assert_arg_to_tldflags -Wl,-z,now;;
+++             esac
+++             ;;
+++         ia64*)
+++             if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
+++             ;;
+++         arm*)
+++             assert_arg_to_tcflags -mlong-calls
+++             assert_arg_to_tcflags -fdollars-in-identifiers
+++             assert_arg_to_tcflags -g #?
+++             ;;
+++         powerpc*) 
+++             assert_arg_to_tcflags -mlongcall
+++             ;;
++      esac;;
++ esac
++ if test "$enable_pic" = "yes" ; then
++-     TCFLAGS="$TCFLAGS -fPIC"
+++    assert_arg_to_tcflags -fPIC
++ fi
++ 
+++
++ FDEBUG=`echo $CFLAGS | tr ' ' '\012' |grep "^\-g$"|tr '\012' ' '`
++ #CFLAGS=`echo $CFLAGS | tr ' ' '\012' |grep -v "^\-g$"`
++ FOMITF=`echo $CFLAGS | tr ' ' '\012' |grep "^\-fomit-frame-pointer$"|tr '\012' ' '`
++@@ -693,27 +430,27 @@ FOOPT0=`echo $CFLAGS | tr ' ' '\012' |gr
++ CFLAGS=`echo $CFLAGS | tr ' ' '\012' |grep -v "^\-O0$"|tr '\012' ' '`
++ 
++ if test "$FOOPT0" != "" ; then
++-   TO3FLAGS=`echo $TO3FLAGS | sed 's,\-O[[123 ]],-O0 ,g' | sed 's,\-O$,-O0 ,g'`
++-   TO2FLAGS=`echo $TO2FLAGS | sed 's,\-O[[123 ]],-O0 ,g' | sed 's,\-O$,-O0 ,g'`
++-else 
++-if test "$FOOPT1" != "" ; then
++-   TO3FLAGS=`echo $TO3FLAGS | sed 's,\-O[[2-3]],-O1,g'`
++-   TO2FLAGS=`echo $TO2FLAGS | sed 's,\-O[[2-3]],-O1,g'`
+++    TO3FLAGS=`echo $TO3FLAGS | sed 's,\-O[[123 ]],-O0 ,g' | sed 's,\-O$,-O0 ,g'`
+++    TO2FLAGS=`echo $TO2FLAGS | sed 's,\-O[[123 ]],-O0 ,g' | sed 's,\-O$,-O0 ,g'`
++ else 
++-if test "$FOOPT2" != "" ; then
++-   TO3FLAGS=`echo "$TO3FLAGS" | sed 's,\-O3,-O2,g'`
++-   TO2FLAGS=`echo "$TO2FLAGS" | sed 's,\-O3,-O2,g'`
++-fi
++-fi
+++    if test "$FOOPT1" != "" ; then
+++     TO3FLAGS=`echo $TO3FLAGS | sed 's,\-O[[2-3]],-O1,g'`
+++     TO2FLAGS=`echo $TO2FLAGS | sed 's,\-O[[2-3]],-O1,g'`
+++    else 
+++     if test "$FOOPT2" != "" ; then
+++         TO3FLAGS=`echo "$TO3FLAGS" | sed 's,\-O3,-O2,g'`
+++         TO2FLAGS=`echo "$TO2FLAGS" | sed 's,\-O3,-O2,g'`
+++     fi
+++    fi
++ fi
++ 
++ if test "$FDEBUG" != "" ; then
++-   TO3FLAGS=`echo $TO3FLAGS | sed 's,\-fomit-frame-pointer,,g'`
++-   TO2FLAGS=`echo $TO2FLAGS | sed 's,\-fomit-frame-pointer,,g'`
+++    TO3FLAGS=`echo $TO3FLAGS | sed 's,\-fomit-frame-pointer,,g'`
+++    TO2FLAGS=`echo $TO2FLAGS | sed 's,\-fomit-frame-pointer,,g'`
++ fi
++ 
++ if test "$FOMITF" != "" ; then
++-   TO3FLAGS="$TO3FLAGS $FOMITF"
+++    TO3FLAGS="$TO3FLAGS $FOMITF"
++ fi
++ 
++ # Step 1: set the variable "system" to hold the name and version number
++@@ -731,12 +468,12 @@ if test -f /usr/lib/NextStep/software_ve
++ else
++     system=`uname -s`-`uname -r`
++     if test "$?" -ne 0 ; then
++-     AC_MSG_RESULT([unknown (can't find uname command)])
+++     AC_MSG_RESULT([unknown (cannot find uname command)])
++      system=unknown
++     else
++      # Special check for weird MP-RAS system (uname returns weird
++      # results, and the version is kept in special file).
++-    
+++     
++      if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
++          system="MP-RAS-`${AWK} '{print $3}' '/etc/.relid'`"
++      fi
++@@ -748,156 +485,130 @@ else
++ fi
++ 
++ case $use in
++-     *macosx)
+++    *macosx)
++         AC_CHECK_HEADERS(malloc/malloc.h,,[AC_MSG_ERROR([need malloc.h on macosx])])
++      AC_CHECK_MEMBER([struct _malloc_zone_t.memalign],
++-             AC_DEFINE(HAVE_MALLOC_ZONE_MEMALIGN,1,[memalign element present]), [], 
++-             [
++-             #include <malloc/malloc.h>
++-             ])
+++                     AC_DEFINE(HAVE_MALLOC_ZONE_MEMALIGN,1,[memalign element present]), [], 
+++                     [
+++                         #include <malloc/malloc.h>
+++                     ])
++      AC_SUBST(HAVE_MALLOC_ZONE_MEMALIGN)
++      ;;
++ esac
++ 
++-
++-AC_CHECK_HEADERS(setjmp.h,
++-     AC_MSG_CHECKING([sizeof jmp_buf])
++-     AC_RUN_IFELSE([
++-             AC_LANG_SOURCE([[
++-                     #include <stdio.h>
++-                     #include <setjmp.h>
++-                     int main() {
++-                        FILE *fp=fopen("conftest1","w");
++-                        fprintf(fp,"%lu\n",sizeof(jmp_buf));
++-                        fclose(fp);
++-                        return 0;
++-                     }]])],
++-                     [sizeof_jmp_buf=`cat conftest1`
++-                      AC_MSG_RESULT($sizeof_jmp_buf)
++-                      AC_DEFINE_UNQUOTED(SIZEOF_JMP_BUF,$sizeof_jmp_buf,[sizeof jmp_buf])],
++-                      [AC_MSG_RESULT(no)]))
+++AC_CHECK_HEADERS(
+++    [setjmp.h],
+++    [AC_MSG_CHECKING([sizeof jmp_buf])
+++     AC_RUN_IFELSE(
+++      [AC_LANG_PROGRAM(
+++              [[
+++                  #include <stdio.h>
+++                  #include <setjmp.h>
+++              ]],
+++              [[
+++                  FILE *fp=fopen("conftest1","w");
+++                  fprintf(fp,"%lu\n",sizeof(jmp_buf));
+++                  fclose(fp);
+++              ]])],
+++      [sizeof_jmp_buf=`cat conftest1`
+++       AC_MSG_RESULT($sizeof_jmp_buf)
+++       AC_DEFINE_UNQUOTED(SIZEOF_JMP_BUF,$sizeof_jmp_buf,[sizeof jmp_buf])],
+++      [AC_MSG_RESULT([no])])])
++ 
++ # sysconf
+++AC_CHECK_HEADERS(
+++    [unistd.h],
+++    [AC_CHECK_LIB(
+++         [c],[sysconf],
+++         [AC_MSG_CHECKING([_SC_CLK_TCK])
+++          hz=0
+++          AC_RUN_IFELSE(
+++              [AC_LANG_PROGRAM(
+++                      [[
+++                          #include <unistd.h>
+++                          #include <stdio.h>
+++                      ]],
+++                      [[
+++                          FILE *fp=fopen("conftest1","w");
+++                          fprintf(fp,"%lu\n",sysconf(_SC_CLK_TCK));
+++                          fclose(fp);
+++                      ]],
+++                      [hz=`cat conftest1`
+++                       AC_DEFINE_UNQUOTED(HZ,$hz,[time system constant])])])
+++          AC_MSG_RESULT($hz)])])
++ 
++-AC_CHECK_HEADERS(unistd.h,
++-     AC_CHECK_LIB(c,sysconf,
++-             AC_MSG_CHECKING(_SC_CLK_TCK)
++-             AC_TRY_RUN([#include <unistd.h>
++-                         #include <stdio.h>
++-                         int
++-                         main() {
++-                             FILE *fp=fopen("conftest1","w");
++-                             fprintf(fp,"%lu\n",sysconf(_SC_CLK_TCK));
++-                             fclose(fp);
++-                             return 0;
++-                         }],
++-                         hz=`cat conftest1`
++-                         AC_DEFINE_UNQUOTED(HZ,$hz,[time system constant])
++-                         ,hz=0,hz=0)
++-             [AC_MSG_RESULT($hz)]
++-             dnl AC_MSG_CHECKING(_SC_PHYS_PAGES)
++-             dnl AC_RUN_IFELSE([
++-             dnl     AC_LANG_SOURCE([[
++-             dnl     #include <stdio.h>
++-             dnl     #include <unistd.h>
++-             dnl     int main() {
++-             dnl        FILE *fp=fopen("conftest1","w");
++-             dnl        fprintf(fp,"%lu\n",sysconf(_SC_PHYS_PAGES));
++-             dnl        fclose(fp);
++-             dnl        return 0;
++-             dnl     }]])],
++-             dnl     [phys=`cat conftest1`
++-             dnl      AC_MSG_RESULT($phys)
++-             dnl      AC_DEFINE(HAVE_SYSCONF_PHYS_PAGES,$phys,[probe runtime phys pages for gc performance])],
++-             dnl      [AC_MSG_RESULT(no)])
++-                      ))
++-
++-
++-#MY_SUBDIRS=
++-
++-#
++-# GMP
++-#
++ 
++ rm -f makedefsafter
++ 
++-MP_INCLUDE=""
++-if test $use_gmp = yes ; then
+++AC_ARG_ENABLE([dynsysgmp],
+++           [  --enable-dynsysgmp will link against the system libgmp3 overriding certain functions with patched versions from the local source])
++ 
++- PATCHED_SYMBOLS=""
++- if test "$enable_dynsysgmp" = "yes" ; then
++-     AC_CHECK_HEADERS(gmp.h,
++-             AC_CHECK_LIB(gmp,__gmpz_init,
++-                     AC_MSG_CHECKING("for external gmp version")
++-                     AC_TRY_RUN([#include <gmp.h>
++-                                 int main() {
++-                                 #if __GNU_MP_VERSION > 3
++-                                     return 0;
++-                                 #else
++-                                     return -1;
++-                                 #endif
++-                                 }],
++-#                            MPFILES=$GMPDIR/mpn/mul_n.o
++-#                            PATCHED_SYMBOLS=__gmpn_toom3_mul_n
++-                             MPFILES=
++-                             PATCHED_SYMBOLS=
++-#                            if test "$use" = "m68k-linux" ; then
++-#                                    MPFILES="$MPFILES $GMPDIR/mpn/lshift.o $GMPDIR/mpn/rshift.o"
++-#                                    PATCHED_SYMBOLS="$PATCHED_SYMBOLS __gmpn_lshift __gmpn_rshift"
++-#                            fi
++-                             TLIBS="$TLIBS -lgmp"
++-                             echo "#include \"gmp.h\"" >foo.c
++-                             echo "int main() {return 0;}" >>foo.c
++-                             MP_INCLUDE=`cpp foo.c | $AWK '/(\/|\\\\)gmp.h/ {if (!i) print $3;i=1}' | tr -d '"'`
++-                             rm -f foo.c,
++-                             echo "Cannot use dynamic gmp lib" , echo "Cannot use dynamic gmp lib" ),
++-                     echo "Cannot use dynamic gmp lib" ,),
++-             echo "Cannot use dynamic gmp lib" ,)
++-fi
++-
++-NEED_LOCAL_GMP=''
++-if test "$MP_INCLUDE" = "" ; then                    
++-     NEED_LOCAL_GMP=1;
++-fi
++-if test "$PATCHED_SYMBOLS" != "" ; then                      
++-     NEED_LOCAL_GMP=1;
+++if test "$enable_dynsysgmp" != "no" ; then
+++    AC_CHECK_HEADERS(
+++     [gmp.h],
+++     [AC_CHECK_LIB(
+++             [gmp],[__gmpz_init],
+++             [AC_MSG_CHECKING([for external gmp version])
+++              AC_RUN_IFELSE(
+++                  [AC_LANG_PROGRAM(
+++                          [[
+++                              #include <gmp.h>
+++                          ]],
+++                          [[
+++                              #if __GNU_MP_VERSION > 3
+++                              return 0;
+++                              #else
+++                              return -1;
+++                              #endif
+++                          ]])],
+++                  [AC_MSG_RESULT([good])
+++                   TLIBS="$TLIBS -lgmp"
+++                   echo "#include \"gmp.h\"" >foo.c
+++                   echo "int main() {return 0;}" >>foo.c
+++                   MP_INCLUDE=`cpp foo.c | $AWK '/(\/|\\\\)gmp.h/ {if (!i) print $3;i=1}' | tr -d '"'`
+++                   rm -f foo.c])])])
+++    
+++    if test "$MP_INCLUDE" = "" ; then
+++     AC_MSG_RESULT([Cannot use dynamic gmp lib])
+++    fi
+++    
++ fi
++ 
++-if test "$NEED_LOCAL_GMP" != "" ; then                       
++-
++-      GMPDIR=gmp4
++-      AC_MSG_CHECKING([use_gmp=yes, doing configure in gmp directory])
++-      echo
++-      echo "#"
++-      echo "#"
++-      echo "# -------------------"
++-      echo "# Subconfigure of GMP"
++-      echo "#"
++-      echo "#"
++-
++-      if test "$use_common_binary" = "yes"; then
++-        cd $GMPDIR && ./configure --build=$host && cd ..
++-      else
++-        cd $GMPDIR && ./configure && cd ..
++-      fi
++-     #MY_SUBDIRS="$MY_SUBDIRS $GMPDIR" 
++-
++-      echo "#"
++-      echo "#"
++-      echo "#"
++-      echo "# Subconfigure of GMP done"
++-      echo "# ------------------------"
++-      echo "#"
++-
++-     if test "$MP_INCLUDE" = "" ; then
++-             cp $GMPDIR/gmp.h h/gmp.h
++-             MP_INCLUDE=h/gmp.h
++-             MPFILES=gmp_all
++-     fi
++ 
+++if test "$MP_INCLUDE" = "" ; then                    
+++    
+++    GMPDIR=gmp4
+++    AC_MSG_CHECKING([doing configure in gmp directory])
+++    echo
+++    echo "#"
+++    echo "#"
+++    echo "# -------------------"
+++    echo "# Subconfigure of GMP"
+++    echo "#"
+++    echo "#"
+++    
+++    if test "$use_common_binary" = "yes"; then
+++     cd $GMPDIR && ./configure --build=$host && cd ..
+++    else
+++     cd $GMPDIR && ./configure --host=$host --build=$build && cd ..
+++    fi
+++    #MY_SUBDIRS="$MY_SUBDIRS $GMPDIR" 
+++    
+++    echo "#"
+++    echo "#"
+++    echo "#"
+++    echo "# Subconfigure of GMP done"
+++    echo "# ------------------------"
+++    echo "#"
+++    
+++    if test "$MP_INCLUDE" = "" ; then
+++     cp $GMPDIR/gmp.h h/gmp.h
+++     MP_INCLUDE=h/gmp.h
+++     MPFILES=gmp_all
+++    fi
++ fi
++ 
++-AC_MSG_CHECKING("for leading underscore in object symbols")
+++AC_MSG_CHECKING([for leading underscore in object symbols])
++ cat>foo.c <<EOFF
++ #include <math.h>
++ #include <stdio.h>
++@@ -905,12 +616,12 @@ int main() {FILE *f;double d=0.0;getc(f)
++ EOFF
++ $CC -c foo.c -o foo.o
++ if nm foo.o |grep " U " | grep "_cos" >/dev/null || nm foo.o |grep " U " | grep " _getc" >/dev/null ; then
++-     LEADING_UNDERSCORE=1
++-     AC_DEFINE(LEADING_UNDERSCORE,1,[symbol name mangling convention])
++-     AC_MSG_RESULT("yes")
+++    LEADING_UNDERSCORE=1
+++    AC_DEFINE(LEADING_UNDERSCORE,1,[symbol name mangling convention])
+++    AC_MSG_RESULT("yes")
++ else
++-     LEADING_UNDERSCORE=""
++-     AC_MSG_RESULT("no")
+++    LEADING_UNDERSCORE=""
+++    AC_MSG_RESULT("no")
++ fi
++ 
++ 
++@@ -918,61 +629,63 @@ AC_MSG_CHECKING("for GNU ld option -Map"
++ touch map
++ $CC -o foo [ -Wl,-Map ] map foo.o >/dev/null 2>&1
++ if test `cat map | wc -l` != "0" ; then
++-     AC_MSG_RESULT("yes")
++-     AC_DEFINE(HAVE_GNU_LD,1,[gnu linker present])
++-     GNU_LD=1
+++    AC_MSG_RESULT("yes")
+++    AC_DEFINE(HAVE_GNU_LD,1,[gnu linker present])
+++    GNU_LD=1
++ else
++-     AC_MSG_RESULT("no")
++-     GNU_LD=
+++    AC_MSG_RESULT("no")
+++    GNU_LD=
++ fi
++ rm -f foo.c foo.o foo map
++ 
++ AC_MSG_CHECKING([for size of gmp limbs])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-        #include <stdio.h>
++-     #include "$MP_INCLUDE"
++-     ]],[[
++-     FILE *fp=fopen("conftest1","w");
++-     fprintf(fp,"%u",sizeof(mp_limb_t));
++-     fclose(fp);
++-     return 0;
++-     ]])],[mpsize=`cat conftest1`],[AC_MSG_ERROR([Cannot determine mpsize])])
+++                                #include <stdio.h>
+++                                #include "$MP_INCLUDE"
+++                            ]],
+++                            [[
+++                                FILE *fp=fopen("conftest1","w");
+++                                fprintf(fp,"%u",sizeof(mp_limb_t));
+++                                fclose(fp);
+++                            ]])],[mpsize=`cat conftest1`],[AC_MSG_ERROR([Cannot determine mpsize])])
++ AC_DEFINE_UNQUOTED(MP_LIMB_BYTES,$mpsize,[sizeof mp_limb in gmp library])
++ AC_MSG_RESULT($mpsize) 
++ 
++ AC_MSG_CHECKING([_SHORT_LIMB])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-        #include <stdio.h>
++-     #include "$MP_INCLUDE"
++-     ]],[[
++-     #ifdef _SHORT_LIMB
++-     return 0;
++-     #else
++-     return 1;
++-     #endif
++-     ]])],[AC_DEFINE(__SHORT_LIMB,1,[short gmp3 limbs]) AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
+++                                #include <stdio.h>
+++                                #include "$MP_INCLUDE"
+++                            ]],
+++                            [[
+++                                #ifdef _SHORT_LIMB
+++                                return 0;
+++                                #else
+++                                return 1;
+++                                #endif
+++                            ]])],[AC_DEFINE(__SHORT_LIMB,1,[short gmp3 limbs]) AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
++ 
++ AC_MSG_CHECKING([_LONG_LONG_LIMB])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-     #include <stdio.h>
++-     #include "$MP_INCLUDE"
++-     ]],[[
++-     #ifdef _LONG_LONG_LIMB
++-     return 0;
++-     #else
++-     return 1;
++-     #endif
++-     ]])],[AC_DEFINE(__LONG_LONG_LIMB,1,[long gmp3 limbs]) AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
++-
++- GMP=1
++- AC_DEFINE(GMP,1,[using gmp])
++- AC_SUBST(GMP)
++- AC_SUBST(GMPDIR)
++- echo > makedefsafter
++- echo "MPFILES=$MPFILES" >> makedefsafter
++- echo "PATCHED_SYMBOLS=$PATCHED_SYMBOLS" >> makedefsafter
++- echo >> makedefsafter
++-fi
+++                                #include <stdio.h>
+++                                #include "$MP_INCLUDE"
+++                            ]],
+++                            [[
+++                                #ifdef _LONG_LONG_LIMB
+++                                return 0;
+++                                #else
+++                                return 1;
+++                                #endif
+++                            ]])],[AC_DEFINE(__LONG_LONG_LIMB,1,[long gmp3 limbs]) AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
+++
+++GMP=1
+++AC_DEFINE(GMP,1,[using gmp])
+++AC_SUBST(GMP)
+++AC_SUBST(GMPDIR)
+++echo > makedefsafter
+++echo "MPFILES=$MPFILES" >> makedefsafter
+++echo "PATCHED_SYMBOLS=$PATCHED_SYMBOLS" >> makedefsafter
+++echo >> makedefsafter
+++
++ 
++ 
++ #
++@@ -980,30 +693,13 @@ fi
++ # 
++ 
++ if test "$enable_xgcl" = "yes" ; then 
++-
++-   AC_PATH_X
++-#   AC_PATH_XTRA
++-#   echo $X_CFLAGS
++-#   echo $X_LIBS
++-#   echo $X_EXTRA_LIBS
++-#   echo $X_PRE_LIBS
++-
++-   miss=0
++-#   AC_CHECK_LIB(Xmu,main,X_LIBS="$X_LIBS",miss=1,$X_LIBS)#FIXME remove these
++-#   AC_CHECK_LIB(Xt,main,X_LIBS="$X_LIBS",miss=1,$X_LIBS)
++-#   AC_CHECK_LIB(Xext,main,X_LIBS="$X_LIBS",miss=1,$X_LIBS)
++-#   AC_CHECK_LIB(Xaw,main,X_LIBS="$X_LIBS",miss=1,$X_LIBS)#until here
++-   AC_CHECK_LIB(X11,main,X_LIBS="$X_LIBS -lX11",miss=1,$X_LIBS)
++- 
++-   if test "$miss" = "1" ; then
++-      X_CFLAGS=
++-      X_LIBS=
++-      X_EXTRA_LIBS=
++-      X_PRE_LIBS=
++-      echo missing x libraries -- cannot compile xgcl
++-   else
++-      AC_DEFINE(HAVE_XGCL,1,[using xgcl])
++-   fi
+++    
+++    AC_PATH_X
+++    
+++    AC_CHECK_LIB(X11,main,
+++              [X_LIBS="$X_LIBS -lX11" AC_DEFINE(HAVE_XGCL,1,[using xgcl])],
+++              [AC_MSG_RESULT([missing x libraries -- cannot compile xgcl])])
+++    
++ fi
++ 
++ 
++@@ -1015,225 +711,194 @@ AC_SUBST(X_CFLAGS)
++ #
++ 
++ if test "$enable_dlopen" = "yes" ; then
+++    
+++    AC_CHECK_LIB([dl],[dlopen],,AC_MSG_ERROR([Cannot find dlopen]))
+++    
+++    TLIBS="$TLIBS -ldl -rdynamic"
+++    assert_arg_to_tcflags -fPIC
+++    AC_DEFINE(USE_DLOPEN,1,[link compiled objects via libdl])
++ 
++-     AC_CHECK_LIB(dl,dlopen,have_dl=1,have_dl=0)
++-     if test "$have_dl" = "0" ; then
++-             echo "Cannot find dlopen in -dl"
++-             exit 1
++-     fi
++-dnl  AC_SEARCH_LIBS(dlopen, dl, have_dl=1, AC_ERROR(dlopen not found))
++-dnl LIBS and TLIBS - why not merged from the beginning?
++-
++-     TLIBS="$TLIBS -ldl -rdynamic"
++-     TCFLAGS="-fPIC $TCFLAGS"
++-dnl  TLIBS="$TLIBS -rdynamic"
++-     AC_DEFINE(USE_DLOPEN,1,[link compiled objects via libdl])
++ fi
++ 
++ if test "$enable_statsysbfd" = "yes" || test "$enable_dynsysbfd" = "yes" ; then
++-     AC_CHECK_HEADERS(bfd.h,
++-             AC_CHECK_LIB(bfd,bfd_init,
++-             #
++-             # Old binutils appear to need CONST defined to const
++-             #
++-                     AC_MSG_CHECKING(if need to define CONST for bfd)
++-                     AC_TRY_RUN([#define IN_GCC
++-                                 #include <bfd.h>
++-                                 int main() { symbol_info t; return 0;}],
++-                             AC_MSG_RESULT(no),
++-                             AC_TRY_RUN([#define CONST const
++-                                            #define IN_GCC
++-                                         #include <bfd.h>
++-                                         int main() {symbol_info t; return 0;}],
++-                                     AC_MSG_RESULT(yes) 
++-                                     AC_DEFINE(NEED_CONST,1,[binutils requires CONST definition]),
++-                                     AC_MSG_ERROR([cannot use bfd]),
++-                                     AC_MSG_ERROR([cannot use bfd])),
++-                             AC_MSG_ERROR([cannot use bfd]))
++-                     ,,-liberty))
++-
++-     AC_DEFINE(HAVE_LIBBFD,1,[use libbfd])
++-
++-#
++-# BFD boolean syntax
++-#
++-
++-     AC_MSG_CHECKING(for useable bfd_boolean)
++-     AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-             #define IN_GCC
++-             #include <bfd.h>
++-             bfd_boolean foo() {return FALSE;}
++-             ]],[[return 0;]])],
++-             [AC_MSG_RESULT(yes) 
++-             AC_DEFINE(HAVE_BFD_BOOLEAN,1,[bfd_boolean defined])],
++-             [AC_MSG_RESULT(no)])
++-
++-#
++-# bfd_link_info.output_bfd minimal configure change check
++-#
++-
++-     AC_CHECK_MEMBER([struct bfd_link_info.output_bfd],
++-             AC_DEFINE(HAVE_OUTPUT_BFD,1,[output_bfd element present]), [], 
++-             [
++-             #include <bfd.h>
++-             #include <bfdlink.h>
++-             ])
++-     AC_SUBST(HAVE_OUTPUT_BFD)
++-
++-#
++-# FIXME: Need to workaround mingw before this point -- CM
++-#
++-     if test "$enable_statsysbfd" = "yes" && ! $CC -v 2>&1 | fgrep ming > /dev/null ; then
++-             echo 'int main() {bfd_init();bfd_openr("/dev/null",0);return 0;}' >foo.c
++-             MP=`$CC [ -Wl,-M ] -static -o foo foo.c -lbfd -liberty -ldl 2>&1 | grep -v : | tr '()' '\012\012' | $AWK '{print $NF}' | sort | uniq`
++-             rm -f foo.c foo
++-             if echo $MP | tr ' ' '\012' | grep libbfd.a >/dev/null; then
++-                LIBBFD="`echo $MP | tr ' ' '\012' | grep libbfd.a | $AWK '{i=split($1,A,"/");for (j=1;j<=i;j++) if (j>1 && A[[j]]=="..") {j--;i-=2;for (k=j;k<=i;k++) A[[k]]=A[[k+2]];j--;}} END {for (j=1;j<=i;j++) printf("%s%s",A[[j]],j!=i ? "/" : "")}'`"
++-             else
++-                AC_MSG_ERROR([cannot locate external libbfd.a])
++-             fi   
++-             if echo $MP | tr ' ' '\012' | grep libiberty.a >/dev/null ; then
++-                LIBIBERTY="`echo $MP | tr ' ' '\012' | grep libiberty.a | $AWK '{i=split($1,A,"/");for (j=1;j<=i;j++) if (j>1 && A[[j]]=="..") {j--;i-=2;for (k=j;k<=i;k++) A[[k]]=A[[k+2]];j--;}} END {for (j=1;j<=i;j++) printf("%s%s",A[[j]],j!=i ? "/" : "")}'`"
++-             else
++-                AC_MSG_ERROR([cannot locate external libiberty.a])
++-             fi   
++-             BUILD_BFD=copy_bfd
++-             AC_CHECK_LIB(z,inflate,
++-                     [TLIBS="$TLIBS -lz"],
++-                     AC_MSG_ERROR([Need zlib for bfd linking]),[])
++-             AC_CHECK_LIB(dl,dlsym,
++-                     [TLIBS="$TLIBS -ldl"],
++-                     AC_MSG_ERROR([Need libdl for bfd linking]),[])
++-             AC_SUBST(BUILD_BFD)
++-             AC_SUBST(LIBBFD)
++-             AC_SUBST(LIBIBERTY)
++-
+++    AC_CHECK_HEADERS(
+++     [bfd.h],
+++     AC_CHECK_LIB(
+++         [bfd],[bfd_init],
+++         #
+++         # Old binutils appear to need CONST defined to const
+++         #
+++         AC_MSG_CHECKING([need to define CONST for bfd])
+++         AC_RUN_IFELSE(
+++             [AC_LANG_PROGRAM(
+++                     [[
+++                         #define IN_GCC
+++                         #include <bfd.h>
+++                     ]],
+++                     [[
+++                         symbol_info t;
+++                     ]])],
+++             AC_MSG_RESULT([no]),
+++             AC_RUN_IFELSE(
+++                 [AC_LANG_PROGRAM(
+++                         [[
+++                             #define CONST const
+++                             #define IN_GCC
+++                             #include <bfd.h>
+++                         ]],
+++                         [[
+++                             symbol_info t;
+++                         ]])],
+++                 AC_MSG_RESULT([yes]) 
+++                 AC_DEFINE(NEED_CONST,1,[binutils requires CONST definition]),
+++                 AC_MSG_ERROR([cannot use bfd]),
+++                 AC_MSG_ERROR([cannot use bfd])),
+++             AC_MSG_ERROR([cannot use bfd]))
+++         ,,-liberty))
+++    
+++    AC_DEFINE(HAVE_LIBBFD,1,[use libbfd])
+++    
+++    #
+++    # BFD boolean syntax
+++    #
+++    
+++    AC_MSG_CHECKING(for useable bfd_boolean)
+++    AC_RUN_IFELSE(
+++     [AC_LANG_PROGRAM(
+++             [[
+++                 #define IN_GCC
+++                 #include <bfd.h>
+++                 bfd_boolean foo() {return FALSE;}
+++             ]],
+++             [[]])],
+++     [AC_MSG_RESULT(yes) 
+++      AC_DEFINE(HAVE_BFD_BOOLEAN,1,[bfd_boolean defined])],
+++     [AC_MSG_RESULT(no)])
+++    
+++    #
+++    # bfd_link_info.output_bfd minimal configure change check
+++    #
+++    
+++    AC_CHECK_MEMBER([struct bfd_link_info.output_bfd],
+++                 AC_DEFINE(HAVE_OUTPUT_BFD,1,[output_bfd element present]), [], 
+++                 [[
+++                     #include <bfd.h>
+++                     #include <bfdlink.h>
+++                 ]])
+++    AC_SUBST(HAVE_OUTPUT_BFD)
+++    
+++    #
+++    # FIXME: Need to workaround mingw before this point -- CM
+++    #
+++    if test "$enable_statsysbfd" = "yes" && ! $CC -v 2>&1 | fgrep ming > /dev/null ; then
+++     echo 'int main() {bfd_init();bfd_openr("/dev/null",0);return 0;}' >foo.c
+++     MP=`$CC [ -Wl,-M ] -static -o foo foo.c -lbfd -liberty -ldl 2>&1 | grep -v : | tr '()' '\012\012' | $AWK '{print $NF}' | sort | uniq`
+++     rm -f foo.c foo
+++     if echo $MP | tr ' ' '\012' | grep libbfd.a >/dev/null; then
+++         LIBBFD="`echo $MP | tr ' ' '\012' | grep libbfd.a | $AWK '{i=split($1,A,\"/\");for (j=1;j<=i;j++) if (j>1 && A[[j]]==\"..\") {j--;i-=2;for (k=j;k<=i;k++) A[[k]]=A[[k+2]];j--;}} END {for (j=1;j<=i;j++) printf(\"%s%s\",A[[j]],j!=i ? \"/\" : \"\")}'`"
++      else
++-             TLIBS="$TLIBS -lbfd -liberty -ldl"
++-     fi
++-fi
++-
++-if test "$enable_locbfd" = "yes" ; then
++-
++-     # check for gettext.  It is part of glibc, but others
++-     # need GNU gettext separately.
++-#    AC_CHECK_HEADERS(libintl.h, true,
++-#                       AC_MSG_ERROR(libintl.h (gettext) not found))
++-#    AC_SEARCH_LIBS(dgettext, intl, true, AC_MSG_ERROR(gettext library not found))
++- 
++-     echo "#"
++-     echo "#"
++-     echo "# -------------------------"
++-     echo "# Subconfigure of LIBINTL"
++-     echo "#"
++-     echo "#"
++-     cd binutils/intl && chmod +x configure && ./configure --disable-nls && cd ../..
++-#       MY_SUBDIRS="$MY_SUBDIRS binutils/libiberty " 
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# Subconfigure of LIBINTL done"
++-     echo "# ------------------------------"
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# -------------------------"
++-     echo "# Subconfigure of LIBIBERTY"
++-     echo "#"
++-     echo "#"
++-     cd binutils/libiberty && chmod +x configure && ./configure --disable-nls && cd ../..
++-#       MY_SUBDIRS="$MY_SUBDIRS binutils/libiberty " 
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# Subconfigure of LIBIBERTY done"
++-     echo "# ------------------------------"
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# -------------------"
++-     echo "# Subconfigure of BFD"
++-     echo "#"
++-     echo "#"
++-     cd binutils/bfd && chmod +x configure && ./configure --with-included-gettext --disable-nls && cd ../..
++-#       MY_SUBDIRS="$MY_SUBDIRS binutils/bfd " 
++-     echo "#"
++-     echo "#"
++-     echo "#"
++-     echo "# Subconfigure of BFD done"
++-     echo "# ------------------------"
++-     echo "#"
++-#    TLIBS="$TLIBS `pwd`/binutils/bfd/libbfd.a `pwd`/binutils/libiberty/libiberty.a"
++-     AC_DEFINE(HAVE_LIBBFD,1,[use libbfd])
++-     BUILD_BFD="h/bfd.h h/bfdlink.h h/ansidecl.h h/symcat.h"
+++         AC_MSG_ERROR([cannot locate external libbfd.a])
+++     fi   
+++     if echo $MP | tr ' ' '\012' | grep libiberty.a >/dev/null ; then
+++         LIBIBERTY="`echo $MP | tr ' ' '\012' | grep libiberty.a | $AWK '{i=split($1,A,\"/\");for (j=1;j<=i;j++) if (j>1 && A[[j]]==\"..\") {j--;i-=2;for (k=j;k<=i;k++) A[[k]]=A[[k+2]];j--;}} END {for (j=1;j<=i;j++) printf(\"%s%s\",A[[j]],j!=i ? \"/\" : \"\")}'`"
+++     else
+++         AC_MSG_ERROR([cannot locate external libiberty.a])
+++     fi   
+++     BUILD_BFD=copy_bfd
+++     AC_CHECK_LIB(z,inflate,
+++                  [TLIBS="$TLIBS -lz"],
+++                  AC_MSG_ERROR([Need zlib for bfd linking]),[])
+++     AC_CHECK_LIB(dl,dlsym,
+++                  [TLIBS="$TLIBS -ldl"],
+++                  AC_MSG_ERROR([Need libdl for bfd linking]),[])
++      AC_SUBST(BUILD_BFD)
+++     AC_SUBST(LIBBFD)
+++     AC_SUBST(LIBIBERTY)
+++     
+++    else
+++     TLIBS="$TLIBS -lbfd -liberty -ldl"
+++    fi
++ fi
++ 
+++AC_ARG_ENABLE([xdr],[  --enable-xdr=yes will compile in support for XDR])
++ 
++-if test "$enable_xdr" = "yes" ; then
++-   AC_CHECK_FUNC(xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions]),
++-        AC_CHECK_LIB(tirpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
++-                     TLIBS="$TLIBS -ltirpc" TCFLAGS="$TCFLAGS -I/usr/include/tirpc",
++-        AC_CHECK_LIB(gssrpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
++-                     TLIBS="$TLIBS -lgssrpc" TCFLAGS="$TCFLAGS -I/usr/include/gssrpc",
++-        AC_CHECK_LIB(rpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
++-                     TLIBS="$TLIBS -lrpc" TCFLAGS="$TCFLAGS -I/usr/include/rpc",
++-        AC_CHECK_LIB(oncrpc,xdr_double,AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
++-                     TLIBS="$TLIBS -loncrpc" TCFLAGS="$TCFLAGS -I/usr/include/oncrpc")))))
+++if test "$enable_xdr" != "no" ; then
+++    XDR_LIB=""
+++    AC_CHECK_FUNC([xdr_double],XDR_LIB=" ",
+++               [AC_CHECK_LIB([tirpc],[xdr_double],[XDR_LIB=tirpc],
+++                             [AC_CHECK_LIB([gssrpc],[xdr_double],[XDR_LIB=gssrpc],
+++                                           [AC_CHECK_LIB([rpc],[xdr_double],[XDR_LIB=rpc],
+++                                                         [AC_CHECK_LIB([oncrpc],[xdr_double],[XDR_LIB=oncrpc])])])])])
+++    
+++    if test "$XDR_LIB" != ""; then
+++     AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
+++     if test "$XDR_LIB" != " "; then
+++         TLIBS="$TLIBS -l$XDR_LIB"
+++         add_arg_to_tcflags -I/usr/include/$XDR_LIB
+++     fi
+++    fi
++ fi
++ 
++ 
++ AC_MSG_CHECKING([__builtin_clzl])
++-AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-  #include <stdio.h>
++-  #include <unistd.h>
++-  int main() {
++-      unsigned long u;
++-      long j;
++-      if (__builtin_clzl(0)!=sizeof(long)*8)
++-              return -1;
++-      for (u=1,j=sizeof(long)*8-1;j>=0;j--,u<<=1)
++-               if (__builtin_clzl(u)!=j)
++-          return -1;
++-      return 0;
++-   }]])],[AC_MSG_RESULT([yes])
++-       AC_DEFINE(HAVE_CLZL,[1],[clzl instruction])],
++-       [AC_MSG_RESULT([no])])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++             #include <unistd.h>
+++         ]],
+++         [[
+++             unsigned long u;
+++             long j;
+++             if (__builtin_clzl(0)!=sizeof(long)*8)
+++                        return -1;
+++                for (u=1,j=sizeof(long)*8-1;j>=0;j--,u<<=1)
+++                            if (__builtin_clzl(u)!=j)
+++                       return -1;
+++         ]])],
+++    [AC_MSG_RESULT([yes])
+++     AC_DEFINE(HAVE_CLZL,[1],[clzl instruction])],
+++    [AC_MSG_RESULT([no])])
++ 
++ AC_MSG_CHECKING([__builtin_ctzl])
++-AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-  #include <stdio.h>
++-  #include <unistd.h>
++-  int main() {
++-      unsigned long u;
++-      long j;
++-      if (__builtin_ctzl(0)!=sizeof(long)*8)
++-              return -1;
++-      for (u=1,j=0;j<sizeof(long)*8-1;j++,u<<=1)
++-               if (__builtin_ctzl(u)!=j)
++-          return -1;
++-      return 0;
++-   }]])],[AC_MSG_RESULT([yes])
++-       AC_DEFINE(HAVE_CTZL,[1],[ctzl instruction])],
++-       [AC_MSG_RESULT([no])])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++             #include <unistd.h>
+++         ]],
+++         [[
+++             unsigned long u;
+++             long j;
+++             if (__builtin_ctzl(0)!=sizeof(long)*8)
+++                        return -1;
+++                for (u=1,j=0;j<sizeof(long)*8-1;j++,u<<=1)
+++                            if (__builtin_ctzl(u)!=j)
+++                       return -1;
+++         ]])],
+++    [AC_MSG_RESULT([yes])
+++     AC_DEFINE(HAVE_CTZL,[1],[ctzl instruction])],
+++    [AC_MSG_RESULT([no])])
++ 
++ 
++ case $use in
++-     sh4*) ;;     #FIXME, these exceptions needed as of gcc 4.7
++-     hppa*) ;;    #FIXME
++-     powerpc*) ;; #FIXME
++-     alpha*) ;;   #FIXME
++-     ia64*) ;;    #FIXME
++-     *) 
++-     AC_MSG_CHECKING(__builtin___clear_cache)
++-     AC_RUN_IFELSE([
++-             AC_LANG_PROGRAM([[]],[[
+++    sh4*) ;;     #FIXME, these exceptions needed as of gcc 4.7
+++    hppa*) ;;    #FIXME
+++    powerpc*) ;; #FIXME
+++    alpha*) ;;   #FIXME
+++    ia64*) ;;    #FIXME
+++    *) 
+++     AC_MSG_CHECKING(__builtin___clear_cache)
+++     AC_RUN_IFELSE(
+++         [AC_LANG_PROGRAM(
+++                 [[]],
+++                 [[
++                      void *v,*ve;
++                      __builtin___clear_cache(v,ve);
++-                             ]])],
++-                             [AC_DEFINE(HAVE_BUILTIN_CLEAR_CACHE,1,[have __builtin__clear_cache instruction])
++-                              AC_MSG_RESULT(yes)],
++-                              AC_MSG_RESULT(no));;
+++                 ]])],
+++         [AC_DEFINE(HAVE_BUILTIN_CLEAR_CACHE,1,[have __builtin__clear_cache instruction])
+++          AC_MSG_RESULT(yes)],
+++         AC_MSG_RESULT(no));;
++ esac
++ 
++ #AC_CONFIG_SUBDIRS($MY_SUBDIRS)
++@@ -1247,547 +912,481 @@ AC_CHECK_SIZEOF(long,0)
++ ####  Memory areas and alignment
++ 
++ AC_MSG_CHECKING(for byte order)
++-AC_RUN_IFELSE([
++-     AC_LANG_PROGRAM([[
++-             ]],[[
++-
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[]],
+++         [[
++              /* Are we little or big endian?  Adapted from Harbison&Steele.  */
++              union {long l;char c[sizeof(long)];} u;
++              u.l = 1;
++              return u.c[sizeof(long)-1] ? 1 : 0;
++-     ]])],[
+++         ]])],[
++      AC_MSG_RESULT(little)],
++-     [AC_MSG_RESULT(big) 
++-     AC_DEFINE(WORDS_BIGENDIAN,1,[big endian byte order])])
+++    [AC_MSG_RESULT(big) 
+++     AC_DEFINE(WORDS_BIGENDIAN,1,[big endian byte order])])
++ AC_SUBST(WORDS_BIGENDIAN)
++ 
++ 
++ AC_MSG_CHECKING(for word order)
++-AC_RUN_IFELSE([
++-     AC_LANG_PROGRAM([[
++-             ]],[[
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[]],
+++         [[
++              /* Are we little or big endian?  Adapted from Harbison&Steele.  */
++              union {double d;int l[sizeof(double)/sizeof(int)];} u;
++              u.d = 1.0;
++              return u.l[sizeof(double)/sizeof(int)-1] ? 0 : 1;
++-     ]])],
++-     [AC_MSG_RESULT(little)],
++-     [AC_MSG_RESULT(big) 
++-     AC_DEFINE(DOUBLE_BIGENDIAN,1,[big endian word order])])
+++         ]])],
+++    [AC_MSG_RESULT(little)],
+++    [AC_MSG_RESULT(big) 
+++     AC_DEFINE(DOUBLE_BIGENDIAN,1,[big endian word order])])
++ AC_SUBST(DOUBLE_BIGENDIAN)
++ 
++ # pagewidth
++ AC_MSG_CHECKING(for pagewidth)
++ case $use in
++-     mips*) min_pagewidth=14;;
++-     *) min_pagewidth=12;;
+++    mips*) min_pagewidth=14;;
+++    *) min_pagewidth=12;;
++ esac
++-AC_RUN_IFELSE([
++-     AC_LANG_PROGRAM([[
++-         #include <stdio.h>
++-            #include <unistd.h>
++-            #ifdef __CYGWIN__
++-            #define getpagesize() 4096
++-            #endif
++-         ]],[[
++-         size_t i=getpagesize(),j; 
++-         FILE *fp=fopen("conftest1","w");
++-         for (j=0;i>>=1;j++);
++-         j=j<$min_pagewidth ? $min_pagewidth : j;
++-         fprintf(fp,"%u",j);
++-         return 0;
++-     ]])],
++-     [PAGEWIDTH=`cat conftest1`],
++-     [PAGEWIDTH=0])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++             #include <unistd.h>
+++             #ifdef __CYGWIN__
+++             #define getpagesize() 4096
+++             #endif
+++         ]],
+++         [[
+++             size_t i=getpagesize(),j; 
+++             FILE *fp=fopen("conftest1","w");
+++             for (j=0;i>>=1;j++);
+++                 j=j<$min_pagewidth ? $min_pagewidth : j;
+++                 fprintf(fp,"%u",j);
+++         ]])],
+++    [PAGEWIDTH=`cat conftest1`],
+++    [PAGEWIDTH=0])
++ AC_MSG_RESULT($PAGEWIDTH)
++ AC_DEFINE_UNQUOTED(PAGEWIDTH,$PAGEWIDTH,[system pagewidth])
++ AC_SUBST(PAGEWIDTH)
++ 
++ AC_MSG_CHECKING([for required object alignment])
++-AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-        #include <stdio.h>
++-     #define EXTER
++-     #define INLINE
++-     #include "$MP_INCLUDE"
++-     #include "./h/enum.h"
++-     #define OBJ_ALIGN
++-     #include "./h/type.h"
++-     #include "./h/lu.h"
++-     #include "./h/object.h"
++-     ]],[[
++-     unsigned long i;
++-     FILE *fp=fopen("conftest1","w");
++-     for (i=1;i && NOT_OBJECT_ALIGNED(i); i<<=1);
++-     if (!i) return -1;
++-     fprintf(fp,"%lu",i);
++-     fclose(fp);
++-     return 0;
++-     ]])],
++-      [obj_align=`cat conftest1`
++-      AC_MSG_RESULT($obj_align)
++-      AC_DEFINE_UNQUOTED(OBJ_ALIGNMENT,$obj_align,[needed object alignment in bytes])],
++-         [AC_MSG_ERROR([Cannot find object alignent])])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++             #define EXTER
+++             #define INLINE
+++             #include "$MP_INCLUDE"
+++             #include "./h/enum.h"
+++             #define OBJ_ALIGN
+++             #include "./h/type.h"
+++             #include "./h/lu.h"
+++             #include "./h/object.h"
+++         ]],
+++         [[
+++             unsigned long i;
+++             FILE *fp=fopen("conftest1","w");
+++             for (i=1;i && NOT_OBJECT_ALIGNED(i); i<<=1);
+++                 if (!i) return -1;
+++                    fprintf(fp,"%lu",i);
+++                    fclose(fp);
+++                    return 0;
+++         ]])],
+++    [obj_align=`cat conftest1`
+++     AC_MSG_RESULT($obj_align)
+++     AC_DEFINE_UNQUOTED(OBJ_ALIGNMENT,$obj_align,[needed object alignment bytes])],
+++    [AC_MSG_ERROR([Cannot find object alignent])])
++ 
++ AC_MSG_CHECKING([for C extension variable alignment])
++-AC_RUN_IFELSE([AC_LANG_PROGRAM([[]],[[
++-         char *v __attribute__ ((aligned ($obj_align)));
++-         return 0;]])],[obj_align="__attribute__ ((aligned ($obj_align)))"],[AC_MSG_ERROR([Need alignment attributes])])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM([[]],
+++                  [[
+++                      char *v __attribute__ ((aligned ($obj_align)));
+++                  ]])],[obj_align="__attribute__ ((aligned ($obj_align)))"],[AC_MSG_ERROR([Need alignment attributes])])
++ AC_MSG_RESULT($obj_align)
++ AC_DEFINE_UNQUOTED(OBJ_ALIGN,$obj_align,[can use C extension for object alignment])
++ 
++ AC_MSG_CHECKING([for C extension noreturn function attribute])
++-AC_RUN_IFELSE([AC_LANG_PROGRAM([[]],[[
++-         extern int v() __attribute__ ((noreturn));
++-         return 0;]])],[no_return="__attribute__ ((noreturn))"],[no_return=])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM([[]],
+++                  [[
+++                      extern int v() __attribute__ ((noreturn));
+++                  ]])],
+++    [no_return="__attribute__ ((noreturn))"],[no_return=])
++ AC_MSG_RESULT($no_return)
++ AC_DEFINE_UNQUOTED(NO_RETURN,$no_return,[can use C extension for functions that do not return])
++ 
++-AC_MSG_CHECKING(sizeof struct contblock)
+++AC_MSG_CHECKING([sizeof struct contblock])
+++
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++             #define EXTER
+++             #define INLINE
+++             #include "$MP_INCLUDE"
+++             #include "h/enum.h"
+++             #include "h/type.h"
+++             #include "h/lu.h"
+++             #include "h/object.h"
+++         ]],
+++         [[
+++             FILE *f=fopen("conftest1","w");
+++             fprintf(f,"%u",sizeof(struct contblock));
+++             fclose(f);
+++         ]])],
+++    [sizeof_contblock=`cat conftest1`],
+++    [AC_MSG_ERROR([Cannot find sizeof struct contblock])],
+++    [AC_MSG_ERROR([Cannot find sizeof struct contblock])])
++ 
++-# work around MSYS pwd result incompatibility
++-if test "$use" = "mingw" ; then
++-AC_TRY_RUN([#include <stdio.h>
++-     #define EXTER
++-     #define INLINE
++-     #include "$MP_INCLUDE"
++-     #include "h/enum.h"
++-     #include "h/type.h"
++-     #include "h/lu.h"
++-     #include "h/object.h"
++-     int main(int argc,char **argv,char **envp) {
++-     FILE *f=fopen("conftest1","w");
++-     fprintf(f,"%u",sizeof(struct contblock));
++-     fclose(f);
++-     return 0;
++-     }],sizeof_contblock=`cat conftest1`,
++-        echo Cannot find sizeof struct contblock;exit 1,
++-        echo Cannot find sizeof struct contblock;exit 1)
++-else
++-AC_TRY_RUN([#include <stdio.h>
++-     #define EXTER
++-     #define INLINE
++-     #include "$MP_INCLUDE"
++-     #include "`pwd`/h/enum.h"
++-     #include "`pwd`/h/type.h"
++-     #include "`pwd`/h/lu.h"
++-     #include "`pwd`/h/object.h"
++-     int main(int argc,char **argv,char **envp) {
++-     FILE *f=fopen("conftest1","w");
++-     fprintf(f,"%u",sizeof(struct contblock));
++-     fclose(f);
++-     return 0;
++-     }],sizeof_contblock=`cat conftest1`,
++-        echo Cannot find sizeof struct contblock;exit 1,
++-        echo Cannot find sizeof struct contblock;exit 1)
++-fi
++ AC_MSG_RESULT($sizeof_contblock)
++ AC_DEFINE_UNQUOTED(SIZEOF_CONTBLOCK,$sizeof_contblock,[sizeof linked list for contiguous pages])
++ 
++ AC_MSG_CHECKING([for sbrk])
++ HAVE_SBRK=""
++-AC_TRY_RUN([#include <unistd.h>
++-         #include <stdio.h>
++-         int main() {
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <unistd.h>
+++             #include <stdio.h>
+++         ]],
+++         [[
++              FILE *f;
++              if (!(f=fopen("conftest1","w")))
++-                     return -1;
++-             fprintf(f,"%u",sbrk(0));
++-             return 0;
++-             }],
++-             HAVE_SBRK=1
++-             AC_MSG_RESULT(yes),
++-             AC_MSG_RESULT([no: WARNING you must be able to emulate sbrk: as on mingw or macosx]),
++-             AC_MSG_RESULT([no: WARNING you must be able to emulate sbrk: as on mingw or macosx]))
+++                return -1;
+++                fprintf(f,"%u",sbrk(0));
+++         ]])],
+++    [HAVE_SBRK=1;AC_MSG_RESULT([yes])],
+++    AC_MSG_RESULT([no: WARNING you must be able to emulate sbrk: as on mingw or macosx]),
+++    AC_MSG_RESULT([no: WARNING you must be able to emulate sbrk: as on mingw or macosx]))
++ 
++ if test "$use" = "386-macosx" ; then
++-   AC_MSG_RESULT(emulating sbrk for mac);
++-   HAVE_SBRK=0
+++    AC_MSG_RESULT([emulating sbrk for mac]);
+++    HAVE_SBRK=0
++ fi
++ 
++ if test "$HAVE_SBRK" = "1" ; then
++-
++-   AC_MSG_CHECKING([for ADDR_NO_RANDOMIZE constant])
++-   AC_RUN_IFELSE([
++-     AC_LANG_PROGRAM([[
++-            #include <sys/personality.h>
++-         #include <stdio.h>
++-         ]],[[
++-         FILE *f;
++-         if (!(f=fopen("conftest1","w"))) return -1;
++-         fprintf(f,"%x",ADDR_NO_RANDOMIZE);
++-         return 0;
++-        ]])],
+++    
+++    AC_MSG_CHECKING([for ADDR_NO_RANDOMIZE constant])
+++    AC_RUN_IFELSE(
+++     [AC_LANG_PROGRAM(
+++             [[
+++                 #include <sys/personality.h>
+++                 #include <stdio.h>
+++             ]],
+++             [[
+++                 FILE *f;
+++                 if (!(f=fopen("conftest1","w"))) return -1;
+++                    fprintf(f,"%x",ADDR_NO_RANDOMIZE);
+++             ]])],
++      [ADDR_NO_RANDOMIZE=`cat conftest1`
++-     AC_MSG_RESULT([yes $ADDR_NO_RANDOMIZE])],
+++      AC_MSG_RESULT([yes $ADDR_NO_RANDOMIZE])],
++      [ADDR_NO_RANDOMIZE=0
++-     AC_MSG_RESULT([no assuming 0x40000])
++-     AC_DEFINE_UNQUOTED(ADDR_NO_RANDOMIZE,0x40000,[punt guess for no randomize value])])
++-
++-   AC_MSG_CHECKING([for ADDR_COMPAT_LAYOUT constant])
++-   AC_RUN_IFELSE([
++-     AC_LANG_PROGRAM([[
++-            #include <sys/personality.h>
++-         #include <stdio.h>
++-         ]],[[
++-         FILE *f;
++-         if (!(f=fopen("conftest1","w"))) return -1;
++-         fprintf(f,"%x",ADDR_COMPAT_LAYOUT);
++-         return 0;
++-        ]])],
+++      AC_MSG_RESULT([no assuming 0x40000])
+++      AC_DEFINE_UNQUOTED(ADDR_NO_RANDOMIZE,0x40000,[punt guess for no randomize value])])
+++    
+++    AC_MSG_CHECKING([for ADDR_COMPAT_LAYOUT constant])
+++    AC_RUN_IFELSE(
+++     [AC_LANG_PROGRAM(
+++             [[
+++                 #include <sys/personality.h>
+++                 #include <stdio.h>
+++             ]],
+++             [[
+++                 FILE *f;
+++                 if (!(f=fopen("conftest1","w"))) return -1;
+++                    fprintf(f,"%x",ADDR_COMPAT_LAYOUT);
+++             ]])],
++      [ADDR_COMPAT_LAYOUT=`cat conftest1`
++-     AC_MSG_RESULT([yes $ADDR_COMPAT_LAYOUT])],
+++      AC_MSG_RESULT([yes $ADDR_COMPAT_LAYOUT])],
++      [ADDR_COMPAT_LAYOUT=0
++-     AC_MSG_RESULT([no])]
+++      AC_MSG_RESULT([no])]
++      AC_DEFINE_UNQUOTED(ADDR_COMPAT_LAYOUT,0,[constant to reserve upper 3Gb for C stack]))
++-
++-   AC_MSG_CHECKING([for ADDR_LIMIT_3GB constant])
++-   AC_RUN_IFELSE([
++-     AC_LANG_PROGRAM([[
++-            #include <sys/personality.h>
++-         #include <stdio.h>
++-         ]],[[
++-         FILE *f;
++-         if (!(f=fopen("conftest1","w"))) return -1;
++-         fprintf(f,"%x",ADDR_LIMIT_3GB);
++-         return 0;
++-        ]])],
+++    
+++    AC_MSG_CHECKING([for ADDR_LIMIT_3GB constant])
+++    AC_RUN_IFELSE(
+++     [AC_LANG_PROGRAM(
+++             [[
+++                 #include <sys/personality.h>
+++                 #include <stdio.h>
+++             ]],
+++             [[
+++                 FILE *f;
+++                 if (!(f=fopen("conftest1","w"))) return -1;
+++                    fprintf(f,"%x",ADDR_LIMIT_3GB);
+++             ]])],
++      [ADDR_LIMIT_3GB=`cat conftest1`
++-     AC_MSG_RESULT([yes $ADDR_LIMIT_3GB])],
+++      AC_MSG_RESULT([yes $ADDR_LIMIT_3GB])],
++      [ADDR_LIMIT_3GB=0
++-     AC_MSG_RESULT([no])]
+++      AC_MSG_RESULT([no])]
++      AC_DEFINE_UNQUOTED(ADDR_LIMIT_3GB,0,[only 3Gb of address space]))
++-
++-   AC_MSG_CHECKING([for personality(ADDR_NO_RANDOMIZE) support])
++-   AC_RUN_IFELSE([
++-     AC_LANG_SOURCE([[
++-             #include <stdio.h>
++-             #include <stdlib.h>
++-             int main(int argc,char **argv,char **envp) {
++-             #include "h/unrandomize.h"
++-             return 0;}]])],
+++    
+++    AC_MSG_CHECKING([for personality(ADDR_NO_RANDOMIZE) support])
+++    AC_RUN_IFELSE(
+++     [AC_LANG_SOURCE(
+++             [[
+++                 #include <stdio.h>
+++                 #include <stdlib.h>
+++                 int main(int argc,char *argv[],char *envp[]) {
+++                     #include "h/unrandomize.h"
+++                     return 0;
+++                 }
+++             ]])],
++      [AC_MSG_RESULT(yes)
++-     AC_DEFINE(CAN_UNRANDOMIZE_SBRK,1,[can prevent sbrk from returning random values])],
+++      AC_DEFINE(CAN_UNRANDOMIZE_SBRK,1,[can prevent sbrk from returning random values])],
++      [AC_MSG_RESULT(no)])
++ 
++-     AC_MSG_CHECKING([that sbrk is (now) non-random])
++-     AC_TRY_RUN([#include <stdio.h>
++-                 #include <stdlib.h>
+++    AC_MSG_CHECKING([that sbrk is (now) non-random])
+++    SBRK=0
+++    AC_RUN_IFELSE(
+++     [AC_LANG_SOURCE(
+++             [[
+++                 #include <stdio.h>
+++                 #include <stdlib.h>
++                  int main(int argc,char * argv[],char * envp[]) {
++                      FILE *f;
++                      #ifdef CAN_UNRANDOMIZE_SBRK
++                      #include "h/unrandomize.h"
++                      #endif
++-                     if (!(f=fopen("conftest1","w"))) return -1;
++-                     fprintf(f,"%u",sbrk(0));
++-                     return 0;}],SBRK=`cat conftest1`,SBRK=0,SBRK=0)
++-     if test "$SBRK" = "0" ; then
++-             AC_MSG_RESULT(cannot trap sbrk)
++-             exit 1
++-     fi
++-     AC_TRY_RUN([#include <stdio.h>
++-                 #include <stdlib.h>
+++                     if (!(f=fopen("conftest1","w")))
+++                        return -1;
+++                        fprintf(f,"%u",sbrk(0));
+++                        return 0;
+++                 }
+++             ]])],[SBRK=`cat conftest1`])
+++    if test "$SBRK" = "0" ; then
+++     AC_MSG_ERROR([cannot trap sbrk])
+++    fi
+++
+++    SBRK1=0
+++    AC_RUN_IFELSE(
+++     [AC_LANG_SOURCE(
+++             [[
+++                 #include <stdio.h>
+++                 #include <stdlib.h>
++                  int main(int argc,char * argv[],char * envp[]) {
++                      FILE *f;
++                      #ifdef CAN_UNRANDOMIZE_SBRK
++                      #include "h/unrandomize.h"
++                      #endif
++                      if (!(f=fopen("conftest1","w"))) return -1;
++-                     fprintf(f,"%u",sbrk(0));
++-                     return 0;}],SBRK1=`cat conftest1`,SBRK1=0,SBRK1=0)
++-     if test "$SBRK1" = "0" ; then
++-             AC_MSG_RESULT(cannot trap sbrk)
++-             exit 1
++-     fi
++-     if test "$SBRK" = "$SBRK1" ; then
++-             AC_MSG_RESULT(yes)
++-     else
++-             AC_MSG_RESULT(no)
++-             echo "Cannot build with randomized sbrk. Your options:"
++-             echo " - upgrade to a kernel/libc that knows about personality(ADDR_NO_RANDOMIZE)"
++-             echo " - recompile your kernel with CONFIG_COMPAT_BRK (if it has that option)"
++-             echo " - run sysctl kernel.randomize_va_space=0 before using gcl"
++-             exit 1
++-     fi
+++                        fprintf(f,"%u",sbrk(0));
+++                        return 0;
+++                 }
+++             ]])],[SBRK1=`cat conftest1`])
+++    if test "$SBRK1" = "0" ; then
+++     AC_MSG_ERROR([cannot trap sbrk])
+++    fi
+++    if test "$SBRK" = "$SBRK1" ; then
+++     AC_MSG_RESULT([yes])
+++    else
+++     AC_MSG_RESULT([no])
+++     echo "Cannot build with randomized sbrk. Your options:"
+++     echo " - upgrade to a kernel/libc that knows about personality(ADDR_NO_RANDOMIZE)"
+++     echo " - recompile your kernel with CONFIG_COMPAT_BRK (if it has that option)"
+++     echo " - run sysctl kernel.randomize_va_space=0 before using gcl"
+++     AC_MSG_ERROR([exiting])
+++    fi
++ fi
++-
++-dnl AC_MSG_CHECKING(DBEGIN)
++-dnl AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-dnl   #include <stdio.h>
++-dnl   #include <stdlib.h>
++-dnl   #include <unistd.h>
++-dnl   void gprof_cleanup() {};
++-
++-dnl   int main(int argc,char **argv,char **envp) {
++-
++-dnl   void *b;
++-dnl   FILE *fp;
++-
++-dnl   #ifdef CAN_UNRANDOMIZE_SBRK
++-dnl   #include "h/unrandomize.h"
++-dnl   #endif
++-                     
++-dnl   fp = fopen("conftest1","w");
++-
++-dnl   #ifdef _WIN32
++-dnl   fprintf ( fp,"0x%lx", 0x3000000 );  /* Windows custom allocation from this point up */
++-dnl   #else
++-dnl   #if defined (__APPLE__) && defined (__MACH__)
++-dnl   fprintf(fp,"0x0");
++-dnl   #else
++-dnl   b = sbrk(0);
++-dnl   fprintf(fp,"0x%lx",((unsigned long) b) & ~(unsigned long)((1<<PAGEWIDTH)-1));
++-dnl   #endif
++-dnl   #endif
++-dnl   fclose(fp);
++-dnl   return 0;}]])],
++-dnl   [dbegin=`cat conftest1`],[dbegin=0])
++-
++-dnl AC_MSG_RESULT($dbegin)
++-
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl      #include <stdio.h>
++-dnl             #include <unistd.h>
++-dnl      ]],[[
++-dnl      FILE *fp=fopen("conftest1","w");
++-dnl      fprintf(fp,"%u",262144*( SIZEOF_LONG >>2)/(1<<($PAGEWIDTH-12)));
++-dnl      return 0;]])],[def_maxpage=`cat conftest1`],[def_maxpage=262144])
++-
++-dnl AC_ARG_ENABLE(maxpage,
++-dnl [ --enable-maxpage=XXXX  will compile in a page table of size XXX
++-dnl                          (eg '--enable-maxpage=64*1024' would produce
++-dnl                   64K pages allowing 256 MB if pages are 4K each)],
++-dnl ,enable_maxpage=$def_maxpage)
++-
++-
++ AC_MSG_CHECKING(CSTACK_ADDRESS)
++-AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     void *
++-     foo() {
++-           int i;
++-           return (void *)&i;
++-        }
++-
++-     int main(int argc,char **argv,char **envp) {
++-     void *v ;
++-     FILE *fp = fopen("conftest1","w");
++-     unsigned long i,j;
++-
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     j=1;
++-     j<<=$PAGEWIDTH;
++-     j<<=16;
++-     i=(unsigned long)&v;
++-     if (foo()>i) i-=j;
++-     j--;
++-     i+=j;
++-     i&=~j;
++-     fprintf(fp,"0x%lx",i-1);
++-     fclose(fp);
++-     return 0;
++-}]])],[cstack_address=`cat conftest1`],[cstack_address=0])
+++AC_RUN_IFELSE(
+++    [AC_LANG_SOURCE(
+++         [[
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             void *
+++             foo() {
+++                 int i;
+++                 return (void *)&i;
+++             }
+++             
+++             int
+++             main(int argc,char **argv,char **envp) {
+++                 void *v ;
+++                 FILE *fp = fopen("conftest1","w");
+++                 unsigned long i,j;
+++                 
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 j=1;
+++                 j<<=$PAGEWIDTH;
+++                 j<<=16;
+++                 i=(unsigned long)&v;
+++                 if (foo()>i) i-=j;
+++                    j--;
+++                    i+=j;
+++                    i&=~j;
+++                    fprintf(fp,"0x%lx",i-1);
+++                    fclose(fp);
+++                    return 0;
+++             }]])],
+++    [cstack_address=`cat conftest1`],[cstack_address=0])
++ AC_DEFINE_UNQUOTED(CSTACK_ADDRESS,$cstack_address,[starting C stack address])
++ AC_MSG_RESULT($cstack_address)
++ 
++ AC_MSG_CHECKING([cstack bits])
++-AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     void *
++-     foo() {
++-           int i;
++-           return (void *)&i;
++-        }
++-
++-     int main(int argc,char **argv,char **envp) {
++-     void *v ;
++-     FILE *fp = fopen("conftest1","w");
++-     unsigned long i,j;
++-
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     j=1;
++-     j<<=$PAGEWIDTH;
++-     j<<=16;
++-     i=(unsigned long)&v;
++-     if (foo()>i) i-=j;
++-     j--;
++-     i+=j;
++-     i&=~j;
++-     for (j=0;(i>>j)!=(i>>(sizeof(long)*8-1));j++);
++-     fprintf(fp,"%d",j);
++-     fclose(fp);
++-     return 0;
++-}]])],[cstack_bits=`cat conftest1`],[cstack_bits=0])
+++AC_RUN_IFELSE(
+++    [AC_LANG_SOURCE(
+++         [[
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             void *
+++             foo() {
+++                 int i;
+++                 return (void *)&i;
+++             }
+++             
+++             int
+++             main(int argc,char **argv,char **envp) {
+++                 void *v ;
+++                 FILE *fp = fopen("conftest1","w");
+++                 unsigned long i,j;
+++                 
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 j=1;
+++                 j<<=$PAGEWIDTH;
+++                 j<<=16;
+++                 i=(unsigned long)&v;
+++                 if (foo()>i) i-=j;
+++                    j--;
+++                    i+=j;
+++                    i&=~j;
+++                    for (j=0;(i>>j)!=(i>>(sizeof(long)*8-1));j++);
+++                        fprintf(fp,"%d",j);
+++                        fclose(fp);
+++                        return 0;
+++             }]])],
+++    [cstack_bits=`cat conftest1`],[cstack_bits=0])
++ AC_DEFINE_UNQUOTED(CSTACK_BITS,$cstack_bits,[log starting C stack address])
++ AC_MSG_RESULT($cstack_bits)
++ 
++ AC_MSG_CHECKING(NEG_CSTACK_ADDRESS)
++-AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     int main(int argc,char **argv,char **envp) {
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     return (long)$cstack_address<0 ? 0 : -1;
++-}]])],[AC_MSG_RESULT(yes)
++-     neg_cstack_address=1
++-     AC_DEFINE(NEG_CSTACK_ADDRESS,1,[C stack address is negative])],
++-      [AC_MSG_RESULT(no)
++-     neg_cstack_address=0])
++-
+++AC_RUN_IFELSE(
+++    [AC_LANG_SOURCE(
+++         [[
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             int
+++             main(int argc,char **argv,char **envp) {
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 return (long)$cstack_address<0 ? 0 : -1;
+++             }]])],
+++    [AC_MSG_RESULT(yes)
+++     neg_cstack_address=1
+++     AC_DEFINE(NEG_CSTACK_ADDRESS,1,[C stack address is negative])],
+++    [AC_MSG_RESULT(no)
+++     neg_cstack_address=0])
++ 
++ AC_MSG_CHECKING([finding CSTACK_ALIGNMENT])
++-AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     int main(int argc,char **argv,char **envp) {
++-     void *b,*c;
++-     FILE *fp = fopen("conftest1","w");
++-     long n;
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     b=alloca(sizeof(b));
++-     c=alloca(sizeof(c));
++-     n=b>c ? b-c : c-b;
++-     n=n>sizeof(c) ? n : 1;
++-     fprintf(fp,"%ld",n);
++-     fclose(fp);
++-     return 0;
++-}]])],[cstack_alignment=`cat conftest1`],[cstack_alignment=0])
+++AC_RUN_IFELSE(
+++    [AC_LANG_SOURCE(
+++         [[
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             int main(int argc,char **argv,char **envp) {
+++                 void *b,*c;
+++                 FILE *fp = fopen("conftest1","w");
+++                 long n;
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 b=alloca(sizeof(b));
+++                 c=alloca(sizeof(c));
+++                 n=b>c ? b-c : c-b;
+++                 n=n>sizeof(c) ? n : 1;
+++                 fprintf(fp,"%ld",n);
+++                 fclose(fp);
+++                 return 0;
+++             }]])],
+++    [cstack_alignment=`cat conftest1`],[cstack_alignment=0])
++ AC_DEFINE_UNQUOTED(CSTACK_ALIGNMENT,$cstack_alignment,[C stack alignment])
++ AC_MSG_RESULT($cstack_alignment)
++ 
++ AC_MSG_CHECKING(CSTACK_DIRECTION)
++-AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-     #include <stdio.h>
++-     #include <stdlib.h>
++-     void *
++-     foo(void) {
++-     int i;
++-     return (void *)&i;
++-     }
++-
++-     int main(int argc,char **argv,char **envp) {
++-     char *b;
++-     FILE *fp = fopen("conftest1","w");
++-     #ifdef CAN_UNRANDOMIZE_SBRK
++-     #include "h/unrandomize.h"
++-     #endif
++-     fprintf(fp,"%d",((long) &b) > ((long) foo()) ? -1 : 1);
++-     fclose(fp);
++-     return 0;
++-}]])],[cstack_direction=`cat conftest1`],[cstack_direction=0])
+++AC_RUN_IFELSE(
+++    [AC_LANG_SOURCE(
+++         [[
+++             #include <stdio.h>
+++             #include <stdlib.h>
+++             void *
+++             foo(void) {
+++                 int i;
+++                 return (void *)&i;
+++             }
+++             
+++             int
+++             main(int argc,char **argv,char **envp) {
+++                 char *b;
+++                 FILE *fp = fopen("conftest1","w");
+++                 #ifdef CAN_UNRANDOMIZE_SBRK
+++                 #include "h/unrandomize.h"
+++                 #endif
+++                 fprintf(fp,"%d",((long) &b) > ((long) foo()) ? -1 : 1);
+++                 fclose(fp);
+++                 return 0;
+++             }]])],
+++    [cstack_direction=`cat conftest1`],[cstack_direction=0])
++ AC_DEFINE_UNQUOTED(CSTACK_DIRECTION,$cstack_direction,[whether C stack grows up or down])
++ AC_MSG_RESULT($cstack_direction)
++ 
+++AC_ARG_ENABLE([immfix],[  --enable-immfix will enable an immediate fixnum table above the C stack])
++ 
++-dnl AC_MSG_CHECKING(for shared library/C stack ceiling to heap)
++-dnl if test "$use" = "mingw" ; then
++-dnl   heap_ceiling=2000000000
++-dnl else
++-dnl if test "$use" = "solaris-i386" ; then
++-dnl   heap_ceiling=0x0
++-dnl else
++-dnl if test "$enable_static" = "yes" ; then
++-dnl   heap_ceiling=0x0
++-dnl else
++-dnl if ! test -x `which ldd` && ! test -f /proc/self/maps ; then
++-dnl    heap_ceiling=0x0
++-dnl else
++-dnl if test -f /proc/self/maps ; then
++-dnl    heap_ceiling=0x`/bin/cat /proc/self/maps | grep "/lib.*/ld-" | cut -f1 -d- | head -1`
++-dnl else 
++-dnl if test "`which ldd`" = "" ; then 
++-dnl    heap_ceiling=0x0
++-dnl else
++-dnl #echo -e "#include <stdio.h>\n int main() {printf(\"foo\");return 0;}" >foo.c
++-dnl #$CC foo.c -o foo
++-dnl    AAWK=`which awk`
++-dnl # | grep -v ld-kfreebsd needed on some strange bsd amd64 boxes
++-dnl    heap_ceiling=`ldd $AAWK | tail -n 1 | $AWK '{print $NF}' | tr -d '()'`
++-dnl fi
++-dnl fi
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl  #include <stdio.h>
++-dnl  ]],[[
++-dnl  FILE *fp=fopen("conftest1","w");
++-dnl  unsigned long h=$heap_ceiling,d=$dbegin,c=$cstack_address;
++-dnl  h=h<d ? 0 : h;
++-dnl  h=c>d && c<h ? c : h;
++-dnl  fprintf(fp,"0x%lx",h);
++-dnl  return 0;]])],[heap_ceiling=`cat conftest1`],[AC_MSG_ERROR([failed])])
++-dnl fi
++-dnl fi
++-dnl fi
++-dnl fi
++-dnl AC_MSG_RESULT($heap_ceiling)
++-dnl AC_DEFINE_UNQUOTED(SHARED_LIB_HEAP_CEILING,$heap_ceiling,
++-dnl  [address at which shared lib placement terminates heap growth])
++-
++-dnl ## Don't lower heap start if C stack is below default dbegin, as we're
++-dnl # likely to get more heap this way.
++-dnl if test "$enable_static" = "yes" ; then 
++-dnl    echo "int main() {return !((unsigned long)$dbegin < (unsigned long)$cstack_address);}" >foo.c
++-dnl else
++-dnl    echo "int main() {return !($heap_ceiling && (unsigned long)$dbegin < (unsigned long)$cstack_address);}" >foo.c
++-dnl fi
++-dnl $CC foo.c -o foo
++-dnl if ./foo ; then
+++AC_ARG_ENABLE([fastimmfix],[  --enable-fastimmfix=XXXX will reject low immediate fixnums unless 2^XXX can be attained],,[enable_fastimmfix=64])
++ 
++-if test "$use" != "386-gnu" ; then #hurd can push .data below C stack, but sbrk(0) remains above, foiling unexec
++ 
++-   AC_MSG_CHECKING([finding default linker script])
++-   touch unixport/gcl.script
++-   echo "int main() {return 0;}" >foo.c
++-   $CC -Wl,--verbose foo.c -o foo 2>&1 | \
++-       $AWK '/\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=/ {i=1-i;next} {if (i) print}' >gcl.script
++-   rm -rf foo.c foo
++-
++-   if test "`cat gcl.script | wc -l`" != "0" ; then
++-      AC_MSG_RESULT(got it)
++-      AC_MSG_NOTICE([trying to adjust text start])
++-      cp gcl.script gcl.script.def
++-
++-      n=-1;
++-      k=0;
++-      lim=`$AWK 'END {printf("%d\n",m*8-2)}' m=$ac_cv_sizeof_long`;
++-      max=0;
++-      min=$lim;
++-      while test $n -lt $lim ; do
++-        j=`$AWK 'END {for (i=j=0;j<=n;j++) i=i ? i*2 : 1;printf("%x\n",3*i)}' n=$n </dev/null`
++-        cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[[0-9]]*","0x" j,$0);} {print}' j=$j >gcl.script
++-#        diff -u gcl.script.def gcl.script
++-        echo "int main() {return 0;}" >foo.c
++-        if ( $CC -Wl,-T gcl.script foo.c -o foo && ./foo ) >/dev/null 2>&1 ; then
++-         if test $n -lt $min ; then min=$n; fi; 
++-         if test $n -gt $max; then max=$n; fi; 
++-     elif test $max -gt 0 ; then
++-      break;
++-        fi;
++-        n=`$AWK 'END {print n+1}' n=$n </dev/null`
++-      done     
++-
++-      AC_MSG_NOTICE([min log text start $min])
++-      AC_MSG_NOTICE([max log text start $max])
++-
++-      if test $neg_cstack_address -eq 1 ; then #FIXME test this
++-              if test $cstack_bits -lt $max ; then
++-         max=$cstack_bits;
++-            AC_MSG_NOTICE([max log text start reduced to $max considering c stack address])
++-      fi     
++-      fi
++-
++-      j=-1;
++-      low_shft="";
++-      if test $min -le $max ; then
++-            if test $max -ge $enable_fastimmfix && test "$enable_immfix" = "yes" ; then
+++if test "$use" != "386-gnu" ; then #hurd can push .data below C stack, but sbrk(0) remains above, foiling unexec
+++    
+++    AC_MSG_CHECKING([finding default linker script])
+++    touch unixport/gcl.script
+++    echo "int main() {return 0;}" >foo.c
+++    $CC $TLDFLAGS -Wl,--verbose foo.c -o foo 2>&1 | \
+++     $AWK '/\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=/ {i=1-i;next} {if (i) print}' >gcl.script
+++    rm -rf foo.c foo
+++    
+++    if test "`cat gcl.script | wc -l`" != "0" ; then
+++     AC_MSG_RESULT(got it)
+++     AC_MSG_NOTICE([trying to adjust text start])
+++     cp gcl.script gcl.script.def
+++     
+++     n=-1;
+++     k=0;
+++     lim=`$AWK 'END {printf("%d\n",m*8-2)}' m=$ac_cv_sizeof_long`;
+++     max=0;
+++     min=$lim;
+++     while test $n -lt $lim ; do
+++            j=`$AWK 'END {for (i=j=0;j<=n;j++) i=i ? i*2 : 1;printf("%x\n",3*i)}' n=$n </dev/null`
+++            cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[[0-9]]*","0x" j,$0);} {print}' j=$j >gcl.script
+++         #        diff -u gcl.script.def gcl.script
+++            echo "int main() {return 0;}" >foo.c
+++            if ( $CC $TLDFLAGS -Wl,-T gcl.script foo.c -o foo && ./foo ) >/dev/null 2>&1 ; then
+++             if test $n -lt $min ; then min=$n; fi; 
+++             if test $n -gt $max; then max=$n; fi; 
+++         elif test $max -gt 0 ; then
+++             break;
+++            fi;
+++            n=`$AWK 'END {print n+1}' n=$n </dev/null`
+++     done      
+++     
+++     AC_MSG_NOTICE([min log text start $min])
+++     AC_MSG_NOTICE([max log text start $max])
+++     
+++     if test $neg_cstack_address -eq 1 ; then #FIXME test this
+++                 if test $cstack_bits -lt $max ; then
+++             max=$cstack_bits;
+++             AC_MSG_NOTICE([max log text start reduced to $max considering c stack address])
+++         fi  
+++     fi
+++     
+++     j=-1;
+++     low_shft="";
+++     if test $min -le $max ; then
+++            if test $max -ge $enable_fastimmfix && test "$enable_immfix" != "no" ; then
++              j=`$AWK 'END {for (i=j=0;j<=n;j++) i=i ? i*2 : 1;printf("%x\n",3*i)}' n=$max </dev/null`
++              low_shft=`$AWK 'END {print n+1}' n=$max </dev/null`;
++              AC_MSG_NOTICE([raising log text to $j for a $max bit wide low immfix table])
++@@ -1795,356 +1394,139 @@ if test "$use" != "386-gnu" ; then #hurd
++              j=`$AWK 'END {for (i=j=0;j<=n;j++) i=i ? i*2 : 1;printf("%x\n",3*i)}' n=$min </dev/null`
++              AC_MSG_NOTICE([lowering log text to $j to maximize data area])
++          fi
++-      fi
++-
++-      if test "$low_shft" != "" ; then
+++     fi
+++     
+++     if test "$low_shft" != "" ; then
++             AC_DEFINE_UNQUOTED(LOW_SHFT,$low_shft,[upper immediate fixnum bound])             
++             AC_DEFINE_UNQUOTED(OBJNULL,(object)0x$j,[lowest address non-object])              
++-      else                              
+++     else                               
++             AC_DEFINE_UNQUOTED(OBJNULL,NULL,[lowest address non-object])              
++-      fi                                          
++-
++-#      echo $j;
++-      AC_MSG_CHECKING([our linker script])
++-      if test "$j" -ne "-1" ; then
+++     fi                                           
+++     
+++     #      echo $j;
+++     AC_MSG_CHECKING([our linker script])
+++     if test "$j" -ne "-1" ; then
++             cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[[0-9]]*","0x" j,$0);} {print}' j=$j >gcl.script
++          AC_MSG_RESULT([done])
++          rm -f gcl.script.def
++          LDFLAGS="$LDFLAGS -Wl,-T gcl.script "
++          cp gcl.script unixport
++-      else
++-      AC_MSG_RESULT([none found or not needed])
++-      rm -f gcl.script gcl.script.def
++-      fi
++-      rm -rf foo.c foo
++-  else
++-      AC_MSG_RESULT([not found])
++-  fi 
++-
+++     else
+++         AC_MSG_RESULT([none found or not needed])
+++         rm -f gcl.script gcl.script.def
+++     fi
+++     rm -rf foo.c foo
+++    else
+++     AC_MSG_RESULT([not found])
+++    fi 
+++    
++ else
++- 
++-     AC_DEFINE_UNQUOTED(OBJNULL,NULL,[lowest address non-object])             
++-
+++    
+++    AC_DEFINE_UNQUOTED(OBJNULL,NULL,[lowest address non-object])              
+++    
++ fi
++ 
++-   dnl old_LDFLAGS="$LDFLAGS"
++-   dnl LDFLAGS="$LDFLAGS $TLDFLAGS"
++-   dnl AC_MSG_CHECKING([revised DBEGIN])
++-   dnl AC_RUN_IFELSE([AC_LANG_SOURCE([[
++-   dnl       #include <stdio.h>
++-   dnl       #include <stdlib.h>
++-   dnl       #include <unistd.h>
++-
++-   dnl       int main(int argc,char **argv,char **envp) {
++-
++-   dnl           void *b;
++-   dnl           FILE *fp;
++-
++-   dnl           #ifdef CAN_UNRANDOMIZE_SBRK
++-   dnl           #include "h/unrandomize.h"
++-   dnl           #endif
++-   dnl           fp = fopen("conftest1","w");
++-
++-   dnl           #ifdef _WIN32
++-   dnl           fprintf ( fp,"0x%lx", 0x1a000000 );  /* Windows custom allocation from this point up */
++-   dnl           #else
++-   dnl           #if defined (__APPLE__) && defined (__MACH__)
++-   dnl           fprintf(fp,"((unsigned long)get_dbegin())");
++-   dnl           #else
++-   dnl           b = sbrk(0);
++-   dnl           fprintf(fp,"0x%lx",((unsigned long) b) & ~(unsigned long)0xffffff);
++-   dnl           #endif
++-   dnl           #endif
++-   dnl           fclose(fp);
++-   dnl           return 0;}]])],[dbegin=`cat conftest1`],[dbegin=0])
++-   dnl AC_MSG_RESULT($dbegin)
++-   dnl LDFLAGS="$old_LDFLAGS"
++-dnl fi
++-dnl dnl AC_DEFINE_UNQUOTED(DBEGIN,$dbegin,[down-rounded beginning address of lisp data])
++-dnl rm -rf foo*
++-
++-dnl AC_MSG_CHECKING(for maxpage revision)
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl  #include <stdio.h>
++-dnl  ]],[[
++-dnl  char *b;
++-dnl  unsigned long i,j;
++-dnl  FILE *fp = fopen("conftest1","w");
++-dnl  j=((unsigned long)$enable_maxpage <<$PAGEWIDTH) + $dbegin;
++-dnl  j=$heap_ceiling && j>$heap_ceiling ? $heap_ceiling : j;
++-dnl  j-=$dbegin;
++-dnl  /*  for (i=1;i<<1 && i<=j;i<<=1); */
++-dnl  /*  if (i>j) i>>=1; */
++-dnl  i=j;
++-dnl  fprintf(fp,"%ld",i>>$PAGEWIDTH);
++-dnl  fclose(fp);
++-dnl  return 0;
++-dnl ]])],[tmp_maxpage=`cat conftest1`],[tmp_maxpage=0])
++-dnl if test "$tmp_maxpage" != "$enable_maxpage" ; then
++-dnl    enable_maxpage=$tmp_maxpage
++-dnl    AC_MSG_RESULT($enable_maxpage)
++-dnl else
++-dnl    AC_MSG_RESULT($enable_maxpage is OK)
++-dnl fi
++-dnl AC_DEFINE_UNQUOTED(MAXPAGE,$enable_maxpage,[maximum number of pages to be allocated])
++-
++-dnl AC_MSG_CHECKING(for C stack size floor from heap)
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl  #include <stdio.h>
++-dnl  ]],[[
++-dnl  char *b;
++-dnl  FILE *fp = fopen("conftest1","w");
++-dnl  unsigned long j,k;
++-
++-dnl  j=$cstack_address + $cstack_direction * $enable_cssize;
++-dnl  k=($dbegin + ((unsigned long)$enable_maxpage << $PAGEWIDTH));
++-dnl  j=abs(j-$cstack_address)!=$enable_cssize || (j<k && $dbegin < $cstack_address) ? k : j;
++-dnl  j-=$cstack_address;
++-dnl  j*=$cstack_direction;
++-dnl  fprintf(fp,"%lu",j);
++-dnl  fclose(fp);
++-dnl  return 0;
++-dnl ]])],[tmp_cssize=`cat conftest1`],[tmp_cssize=0])
++-dnl if test "$tmp_cssize" != "$enable_cssize" ; then
++-dnl    enable_cssize=$tmp_cssize;
++-dnl    AC_MSG_RESULT($enable_cssize)
++-dnl else
++-dnl    AC_MSG_RESULT($enable_cssize is OK)
++-dnl fi
++-
++-dnl AC_MSG_CHECKING(for C stack size limit from fixnum table)
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl  #include <stdio.h>
++-dnl  ]],[[
++-dnl  char *b;
++-dnl  FILE *fp = fopen("conftest1","w");
++-dnl  unsigned long j,k;
++-
++-dnl  j=$cstack_address + $cstack_direction * $enable_cssize;
++-dnl  if ($cstack_direction>0) {
++-dnl    k=$cstack_address + ((-(unsigned long)$cstack_address)>>1);
++-dnl    j=j<$cstack_address || j > k ? k : j;
++-dnl    j=$cstack_address < $dbegin && j > $dbegin ? $dbegin : j;
++-dnl  }
++-dnl  j-=$cstack_address;
++-dnl  j*=$cstack_direction;
++-dnl  fprintf(fp,"%lu",j);
++-dnl  fclose(fp);
++-dnl  return 0;
++-dnl ]])],[tmp_cssize=`cat conftest1`],[tmp_cssize=0])
++-dnl if test "$tmp_cssize" != "$enable_cssize" ; then
++-dnl    enable_cssize=$tmp_cssize;
++-dnl    AC_MSG_RESULT($enable_cssize)
++-dnl else
++-dnl    AC_MSG_RESULT($enable_cssize is OK)
++-dnl fi
++-
++-dnl AC_MSG_CHECKING(for C stack size limit from address wrap)
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl  #include <stdio.h>
++-dnl  ]],[[
++-dnl  char *b;
++-dnl  FILE *fp = fopen("conftest1","w");
++-dnl  unsigned long j,k;
++-
++-dnl  j=-$cstack_address * $cstack_direction;
++-dnl  j=j>$enable_cssize ? $enable_cssize : j;
++-dnl  fprintf(fp,"%lu",j);
++-dnl  fclose(fp);
++-dnl  return 0;
++-dnl ]])],[tmp_cssize=`cat conftest1`],[tmp_cssize=0])
++-dnl if test "$tmp_cssize" != "$enable_cssize" ; then
++-dnl    enable_cssize=$tmp_cssize;
++-dnl    AC_MSG_RESULT($enable_cssize)
++-dnl else
++-dnl    AC_MSG_RESULT($enable_cssize is OK)
++-dnl fi
++-dnl AC_DEFINE_UNQUOTED(CSSIZE,$enable_cssize,[maximum C stack size])
++-
++-dnl AC_MSG_CHECKING(for fast NULL_OR_ON_CSTACK macro)
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl  #include <stdio.h>
++-dnl  ]],[[
++-dnl  return ((long)$dbegin>=0 &&
++-dnl         ((long)$dbegin+(long)($enable_maxpage<<$PAGEWIDTH)) >=0 &&
++-dnl         ((long)$cstack_address<0)) ? 0 : 1;
++-dnl ]])],[tmp_fnocm=yes],[tmp_fnocm=no])
++-dnl if test "$tmp_fnocm" = "yes" ; then
++-dnl    AC_MSG_RESULT(yes)
++-dnl    AC_DEFINE(USE_FAST_NULL_OR_ON_CSTACK_MACRO,1,[whether one instruction heap address check can be used])
++-dnl else
++-dnl    AC_MSG_RESULT(no)
++-dnl fi
++-
++ mem_top=0
++ mem_range=0
++ AC_MSG_CHECKING(mem top)
++-AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-     #include <stdio.h>
++-     ]],[[
++-     void *v;
++-     unsigned long i,j,k,l,m;
++-     FILE *fp = fopen("conftest1","w");
++-
++-     for (i=2,k=1;i;k=i,i<<=1);
++-     l=$cstack_address;
++-     l=$cstack_direction==1 ? (l<k ? k-1 : -1) : l;
++-     for (i=j=k;j && i<l;j>>=1,i|=j);
++-     if (j<(k>>3)) i=0;
++-     j=1;
++-     j<<=$PAGEWIDTH;
++-     j<<=4;
++-     j--;
++-     i+=j;
++-     i&=~j;
++-     fprintf(fp,"0x%lx",i);
++-     fclose(fp);
++-     return 0;
++-]])],[mem_top=`cat conftest1`],[mem_top="0x0"])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++         ]],
+++         [[
+++             void *v;
+++             unsigned long i,j,k,l,m;
+++             FILE *fp = fopen("conftest1","w");
+++             
+++             for (i=2,k=1;i;k=i,i<<=1);
+++                 l=$cstack_address;
+++                 l=$cstack_direction==1 ? (l<k ? k-1 : -1) : l;
+++                 for (i=j=k;j && i<l;j>>=1,i|=j);
+++                     if (j<(k>>3)) i=0;
+++                        j=1;
+++                        j<<=$PAGEWIDTH;
+++                        j<<=4;
+++                        j--;
+++                        i+=j;
+++                        i&=~j;
+++                        fprintf(fp,"0x%lx",i);
+++                        fclose(fp);
+++                        return 0;
+++         ]])],
+++    [mem_top=`cat conftest1`],[mem_top="0x0"])
++ AC_MSG_RESULT($mem_top)
+++
++ if test "$mem_top" != "0x0" ; then
++-   AC_MSG_CHECKING(finding upper mem half range)
++-   AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-   #include <stdio.h>
++-   ]],[[
++-   unsigned long j;
++-   FILE *fp = fopen("conftest1","w");
++-
++-   for (j=1;j && !(j& $mem_top);j<<=1);
++-   fprintf(fp,"0x%lx",j>>1);
++-   fclose(fp);
++-   return 0;
++-   ]])],[mem_range=`cat conftest1`],[mem_range="0x0"])
++-   AC_MSG_RESULT($mem_range)
++-   if test "$mem_range" != "0x0" ; then 
+++    AC_MSG_CHECKING(finding upper mem half range)
+++    AC_RUN_IFELSE(
+++     [AC_LANG_PROGRAM(
+++             [[
+++                 #include <stdio.h>
+++             ]],
+++             [[
+++                 unsigned long j;
+++                 FILE *fp = fopen("conftest1","w");
+++                 
+++                 for (j=1;j && !(j& $mem_top);j<<=1);
+++                     fprintf(fp,"0x%lx",j>>1);
+++                     fclose(fp);
+++                     return 0;
+++             ]])],
+++     [mem_range=`cat conftest1`],[mem_range="0x0"])
+++    AC_MSG_RESULT($mem_range)
+++    if test "$mem_range" != "0x0" ; then 
++      AC_DEFINE_UNQUOTED(MEM_TOP,$mem_top,[beginning address for immediate fixnum range])
++         AC_DEFINE_UNQUOTED(MEM_RANGE,$mem_range,[size of immediate fixnum address space])
++-   fi
+++    fi
++ fi
++ 
++-if test "$enable_immfix" = "yes" ; then
++-  if test "$mem_top" != "0x0" ; then
++-     if test "$mem_range" != "0x0" ; then 
++-     AC_DEFINE_UNQUOTED(IM_FIX_BASE,$mem_top,[beginning address for immediate fixnum range])
++-        AC_DEFINE_UNQUOTED(IM_FIX_LIM,$mem_range,[size of immediate fixnum address space])
++-     fi
++-  fi
++-fi
++-
++-
++-dnl AC_MSG_CHECKING(for word order)
++-dnl AC_TRY_RUN([int main () {
++-dnl   /* Are we little or big endian?  Adapted from Harbison&Steele.  */
++-dnl   union
++-dnl   {
++-dnl     double d;
++-dnl     int l[sizeof(double)/sizeof(int)];
++-dnl   } u;
++-dnl   u.d = 1.0;
++-dnl   return u.l[sizeof(double)/sizeof(int)-1] ? 0 : 1;
++-dnl }],AC_MSG_RESULT(little) 
++-dnl    AC_DEFINE(LITTLE_END),
++-dnl    AC_MSG_RESULT(big),
++-dnl    AC_MSG_RESULT([WARNING: ASSUMING LITTLE ENDIAN FOR CROSS COMPILING !!!]
++-dnl    AC_DEFINE(LITTLE_END)))
++-dnl AC_SUBST(LITTLE_END)
++-
++-
++-# On systems with execshield, brk is randomized.  We need to catch
++-# this and restore the traditional behavior here
++-
++-dnl old_LDFLAGS="$LDFLAGS"
++-dnl LDFLAGS="$TLDFLAGS"
++-dnl AC_MSG_CHECKING("finding DBEGIN")
++-dnl AC_TRY_RUN([#include <stdio.h>
++-dnl             #include <stdlib.h>
++-
++-dnl void gprof_cleanup() {};
++-dnl int
++-dnl main(int argc,char * argv[],char *envp[])
++-dnl {
++-dnl   char *b,*b1;
++-dnl   FILE *fp;
++-
++-dnl #ifdef CAN_UNRANDOMIZE_SBRK
++-dnl #include "h/unrandomize.h"
++-dnl #endif
++-dnl   b = (void *) malloc(1000);
++-dnl   fp = fopen("conftest1","w");
++-
++-dnl #ifdef _WIN32
++-dnl   fprintf(fp,"_dbegin");
++-dnl #else
++-dnl #if defined (__APPLE__) && defined (__MACH__)
++-dnl   fprintf(fp,"mach_mapstart");
++-dnl #else
++-dnl   b1=((unsigned long) b) & ~(unsigned long)0xffffff;b=(void *)b1<(void *)&b1 && (void *)b>(void *)&b ? ((unsigned long) b) & ~(unsigned long)((1<<PAGEWIDTH)-1) : b1;
++-dnl   fprintf(fp,"0x%lx",b);
++-dnl #endif
++-dnl #endif
++-dnl   fclose(fp);
++-dnl   return 0;
++-dnl }],dbegin=`cat conftest1`,dbegin=0,dbegin=0)
++-dnl AC_DEFINE_UNQUOTED(DBEGIN,$dbegin /* where data begins */)
++-dnl AC_MSG_RESULT(got $dbegin)
++-dnl LDFLAGS="$old_LDFLAGS"
++-
++-
++-dnl AC_MSG_CHECKING("finding CSTACK_ADDRESS")
++-dnl AC_TRY_RUN([#include <stdio.h>
++-dnl main()
++-dnl {
++-dnl   char *b ;
++-dnl   FILE *fp = fopen("conftest1","w");
++-dnl   fprintf(fp,"%ld",((long) &b));
++-dnl   fclose(fp);
++-dnl   return 0;
++-dnl }],cstack_address=`cat conftest1`,cstack_address=0,cstack_address=0)
++-dnl AC_DEFINE_UNQUOTED(CSTACK_ADDRESS,$cstack_address \
++-dnl )
++-dnl AC_MSG_RESULT(got $cstack_address)
++-
++-
+++if test "$enable_immfix" != "no" ; then
+++    if test "$mem_top" != "0x0" ; then
+++     if test "$mem_range" != "0x0" ; then 
+++         AC_DEFINE_UNQUOTED(IM_FIX_BASE,$mem_top,[beginning address for immediate fixnum range])
+++            AC_DEFINE_UNQUOTED(IM_FIX_LIM,$mem_range,[size of immediate fixnum address space])
+++     fi
+++    fi
+++fi
++ 
++ AC_MSG_CHECKING([sizeof long long int])
++-AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-     #include <stdio.h>
++-     ]],[[
++-     if (sizeof(long long int) == 2*sizeof(long)) return 0;
++-     return 1;
++-]])],[AC_DEFINE(HAVE_LONG_LONG,1,[long long is available]) AC_MSG_RESULT(yes)],
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++         ]],
+++         [[
+++             if (sizeof(long long int) == 2*sizeof(long)) return 0;
+++                return 1;
+++         ]])],
+++    [AC_DEFINE(HAVE_LONG_LONG,1,[long long is available]) AC_MSG_RESULT(yes)],
++     [AC_MSG_RESULT(no)])
++ 
++ AC_SUBST(HAVE_LONG_LONG)
++ 
++-
++-AC_CHECK_HEADERS(dirent.h,
++-     AC_MSG_CHECKING([for d_type])
++-     AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-             #include <dirent.h>
++-                     ]],[[
++-             struct dirent d;
++-             return d.d_type=0;
++-             ]])],
++-             [AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_D_TYPE,1,[have struct dirent d_type field])],
++-             AC_MSG_RESULT([no]),AC_MSG_RESULT([no])))
++-
++-# readline
++-AC_ARG_ENABLE(readline,
++-     [--enable-readline    enables command line completion via the readline library ],,
++-     enable_readline="yes")
+++AC_CHECK_HEADERS([dirent.h],
+++              AC_MSG_CHECKING([for d_type])
+++              AC_RUN_IFELSE(
+++                  [AC_LANG_PROGRAM(
+++                          [[
+++                              #include <dirent.h>
+++                          ]],
+++                          [[
+++                              struct dirent d;
+++                              return d.d_type=0;
+++                          ]])],
+++                  [AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_D_TYPE,1,[have struct dirent d_type field])],
+++                  AC_MSG_RESULT([no]),AC_MSG_RESULT([no])))
++ 
++ # ansi lisp
++-AC_ARG_ENABLE(ansi,[--enable-ansi builds a large gcl aiming for ansi compliance, 
++-                 --disable-ansi builds the smaller traditional CLtL1 image],,enable_ansi="yes")
++-
++-if test "$enable_ansi" = "yes" ; then
++-     SYSTEM=ansi_gcl
++-     CLSTANDARD=ANSI
++-else
++-     SYSTEM=gcl
++-     CLSTANDARD=CLtL1
++-fi
+++SYSTEM=ansi_gcl
+++CLSTANDARD=ANSI
+++AC_ARG_ENABLE([ansi],[  --enable-ansi builds a large gcl aiming for ansi compliance],
+++           [if test "$enable_ansi" = "no" ; then
+++                SYSTEM=gcl
+++                CLSTANDARD=CLtL1
+++            fi])
++ 
++ FLISP="saved_$SYSTEM"
++ AC_SUBST(FLISP)
++@@ -2192,51 +1574,44 @@ AC_EGREP_HEADER([gettimeofday],
++                 [sys/time.h],
++              [AC_MSG_RESULT([present])],
++              [AC_MSG_RESULT([missing])
++-             AC_DEFINE(GETTOD_NOT_DECLARED,1,[No gettimeofday call -- fixme])])
+++              AC_DEFINE(GETTOD_NOT_DECLARED,1,[No gettimeofday call -- fixme])])
++ 
++ 
++ AC_CHECK_LIB(m,sin,LIBS="${LIBS} -lm",true)
++ AC_CHECK_LIB(mingwex,main,LIBS="${LIBS} -lmingwex",true)
++ 
++ AC_MSG_CHECKING([for buggy maximum sscanf length])
++-AC_RUN_IFELSE([
++-     AC_LANG_PROGRAM([[
++-            #include <stdio.h>
++-          ]],[[
++-            char *s= "2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416928368190255151086574637721112523897844250569536967707854499699679468644549059879316368892300987931277361782154249992295763514822082698951936680331825288693984964651058209392398294887933203625094431173012381970684161404";
++-         int n, m;
++-         double f;
++-         char *endptr;
++-            FILE *fp=fopen("conftest1","w");
++-
++-         n=sscanf(s,"%lf%n",&f,&m);
++-         fprintf(fp,"%d",m);
++-         fclose(fp);
++-         return s[m];
++-       ]])],
++-     [AC_MSG_RESULT([none])],
++-     [buggy_maximum_sscanf_length=`cat conftest1`
++-         AC_MSG_RESULT([$buggy_maximum_sscanf_length])
++-      AC_DEFINE_UNQUOTED(BUGGY_MAXIMUM_SSCANF_LENGTH,$buggy_maximum_sscanf_length,[sscanf terminates prematurely (Windows XP)])])
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++         ]],
+++         [[
+++             char *s= "2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416928368190255151086574637721112523897844250569536967707854499699679468644549059879316368892300987931277361782154249992295763514822082698951936680331825288693984964651058209392398294887933203625094431173012381970684161404";
+++             int n, m;
+++             double f;
+++             char *endptr;
+++             FILE *fp=fopen("conftest1","w");
+++             
+++             n=sscanf(s,"%lf%n",&f,&m);
+++             fprintf(fp,"%d",m);
+++             fclose(fp);
+++             return s[m];
+++         ]])],
+++    [AC_MSG_RESULT([none])],
+++    [buggy_maximum_sscanf_length=`cat conftest1`
+++     AC_MSG_RESULT([$buggy_maximum_sscanf_length])
+++     AC_DEFINE_UNQUOTED(BUGGY_MAXIMUM_SSCANF_LENGTH,$buggy_maximum_sscanf_length,[sscanf terminates prematurely (Windows XP)])])
++ 
++ 
++ EXTRA_LOBJS=
++-if test "$try_japi" = "yes" ; then
++-   AC_CHECK_HEADERS(japi.h,[AC_DEFINE(HAVE_JAPI_H)
++-                              EXTRA_LOBJS="${EXTRA_LOBJS} gcl_japi.o"
++-                              LIBS="${LIBS} -ljapi -lwsock32"] )
++-fi
++-dnl if test "$use" = "mingw" ; then
++-dnl  if test "$try_xdr" = "yes" ; then
++-dnl    AC_CHECK_HEADERS(rpc/rpc.h,[AC_DEFINE(HAVE_XDR)
++-dnl                           LIBS="${LIBS} -loncrpc"] )
++-dnl  fi
++-dnl else
++-dnl  if test "$try_xdr" = "yes" ; then
++-dnl    AC_CHECK_HEADERS(rpc/rpc.h,[AC_DEFINE(HAVE_XDR)
++-dnl                           LIBS="${LIBS} -lrpc"] )
++-dnl  fi
++-dnl fi
+++AC_ARG_ENABLE([japi],[  --enable-japi=yes will compile in support for the JAPI graphical interface if present on your system],
+++           [if test "$enable_japi" = "yes" ; then
+++                AC_CHECK_HEADERS([japi.h],
+++                                 [AC_DEFINE(HAVE_JAPI_H)
+++                                  EXTRA_LOBJS="${EXTRA_LOBJS} gcl_japi.o"
+++                                  LIBS="${LIBS} -ljapi -lwsock32"])
+++            fi])
++ 
++ # Should really find a way to check for prototypes, but this 
++ # basically works for now.  CM
++@@ -2260,76 +1635,53 @@ AC_CHECK_HEADERS(float.h,AC_DEFINE(HAVE_
++ # test makes sense.  CM
++ #
++ AC_MSG_CHECKING([for isnormal])
++-AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-            #define _GNU_SOURCE
++-         #include <math.h>
++-         ]],[[
++-         float f;
++-         return isnormal(f) || !isnormal(f) ? 0 : 1;
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #define _GNU_SOURCE
+++             #include <math.h>
+++         ]],
+++         [[
+++             float f;
+++             return isnormal(f) || !isnormal(f) ? 0 : 1;
++          ]])],
++-             [AC_DEFINE(HAVE_ISNORMAL,1,[Have isnormal function]) AC_MSG_RESULT(yes)],
++-             [AC_MSG_CHECKING([for fpclass in ieeefp.h])
++-              AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-                     #include <ieeefp.h>
++-                     ]],[[
++-                     float f;
++-                     return fpclass(f)>=FP_NZERO || fpclass(f)<FP_NZERO ? 0 : 1;
++-                     ]])],[AC_DEFINE(HAVE_IEEEFP,1,[Have ieeefp fpclass function]) AC_MSG_RESULT(yes)],
++-                          [AC_MSG_RESULT(no)])])
+++    [AC_DEFINE(HAVE_ISNORMAL,1,[Have isnormal function]) AC_MSG_RESULT(yes)],
+++    [AC_MSG_CHECKING([for fpclass of ieeefp.h])
+++     AC_RUN_IFELSE(
+++      [AC_LANG_PROGRAM(
+++              [[
+++                  #include <ieeefp.h>
+++              ]],
+++              [[
+++                  float f;
+++                  return fpclass(f)>=FP_NZERO || fpclass(f)<FP_NZERO ? 0 : 1;
+++              ]])],[AC_DEFINE(HAVE_IEEEFP,1,[Have ieeefp fpclass function]) AC_MSG_RESULT(yes)],
+++      [AC_MSG_RESULT(no)])])
++ 
++ AC_MSG_CHECKING([for isfinite])
++-AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-        #define _GNU_SOURCE
++-     #include <math.h>
++-     ]],[[
++-     float f;
++-     return isfinite(f) || !isfinite(f) ? 0 : 1;
++-     ]])],[AC_DEFINE(HAVE_ISFINITE,1,[Have isfinite function]) AC_MSG_RESULT(yes)],
++-          [AC_MSG_CHECKING([for finite()])
++-           AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+++AC_RUN_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #define _GNU_SOURCE
++              #include <math.h>
++-             #include <ieeefp.h>
++-             ]],[[
+++         ]],
+++         [[
++              float f;
++-             return finite(f) || !finite(f) ? 0 : 1;
++-             ]])],[AC_DEFINE(HAVE_FINITE,1,[Have finite function]) AC_MSG_RESULT(yes)],
++-                  [AC_MSG_ERROR(no)])])
++-
++-dnl AC_MSG_CHECKING([for INFINITY])
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl         #define _GNU_SOURCE
++-dnl  #include <math.h>
++-dnl  ]],[[
++-dnl  double d=INFINITY;
++-dnl  return 0;
++-dnl  ]])],[AC_MSG_RESULT(yes)],
++-dnl      [AC_MSG_CHECKING([for builtin_inf()])
++-dnl      AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl          #include <math.h>
++-dnl          #include <ieeefp.h>
++-dnl          ]],[[
++-dnl          double d=__builtin_inf();
++-dnl          return 0;
++-dnl          ]])],[AC_DEFINE_UNQUOTED(INFINITY,__builtin_inf(),[Have builtin_inf]) AC_MSG_RESULT(yes)],
++-dnl              [AC_MSG_ERROR(no)])])
++-
++-dnl AC_MSG_CHECKING([for NAN])
++-dnl AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl         #define _GNU_SOURCE
++-dnl  #include <math.h>
++-dnl  ]],[[
++-dnl  double d=NAN;
++-dnl  return 0;
++-dnl  ]])],[AC_MSG_RESULT(yes)],
++-dnl      [AC_MSG_CHECKING([for builtin_nan()])
++-dnl      AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++-dnl          #include <math.h>
++-dnl          #include <ieeefp.h>
++-dnl          ]],[[
++-dnl          double d=__builtin_nan("0x0");
++-dnl          return 0;
++-dnl          ]])],[AC_DEFINE_UNQUOTED(NAN,__builtin_nan("0x0"),[Have builtin_nan]) AC_MSG_RESULT(yes)],
++-dnl              [AC_MSG_ERROR(no)])])
+++             return isfinite(f) || !isfinite(f) ? 0 : 1;
+++         ]])],[AC_DEFINE(HAVE_ISFINITE,1,[Have isfinite function]) AC_MSG_RESULT(yes)],
+++    [AC_MSG_CHECKING([for finite()])
+++     AC_RUN_IFELSE(
+++      [AC_LANG_PROGRAM(
+++              [[
+++                  #include <math.h>
+++                  #include <ieeefp.h>
+++              ]],
+++              [[
+++                  float f;
+++                  return finite(f) || !finite(f) ? 0 : 1;
+++              ]])],
+++      [AC_DEFINE(HAVE_FINITE,1,[Have finite function]) AC_MSG_RESULT(yes)],
+++      [AC_MSG_ERROR(no)])])
++ 
++ #--------------------------------------------------------------------
++ #    Check for the existence of the -lsocket and -lnsl libraries.
++@@ -2363,69 +1715,78 @@ if test "$tcl_checkBoth" = 1; then
++ fi
++ AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, main, [TLIBS="$TLIBS -lnsl"]))
++ 
++-RL_OBJS=""
++-RL_LIB=""
++-if test "$enable_readline" = "yes" ; then
++-     AC_CHECK_HEADERS(readline/readline.h,
++-             AC_CHECK_LIB(readline,rl_initialize,
++-                     AC_DEFINE(HAVE_READLINE,1,[have readline library]) 
++-                     TLIBS="$TLIBS -lreadline" #some machines don't link this, e.g. Slackware
++-                     RL_OBJS=gcl_readline.o
++-# Readline support now initialized automatically when compiled in, this lisp
++-# object no longer needed -- 20040102 CM
++-#                    RL_LIB=lsp/gcl_readline.o
++-                     ))
++-
++-# These tests discover differences between readline 4.1 and 4.3
++-     AC_CHECK_LIB(readline,rl_completion_matches,
++-                     AC_DEFINE(HAVE_DECL_RL_COMPLETION_MATCHES,1,[have readline completion matches])
++-                     AC_DEFINE(HAVE_RL_COMPENTRY_FUNC_T,1,[have readline completion matches]),,)
+++# readline
+++AC_ARG_ENABLE(readline,[  --enable-readline    enables command line completion via the readline library ])
+++
+++if test "$use" = "mingw" ; then
+++    enable_readline=no
+++fi
+++
+++if test "$enable_readline" != "no" ; then
+++    AC_CHECK_HEADERS([readline/readline.h],
+++                  AC_CHECK_LIB([readline],[rl_initialize],
+++                               [AC_DEFINE(HAVE_READLINE,1,[have readline library]) 
+++                                TLIBS="$TLIBS -lreadline" #some machines don't link this, e.g. Slackware
+++                                RL_OBJS=gcl_readline.o]))
+++    
+++    # These tests discover differences between readline 4.1 and 4.3
+++    AC_CHECK_LIB([readline],[rl_completion_matches],
+++              [AC_DEFINE(HAVE_DECL_RL_COMPLETION_MATCHES,1,[have readline completion matches])
+++               AC_DEFINE(HAVE_RL_COMPENTRY_FUNC_T,1,[have readline completion matches])])
++ fi
++ 
++ AC_SUBST(RL_OBJS)
++ AC_SUBST(RL_LIB)
++ 
++-AC_MSG_CHECKING(For network code for nsocket.c)
++-AC_TRY_LINK([
++-#include <sys/time.h>
++-#include <sys/types.h>
++-#include <unistd.h>
++-
++-#include <errno.h>
++-#include <fcntl.h>
++-#include <stdio.h>
++-
++-/************* for the sockets ******************/ 
++-#include <sys/socket.h>              /* struct sockaddr, SOCK_STREAM, ... */
++-#ifndef NO_UNAME
++-#   include <sys/utsname.h>  /* uname system call. */
++-#endif
++-#include <netinet/in.h>              /* struct in_addr, struct sockaddr_in */
++-#include <arpa/inet.h>               /* inet_ntoa() */
++-#include <netdb.h>           /* gethostbyname() */
++-],[ connect(0,(struct sockaddr *)0,0);
++-    gethostbyname("jil");
++-    socket(AF_INET, SOCK_STREAM, 0);
++-     ],
++-[AC_DEFINE(HAVE_NSOCKET,1,[can use nsocket library])
++- AC_MSG_RESULT(yes)],
++-AC_MSG_RESULT(no))
++-
++-
++-AC_MSG_CHECKING(check for listen using fcntl)
++-AC_TRY_COMPILE([#include <stdio.h>
++-#include <fcntl.h>
++-],
++-[FILE *fp=fopen("configure.in","r");
++-  int orig;
++-  orig = fcntl(fileno(fp), F_GETFL);
++-  if (! (orig & O_NONBLOCK )) return 0;
++-],
++-[AC_DEFINE(LISTEN_USE_FCNTL,1,[can use fcntl for listen function])
++- AC_MSG_RESULT(yes)],
++-AC_MSG_RESULT(no))
++-
+++# sockets
++ 
+++AC_MSG_CHECKING([For network code for nsocket.c])
+++AC_LINK_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <sys/time.h>
+++             #include <sys/types.h>
+++             #include <unistd.h>
+++             
+++             #include <errno.h>
+++             #include <fcntl.h>
+++             #include <stdio.h>
+++             
+++             /************* for the sockets ******************/ 
+++             #include <sys/socket.h>         /* struct sockaddr, SOCK_STREAM, ... */
+++             #ifndef NO_UNAME
+++             #   include <sys/utsname.h>     /* uname system call. */
+++             #endif
+++             #include <netinet/in.h>         /* struct in_addr, struct sockaddr_in */
+++             #include <arpa/inet.h>          /* inet_ntoa() */
+++             #include <netdb.h>              /* gethostbyname() */
+++         ]],
+++         [[
+++             connect(0,(struct sockaddr *)0,0);
+++             gethostbyname("jil");
+++             socket(AF_INET, SOCK_STREAM, 0);
+++         ]])],
+++    [AC_DEFINE(HAVE_NSOCKET,1,[can use nsocket library])
+++     AC_MSG_RESULT([yes])],
+++    [AC_MSG_RESULT([no])])
+++
+++
+++AC_MSG_CHECKING([check for listen using fcntl])
+++AC_COMPILE_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <stdio.h>
+++             #include <fcntl.h>
+++         ]],
+++         [[
+++             FILE *fp=fopen("configure.in","r");
+++             int orig;
+++             orig = fcntl(fileno(fp), F_GETFL);
+++             if (! (orig & O_NONBLOCK )) return 0;
+++         ]])],
+++    [AC_DEFINE(LISTEN_USE_FCNTL,1,[can use fcntl for listen function])
+++     AC_MSG_RESULT([yes])],
+++    [AC_MSG_RESULT([no])])
++ 
++ 
++ AC_CHECK_FUNC(profil, ,[AC_DEFINE(NO_PROFILE,1,[no profil system call])])
++@@ -2433,29 +1794,18 @@ AC_SUBST(NO_PROFILE)
++ AC_CHECK_FUNC(setenv,[AC_DEFINE(HAVE_SETENV,1,[have setenv call])],no_setenv=1 )
++ AC_SUBST(HAVE_SETENV)
++ if test "$no_setenv" = "1" ; then
++-AC_CHECK_FUNC(putenv,[AC_DEFINE(HAVE_PUTENV,1,[have putenv call])],)
++-AC_SUBST(HAVE_PUTENV)
+++    AC_CHECK_FUNC(putenv,[AC_DEFINE(HAVE_PUTENV,1,[have putenv call])],)
+++    AC_SUBST(HAVE_PUTENV)
++ fi
++ 
++ AC_CHECK_FUNC(_cleanup, [AC_DEFINE(USE_CLEANUP,1,[have _cleanup function])],)
++ AC_SUBST(USE_CLEANUP)
++ gcl_ok=no
++ 
++-dnl AC_HEADER_EGREP(LITTLE_ENDIAN, ctype.h, gcl_ok=yes, gcl_ok=noo)
++-dnl if test $gcl_ok = yes ; then
++-dnl AC_DEFINE(ENDIAN_ALREADY_DEFINED)
++-dnl fi
++-
++-dnl AC_SUBST(ENDIAN_ALREADY_DEFINED)
++-
++-
++-
++-
++-# if test "x$enable_machine" = "x" ; then
++ AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
++ 
++ case $system in
++-       OSF*)
+++    OSF*)
++      AC_DEFINE(USE_FIONBIO,1,[use fionbio for non-blocking io])
++      AC_MSG_RESULT(FIONBIO)
++      ;;
++@@ -2474,103 +1824,85 @@ esac
++ 
++ 
++ AC_MSG_CHECKING(check for SV_ONSTACK)
++-AC_TRY_COMPILE([#include <signal.h>
++-int joe=SV_ONSTACK;
++-],
++-[],
++-[AC_DEFINE(HAVE_SV_ONSTACK,1,[have sv_onstack])
++- AC_SUBST(HAVE_SV_ONSTACK)
++- AC_MSG_RESULT(yes)],
++-AC_MSG_RESULT(no))
+++AC_COMPILE_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <signal.h>
+++             int joe=SV_ONSTACK;
+++         ]],
+++         [[]])],
+++    [AC_DEFINE(HAVE_SV_ONSTACK,1,[have sv_onstack])
+++     AC_SUBST(HAVE_SV_ONSTACK)
+++     AC_MSG_RESULT([yes])],
+++    [AC_MSG_RESULT([no])])
++ 
++ AC_MSG_CHECKING(check for SIGSYS)
++-AC_TRY_COMPILE([#include <signal.h>
++-int joe=SIGSYS;
++-],
++-[],
++-[AC_DEFINE(HAVE_SIGSYS,1,[have SIGSYS signal])
++- AC_SUBST(HAVE_SIGSYS)
++- AC_MSG_RESULT(yes)],
++-AC_MSG_RESULT(no))
+++AC_COMPILE_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <signal.h>
+++             int joe=SIGSYS;
+++         ]],[[]])],
+++    [AC_DEFINE(HAVE_SIGSYS,1,[have SIGSYS signal])
+++     AC_SUBST(HAVE_SIGSYS)
+++     AC_MSG_RESULT([yes])],
+++    [AC_MSG_RESULT([no])])
++ 
++ 
++ AC_MSG_CHECKING(check for SIGEMT)
++-AC_TRY_COMPILE([#include <signal.h>
++-int joe=SIGEMT;
++-],
++-[],
++-[AC_DEFINE(HAVE_SIGEMT,1,[have SIGEMT signal])
++- AC_SUBST(HAVE_SIGEMT)
++- AC_MSG_RESULT(yes)],
++-AC_MSG_RESULT(no))
+++AC_COMPILE_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <signal.h>
+++             int joe=SIGEMT;
+++         ]],[[]])],
+++    [AC_DEFINE(HAVE_SIGEMT,1,[have SIGEMT signal])
+++     AC_SUBST(HAVE_SIGEMT)
+++     AC_MSG_RESULT([yes])],
+++    [AC_MSG_RESULT([no])])
++ 
++ AC_CHECK_FUNCS(sigaltstack)
++ AC_CHECK_FUNCS(feenableexcept)
++ 
++ AC_CHECK_HEADERS(dis-asm.h,
++-     MLIBS=$LIBS
++-     AC_CHECK_LIB(opcodes,init_disassemble_info)
++-     AC_CHECK_LIB(dl,dlopen,#opcodes changes too quickly to link directly 
++-             AC_CHECK_FUNCS(print_insn_i386,LIBS="$MLIBS -ldl")))
+++              MLIBS=$LIBS
+++              AC_CHECK_LIB(opcodes,init_disassemble_info)
+++              AC_CHECK_LIB(dl,dlopen,#opcodes changes too quickly to link directly 
+++                           AC_CHECK_FUNCS(print_insn_i386,LIBS="$MLIBS -ldl")))
++ 
++ #if test $use = "386-linux" ; then
++-     AC_CHECK_HEADERS(asm/sigcontext.h)
++-     AC_CHECK_HEADERS(asm/signal.h)
++-     AC_MSG_CHECKING([for sigcontext...])
++-        AC_TRY_COMPILE([#include <signal.h>
++-       ],
++-       [
++-        struct sigcontext foo;
++-       ],
++-       [
++-        sigcontext_works=1;
++-        AC_DEFINE(SIGNAL_H_HAS_SIGCONTEXT,1,[have sigcontext in signal.h])
++-     AC_MSG_RESULT(sigcontext in signal.h)
++-       ],
++-        
++-     [sigcontext_works=0;
++-         AC_MSG_RESULT(sigcontext NOT in signal.h)]
++-       )
++-       if test "$sigcontext_works" = 0 ; then
++-       AC_MSG_CHECKING([for sigcontext...])
++-       AC_TRY_COMPILE([#include <signal.h>
++-             #ifdef HAVE_ASM_SIGCONTEXT_H     
++-             #include <asm/sigcontext.h>
++-             #endif
++-             #ifdef HAVE_ASM_SIGNAL_H          
++-             #include <asm/signal.h>
++-             #endif
++-          ],
++-        [ 
++-        struct sigcontext foo;
++-        ],
++-        [
++-        AC_DEFINE(HAVE_SIGCONTEXT,1,[have sigcontext])
++-     AC_MSG_RESULT(sigcontext in asm files)
++-        ],
++-        [
++-        AC_MSG_RESULT(no sigcontext found)
++-     ])
++-
++-
++-       fi
++-#    echo 'foo() {}' > conftest1.c
++-#    $CC -S conftest1.c
++-#    use_underscore=0        
++-#    if fgrep _foo conftest1.s ; then use_underscore=1 ; fi
++-#    if test $use_underscore = 0 ; then
++-#            MPI_FILE=mpi-386_no_under.o
++-#          else
++-#         MPI_FILE=mpi-386d.o
++-#        fi
++-#    AC_SUBST(MPI_FILE)
++-#       GCC=$CC
++-#        if test -x  /usr/bin/i386-glibc20-linux-gcc ; then
++-#          GCC=/usr/bin/i386-glibc20-linux-gcc
++-#       fi
++-#    AC_SUBST(GCC)
++-
++-#fi
+++AC_CHECK_HEADERS(asm/sigcontext.h)
+++AC_CHECK_HEADERS(asm/signal.h)
+++AC_MSG_CHECKING([for sigcontext...])
+++AC_COMPILE_IFELSE(
+++    [AC_LANG_PROGRAM(
+++         [[
+++             #include <signal.h>
+++         ]],
+++         [[
+++             struct sigcontext foo;
+++         ]])],
+++    [AC_DEFINE(SIGNAL_H_HAS_SIGCONTEXT,1,[have sigcontext of signal.h])
+++     AC_MSG_RESULT([sigcontext of signal.h])],
+++    [AC_MSG_RESULT([sigcontext NOT of signal.h])
+++     AC_MSG_CHECKING([for sigcontext...])
+++     AC_COMPILE_IFELSE(
+++      [AC_LANG_PROGRAM(
+++              [[
+++                  #include <signal.h>
+++                  #ifdef HAVE_ASM_SIGCONTEXT_H     
+++                  #include <asm/sigcontext.h>
+++                  #endif
+++                  #ifdef HAVE_ASM_SIGNAL_H          
+++                  #include <asm/signal.h>
+++                  #endif
+++              ]],
+++              [[
+++                  struct sigcontext foo;
+++              ]])],
+++      [AC_DEFINE(HAVE_SIGCONTEXT,1,[have sigcontext])
+++       AC_MSG_RESULT(sigcontext asm files)],
+++      [AC_MSG_RESULT([no sigcontext found])])])
++ 
++ AC_PATH_PROG(EMACS,emacs)
++ 
++@@ -2590,11 +1922,11 @@ EOF
++ 
++ AC_MSG_CHECKING([emacs site lisp directory])
++ if [[ "$EMACS_SITE_LISP" = "unknown" ]] ; then
++-     if [[ "$EMACS" != "" ]] ; then
++-             EMACS_SITE_LISP=`$EMACS -q -batch --no-site-file -l conftest.el 2>&1 | sed -e /Loading/d | sed -e /load/d  |sed -e /Warning:/d`
++-     else
++-             EMACS_SITE_LISP=""
++-     fi
+++    if [[ "$EMACS" != "" ]] ; then
+++     EMACS_SITE_LISP=`$EMACS -q -batch --no-site-file -l conftest.el 2>&1 | sed -e /Loading/d | sed -e /load/d  |sed -e /Warning:/d`
+++    else
+++     EMACS_SITE_LISP=""
+++    fi
++ fi
++ AC_MSG_RESULT($EMACS_SITE_LISP)
++ AC_SUBST(EMACS_SITE_LISP)
++@@ -2613,14 +1945,14 @@ EOF
++ 
++ AC_MSG_CHECKING([emacs default.el])
++ if [[ "$EMACS" != "" ]] ; then
++-     EMACS_DEFAULT_EL=`$EMACS -q -batch --no-site-file -l conftest.el 2>&1 | sed -e /Loading/d | sed -e /load/d |sed -e /Warning:/d`
+++    EMACS_DEFAULT_EL=`$EMACS -q -batch --no-site-file -l conftest.el 2>&1 | sed -e /Loading/d | sed -e /load/d |sed -e /Warning:/d`
++ else
++-     EMACS_DEFAULT_EL=""
+++    EMACS_DEFAULT_EL=""
++ fi
++ if  test -f "${EMACS_DEFAULT_EL}"  ; then true;else
++-  if test -d $EMACS_SITE_LISP ; then
++-     EMACS_DEFAULT_EL=${EMACS_SITE_LISP}/default.el
++-  fi
+++    if test -d $EMACS_SITE_LISP ; then
+++     EMACS_DEFAULT_EL=${EMACS_SITE_LISP}/default.el
+++    fi
++ fi
++ AC_MSG_RESULT($EMACS_DEFAULT_EL)
++ AC_SUBST(EMACS_DEFAULT_EL)
++@@ -2651,93 +1983,98 @@ fi
++ AC_MSG_RESULT($INFO_DIR)
++ AC_SUBST(INFO_DIR)
++ 
++-if test "$enable_tcltk" = "yes" ; then
+++AC_ARG_ENABLE([tcltk],[  --enable-tcltk will try to build gcl-tk])
+++AC_ARG_ENABLE([tkconfig],
+++           [  --enable-tkconfig=XXXX will force the use of a TK_CONFIG_PREFIX=XXXXX as place to look for tkConfig.sh and tclConfig.sh],
+++           [TK_CONFIG_PREFIX=$enableval],[TK_CONFIG_PREFIX=unknown])
+++AC_ARG_ENABLE([tclconfig],
+++           [  --enable-tclconfig=XXXX will force the use of a TCL_CONFIG_PREFIX=XXXXX as place to look for tclConfig.sh and tclConfig.sh],
+++           [TCL_CONFIG_PREFIX=$enableval],[TCL_CONFIG_PREFIX=unknown])
++ 
++-   AC_MSG_CHECKING([for tcl/tk])
+++if test "$enable_tcltk" != "no" ; then
++     
++-   if test -d "${TCL_CONFIG_PREFIX}"  ; then true ; else
+++    AC_MSG_CHECKING([for tcl/tk])
++     
++-     AC_CHECK_PROG(TCLSH,tclsh,tclsh,${TCLSH})
++-   
++-     if test "${TCLSH}" = "" ; then true ; else
++-   
++-        rm -f conftest.tcl
++-        cat >> conftest.tcl <<EOF
+++    if test -d "${TCL_CONFIG_PREFIX}"  ; then true ; else
+++     
+++     AC_CHECK_PROG(TCLSH,tclsh,tclsh,${TCLSH})
+++     
+++     if test "${TCLSH}" = "" ; then true ; else
+++         
+++         rm -f conftest.tcl
+++         cat >> conftest.tcl <<EOF
++ [
++ puts [set tcl_version]
++ ]
++ EOF
++-   
++-        TCL_VERSION=`${TCLSH} < conftest.tcl`
++-     fi
++-   
++-     if test -x /usr/lib/tcl$TCL_VERSION/tclConfig.sh ; then
++-       TCL_CONFIG_PREFIX=/usr/lib/tcl$TCL_VERSION
++-     fi
++-    
++-   fi
++-    
++-   if test -f ${TCL_CONFIG_PREFIX}/tclConfig.sh  ; then . ${TCL_CONFIG_PREFIX}/tclConfig.sh ; fi
++-    
++-   if test -d "${TK_CONFIG_PREFIX}"  ; then true ; else
++-      if test -f ${TCL_CONFIG_PREFIX}/tkConfig.sh ; then
++-         TK_CONFIG_PREFIX=${TCL_CONFIG_PREFIX}
++-      else
++-         if test -x `echo $TCL_CONFIG_PREFIX | sed 's,tcl,tk,g'`/tkConfig.sh ; then
++-            TK_CONFIG_PREFIX=`echo $TCL_CONFIG_PREFIX | sed 's,tcl,tk,g'`
++-         fi      
++-      fi
++-   fi
++-    
++-   if test -f ${TK_CONFIG_PREFIX}/tkConfig.sh  ; then . ${TK_CONFIG_PREFIX}/tkConfig.sh ; fi
++-   
++-   if test -d ${TCL_CONFIG_PREFIX}/tcl${TCL_VERSION} ; then
++-      TCL_LIBRARY=${TCL_CONFIG_PREFIX}/tcl${TCL_VERSION}
++-   else
++-      if test -d ${TCL_CONFIG_PREFIX}/../tcl${TCL_VERSION} ; then
++-        TCL_LIBRARY=${TCL_CONFIG_PREFIX}/../tcl${TCL_VERSION}
++-      fi
++-   fi
++-   
++-   if test -d ${TK_CONFIG_PREFIX}/tk${TK_VERSION} ; then
++-      TK_LIBRARY=${TK_CONFIG_PREFIX}/tk${TK_VERSION}
++-   else
++-      if test -d ${TK_CONFIG_PREFIX}/../tk${TK_VERSION} ; then
++-        TK_LIBRARY=${TK_CONFIG_PREFIX}/../tk${TK_VERSION}
++-      fi
++-   fi
++-   
++-   if test -f ${TCL_CONFIG_PREFIX}/../include/tcl.h ; then
++-      TCL_INCLUDE=-I${TCL_CONFIG_PREFIX}/../include
++-   else
++-      if test -f /usr/include/tcl${TCL_VERSION}/tcl.h ; then
++-        TCL_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
++-      fi
++-   fi
++-   
++-   if test -f ${TK_CONFIG_PREFIX}/../include/tk.h ; then
++-      TK_INCLUDE=-I${TK_CONFIG_PREFIX}/../include
++-   else
++-      if test -f /usr/include/tcl${TCL_VERSION}/tk.h ; then
++-        TK_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
++-      fi     
++-   fi
++-   
++-   TCL_VERSION_DOT_FREE=`echo ${TCL_VERSION} | tr -d .`
++-   if test -f ${TK_CONFIG_PREFIX}/../bin/tcl${TCL_VERSION_DOT_FREE}.dll  ; then
++-      TCL_LIBS="-L${TK_CONFIG_PREFIX}/../bin -ltk${TCL_VERSION_DOT_FREE} -ltcl${TCL_VERSION_DOT_FREE}"
++-      TCL_STUB_LIBS="-L${TK_CONFIG_PREFIX}/lib -ltkstub${TCL_VERSION_DOT_FREE} -ltclstub${TCL_VERSION_DOT_FREE}"
++-   else
++-      AC_CHECK_LIB(lieee,main,have_ieee=1,have_ieee=0)
++-      if test "$have_ieee" = "0" ; then
++-        TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-lieee::g" `
++-      fi
++-      if test "$have_dl" = "0" ; then
++-        TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-ldl::g"`
++-      fi
++-      TCL_STUB_LIBS=""
++-   fi
++-
+++         
+++         TCL_VERSION=`${TCLSH} < conftest.tcl`
+++     fi
+++     
+++     if test -x /usr/lib/tcl$TCL_VERSION/tclConfig.sh ; then
+++         TCL_CONFIG_PREFIX=/usr/lib/tcl$TCL_VERSION
+++     fi
+++     
+++    fi
+++    
+++    if test -f ${TCL_CONFIG_PREFIX}/tclConfig.sh  ; then . ${TCL_CONFIG_PREFIX}/tclConfig.sh ; fi
+++    
+++    if test -d "${TK_CONFIG_PREFIX}"  ; then true ; else
+++     if test -f ${TCL_CONFIG_PREFIX}/tkConfig.sh ; then
+++         TK_CONFIG_PREFIX=${TCL_CONFIG_PREFIX}
+++     else
+++         if test -x `echo $TCL_CONFIG_PREFIX | sed 's,tcl,tk,g'`/tkConfig.sh ; then
+++             TK_CONFIG_PREFIX=`echo $TCL_CONFIG_PREFIX | sed 's,tcl,tk,g'`
+++         fi      
+++     fi
+++    fi
+++    
+++    if test -f ${TK_CONFIG_PREFIX}/tkConfig.sh  ; then . ${TK_CONFIG_PREFIX}/tkConfig.sh ; fi
+++    
+++    if test -d ${TCL_CONFIG_PREFIX}/tcl${TCL_VERSION} ; then
+++     TCL_LIBRARY=${TCL_CONFIG_PREFIX}/tcl${TCL_VERSION}
+++    else
+++     if test -d ${TCL_CONFIG_PREFIX}/../tcl${TCL_VERSION} ; then
+++         TCL_LIBRARY=${TCL_CONFIG_PREFIX}/../tcl${TCL_VERSION}
+++     fi
+++    fi
+++    
+++    if test -d ${TK_CONFIG_PREFIX}/tk${TK_VERSION} ; then
+++     TK_LIBRARY=${TK_CONFIG_PREFIX}/tk${TK_VERSION}
+++    else
+++     if test -d ${TK_CONFIG_PREFIX}/../tk${TK_VERSION} ; then
+++         TK_LIBRARY=${TK_CONFIG_PREFIX}/../tk${TK_VERSION}
+++     fi
+++    fi
+++    
+++    if test -f ${TCL_CONFIG_PREFIX}/../include/tcl.h ; then
+++     TCL_INCLUDE=-I${TCL_CONFIG_PREFIX}/../include
+++    else
+++     if test -f /usr/include/tcl${TCL_VERSION}/tcl.h ; then
+++         TCL_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
+++     fi
+++    fi
+++    
+++    if test -f ${TK_CONFIG_PREFIX}/../include/tk.h ; then
+++     TK_INCLUDE=-I${TK_CONFIG_PREFIX}/../include
+++    else
+++     if test -f /usr/include/tcl${TCL_VERSION}/tk.h ; then
+++         TK_INCLUDE=-I/usr/include/tcl${TCL_VERSION}
+++     fi      
+++    fi
+++    
+++    TCL_VERSION_DOT_FREE=`echo ${TCL_VERSION} | tr -d .`
+++    if test -f ${TK_CONFIG_PREFIX}/../bin/tcl${TCL_VERSION_DOT_FREE}.dll  ; then
+++     TCL_LIBS="-L${TK_CONFIG_PREFIX}/../bin -ltk${TCL_VERSION_DOT_FREE} -ltcl${TCL_VERSION_DOT_FREE}"
+++     TCL_STUB_LIBS="-L${TK_CONFIG_PREFIX}/lib -ltkstub${TCL_VERSION_DOT_FREE} -ltclstub${TCL_VERSION_DOT_FREE}"
+++    else
+++     AC_CHECK_LIB(lieee,main,have_ieee=1,have_ieee=0)
+++     if test "$have_ieee" = "0" ; then
+++         TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-lieee::g" `
+++     fi
+++     TCL_STUB_LIBS=""
+++    fi
+++    
++ fi
++ 
++ AC_SUBST(TK_CONFIG_PREFIX)
++@@ -2761,15 +2098,14 @@ AC_SUBST(TCL_LIBS)
++ 
++ 
++ if test -d "${TK_CONFIG_PREFIX}" ; then
++-AC_MSG_RESULT([using TK_VERSION=${TK_VERSION} in ${TK_CONFIG_PREFIX}])
+++    AC_MSG_RESULT([using TK_VERSION=${TK_VERSION} of ${TK_CONFIG_PREFIX}])
++ else
++-AC_MSG_RESULT([not found])
+++    AC_MSG_RESULT([not found])
++ fi
++ 
++-NOTIFY=$enable_notify
++-AC_SUBST(NOTIFY)
++-
++-      
+++AC_ARG_ENABLE([notify],[  --enable-notify=no will disable the automatic notification of gcl maintainers of successful builds/problems],
+++           [NOTIFY=$enable_notify
+++            AC_SUBST(NOTIFY)])
++ 
++ 
++ # for sgbc the mprotect capabilities.
++@@ -2779,76 +2115,37 @@ AC_CHECK_HEADERS(sys/mman.h,AC_CHECK_FUN
++ AC_CHECK_HEADERS(alloca.h)
++ AC_FUNC_ALLOCA
++ 
++-# alloca
++-
++-# dlopen etc
++-# idea make it so you do something dlopen(libX.so,RTLD_GLOBAL)
++-# then dlload("foo.o") a lisp file can refer to things in libX.so
++-# 
++-
++-# what machine this is, and include then a machine specific hdr.
++-# and machine specific defs.
++-
++-# check bzero,
++-
++-# check getcwd, getwd etc..
++-
++-
++-
++ 
++-# check socket stuff..
++-
++-# getrlimit
++-
++-# fionread or block
++-
++-# redhat/cygnus released for some reason a buggy version of gcc,
++-# which no one else released.   Catch that here.
++-dnl AC_MSG_CHECKING([Checking for buggy gcc version from redhat])
++-dnl if  2>&1 $CC -v | fgrep "gcc version 2.96" > /dev/null 
++-dnl    then 
++-dnl         BROKEN_O4_OPT=1
++-dnl         AC_DEFINE(BROKEN_O4_OPT)
++-dnl         AC_SUBST(BROKEN_O4_OPT)
++-dnl         echo ODIR_DEBUG=-O >> makedefsafter
++-dnl  echo >> makedefsafter
++-dnl  AC_MSG_RESULT([yes .. turning off -O4])
++-dnl    else
++-dnl  AC_MSG_RESULT([no])
++-dnl fi 
++-
++-LDFLAGS="`echo $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'`"
+++LDFLAGS="`echo $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'` $TLDFLAGS"
++ AC_SUBST(LDFLAGS)
++-LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS $TLDFLAGS $LIBS $TLIBS"
+++LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS $LIBS $TLIBS"
++ AC_SUBST(LIBS)
++-FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS $TCFLAGS $PROCESSOR_FLAGS"
+++FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS $TCFLAGS"
++ AC_SUBST(FINAL_CFLAGS)
++ # Work around bug with gcc on ppc -- CM
++-NIFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TONIFLAGS $PROCESSOR_FLAGS -I\$(GCLDIR)/o"
+++NIFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TONIFLAGS -I\$(GCLDIR)/o"
++ AC_SUBST(NIFLAGS)
++-CFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TO3FLAGS $PROCESSOR_FLAGS -I\$(GCLDIR)/o"
+++CFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TO3FLAGS -I\$(GCLDIR)/o"
++ AC_SUBST(CFLAGS)
++ O3FLAGS=$TO3FLAGS
++ AC_SUBST(O3FLAGS)
++ O2FLAGS=$TO2FLAGS
++ AC_SUBST(O2FLAGS)
++ 
++-AC_SUBST(PRELINK_CHECK)
++-
++ AC_SUBST(EXTRA_LOBJS)
++ AC_SUBST(LEADING_UNDERSCORE)
++ AC_SUBST(GNU_LD)
++ if test -f h/$use.defs  ; then
++-
++-  AC_SUBST(use)
++-  AC_OUTPUT(makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp )
++-  echo makedefc
++-  cat makedefc
++-
++-  echo    add-defs1 $use
++-  CC=$CC ./add-defs1 $use
++-
+++    
+++    AC_SUBST(use)
+++    AC_OUTPUT(makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp )
+++    echo makedefc
+++    cat makedefc
+++    
+++    echo    add-defs1 $use
+++    CC=$CC ./add-defs1 $use
+++    
++ else
++-  echo "Unable to guess machine type"
++-  echo use configure --enable-machine=XXX,  for XXX such that h/XXX.defs exists, ie in h/*.defs
+++    echo "Unable to guess machine type"
+++    echo use configure --enable-machine=XXX,  for XXX such that h/XXX.defs exists, ie in h/*.defs
++ fi
++--- gcl-2.6.12.orig/gcl-tk/sheader.h
+++++ gcl-2.6.12/gcl-tk/sheader.h
++@@ -45,7 +45,7 @@ struct message_header {
++ 
++ 
++ #define BYTE_S 8
++-#define BYTE_MASK (~(~0 << BYTE_S))
+++#define BYTE_MASK (~(~0UL << BYTE_S))
++ 
++ #define GET_3BYTES(p,ans) do{ unsigned char* __p = (unsigned char *) p; \
++                              ans = BYTE_MASK&(*__p++); \
++--- gcl-2.6.12.orig/h/compprotos.h
+++++ gcl-2.6.12/h/compprotos.h
++@@ -170,6 +170,7 @@ int gcl_putc(int,void *);
++ #ifdef CMPINCLUDE
++ int setjmp();
++ int _setjmp();
+++int _setjmp3();
++ #endif
++ void vfun_wrong_number_of_args(object);
++ void ihs_overflow (void);
++@@ -179,4 +180,3 @@ char *gcl_gets(char *,int);
++ int gcl_puts(const char *);
++ int endp_error(object);
++ object Icall_gen_error_handler(object,object,object,object,ufixnum,...);
++-
++--- gcl-2.6.12.orig/h/funlink.h
+++++ gcl-2.6.12/h/funlink.h
++@@ -54,7 +54,7 @@ enum F_arg_types
++   };
++ 
++ /* Make a mask for bits i < j, masking j-i bits */
++-#define MASK_RANGE(i,j)  ((~(~0 << (j-i)))<< i)
+++#define MASK_RANGE(i,j)  ((~(~0UL << (j-i)))<< i)
++ 
++ #define F_PLAIN(x) (((x) & MASK_RANGE( F_START_TYPES_POS,31)) == 0)
++ #define ARG_LIMIT 63
++--- gcl-2.6.12.orig/h/mingw.defs
+++++ gcl-2.6.12/h/mingw.defs
++@@ -54,7 +54,7 @@ TCL_LIB_SPEC=
++ TCL_DL_LIBS=
++ TCL_LIBS=
++ 
++-PWD_CMD=pwd -W
+++#PWD_CMD=pwd -W
++ 
++ #
++ # End h/mingw.defs
++--- gcl-2.6.12.orig/h/mingw.h
+++++ gcl-2.6.12/h/mingw.h
++@@ -26,21 +26,6 @@
++ #define f_nsyms NumberOfSymbols
++ #define NO_PWD_H
++ 
++-#define MAXPATHLEN 512
++-
++-/* alter pathToAlter to fit in with the Clibrary of the system.
++-   and report error using name 'x' if you cant do it.
++-   The result in pathToAlter should be less
++-*/   
++-#define FIX_FILENAME(x,pathToAlter) fix_filename(x,pathToAlter)
++-
++-#define MEMORY_SAVE(self,filename) \
++-  do { char buf[MAXPATHLEN]; \
++-       strcpy(buf,self); \
++-       fix_filename(Cnil,buf); \
++-       memory_save(buf,filename); \
++-       } while (0)
++-
++ #define signals_pending *signalsPendingPtr
++ 
++ #undef DBEGIN_TY
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -371,6 +371,9 @@ emsg(const char *s,...) {
++   va_list args;
++   ufixnum n=0;
++   void *v=NULL;
+++#ifndef vsnprintf
+++  extern int vsnprintf();
+++#endif
++   va_start(args,s);
++   n=vsnprintf(v,n,s,args)+1;
++   va_end(args);
++--- gcl-2.6.12.orig/h/protoize.h
+++++ gcl-2.6.12/h/protoize.h
++@@ -1777,6 +1777,7 @@ void gcl_init_shared_memory ( void );
++ void fix_filename ( object pathname, char *filename1 );
++ void alarm ( int n );
++ void *sbrk ( ptrdiff_t increment );
+++#define sigset_t int
++ void sigemptyset( sigset_t *set);
++ void sigaddset ( sigset_t *set, int n);
++ int sigismember ( sigset_t *set, int n );
++@@ -1798,19 +1799,12 @@ msystem(const char *);
++ void
++ assert_error(const char *,unsigned,const char *,const char *);
++ 
++-#ifdef _WIN32
++-void
++-detect_wine(void);
++-
+++#ifdef __MINGW32__
++ void
++ init_shared_memory(void);
++ 
++-void *
++-alloca(size_t);
++-
++ object
++ find_init_string(const char *);
++-
++ #endif
++ 
++ void *
++@@ -1964,3 +1958,6 @@ gcl_cleanup(int);
++ 
++ void
++ do_gcl_abort(void);
+++
+++int
+++vsystem(const char *);
++--- gcl-2.6.12.orig/h/wincoff.h
+++++ gcl-2.6.12/h/wincoff.h
++@@ -10,6 +10,7 @@
++    in this */
++ #undef va_start
++ 
+++#include "winsock2.h"
++ #include "windows.h"
++ #ifdef __MINGW32__
++ #include "minglacks.h"
++--- gcl-2.6.12.orig/lsp/gcl_auto_new.lsp
+++++ gcl-2.6.12/lsp/gcl_auto_new.lsp
++@@ -206,14 +206,8 @@
++ ;; So to stop users from invoking this
++ #+sun
++ (defun user-homedir-pathname ()
++- (let* ((tem (si::getenv "HOME"))
++-     (l (- (length tem) 1)))
++-   (cond ((null tem) nil)
++-      (t 
++-       (or (and (>= l 0)
++-                (eql (aref tem l) #\/))
++-           (setq tem (concatenate 'string tem "/")))
++-       (pathname tem)))))
++-
+++ (let* ((tem (si::getenv "HOME")))
+++   (when tem
+++     (pathname (coerce-slash-terminated tem)))))
++ 
++ (AUTOLOAD 'init-readline '|gcl_readline|)
++--- gcl-2.6.12.orig/lsp/gcl_directory.lsp
+++++ gcl-2.6.12/lsp/gcl_directory.lsp
++@@ -34,9 +34,9 @@
++ (defun make-frame (s &aux (l (length s)))
++   (replace (make-array l :element-type 'character :adjustable t :fill-pointer l) s))
++ 
++-(defun expand-wild-directory (l f zz &optional (yy (make-frame zz)))
+++(defun expand-wild-directory (d l f zz &optional (yy (make-frame zz)))
++   (let* ((x (member-if 'wild-dir-element-p l))
++-      (s (namestring (make-pathname :directory (ldiff l x))))
+++      (s (namestring (make-pathname :device d :directory (ldiff l x))))
++       (z (vector-push-string zz s))
++       (l (length yy))
++       (y (link-expand (vector-push-string yy s) l))
++@@ -45,19 +45,15 @@
++       (cond ((eq (car x) :wild-inferiors) (recurse-dir z y f))
++          (x (walk-dir z y (lambda (q e l)
++                             (declare (ignore l))
++-                            (expand-wild-directory (cons :relative (cdr x)) f q e)) :directory));FIXME
+++                            (expand-wild-directory d (cons :relative (cdr x)) f q e)) :directory));FIXME
++          ((funcall f z y))))))
++ 
++-(defun chdir (s)
++-  (when (chdir1 (namestring (pathname s)));to expand ~/
++-    (setq *current-directory* (current-directory-pathname))))
++-
++ (defun directory (p &key &aux (p (translate-logical-pathname p))(d (pathname-directory p))
++                  (c (unless (eq (car d) :absolute) (make-frame (namestring *current-directory*))))
++                  (lc (when c (length c)))
++                  (filesp (or (pathname-name p) (pathname-type p)))
++                  (v (compile-regexp (to-regexp p)))(*up-key* :back) r)
++-  (expand-wild-directory d
+++  (expand-wild-directory (pathname-device p) d
++    (lambda (dir exp &aux (pexp (pathname (if c (vector-push-string c exp 0 lc) exp))))
++      (if filesp
++       (walk-dir dir exp
++@@ -67,5 +63,15 @@
++                     (push (merge-pathnames (parse-namestring dir nil *default-pathname-defaults* :start pos) pexp nil) r)))
++                 :file)
++        (when (pathname-match-p dir v) (push pexp r))))
++-   (make-frame (if c "./" "")))
+++   (make-frame ""))
++   r)
+++
+++(defun chdir (s)
+++  (when (chdir1 (namestring (pathname s)));to expand ~/
+++    (setq *current-directory* (current-directory-pathname))))
+++
+++(defun which (s)
+++  (let ((r (with-open-file (s (apply 'string-concatenate "|" #-winnt "which "
+++                                  #+winnt "for %i in (" s #+winnt ".exe) do @echo.%~$PATH:i" nil))
+++                        (read-line s nil 'eof))))
+++    (if (eq r 'eof) s (string-downcase r))))
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -451,7 +451,7 @@
++       (let* ((*load-pathname* pp)(*load-truename* epp))
++      (with-open-file
++       (s epp :external-format external-format)
++-      (if (member (peek-char nil s nil 'eof) '#.(mapcar 'code-char (list 127 #xfe #xff #x4c)))
+++      (if (member (peek-char nil s nil 'eof) '#.(mapcar 'code-char (list 127 #xcf #xce #x4c)))
++           (load-fasl s print)
++         (let ((*standard-input* s)) (load-stream s print)))))
++     (when if-does-not-exist
++--- gcl-2.6.12.orig/lsp/gcl_make_pathname.lsp
+++++ gcl-2.6.12/lsp/gcl_make_pathname.lsp
++@@ -4,29 +4,58 @@
++ ;;   (declare (optimize (safety 1)))
++ ;;   (when (typep x 'pathname) t))
++ 
+++
+++(eval-when (compile eval)
+++  (defun add-dir-sep (s &optional (i 0) (bp 0) (l (length s)))
+++    (when (< i l)
+++      (let ((x (aref s i)))
+++     (append
+++      (if (eql x #\/)
+++          (if (zerop bp) (list #\[ x #\\ #\]) (list x #\\))
+++        (list x))
+++      (add-dir-sep s (1+ i) (case x (#\[ (1+ bp))(#\] (1- bp))(otherwise bp)) l)))))
+++
+++  (defun ads (s) #+winnt (coerce (add-dir-sep s) 'string) #-winnt s))
+++
+++(defconstant +dirsep+ (compile-regexp #.(ads "/")))
+++
+++(defconstant +glob-to-regexp-alist+ (list (cons #v"{[^}]*}" (lambda (x) (msub '((#\| . #\,)(#\( . #\{)(#\) . #\})) x)))
+++                                       (cons #v"\\[[^\\]*\\]"
+++                                             (lambda (x)
+++                                               (string-concatenate "(" (substitute #\^ #\! (subseq x 0 2)) (subseq x 2) ")")))
+++                                       (cons #v"\\*" (lambda (x) #.(ads "([^/.]*)")))
+++                                       (cons #v"\\?" (lambda (x) #.(ads "([^/.])")))
+++                                       (cons #v"\\." (lambda (x) "\\."))))
+++
+++(defconstant +physical-pathname-defaults+ '(("" "" "")
+++                                         #+winnt("" "([A-Za-z]:)?" ":") #-winnt("" "()" "")
+++                                         ("" #.(ads "(/?([^/]+/)*)") "" "" #.(ads "([^/]+/)") "/")
+++                                         ("" #.(ads "([^/.]*)") "")
+++                                         ("." #.(ads "(\\.[^/]*)?") "")
+++                                         ("" "" "")))
+++
+++(defconstant +logical-pathname-defaults+  '(("" "([-0-9A-Z]+:)?" ":")
+++                                         ("" "" "")
+++                                         ("" "(;?((\\*?([-0-9A-Z]+\\*?)+|\\*|\\*\\*);)*)" "" "" "((\\*?([-0-9A-Z]+\\*?)+|\\*);)" ";")
+++                                         ("" "(\\*?([-0-9A-Z]+\\*?)+|\\*)?" "")
+++                                         ("." "(\\.(\\*?([-0-9A-Z]+\\*?)+|\\*))?" "")
+++                                         ("." "(\\.([1-9][0-9]*|newest|NEWEST|\\*))?" "")))
+++
++ (defun msub (a x) (if a (msub (cdr a) (substitute (caar a) (cdar a) x)) x))
++ 
++-(defvar *glob-to-regexp-alist* (list (cons #v"{[^}]*}" (lambda (x) (msub '((#\| . #\,)(#\( . #\{)(#\) . #\})) x)))
++-                                  (cons #v"\\[[^\\]*\\]" (lambda (x)
++-                                                           (concatenate 'string "("
++-                                                                        (substitute #\^ #\! (subseq x 0 2))
++-                                                                        (subseq x 2) ")")))
++-                                  (cons #v"\\*" (lambda (x) "([^/.]*)"))
++-                                  (cons #v"\\?" (lambda (x) "([^/.])"))
++-                                  (cons #v"\\." (lambda (x) "\\."))))
++ 
++ (defun mglist (x &optional (b 0))
++   (let* ((y (mapcan (lambda (z &aux (w (string-match (car z) x b)))
++                    (unless (eql w -1)
++                      (list (list w (match-end 0) z))))
++-                 *glob-to-regexp-alist*))
+++                 +glob-to-regexp-alist+))
++       (z (when y (reduce (lambda (y x) (if (< (car x) (car y)) x y)) y))))
++     (when z
++       (cons z (mglist x (cadr z))))))
++ 
++ (defun mgsub (x &optional (l (mglist x)) (b 0) &aux (w (pop l)))
++   (if w
++-      (concatenate 'string
+++      (string-concatenate
++                 (subseq x b (car w))
++                 (funcall (cdaddr w) (subseq x (car w) (cadr w)))
++                 (mgsub x l (cadr w)))
++@@ -49,21 +78,10 @@
++ ;    )
++ )
++ 
++-(defconstant +physical-pathname-defaults+ '(("" "" "")
++-                                         ("" "" "")
++-                                         ("" "(/?([^/]+/)*)" "" "" "([^/]+/)" "/")
++-                                         ("" "([^/.]*)" "")
++-                                         ("." "(\\.[^/]*)?" "")
++-                                         ("" "" "")))
++-(defconstant +logical-pathname-defaults+  '(("" "([-0-9A-Z]+:)?" ":")
++-                                         ("" "" "")
++-                                         ("" "(;?((\\*?([-0-9A-Z]+\\*?)+|\\*|\\*\\*);)*)" "" "" "((\\*?([-0-9A-Z]+\\*?)+|\\*);)" ";")
++-                                         ("" "(\\*?([-0-9A-Z]+\\*?)+|\\*)?" "")
++-                                         ("." "(\\.(\\*?([-0-9A-Z]+\\*?)+|\\*))?" "")
++-                                         ("." "(\\.([1-9][0-9]*|newest|NEWEST|\\*))?" "")))
+++
++ 
++ (defun to-regexp-or-namestring (x rp lp)
++-  (apply 'concatenate 'string
+++  (apply 'string-concatenate
++       (mapcan (lambda (x y) (elsub x y rp lp))
++               x (if lp +logical-pathname-defaults+ +physical-pathname-defaults+))))
++ 
++@@ -101,14 +119,14 @@
++ (eval-when (compile eval)
++   (defun strsym (p &rest r)
++     (declare (:dynamic-extent r))
++-    (intern (apply 'concatenate 'string (mapcar 'string-upcase r)) p)))
+++    (intern (apply 'string-concatenate (mapcar 'string-upcase r)) p)))
++ 
++ #.`(defun make-pathname (&key (host nil hostp) (device nil devicep) (directory nil directoryp)
++                            (name nil namep) (type nil typep) (version nil versionp)
++                            defaults (case :local) namestring &aux defaulted (def (when defaults (pathname defaults))))
++      (declare (optimize (safety 1)))
++      (check-type host (or (member nil :unspecific) string))
++-     (check-type device (member nil :unspecific))
+++     (check-type device (or (member nil :unspecific) string))
++      (check-type directory (or (member nil :unspecific :wild) string list))
++      (check-type name (or string (member nil :unspecific :wild)))
++      (check-type type (or string (member nil :unspecific :wild)))
++@@ -116,7 +134,8 @@
++      (check-type defaults (or null pathname-designator))
++      (check-type case (member :common :local))
++      ,(flet ((def? (k) `(let* (,@(when (eq k 'host) `((def (or def *default-pathname-defaults*))))
++-                            (nk (if ,(strsym :si k "P") ,k (progn (setq defaulted t) (when def (,(strsym :si "C-PATHNAME-" k) def)))))
+++                            (nk (if ,(strsym :si k "P") ,k (when def (,(strsym :si "C-PATHNAME-" k) def))))
+++                            (nk (progn (unless (eq ,k nk) (setq defaulted t)) nk))
++                             (nk (if (eq case :local) nk (progn (setq defaulted t) (toggle-case nk)))))
++                      nk)))
++      `(let* ((h ,(def? 'host))
++--- gcl-2.6.12.orig/lsp/gcl_parse_namestring.lsp
+++++ gcl-2.6.12/lsp/gcl_parse_namestring.lsp
++@@ -14,6 +14,7 @@
++ (defun dir-conj (x) (if (eq x :relative) :absolute :relative))
++ 
++ (defvar *up-key* :up)
+++(defvar *canonicalized* nil)
++ 
++ (defun mfr (x b i) (subseq x b i));  (make-array (- i b) :element-type 'character :displaced-to x :displaced-index-offset b)
++ 
++@@ -30,15 +31,15 @@
++       (z (if w (cdr w) z)))
++     (if (eq z :up) *up-key* z)))
++ 
++-(defun dir-parse (x sep sepfirst &optional (b 0))
+++(defun dir-parse (x &optional lp (b 0))
++   (when (stringp x)
++-    (let ((i (search sep x :start2 b)));string-match spoils outer match results
++-      (when i
++-     (let* ((y (dir-parse x sep sepfirst (1+ i)))
+++    (let ((i (string-match (if lp #v";" +dirsep+) x b)))
+++      (unless (minusp i)
+++     (let* ((y (dir-parse x lp (1+ i)))
++             (z (element x b i :directory))
++-            (y (if z (cons z y) y)))
+++            (y (if z (cons z y) (progn (when (> i b) (setq *canonicalized* t)) y))))
++        (if (zerop b)
++-           (cons (if (zerop i) sepfirst (dir-conj sepfirst)) y)
+++           (cons (if (if lp (plusp i) (zerop i)) :absolute :relative) y)
++          y))))))
++ 
++ (defun match-component (x i k &optional (boff 0) (eoff 0))
++@@ -52,40 +53,37 @@
++ 
++ (defconstant +generic-logical-pathname-regexp+ (compile-regexp (to-regexp-or-namestring (make-list (length +logical-pathname-defaults+)) t t)))
++ 
++-(defun expand-home-dir (dir)
++-  (cond ((and (eq (car dir) :relative) (stringp (cadr dir)) (eql #\~ (aref (cadr dir) 0)))
++-      (append (dir-parse (home-namestring (cadr dir)) "/" :absolute) (cddr dir)))
++-     (dir)))
++-
++ (defun logical-pathname-parse (x &optional host def (b 0) (e (length x)))
++-  (when (and (eql b (string-match +generic-logical-pathname-regexp+ x b e)) (eql (match-end 0) e))
++-    (let ((mhost (match-component x 1 :host 0 -1)))
++-      (when (and host mhost)
++-     (unless (string-equal host mhost)
+++  (when *pathname-logical* ;;accelerator
+++    (when (and (eql b (string-match +generic-logical-pathname-regexp+ x b e)) (eql (match-end 0) e))
+++      (let ((mhost (match-component x 1 :host 0 -1)))
+++     (when (and host mhost)
+++       (unless (string-equal host mhost)
++          (error 'error :format-control "Host part of ~s does not match ~s" :format-arguments (list x host))))
++-      (let ((host (or host mhost (pathname-host def))))
++-     (when (logical-pathname-host-p host)
++-       (let* ((dir (dir-parse (match-component x 2 :none) ";" :relative))
++-              (edir (expand-home-dir dir)))
++-       (make-pathname :host host
++-                      :device :unspecific
++-                      :directory edir
++-                      :name (match-component x 6 :name)
++-                      :type (match-component x 8 :type 1)
++-                      :version (version-parse (match-component x 11 :version 1))
++-                      :namestring (when (and mhost (eql b 0) (eql e (length x)) (eq dir edir)) x))))))))
++-  
+++     (let ((host (or host mhost (pathname-host def))))
+++       (when (logical-pathname-host-p host)
+++         (make-pathname :host host
+++                        :device :unspecific
+++                        :name (match-component x 6 :name)
+++                        :type (match-component x 8 :type 1)
+++                        :version (version-parse (match-component x 11 :version 1))
+++                        :directory (dir-parse (match-component x 2 :none) t);must be last
+++                        :namestring (when (and mhost (eql b 0) (eql e (length x))) x))))))))
+++
++ (defconstant +generic-physical-pathname-regexp+ (compile-regexp (to-regexp-or-namestring (make-list (length +physical-pathname-defaults+)) t nil)))
++ 
++-(defun pathname-parse (x b e)
++-  (when (and (eql b (string-match +generic-physical-pathname-regexp+ x b e)) (eql (match-end 0) e))
++-    (let* ((dir (dir-parse (match-component x 1 :none) "/" :absolute))
++-        (edir (expand-home-dir dir)))
++-      (make-pathname :directory edir
++-                  :name (match-component x 3 :name)
++-                  :type (match-component x 4 :type 1)
++-                  :namestring (when (and (eql b 0) (eql e (length x)) (eq dir edir)) x)))))
+++(defun expand-home-dir (dir)
+++  (if (and (eq (car dir) :relative) (stringp (cadr dir)) (eql #\~ (aref (cadr dir) 0)))
+++      (prog1 (append (dir-parse (home-namestring (cadr dir))) (cddr dir)) (setq *canonicalized* t))
+++    dir))
++ 
+++(defun pathname-parse (x b e &aux (*canonicalized* nil))
+++  (when (and (eql b (string-match +generic-physical-pathname-regexp+ x b e)) (eql (match-end 0) e))
+++    (make-pathname :device (match-component x 1 :none 0 -1)
+++                :name (match-component x 4 :name)
+++                :type (match-component x 5 :type 1)
+++                :directory (expand-home-dir (dir-parse (match-component x 2 :none)));must be last
+++                :namestring (unless *canonicalized* (when (and (eql b 0) (eql e (length x))) x)))))
++ 
++ (defun path-stream-name (x)
++   (check-type x pathname-designator)
++--- gcl-2.6.12.orig/lsp/gcl_top.lsp
+++++ gcl-2.6.12/lsp/gcl_top.lsp
++@@ -581,27 +581,20 @@ First directory is checked for first nam
++ 
++ (defvar *tmp-dir*)
++ 
++-(defun wine-tmp-redirect ()
++-  (let* ((s (find-symbol "*WINE-DETECTED*" (find-package "SYSTEM"))))
++-    (when (and s (symbol-value s))
++-      (list *system-directory*))))
++-      
++ (defun ensure-dir-string (str)
++   (if (eq (stat str) :directory)
++       (coerce-slash-terminated str)
++     str))
++ 
++ (defun get-temp-dir ()
++-  (dolist (x `(,@(wine-tmp-redirect) ,@(mapcar 'si::getenv '("TMPDIR" "TMP" "TEMP")) "/tmp" ""))
+++  (dolist (x `(,@(mapcar 'si::getenv '("TMPDIR" "TMP" "TEMP")) "/tmp" ""))
++     (when x
++       (let ((x (coerce-slash-terminated x)))
++      (when (eq (stat x) :directory)
++        (return-from get-temp-dir x))))))
++ 
++-(defun get-path (s &aux (m (string-match "([^/ ]*)( |$)" s))(b (match-beginning 1))(e (match-end 1))
++-                (r (with-open-file (s (concatenate 'string "|which " (subseq s b e))) (read s nil 'eof))))
++-  (if (eq r 'eof) s (concatenate 'string (string-downcase r) (subseq s e))))
++-
+++(defun get-path (s &aux (m (string-match "([^ ]*)( |$)" s))(b (match-beginning 1))(e (match-end 1)))
+++  (string-concatenate (which (pathname-name (subseq s b e))) (subseq s e)))
++ 
++ (defvar *cc* "cc")
++ (defvar *ld* "ld")
++@@ -609,7 +602,7 @@ First directory is checked for first nam
++ 
++ (defvar *current-directory* *system-directory*)
++ 
++-(defun current-directory-pathname nil (pathname (concatenate 'string (getcwd) "/")))
+++(defun current-directory-pathname nil (pathname (coerce-slash-terminated (getcwd))))
++ 
++ (defun set-up-top-level (&aux (i (argc)) tem)
++   (declare (fixnum i))
++@@ -627,9 +620,7 @@ First directory is checked for first nam
++       (when dir
++      (setq *lib-directory* (coerce-slash-terminated dir)))))
++   (unless (and *load-path* (equal tem *lib-directory*))
++-    (setq *load-path* (cons (string-concatenate *lib-directory* "lsp/") *load-path*))
++-    (setq *load-path* (cons (string-concatenate *lib-directory* "gcl-tk/") *load-path*))
++-    (setq *load-path* (cons (string-concatenate *lib-directory*  "xgcl-2/") *load-path*)))
+++    (mapc (lambda (x) (push (string-concatenate *lib-directory* x) *load-path*)) '("lsp/" "gcl-tk/" "xgcl-2/")))
++   (unless (boundp '*system-directory*)
++     (setq *system-directory* (namestring (truename (make-pathname :name nil :type nil :defaults (argv 0))))))))
++ 
++--- gcl-2.6.12.orig/lsp/gcl_truename.lsp
+++++ gcl-2.6.12/lsp/gcl_truename.lsp
++@@ -4,11 +4,11 @@
++   (labels ((frame (b e) (make-array (- n b) :element-type 'character
++                                  :displaced-to str :displaced-index-offset b :fill-pointer (- e b)))
++         (set-fr (fr e &aux (fr (or fr (frame 0 b)))) (setf (fill-pointer fr) e) fr))
++-    (let* ((i (string-match #v"/" str b))
+++    (let* ((i (string-match +dirsep+ str b))
++         (fr (set-fr fr (if (eql i -1) n i)))
++         (l (when (eq (stat fr) :link) (readlinkat 0 fr))))
++       (cond (l (let ((b (if (eql #\/ (aref l 0)) 0 b)))
++-              (link-expand (concatenate 'string (set-fr fr b) l (frame (if (eql i -1) n i) n)) b)))
+++              (link-expand (string-concatenate (set-fr fr b) l (frame (if (eql i -1) n i) n)) b)))
++          ((eql i -1) str)
++          ((link-expand str (1+ i) n fr))))))
++ 
++--- gcl-2.6.12.orig/makedefc.in
+++++ gcl-2.6.12/makedefc.in
++@@ -45,6 +45,7 @@ PRELINK_CHECK=@PRELINK_CHECK@
++ 
++ NOTIFY=@NOTIFY@
++ CC=@CC@
+++GCL_CC=@GCL_CC@
++ CFLAGS=@CFLAGS@
++ LDFLAGS=@LDFLAGS@
++ FINAL_CFLAGS=@FINAL_CFLAGS@
++--- gcl-2.6.12.orig/o/bind.c
+++++ gcl-2.6.12/o/bind.c
++@@ -23,6 +23,8 @@ Foundation, 675 Mass Ave, Cambridge, MA
++      bind.c
++ */
++ 
+++#include <string.h>
+++
++ #include "include.h"
++ 
++ static void
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -149,7 +149,7 @@ enum dump_type {
++ 
++ /* given SHORT extract top code (say 4 bits) and bottom byte */
++ #define TOP(i) (i >> SIZE_BYTE)
++-#define BOTTOM(i) (i &  ~(~0 << SIZE_BYTE))
+++#define BOTTOM(i) (i &  ~(~0UL << SIZE_BYTE))
++ 
++ #define FASD_VERSION 2
++ 
++@@ -328,7 +328,7 @@ getd(str)
++ 
++       
++ #define D_TYPE_OF(byt) \
++-  ((enum dump_type )((unsigned int) byt & ~(~0 << SIZE_D_CODE)))
+++  ((enum dump_type )((unsigned int) byt & ~(~0UL << SIZE_D_CODE)))
++ 
++ /* this field may be the top of a short for length, or part of an extended
++    code */
++@@ -379,7 +379,7 @@ getd(str)
++ 
++ 
++ 
++-#define MASK ~(~0 << 8)
+++#define MASK ~(~0UL << 8)
++ #define WRITE_BYTEI(x,i)  putc((((x) >> (i*SIZE_BYTE)) & MASK),fas_stream)
++ 
++ #define PUTFIX(v_) Join(PUT,SIZEOF_LONG)(v_)
++@@ -398,7 +398,7 @@ getd(str)
++      WRITE_BYTEI(var,7);} while(0)
++ 
++ #define PUT4(varx ) \
++- do{int var= varx ; \
+++ do{unsigned long var= varx ; \
++      DPRINTF("{4byte:varx= %d}", var); \
++        WRITE_BYTEI(var,0); \
++      WRITE_BYTEI(var,1); \
++@@ -406,14 +406,14 @@ getd(str)
++      WRITE_BYTEI(var,3);} while(0)
++ 
++ #define PUT2(var ) \
++- do{int v=var; \
+++ do{unsigned long v=var; \
++      DPRINTF("{2byte:var= %d}", v); \
++        WRITE_BYTEI(v,0); \
++      WRITE_BYTEI(v,1); \
++      } while(0)
++ 
++ #define PUT3(var ) \
++- do{int v=var; \
+++ do{unsigned long v=var; \
++      DPRINTF("{3byte:var= %d}", v); \
++        WRITE_BYTEI(v,0); \
++      WRITE_BYTEI(v,1); \
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -89,8 +89,8 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #  include <netinet/in.h>
++ #  include <arpa/inet.h>
++ #else
++-#  include <windows.h>
++ #  include <winsock2.h>
+++#  include <windows.h>
++ #endif
++ #include <errno.h>
++ 
++@@ -400,7 +400,8 @@ open_stream(object fn,enum smmode smm, o
++       fclose(fp);
++       if (if_exists==sKerror) FILE_ERROR(fn,"File exists");
++       else if (if_exists==sKrename) {
++-     massert(snprintf(FN2,sizeof(FN2),"%s.BAK",FN1)>=0);
+++     massert(snprintf(FN2,sizeof(FN2),"%-*.*s~",(int)strlen(FN1)-1,(int)strlen(FN1)-1,FN1)>=0);
+++     massert(!unlink(FN2));/*MinGW*/
++      massert(!rename(FN1,FN2));
++      if (!(fp=fopen(FN1,smm==smm_output ? "w" : "w+"))) cannot_create(fn);
++       } else if (if_exists==sKrename_and_delete ||
++--- gcl-2.6.12.orig/o/funlink.c
+++++ gcl-2.6.12/o/funlink.c
++@@ -322,10 +322,11 @@ call_proc(object sym, void **link, int a
++ 
++     } else if (type_of(fun)==t_afun) {
++ 
++-      ufixnum at=F_TYPES(fun->sfn.sfn_argd)>>F_TYPE_WIDTH;
++-      ufixnum ma=F_MIN_ARGS(fun->sfn.sfn_argd);
++-      ufixnum xa=F_MAX_ARGS(fun->sfn.sfn_argd);
++-      ufixnum rt=F_RESULT_TYPE(fun->sfn.sfn_argd);
+++      ufixnum ad=fun->sfn.sfn_argd;
+++      ufixnum at=F_TYPES(ad)>>F_TYPE_WIDTH;
+++      ufixnum ma=F_MIN_ARGS(ad);
+++      ufixnum xa=F_MAX_ARGS(ad);
+++      ufixnum rt=F_RESULT_TYPE(ad);
++ 
++       nargs=SFUN_NARGS(argd);
++       if (nargs<ma || nargs > xa || ((argd>>8)&0x3)!=rt || (argd>>12)!=at)
++--- gcl-2.6.12.orig/o/hash.d
+++++ gcl-2.6.12/o/hash.d
++@@ -48,7 +48,7 @@ typedef unsigned char uchar;
++ 
++ static ufixnum rtb[256];
++ 
++-#define MASK(n) (~(~0L << (n)))
+++#define MASK(n) (~(~0UL << (n)))
++ 
++ static ufixnum
++ ufixhash(ufixnum g) {
++--- gcl-2.6.12.orig/o/main.c
+++++ gcl-2.6.12/o/main.c
++@@ -148,7 +148,7 @@ mbrk(void *v) {
++     
++ #if defined(__CYGWIN__)||defined(__MINGW32__)
++ 
++-#include <Windows.h>
+++#include <windows.h>
++ 
++ static ufixnum
++ get_phys_pages_no_malloc(char n) {
++@@ -470,12 +470,6 @@ main(int argc, char **argv, char **envp)
++   kcl_self = argv[0];
++ #endif
++ 
++-#ifdef __MINGW32__
++-  {
++-    char *s=kcl_self;
++-    for (;*s;s++) if (*s=='\\') *s='/';
++-  }
++-#endif       
++   *argv=kcl_self;
++   
++ #ifdef CAN_UNRANDOMIZE_SBRK
++@@ -537,10 +531,6 @@ main(int argc, char **argv, char **envp)
++   
++   }
++ 
++-#ifdef _WIN32
++-  detect_wine();
++-#endif
++-
++   sSAlisp_maxpagesA->s.s_dbind = make_fixnum(real_maxpage);
++ 
++   ihs_push(Cnil);
++--- gcl-2.6.12.orig/o/mingfile.c
+++++ gcl-2.6.12/o/mingfile.c
++@@ -1,57 +1,6 @@
++ #include "include.h"
++-#include "windows.h"
++ #include "winsock2.h"
++-
++-extern object truename(object);
++-extern object make_pathname();
++-void Ldirectory ( void )
++-{
++-     char filename[MAXPATHLEN];
++-     object *top=vs_top;
++-     object path;
++-     check_arg(1);
++-     check_type_or_pathname_string_symbol_stream(&vs_base[0]);
++-     path = vs_base[0] = coerce_to_pathname(vs_base[0]);
++-     
++-     if (vs_base[0]->pn.pn_name==Cnil && vs_base[0]->pn.pn_type==Cnil) {
++-             coerce_to_filename(vs_base[0], filename);
++-             strcat(filename, "*.*");
++-     } else if (vs_base[0]->pn.pn_name==Cnil) {
++-             vs_base[0]->pn.pn_name = sKwild;
++-             coerce_to_filename(vs_base[0], filename);
++-             vs_base[0]->pn.pn_name = Cnil;
++-     } else if (vs_base[0]->pn.pn_type==Cnil) {
++-             coerce_to_filename(vs_base[0], filename);
++-             strcat(filename, ".*");
++-     } else
++-             coerce_to_filename(vs_base[0], filename);
++-     { WIN32_FIND_DATA data;
++-       HANDLE dirHandle = FindFirstFile(filename,&data);
++-
++-     if (dirHandle== INVALID_HANDLE_VALUE) {
++-       vs_base[0]=Cnil; return;
++-     } else {
++-       do {
++-         if (strcmp(data.cFileName,"..") != 0 && strcmp(data.cFileName,".") != 0 ) {
++-           object name = make_simple_string(data.cFileName);
++-           object new =  coerce_to_pathname(name);
++-           vs_push(make_pathname(path->pn.pn_host,
++-                                 path->pn.pn_device,
++-                                 path->pn.pn_directory,
++-                                 new->pn.pn_name,
++-                                 new->pn.pn_type,
++-                                 new->pn.pn_version));
++-         }
++-       } while (FindNextFile(dirHandle,&data));
++-       FindClose(dirHandle);
++-     }
++-     vs_push(Cnil);
++-     while (vs_top > top + 1)
++-             stack_cons();
++-     vs_base = top;
++-
++-     }
++-}
+++#include "windows.h"
++ 
++ int
++ mingwlisten(FILE *fp) {
++--- gcl-2.6.12.orig/o/mingwin.c
+++++ gcl-2.6.12/o/mingwin.c
++@@ -2,6 +2,7 @@
++ 
++ 
++ 
+++#include "winsock2.h"
++ #include "windows.h"
++ #include "errno.h"
++ #include "signal.h"
++@@ -923,20 +924,6 @@ sigprocmask (int how , const sigset_t *s
++   return 0;
++ }
++   
++-void
++-fix_filename(object pathname, char *filename1) {
++-
++-  char *filename=filename1,*p=filename;
++-  extern char *getwd();
++-
++-  while (*p) {
++-    if (*p=='\\') *p='/';
++-    p++;
++-  }
++-
++-}
++-
++-
++ char *GCLExeName ( void )
++ {
++     static char module_name_buf[128];
++@@ -948,3 +935,35 @@ char *GCLExeName ( void )
++     }
++     return ( (char *) rv );
++ }
+++
+++int
+++vsystem(const char *command) {
+++
+++  STARTUPINFO s={0};
+++  PROCESS_INFORMATION p={0};
+++  long unsigned int e;
+++  char *cmd=NULL,*r;
+++
+++  if (!strpbrk(command,"\"'$<>")) {
+++
+++    cmd=FN1;
+++    massert((r=strpbrk(command," \n\t"))-command<sizeof(FN1));
+++    memcpy(FN1,command,r-command);
+++    FN1[r-command]=0;
+++
+++  } else {
+++
+++    massert(snprintf(FN1,sizeof(FN1),"cmd /c %s",command)>=0);
+++    command=FN1;
+++
+++  }
+++
+++  massert(CreateProcess(cmd,(void *)command,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW,NULL,NULL,&s,&p));
+++  massert(!WaitForSingleObject(p.hProcess,INFINITE));
+++  massert(GetExitCodeProcess(p.hProcess,&e));
+++  massert(CloseHandle(p.hProcess));
+++  massert(CloseHandle(p.hThread));
+++
+++  return e;
+++
+++}
++--- gcl-2.6.12.orig/o/sfaslcoff.c
+++++ gcl-2.6.12/o/sfaslcoff.c
++@@ -47,7 +47,16 @@ struct scnhdr {
++ #define ALLOC_SEC(sec) (sec->s_flags&(SEC_CODE|SEC_DATA|SEC_BSS))
++ #define  LOAD_SEC(sec) (sec->s_flags&(SEC_CODE|SEC_DATA))
++ 
++-#define STOP(s_,op_) ({char *_s=s_,_c=_s[8];_s[8]=0;op_;_s[8]=_c;})
+++#define NM(sym_,tab_,nm_,op_)                                \
+++  ({char _c=0,*nm_;                                  \
+++    if ((sym_)->n.n.n_zeroes)                                \
+++      {(nm_)=(sym_)->n.n_name;_c=(nm_)[8];(nm_)[8]=0;}       \
+++    else                                             \
+++      (nm_)=(tab_)+(sym_)->n.n.n_offset;             \
+++    op_;                                             \
+++    if (_c) (nm_)[8]=_c;                             \
+++  })
+++
++ 
++ struct reloc {
++   union {
++@@ -164,7 +173,7 @@ get_sym_value(const char *name) {
++ static void
++ relocate_symbols(struct syment *sym,struct syment *sye,struct scnhdr *sec1,char *st1) {
++ 
++-  struct node *answ;
+++  long value;
++ 
++   for (;sym<sye;sym++) {
++ 
++@@ -173,10 +182,9 @@ relocate_symbols(struct syment *sym,stru
++ 
++     else if (!sym->n_scnum) {
++ 
++-      if (sym->n.n.n_zeroes)
++-     STOP(sym->n.n_name,sym->n_value=get_sym_value(sym->n.n_name));
++-      else
++-     sym->n_value=get_sym_value(st1+sym->n.n.n_offset);
+++      NM(sym,st1,s,value=get_sym_value(s));
+++
+++      sym->n_value=value;
++ 
++     }
++ 
++@@ -256,10 +264,7 @@ load_self_symbols() {
++     
++     ns++;
++ 
++-    if (sym->n.n.n_zeroes)
++-      STOP(sym->n.n_name,sl+=strlen(sym->n.n_name)+1);
++-    else
++-      sl+=strlen(st1+sym->n.n.n_offset)+1;
+++    NM(sym,st1,s,sl+=strlen(s)+1);
++   
++     sym+=sym->n_numaux;
++ 
++@@ -274,10 +279,7 @@ load_self_symbols() {
++     if (sym->n_sclass!=2 || sym->n_scnum<1)
++       continue;
++ 
++-    if (sym->n.n.n_zeroes)
++-      STOP(sym->n.n_name,strcpy(st,sym->n.n_name));
++-    else
++-      strcpy(st,st1+sym->n.n.n_offset);
+++    NM(sym,st1,s,strcpy(st,s));
++     
++     sec=sec1+sym->n_scnum-1;
++     jj=sym->n_value+sec->s_vaddr+h->h_ibase;
++@@ -343,7 +345,7 @@ find_init_string(const char *s) {
++   struct syment *sy1,*sym,*sye;
++   char *st1,*ste;
++   void *st,*est;
++-  object o;
+++  object o=OBJNULL;
++ 
++   massert(f=fopen(s,"r"));
++   massert(st=get_mmap(f,&est));
++@@ -358,13 +360,9 @@ find_init_string(const char *s) {
++ 
++   for (sym=sy1;sym<sye;sym++) {
++ 
++-    s=sym->n.n.n_zeroes ? sym->n.n_name : st1+sym->n.n.n_offset;
++-    
++-    if (!strncmp(s,"_init_",6)) {
++-      if (sym->n.n.n_zeroes)
++-     STOP((char *)s,o=make_simple_string(s));
++-      else
++-     o=make_simple_string(s);
+++    NM(sym,st1,s,if (!strncmp(s,"_init_",6)) o=make_simple_string(s));
+++
+++    if (o!=OBJNULL) {
++       massert(!un_mmap(st,&est));
++       massert(!fclose(f));
++       return o;
++--- gcl-2.6.12.orig/o/sockets.c
+++++ gcl-2.6.12/o/sockets.c
++@@ -33,8 +33,8 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #  include <netinet/in.h>
++ #  include <arpa/inet.h>
++ #else
++-#  include <windows.h>
++ #  include <winsock2.h>
+++#  include <windows.h>
++ #endif
++ 
++ #ifdef __STDC__
++--- gcl-2.6.12.orig/o/unexnt.c
+++++ gcl-2.6.12/o/unexnt.c
++@@ -780,7 +780,7 @@ map_in_heap (char *filename)
++     }
++     
++   size = get_committed_heap_size ();
++-  file_base = MapViewOfFileEx (file_mapping, FILE_MAP_COPY, 0, 
+++  file_base = MapViewOfFileEx (file_mapping, FILE_MAP_COPY|FILE_MAP_EXECUTE, 0,
++                             heap_index_in_executable, size,
++                             get_heap_start ());
++   if (file_base != 0) 
++@@ -794,7 +794,7 @@ map_in_heap (char *filename)
++   CloseHandle (file_mapping);
++ 
++   if (VirtualAlloc (get_heap_start (), get_committed_heap_size (),
++-                 MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE) == NULL)
+++                 MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE) == NULL)
++     {
++       i = GetLastError ();
++       do_gcl_abort();
++@@ -1057,7 +1057,7 @@ sbrk (ptrdiff_t increment)
++ 
++       /* Commit more of our heap. */
++       if (VirtualAlloc (data_region_end, size, MEM_COMMIT,
++-                     PAGE_READWRITE) == NULL)
+++                     PAGE_EXECUTE_READWRITE) == NULL)
++      return NULL;
++       data_region_end += size;
++ 
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -21,6 +21,7 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ 
++ #include <unistd.h>
++ #include <errno.h>
+++#include <string.h>
++ 
++ #define IN_UNIXFSYS
++ #include "include.h"
++@@ -72,39 +73,43 @@ coerce_to_filename1(object spec, char *p
++   memcpy(p,namestring->st.st_self,namestring->st.st_fillp);
++   p[namestring->st.st_fillp]=0;
++ 
++-#ifdef FIX_FILENAME
++-  FIX_FILENAME(spec,p);
++-#endif
++-
++ }
++ 
+++#ifndef __MINGW32__
+++static char GETPW_BUF[4096];
+++#endif
+++
++ DEFUN_NEW("UID-TO-NAME",object,fSuid_to_name,SI,1,1,NONE,OI,OO,OO,OO,(fixnum uid),"") {
+++#ifndef __MINGW32__
++   struct passwd *pwent,pw;
++   long r;
++ 
++   massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
++-  massert(r<=sizeof(FN1));/*FIXME maybe once at image startup*/
+++  massert(r<=sizeof(GETPW_BUF));/*FIXME maybe once at image startup*/
++ 
++-  massert(!getpwuid_r(uid,&pw,FN1,r,&pwent));
+++  massert(!getpwuid_r(uid,&pw,GETPW_BUF,r,&pwent));
++ 
++   RETURN1(make_simple_string(pwent->pw_name));
++-
+++#else
+++  RETURN1(Cnil);
+++#endif
++ }
++ 
++ DEFUN_NEW("HOME-NAMESTRING",object,fShome_namestring,SI,1,1,NONE,OO,OO,OO,OO,(object nm),"") {
++ 
+++#ifndef __MINGW32__
++   struct passwd *pwent,pw;
++   long r;
++ 
++   massert((r=sysconf(_SC_GETPW_R_SIZE_MAX))>=0);
++-  massert(r<=sizeof(FN1));/*FIXME maybe once at image startup*/
+++  massert(r<=sizeof(GETPW_BUF));/*FIXME maybe once at image startup*/
++ 
++   if (nm->st.st_fillp==1)
++ 
++     if ((pw.pw_dir=getenv("HOME")))
++       pwent=&pw;
++     else
++-      massert(!getpwuid_r(getuid(),&pw,FN1,r,&pwent) && pwent);
+++      massert(!getpwuid_r(getuid(),&pw,GETPW_BUF,r,&pwent) && pwent);
++ 
++   else {
++ 
++@@ -112,15 +117,19 @@ DEFUN_NEW("HOME-NAMESTRING",object,fShom
++     memcpy(FN2,nm->st.st_self+1,nm->st.st_fillp-1);
++     FN2[nm->st.st_fillp-1]=0;
++ 
++-    massert(!getpwnam_r(FN2,&pw,FN1,r,&pwent) && pwent);
+++    massert(!getpwnam_r(FN2,&pw,GETPW_BUF,r,&pwent) && pwent);
++ 
++   }
++ 
++-  massert(strlen(pwent->pw_dir)+2<sizeof(FN3));
++-  memcpy(FN3,pwent->pw_dir,strlen(pwent->pw_dir));
++-  FN3[strlen(pwent->pw_dir)]='/';
++-  FN3[strlen(pwent->pw_dir)+1]=0;
+++  massert((r=strlen(pwent->pw_dir))+2<sizeof(FN3));
+++  memcpy(FN3,pwent->pw_dir,r);
+++  FN3[r]='/';
+++  FN3[r+1]=0;
++   RETURN1(make_simple_string(FN3));
+++#else
+++  massert(snprintf(FN1,sizeof(FN1)-1,"%s%s",getenv("SystemDrive"),getenv("HOMEPATH"))>=0);
+++  RETURN1(make_simple_string(FN1));
+++#endif
++ 
++ }
++ 
++@@ -160,28 +169,61 @@ DEF_ORDINARY("DIRECTORY",sKdirectory,KEY
++ DEF_ORDINARY("LINK",sKlink,KEYWORD,"");
++ DEF_ORDINARY("FILE",sKfile,KEYWORD,"");
++ 
+++object
+++file_stream(object x) {
+++  if (type_of(x)==t_stream)
+++    switch(x->sm.sm_mode) {
+++    case smm_input:
+++    case smm_output:
+++    case smm_io:
+++    case smm_probe:
+++      return x;
+++    case smm_synonym:
+++      return file_stream(x->sm.sm_object0->s.s_dbind);
+++    default:
+++      break;
+++  }
+++  return Cnil;
+++}
+++
+++
++ DEFUNM_NEW("STAT",object,fSstat,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++ 
++   struct stat ss;
++ 
++-  check_type_string(&x);
++-  coerce_to_filename(x,FN1);
+++  if (type_of(x)==t_string) {
+++
+++    coerce_to_filename(x,FN1);
++ 
++ #ifdef __MINGW32__
++-  {
++-    char *p=FN1+strlen(FN1)-1;
++-    for (;p>FN1 && *p=='/';p--)
++-      *p=0;
++-  }
+++    {char *p=FN1+strlen(FN1)-1;for (;p>FN1 && *p=='/';p--) *p=0;}
++ #endif
++-  if (lstat(FN1,&ss))
+++    if (lstat(FN1,&ss))
+++      RETURN1(Cnil);
+++  } else if ((x=file_stream(x))!=Cnil&&x->sm.sm_fp) {
+++    if (fstat(fileno(x->sm.sm_fp),&ss))
+++      RETURN1(Cnil);
+++  } else
++     RETURN1(Cnil);
++-  else
++-    RETURN4(S_ISDIR(ss.st_mode) ? sKdirectory :
++-         (S_ISLNK(ss.st_mode) ? sKlink : sKfile),
++-         make_fixnum(ss.st_size),
++-         make_fixnum(ss.st_mtime),
++-         make_fixnum(ss.st_uid));
+++
+++  RETURN4(S_ISDIR(ss.st_mode) ? sKdirectory :
+++       (S_ISLNK(ss.st_mode) ? sKlink : sKfile),
+++       make_fixnum(ss.st_size),
+++       make_fixnum(ss.st_mtime),
+++       make_fixnum(ss.st_uid));
+++
+++}
+++
+++DEFUN_NEW("FTELL",object,fSftell,SI,1,1,NONE,IO,OO,OO,OO,(object x),"") {
+++
+++  RETURN1((x=file_stream(x))!=Cnil&&x->sm.sm_fp ? (object)ftell(x->sm.sm_fp) : (object)0);
+++
+++}
+++
+++DEFUN_NEW("FSEEK",object,fSfseek,SI,2,2,NONE,OO,IO,OO,OO,(object x,fixnum pos),"") {
+++
+++  RETURN1((x=file_stream(x))!=Cnil&&x->sm.sm_fp&&!fseek(x->sm.sm_fp,pos,SEEK_SET) ? Ct : Cnil);
+++
++ }
++ 
++ #include <sys/types.h>
++@@ -198,7 +240,11 @@ DEFUN_NEW("READLINKAT",object,fSreadlink
++   massert(z1<sizeof(FN1));
++   memcpy(FN1,s->st.st_self,z1);
++   FN1[z1]=0;
+++#ifndef __MINGW32__
++   massert((l=readlinkat(d ? dirfd((DIR *)d) : AT_FDCWD,FN1,FN2,sizeof(FN2)))>=0 && l<sizeof(FN2));
+++#else
+++  l=0;
+++#endif
++   FN2[l]=0;
++   RETURN1(make_simple_string(FN2));
++ 
++@@ -237,13 +283,15 @@ DEFUN_NEW("SETENV",object,fSsetenv,SI,2,
++ DEFUN_NEW("OPENDIR",object,fSopendir,SI,1,1,NONE,IO,OO,OO,OO,(object x),"") {
++   check_type_string(&x);
++   coerce_to_filename(x,FN1);
++-  return (object)opendir(FN1);
+++  return (object)opendir(strlen(FN1) ? FN1 : "./");
++ }
++ 
++-#ifdef HAVE_D_TYPE
++-  
+++
++ DEFUN_NEW("D-TYPE-LIST",object,fSd_type_list,SI,0,0,NONE,OI,OO,OO,OO,(void),"") {
++-  RETURN1(list(8,
+++  RETURN1(
+++
+++#ifdef HAVE_D_TYPE
+++       list(8,
++             MMcons(make_fixnum(DT_BLK),make_keyword("BLOCK")),
++             MMcons(make_fixnum(DT_CHR),make_keyword("CHAR")),
++             MMcons(make_fixnum(DT_DIR),make_keyword("DIRECTORY")),
++@@ -252,11 +300,21 @@ DEFUN_NEW("D-TYPE-LIST",object,fSd_type_
++             MMcons(make_fixnum(DT_REG),make_keyword("FILE")),
++             MMcons(make_fixnum(DT_SOCK),make_keyword("SOCKET")),
++             MMcons(make_fixnum(DT_UNKNOWN),make_keyword("UNKNOWN"))
++-            ));
++-}
+++            )
++ #else
++ #define DT_UNKNOWN 0
+++#define DT_REG 1
+++#define DT_DIR 2
+++       list(3,
+++            MMcons(make_fixnum(DT_REG),make_keyword("FILE")),
+++            MMcons(make_fixnum(DT_DIR),make_keyword("DIRECTORY")),
+++            MMcons(make_fixnum(DT_UNKNOWN),make_keyword("UNKNOWN"))
+++            )
++ #endif
+++       );
+++}
+++
+++
++ 
++ DEFUN_NEW("READDIR",object,fSreaddir,SI,3,3,NONE,OI,IO,OO,OO,(fixnum x,fixnum y,object s),"") {
++ 
++@@ -264,15 +322,21 @@ DEFUN_NEW("READDIR",object,fSreaddir,SI,
++   object z;
++   long tl;
++   size_t l;
+++  long d_type=DT_UNKNOWN;
+++#ifdef HAVE_D_TYPE
+++#define get_d_type(e,s) e->d_type
+++#else
+++#define get_d_type(e,s) \
+++  ({struct stat ss;\
+++    massert(snprintf(FN1,sizeof(FN1),"%-*.*s%s",s->st.st_fillp,s->st.st_fillp,s->st.st_self,e->d_name)>=0);\
+++    lstat(FN1,&ss);S_ISDIR(ss.st_mode) ? DT_DIR : DT_REG;})
+++#endif
++ 
++   if (!x) RETURN1(Cnil);
++ 
++   tl=telldir((DIR *)x);
++ 
++-#ifndef HAVE_D_TYPE
++-  y=DT_UNKNOWN;
++-#endif
++-  for (;(e=readdir((DIR *)x)) && y!=DT_UNKNOWN && e->d_type!=y;);
+++  for (;(e=readdir((DIR *)x)) && y!=DT_UNKNOWN && y!=(d_type=get_d_type(e,s)););
++   if (!e) RETURN1(Cnil);
++ 
++   if (s==Cnil)
++@@ -290,9 +354,7 @@ DEFUN_NEW("READDIR",object,fSreaddir,SI,
++     }
++   }
++ 
++-#ifdef HAVE_D_TYPE
++-  if (y==DT_UNKNOWN) z=MMcons(z,make_fixnum(e->d_type));
++-#endif
+++  if (y==DT_UNKNOWN) z=MMcons(z,make_fixnum(d_type));
++ 
++   RETURN1(z);
++ 
++--- gcl-2.6.12.orig/o/unixsys.c
+++++ gcl-2.6.12/o/unixsys.c
++@@ -24,10 +24,14 @@ Foundation, 675 Mass Ave, Cambridge, MA
++ #include <string.h>
++ #include <sys/stat.h>
++ #include <sys/types.h>
+++#ifndef __MINGW32__
++ #include <sys/wait.h>
+++#endif
++ 
++ #include "include.h"
++ 
+++#ifndef __MINGW32__
+++
++ int
++ vsystem(const char *command) {
++ 
++@@ -43,12 +47,13 @@ vsystem(const char *command) {
++ 
++   else {
++ 
++-    z=alloca(n);
++-    memcpy(z,command,n);
+++    massert(n<sizeof(FN1));
+++    memcpy((z=FN1),command,n);
++     for (j=1,c=z;strtok(c,spc);c=NULL,j++);
++ 
++     memcpy(z,command,n);
++-    p1=alloca(j*sizeof(*p1));
+++    massert(j*sizeof(*p1)<sizeof(FN2));
+++    p1=(void *)FN2;
++     for (pp=p1,c=z;(*pp=strtok(c,spc));c=NULL,pp++);
++ 
++   }
++@@ -68,6 +73,7 @@ vsystem(const char *command) {
++   return s;
++ 
++ }
+++#endif
++ 
++ 
++ #ifdef ATT3B2
++@@ -104,104 +110,10 @@ char *command;
++ }
++ #endif
++ 
++-#ifdef _WIN32
++-
++-DEFVAR("*WINE-DETECTED*",sSAwine_detectedA,SI,Cnil,"");
++-
++-#include "windows.h"
++-
++-static int mpid;
++-
++-void
++-close_msys() {
++-
++-  msystem("");
++-
++-}
++-
++-void
++-detect_wine() {
++-
++-  char b[4096];
++-  struct stat ss;
++-  const char *s="/proc/self/status";
++-  FILE *f;
++-  object o;
++-
++-  sSAwine_detectedA->s.s_dbind=Cnil;
++-
++-  if (stat(s,&ss))
++-    return;
++-
++-  massert(f=fopen(s,"r"));
++-  massert(fscanf(f,"%s",b)==1);
++-  massert(fscanf(f,"%s",b)==1);
++-  massert(!fclose(f));
++-
++-  if (strncmp("wineserver",b,9))
++-    return;
++-
++-  massert(o=sSAsystem_directoryA->s.s_dbind);
++-  massert(o!=Cnil);
++-  mpid=getpid();
++-  
++-  massert(snprintf(b,sizeof(b),"%-.*smsys /tmp/ out%0d tmp%0d log%0d",
++-                o->st.st_fillp,o->st.st_self,mpid,mpid,mpid)>0);
++-  massert(!psystem(b));
++-
++-  sSAwine_detectedA->s.s_dbind=Ct;
++-  
++-  massert(!atexit(close_msys));
++-  
++-}
++-#endif  
++-
++ int
++ msystem(const char *s) {
++ 
++-  int r;
++-
++-#ifdef _WIN32
++-
++-  if (sSAwine_detectedA->s.s_dbind==Ct) {
++-
++-    char b[4096],b1[4096],c;
++-    FILE *fp;
++-
++-    massert(snprintf(b,sizeof(b),"/tmp/out%0d",mpid)>0);
++-    massert(snprintf(b1,sizeof(b1),"%s1",b)>0);
++-
++-    massert(fp=fopen(b1,"w"));
++-    massert(fprintf(fp,"%s",s)>=0);
++-    massert(!fclose(fp));
++-
++-    massert(MoveFileEx(b1,b,MOVEFILE_REPLACE_EXISTING));
++-    
++-    if (!*s)
++-      return 0;
++-    
++-    for (;;Sleep(100)) {
++-      
++-      massert(fp=fopen(b,"r"));
++-      massert((c=fgetc(fp))!=EOF);
++-      if (c!=s[0]) {
++-     massert(ungetc(c,fp)!=EOF);
++-     break;
++-      }
++-      massert(!fclose(fp));
++-      
++-    }
++-    
++-    massert(fscanf(fp,"%d",&r)==1);
++-    massert(!fclose(fp));
++-
++-  } else
++-
++-#endif
++-
++-    r=psystem(s);
++-
++-  return r;
+++  return psystem(s);
++ 
++ }
++ 
++--- gcl-2.6.12.orig/unixport/makefile
+++++ gcl-2.6.12/unixport/makefile
++@@ -77,8 +77,8 @@ sys_init.lsp: sys_init.lsp.in
++              -e "s#@LI-MINVERS@#`cat ../minvers | cut -f1 -d.`#1" \
++              -e "s#@LI-MAJVERS@#`cat ../majvers`#1" \
++              -e "s#@LI-RELEASE@#`cat ../release`#1" \
++-             -e "s#@LI-CC@#\"$(CC) -c $(FINAL_CFLAGS)\"#1" \
++-             -e "s#@LI-LD@#\"$(CC) $(LD_FLAGS) -o \"#1" \
+++             -e "s#@LI-CC@#\"$(GCL_CC) -c $(FINAL_CFLAGS)\"#1" \
+++             -e "s#@LI-LD@#\"$(GCL_CC) $(LD_FLAGS) -o \"#1" \
++              -e "s#@LI-LD-LIBS@#\" $(LD_LIBS_PRE) -l$* $(LD_LIBS_POST)\"#1" \
++              -e "s#@LI-OPT-THREE@#\"$(O3FLAGS)\"#1" \
++              -e "s#@LI-OPT-TWO@#\"$(O2FLAGS)\"#1" \
++@@ -92,7 +92,7 @@ saved_%:raw_% $(RSYM) sys_init.lsp raw_%
++ 
++      cp sys_init.lsp foo
++      echo "(unless si::*quit-tags* (in-package \"USER\")(system:save-system \"$@\"))" >>foo
++-     ar x lib$*.a $$(ar t lib$*.a |grep ^gcl_)
+++     j=$$(ar t lib$*.a |grep ^gcl_);[ "$$j" = "" ] || ar x lib$*.a $$j #accelerator
++      $(PORTDIR)/raw_$*$(EXE) $(PORTDIR)/ -libdir $(GCLDIR)/ < foo
++ #       check that saved image can be prelinked
++      [ "$(PRELINK_CHECK)" = "" ] || \
++--- gcl-2.6.12.orig/unixport/sys.c
+++++ gcl-2.6.12/unixport/sys.c
++@@ -15,16 +15,6 @@ ar_init_fn(void (fn)(void),const char *s
++   if (stat(s,&ss)) {
++     assert(snprintf(b,sizeof(b),"ar x %-.*slib%sgcl.a %s",sysd->st.st_fillp,sysd->st.st_self,FLAVOR,s)>0);
++     assert(!msystem(b));
++-#ifdef _WIN32
++-    if (sSAwine_detectedA->s.s_dbind!=Cnil) {
++-      char *n;
++-      unsigned l;
++-      l=strlen(s)+6;
++-      n=alloca(l);
++-      snprintf(n,l,"/tmp/%s",s);
++-      s=(void *)n;
++-    }
++-#endif
++   }
++   gcl_init_or_load1(fn,s);
++   assert(!unlink(s));
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a5aab6c5aee2bf02072cbf9b7849ab963689a3d3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,42 @@@
++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.
++ .
++ gcl (2.6.12-42) unstable; urgency=medium
++ .
++   * pathnames1.6
++   * Bug fix: "FTBFS with bindnow and PIE enabled", thanks to Balint Reczey
++     (Closes: #837481).
++   * Bug fix: "FTBFS with compilers that default to -fPIE (patch
++     attached)", thanks to Adam Conrad (Closes: #822820).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/822820
++Bug-Debian: https://bugs.debian.org/837481
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-26
++
++--- gcl-2.6.12.orig/o/makefile
+++++ gcl-2.6.12/o/makefile
++@@ -34,7 +34,7 @@ boot.o: boot.c $(DECL) boot.h
++      $(CC) -c $(CFLAGS) $(DEFS) -fPIC $*.c $(AUX_INFO) 
++ 
++ prelink.o: prelink.c $(DECL)
++-     $(CC) -fPIE -c $(filter-out -pg,$(CFLAGS)) $(DEFS) $*.c $(AUX_INFO)
+++     $(CC) -c $(filter-out -pg,$(CFLAGS)) -fPIE $(DEFS) $*.c $(AUX_INFO)
++ 
++ %.o: %.c $(DECL)
++      $(CC) -c $(CFLAGS) $(DEFS) $*.c $(AUX_INFO) 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..64d424ab02f4e38c24c5237ee1800dca35785eb8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,601 @@@
++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.
++ .
++ gcl (2.6.12-42) unstable; urgency=medium
++ .
++   * pathnames1.6
++   * Bug fix: "FTBFS with bindnow and PIE enabled", thanks to Balint Reczey
++     (Closes: #837481).
++   * Bug fix: "FTBFS with compilers that default to -fPIE (patch
++     attached)", thanks to Adam Conrad (Closes: #822820).
++Author: Camm Maguire <camm@debian.org>
++Bug-Debian: https://bugs.debian.org/822820
++Bug-Debian: https://bugs.debian.org/837481
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-27
++
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -3853,9 +3853,8 @@ if echo $GCL_CC |grep gcc |grep -q win;
++ fi
++ 
++ 
++-add_arg_to_tcflags() {
+++add_arg_to_cflags() {
++ 
++-    local i=1
++     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAG $1" >&5
++ $as_echo_n "checking for CFLAG $1... " >&6; }
++     CFLAGS_ORI=$CFLAGS
++@@ -3877,8 +3876,8 @@ main ()
++ }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++-  TCFLAGS="$TCFLAGS $1";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++-$as_echo "yes" >&6; };i=0
+++  CFLAGS="$CFLAGS_ORI $1";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++$as_echo "yes" >&6; };return 0
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++@@ -3888,27 +3887,26 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++     CFLAGS=$CFLAGS_ORI
++-    return $i
+++    return 1
++ 
++ }
++ 
++-assert_arg_to_tcflags() {
++-    if ! add_arg_to_tcflags $1 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot add $1 to CFLAGS" >&5
+++assert_arg_to_cflags() {
+++    if ! add_arg_to_cflags $1 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot add $1 to CFLAGS" >&5
++ $as_echo "cannot add $1 to CFLAGS" >&6; }; exit 1 ; fi
++     return 0
++ }
++ 
++-add_args_to_tcflags() {
+++add_args_to_cflags() {
++ 
++     while test "$#" -ge 1 ; do
++-     add_arg_to_tcflags $1
+++     add_arg_to_cflags $1
++      shift
++     done
++ }
++ 
++-add_arg_to_tldflags() {
+++add_arg_to_ldflags() {
++ 
++-    local i=1
++     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LDFLAG $1" >&5
++ $as_echo_n "checking for LDFLAG $1... " >&6; }
++     LDFLAGS_ORI=$LDFLAGS
++@@ -3929,8 +3927,8 @@ main ()
++ }
++ _ACEOF
++ if ac_fn_c_try_run "$LINENO"; then :
++-  TLDFLAGS="$TLDFLAGS $1";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++-$as_echo "yes" >&6; };i=0
+++  LDFLAGS="$LDFLAGS_ORI $1";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+++$as_echo "yes" >&6; };return 0
++ else
++   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++ $as_echo "no" >&6; }
++@@ -3940,20 +3938,20 @@ rm -f core *.core core.conftest.* gmon.o
++ fi
++ 
++     LDFLAGS=$LDFLAGS_ORI
++-    return $i
+++    return 1
++ 
++ }
++ 
++-assert_arg_to_tldflags() {
++-    if ! add_arg_to_tldflags $1 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot add $1 to LDFLAGS" >&5
+++assert_arg_to_ldflags() {
+++    if ! add_arg_to_ldflags $1 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot add $1 to LDFLAGS" >&5
++ $as_echo "cannot add $1 to LDFLAGS" >&6; }; exit 1 ; fi
++     return 0
++ }
++ 
++-add_args_to_tldflags() {
+++add_args_to_ldflags() {
++ 
++     while test "$#" -ge 1 ; do
++-     add_arg_to_tldflags $1
+++     add_arg_to_ldflags $1
++      shift
++     done
++ }
++@@ -3975,16 +3973,14 @@ $as_echo "removing $1 from LDFLAGS" >&6;
++ 
++ }
++ 
++-TCFLAGS=""
++-add_args_to_tcflags -fsigned-char -pipe \
+++add_args_to_cflags -fsigned-char -pipe \
++                     -fno-builtin-malloc -fno-builtin-free \
++                     -fno-PIE -fno-pie -fno-PIC -fno-pic \
++                  -Wall \
++                  -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign \
++                  -Wno-unused-but-set-variable -Wno-misleading-indentation
++ 
++-TLDFLAGS=""
++-add_args_to_tldflags -Wl,-no_pie -no-pie -Wl,-z,lazy
+++add_args_to_ldflags -Wl,-no_pie -no-pie -Wl,-z,lazy
++ 
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang" >&5
++ $as_echo_n "checking for clang... " >&6; }
++@@ -4032,29 +4028,29 @@ fi
++ 
++ case $use in
++     *mingw*)
++-     assert_arg_to_tcflags -fno-zero-initialized-in-bss
++-     assert_arg_to_tcflags -mms-bitfields;;
+++     assert_arg_to_cflags -fno-zero-initialized-in-bss
+++     assert_arg_to_cflags -mms-bitfields;;
++     *gnuwin*)
++-     assert_arg_to_tcflags -fno-zero-initialized-in-bss
++-     assert_arg_to_tcflags -mms-bitfields
++-        assert_arg_to_tldflags -Wl,--stack,8000000;;
+++     assert_arg_to_cflags -fno-zero-initialized-in-bss
+++     assert_arg_to_cflags -mms-bitfields
+++        assert_arg_to_ldflags -Wl,--stack,8000000;;
++     386-macosx)
++-     assert_arg_to_tldflags -Wl,-no_pie
+++     assert_arg_to_ldflags -Wl,-no_pie
++      if test "$build_cpu" = "x86_64" ; then
++-         assert_arg_to_tcflags -m64
++-         assert_arg_to_tldflags -m64
++-         assert_arg_to_tldflags -Wl,-headerpad,72
+++         assert_arg_to_cflags -m64
+++         assert_arg_to_ldflags -m64
+++         assert_arg_to_ldflags -Wl,-headerpad,72
++         else
++-         assert_arg_to_tcflags -m32
++-         assert_arg_to_tldflags -m32
++-         assert_arg_to_tldflags -Wl,-headerpad,56
+++         assert_arg_to_cflags -m32
+++         assert_arg_to_ldflags -m32
+++         assert_arg_to_ldflags -Wl,-headerpad,56
++         fi;;
++-    FreeBSD) assert_arg_to_tldflags -Z;;
+++    FreeBSD) assert_arg_to_ldflags -Z;;
++ esac
++ 
++ if test "$enable_static" = "yes" ; then
++-    assert_arg_to_tldflags -static
++-    assert_arg_to_tldflags -Wl,-zmuldefs
+++    assert_arg_to_ldflags -static
+++    assert_arg_to_ldflags -Wl,-zmuldefs
++ 
++ $as_echo "#define STATIC_LINKING 1" >>confdefs.h
++ 
++@@ -4148,7 +4144,7 @@ cat >>confdefs.h <<_ACEOF
++ #define GCL_GPROF_START $GCL_GPROF_START
++ _ACEOF
++ 
++-                        assert_arg_to_tcflags -pg
+++                        assert_arg_to_cflags -pg
++                         case $use in
++                             s390*) ;; # relocation truncation bug in gcc
++                             *) TLIBS="$TLIBS -pg";;
++@@ -4164,7 +4160,7 @@ fi
++ 
++ 
++ if test "$enable_debug" = "yes" ; then
++-    assert_arg_to_tcflags -g
+++    assert_arg_to_cflags -g
++     # for subconfigurations
++     CFLAGS="$CFLAGS -g"
++ else
++@@ -4175,41 +4171,41 @@ fi
++ # gcc on ppc cannot compile our new_init.c with full opts --CM
++ TONIFLAGS=""
++ case $use in
++-    powerpc*macosx) assert_arg_to_tcflags -mlongcall;;
+++    powerpc*macosx) assert_arg_to_cflags -mlongcall;;
++     *linux)
++      case $use in
++          alpha*)
++-             assert_arg_to_tcflags -mieee
+++             assert_arg_to_cflags -mieee
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          aarch64*)
++              TLIBS="$TLIBS -lgcc_s";;
++          hppa*)
++-             assert_arg_to_tcflags -mlong-calls
+++             assert_arg_to_cflags -mlong-calls
++              TLIBS="$TLIBS -lgcc_s" # workaround hppa __moddi3 local func symbols with default linker flags
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O2" ; TFPFLAG=""; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          mips*)
++              case $canonical in
++                  mips64*linux*)
++-                     assert_arg_to_tldflags -Wl,-z,now;;
+++                     assert_arg_to_ldflags -Wl,-z,now;;
++              esac
++              ;;
++          ia64*)
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          arm*)
++-             assert_arg_to_tcflags -mlong-calls
++-             assert_arg_to_tcflags -fdollars-in-identifiers
++-             assert_arg_to_tcflags -g #?
+++             assert_arg_to_cflags -mlong-calls
+++             assert_arg_to_cflags -fdollars-in-identifiers
+++             assert_arg_to_cflags -g #?
++              ;;
++          powerpc*)
++-             assert_arg_to_tcflags -mlongcall
+++             assert_arg_to_cflags -mlongcall
++              ;;
++      esac;;
++ esac
++ if test "$enable_pic" = "yes" ; then
++-    assert_arg_to_tcflags -fPIC
+++    assert_arg_to_cflags -fPIC
++ fi
++ 
++ 
++@@ -5385,7 +5381,7 @@ fi
++ 
++ 
++     TLIBS="$TLIBS -ldl -rdynamic"
++-    assert_arg_to_tcflags -fPIC
+++    assert_arg_to_cflags -fPIC
++ 
++ $as_echo "#define USE_DLOPEN 1" >>confdefs.h
++ 
++@@ -5869,7 +5865,7 @@ $as_echo "#define HAVE_XDR 1" >>confdefs
++ 
++      if test "$XDR_LIB" != " "; then
++          TLIBS="$TLIBS -l$XDR_LIB"
++-         add_arg_to_tcflags -I/usr/include/$XDR_LIB
+++         add_arg_to_cflags -I/usr/include/$XDR_LIB
++      fi
++     fi
++ fi
++@@ -6935,7 +6931,7 @@ if test "$use" != "386-gnu" ; then #hurd
++ $as_echo_n "checking finding default linker script... " >&6; }
++     touch unixport/gcl.script
++     echo "int main() {return 0;}" >foo.c
++-    $CC $TLDFLAGS -Wl,--verbose foo.c -o foo 2>&1 | \
+++    $CC $LDFLAGS -Wl,--verbose foo.c -o foo 2>&1 | \
++      $AWK '/\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=/ {i=1-i;next} {if (i) print}' >gcl.script
++     rm -rf foo.c foo
++ 
++@@ -6956,7 +6952,7 @@ $as_echo "$as_me: trying to adjust text
++             cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[0-9]*","0x" j,$0);} {print}' j=$j >gcl.script
++          #        diff -u gcl.script.def gcl.script
++             echo "int main() {return 0;}" >foo.c
++-            if ( $CC $TLDFLAGS -Wl,-T gcl.script foo.c -o foo && ./foo ) >/dev/null 2>&1 ; then
+++            if ( $CC $LDFLAGS -Wl,-T gcl.script foo.c -o foo && ./foo ) >/dev/null 2>&1 ; then
++              if test $n -lt $min ; then min=$n; fi;
++              if test $n -gt $max; then max=$n; fi;
++          elif test $max -gt 0 ; then
++@@ -7020,7 +7016,7 @@ $as_echo_n "checking our linker script..
++          { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
++ $as_echo "done" >&6; }
++          rm -f gcl.script.def
++-         LDFLAGS="$LDFLAGS -Wl,-T gcl.script "
+++         assert_arg_to_ldflags -Wl,-T,gcl.script
++          cp gcl.script unixport
++      else
++          { $as_echo "$as_me:${as_lineno-$LINENO}: result: none found or not needed" >&5
++@@ -9065,16 +9061,16 @@ fi
++ 
++ 
++ 
++-LDFLAGS="`echo $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'` $TLDFLAGS"
+++LDFLAGS="`echo $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'`"
++ 
++ LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS $LIBS $TLIBS"
++ 
++-FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS $TCFLAGS"
+++FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS"
++ 
++ # Work around bug with gcc on ppc -- CM
++-NIFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TONIFLAGS -I\$(GCLDIR)/o"
+++NIFLAGS="$CFLAGS $CPPFLAGS $TONIFLAGS -I\$(GCLDIR)/o"
++ 
++-CFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TO3FLAGS -I\$(GCLDIR)/o"
+++CFLAGS="$CFLAGS $CPPFLAGS $TO3FLAGS -I\$(GCLDIR)/o"
++ 
++ O3FLAGS=$TO3FLAGS
++ 
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -185,60 +185,58 @@ if echo $GCL_CC |grep gcc |grep -q win;
++ fi
++ AC_SUBST(GCL_CC)
++ 
++-add_arg_to_tcflags() {
+++add_arg_to_cflags() {
++     
++-    local i=1
++     AC_MSG_CHECKING([for CFLAG $1])
++     CFLAGS_ORI=$CFLAGS
++     CFLAGS="$CFLAGS -Werror $1 `echo $1|sed 's,-Wno-,-W,1'`"
++     AC_RUN_IFELSE(
++      [AC_LANG_PROGRAM([[]],[[]])],
++-     [TCFLAGS="$TCFLAGS $1";AC_MSG_RESULT([yes]);i=0],
+++     [CFLAGS="$CFLAGS_ORI $1";AC_MSG_RESULT([yes]);return 0],
++      [AC_MSG_RESULT([no])],
++      [AC_MSG_RESULT([no])])
++     CFLAGS=$CFLAGS_ORI
++-    return $i
+++    return 1
++     
++ }
++ 
++-assert_arg_to_tcflags() {
++-    if ! add_arg_to_tcflags $1 ; then AC_MSG_RESULT([cannot add $1 to CFLAGS]); exit 1 ; fi
+++assert_arg_to_cflags() {
+++    if ! add_arg_to_cflags $1 ; then AC_MSG_RESULT([cannot add $1 to CFLAGS]); exit 1 ; fi
++     return 0
++ }
++ 
++-add_args_to_tcflags() {
+++add_args_to_cflags() {
++     
++     while test "$#" -ge 1 ; do
++-     add_arg_to_tcflags $1
+++     add_arg_to_cflags $1
++      shift
++     done
++ }
++ 
++-add_arg_to_tldflags() {
+++add_arg_to_ldflags() {
++     
++-    local i=1
++     AC_MSG_CHECKING([for LDFLAG $1])
++     LDFLAGS_ORI=$LDFLAGS
++     LDFLAGS="$LDFLAGS -Werror $1"
++     AC_RUN_IFELSE(
++      [AC_LANG_PROGRAM([[]],[[]])],
++-     [TLDFLAGS="$TLDFLAGS $1";AC_MSG_RESULT([yes]);i=0],
+++     [LDFLAGS="$LDFLAGS_ORI $1";AC_MSG_RESULT([yes]);return 0],
++      [AC_MSG_RESULT([no])],
++      [AC_MSG_RESULT([no])])
++     LDFLAGS=$LDFLAGS_ORI
++-    return $i
+++    return 1
++     
++ }
++ 
++-assert_arg_to_tldflags() {
++-    if ! add_arg_to_tldflags $1 ; then AC_MSG_RESULT([cannot add $1 to LDFLAGS]); exit 1 ; fi
+++assert_arg_to_ldflags() {
+++    if ! add_arg_to_ldflags $1 ; then AC_MSG_RESULT([cannot add $1 to LDFLAGS]); exit 1 ; fi
++     return 0
++ }
++ 
++-add_args_to_tldflags() {
+++add_args_to_ldflags() {
++     
++     while test "$#" -ge 1 ; do
++-     add_arg_to_tldflags $1
+++     add_arg_to_ldflags $1
++      shift
++     done
++ }
++@@ -259,16 +257,14 @@ remove_arg_from_ldflags() {
++     
++ }
++ 
++-TCFLAGS=""
++-add_args_to_tcflags -fsigned-char -pipe \
+++add_args_to_cflags -fsigned-char -pipe \
++                     -fno-builtin-malloc -fno-builtin-free \
++                     -fno-PIE -fno-pie -fno-PIC -fno-pic \
++                  -Wall \
++                  -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign \
++                  -Wno-unused-but-set-variable -Wno-misleading-indentation
++ 
++-TLDFLAGS=""
++-add_args_to_tldflags -Wl,-no_pie -no-pie -Wl,-z,lazy
+++add_args_to_ldflags -Wl,-no_pie -no-pie -Wl,-z,lazy
++ 
++ AC_MSG_CHECKING([for clang])
++ AC_RUN_IFELSE(
++@@ -290,29 +286,29 @@ AC_RUN_IFELSE(
++ 
++ case $use in
++     *mingw*)
++-     assert_arg_to_tcflags -fno-zero-initialized-in-bss
++-     assert_arg_to_tcflags -mms-bitfields;;
+++     assert_arg_to_cflags -fno-zero-initialized-in-bss
+++     assert_arg_to_cflags -mms-bitfields;;
++     *gnuwin*)
++-     assert_arg_to_tcflags -fno-zero-initialized-in-bss
++-     assert_arg_to_tcflags -mms-bitfields
++-        assert_arg_to_tldflags -Wl,--stack,8000000;;
+++     assert_arg_to_cflags -fno-zero-initialized-in-bss
+++     assert_arg_to_cflags -mms-bitfields
+++        assert_arg_to_ldflags -Wl,--stack,8000000;;
++     386-macosx)
++-     assert_arg_to_tldflags -Wl,-no_pie
+++     assert_arg_to_ldflags -Wl,-no_pie
++      if test "$build_cpu" = "x86_64" ; then
++-         assert_arg_to_tcflags -m64
++-         assert_arg_to_tldflags -m64
++-         assert_arg_to_tldflags -Wl,-headerpad,72
+++         assert_arg_to_cflags -m64
+++         assert_arg_to_ldflags -m64
+++         assert_arg_to_ldflags -Wl,-headerpad,72
++         else
++-         assert_arg_to_tcflags -m32
++-         assert_arg_to_tldflags -m32
++-         assert_arg_to_tldflags -Wl,-headerpad,56
+++         assert_arg_to_cflags -m32
+++         assert_arg_to_ldflags -m32
+++         assert_arg_to_ldflags -Wl,-headerpad,56
++         fi;;
++-    FreeBSD) assert_arg_to_tldflags -Z;;
+++    FreeBSD) assert_arg_to_ldflags -Z;;
++ esac
++ 
++ if test "$enable_static" = "yes" ; then
++-    assert_arg_to_tldflags -static
++-    assert_arg_to_tldflags -Wl,-zmuldefs
+++    assert_arg_to_ldflags -static
+++    assert_arg_to_ldflags -Wl,-zmuldefs
++     AC_DEFINE(STATIC_LINKING,1,[staticly linked images])
++ fi
++ 
++@@ -353,7 +349,7 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++                     if test "$GCL_GPROF_START" != "" ; then
++                         AC_MSG_RESULT($GCL_GPROF_START)
++                         AC_DEFINE_UNQUOTED(GCL_GPROF_START,$GCL_GPROF_START,[starting address for gprof])
++-                        assert_arg_to_tcflags -pg
+++                        assert_arg_to_cflags -pg
++                         case $use in
++                             s390*) ;; # relocation truncation bug in gcc
++                             *) TLIBS="$TLIBS -pg";;
++@@ -365,7 +361,7 @@ AC_ARG_ENABLE([gprof],[  --enable-gprof
++             fi])
++ 
++ if test "$enable_debug" = "yes" ; then
++-    assert_arg_to_tcflags -g
+++    assert_arg_to_cflags -g
++     # for subconfigurations
++     CFLAGS="$CFLAGS -g"
++ else
++@@ -376,41 +372,41 @@ fi
++ # gcc on ppc cannot compile our new_init.c with full opts --CM
++ TONIFLAGS=""
++ case $use in 
++-    powerpc*macosx) assert_arg_to_tcflags -mlongcall;;
+++    powerpc*macosx) assert_arg_to_cflags -mlongcall;;
++     *linux)
++      case $use in
++          alpha*)
++-             assert_arg_to_tcflags -mieee
+++             assert_arg_to_cflags -mieee
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O0" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          aarch64*)
++              TLIBS="$TLIBS -lgcc_s";;
++          hppa*)
++-             assert_arg_to_tcflags -mlong-calls
+++             assert_arg_to_cflags -mlong-calls
++              TLIBS="$TLIBS -lgcc_s" # workaround hppa __moddi3 local func symbols with default linker flags
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O2" ; TFPFLAG=""; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          mips*)
++              case $canonical in
++                  mips64*linux*)
++-                     assert_arg_to_tldflags -Wl,-z,now;;
+++                     assert_arg_to_ldflags -Wl,-z,now;;
++              esac
++              ;;
++          ia64*)
++              if test "$enable_debug" != "yes" ; then TO3FLAGS="-O" ; fi #FIXME needed asof gcc 4.8.1
++              ;;
++          arm*)
++-             assert_arg_to_tcflags -mlong-calls
++-             assert_arg_to_tcflags -fdollars-in-identifiers
++-             assert_arg_to_tcflags -g #?
+++             assert_arg_to_cflags -mlong-calls
+++             assert_arg_to_cflags -fdollars-in-identifiers
+++             assert_arg_to_cflags -g #?
++              ;;
++          powerpc*) 
++-             assert_arg_to_tcflags -mlongcall
+++             assert_arg_to_cflags -mlongcall
++              ;;
++      esac;;
++ esac
++ if test "$enable_pic" = "yes" ; then
++-    assert_arg_to_tcflags -fPIC
+++    assert_arg_to_cflags -fPIC
++ fi
++ 
++ 
++@@ -715,7 +711,7 @@ if test "$enable_dlopen" = "yes" ; then
++     AC_CHECK_LIB([dl],[dlopen],,AC_MSG_ERROR([Cannot find dlopen]))
++     
++     TLIBS="$TLIBS -ldl -rdynamic"
++-    assert_arg_to_tcflags -fPIC
+++    assert_arg_to_cflags -fPIC
++     AC_DEFINE(USE_DLOPEN,1,[link compiled objects via libdl])
++ 
++ fi
++@@ -834,7 +830,7 @@ if test "$enable_xdr" != "no" ; then
++      AC_DEFINE(HAVE_XDR,1,[have xdr extensions])
++      if test "$XDR_LIB" != " "; then
++          TLIBS="$TLIBS -l$XDR_LIB"
++-         add_arg_to_tcflags -I/usr/include/$XDR_LIB
+++         add_arg_to_cflags -I/usr/include/$XDR_LIB
++      fi
++     fi
++ fi
++@@ -1345,7 +1341,7 @@ if test "$use" != "386-gnu" ; then #hurd
++     AC_MSG_CHECKING([finding default linker script])
++     touch unixport/gcl.script
++     echo "int main() {return 0;}" >foo.c
++-    $CC $TLDFLAGS -Wl,--verbose foo.c -o foo 2>&1 | \
+++    $CC $LDFLAGS -Wl,--verbose foo.c -o foo 2>&1 | \
++      $AWK '/\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=/ {i=1-i;next} {if (i) print}' >gcl.script
++     rm -rf foo.c foo
++     
++@@ -1364,7 +1360,7 @@ if test "$use" != "386-gnu" ; then #hurd
++             cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[[0-9]]*","0x" j,$0);} {print}' j=$j >gcl.script
++          #        diff -u gcl.script.def gcl.script
++             echo "int main() {return 0;}" >foo.c
++-            if ( $CC $TLDFLAGS -Wl,-T gcl.script foo.c -o foo && ./foo ) >/dev/null 2>&1 ; then
+++            if ( $CC $LDFLAGS -Wl,-T gcl.script foo.c -o foo && ./foo ) >/dev/null 2>&1 ; then
++              if test $n -lt $min ; then min=$n; fi; 
++              if test $n -gt $max; then max=$n; fi; 
++          elif test $max -gt 0 ; then
++@@ -1409,7 +1405,7 @@ if test "$use" != "386-gnu" ; then #hurd
++             cat gcl.script.def | $AWK '/SIZEOF_HEADERS/ {gsub("0x[[0-9]]*","0x" j,$0);} {print}' j=$j >gcl.script
++          AC_MSG_RESULT([done])
++          rm -f gcl.script.def
++-         LDFLAGS="$LDFLAGS -Wl,-T gcl.script "
+++         assert_arg_to_ldflags -Wl,-T,gcl.script
++          cp gcl.script unixport
++      else
++          AC_MSG_RESULT([none found or not needed])
++@@ -2116,16 +2112,16 @@ AC_CHECK_HEADERS(alloca.h)
++ AC_FUNC_ALLOCA
++ 
++ 
++-LDFLAGS="`echo $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'` $TLDFLAGS"
+++LDFLAGS="`echo $LDFLAGS | sed 's,gcl.script,../unixport/gcl.script,g'`"
++ AC_SUBST(LDFLAGS)
++ LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS $LIBS $TLIBS"
++ AC_SUBST(LIBS)
++-FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS $TCFLAGS"
+++FINAL_CFLAGS="$CFLAGS $CPPFLAGS $X_CFLAGS"
++ AC_SUBST(FINAL_CFLAGS)
++ # Work around bug with gcc on ppc -- CM
++-NIFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TONIFLAGS -I\$(GCLDIR)/o"
+++NIFLAGS="$CFLAGS $CPPFLAGS $TONIFLAGS -I\$(GCLDIR)/o"
++ AC_SUBST(NIFLAGS)
++-CFLAGS="$CFLAGS $CPPFLAGS $TCFLAGS $TO3FLAGS -I\$(GCLDIR)/o"
+++CFLAGS="$CFLAGS $CPPFLAGS $TO3FLAGS -I\$(GCLDIR)/o"
++ AC_SUBST(CFLAGS)
++ O3FLAGS=$TO3FLAGS
++ AC_SUBST(O3FLAGS)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..71ee3bd13277aa371400596187446dbbce759231
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5609 @@@
++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.
++ .
++ gcl (2.6.12-43) unstable; urgency=medium
++ .
++   * pathnames1.7
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2016-10-28
++
++--- gcl-2.6.12.orig/ansi-tests/ansi-aux.lsp
+++++ gcl-2.6.12/ansi-tests/ansi-aux.lsp
++@@ -1635,3 +1635,6 @@ the condition to go uncaught if it canno
++ 
++ (defmacro expand-in-current-env (macro-form &environment env)
++   (macroexpand macro-form env))
+++
+++(defun typep* (element type)
+++  (not (not (typep element type))))
++--- gcl-2.6.12.orig/clcs/sys-proclaim.lisp
+++++ gcl-2.6.12/clcs/sys-proclaim.lisp
++@@ -2,30 +2,14 @@
++ (COMMON-LISP::IN-PACKAGE "CONDITIONS") 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         CONDITIONS::IS-WARNING CONDITIONS::DEFAULT-REPORT
++-         CONDITIONS::IS-CONDITION CONDITIONS::CONDITIONP)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         CONDITIONS::COERCE-TO-FN CONDITIONS::SLOT-SYM)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::*)
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ARITHMETIC-ERROR T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PACKAGE-ERROR T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (INTERNAL-CONDITION T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNDEFINED-FUNCTION T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-SLOT T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-VARIABLE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CASE-FAILURE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PRINT-NOT-READABLE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (SIMPLE-CONDITION T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ABORT-FAILURE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (TYPE-ERROR T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CELL-ERROR T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (FILE-ERROR T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (END-OF-FILE T))|
++-         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (STREAM-ERROR T))|)) 
+++         COMMON-LISP::MAKE-CONDITION)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -36,11 +20,27 @@
++          CONDITIONS::|(PCL::FAST-METHOD MAKE-LOAD-FORM (CONDITION))|)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         CONDITIONS::COERCE-TO-FN CONDITIONS::SLOT-SYM)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         CONDITIONS::IS-CONDITION CONDITIONS::DEFAULT-REPORT
+++         CONDITIONS::IS-WARNING CONDITIONS::CONDITIONP)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
++              COMMON-LISP::*)
++-         COMMON-LISP::MAKE-CONDITION)) 
++\ No newline at end of file
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PACKAGE-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CASE-FAILURE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ABORT-FAILURE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (FILE-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-VARIABLE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (ARITHMETIC-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (END-OF-FILE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (STREAM-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (CELL-ERROR T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (SIMPLE-CONDITION T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNBOUND-SLOT T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (UNDEFINED-FUNCTION T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (INTERNAL-CONDITION T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (PRINT-NOT-READABLE T))|
+++         CONDITIONS::|(PCL::FAST-METHOD PRINT-OBJECT (TYPE-ERROR T))|)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/cmpnew/gcl_cmpmain.lsp
+++++ gcl-2.6.12/cmpnew/gcl_cmpmain.lsp
++@@ -430,7 +430,7 @@ Cannot compile ~a.~%"
++                           (si::copy-stream st *standard-output*))
++           (with-open-file (st hn)
++                           (si::copy-stream st *standard-output*))
++-          (when (eql (aref *objdump* 0) #\/);program found at startup in path
+++          (when *objdump*
++             (safe-system (si::string-concatenate *objdump* (namestring on))))
++           (mdelete-file cn)
++           (mdelete-file dn)
++--- gcl-2.6.12.orig/cmpnew/gcl_lfun_list.lsp
+++++ gcl-2.6.12/cmpnew/gcl_lfun_list.lsp
++@@ -43,7 +43,6 @@
++ (DEFSYSFUN 'RASSOC "Lrassoc" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'PPRINT "Lpprint" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'NSUBST-IF-NOT "Lnsubst_if_not" '(T T T *) 'T NIL NIL) 
++-(DEFSYSFUN 'FILE-POSITION "Lfile_position" '(T *) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING< "Lstring_l" '(T T *) 'T NIL NIL) 
++ (DEFSYSFUN 'REVERSE "Lreverse" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'STREAMP "Lstreamp" '(T) 'T NIL T) 
++@@ -67,7 +66,6 @@
++ (DEFSYSFUN 'CONS "Lcons" '(T T) 'T NIL NIL) 
++ (DEFSYSFUN 'LIST "Llist" '(*) 'T NIL NIL) 
++ (DEFSYSFUN 'USE-PACKAGE "Luse_package" '(T *) 'T NIL NIL) 
++-(DEFSYSFUN 'FILE-LENGTH "Lfile_length" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'MAKE-SYMBOL "Lmake_symbol" '(T) 'T NIL NIL) 
++ (DEFSYSFUN 'STRING-RIGHT-TRIM "Lstring_right_trim" '(T T) 'STRING NIL
++     NIL) 
++--- gcl-2.6.12.orig/cmpnew/sys-proclaim.lisp
+++++ gcl-2.6.12/cmpnew/sys-proclaim.lisp
++@@ -2,376 +2,394 @@
++ (COMMON-LISP::IN-PACKAGE "COMPILER") 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::STRING COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         COMPILER::TS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         COMPILER::C1MULTIPLE-VALUE-BIND COMPILER::C1VALUES
++-         COMPILER::C1RPLACA COMPILER::FUN-P
++-         COMPILER::FUNCTION-ARG-TYPES COMPILER::C1STRUCTURE-REF
++-         COMPILER::GET-RETURN-TYPE COMPILER::WT-FUNCALL-C
++-         COMPILER::MACRO-DEF-P COMPILER::T1DEFUN COMPILER::C1ASSOC
++-         COMPILER::SET-UP-VAR-CVS COMPILER::C2FUNCTION
++-         COMPILER::C1DM-BAD-KEY COMPILER::ADD-OBJECT
++-         COMPILER::WT-SWITCH-CASE COMPILER::VARARG-P
++-         COMPILER::C1TAGBODY COMPILER::C2GET COMPILER::VAR-REF
++-         COMPILER::SCH-LOCAL-FUN COMPILER::ADD-SYMBOL
++-         COMPILER::TAG-UNWIND-EXIT COMPILER::C1MULTIPLE-VALUE-SETQ
++-         COMPILER::C1PRINC COMPILER::WT-VAR-DECL COMPILER::C1QUOTE
++-         COMPILER::C2RPLACD COMPILER::CHECK-VREF
++-         COMPILER::PUSH-ARGS-LISPCALL COMPILER::C1MAPLIST
++-         COMPILER::ADD-REG1 COMPILER::C1OR COMPILER::WT-SYMBOL-FUNCTION
++-         COMPILER::TAG-P COMPILER::SAFE-SYSTEM COMPILER::C1ECASE
++-         COMPILER::LTVP COMPILER::GET-INCLUDED COMPILER::INFO-P
++-         COMPILER::FUN-INFO COMPILER::C1LOAD-TIME-VALUE
++-         COMPILER::GET-LOCAL-ARG-TYPES COMPILER::BLK-P
++-         COMPILER::BLK-EXIT COMPILER::C2VAR-KIND COMPILER::C2LOCATION
++-         COMPILER::WT1 COMPILER::WT-CCB-VS
++-         COMPILER::WT-DOWNWARD-CLOSURE-MACRO COMPILER::BLK-REF-CCB
++-         COMPILER::UNDEFINED-VARIABLE COMPILER::C1MULTIPLE-VALUE-CALL
++-         COMPILER::VAR-LOC COMPILER::C1SETQ COMPILER::C1NTH-CONDITION
++-         COMPILER::C2RPLACA COMPILER::FUN-REF COMPILER::C2VAR
++-         COMPILER::WT-CAR COMPILER::WT-LIST COMPILER::WRITE-BLOCK-OPEN
++-         COMPILER::INFO-VOLATILE COMPILER::GET-LOCAL-RETURN-TYPE
++-         COMPILER::AET-C-TYPE COMPILER::PUSH-ARGS COMPILER::TAG-REF-CLB
++-         COMPILER::BLK-REF COMPILER::VAR-P COMPILER::C1ADD-GLOBALS
++-         COMPILER::T3ORDINARY COMPILER::ADD-OBJECT2 COMPILER::SET-TOP
++-         COMPILER::T1DEFLA COMPILER::C1FUNCTION COMPILER::T3CLINES
++-         COMPILER::T1DEFCFUN COMPILER::C1VREF COMPILER::C1ASH
++-         COMPILER::BLK-NAME COMPILER::WT-CADR COMPILER::WT-DOWN
++-         COMPILER::C1TERPRI COMPILER::C2GETHASH COMPILER::C2GO-CCB
++-         COMPILER::SAVE-FUNOB COMPILER::T2DECLARE COMPILER::FUN-REF-CCB
++-         COMPILER::C1MAPCAR COMPILER::T1DEFMACRO
++-         COMPILER::C2TAGBODY-LOCAL COMPILER::C1STACK-LET
++-         COMPILER::INFO-TYPE COMPILER::T1MACROLET COMPILER::C1LET*
++-         COMPILER::C1RPLACD COMPILER::DECLARATION-TYPE
++-         COMPILER::T1ORDINARY COMPILER::C2EXPR* COMPILER::C1LOCAL-FUN
++-         COMPILER::WT-DATA-PACKAGE-OPERATION
++-         COMPILER::C1BOOLE-CONDITION SYSTEM::UNDEF-COMPILER-MACRO
++-         COMPILER::C2TAGBODY-BODY COMPILER::C1NTHCDR COMPILER::C1VAR
++-         COMPILER::C1MULTIPLE-VALUE-PROG1 COMPILER::C1NTHCDR-CONDITION
++-         COMPILER::CONSTANT-FOLD-P COMPILER::C1UNWIND-PROTECT
++-         COMPILER::PROCLAMATION COMPILER::C1NTH COMPILER::C1RETURN-FROM
++-         COMPILER::INFO-SP-CHANGE COMPILER::C1LENGTH
++-         COMPILER::CMP-MACRO-FUNCTION COMPILER::BLK-REF-CLB
++-         COMPILER::NAME-TO-SD COMPILER::CTOP-WRITE COMPILER::C1MAPCON
++-         COMPILER::C1FUNOB COMPILER::FIX-OPT COMPILER::C1RPLACA-NTHCDR
++-         COMPILER::C1FLET COMPILER::RESULT-TYPE COMPILER::C1CATCH
++-         COMPILER::C2DM-RESERVE-V COMPILER::VAR-NAME
++-         COMPILER::CMP-MACROEXPAND COMPILER::VERIFY-DATA-VECTOR
++-         COMPILER::T1CLINES COMPILER::C1MAPL COMPILER::T1DEFENTRY
++-         COMPILER::TAG-REF-CCB COMPILER::WT-VS
++-         COMPILER::LONG-FLOAT-LOC-P COMPILER::C1MAPCAN
++-         COMPILER::OBJECT-TYPE COMPILER::ADD-ADDRESS
++-         COMPILER::RESET-INFO-TYPE COMPILER::C1BOOLE3 COMPILER::C1MEMQ
++-         COMPILER::C1DEFINE-STRUCTURE COMPILER::TYPE-FILTER
++-         COMPILER::UNWIND-NO-EXIT COMPILER::C1FMLA-CONSTANT
++-         COMPILER::C2DM-RESERVE-VL COMPILER::C1FSET COMPILER::LTVP-EVAL
++-         COMPILER::C1GO COMPILER::WT-VV COMPILER::INFO-CHANGED-ARRAY
++-         COMPILER::C1FUNCALL COMPILER::C2TAGBODY-CCB
++-         COMPILER::TAG-LABEL COMPILER::VAR-KIND COMPILER::WT-VS*
++-         COMPILER::VAR-TYPE COMPILER::C2GO-LOCAL COMPILER::REGISTER
++-         COMPILER::T1PROGN COMPILER::C1BLOCK COMPILER::TAG-SWITCH
++-         COMPILER::VAR-REP-LOC COMPILER::C2BIND
++-         COMPILER::SET-PUSH-CATCH-FRAME COMPILER::COPY-INFO
++-         COMPILER::C1LIST-NTH COMPILER::CONS-TO-LISTA
++-         COMPILER::FUN-LEVEL COMPILER::C1DOWNWARD-FUNCTION
++-         COMPILER::THE-PARAMETER COMPILER::C2VALUES COMPILER::C1LABELS
++-         COMPILER::MAXARGS COMPILER::VAR-REF-CCB COMPILER::MDELETE-FILE
++-         COMPILER::WT-FUNCTION-LINK COMPILER::SAVE-AVMA
++-         COMPILER::VOLATILE COMPILER::ADD-CONSTANT COMPILER::C1APPLY
++-         COMPILER::C1GETHASH COMPILER::FUN-NAME COMPILER::DEFAULT-INIT
++-         COMPILER::CLINK COMPILER::WT-CDR COMPILER::PARSE-CVSPECS
++-         COMPILER::REP-TYPE COMPILER::C2GO-CLB
++-         COMPILER::ARGS-CAUSE-SIDE-EFFECT COMPILER::PUSH-DATA-INCF
++-         COMPILER::SCH-GLOBAL COMPILER::C1STRUCTURE-SET
++-         COMPILER::TAG-NAME COMPILER::INFO-REFERRED-ARRAY
++-         COMPILER::C1EXPR COMPILER::C1GET COMPILER::BLK-VAR
++-         COMPILER::TAG-REF COMPILER::C1MAPC COMPILER::SET-RETURN
++-         COMPILER::SHORT-FLOAT-LOC-P COMPILER::C1DECLARE
++-         COMPILER::WT-DATA1 COMPILER::FLAGS-POS
++-         COMPILER::BLK-VALUE-TO-GO COMPILER::NAME-SD1
++-         COMPILER::C2DOWNWARD-FUNCTION COMPILER::C1SHARP-COMMA
++-         COMPILER::INLINE-POSSIBLE COMPILER::WT-H1
++-         COMPILER::FIXNUM-LOC-P COMPILER::C1LET COMPILER::C1IF
++-         COMPILER::C1THE COMPILER::FUNCTION-RETURN-TYPE
++-         COMPILER::GET-ARG-TYPES COMPILER::INLINE-TYPE
++-         COMPILER::FUN-CFUN COMPILER::TAG-VAR COMPILER::CHARACTER-LOC-P
++-         COMPILER::CHECK-DOWNWARD COMPILER::C1PSETQ
++-         COMPILER::INLINE-BOOLE3-STRING COMPILER::C1THROW
++-         COMPILER::FSET-FN-NAME COMPILER::T1DEFINE-STRUCTURE
++-         COMPILER::NEED-TO-SET-VS-POINTERS COMPILER::C1PROGN
++-         COMPILER::C2FUNCALL-AUX COMPILER::C1MACROLET COMPILER::C1AND
++-         COMPILER::WT-VS-BASE COMPILER::ADD-LOOP-REGISTERS
++-         COMPILER::VAR-REGISTER COMPILER::C1PROGV COMPILER::C1SWITCH
++-         COMPILER::C1MEMBER COMPILER::C2TAGBODY-CLB
++-         COMPILER::CMP-MACROEXPAND-1 COMMON-LISP::PROCLAIM
++-         COMPILER::C1ASH-CONDITION COMPILER::C1EVAL-WHEN
++-         COMPILER::C1LOCAL-CLOSURE COMPILER::REPLACE-CONSTANT)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
++-         COMPILER::INLINE-BOOLE3)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         COMPILER::C2DM COMPILER::C1DM-V COMPILER::C1DM-VL
++-         COMPILER::C2RETURN-FROM COMPILER::C2APPLY-OPTIMIZE)) 
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::T)
+++         COMPILER::MLIN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         COMPILER::WT-INLINE COMPILER::C2IF COMPILER::C2LABELS
++-         COMPILER::C2FLET)) 
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::T)
+++         COMPILER::DASH-TO-UNDERSCORE-INT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         COMPILER::T3DEFUN-AUX)) 
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*))
+++             COMMON-LISP::T)
+++         COMPILER::TS COMPILER::DASH-TO-UNDERSCORE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
++-         COMPILER::F-TYPE)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         COMPILER::C1NIL COMPILER::WT-DATA-FILE
+++         COMPILER::CLOSE-INLINE-BLOCKS COMPILER::WT-NEXT-VAR-ARG
+++         COMPILER::RESET-TOP COMPILER::VS-PUSH COMPILER::BABOON
+++         COMPILER::GAZONK-NAME COMPILER::PRINT-COMPILER-INFO
+++         COMPILER::ADD-LOAD-TIME-SHARP-COMMA COMPILER::INIT-ENV
+++         COMPILER::PRINT-CURRENT-FORM COMPILER::WT-C-PUSH COMPILER::C1T
+++         COMPILER::WT-FIRST-VAR-ARG COMPILER::CCB-VS-PUSH
+++         COMPILER::INC-INLINE-BLOCKS COMPILER::WT-CVARS
+++         COMPILER::WT-FASD-DATA-FILE COMPILER::WFS-ERROR
+++         COMPILER::WT-DATA-END COMPILER::TAIL-RECURSION-POSSIBLE
+++         COMPILER::CVS-PUSH COMPILER::WT-DATA-BEGIN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::STRING) COMMON-LISP::T)
++-         COMPILER::DASH-TO-UNDERSCORE)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         COMPILER::ANALYZE-REGS1 COMPILER::ANALYZE-REGS
+++         COMPILER::PROCLAIMED-ARGD)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::INIT-NAME COMPILER::ADD-INIT COMPILER::C1LAMBDA-EXPR
++-         COMPILER::WT-CVAR COMPILER::C1CASE COMPILER::WT-COMMENT
++-         COMPILER::CMPERR COMPILER::WT-INTEGER-LOC COMPILER::CMPNOTE
++-         COMPILER::FAST-LINK-PROCLAIMED-TYPE-P COMPILER::UNWIND-EXIT
++-         COMPILER::CMPWARN)) 
+++         COMPILER::CHECK-FNAME-ARGS COMPILER::COERCE-LOC
+++         COMPILER::TYPE>= COMPILER::C2BIND-LOC
+++         COMPILER::RESULT-TYPE-FROM-ARGS COMPILER::ADD-DEBUG-INFO
+++         COMPILER::MAKE-USER-INIT COMPILER::CO1EQL COMPILER::C2ASSOC!2
+++         COMPILER::WT-VAR COMPILER::CFAST-WRITE COMPILER::C2STACK-LET
+++         COMPILER::C2DM-BIND-INIT COMPILER::IS-REP-REFERRED
+++         COMPILER::CO1CONS COMPILER::SHIFT<<
+++         COMPILER::C2MULTIPLE-VALUE-SETQ COMPILER::C2CALL-LOCAL
+++         COMPILER::CO1SCHAR COMPILER::C1CONSTANT-VALUE
+++         COMPILER::WT-CHARACTER-VALUE COMPILER::CONVERT-CASE-TO-SWITCH
+++         COMPILER::C2MULTIPLE-VALUE-CALL COMPILER::C2EXPR-TOP
+++         COMPILER::CO1READ-BYTE COMPILER::PRIN1-CMP
+++         COMPILER::STRUCT-TYPE-OPT COMPILER::C1DECL-BODY
+++         COMPILER::COERCE-LOC-STRUCTURE-REF
+++         COMPILER::CO1STRUCTURE-PREDICATE COMPILER::WT-MAKE-DCLOSURE
+++         COMPILER::ARGS-INFO-CHANGED-VARS
+++         COMPILER::C2LIST-NTH-IMMEDIATE COMPILER::CO1LDB
+++         COMPILER::CO1WRITE-BYTE COMPILER::C1PROGN*
+++         COMPILER::CO1CONSTANT-FOLD COMPILER::SET-JUMP-TRUE
+++         COMPILER::C1SETQ1 COMPILER::CO1READ-CHAR COMPILER::C2BIND-INIT
+++         COMPILER::CO1TYPEP COMPILER::WT-FIXNUM-VALUE
+++         COMPILER::MULTIPLE-VALUE-CHECK COMPILER::SHIFT>>
+++         COMPILER::CO1SUBLIS COMPILER::DO-MACRO-EXPANSION
+++         COMPILER::C2UNWIND-PROTECT COMPILER::C2CALL-LAMBDA
+++         COMPILER::C2MEMBER!2 COMPILER::GET-INLINE-LOC
+++         COMPILER::C1LAMBDA-FUN COMPILER::JUMPS-TO-P COMPILER::C1EXPR*
+++         COMPILER::C2SETQ COMPILER::C2APPLY COMPILER::UNWIND-BDS
+++         COMPILER::SET-BDS-BIND COMPILER::NEED-TO-PROTECT
+++         COMPILER::C1FMLA COMPILER::TYPE-AND COMPILER::CMPFIX-ARGS
+++         COMPILER::MAYBE-EVAL COMPILER::C2BLOCK-CLB COMPILER::SET-DBIND
+++         COMPILER::C2LAMBDA-EXPR-WITHOUT-KEY
+++         COMPILER::WT-LONG-FLOAT-VALUE COMPILER::C2DM-BIND-VL
+++         COMPILER::WT-SHORT-FLOAT-VALUE COMPILER::T3SHARP-COMMA
+++         COMPILER::COMPILER-CLEAR-COMPILER-PROPERTIES COMPILER::C2CATCH
+++         COMPILER::C2EXPR-TOP* COMPILER::SET-JUMP-FALSE
+++         COMPILER::CO1VECTOR-PUSH COMPILER::WT-V*-MACROS
+++         COMPILER::ARGS-INFO-REFERRED-VARS COMPILER::SET-VS
+++         COMPILER::WT-REQUIREDS COMPILER::C2RETURN-CCB
+++         COMPILER::C2THROW COMPILER::CHECK-END
+++         COMPILER::PUSH-CHANGED-VARS COMPILER::C2BLOCK-CCB
+++         SYSTEM::ADD-DEBUG COMPILER::C2PSETQ COMPILER::C1ARGS
+++         COMPILER::COMPILER-CC COMPILER::INLINE-PROC
+++         COMPILER::CO1WRITE-CHAR COMPILER::COMPILER-DEF-HOOK
+++         COMPILER::CAN-BE-REPLACED COMPILER::C2MULTIPLE-VALUE-PROG1
+++         COMPILER::C2DM-BIND-LOC COMPILER::ADD-INFO
+++         COMPILER::CO1SPECIAL-FIX-DECL COMPILER::C2LAMBDA-EXPR-WITH-KEY
+++         COMPILER::FAST-READ COMPILER::C2RETURN-CLB
+++         COMPILER::PROCLAIM-VAR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::*)
++-         COMPILER::C2RETURN-LOCAL COMPILER::C2BLOCK-LOCAL
++-         COMPILER::NCONC-FILES COMPILER::C1SYMBOL-FUN COMPILER::C2BLOCK
++-         COMPILER::C1BODY COMPILER::COMPILER-BUILD
++-         COMPILER::C2DECL-BODY COMPILER::WT-INLINE-LOC)) 
++-(COMMON-LISP::MAPC
++-    (COMMON-LISP::LAMBDA (COMPILER::X)
++-      (COMMON-LISP::SETF
++-          (COMMON-LISP::GET COMPILER::X 'SYSTEM::PROCLAIMED-CLOSURE)
++-          COMMON-LISP::T))
++-    '(COMPILER::CMP-ANON COMMON-LISP::COMPILE COMPILER::CMP-TMP-MACRO
++-         COMMON-LISP::DISASSEMBLE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T (COMMON-LISP::VECTOR COMMON-LISP::T)
++-                 COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM
++-                 COMMON-LISP::T)
++-             COMMON-LISP::FIXNUM)
++-         COMPILER::BSEARCHLEQ)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T (COMMON-LISP::VECTOR COMMON-LISP::T)
++-                 COMMON-LISP::FIXNUM COMMON-LISP::T)
++-             COMMON-LISP::FIXNUM)
++-         COMPILER::PUSH-ARRAY)) 
+++         COMPILER::COMPILE-FILE1)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::AND-FORM-TYPE COMPILER::SET-VAR COMPILER::C2LET*
++-         COMPILER::COMPILER-PASS2 COMPILER::ADD-FUNCTION-DECLARATION
++-         COMPILER::BOOLE3 COMPILER::C1MAP-FUNCTIONS
++-         COMPILER::TOO-MANY-ARGS COMPILER::CHECK-FORM-TYPE
++-         COMPILER::C2LET COMPILER::C-FUNCTION-NAME
++-         COMPILER::WT-INLINE-SHORT-FLOAT COMPILER::FIX-DOWN-ARGS
++-         COMPILER::C2PRINC COMPILER::WT-IF-PROCLAIMED
++-         COMPILER::ADD-FAST-LINK COMPILER::C2MULTIPLE-VALUE-BIND
++-         COMPILER::C2MAPCAN COMPILER::CJT COMPILER::CHECK-VDECL
++-         COMPILER::INLINE-TYPE-MATCHES COMPILER::WT-INLINE-LONG-FLOAT
++-         COMPILER::C2GO COMPILER::CAN-BE-REPLACED* COMPILER::MYSUB
++-         COMPILER::ASSIGN-DOWN-VARS COMPILER::C2MAPC
++-         COMPILER::WT-INLINE-INTEGER COMPILER::GET-INLINE-INFO
++-         COMPILER::CJF COMPILER::TOO-FEW-ARGS COMPILER::T3DEFCFUN
++-         COMPILER::CMP-EXPAND-MACRO COMPILER::WT-MAKE-CCLOSURE
++-         COMPILER::C2FUNCALL-SFUN COMPILER::C1DM
++-         COMPILER::WT-INLINE-COND COMPILER::C2TAGBODY
++-         COMPILER::WT-INLINE-CHARACTER COMPILER::C2PROGV
++-         COMPILER::C2MAPCAR COMPILER::C1STRUCTURE-REF1 COMPILER::C2CASE
++-         COMPILER::ADD-FUNCTION-PROCLAMATION
++-         COMPILER::MAKE-INLINE-STRING COMPILER::SUBLIS1-INLINE
++-         COMPILER::WT-INLINE-FIXNUM)) 
+++         COMPILER::MAKE-INLINE-STRING COMPILER::GET-INLINE-INFO
+++         COMPILER::C1STRUCTURE-REF1 COMPILER::CJF COMPILER::SET-VAR
+++         COMPILER::CHECK-FORM-TYPE COMPILER::AND-FORM-TYPE
+++         COMPILER::SUBLIS1-INLINE COMPILER::T3DEFCFUN
+++         COMPILER::WT-INLINE-INTEGER COMPILER::C-FUNCTION-NAME
+++         COMPILER::FIX-DOWN-ARGS COMPILER::ASSIGN-DOWN-VARS
+++         COMPILER::WT-INLINE-FIXNUM COMPILER::C2GO COMPILER::CJT
+++         COMPILER::TOO-FEW-ARGS COMPILER::C2PRINC COMPILER::C2CASE
+++         COMPILER::C2LET* COMPILER::BOOLE3 COMPILER::COMPILER-PASS2
+++         COMPILER::C1DM COMPILER::CHECK-VDECL COMPILER::C2LET
+++         COMPILER::MYSUB COMPILER::CAN-BE-REPLACED*
+++         COMPILER::ADD-FUNCTION-PROCLAMATION COMPILER::WT-IF-PROCLAIMED
+++         COMPILER::C1MAP-FUNCTIONS COMPILER::ADD-FAST-LINK
+++         COMPILER::WT-INLINE-LONG-FLOAT COMPILER::TOO-MANY-ARGS
+++         COMPILER::C2MULTIPLE-VALUE-BIND COMPILER::C2PROGV
+++         COMPILER::WT-INLINE-CHARACTER
+++         COMPILER::ADD-FUNCTION-DECLARATION COMPILER::CMP-EXPAND-MACRO
+++         COMPILER::C2MAPCAR COMPILER::INLINE-TYPE-MATCHES
+++         COMPILER::C2FUNCALL-SFUN COMPILER::WT-MAKE-CCLOSURE
+++         COMPILER::C2MAPCAN COMPILER::C2TAGBODY
+++         COMPILER::WT-INLINE-COND COMPILER::C2MAPC
+++         COMPILER::WT-INLINE-SHORT-FLOAT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMPILER::C2LAMBDA-EXPR COMPILER::C2FUNCALL COMPILER::LINK
++-         COMPILER::INLINE-ARGS)) 
+++         COMPILER::T3LOCAL-FUN COMPILER::T3LOCAL-DCFUN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::C2STRUCTURE-REF COMPILER::WT-GLOBAL-ENTRY
++-         COMPILER::T3DEFUN-VARARG COMPILER::T3DEFUN-NORMAL
++-         COMPILER::C2CALL-GLOBAL COMPILER::C1MAKE-VAR
++-         COMPILER::C2CALL-UNKNOWN-GLOBAL COMPILER::C2SWITCH
++-         COMPILER::T3INIT-FUN COMPILER::MY-CALL)) 
+++         COMPILER::T3DEFMACRO COMPILER::T3DEFENTRY COMPILER::T2DEFENTRY
+++         COMPILER::DEFSYSFUN COMPILER::T2DEFMACRO)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++                 COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::DEFSYSFUN COMPILER::T2DEFMACRO COMPILER::T2DEFENTRY
++-         COMPILER::T3DEFMACRO COMPILER::T3DEFENTRY)) 
+++         COMPILER::T3DEFUN COMPILER::T3DEFUN-LOCAL-ENTRY
+++         COMPILER::C2STRUCTURE-SET COMPILER::T2DEFUN
+++         COMPILER::C1APPLY-OPTIMIZE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMPILER::T2DEFUN COMPILER::C1APPLY-OPTIMIZE COMPILER::T3DEFUN
++-         COMPILER::C2STRUCTURE-SET COMPILER::T3DEFUN-LOCAL-ENTRY)) 
+++         COMPILER::C2LAMBDA-EXPR COMPILER::C2FUNCALL
+++         COMPILER::INLINE-ARGS COMPILER::LINK)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
+++                 COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMPILER::WT-SIMPLE-CALL COMPILER::GET-OUTPUT-PATHNAME)) 
+++         COMPILER::T3INIT-FUN COMPILER::C2STRUCTURE-REF
+++         COMPILER::WT-GLOBAL-ENTRY COMPILER::T3DEFUN-NORMAL
+++         COMPILER::T3DEFUN-VARARG COMPILER::C1MAKE-VAR
+++         COMPILER::C2SWITCH COMPILER::MY-CALL COMPILER::C2CALL-GLOBAL
+++         COMPILER::C2CALL-UNKNOWN-GLOBAL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++                 COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMPILER::T3LOCAL-FUN COMPILER::T3LOCAL-DCFUN)) 
+++         COMPILER::GET-OUTPUT-PATHNAME COMPILER::WT-SIMPLE-CALL)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(COMPILER::CMP-ANON COMMON-LISP::COMPILE COMPILER::CMP-TMP-MACRO
+++         COMMON-LISP::DISASSEMBLE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         COMPILER::MAKE-VAR COMPILER::COMPILER-COMMAND
+++         COMPILER::LIST*-INLINE COMMON-LISP::COMPILE-FILE
+++         COMPILER::CS-PUSH COMPILER::MAKE-INFO COMPILER::FCALLN-INLINE
+++         COMPILER::C2FSET COMPILER::MAKE-TAG COMPILER::WT-CLINK
+++         COMPILER::LIST-INLINE COMPILER::MAKE-FUN COMPILER::MAKE-BLK)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
++-         COMPILER::C2PROGN COMPILER::WT-LONG-FLOAT-LOC COMPILER::C2EXPR
++-         COMPILER::WT-FIXNUM-LOC COMPILER::WT-CHARACTER-LOC
++-         COMPILER::C2AND COMPILER::T1EXPR COMPILER::CMP-TOPLEVEL-EVAL
++-         COMPILER::WT-SHORT-FLOAT-LOC COMPILER::C2OR COMPILER::WT-LOC
++-         COMPILER::CMP-EVAL COMPILER::T1EVAL-WHEN COMPILER::SET-LOC
++-         COMPILER::VV-STR COMPILER::WT-TO-STRING)) 
+++         COMPILER::T1EVAL-WHEN COMPILER::T1EXPR
+++         COMPILER::WT-CHARACTER-LOC COMPILER::SET-LOC
+++         COMPILER::CMP-TOPLEVEL-EVAL COMPILER::C2PROGN
+++         COMPILER::WT-TO-STRING COMPILER::MEXPAND-DEFTYPE
+++         COMPILER::WT-SHORT-FLOAT-LOC COMPILER::CMP-EVAL
+++         COMPILER::WT-LOC COMPILER::C2AND COMPILER::C2EXPR
+++         COMPILER::WT-LONG-FLOAT-LOC COMPILER::C2OR
+++         COMPILER::WT-FIXNUM-LOC)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
++-         COMPILER::MAKE-FUN COMPILER::MAKE-BLK
++-         COMMON-LISP::COMPILE-FILE COMPILER::FCALLN-INLINE
++-         COMPILER::MAKE-INFO COMPILER::CS-PUSH COMPILER::MAKE-VAR
++-         COMPILER::LIST-INLINE COMPILER::C2FSET COMPILER::WT-CLINK
++-         COMPILER::COMPILER-COMMAND COMPILER::MAKE-TAG
++-         COMPILER::LIST*-INLINE)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         COMPILER::LTVP-EVAL COMPILER::FSET-FN-NAME COMPILER::C1MAPCON
+++         COMPILER::FUNCTION-ARG-TYPES COMPILER::C1SHARP-COMMA
+++         COMPILER::SAVE-AVMA COMPILER::C2TAGBODY-CCB COMPILER::VAR-LOC
+++         COMPILER::WT-DOWN COMPILER::C1SETQ COMPILER::TAG-REF-CCB
+++         COMPILER::T1DEFINE-STRUCTURE COMPILER::SAVE-FUNOB
+++         COMPILER::C1VAR COMPILER::VV-STR COMPILER::C1RPLACA
+++         COMPILER::INFO-SP-CHANGE COMPILER::BLK-REF-CCB
+++         COMPILER::T1ORDINARY COMPILER::FIXNUM-LOC-P
+++         COMPILER::FUN-REF-CCB COMPILER::C2GET COMPILER::FUN-NAME
+++         COMPILER::FUN-P COMPILER::SCH-GLOBAL COMPILER::C1LET
+++         COMPILER::C2TAGBODY-CLB COMPILER::C1UNWIND-PROTECT
+++         COMPILER::SET-RETURN COMPILER::WT-VAR-DECL
+++         COMPILER::VAR-REGISTER COMPILER::C1DEFINE-STRUCTURE
+++         COMPILER::LTVP COMPILER::INLINE-POSSIBLE COMPILER::CHECK-VREF
+++         COMPILER::TAG-NAME COMPILER::C2DM-RESERVE-VL
+++         COMPILER::VAR-TYPE COMPILER::WT-LIST COMPILER::C1LET*
+++         COMPILER::VARARG-P COMPILER::C1LOAD-TIME-VALUE
+++         COMPILER::C2FUNCALL-AUX COMPILER::INFO-TYPE COMPILER::C1GET
+++         COMPILER::C1NTHCDR-CONDITION COMPILER::C1AND
+++         COMPILER::C1MULTIPLE-VALUE-CALL COMPILER::C1RPLACA-NTHCDR
+++         COMPILER::INFO-VOLATILE COMPILER::INLINE-TYPE
+++         COMPILER::LONG-FLOAT-LOC-P COMPILER::INFO-CHANGED-ARRAY
+++         SYSTEM::UNDEF-COMPILER-MACRO COMPILER::DECL-BODY-SAFETY
+++         COMPILER::TAG-VAR COMPILER::CHARACTER-LOC-P COMPILER::C2BIND
+++         COMPILER::C1DECLARE COMPILER::CONS-TO-LISTA
+++         COMPILER::C1MULTIPLE-VALUE-SETQ COMPILER::NAME-SD1
+++         COMPILER::BLK-NAME COMPILER::PARSE-CVSPECS COMPILER::C1MAPL
+++         COMPILER::AET-C-TYPE COMPILER::C2VAR COMPILER::COPY-INFO
+++         COMPILER::C1PSETQ COMPILER::C1VREF COMPILER::FUN-REF
+++         COMPILER::WT-H1 COMPILER::T1DEFCFUN COMPILER::T1PROGN
+++         COMPILER::C1EVAL-WHEN COMPILER::FLAGS-POS COMPILER::WT-VS
+++         COMPILER::C2VAR-KIND COMPILER::C1LENGTH
+++         COMPILER::C1MULTIPLE-VALUE-BIND COMPILER::C2LOCATION
+++         COMPILER::C2DM-RESERVE-V COMPILER::C2FUNCTION
+++         COMPILER::WT-SWITCH-CASE COMPILER::C2TAGBODY-LOCAL
+++         COMPILER::CONSTANT-FOLD-P COMPILER::NEED-TO-SET-VS-POINTERS
+++         COMPILER::C1MAPCAN COMPILER::WT-FUNCALL-C COMPILER::WT-CCB-VS
+++         COMPILER::C1RETURN-FROM COMPILER::GET-INCLUDED
+++         COMPILER::C1BLOCK COMPILER::ADD-CONSTANT COMPILER::WT-VS-BASE
+++         COMPILER::C1NTH-CONDITION COMPILER::FUN-LEVEL
+++         COMPILER::UNWIND-NO-EXIT COMMON-LISP::PROCLAIM
+++         COMPILER::C1PRINC COMPILER::C2EXPR* COMPILER::RESULT-TYPE
+++         COMPILER::TAG-REF COMPILER::C1FUNCALL COMPILER::C1PROGN
+++         COMPILER::MAXARGS COMPILER::UNDEFINED-VARIABLE COMPILER::C1THE
+++         COMPILER::CMP-MACROEXPAND COMPILER::C1MAPCAR
+++         COMPILER::DEFAULT-INIT COMPILER::C1STRUCTURE-SET
+++         COMPILER::WT-SYMBOL-FUNCTION COMPILER::T1DEFUN
+++         COMPILER::WT-DATA1 COMPILER::PUSH-DATA-INCF COMPILER::C1IF
+++         COMPILER::C1NTHCDR COMPILER::ADD-SYMBOL
+++         COMPILER::C1MULTIPLE-VALUE-PROG1 COMPILER::BLK-REF
+++         COMPILER::WT-FUNCTION-LINK COMPILER::INFO-P COMPILER::C1FSET
+++         COMPILER::C1PROGV COMPILER::C1ASSOC COMPILER::VAR-REF
+++         COMPILER::ARGS-CAUSE-SIDE-EFFECT COMPILER::MDELETE-FILE
+++         COMPILER::CMP-MACRO-FUNCTION COMPILER::C2DOWNWARD-FUNCTION
+++         COMPILER::C2GO-LOCAL COMPILER::T1DEFLA COMPILER::VAR-REF-CCB
+++         COMPILER::C1FLET COMPILER::C1LIST-NTH
+++         COMPILER::ADD-LOOP-REGISTERS COMPILER::INFO-REFERRED-ARRAY
+++         COMPILER::BLK-VALUE-TO-GO COMPILER::WT-VS*
+++         COMPILER::NAME-TO-SD COMPILER::C1RPLACD
+++         COMPILER::WT-DATA-PACKAGE-OPERATION COMPILER::C1SWITCH
+++         COMPILER::C1CATCH COMPILER::WT-CAR COMPILER::C1MACROLET
+++         COMPILER::OBJECT-TYPE COMPILER::C1MAPC COMPILER::T1CLINES
+++         COMPILER::C1COMPILER-LET COMPILER::CMP-MACROEXPAND-1
+++         COMPILER::C1TAGBODY COMPILER::C1MAPLIST COMPILER::PUSH-ARGS
+++         COMPILER::T3ORDINARY COMPILER::C1MEMBER COMPILER::T1MACROLET
+++         COMPILER::WT-CDR COMPILER::C1BOOLE3 COMPILER::PROCLAMATION
+++         COMPILER::GET-LOCAL-RETURN-TYPE COMPILER::C1LOCAL-FUN
+++         COMPILER::VAR-KIND COMPILER::WT1 COMPILER::TAG-SWITCH
+++         COMPILER::C1OR COMPILER::C1STRUCTURE-REF
+++         COMPILER::THE-PARAMETER COMPILER::VAR-REP-LOC
+++         COMPILER::DECLARATION-TYPE COMPILER::TAG-P COMPILER::C2GETHASH
+++         COMPILER::C1EXPR COMPILER::REPLACE-CONSTANT COMPILER::C1ECASE
+++         COMPILER::FUN-CFUN COMPILER::SET-TOP COMPILER::TAG-LABEL
+++         COMPILER::C1DM-BAD-KEY COMPILER::C1THROW COMPILER::C2GO-CCB
+++         COMPILER::REP-TYPE COMPILER::C2VALUES
+++         COMPILER::SHORT-FLOAT-LOC-P COMPILER::FUNCTION-RETURN-TYPE
+++         COMPILER::ADD-OBJECT COMPILER::CTOP-WRITE COMPILER::C1MEMQ
+++         COMPILER::WT-DOWNWARD-CLOSURE-MACRO COMPILER::C1TERPRI
+++         COMPILER::T1DEFMACRO COMPILER::T3CLINES COMPILER::ADD-REG1
+++         COMPILER::C1NTH COMPILER::C1ASH COMPILER::C1FMLA-CONSTANT
+++         COMPILER::C2GO-CLB COMPILER::WT-CADR
+++         COMPILER::C1BOOLE-CONDITION COMPILER::CLINK COMPILER::VAR-NAME
+++         COMPILER::PUSH-ARGS-LISPCALL COMPILER::GET-ARG-TYPES
+++         COMPILER::BLK-VAR COMPILER::C1APPLY COMPILER::CHECK-DOWNWARD
+++         COMPILER::C1QUOTE COMPILER::TAG-REF-CLB
+++         COMPILER::GET-LOCAL-ARG-TYPES COMPILER::REGISTER
+++         COMPILER::BLK-P COMPILER::FUN-INFO COMPILER::C2RPLACD
+++         COMPILER::ADD-OBJECT2 COMPILER::C2TAGBODY-BODY
+++         COMPILER::T1DEFENTRY COMPILER::C1FUNCTION
+++         COMPILER::C1DOWNWARD-FUNCTION COMPILER::SAFE-SYSTEM
+++         COMPILER::C1GO COMPILER::BLK-EXIT COMPILER::VERIFY-DATA-VECTOR
+++         COMPILER::C2RPLACA COMPILER::T2DECLARE COMPILER::MACRO-DEF-P
+++         COMPILER::C1LABELS COMPILER::C1GETHASH COMPILER::FIX-OPT
+++         COMPILER::SCH-LOCAL-FUN COMPILER::C1FUNOB
+++         COMPILER::SET-PUSH-CATCH-FRAME COMPILER::GET-RETURN-TYPE
+++         COMPILER::SET-UP-VAR-CVS COMPILER::TAG-UNWIND-EXIT
+++         COMPILER::VAR-P COMPILER::C1ADD-GLOBALS COMPILER::TYPE-FILTER
+++         COMPILER::WT-VV COMPILER::C1ASH-CONDITION COMPILER::VOLATILE
+++         COMPILER::INLINE-BOOLE3-STRING COMPILER::C1LOCAL-CLOSURE
+++         COMPILER::WRITE-BLOCK-OPEN COMPILER::ADD-ADDRESS
+++         COMPILER::RESET-INFO-TYPE COMPILER::C1VALUES
+++         COMPILER::BLK-REF-CLB COMPILER::C1STACK-LET)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         COMPILER::INLINE-BOOLE3)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION ((COMMON-LISP::VECTOR COMMON-LISP::T))
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807))
++              COMMON-LISP::T)
++-         COMPILER::COPY-ARRAY)) 
+++         COMPILER::MEMOIZED-HASH-EQUAL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         COMPILER::WT-INLINE-LOC COMPILER::NCONC-FILES
+++         COMPILER::COMPILER-BUILD COMPILER::C2BLOCK-LOCAL
+++         COMPILER::C2DECL-BODY COMPILER::C1SYMBOL-FUN COMPILER::C2BLOCK
+++         COMPILER::C1BODY COMPILER::C2RETURN-LOCAL)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMPILER::C2EXPR-TOP COMPILER::CO1SUBLIS
++-         COMPILER::C2CALL-LAMBDA COMPILER::GET-INLINE-LOC
++-         COMPILER::CHECK-END COMPILER::C2PSETQ COMPILER::TYPE-AND
++-         COMPILER::TYPE>= COMPILER::C2MULTIPLE-VALUE-PROG1
++-         COMPILER::CO1SCHAR SYSTEM::ADD-DEBUG COMPILER::C2BLOCK-CCB
++-         COMPILER::C2DM-BIND-VL COMPILER::MAKE-USER-INIT
++-         COMPILER::NEED-TO-PROTECT COMPILER::FAST-READ
++-         COMPILER::RESULT-TYPE-FROM-ARGS COMPILER::C2BIND-INIT
++-         COMPILER::JUMPS-TO-P COMPILER::C2MEMBER!2
++-         COMPILER::C2CALL-LOCAL COMPILER::C2BLOCK-CLB
++-         COMPILER::ARGS-INFO-CHANGED-VARS COMPILER::INLINE-PROC
++-         COMPILER::C2THROW COMPILER::C1DECL-BODY
++-         COMPILER::WT-MAKE-DCLOSURE COMPILER::CO1WRITE-CHAR
++-         COMPILER::C1SETQ1 COMPILER::SET-JUMP-FALSE COMPILER::CO1CONS
++-         COMPILER::CO1VECTOR-PUSH COMPILER::SET-VS COMPILER::SHIFT>>
++-         COMPILER::COERCE-LOC-STRUCTURE-REF COMPILER::WT-FIXNUM-VALUE
++-         COMPILER::C2CATCH COMPILER::C2RETURN-CCB COMPILER::MAYBE-EVAL
++-         COMPILER::C2ASSOC!2 COMPILER::C2DM-BIND-INIT
++-         COMPILER::C2STACK-LET COMPILER::C2LAMBDA-EXPR-WITH-KEY
++-         COMPILER::ARGS-INFO-REFERRED-VARS
++-         COMPILER::C2MULTIPLE-VALUE-SETQ COMPILER::C1PROGN*
++-         COMPILER::WT-LONG-FLOAT-VALUE COMPILER::C2MULTIPLE-VALUE-CALL
++-         COMPILER::WT-SHORT-FLOAT-VALUE COMPILER::CO1CONSTANT-FOLD
++-         COMPILER::C1CONSTANT-VALUE COMPILER::C1EXPR*
++-         COMPILER::CO1SPECIAL-FIX-DECL COMPILER::C2RETURN-CLB
++-         COMPILER::CMPFIX-ARGS COMPILER::PROCLAIM-VAR COMPILER::C2APPLY
++-         COMPILER::DO-MACRO-EXPANSION COMPILER::CFAST-WRITE
++-         COMPILER::PRIN1-CMP COMPILER::SHIFT<< COMPILER::WT-REQUIREDS
++-         COMPILER::C2EXPR-TOP* COMPILER::UNWIND-BDS
++-         COMPILER::MULTIPLE-VALUE-CHECK COMPILER::COERCE-LOC
++-         COMPILER::STRUCT-TYPE-OPT COMPILER::CO1READ-CHAR
++-         COMPILER::ADD-DEBUG-INFO COMPILER::C2LIST-NTH-IMMEDIATE
++-         COMPILER::WT-VAR COMPILER::C2LAMBDA-EXPR-WITHOUT-KEY
++-         COMPILER::CHECK-FNAME-ARGS COMPILER::CAN-BE-REPLACED
++-         COMPILER::WT-CHARACTER-VALUE COMPILER::C2UNWIND-PROTECT
++-         COMPILER::SET-DBIND COMPILER::T3SHARP-COMMA
++-         COMPILER::IS-REP-REFERRED COMPILER::C1FMLA
++-         COMPILER::WT-V*-MACROS COMPILER::C2DM-BIND-LOC
++-         COMPILER::C2BIND-LOC
++-         COMPILER::COMPILER-CLEAR-COMPILER-PROPERTIES
++-         COMPILER::ADD-INFO COMPILER::C2SETQ
++-         COMPILER::PUSH-CHANGED-VARS COMPILER::CO1STRUCTURE-PREDICATE
++-         COMPILER::SET-BDS-BIND COMPILER::SET-JUMP-TRUE
++-         COMPILER::CO1READ-BYTE COMPILER::C1LAMBDA-FUN
++-         COMPILER::CO1TYPEP COMPILER::CONVERT-CASE-TO-SWITCH
++-         COMPILER::COMPILER-DEF-HOOK COMPILER::CO1LDB COMPILER::C1ARGS
++-         COMPILER::CO1WRITE-BYTE COMPILER::CO1EQL
++-         COMPILER::COMPILER-CC)) 
+++         COMPILER::C1LAMBDA-EXPR COMPILER::CMPWARN COMPILER::ADD-INIT
+++         COMPILER::UNWIND-EXIT COMPILER::CMPNOTE COMPILER::CMPERR
+++         COMPILER::C1CASE COMPILER::WT-COMMENT COMPILER::INIT-NAME
+++         COMPILER::FAST-LINK-PROCLAIMED-TYPE-P COMPILER::WT-INTEGER-LOC
+++         COMPILER::WT-CVAR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM) COMMON-LISP::T)
++-         COMPILER::MLIN)) 
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         COMPILER::C2IF COMPILER::WT-INLINE COMPILER::C2COMPILER-LET
+++         COMPILER::C2FLET COMPILER::C2LABELS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
++              COMMON-LISP::*)
++-         COMPILER::COMPILE-FILE1)) 
+++         COMPILER::C2RETURN-FROM COMPILER::C2APPLY-OPTIMIZE
+++         COMPILER::C2DM COMPILER::C1DM-V COMPILER::C1DM-VL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
++-         COMPILER::WT-DATA-BEGIN COMPILER::WT-C-PUSH COMPILER::WT-CVARS
++-         COMPILER::C1T COMPILER::CVS-PUSH COMPILER::WT-DATA-FILE
++-         COMPILER::ADD-LOAD-TIME-SHARP-COMMA
++-         COMPILER::CLOSE-INLINE-BLOCKS COMPILER::WT-FASD-DATA-FILE
++-         COMPILER::GAZONK-NAME COMPILER::WFS-ERROR
++-         COMPILER::WT-NEXT-VAR-ARG COMPILER::WT-FIRST-VAR-ARG
++-         COMPILER::C1NIL COMPILER::WT-DATA-END COMPILER::RESET-TOP
++-         COMPILER::TAIL-RECURSION-POSSIBLE
++-         COMPILER::PRINT-COMPILER-INFO COMPILER::CCB-VS-PUSH
++-         COMPILER::BABOON COMPILER::INIT-ENV
++-         COMPILER::PRINT-CURRENT-FORM COMPILER::VS-PUSH
++-         COMPILER::INC-INLINE-BLOCKS)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMPILER::T3DEFUN-AUX)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::FIXNUM)
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*)))
++              COMMON-LISP::T)
++-         COMPILER::MEMOIZED-HASH-EQUAL)) 
+++         COMPILER::COPY-ARRAY)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*))
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
+++                 COMMON-LISP::T)
++              COMMON-LISP::FIXNUM)
++-         COMPILER::PROCLAIMED-ARGD COMPILER::ANALYZE-REGS1
++-         COMPILER::ANALYZE-REGS)) 
+++         COMPILER::BSEARCHLEQ)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::STRING COMMON-LISP::FIXNUM
++-                 COMMON-LISP::FIXNUM)
++-             COMMON-LISP::T)
++-         COMPILER::DASH-TO-UNDERSCORE-INT)) 
++\ No newline at end of file
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::ARRAY COMMON-LISP::T (COMMON-LISP::*))
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
+++                 COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         COMPILER::PUSH-ARRAY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         COMPILER::F-TYPE)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/configure
+++++ gcl-2.6.12/configure
++@@ -3980,7 +3980,7 @@ add_args_to_cflags -fsigned-char -pipe \
++                  -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign \
++                  -Wno-unused-but-set-variable -Wno-misleading-indentation
++ 
++-add_args_to_ldflags -Wl,-no_pie -no-pie -Wl,-z,lazy
+++add_args_to_ldflags -no-pie -Wl,-z,lazy
++ 
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang" >&5
++ $as_echo_n "checking for clang... " >&6; }
++--- gcl-2.6.12.orig/configure.in
+++++ gcl-2.6.12/configure.in
++@@ -264,7 +264,7 @@ add_args_to_cflags -fsigned-char -pipe \
++                  -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign \
++                  -Wno-unused-but-set-variable -Wno-misleading-indentation
++ 
++-add_args_to_ldflags -Wl,-no_pie -no-pie -Wl,-z,lazy
+++add_args_to_ldflags -no-pie -Wl,-z,lazy
++ 
++ AC_MSG_CHECKING([for clang])
++ AC_RUN_IFELSE(
++--- gcl-2.6.12.orig/gcl-tk/socketsl.lisp
+++++ gcl-2.6.12/gcl-tk/socketsl.lisp
++@@ -12,10 +12,6 @@
++ (defentry our-write (int object int ) (int "our_write_object"))
++ (defentry print-to-string1 (object object object) (object print_to_string1))
++ 
++-(clines "#define reset_string_input_stream1(strm,string,start,end) reset_string_input_stream(strm,string,fix(start),fix(end))")
++-(defentry reset-string-input-stream (object object object object)  (object  "reset_string_input_stream1"))
++-
++-
++ ;(clines "#define symbol_value_any(x) ((x)->s.s_dbind)")
++ ;(defentry symbol-value-any (object) (object symbol_value_any))
++ 
++--- gcl-2.6.12.orig/gcl-tk/tkl.lisp
+++++ gcl-2.6.12/gcl-tk/tkl.lisp
++@@ -293,6 +293,9 @@
++    (let ()
++      (send-tcl-cmd *tk-connection* tk-command nil))))
++ 
+++(defun fsubseq (s &optional (b 0) (e (length s)))
+++  (make-array (- e b) :element-type (array-element-type s) :displaced-to s :displaced-index-offset b :fill-pointer (- e b)))
+++
++ (defun send-tcl-cmd (c str send-and-wait )
++   ;(notice-text-variables)
++   (or send-and-wait (setq send-and-wait *send-and-wait*))
++@@ -308,7 +311,7 @@
++     
++     (cond (send-and-wait
++         (if *debugging*
++-            (store-circle *requests* (subseq str #.(length *header*))
+++            (store-circle *requests* (fsubseq str #.(length *header*))
++                           msg-id))
++         (store-circle *replies* nil  msg-id)
++         (execute-tcl-cmd c str))
++@@ -932,7 +935,7 @@
++                            #.(+ 1 (length *header*))
++                            3))
++   (values
++-   (subseq str #.(+ 4 (length *header*)))
+++   (fsubseq str #.(+ 4 (length *header*)))
++    (eql (aref str #.(+ 1 (length *header*))) #\0)
++    reply-from
++    (get-circle *requests* reply-from)))
++@@ -1082,7 +1085,7 @@
++           (store-circle *replies*
++                         (cons success
++                               (if (eql (length tk-command) #.(+ 4 (length *header*))) ""
++-                                (subseq tk-command #.(+ 4 (length *header*)))))
+++                                (fsubseq tk-command #.(+ 4 (length *header*)))))
++                         from-id))
++        (#.(pos m_call *mtypes*)
++           ;; Can play a game of if read-and-act called with request-id:
++@@ -1114,7 +1117,7 @@
++                  (var (aref *text-variable-locations* lisp-var-id))
++                  (type (get var 'linked-variable-type))
++                  val)
++-            (setq val (coerce-result (subseq tk-command  #.(+ 3 (length *header*))) type))
+++            (setq val (coerce-result (fsubseq tk-command  #.(+ 3 (length *header*))) type))
++             (setf (aref *text-variable-locations* (the fixnum
++                                                        ( + lisp-var-id 1)))
++                   val)
++@@ -1130,7 +1133,9 @@
++   (let* ((s (car *string-streams*))
++       (*string-streams* (cdr *string-streams*)))
++     (or s (setq s (make-string-input-stream "")))
++-    (si::reset-string-input-stream s string start (length string))
+++    (assert (array-has-fill-pointer-p string))
+++    (setf (fill-pointer string) start)
+++    (si::c-set-stream-object0 s string)
++     (read s nil nil)))
++ 
++ 
++@@ -1196,7 +1201,7 @@
++        (cond (skipping nil)
++           ((eql brace-level 0)
++            (if (> i beg)
++-               (setq ans (cons (subseq x beg i) ans)))
+++               (setq ans (cons (fsubseq x beg i) ans)))
++            
++            (setq beg (+ i 1))
++                     )))
++@@ -1207,12 +1212,12 @@
++                 (setq beg (+ i 1))))
++          (incf brace-level))
++        (#\} (cond ((eql brace-level 1)
++-                (setq ans (cons (subseq x beg i) ans))
+++                (setq ans (cons (fsubseq x beg i) ans))
++                 (setq skipping t)))
++          (incf brace-level -1)))))
++      finally
++      (unless skipping
++-          (setq ans (cons (subseq x beg i) ans)))
+++          (setq ans (cons (fsubseq x beg i) ans)))
++      (return (nreverse ans))
++      ))
++ 
++@@ -1394,7 +1399,7 @@
++      (cond (start (pp v no_leading_space) (setq start nil))
++         (t (pp v normal)))
++      (setf x (cdr x)))
++-   (subseq tk-command #.(length *header*))))
+++   (fsubseq tk-command #.(length *header*))))
++ 
++ 
++ 
++@@ -1409,7 +1414,6 @@
++       (setq  gcltksrv
++       (cond (host "gcltksrv")
++             ((si::getenv "GCL_TK_SERVER"))
++-            ((probe-file (tk-conc si::*lib-directory* "/gcl-tk/gcltksrv")))
++             ((probe-file (tk-conc si::*lib-directory* "gcl-tk/gcltksrv")))
++             (t (error "Must setenv GCL_TK_SERVER ")))))
++   (let ((pid (if host  -1 (si::getpid)))
++@@ -1427,9 +1431,9 @@
++                      args
++                      )))
++       (print command)
++-      (cond ((not host) (system command))
+++      (cond ((not host) (si::system command))
++          (can-rsh
++-           (system (tk-conc "rsh " host " "   command
+++           (si::system (tk-conc "rsh " host " "   command
++                              " < /dev/null &")))
++          (t (format t "Waiting for you to invoke GCL_TK_SERVER,
++ on ~a as in: ~s~%" host command )))
++--- gcl-2.6.12.orig/h/compprotos.h
+++++ gcl-2.6.12/h/compprotos.h
++@@ -180,3 +180,4 @@ char *gcl_gets(char *,int);
++ int gcl_puts(const char *);
++ int endp_error(object);
++ object Icall_gen_error_handler(object,object,object,object,ufixnum,...);
+++object file_stream(object);
++--- gcl-2.6.12.orig/h/lu.h
+++++ gcl-2.6.12/h/lu.h
++@@ -271,15 +271,14 @@ struct structure {
++ 
++ struct stream {
++   FIRSTWORD;
++-  void *sm_fp;
++-  object sm_object0;
++-  object sm_object1;
++-  int sm_int0;
++-  int sm_int1;
++-  char *sm_buffer;
++-  char sm_mode;
++-  unsigned char sm_flags;
++-  short sm_fd;
+++  void   *sm_fp;
+++  object  sm_object0;
+++  object  sm_object1;
+++  char   *sm_buffer;
+++  ufixnum sm_mode:4;
+++  ufixnum sm_flags:6;
+++  ufixnum sm_fd:6;
+++  ufixnum sm_int:LM(16);
++ };
++ 
++ struct random {
++--- gcl-2.6.12.orig/h/object.h
+++++ gcl-2.6.12/h/object.h
++@@ -166,18 +166,18 @@ enum aelttype {                 /*  array element type
++ /* for any stream that takes writec_char, directly (not two_way or echo)
++    ie.        smm_output,smm_io, smm_string_output, smm_socket
++  */
++-#define STREAM_FILE_COLUMN(str) ((str)->sm.sm_int1)
+++#define STREAM_FILE_COLUMN(str) ((str)->sm.sm_int)
++ 
++ /* for smm_echo */
++-#define ECHO_STREAM_N_UNREAD(strm) ((strm)->sm.sm_int0)
+++#define ECHO_STREAM_N_UNREAD(strm) ((strm)->sm.sm_int)
++ 
++ /* file fd for socket */
++ #define SOCKET_STREAM_FD(strm) ((strm)->sm.sm_fd)
++ #define SOCKET_STREAM_BUFFER(strm) ((strm)->sm.sm_object1)
++ 
++ /*  for     smm_string_input  */
++-#define STRING_INPUT_STREAM_NEXT(strm) ((strm)->sm.sm_int0)
++-#define STRING_INPUT_STREAM_END(strm) ((strm)->sm.sm_int1)
+++#define STRING_INPUT_STREAM_NEXT(strm) ((strm)->sm.sm_object0->st.st_fillp)
+++#define STRING_INPUT_STREAM_END(strm) ((strm)->sm.sm_object0->st.st_dim)
++ 
++ /* for smm_two_way and smm_echo */
++ #define STREAM_OUTPUT_STREAM(strm) ((strm)->sm.sm_object1)
++--- gcl-2.6.12.orig/h/type.h
+++++ gcl-2.6.12/h/type.h
++@@ -41,7 +41,6 @@ enum smmode {                       /*  stream mode  */
++      smm_output,             /*  output  */
++      smm_io,                 /*  input-output  */
++      smm_probe,              /*  probe  */
++-     smm_file_synonym,       /*  synonym stream to file_stream  */
++      smm_synonym,            /*  synonym  */
++      smm_broadcast,          /*  broadcast  */
++      smm_concatenated,       /*  concatenated  */
++@@ -152,5 +151,4 @@ enum smmode {                     /*  stream mode  */
++ #define pathname_string_symbol_streamp(a_) ({enum type _tp=type_of(a_); _tp==t_pathname || _tp == t_string\
++                                                                      || _tp == t_symbol || _tp==t_stream;})
++ 
++-#define pathname_designatorp(a_) ({object _a=(a_);enum type _tp=type_of(a_);\
++-      _tp==t_pathname||_tp==t_string||(_tp==t_stream && _a->sm.sm_mode>=smm_input && _a->sm.sm_mode<=smm_file_synonym);})
+++#define pathname_designatorp(a_) ({object _a=(a_);enum type _tp=type_of(a_);_tp==t_pathname||_tp==t_string||file_stream(_a)!=Cnil;})
++--- gcl-2.6.12.orig/lsp/gcl_directory.lsp
+++++ gcl-2.6.12/lsp/gcl_directory.lsp
++@@ -74,4 +74,12 @@
++   (let ((r (with-open-file (s (apply 'string-concatenate "|" #-winnt "which "
++                                   #+winnt "for %i in (" s #+winnt ".exe) do @echo.%~$PATH:i" nil))
++                         (read-line s nil 'eof))))
++-    (if (eq r 'eof) s (string-downcase r))))
+++    (unless (eq r 'eof)
+++      (string-downcase r))))
+++
+++(defun get-path (s &aux
+++                (e (unless (minusp (string-match #v"([^\n\t\r ]+)([\n\t\r ]|$)" s))(match-end 1)))
+++                (w (when e (which (pathname-name (subseq s (match-beginning 1) e))))))
+++  (when w
+++    (string-concatenate w (subseq s e))))
+++
++--- gcl-2.6.12.orig/lsp/gcl_iolib.lsp
+++++ gcl-2.6.12/lsp/gcl_iolib.lsp
++@@ -69,7 +69,20 @@
++         (progn ,@b)
++          (close ,var)))))
++ 
++-(defmacro with-input-from-string ((var string &key index start end) . body)
+++(defun make-string-input-stream (string &optional (start 0) end)
+++  (declare (optimize (safety 1)))
+++  (check-type string string)
+++  (check-type start seqind)
+++  (check-type end (or null seqind))
+++  (let ((l (- (or end (length string)) start)))
+++    (make-string-input-stream-int
+++     (make-array l :element-type (array-element-type string) :displaced-to string :displaced-index-offset start :fill-pointer 0)
+++     0 l)))
+++
+++(defun get-string-input-stream-index (stream &aux (s (c-stream-object0 stream)))
+++  (+ (fill-pointer s) (multiple-value-bind (a b) (array-displacement s) b)))
+++
+++(defmacro with-input-from-string ((var string &key index (start 0) end) . body)
++   (declare (optimize (safety 1)))
++   (multiple-value-bind (ds b) (find-declarations body)
++     `(let ((,var (make-string-input-stream ,string ,start ,end)))
++@@ -77,7 +90,8 @@
++        (unwind-protect
++         (multiple-value-prog1
++          (progn ,@b)
++-         ,@(when index `((setf ,index (get-string-input-stream-index ,var)))))
+++         ,@(when index
+++             `((setf ,index (get-string-input-stream-index ,var)))))
++       (close ,var)))))
++   
++ (defmacro with-output-to-string ((var &optional string &key element-type) . body)
++@@ -406,7 +420,7 @@
++ 
++ 
++ (defun write-sequence (seq strm &rest r &key (start 0) end
++-                        &aux (l (listp seq))(cp (eq (stream-element-type strm) 'character)))
+++                        &aux (cp (eq (stream-element-type strm) 'character)))
++   (declare (optimize (safety 1))(dynamic-extent r))
++   (check-type seq sequence)
++   (check-type strm stream)
++@@ -443,9 +457,15 @@
++                    if-exists iesp if-does-not-exist idnesp external-format)))
++     (when (typep s 'stream) (c-set-stream-object1 s pf) s)))
++ 
+++(defun load-pathname-exists (z)
+++  (or (probe-file z)
+++      (when *allow-gzipped-file*
+++     (when (probe-file (string-concatenate (namestring z) ".gz"))
+++       z))))
+++
++ (defun load-pathname (p print if-does-not-exist external-format
++                      &aux (pp (merge-pathnames p))
++-                     (epp (reduce (lambda (y x) (or y (probe-file (translate-pathname x "" p))))
+++                     (epp (reduce (lambda (y x) (or y (load-pathname-exists (translate-pathname x "" p))))
++                                   '(#P".o" #P".lsp" #P".lisp" #P"") :initial-value nil)));FIXME newest?
++   (if epp
++       (let* ((*load-pathname* pp)(*load-truename* epp))
++@@ -484,3 +504,36 @@
++       (d pd (cdr pd)))
++     (values ps created)))
++ 
+++(defun file-length (x)
+++  (declare (optimize (safety 1)))
+++  (check-type x (or broadcast-stream file-stream))
+++  (if (typep x 'broadcast-stream)
+++      (let ((s (broadcast-stream-streams x))) (if s (file-length (car (last s))) 0))
+++    (multiple-value-bind (tp sz) (stat x)
+++      (declare (ignore tp))
+++      (/ sz (get-byte-stream-nchars x)))))
+++
+++(defun file-position (x &optional (pos :start pos-p))
+++  (declare (optimize (safety 1)))
+++  (check-type x (or broadcast-stream file-stream string-stream))
+++  (check-type pos (or (member :start :end) (integer 0)))
+++  (typecase x
+++    (broadcast-stream
+++     (let ((s (car (last (broadcast-stream-streams x)))))
+++       (if s (if pos-p (file-position s pos) (file-position s)) 0)))
+++    (string-stream
+++     (let* ((st (c-stream-object0 x))(l (length st))(d (array-dimension st 0))
+++         (p (case pos (:start 0) (:end l) (otherwise pos))))
+++       (if pos-p (when (<= p d) (setf (fill-pointer st) p)) l)))
+++    (otherwise
+++     (let ((n (get-byte-stream-nchars x))
+++        (p (case pos (:start 0) (:end (file-length x)) (otherwise pos))))
+++       (if pos-p (when (fseek x (* p n)) p) (/ (ftell x) n))))))
+++
+++(defun file-string-length (strm obj)
+++  (let* ((pos (file-position strm))
+++      (w (write obj :stream strm :escape nil :readably nil))
+++      (pos1 (file-position strm)));(break)
+++    (declare (ignore w))
+++    (file-position strm pos)
+++    (- pos1 pos)))
++--- gcl-2.6.12.orig/lsp/gcl_namestring.lsp
+++++ gcl-2.6.12/lsp/gcl_namestring.lsp
++@@ -27,7 +27,7 @@
++      (declare (optimize (safety 1)))
++      (check-type x pathname-designator)
++      (check-type def pathname-designator)
++-     ,(labels ((new? (k &aux (f (intern (concatenate 'string "PATHNAME-" (string k)) :si)))
+++     ,(labels ((new? (k &aux (f (intern (string-concatenate "PATHNAME-" (string k)) :si)))
++                   `(let ((k (,f px))) (unless (equal k (,f pdef)) k))))
++      `(namestring (make-pathname
++        ,@(mapcan (lambda (x) (list x (new? x))) +pathname-keys+)))))
++--- gcl-2.6.12.orig/lsp/gcl_predlib.lsp
+++++ gcl-2.6.12/lsp/gcl_predlib.lsp
++@@ -125,6 +125,8 @@
++           (character . characterp)
++           (package . packagep)
++           (stream . streamp)
+++          (string-input-stream . string-input-stream-p)
+++          (string-output-stream . string-output-stream-p)
++           (file-stream . file-stream-p)
++           (synonym-stream . synonym-stream-p)
++           (broadcast-stream . broadcast-stream-p)
++--- gcl-2.6.12.orig/lsp/gcl_restart.lsp
+++++ gcl-2.6.12/lsp/gcl_restart.lsp
++@@ -73,7 +73,7 @@
++                              &aux rr (report (if (stringp report) `(lambda (s) (write-string ,report s)) report)))
++   (macrolet ((do-setf (x) 
++                    `(when ,x 
++-                      (setf (getf rr ,(intern (concatenate 'string (symbol-name x) "-FUNCTION") :keyword))
+++                      (setf (getf rr ,(intern (string-concatenate (symbol-name x) "-FUNCTION") :keyword))
++                             (list 'function ,x)))))
++          (do-setf report)
++          (do-setf interactive)
++--- gcl-2.6.12.orig/lsp/gcl_serror.lsp
+++++ gcl-2.6.12/lsp/gcl_serror.lsp
++@@ -2,11 +2,11 @@
++ (in-package :si)
++ 
++ (macrolet 
++- ((make-conditionp (condition &aux (n (intern (concatenate 'string (string condition) "P"))))
+++ ((make-conditionp (condition &aux (n (intern (string-concatenate (string condition) "P"))))
++                 `(defun ,n (x &aux (z (si-find-class ',condition)))
++                    (when z
++                      (funcall (setf (symbol-function ',n) (lambda (x) (typep x z))) x))))
++-  (make-condition-classp (class &aux (n (intern (concatenate 'string (string class) "-CLASS-P"))))
+++  (make-condition-classp (class &aux (n (intern (string-concatenate (string class) "-CLASS-P"))))
++                       `(defun ,n (x &aux (s (si-find-class 'standard-class)) (z (si-find-class ',class)))
++                          (when (and s z)
++                            (funcall (setf (symbol-function ',n)
++@@ -124,9 +124,9 @@
++ 
++ (defun process-error (datum args &optional (default-type 'simple-error))
++   (let ((internal (cond ((simple-condition-class-p datum)
++-                      (find-symbol (concatenate 'string "INTERNAL-" (string datum)) :conditions))
+++                      (find-symbol (string-concatenate "INTERNAL-" (string datum)) :conditions))
++                      ((condition-class-p datum)
++-                      (find-symbol (concatenate 'string "INTERNAL-SIMPLE-" (string datum)) :conditions)))))
+++                      (find-symbol (string-concatenate "INTERNAL-SIMPLE-" (string datum)) :conditions)))))
++     (coerce-to-condition (or internal datum) (if internal (list* :function-name *sig-fn-name* args) args) default-type 'process-error)))
++ 
++ (defun universal-error-handler (n cp fn cs es &rest args &aux (*sig-fn-name* fn))
++--- gcl-2.6.12.orig/lsp/gcl_top.lsp
+++++ gcl-2.6.12/lsp/gcl_top.lsp
++@@ -593,12 +593,11 @@ First directory is checked for first nam
++      (when (eq (stat x) :directory)
++        (return-from get-temp-dir x))))))
++ 
++-(defun get-path (s &aux (m (string-match "([^ ]*)( |$)" s))(b (match-beginning 1))(e (match-end 1)))
++-  (string-concatenate (which (pathname-name (subseq s b e))) (subseq s e)))
+++
++ 
++ (defvar *cc* "cc")
++ (defvar *ld* "ld")
++-(defvar *objdump* "objdump --source ")
+++(defvar *objdump* nil)
++ 
++ (defvar *current-directory* *system-directory*)
++ 
++@@ -608,9 +607,9 @@ First directory is checked for first nam
++   (declare (fixnum i))
++   (setq *current-directory* (current-directory-pathname))
++   (setq *tmp-dir* (get-temp-dir)
++-     *cc* (get-path *cc*)
++-     *ld* (get-path *ld*)
++-     *objdump* (get-path *objdump*))
+++     *cc* (or (get-path *cc*) *cc*)
+++     *ld* (or (get-path *ld*) *ld*)
+++     *objdump* (get-path "objdump --source "))
++   (dotimes (j i) (push (argv j) tem))
++   (setq *command-args* (nreverse tem))
++   (setq tem *lib-directory*)
++--- gcl-2.6.12.orig/lsp/gcl_translate_pathname.lsp
+++++ gcl-2.6.12/lsp/gcl_translate_pathname.lsp
++@@ -32,7 +32,7 @@
++ (defun do-repl (x y)
++   (labels ((r (x l &optional (b 0) &aux (f (string-match #v"\\*" x b)))
++            (if (eql f -1) (if (eql b 0) x (subseq x b))
++-             (concatenate 'string (subseq x b f) (or (car l) "") (r x (cdr l) (1+ f))))))
+++             (string-concatenate (subseq x b f) (or (car l) "") (r x (cdr l) (1+ f))))))
++     (r y x)))
++ 
++ (defun dir-p (x) (when (consp x) (member (car x) '(:absolute :relative))))
++--- gcl-2.6.12.orig/lsp/sys-proclaim.lisp
+++++ gcl-2.6.12/lsp/sys-proclaim.lisp
++@@ -4,229 +4,269 @@
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
++-                  COMMON-LISP::*)
++-              (COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807))
++-             COMMON-LISP::FIXNUM)
++-         SYSTEM::ATOI)) 
+++                  COMMON-LISP::*))
+++             COMMON-LISP::T)
+++         SYSTEM::RESET-SYS-PATHS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::OR COMMON-LISP::NULL
++-                 COMMON-LISP::HASH-TABLE))
++-         SYSTEM::CONTEXT-HASH)) 
+++             (COMMON-LISP::VECTOR COMMON-LISP::T))
+++         SYSTEM::CONTEXT-VEC)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         SYSTEM::PARSE-DEFMACRO-LAMBDA-LIST SYSTEM::PARSE-DEFMACRO)) 
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::T)
+++         SYSTEM::PUSH-CONTEXT SYSTEM::GET-CONTEXT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         COMMON-LISP::SUBTYPEP COMMON-LISP::REDUCE
++-         SLOOP::FIND-IN-ORDERED-LIST SYSTEM::PARSE-BODY
++-         COMMON-LISP::STABLE-SORT COMMON-LISP::SORT)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         SLOOP::PARSE-LOOP-DO ANSI-LOOP::LOOP-WHEN-IT-VARIABLE
+++         SYSTEM::GET-INDEX-NODE SLOOP::LOOP-PEEK
+++         ANSI-LOOP::LOOP-POP-SOURCE SYSTEM::STEP-READ-LINE
+++         SYSTEM::SET-UP-TOP-LEVEL SLOOP::LOOP-POP SYSTEM::SET-ENV
+++         SYSTEM::DBL COMMON-LISP::TYPE-ERROR SYSTEM::INSPECT-INDENT
+++         SLOOP::PARSE-LOOP-COLLECT SYSTEM::CLEANUP
+++         SYSTEM::DEFAULT-SYSTEM-BANNER
+++         SYSTEM::CURRENT-DIRECTORY-PATHNAME ANSI-LOOP::LOOP-DO-WITH
+++         SYSTEM::INIT-BREAK-POINTS SYSTEM::TEST-ERROR
+++         SYSTEM::GET-SIG-FN-NAME SLOOP::PARSE-ONE-WHEN-CLAUSE
+++         ANSI-LOOP::LOOP-DO-DO SYSTEM::READ-EVALUATED-FORM
+++         SYSTEM::INSPECT-INDENT-1 ANSI-LOOP::LOOP-DO-NAMED
+++         SLOOP::PARSE-LOOP-FOR SYSTEM::ALL-TRACE-DECLARATIONS
+++         ANSI-LOOP::LOOP-GET-FORM ANSI-LOOP::LOOP-BIND-BLOCK
+++         SLOOP::PARSE-LOOP-WHEN SYSTEM::TOP-LEVEL
+++         SYSTEM::DM-TOO-FEW-ARGUMENTS SYSTEM::KCL-TOP-RESTARTS
+++         SYSTEM::DEFAULT-INFO-HOTLIST SYSTEM::SHOW-RESTARTS
+++         SYSTEM::DM-TOO-MANY-ARGUMENTS SYSTEM::SETUP-LINEINFO
+++         SYSTEM::GET-TEMP-DIR ANSI-LOOP::LOOP-ITERATION-DRIVER
+++         SLOOP::PARSE-LOOP1 SLOOP::LOOP-UN-POP
+++         ANSI-LOOP::LOOP-DO-FINALLY SYSTEM::INSPECT-READ-LINE
+++         ANSI-LOOP::LOOP-CONTEXT SYSTEM::SET-CURRENT
+++         ANSI-LOOP::LOOP-DO-REPEAT SYSTEM::ILLEGAL-BOA
+++         COMMON-LISP::LISP-IMPLEMENTATION-VERSION
+++         ANSI-LOOP::LOOP-DO-RETURN ANSI-LOOP::LOOP-DO-INITIALLY
+++         ANSI-LOOP::LOOP-GET-PROGN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         SYSTEM::SHARP-+-READER SYSTEM::SHARP---READER
++-         SYSTEM::SHARP-S-READER ANSI-LOOP::LOOP-GET-COLLECTION-INFO
++-         SYSTEM::VERIFY-KEYWORDS SYSTEM::LIST-MERGE-SORT
++-         SYSTEM::RESTART-PRINT SYSTEM::READ-INSPECT-COMMAND)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             COMMON-LISP::HASH-TABLE)
+++         SYSTEM::CONTEXT-SPICE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         SYSTEM::TRACE-CALL)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::OR COMMON-LISP::NULL
+++                 COMMON-LISP::HASH-TABLE))
+++         SYSTEM::CONTEXT-HASH)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         SYSTEM::EXPAND-WILD-DIRECTORY SYSTEM::MASET)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         ANSI-LOOP::DUPLICATABLE-CODE-P SYSTEM::RELATIVE-LINE
+++         SYSTEM::LENEL SYSTEM::GET-NODE-INDEX SYSTEM::FASLINK
+++         SYSTEM::THE-END)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         SYSTEM::MME3)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SLOOP::IN-PACKAGE-SLOOP-MAP SLOOP::DESETQ1
+++         COMMON-LISP::LOGANDC2 ANSI-LOOP::MAKE-LOOP-MINIMAX
+++         COMMON-LISP::WRITE-BYTE SYSTEM::MATCH-DIMENSIONS
+++         SLOOP::IN-CAREFULLY-SLOOP-FOR SLOOP::SUM-SLOOP-COLLECT
+++         SYSTEM::DOT-DIR-P SLOOP::IN-FRINGE-SLOOP-MAP
+++         SLOOP::COLLATE-SLOOP-COLLECT ANSI-LOOP::LOOP-TMEMBER
+++         FPE::READ-OPERANDS SYSTEM::IN-INTERVAL-P SYSTEM::SUBSTRINGP
+++         FPE::PAREN-READER ANSI-LOOP::HIDE-VARIABLE-REFERENCES
+++         SYSTEM::QUOTATION-READER SYSTEM::ALL-MATCHES SYSTEM::GET-MATCH
+++         SYSTEM::ADD-FILE ANSI-LOOP::LOOP-DO-ALWAYS SLOOP::THE-TYPE
+++         SYSTEM::?PUSH SYSTEM::INCREMENT-CURSOR
+++         SYSTEM::CHECK-SEQ-START-END SLOOP::MAKE-VALUE
+++         SLOOP::THEREIS-SLOOP-COLLECT ANSI-LOOP::LOOP-DO-WHILE
+++         COMMON-LISP::COERCE ANSI-LOOP::LOOP-TEQUAL
+++         ANSI-LOOP::LOOP-DECLARE-VARIABLE COMMON-LISP::LOGNAND
+++         COMMON-LISP::LOGORC1 SYSTEM::BREAK-STEP-NEXT
+++         SLOOP::LOGXOR-SLOOP-COLLECT COMMON-LISP::LOGNOR
+++         COMPILER::COMPILER-DEF-HOOK ANSI-LOOP::LOOP-TASSOC
+++         SYSTEM::GET-LINE-OF-FORM SLOOP::MAXIMIZE-SLOOP-COLLECT
+++         ANSI-LOOP::LOOP-DO-IF SYSTEM::SETF-EXPAND SYSTEM::DM-V
+++         SYSTEM::ITERATE-OVER-BKPTS COMMON-LISP::NTHCDR
+++         SYSTEM::CONDITION-PASS SYSTEM::DISPLAY-COMPILED-ENV
+++         COMMON-LISP::LDB-TEST ANSI-LOOP::LOOP-MAYBE-BIND-FORM
+++         SYSTEM::SUPER-GO SYSTEM::SETF-LOGICAL-PATHNAME-TRANSLATIONS
+++         FPE::RF SYSTEM::SUB-INTERVAL-P SYSTEM::LEFT-PARENTHESIS-READER
+++         COMMON-LISP::FILE-STRING-LENGTH SYSTEM::OBJLT SYSTEM::MSUB
+++         SYSTEM::COERCE-TO-STRING SYSTEM::SAFE-EVAL
+++         SYSTEM::SET-PATH-STREAM-NAME SYSTEM::SET-BACK
+++         ANSI-LOOP::LOOP-NOTE-MINIMAX-OPERATION COMMON-LISP::LOGTEST
+++         SYSTEM::*BREAK-POINTS* SLOOP::=-SLOOP-FOR
+++         SLOOP::MINIMIZE-SLOOP-COLLECT SYSTEM::KEYWORD-SUPPLIED-P
+++         SLOOP::COUNT-SLOOP-COLLECT FPE::%-READER COMMON-LISP::LOGORC2
+++         SYSTEM::SEQUENCE-CURSOR SYSTEM::LOOKUP-KEYWORD
+++         COMMON-LISP::BYTE SYSTEM::PARSE-SLOT-DESCRIPTION
+++         COMMON-LISP::LOGANDC1 SYSTEM::DM-NTH-CDR FPE::0-READER
+++         SLOOP::L-EQUAL SYSTEM::LIST-DELQ SYSTEM::DM-NTH
+++         COMMON-LISP::LDB SYSTEM::SETF-HELPER
+++         SLOOP::NEVER-SLOOP-COLLECT SLOOP::PARSE-LOOP-MAP
+++         COMMON-LISP::NTH SYSTEM::BREAK-STEP-INTO
+++         SYSTEM::GET-INFO-CHOICES SLOOP::IN-TABLE-SLOOP-MAP
+++         SYSTEM::GET-NODES COMMON-LISP::VECTOR-PUSH
+++         COMMON-LISP::PATHNAME-MATCH-P SYSTEM::DBL-UP
+++         ANSI-LOOP::LOOP-LOOKUP-KEYWORD FPE::READ-INSTRUCTION
+++         SLOOP::ALWAYS-SLOOP-COLLECT SYSTEM::SET-DIR SYSTEM::INFO-AUX
+++         SYSTEM::DISPLAY-ENV COMMON-LISP::DOCUMENTATION
+++         SYSTEM::OVERWRITE-SLOT-DESCRIPTIONS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::*)
++-         SYSTEM::PUSH-OPTIONAL-BINDING)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
++-         SYSTEM::MAKE-KEYWORD)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807)
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807)
++-                 COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         SYSTEM::QUICK-SORT)) 
+++         COMMON-LISP::APROPOS ANSI-LOOP::LOOP-CONSTANT-FOLD-IF-POSSIBLE
+++         COMMON-LISP::FFLOOR SYSTEM::PRINT-DOC SYSTEM::INFO
+++         SYSTEM::PARSE-BODY-HEADER COMMON-LISP::INVOKE-RESTART
+++         SYSTEM::BREAK-FUNCTION SYSTEM::SHOW-INFO COMMON-LISP::FROUND
+++         COMMON-LISP::GET-SETF-EXPANSION COMMON-LISP::PARSE-NAMESTRING
+++         SYSTEM::APROPOS-DOC COMMON-LISP::ENSURE-DIRECTORIES-EXIST
+++         COMMON-LISP::USE-VALUE COMMON-LISP::READ-FROM-STRING
+++         COMMON-LISP::FTRUNCATE COMMON-LISP::STORE-VALUE
+++         SYSTEM::STEPPER SYSTEM::GET-SETF-METHOD-MULTIPLE-VALUE
+++         COMMON-LISP::APROPOS-LIST COMMON-LISP::FCEILING
+++         COMMON-LISP::WRITE-TO-STRING
+++         COMMON-LISP::DECODE-UNIVERSAL-TIME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807)
++-                 COMMON-LISP::T COMMON-LISP::T)
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::BIGNTHCDR)) 
+++         SYSTEM::SETF-EXPAND-1 SLOOP::LOOP-PARSE-ADDITIONAL-COLLECTIONS
+++         SYSTEM::WARN-VERSION ANSI-LOOP::LOOP-TRANSLATE
+++         ANSI-LOOP::LOOP-FOR-IN ANSI-LOOP::PRINT-LOOP-UNIVERSE
+++         ANSI-LOOP::LOOP-STANDARD-EXPANSION
+++         ANSI-LOOP::LOOP-ANSI-FOR-EQUALS SYSTEM::DM-VL
+++         SYSTEM::SHARP-A-READER COMMON-LISP::DEPOSIT-FIELD
+++         SYSTEM::RESTART-CASE-EXPRESSION-CONDITION
+++         SYSTEM::APPLY-DISPLAY-FUN ANSI-LOOP::HIDE-VARIABLE-REFERENCE
+++         SYSTEM::FLOATING-POINT-ERROR SYSTEM::GET-SLOT-POS
+++         ANSI-LOOP::LOOP-MAKE-ITERATION-VARIABLE
+++         SYSTEM::MAKE-BREAK-POINT SYSTEM::SHARP-V-READER
+++         SYSTEM::TO-REGEXP-OR-NAMESTRING ANSI-LOOP::LOOP-FOR-ON
+++         SYSTEM::SHARP-U-READER ANSI-LOOP::LOOP-SUM-COLLECTION
+++         SYSTEM::SHARP-P-READER SYSTEM::MAKE-T-TYPE
+++         ANSI-LOOP::LOOP-FOR-ACROSS SYSTEM::MFR SYSTEM::RECURSE-DIR
+++         SYSTEM::PATHNAME-PARSE ANSI-LOOP::LOOP-FOR-BEING
+++         COMMON-LISP::DPB SYSTEM::SHARP-DQ-READER
+++         SYSTEM::CHECK-TRACE-ARGS SYSTEM::DEFMACRO*
+++         SYSTEM::CHECK-S-DATA FPE::REF)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         COMMON-LISP::EVERY COMMON-LISP::SET-DIFFERENCE
++-         SYSTEM::VECTOR-PUSH-STRING SYSTEM::PROCESS-ERROR
++-         COMMON-LISP::POSITION-IF-NOT COMMON-LISP::FIND-IF
++-         SLOOP::LOOP-ADD-BINDING COMMON-LISP::BIT-ORC1
++-         COMMON-LISP::READ-SEQUENCE SYSTEM::INTERNAL-COUNT-IF
++-         COMMON-LISP::COUNT COMMON-LISP::MISMATCH
++-         COMMON-LISP::ADJUST-ARRAY COMMON-LISP::INTERSECTION
++-         COMMON-LISP::UNION COMMON-LISP::DELETE-IF-NOT
++-         COMMON-LISP::NINTERSECTION COMMON-LISP::BIT-ANDC1
++-         COMMON-LISP::REMOVE-IF-NOT COMMON-LISP::TYPEP
++-         COMMON-LISP::NUNION COMMON-LISP::WRITE-SEQUENCE
++-         COMMON-LISP::VECTOR-PUSH-EXTEND COMMON-LISP::REMOVE
++-         COMMON-LISP::BIT-IOR SLOOP::PARSE-LOOP-MACRO
++-         COMMON-LISP::SEARCH COMMON-LISP::SUBSETP
++-         COMMON-LISP::SET-EXCLUSIVE-OR SYSTEM::WREADDIR
++-         COMMON-LISP::POSITION-IF COMMON-LISP::DELETE
++-         COMMON-LISP::BIT-EQV COMMON-LISP::BIT-ANDC2
++-         COMMON-LISP::BIT-AND COMMON-LISP::NSET-EXCLUSIVE-OR
++-         SLOOP::IN-ARRAY-SLOOP-FOR ANSI-LOOP::LOOP-CHECK-DATA-TYPE
++-         COMMON-LISP::POSITION COMMON-LISP::MAKE-SEQUENCE
++-         COMMON-LISP::NOTEVERY COMMON-LISP::MAP-INTO
++-         COMMON-LISP::REPLACE COMMON-LISP::NSET-DIFFERENCE
+++         SYSTEM::FIND-IHS COMMON-LISP::NSET-DIFFERENCE
+++         COMMON-LISP::BIT-NAND SYSTEM::BREAK-CALL
+++         COMMON-LISP::COUNT-IF-NOT COMMON-LISP::DELETE
+++         SYSTEM::INTERNAL-COUNT COMMON-LISP::BIT-ORC1
+++         COMMON-LISP::DELETE-IF COMMON-LISP::BIT-ANDC1
+++         SYSTEM::VECTOR-PUSH-STRING COMMON-LISP::MISMATCH
+++         COMMON-LISP::NOTEVERY SYSTEM::PROCESS-ERROR COMMON-LISP::TYPEP
+++         COMMON-LISP::BIT-IOR COMMON-LISP::BIT-EQV
+++         COMMON-LISP::COUNT-IF COMMON-LISP::REMOVE-IF
+++         COMMON-LISP::EVERY COMMON-LISP::POSITION-IF-NOT
+++         COMMON-LISP::ADJUST-ARRAY COMMON-LISP::VECTOR-PUSH-EXTEND
+++         SYSTEM::INTERNAL-COUNT-IF-NOT COMMON-LISP::COUNT
+++         COMMON-LISP::DELETE-IF-NOT COMMON-LISP::NINTERSECTION
++          COMMON-LISP::FIND-IF-NOT COMMON-LISP::BIT-ORC2
++-         COMMON-LISP::DELETE-IF COMMON-LISP::CERROR
++-         COMMON-LISP::BIT-XOR COMMON-LISP::FIND COMMON-LISP::FILL
++-         SYSTEM::INTERNAL-COUNT-IF-NOT COMMON-LISP::REMOVE-IF
++-         COMMON-LISP::BIT-NAND COMMON-LISP::BIT-NOR COMMON-LISP::SOME
++-         COMMON-LISP::COUNT-IF SYSTEM::BREAK-CALL
++-         COMMON-LISP::COUNT-IF-NOT SYSTEM::FIND-IHS COMMON-LISP::NOTANY
++-         SYSTEM::INTERNAL-COUNT)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         SYSTEM::PATHNAME-PARSE ANSI-LOOP::LOOP-TRANSLATE
++-         SYSTEM::CHECK-S-DATA SYSTEM::MFR FPE::REF
++-         ANSI-LOOP::LOOP-STANDARD-EXPANSION ANSI-LOOP::LOOP-FOR-ON
++-         ANSI-LOOP::LOOP-SUM-COLLECTION SYSTEM::SHARP-DQ-READER
++-         COMMON-LISP::DPB SYSTEM::CHECK-TRACE-ARGS
++-         SLOOP::LOOP-PARSE-ADDITIONAL-COLLECTIONS SYSTEM::RECURSE-DIR
++-         SYSTEM::SHARP-U-READER SYSTEM::FLOATING-POINT-ERROR
++-         ANSI-LOOP::LOOP-FOR-IN ANSI-LOOP::HIDE-VARIABLE-REFERENCE
++-         SYSTEM::GET-SLOT-POS SYSTEM::APPLY-DISPLAY-FUN
++-         SYSTEM::RESTART-CASE-EXPRESSION-CONDITION
++-         SYSTEM::MAKE-BREAK-POINT SYSTEM::TO-REGEXP-OR-NAMESTRING
++-         COMMON-LISP::DEPOSIT-FIELD SYSTEM::SHARP-V-READER
++-         SYSTEM::MAKE-T-TYPE ANSI-LOOP::LOOP-FOR-ACROSS
++-         ANSI-LOOP::LOOP-ANSI-FOR-EQUALS ANSI-LOOP::PRINT-LOOP-UNIVERSE
++-         ANSI-LOOP::LOOP-FOR-BEING SYSTEM::SHARP-P-READER SYSTEM::DM-VL
++-         SYSTEM::SHARP-A-READER ANSI-LOOP::LOOP-MAKE-ITERATION-VARIABLE
++-         SYSTEM::DEFMACRO* SYSTEM::SETF-EXPAND-1 SYSTEM::WARN-VERSION)) 
+++         COMMON-LISP::SUBSETP COMMON-LISP::SOME SYSTEM::WREADDIR
+++         COMMON-LISP::SET-DIFFERENCE COMMON-LISP::UNION
+++         COMMON-LISP::BIT-XOR SLOOP::PARSE-LOOP-MACRO
+++         COMMON-LISP::REPLACE COMMON-LISP::REMOVE
+++         SLOOP::LOOP-ADD-BINDING COMMON-LISP::BIT-ANDC2
+++         COMMON-LISP::READ-SEQUENCE COMMON-LISP::CERROR
+++         COMMON-LISP::INTERSECTION COMMON-LISP::POSITION-IF
+++         ANSI-LOOP::LOOP-CHECK-DATA-TYPE SYSTEM::INTERNAL-COUNT-IF
+++         COMMON-LISP::NUNION COMMON-LISP::WRITE-SEQUENCE
+++         COMMON-LISP::MAP-INTO COMMON-LISP::MAKE-SEQUENCE
+++         COMMON-LISP::SET-EXCLUSIVE-OR SLOOP::IN-ARRAY-SLOOP-FOR
+++         COMMON-LISP::FIND-IF COMMON-LISP::SEARCH COMMON-LISP::FILL
+++         COMMON-LISP::FIND COMMON-LISP::NOTANY
+++         COMMON-LISP::NSET-EXCLUSIVE-OR COMMON-LISP::BIT-NOR
+++         COMMON-LISP::REMOVE-IF-NOT COMMON-LISP::POSITION
+++         COMMON-LISP::BIT-AND)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
+++                 COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::MME2 COMMON-LISP::NSUBSTITUTE SYSTEM::MATCH-COMPONENT
++-         SYSTEM::COMPLETE-PROP SYSTEM::WALK-DIR
++-         COMMON-LISP::TRANSLATE-PATHNAME ANSI-LOOP::ADD-LOOP-PATH
++-         SYSTEM::DIR-PARSE ANSI-LOOP::LOOP-MAKE-VARIABLE
++-         COMMON-LISP::SUBSTITUTE-IF COMMON-LISP::NSUBSTITUTE-IF
++-         SYSTEM::PUSH-LET-BINDING COMMON-LISP::SUBSTITUTE
++-         ANSI-LOOP::LOOP-HASH-TABLE-ITERATION-PATH COMMON-LISP::MAP
++-         COMMON-LISP::SUBSTITUTE-IF-NOT COMMON-LISP::NSUBSTITUTE-IF-NOT
++-         ANSI-LOOP::LOOP-PACKAGE-SYMBOLS-ITERATION-PATH
++-         SLOOP::LOOP-DECLARE-BINDING
++-         ANSI-LOOP::LOOP-SEQUENCE-ELEMENTS-PATH
++-         SYSTEM::CHECK-TYPE-SYMBOL)) 
+++         SYSTEM::FIND-LINE-IN-FUN ANSI-LOOP::LOOP-FOR-ARITHMETIC
+++         SYSTEM::EXPAND-RANGE SYSTEM::MAYBE-BREAK SYSTEM::MINMAX
+++         SLOOP::FIRST-USE-SLOOP-FOR SLOOP::FIRST-SLOOP-FOR
+++         SYSTEM::SETF-STRUCTURE-ACCESS SYSTEM::DO-BREAK-LEVEL
+++         SYSTEM::CALL-TEST SYSTEM::ELEMENT SYSTEM::LOAD-PATHNAME
+++         SYSTEM::COERCE-TO-CONDITION SYSTEM::ELSUB)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T
++-                 (COMMON-LISP::INTEGER -9223372036854775808
++-                     9223372036854775807))
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         SYSTEM::SHARP-EQ-READER SYSTEM::SHARP-SHARP-READER)) 
+++         SLOOP::DEF-LOOP-INTERNAL COMMON-LISP::MERGE
+++         SYSTEM::PRINT-STACK-FRAME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
++              COMMON-LISP::T)
++-         SYSTEM::ELSUB SLOOP::FIRST-USE-SLOOP-FOR
++-         SLOOP::FIRST-SLOOP-FOR SYSTEM::SETF-STRUCTURE-ACCESS
++-         SYSTEM::FIND-LINE-IN-FUN SYSTEM::COERCE-TO-CONDITION
++-         ANSI-LOOP::LOOP-FOR-ARITHMETIC SYSTEM::MAYBE-BREAK
++-         SYSTEM::ELEMENT SYSTEM::DO-BREAK-LEVEL SYSTEM::CALL-TEST)) 
+++         COMMON-LISP::ENCODE-UNIVERSAL-TIME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
+++                 COMMON-LISP::*)
++              COMMON-LISP::T)
++-         ANSI-LOOP::LOOP-SEQUENCER)) 
+++         ANSI-LOOP::LOOP-PACKAGE-SYMBOLS-ITERATION-PATH
+++         SYSTEM::COMPLETE-PROP SYSTEM::CHECK-TYPE-SYMBOL
+++         COMMON-LISP::NSUBSTITUTE
+++         ANSI-LOOP::LOOP-SEQUENCE-ELEMENTS-PATH COMMON-LISP::SUBSTITUTE
+++         COMMON-LISP::TRANSLATE-PATHNAME COMMON-LISP::NSUBSTITUTE-IF
+++         COMMON-LISP::MAP SLOOP::LOOP-DECLARE-BINDING SYSTEM::WALK-DIR
+++         SYSTEM::MATCH-COMPONENT ANSI-LOOP::LOOP-MAKE-VARIABLE
+++         ANSI-LOOP::ADD-LOOP-PATH COMMON-LISP::SUBSTITUTE-IF
+++         COMMON-LISP::NSUBSTITUTE-IF-NOT SYSTEM::MME2
+++         ANSI-LOOP::LOOP-HASH-TABLE-ITERATION-PATH
+++         COMMON-LISP::SUBSTITUTE-IF-NOT SYSTEM::PUSH-LET-BINDING)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
+++             (COMMON-LISP::T COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807))
++              COMMON-LISP::T)
++-         SYSTEM::MAKE-CONSTRUCTOR SYSTEM::MAKE-PREDICATE)) 
+++         SYSTEM::SHARP-SHARP-READER SYSTEM::SHARP-EQ-READER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::PUSH-SUB-LIST-BINDING SYSTEM::DO-ARG-COUNT-ERROR)) 
+++         SYSTEM::DO-ARG-COUNT-ERROR SYSTEM::PUSH-SUB-LIST-BINDING)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::*)
+++                 COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SLOOP::DEF-LOOP-INTERNAL COMMON-LISP::MERGE
++-         SYSTEM::PRINT-STACK-FRAME)) 
+++         SYSTEM::MAKE-CONSTRUCTOR SYSTEM::MAKE-PREDICATE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
++              COMMON-LISP::T)
++-         COMMON-LISP::ENCODE-UNIVERSAL-TIME)) 
+++         ANSI-LOOP::LOOP-SEQUENCER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -234,43 +274,50 @@
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++          SYSTEM::UNIVERSAL-ERROR-HANDLER)) 
+++(COMMON-LISP::MAPC
+++    (COMMON-LISP::LAMBDA (COMPILER::X)
+++      (COMMON-LISP::SETF
+++          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
+++          COMMON-LISP::T))
+++    '(SYSTEM::SI-FIND-CLASS SYSTEM::WARNINGP SYSTEM::SI-CLASS-OF
+++         SYSTEM::CONDITION-CLASS-P SYSTEM::UNTRACE-ONE
+++         SYSTEM::MAKE-ACCESS-FUNCTION SYSTEM::SIMPLE-CONDITION-CLASS-P
+++         SYSTEM::CONDITIONP SYSTEM::AUTOLOAD
+++         SYSTEM::SI-CLASS-PRECEDENCE-LIST SYSTEM::SI-CLASSP
+++         FPE::BREAK-ON-FLOATING-POINT-EXCEPTIONS SYSTEM::TRACE-ONE
+++         SYSTEM::AUTOLOAD-MACRO SYSTEM::DEFINE-STRUCTURE
+++         SYSTEM::SI-CLASS-NAME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         COMMON-LISP::MERGE-PATHNAMES
++-         COMMON-LISP::TRANSLATE-LOGICAL-PATHNAME ANSI-LOOP::LOOP-ERROR
++-         COMMON-LISP::WILD-PATHNAME-P SLOOP::LOOP-ADD-TEMPS
++-         SYSTEM::FILE-SEARCH SYSTEM::INFO-SEARCH
++-         COMMON-LISP::PATHNAME-VERSION COMMON-LISP::WARN SYSTEM::MGSUB
++-         COMMON-LISP::ARRAY-ROW-MAJOR-INDEX
++-         COMMON-LISP::REMOVE-DUPLICATES COMMON-LISP::PATHNAME-NAME
++-         COMMON-LISP::BIT COMMON-LISP::FIND-RESTART SYSTEM::TO-REGEXP
++-         SYSTEM::PROCESS-SOME-ARGS COMMON-LISP::ERROR
++-         COMMON-LISP::REQUIRE COMMON-LISP::OPEN
++-         COMMON-LISP::UPGRADED-ARRAY-ELEMENT-TYPE SLOOP::ADD-FROM-DATA
++-         SYSTEM::BREAK-LEVEL SYSTEM::LIST-MATCHES
++-         COMMON-LISP::DELETE-DUPLICATES ANSI-LOOP::LOOP-WARN
++-         COMMON-LISP::PATHNAME-DEVICE COMMON-LISP::LOAD
++-         COMMON-LISP::PATHNAME-HOST COMMON-LISP::SBIT SYSTEM::NLOAD
++-         COMMON-LISP::BIT-NOT COMMON-LISP::ENOUGH-NAMESTRING
++-         COMMON-LISP::SIGNAL COMMON-LISP::ARRAY-IN-BOUNDS-P
++-         COMMON-LISP::PATHNAME-TYPE SYSTEM::FILE-TO-STRING
++-         SYSTEM::LOGICAL-PATHNAME-PARSE SYSTEM::NTH-STACK-FRAME
++-         ANSI-LOOP::LOOP-COLLECT-PREPOSITIONAL-PHRASES SYSTEM::MGLIST
++-         COMMON-LISP::DIRECTORY SYSTEM::BAD-SEQ-LIMIT
++-         COMMON-LISP::PATHNAME-DIRECTORY COMMON-LISP::READ-BYTE
++-         SYSTEM::LINK-EXPAND COMMON-LISP::CONCATENATE
++-         COMMON-LISP::MAKE-ARRAY)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         SYSTEM::INSTREAM-NAME ANSI-LOOP::LOOP-LIST-STEP
+++         COMMON-LISP::PRIN1-TO-STRING ANSI-LOOP::NAMED-VARIABLE
+++         SYSTEM::WAITING SYSTEM::FIND-DECLARATIONS COMMON-LISP::INSPECT
+++         SYSTEM::END-WAITING SYSTEM::BREAK-GO SYSTEM::INFO-SUBFILE
+++         COMMON-LISP::INVOKE-RESTART-INTERACTIVELY
+++         ANSI-LOOP::LOOP-OPTIMIZATION-QUANTITIES SYSTEM::INSPECT-OBJECT
+++         SYSTEM::BREAK-LEVEL-INVOKE-RESTART SYSTEM::EXPAND-RANGES
+++         SYSTEM::GET-&ENVIRONMENT COMMON-LISP::DESCRIBE
+++         COMMON-LISP::PRINC-TO-STRING)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         SYSTEM::NEWLINE SYSTEM::LIST-TOGGLE-CASE
++-         COMMON-LISP::RENAME-FILE ANSI-LOOP::ESTIMATE-CODE-SIZE
++-         SYSTEM::SOURCE-PORTION SYSTEM::RESTART-REPORT SYSTEM::DO-REPL
++-         SYSTEM::FIND-DOC ANSI-LOOP::ESTIMATE-CODE-SIZE-1
++-         SYSTEM::NEW-SEMI-COLON-READER)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         COMMON-LISP::ABORT ANSI-LOOP::MAKE-STANDARD-LOOP-UNIVERSE
+++         SYSTEM::MAKE-S-DATA ANSI-LOOP::MAKE-LOOP-MINIMAX-INTERNAL
+++         ANSI-LOOP::MAKE-LOOP-PATH SYSTEM::CURRENT-STEP-FUN SYSTEM::LOC
+++         SYSTEM::DBL-READ SYSTEM::MAKE-RESTART
+++         SYSTEM::TRANSFORM-KEYWORDS COMMON-LISP::Y-OR-N-P
+++         SYSTEM::NEXT-MATCH COMMON-LISP::COMPUTE-RESTARTS
+++         SLOOP::PARSE-LOOP-WITH COMMON-LISP::VECTOR SYSTEM::STEP-NEXT
+++         ANSI-LOOP::MAKE-LOOP-COLLECTOR
+++         COMMON-LISP::USER-HOMEDIR-PATHNAME SLOOP::PARSE-LOOP-DECLARE
+++         COMMON-LISP::YES-OR-NO-P SYSTEM::STEP-INTO
+++         SYSTEM::MAKE-CONTEXT SYSTEM::BREAK-LOCALS
+++         SYSTEM::DESCRIBE-ENVIRONMENT COMMON-LISP::DRIBBLE
+++         ANSI-LOOP::LOOP-DISALLOW-CONDITIONAL SYSTEM::MAYBE-CLEAR-INPUT
+++         COMMON-LISP::BREAK ANSI-LOOP::LOOP-GENTEMP
+++         ANSI-LOOP::MAKE-LOOP-UNIVERSE SYSTEM::MAKE-INSTREAM
+++         COMMON-LISP::MAKE-PATHNAME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -280,74 +327,6 @@
++          FPE::FE-ENABLE SYSTEM::DBL-WHAT-FRAME)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         SYSTEM::INFO SYSTEM::GET-SETF-METHOD-MULTIPLE-VALUE
++-         COMMON-LISP::FTRUNCATE COMMON-LISP::USE-VALUE
++-         COMMON-LISP::INVOKE-RESTART COMMON-LISP::WRITE-TO-STRING
++-         COMMON-LISP::FCEILING COMMON-LISP::FROUND
++-         COMMON-LISP::READ-FROM-STRING COMMON-LISP::FFLOOR
++-         SYSTEM::PARSE-BODY-HEADER SYSTEM::BREAK-FUNCTION
++-         SYSTEM::APROPOS-DOC COMMON-LISP::APROPOS
++-         COMMON-LISP::APROPOS-LIST
++-         ANSI-LOOP::LOOP-CONSTANT-FOLD-IF-POSSIBLE
++-         COMMON-LISP::GET-SETF-EXPANSION SYSTEM::PRINT-DOC
++-         COMMON-LISP::PARSE-NAMESTRING
++-         COMMON-LISP::ENSURE-DIRECTORIES-EXIST
++-         COMMON-LISP::DECODE-UNIVERSAL-TIME SYSTEM::SHOW-INFO
++-         COMMON-LISP::STORE-VALUE SYSTEM::STEPPER)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         COMMON-LISP::VECTOR-PUSH SYSTEM::DM-NTH COMMON-LISP::LOGORC1
++-         SLOOP::L-EQUAL SLOOP::NEVER-SLOOP-COLLECT
++-         COMMON-LISP::LDB-TEST COMMON-LISP::LDB COMMON-LISP::LOGORC2
++-         SLOOP::COUNT-SLOOP-COLLECT SLOOP::MAXIMIZE-SLOOP-COLLECT
++-         SYSTEM::ALL-MATCHES ANSI-LOOP::LOOP-TMEMBER SLOOP::THE-TYPE
++-         SYSTEM::?PUSH SYSTEM::INCREMENT-CURSOR SYSTEM::SET-DIR
++-         SYSTEM::DM-NTH-CDR SYSTEM::IN-INTERVAL-P SLOOP::MAKE-VALUE
++-         SYSTEM::DBL-UP COMMON-LISP::COERCE SYSTEM::MATCH-DIMENSIONS
++-         COMMON-LISP::LOGNAND SLOOP::=-SLOOP-FOR
++-         SYSTEM::KEYWORD-SUPPLIED-P SYSTEM::OVERWRITE-SLOT-DESCRIPTIONS
++-         SYSTEM::LEFT-PARENTHESIS-READER
++-         ANSI-LOOP::LOOP-MAYBE-BIND-FORM SYSTEM::COERCE-TO-STRING
++-         SYSTEM::ADD-FILE SLOOP::PARSE-LOOP-MAP COMMON-LISP::LOGNOR
++-         SYSTEM::MSUB SYSTEM::SET-BACK SYSTEM::SUPER-GO
++-         SYSTEM::SUBSTRINGP ANSI-LOOP::LOOP-TEQUAL
++-         ANSI-LOOP::LOOP-DO-WHILE SYSTEM::GET-LINE-OF-FORM
++-         FPE::READ-INSTRUCTION SYSTEM::SUB-INTERVAL-P
++-         SYSTEM::CHECK-SEQ-START-END SYSTEM::*BREAK-POINTS*
++-         ANSI-LOOP::MAKE-LOOP-MINIMAX SLOOP::IN-PACKAGE-SLOOP-MAP
++-         SYSTEM::DM-V SYSTEM::INFO-AUX
++-         ANSI-LOOP::HIDE-VARIABLE-REFERENCES
++-         SLOOP::COLLATE-SLOOP-COLLECT COMMON-LISP::PATHNAME-MATCH-P
++-         SYSTEM::SET-PATH-STREAM-NAME SLOOP::SUM-SLOOP-COLLECT
++-         ANSI-LOOP::LOOP-LOOKUP-KEYWORD
++-         ANSI-LOOP::LOOP-DECLARE-VARIABLE SYSTEM::BREAK-STEP-NEXT
++-         FPE::RF SLOOP::IN-TABLE-SLOOP-MAP SYSTEM::OBJLT
++-         FPE::READ-OPERANDS SYSTEM::BREAK-STEP-INTO COMMON-LISP::BYTE
++-         SYSTEM::SEQUENCE-CURSOR SYSTEM::LIST-DELQ
++-         SYSTEM::SETF-LOGICAL-PATHNAME-TRANSLATIONS
++-         SYSTEM::CONDITION-PASS SYSTEM::SETF-HELPER FPE::0-READER
++-         SYSTEM::DISPLAY-COMPILED-ENV COMMON-LISP::NTH
++-         COMPILER::COMPILER-DEF-HOOK SYSTEM::DOT-DIR-P
++-         COMMON-LISP::LOGTEST SYSTEM::QUOTATION-READER
++-         SYSTEM::ITERATE-OVER-BKPTS COMMON-LISP::LOGANDC1
++-         SLOOP::ALWAYS-SLOOP-COLLECT SLOOP::DESETQ1
++-         SYSTEM::GET-INFO-CHOICES COMMON-LISP::WRITE-BYTE
++-         ANSI-LOOP::LOOP-DO-IF ANSI-LOOP::LOOP-NOTE-MINIMAX-OPERATION
++-         ANSI-LOOP::LOOP-TASSOC SLOOP::IN-CAREFULLY-SLOOP-FOR
++-         COMMON-LISP::DOCUMENTATION FPE::PAREN-READER SYSTEM::GET-NODES
++-         SYSTEM::PARSE-SLOT-DESCRIPTION SLOOP::IN-FRINGE-SLOOP-MAP
++-         SYSTEM::SAFE-EVAL SYSTEM::DISPLAY-ENV FPE::%-READER
++-         SLOOP::THEREIS-SLOOP-COLLECT SYSTEM::LOOKUP-KEYWORD
++-         COMMON-LISP::LOGANDC2 COMMON-LISP::NTHCDR
++-         SLOOP::MINIMIZE-SLOOP-COLLECT SYSTEM::GET-MATCH
++-         SYSTEM::SETF-EXPAND SLOOP::LOGXOR-SLOOP-COLLECT
++-         ANSI-LOOP::LOOP-DO-ALWAYS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              ((COMMON-LISP::INTEGER -9223372036854775808
++                   9223372036854775807)
++@@ -357,263 +336,300 @@
++          SYSTEM::ROUND-UP)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
++-         COMMON-LISP::Y-OR-N-P COMMON-LISP::YES-OR-NO-P
++-         COMMON-LISP::DRIBBLE COMMON-LISP::VECTOR SYSTEM::NEXT-MATCH
++-         SYSTEM::MAKE-S-DATA SYSTEM::LOC SYSTEM::BREAK-LOCALS
++-         SLOOP::PARSE-LOOP-WITH COMMON-LISP::USER-HOMEDIR-PATHNAME
++-         SYSTEM::STEP-INTO SYSTEM::MAYBE-CLEAR-INPUT
++-         ANSI-LOOP::MAKE-LOOP-PATH SYSTEM::STEP-NEXT
++-         ANSI-LOOP::LOOP-GENTEMP COMMON-LISP::COMPUTE-RESTARTS
++-         SYSTEM::CURRENT-STEP-FUN SYSTEM::MAKE-INSTREAM
++-         ANSI-LOOP::MAKE-LOOP-COLLECTOR SYSTEM::MAKE-RESTART
++-         SYSTEM::DESCRIBE-ENVIRONMENT SYSTEM::TRANSFORM-KEYWORDS
++-         COMMON-LISP::ABORT ANSI-LOOP::MAKE-STANDARD-LOOP-UNIVERSE
++-         ANSI-LOOP::MAKE-LOOP-UNIVERSE SLOOP::PARSE-LOOP-DECLARE
++-         COMMON-LISP::BREAK ANSI-LOOP::LOOP-DISALLOW-CONDITIONAL
++-         SYSTEM::MAKE-CONTEXT SYSTEM::DBL-READ
++-         COMMON-LISP::MAKE-PATHNAME
++-         ANSI-LOOP::MAKE-LOOP-MINIMAX-INTERNAL)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
++-         ANSI-LOOP::LOOP-OPTIMIZATION-QUANTITIES SYSTEM::BREAK-GO
++-         COMMON-LISP::FILE-AUTHOR SYSTEM::ENSURE-DIR-STRING
++-         SYSTEM::INFO-SUBFILE COMMON-LISP::DESCRIBE SYSTEM::END-WAITING
++-         COMMON-LISP::PRIN1-TO-STRING SYSTEM::FIND-DECLARATIONS
++-         COMMON-LISP::INSPECT ANSI-LOOP::NAMED-VARIABLE
++-         SYSTEM::GET-&ENVIRONMENT SYSTEM::INSPECT-OBJECT
++-         COMMON-LISP::PRINC-TO-STRING ANSI-LOOP::LOOP-LIST-STEP
++-         SYSTEM::INSTREAM-NAME SYSTEM::BREAK-LEVEL-INVOKE-RESTART
++-         SYSTEM::WAITING COMMON-LISP::INVOKE-RESTART-INTERACTIVELY)) 
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                  COMMON-LISP::*)
+++              (COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807))
+++             COMMON-LISP::FIXNUM)
+++         SYSTEM::ATOI)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         SYSTEM::IHS-NOT-INTERPRETED-ENV COMMON-LISP::NINTH
++-         SYSTEM::FIND-KCL-TOP-RESTART COMMON-LISP::TRUENAME
++-         SYSTEM::DIRECTORY-LIST-CHECK SYSTEM::REAL-ASINH
++-         SYSTEM::SHOW-ENVIRONMENT SYSTEM::PRINT-FRS
++-         SYSTEM::REWRITE-RESTART-CASE-CLAUSE
++-         COMMON-LISP::TWO-WAY-STREAM-OUTPUT-STREAM
++-         ANSI-LOOP::LOOP-COLLECTOR-DATA SLOOP::POINTER-FOR-COLLECT
++-         SYSTEM::MLP SYSTEM::WILD-PATH-ELEMENT-P SYSTEM::LNP
++-         ANSI-LOOP::LOOP-MINIMAX-OPERATIONS SYSTEM::FRS-KIND
++-         SYSTEM::BKPT-FILE COMMON-LISP::FIFTH
++-         ANSI-LOOP::LOOP-COLLECTOR-P ANSI-LOOP::LOOP-UNIVERSE-ANSI
++-         ANSI-LOOP::LOOP-PATH-PREPOSITION-GROUPS SYSTEM::IDESCRIBE
++-         ANSI-LOOP::LOOP-CONSTANTP
++-         ANSI-LOOP::LOOP-UNIVERSE-FOR-KEYWORDS COMMON-LISP::PROBE-FILE
++-         ANSI-LOOP::LOOP-UNIVERSE-P COMMON-LISP::SINH SYSTEM::RESTART-P
++-         SYSTEM::S-DATA-DOCUMENTATION
+++         SYSTEM::REGEXP-CONV SYSTEM::DIR-CONJ SYSTEM::DIR-P
+++         ANSI-LOOP::LOOP-LIST-COLLECTION COMMON-LISP::COSH
+++         SYSTEM::GET-BYTE-STREAM-NCHARS SYSTEM::INSPECT-CONS
+++         SYSTEM::KNOWN-TYPE-P SYSTEM::LNP COMMON-LISP::SEVENTH
+++         SYSTEM::BKPT-FUNCTION SYSTEM::WILD-DIR-ELEMENT-P
+++         COMMON-LISP::COMPILER-MACRO-FUNCTION
+++         ANSI-LOOP::LOOP-HACK-ITERATION
++          COMMON-LISP::ECHO-STREAM-OUTPUT-STREAM
++-         SYSTEM::FIND-DOCUMENTATION SYSTEM::INFO-GET-FILE
++-         SLOOP::PARSE-NO-BODY COMMON-LISP::FILE-NAMESTRING
++-         COMMON-LISP::COMPILER-MACRO-FUNCTION SYSTEM::PROCESS-ARGS
++-         ANSI-LOOP::LOOP-COLLECTOR-DTYPE COMMON-LISP::PHASE
++-         SYSTEM::MAKE-FRAME SYSTEM::INSTREAM-STREAM
++-         ANSI-LOOP::LOOP-COLLECTOR-HISTORY SYSTEM::FIX-LOAD-PATH
++-         SYSTEM::COMPUTING-ARGS-P
++-         ANSI-LOOP::LOOP-MINIMAX-ANSWER-VARIABLE COMMON-LISP::TENTH
++-         ANSI-LOOP::MAKE-ANSI-LOOP-UNIVERSE SYSTEM::WILD-NAMESTRING-P
++-         SYSTEM::BEST-ARRAY-ELEMENT-TYPE SYSTEM::DM-BAD-KEY
++-         SYSTEM::TERMINAL-INTERRUPT SYSTEM::REGEXP-CONV
++-         COMMON-LISP::FILE-WRITE-DATE SLOOP::PARSE-LOOP
++-         ANSI-LOOP::LOOP-CONSTRUCT-RETURN SYSTEM::DWIM
+++         SYSTEM::DIRECTORY-LIST-CHECK COMMON-LISP::FILE-WRITE-DATE
+++         SYSTEM::NORMALIZE-TYPE COMMON-LISP::EIGHTH SYSTEM::TOGGLE-CASE
+++         SYSTEM::SHOW-ENVIRONMENT
+++         COMMON-LISP::TWO-WAY-STREAM-INPUT-STREAM SYSTEM::GET-PATH
+++         COMMON-LISP::ASINH SYSTEM::FIND-KCL-TOP-RESTART
+++         SYSTEM::RESTART-P SYSTEM::EVAL-FEATURE SYSTEM::ALOAD
+++         COMMON-LISP::PHASE SLOOP::SUBSTITUTE-SLOOP-BODY
+++         COMMON-LISP::ASIN SYSTEM::NODES-FROM-INDEX
+++         SYSTEM::MAKE-DEFPACKAGE-FORM ANSI-LOOP::LOOP-COLLECTOR-DTYPE
+++         SYSTEM::LOGICAL-PATHNAMEP SYSTEM::INSPECT-VECTOR
++          ANSI-LOOP::LOOP-UNIVERSE-TYPE-KEYWORDS
++-         SLOOP::RETURN-SLOOP-MACRO SLOOP::AVERAGING-SLOOP-MACRO
++-         SYSTEM::S-DATA-NAME SYSTEM::CHECK-TRACE-SPEC
++-         SYSTEM::RESTRICT-STREAM-ELEMENT-TYPE SLOOP::TRANSLATE-NAME
++-         SYSTEM::ADD-TO-HOTLIST SYSTEM::S-DATA-CONC-NAME
++-         ANSI-LOOP::LOOP-MINIMAX-TYPE SYSTEM::PRINT-IHS
++-         SYSTEM::DBL-RPL-LOOP SYSTEM::CANONICALIZE-PATHNAME-DIRECTORY
++-         SYSTEM::INSPECT-CONS SYSTEM::INSTREAM-STREAM-NAME
++-         SYSTEM::S-DATA-P SYSTEM::EVAL-FEATURE
++-         COMMON-LISP::ARRAY-DIMENSIONS SYSTEM::IHS-VISIBLE
++-         ANSI-LOOP::LOOP-MINIMAX-FLAG-VARIABLE
++-         SYSTEM::CHECK-DECLARATIONS COMMON-LISP::TANH
++-         ANSI-LOOP::LOOP-UNIVERSE-PATH-KEYWORDS
++-         COMMON-LISP::COMPILE-FILE-PATHNAME SYSTEM::INSPECT-PACKAGE
++-         SLOOP::LOOP-LET-BINDINGS COMMON-LISP::CIS SYSTEM::SETUP-INFO
++-         SYSTEM::NORMALIZE-TYPE ANSI-LOOP::LOOP-PSEUDO-BODY
++-         SYSTEM::PATH-STREAM-NAME SYSTEM::INFO-GET-TAGS FPE::ST-LOOKUP
++-         SYSTEM::BREAK-BACKWARD-SEARCH-STACK
++-         ANSI-LOOP::LOOP-MINIMAX-TEMP-VARIABLE SYSTEM::SIMPLE-ARRAY-P
++-         SYSTEM::S-DATA-TYPE COMMON-LISP::CONCATENATED-STREAM-STREAMS
++-         SYSTEM::INSPECT-CHARACTER ANSI-LOOP::DESTRUCTURING-SIZE
++-         SYSTEM::GET-BYTE-STREAM-NCHARS ANSI-LOOP::LOOP-PATH-P
++-         COMMON-LISP::FIRST COMMON-LISP::SECOND
++-         COMMON-LISP::TWO-WAY-STREAM-INPUT-STREAM
++-         SYSTEM::MAKE-DEFPACKAGE-FORM SYSTEM::INSPECT-SYMBOL
++-         SYSTEM::INSPECT-VECTOR
++-         COMMON-LISP::LOAD-LOGICAL-PATHNAME-TRANSLATIONS
++-         SYSTEM::RESTART-INTERACTIVE-FUNCTION SYSTEM::INSPECT-STRING
++-         SYSTEM::DIR-P ANSI-LOOP::LOOP-COLLECTOR-CLASS
++-         SYSTEM::S-DATA-CONSTRUCTORS SYSTEM::NODES-FROM-INDEX
++-         SYSTEM::VERSION-PARSE SYSTEM::BKPT-FILE-LINE COMMON-LISP::ABS
++-         SYSTEM::IHS-FNAME ANSI-LOOP::LOOP-MAKE-PSETQ
++-         SYSTEM::LEAP-YEAR-P ANSI-LOOP::LOOP-EMIT-FINAL-VALUE
++-         SYSTEM::GET-PATH SYSTEM::ALOAD SYSTEM::DM-KEY-NOT-ALLOWED
++-         SYSTEM::MAKE-KCL-TOP-RESTART SYSTEM::S-DATA-SLOT-DESCRIPTIONS
++-         COMMON-LISP::VECTOR-POP ANSI-LOOP::LOOP-UNIVERSE-KEYWORDS
++-         ANSI-LOOP::LOOP-PATH-USER-DATA SYSTEM::S-DATA-SLOT-POSITION
++-         COMMON-LISP::BROADCAST-STREAM-STREAMS
++-         SYSTEM::LOGICAL-PATHNAMEP SYSTEM::BREAK-FORWARD-SEARCH-STACK
++-         SLOOP::SLOOP-SLOOP-MACRO COMMON-LISP::SIGNUM
++-         SYSTEM::RESET-TRACE-DECLARATIONS SYSTEM::CONTEXT-P
++-         SYSTEM::S-DATA-FROZEN SYSTEM::NUMBER-OF-DAYS-FROM-1900
++-         SYSTEM::S-DATA-STATICP ANSI-LOOP::LOOP-PATH-FUNCTION
++-         SYSTEM::KNOWN-TYPE-P COMMON-LISP::PROVIDE SYSTEM::PNL1
++-         ANSI-LOOP::LOOP-CODE-DUPLICATION-THRESHOLD
++-         SYSTEM::COERCE-SLASH-TERMINATED COMMON-LISP::LOGICAL-PATHNAME
++-         SYSTEM::DIR-CONJ SYSTEM::BKPT-FORM
++-         SYSTEM::LOGICAL-PATHNAME-HOST-P SYSTEM::INSPECT-STRUCTURE
++-         ANSI-LOOP::LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
++-         COMMON-LISP::FIND-ALL-SYMBOLS
+++         SYSTEM::RESTART-REPORT-FUNCTION SYSTEM::IHS-VISIBLE
+++         SLOOP::LOOP-COLLECT-KEYWORD-P ANSI-LOOP::LOOP-TYPED-INIT
+++         COMMON-LISP::VECTOR-POP SYSTEM::UNIQUE-ID
++          ANSI-LOOP::LOOP-UNIVERSE-ITERATION-KEYWORDS
++-         ANSI-LOOP::LOOP-PATH-INCLUSIVE-PERMITTED
+++         SYSTEM::SIMPLE-ARRAY-P COMMON-LISP::ACOS SYSTEM::DBL-EVAL
+++         SYSTEM::INSPECT-STRING SYSTEM::MLP
+++         SYSTEM::INSTREAM-STREAM-NAME SYSTEM::WILD-NAMESTRING-P
+++         ANSI-LOOP::LOOP-PATH-FUNCTION
+++         SYSTEM::GET-STRING-INPUT-STREAM-INDEX
+++         ANSI-LOOP::LOOP-MINIMAX-TEMP-VARIABLE SYSTEM::SEQTYPE
+++         ANSI-LOOP::LOOP-UNIVERSE-KEYWORDS
+++         SYSTEM::BEST-ARRAY-ELEMENT-TYPE
+++         ANSI-LOOP::LOOP-MINIMAX-INFINITY-DATA SYSTEM::S-DATA-FROZEN
+++         SYSTEM::S-DATA-DOCUMENTATION SYSTEM::DWIM COMMON-LISP::SIGNUM
+++         SYSTEM::FIND-DOCUMENTATION ANSI-LOOP::LOOP-COLLECTOR-HISTORY
+++         ANSI-LOOP::LOOP-MAKE-PSETQ FPE::GREF SYSTEM::S-DATA-OFFSET
+++         SYSTEM::WILD-PATH-ELEMENT-P SYSTEM::INSTREAM-P
+++         COMMON-LISP::DIRECTORY-NAMESTRING SYSTEM::INSPECT-ARRAY
+++         COMMON-LISP::ARRAY-DIMENSIONS
+++         ANSI-LOOP::LOOP-COLLECTOR-TEMPVARS ANSI-LOOP::LOOP-MINIMAX-P
+++         SLOOP::RETURN-SLOOP-MACRO SYSTEM::WALK-THROUGH
+++         SYSTEM::NEXT-STACK-FRAME SYSTEM::S-DATA-NAME COMMON-LISP::TANH
+++         SYSTEM::BREAK-BACKWARD-SEARCH-STACK COMMON-LISP::TENTH
+++         SYSTEM::INFO-NODE-FROM-POSITION FPE::ST-LOOKUP
+++         COMMON-LISP::RESTART-NAME SYSTEM::S-DATA-TYPE
+++         SYSTEM::BKPT-FILE-LINE COMMON-LISP::FIND-ALL-SYMBOLS
+++         COMMON-LISP::FIFTH SLOOP::LOOP-LET-BINDINGS
+++         COMMON-LISP::ECHO-STREAM-INPUT-STREAM
+++         ANSI-LOOP::LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
+++         COMMON-LISP::PROBE-FILE SYSTEM::MAKE-FRAME
+++         SYSTEM::IHS-NOT-INTERPRETED-ENV SYSTEM::SEARCH-STACK
+++         COMMON-LISP::COMPILE-FILE-PATHNAME
+++         SYSTEM::PRINT-SYMBOL-APROPOS COMMON-LISP::LOGNOT
+++         SYSTEM::INFO-GET-TAGS SYSTEM::SHORT-NAME
+++         ANSI-LOOP::LOOP-MINIMAX-TYPE COMMON-LISP::SIXTH
+++         COMMON-LISP::SECOND ANSI-LOOP::LOOP-UNIVERSE-TYPE-SYMBOLS
+++         COMMON-LISP::TWO-WAY-STREAM-OUTPUT-STREAM
+++         SYSTEM::S-DATA-INCLUDES SYSTEM::RESTART-INTERACTIVE-FUNCTION
+++         SLOOP::TRANSLATE-NAME SYSTEM::PATCH-SHARP COMMON-LISP::ABS
+++         ANSI-LOOP::LOOP-CONSTANTP SYSTEM::LEAP-YEAR-P
+++         ANSI-LOOP::LOOP-UNIVERSE-ANSI ANSI-LOOP::LOOP-EMIT-BODY
+++         COMMON-LISP::HOST-NAMESTRING COMMON-LISP::FIRST
+++         SYSTEM::INSERT-BREAK-POINT
+++         COMMON-LISP::LOAD-LOGICAL-PATHNAME-TRANSLATIONS
+++         COMMON-LISP::DELETE-FILE ANSI-LOOP::LOOP-PSEUDO-BODY
+++         SYSTEM::GET-NEXT-VISIBLE-FUN SYSTEM::S-DATA-HAS-HOLES
+++         ANSI-LOOP::LOOP-COLLECTOR-NAME COMMON-LISP::FOURTH
+++         SYSTEM::BKPT-FILE SYSTEM::CANONICALIZE-PATHNAME-DIRECTORY
+++         SYSTEM::INSTREAM-STREAM SYSTEM::PNL1 SYSTEM::IHS-FNAME
+++         SYSTEM::S-DATA-SLOT-POSITION SLOOP::PARSE-LOOP
+++         SYSTEM::CHECK-TRACE-SPEC SYSTEM::S-DATA-CONSTRUCTORS
+++         SYSTEM::S-DATA-STATICP SYSTEM::CONTEXT-P
++          COMMON-LISP::LOGICAL-PATHNAME-TRANSLATIONS
++-         SYSTEM::TRACE-ONE-PREPROCESS COMMON-LISP::CONSTANTLY
++-         COMMON-LISP::ACOS SYSTEM::S-DATA-OFFSET COMMON-LISP::ASINH
++-         SYSTEM::SHORT-NAME SYSTEM::S-DATA-INCLUDED SYSTEM::DBL-EVAL
++-         SYSTEM::BKPT-FUNCTION SYSTEM::INSPECT-NUMBER
++-         SYSTEM::GET-INSTREAM SYSTEM::SHOW-BREAK-POINT FPE::LOOKUP
++-         SYSTEM::NEXT-STACK-FRAME SYSTEM::INSPECT-ARRAY
++-         SYSTEM::S-DATA-RAW ANSI-LOOP::LOOP-MINIMAX-INFINITY-DATA
++-         SYSTEM::RESTART-REPORT-FUNCTION SYSTEM::TOGGLE-CASE
++-         SYSTEM::NODE-OFFSET SYSTEM::INSTREAM-P
++-         ANSI-LOOP::LOOP-PATH-NAMES SYSTEM::FREEZE-DEFSTRUCT
++-         COMMON-LISP::SEVENTH SYSTEM::SEARCH-STACK COMMON-LISP::SIXTH
++-         ANSI-LOOP::LOOP-UNIVERSE-TYPE-SYMBOLS FPE::GREF
++-         FPE::XMM-LOOKUP COMMON-LISP::HOST-NAMESTRING
++-         ANSI-LOOP::LOOP-TYPED-INIT
+++         SYSTEM::INFO-GET-FILE COMMON-LISP::COMPLEMENT
+++         SYSTEM::INSPECT-NUMBER SYSTEM::RESET-TRACE-DECLARATIONS
+++         ANSI-LOOP::LOOP-PATH-P SLOOP::REPEAT-SLOOP-MACRO SYSTEM::DO-F
+++         SYSTEM::INSPECT-PACKAGE SYSTEM::PATH-STREAM-NAME
+++         SYSTEM::GET-INSTREAM COMMON-LISP::BYTE-SIZE
+++         SYSTEM::RESTART-FUNCTION FPE::LOOKUP SYSTEM::S-DATA-CONC-NAME
+++         COMMON-LISP::PROVIDE SYSTEM::S-DATA-NAMED SYSTEM::PRINT-FRS
+++         ANSI-LOOP::LOOP-MINIMAX-ANSWER-VARIABLE SYSTEM::NODE-OFFSET
+++         ANSI-LOOP::MAKE-ANSI-LOOP-UNIVERSE SYSTEM::PRINT-IHS
+++         ANSI-LOOP::LOOP-UNIVERSE-PATH-KEYWORDS COMMON-LISP::TRUENAME
+++         SYSTEM::BREAK-FORWARD-SEARCH-STACK
+++         COMMON-LISP::CONCATENATED-STREAM-STREAMS SYSTEM::VERSION-PARSE
+++         SYSTEM::INSPECT-CHARACTER SYSTEM::LOGICAL-PATHNAME-HOST-P
+++         SYSTEM::DM-BAD-KEY SYSTEM::EXPAND-HOME-DIR
+++         ANSI-LOOP::LOOP-PATH-USER-DATA
+++         ANSI-LOOP::LOOP-PATH-PREPOSITION-GROUPS SYSTEM::INSPECT-SYMBOL
+++         COMMON-LISP::INVOKE-DEBUGGER
++          SYSTEM::LOGICAL-PATHNAME-DESIGNATOR-P
++-         ANSI-LOOP::LOOP-DO-THEREIS COMMON-LISP::EIGHTH
++-         SYSTEM::UNIQUE-ID COMMON-LISP::THIRD
++-         COMMON-LISP::BYTE-POSITION COMMON-LISP::SYNONYM-STREAM-SYMBOL
++-         SYSTEM::PATCH-SHARP SYSTEM::PRINT-SYMBOL-APROPOS
++-         COMMON-LISP::LOGNOT SLOOP::REPEAT-SLOOP-MACRO
++-         COMMON-LISP::FOURTH SLOOP::SUBSTITUTE-SLOOP-BODY
++-         COMMON-LISP::ATANH SLOOP::LOOP-COLLECT-KEYWORD-P
++-         SYSTEM::SEQTYPE SYSTEM::RE-QUOTE-STRING COMMON-LISP::ISQRT
++-         SYSTEM::DO-F SYSTEM::S-DATA-HAS-HOLES
++-         ANSI-LOOP::LOOP-HACK-ITERATION ANSI-LOOP::LOOP-COLLECTOR-NAME
++-         COMMON-LISP::RESTART-NAME COMMON-LISP::DIRECTORY-NAMESTRING
++-         ANSI-LOOP::LOOP-EMIT-BODY COMMON-LISP::ACOSH
++-         SYSTEM::RESTART-FUNCTION SYSTEM::INFO-NODE-FROM-POSITION
++-         COMMON-LISP::ASIN ANSI-LOOP::LOOP-LIST-COLLECTION
++-         SYSTEM::S-DATA-INCLUDES SYSTEM::GET-NEXT-VISIBLE-FUN
++-         COMMON-LISP::BYTE-SIZE COMMON-LISP::PATHNAME
++-         ANSI-LOOP::LOOP-MINIMAX-P SLOOP::PARSE-LOOP-INITIALLY
++-         COMMON-LISP::COSH SYSTEM::EXPAND-HOME-DIR
++-         COMMON-LISP::ECHO-STREAM-INPUT-STREAM
++-         SYSTEM::INSERT-BREAK-POINT SYSTEM::RESTART-TEST-FUNCTION
++-         SYSTEM::S-DATA-PRINT-FUNCTION SYSTEM::WILD-DIR-ELEMENT-P
++-         SYSTEM::S-DATA-NAMED COMMON-LISP::INVOKE-DEBUGGER
++-         COMMON-LISP::NAMESTRING ANSI-LOOP::LOOP-MAKE-DESETQ
++-         COMMON-LISP::COMPLEMENT SYSTEM::WALK-THROUGH
++-         COMMON-LISP::RATIONAL ANSI-LOOP::LOOP-MAXMIN-COLLECTION
++-         COMMON-LISP::DELETE-FILE ANSI-LOOP::LOOP-COLLECTOR-TEMPVARS)) 
+++         COMMON-LISP::BYTE-POSITION COMMON-LISP::ISQRT COMMON-LISP::CIS
+++         ANSI-LOOP::LOOP-COLLECTOR-CLASS
+++         COMMON-LISP::SYNONYM-STREAM-SYMBOL ANSI-LOOP::LOOP-PATH-NAMES
+++         SYSTEM::RE-QUOTE-STRING SYSTEM::INSPECT-STRUCTURE
+++         COMMON-LISP::RATIONAL FPE::XMM-LOOKUP
+++         SYSTEM::REWRITE-RESTART-CASE-CLAUSE
+++         SYSTEM::S-DATA-PRINT-FUNCTION
+++         SYSTEM::RESTRICT-STREAM-ELEMENT-TYPE SLOOP::SLOOP-SLOOP-MACRO
+++         COMMON-LISP::NAMESTRING SYSTEM::ENSURE-DIR-STRING
+++         COMMON-LISP::CONSTANTLY SLOOP::PARSE-LOOP-INITIALLY
+++         SYSTEM::S-DATA-RAW SYSTEM::ADD-TO-HOTLIST SYSTEM::FRS-KIND
+++         ANSI-LOOP::LOOP-MAXMIN-COLLECTION
+++         ANSI-LOOP::LOOP-COLLECTOR-DATA SYSTEM::PROCESS-ARGS
+++         SYSTEM::COERCE-SLASH-TERMINATED SYSTEM::MAKE-KCL-TOP-RESTART
+++         COMMON-LISP::ATANH ANSI-LOOP::LOOP-CODE-DUPLICATION-THRESHOLD
+++         COMMON-LISP::SINH ANSI-LOOP::LOOP-UNIVERSE-P
+++         ANSI-LOOP::LOOP-PATH-INCLUSIVE-PERMITTED
+++         SYSTEM::S-DATA-INCLUDED COMMON-LISP::STREAM-EXTERNAL-FORMAT
+++         SYSTEM::COMPUTING-ARGS-P SYSTEM::REAL-ASINH
+++         ANSI-LOOP::LOOP-CONSTRUCT-RETURN
+++         SYSTEM::S-DATA-SLOT-DESCRIPTIONS SYSTEM::FIX-LOAD-PATH
+++         SYSTEM::CHECK-DECLARATIONS
+++         ANSI-LOOP::LOOP-UNIVERSE-FOR-KEYWORDS
+++         SLOOP::POINTER-FOR-COLLECT COMMON-LISP::LOGICAL-PATHNAME
+++         SYSTEM::CHDIR SYSTEM::IDESCRIBE
+++         ANSI-LOOP::LOOP-MINIMAX-OPERATIONS COMMON-LISP::ACOSH
+++         COMMON-LISP::NINTH ANSI-LOOP::LOOP-MINIMAX-FLAG-VARIABLE
+++         ANSI-LOOP::LOOP-COLLECTOR-P SYSTEM::S-DATA-P SYSTEM::BKPT-FORM
+++         COMMON-LISP::FILE-NAMESTRING SYSTEM::TERMINAL-INTERRUPT
+++         SYSTEM::SETUP-INFO SLOOP::PARSE-NO-BODY
+++         SYSTEM::DM-KEY-NOT-ALLOWED ANSI-LOOP::LOOP-EMIT-FINAL-VALUE
+++         SYSTEM::FREEZE-DEFSTRUCT SYSTEM::DBL-RPL-LOOP
+++         SYSTEM::TRACE-ONE-PREPROCESS
+++         COMMON-LISP::BROADCAST-STREAM-STREAMS COMMON-LISP::THIRD
+++         SLOOP::AVERAGING-SLOOP-MACRO SYSTEM::SHOW-BREAK-POINT
+++         COMMON-LISP::PATHNAME ANSI-LOOP::LOOP-DO-THEREIS
+++         COMMON-LISP::FILE-AUTHOR ANSI-LOOP::LOOP-MAKE-DESETQ
+++         SYSTEM::NC SYSTEM::NUMBER-OF-DAYS-FROM-1900
+++         SYSTEM::RESTART-TEST-FUNCTION SYSTEM::WHICH
+++         ANSI-LOOP::DESTRUCTURING-SIZE COMMON-LISP::FILE-LENGTH)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
++-         SYSTEM::BREAK-QUIT SYSTEM::BREAK-BDS SYSTEM::DBL-BACKTRACE
++-         SYSTEM::BREAK-LOCAL SYSTEM::INFO-ERROR
++-         SYSTEM::SHOW-BREAK-VARIABLES SYSTEM::BREAK-VS
++-         COMMON-LISP::CONTINUE COMMON-LISP::MUFFLE-WARNING
++-         SYSTEM::IHS-BACKTRACE ANSI-LOOP::LOOP-OPTIONAL-TYPE
++-         SYSTEM::BREAK-PREVIOUS SYSTEM::BREAK-NEXT)) 
+++         SYSTEM::BREAK-VS ANSI-LOOP::LOOP-OPTIONAL-TYPE
+++         SYSTEM::BREAK-BDS SYSTEM::IHS-BACKTRACE SYSTEM::INFO-ERROR
+++         SYSTEM::BREAK-LOCAL SYSTEM::SHOW-BREAK-VARIABLES
+++         COMMON-LISP::MUFFLE-WARNING SYSTEM::BREAK-PREVIOUS
+++         SYSTEM::BREAK-QUIT SYSTEM::DBL-BACKTRACE COMMON-LISP::CONTINUE
+++         SYSTEM::BREAK-NEXT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
+++         SYSTEM::MAKE-KEYWORD)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807)
++-              COMMON-LISP::T)
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
+++                 COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         SYSTEM::SMALLNTHCDR)) 
+++         SYSTEM::QUICK-SORT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             COMMON-LISP::HASH-TABLE)
++-         SYSTEM::CONTEXT-SPICE)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807)
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SYSTEM::BIGNTHCDR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
++-         SYSTEM::S-DATA-SIZE FPE::REG-LOOKUP SYSTEM::INSTREAM-LINE
++-         SYSTEM::S-DATA-LENGTH SYSTEM::THE-START)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         COMMON-LISP::FIND-RESTART COMMON-LISP::PATHNAME-HOST
+++         SYSTEM::LINK-EXPAND COMMON-LISP::CONCATENATE COMMON-LISP::WARN
+++         COMMON-LISP::FILE-POSITION ANSI-LOOP::LOOP-WARN
+++         COMMON-LISP::PATHNAME-DIRECTORY COMMON-LISP::SBIT
+++         COMMON-LISP::BIT ANSI-LOOP::LOOP-COLLECT-PREPOSITIONAL-PHRASES
+++         COMMON-LISP::PATHNAME-TYPE COMMON-LISP::MAKE-ARRAY
+++         ANSI-LOOP::LOOP-ERROR COMMON-LISP::DIRECTORY SYSTEM::DIR-PARSE
+++         COMMON-LISP::TRANSLATE-LOGICAL-PATHNAME
+++         SYSTEM::NTH-STACK-FRAME COMMON-LISP::REQUIRE COMMON-LISP::LOAD
+++         SYSTEM::MGLIST COMMON-LISP::DELETE-DUPLICATES
+++         COMMON-LISP::PATHNAME-VERSION COMMON-LISP::ENOUGH-NAMESTRING
+++         SYSTEM::BAD-SEQ-LIMIT COMMON-LISP::REMOVE-DUPLICATES
+++         COMMON-LISP::PATHNAME-NAME
+++         COMMON-LISP::MAKE-STRING-INPUT-STREAM SLOOP::LOOP-ADD-TEMPS
+++         SYSTEM::NLOAD SYSTEM::LIST-MATCHES
+++         COMMON-LISP::ARRAY-ROW-MAJOR-INDEX
+++         COMMON-LISP::ARRAY-IN-BOUNDS-P SYSTEM::BREAK-LEVEL
+++         SYSTEM::PROCESS-SOME-ARGS SYSTEM::TO-REGEXP
+++         COMMON-LISP::UPGRADED-ARRAY-ELEMENT-TYPE COMMON-LISP::OPEN
+++         SYSTEM::FILE-SEARCH COMMON-LISP::READ-BYTE
+++         SYSTEM::FILE-TO-STRING SLOOP::ADD-FROM-DATA COMMON-LISP::ERROR
+++         COMMON-LISP::SIGNAL SYSTEM::MGSUB COMMON-LISP::WILD-PATHNAME-P
+++         COMMON-LISP::PATHNAME-DEVICE SYSTEM::LOGICAL-PATHNAME-PARSE
+++         COMMON-LISP::MERGE-PATHNAMES SYSTEM::INFO-SEARCH
+++         COMMON-LISP::BIT-NOT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
++-         SYSTEM::MATCH-BEGINNING SYSTEM::MATCH-END)) 
++-(COMMON-LISP::MAPC
++-    (COMMON-LISP::LAMBDA (COMPILER::X)
++-      (COMMON-LISP::SETF
++-          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
++-          COMMON-LISP::T))
++-    '(SYSTEM::CONDITION-CLASS-P SYSTEM::WARNINGP SYSTEM::SI-CLASS-OF
++-         SYSTEM::SI-FIND-CLASS SYSTEM::DEFINE-STRUCTURE
++-         FPE::BREAK-ON-FLOATING-POINT-EXCEPTIONS
++-         SYSTEM::SIMPLE-CONDITION-CLASS-P SYSTEM::AUTOLOAD
++-         SYSTEM::SI-CLASS-PRECEDENCE-LIST SYSTEM::SI-CLASS-NAME
++-         SYSTEM::TRACE-ONE SYSTEM::MAKE-ACCESS-FUNCTION
++-         SYSTEM::UNTRACE-ONE SYSTEM::SI-CLASSP SYSTEM::CONDITIONP
++-         SYSTEM::AUTOLOAD-MACRO)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         ANSI-LOOP::ESTIMATE-CODE-SIZE-1 SYSTEM::DO-REPL
+++         SYSTEM::SOURCE-PORTION SYSTEM::RESTART-REPORT
+++         SYSTEM::NEW-SEMI-COLON-READER SYSTEM::FIND-DOC
+++         ANSI-LOOP::ESTIMATE-CODE-SIZE SYSTEM::NEWLINE
+++         COMMON-LISP::RENAME-FILE SYSTEM::LIST-TOGGLE-CASE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::INTEGER -9223372036854775808
++-                  9223372036854775807))
++-             COMMON-LISP::T)
++-         SYSTEM::GET-CONTEXT SYSTEM::PUSH-CONTEXT)) 
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         COMMON-LISP::REDUCE COMMON-LISP::STABLE-SORT
+++         SYSTEM::PARSE-BODY SLOOP::FIND-IN-ORDERED-LIST
+++         COMMON-LISP::SUBTYPEP COMMON-LISP::SORT)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::FIXNUM)
++-         SYSTEM::RELATIVE-LINE SYSTEM::LENEL SYSTEM::THE-END
++-         ANSI-LOOP::DUPLICATABLE-CODE-P SYSTEM::FASLINK
++-         SYSTEM::GET-NODE-INDEX)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::LIST-MERGE-SORT ANSI-LOOP::LOOP-GET-COLLECTION-INFO
+++         SYSTEM::SHARP---READER SYSTEM::SHARP-S-READER
+++         SYSTEM::VERIFY-KEYWORDS SYSTEM::RESTART-PRINT
+++         SYSTEM::SHARP-+-READER SYSTEM::READ-INSPECT-COMMAND)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
++-         SLOOP::PARSE-ONE-WHEN-CLAUSE ANSI-LOOP::LOOP-DO-FINALLY
++-         SLOOP::LOOP-PEEK ANSI-LOOP::LOOP-DO-INITIALLY SLOOP::LOOP-POP
++-         ANSI-LOOP::LOOP-GET-PROGN SYSTEM::KCL-TOP-RESTARTS
++-         SYSTEM::INSPECT-READ-LINE SLOOP::PARSE-LOOP-WHEN
++-         ANSI-LOOP::LOOP-GET-FORM SYSTEM::DEFAULT-SYSTEM-BANNER
++-         SYSTEM::SET-UP-TOP-LEVEL SYSTEM::GET-INDEX-NODE
++-         ANSI-LOOP::LOOP-DO-DO ANSI-LOOP::LOOP-WHEN-IT-VARIABLE
++-         SYSTEM::SETUP-LINEINFO COMMON-LISP::TYPE-ERROR
++-         SYSTEM::READ-EVALUATED-FORM SYSTEM::INSPECT-INDENT-1
++-         SLOOP::LOOP-UN-POP SLOOP::PARSE-LOOP-DO
++-         ANSI-LOOP::LOOP-DO-WITH SYSTEM::INSPECT-INDENT
++-         SYSTEM::GET-TEMP-DIR ANSI-LOOP::LOOP-ITERATION-DRIVER
++-         SYSTEM::WINE-TMP-REDIRECT SLOOP::PARSE-LOOP-COLLECT
++-         SYSTEM::DEFAULT-INFO-HOTLIST SLOOP::PARSE-LOOP1
++-         SYSTEM::CLEANUP ANSI-LOOP::LOOP-DO-NAMED SYSTEM::DBL
++-         SYSTEM::ALL-TRACE-DECLARATIONS SYSTEM::TEST-ERROR
++-         ANSI-LOOP::LOOP-BIND-BLOCK ANSI-LOOP::LOOP-DO-REPEAT
++-         SYSTEM::ILLEGAL-BOA SYSTEM::SET-ENV SYSTEM::SET-CURRENT
++-         SYSTEM::INIT-BREAK-POINTS SYSTEM::GET-SIG-FN-NAME
++-         ANSI-LOOP::LOOP-DO-RETURN ANSI-LOOP::LOOP-CONTEXT
++-         SYSTEM::SHOW-RESTARTS SYSTEM::STEP-READ-LINE
++-         SLOOP::PARSE-LOOP-FOR SYSTEM::DM-TOO-MANY-ARGUMENTS
++-         COMMON-LISP::LISP-IMPLEMENTATION-VERSION SYSTEM::TOP-LEVEL
++-         ANSI-LOOP::LOOP-POP-SOURCE SYSTEM::DM-TOO-FEW-ARGUMENTS)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::PUSH-OPTIONAL-BINDING)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             ((COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
++-                  COMMON-LISP::*))
++-             COMMON-LISP::T)
++-         SYSTEM::RESET-SYS-PATHS)) 
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::TRACE-CALL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::VECTOR COMMON-LISP::T))
++-         SYSTEM::CONTEXT-VEC)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::MASET)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::EXPAND-WILD-DIRECTORY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         SYSTEM::PARSE-DEFMACRO SYSTEM::PARSE-DEFMACRO-LAMBDA-LIST)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         SYSTEM::MME3)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             ((COMMON-LISP::INTEGER -9223372036854775808
+++                  9223372036854775807)
+++              COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         SYSTEM::SMALLNTHCDR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
++-         SYSTEM::BREAK-HELP SYSTEM::BREAK-MESSAGE
++-         SYSTEM::SIMPLE-BACKTRACE ANSI-LOOP::LOOP-DO-FOR
++-         SYSTEM::BREAK-CURRENT SYSTEM::GCL-TOP-LEVEL
++-         SYSTEM::BREAK-RESUME)) 
++\ No newline at end of file
+++         SYSTEM::GCL-TOP-LEVEL SYSTEM::BREAK-MESSAGE
+++         SYSTEM::BREAK-RESUME SYSTEM::SIMPLE-BACKTRACE
+++         SYSTEM::BREAK-HELP ANSI-LOOP::LOOP-DO-FOR
+++         SYSTEM::BREAK-CURRENT)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         SYSTEM::S-DATA-LENGTH SYSTEM::THE-START SYSTEM::INSTREAM-LINE
+++         SYSTEM::S-DATA-SIZE FPE::REG-LOOKUP)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
+++         SYSTEM::MATCH-BEGINNING SYSTEM::MATCH-END)) 
++\ No newline at end of file
++--- gcl-2.6.12.orig/o/fasdump.c
+++++ gcl-2.6.12/o/fasdump.c
++@@ -598,7 +598,7 @@ DEFUN_NEW("OPEN-FASD",object,fSopen_fasd
++       if(tabl==Cnil) tabl=funcall_cfun(Lmake_hash_table,2,sKtest,sLeq);
++       else
++      check_type(tabl,t_hashtable);}
++-   check_type(str,t_stream);
+++   massert(str==stream);
++    result=alloc_simple_vector(sizeof(struct fasd)/sizeof(int),aet_object);
++    array_allocself(result,1,Cnil);
++    {struct fasd *fd= (struct fasd *)result->v.v_self;
++@@ -608,7 +608,7 @@ DEFUN_NEW("OPEN-FASD",object,fSopen_fasd
++     fd->eof=eof;
++     fd->index=small_fixnum(0);
++     fd->package=symbol_value(sLApackageA);
++-    fd->filepos = make_fixnum(file_position(stream));
+++    fd->filepos = make_fixnum(ftell(stream->sm.sm_fp));
++     
++     SETUP_FASD_IN(fd);
++     if (direction==sKoutput){
++@@ -649,13 +649,13 @@ DEFUN_NEW("CLOSE-FASD",object,fSclose_fa
++        {clrhash(fd->table);
++      SETUP_FASD_IN(fd);
++      PUT_OP(d_end_of_file);
++-     {int i = file_position(fd->stream);
+++     {int i = ftell(fd->stream->sm.sm_fp);
++       if(type_of(fd->filepos) == t_fixnum)
++-       { file_position_set(fd->stream,fix(fd->filepos) +2);
+++        { fseek(fd->stream->sm.sm_fp,fix(fd->filepos)+2,SEEK_SET);
++          /* record the length of array needed to read the indices */
++          PUT4(fix(fd->index));
++          /* move back to where we were */
++-         file_position_set(fd->stream,i);
+++         fseek(fd->stream->sm.sm_fp,i,SEEK_SET);
++        }}
++       
++       }
++--- gcl-2.6.12.orig/o/file.d
+++++ gcl-2.6.12/o/file.d
++@@ -167,7 +167,6 @@ BEGIN:
++      case smm_probe:
++              return(FALSE);
++ 
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -224,7 +223,6 @@ BEGIN:
++      case smm_probe:
++              return(FALSE);
++ 
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -272,7 +270,6 @@ BEGIN:
++      case smm_socket:
++          return (sLcharacter);
++          
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -440,7 +437,7 @@ open_stream(object fn,enum smmode smm, o
++   x->sm.sm_buffer = 0;
++   x->sm.sm_object0 = sLcharacter;
++   x->sm.sm_object1 = vs_head;
++-  x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++  x->sm.sm_int = 0;
++   x->sm.sm_flags=0;
++   vs_push(x);
++ 
++@@ -522,8 +519,6 @@ DEFUN_NEW("OPEN-STREAM-P",object,fLopen_
++ void
++ close_stream(object strm)  {
++ 
++-  object x;
++-
++   if (FFN(fLopen_stream_p)(strm)==Cnil)
++     return;
++ 
++@@ -569,24 +564,15 @@ close_stream(object strm)  {
++     strm->sm.sm_fd = -1;
++     break;
++ 
++-  case smm_file_synonym:
++   case smm_synonym:
++-    strm = symbol_value(strm->sm.sm_object0);
++-    if (type_of(strm) != t_stream)
++-      TYPE_ERROR(strm,sLstream);
++-    close_stream(strm);
++     break;
++ 
++   case smm_broadcast:
++   case smm_concatenated:
++-    for (x = strm->sm.sm_object0; !endp(x); x = x->c.c_cdr)
++-      close_stream(x->c.c_car);
++     break;
++ 
++   case smm_two_way:
++   case smm_echo:
++-    close_stream(STREAM_INPUT_STREAM(strm));
++-    close_stream(STREAM_OUTPUT_STREAM(strm));
++     break;
++ 
++   case smm_string_input:
++@@ -616,7 +602,6 @@ DEFUN_NEW("INTERACTIVE-STREAM-P",object,
++       return Ct;
++     return Cnil;
++     break;
++-  case smm_file_synonym:
++   case smm_synonym:
++     strm = symbol_value(strm->sm.sm_object0);
++     if (type_of(strm) != t_stream)
++@@ -656,7 +641,7 @@ object istrm, ostrm;
++      strm->sm.sm_buffer = 0;
++      STREAM_INPUT_STREAM(strm) = istrm;
++      STREAM_OUTPUT_STREAM(strm) = ostrm;
++-     strm->sm.sm_int0 = strm->sm.sm_int1 = 0;
+++     strm->sm.sm_int = 0;
++      strm->sm.sm_flags=0;
++      return(strm);
++ }
++@@ -672,24 +657,30 @@ object istrm, ostrm;
++      return(strm);
++ }
++ 
++-object
++-make_string_input_stream(strng, istart, iend)
++-object strng;
++-int istart, iend;
++-{
++-     object strm;
+++DEFUN_NEW("MAKE-STRING-INPUT-STREAM-INT",object,fSmake_string_input_stream_int,SI,3,3,NONE,OO,II,OO,OO,
+++       (object strng,fixnum istart,fixnum iend),"") {
+++
+++  object strm;
+++
+++  strm = alloc_object(t_stream);
+++  strm->sm.sm_mode = (short)smm_string_input;
+++  strm->sm.sm_fp = NULL;
+++  strm->sm.sm_buffer = 0;
+++  STRING_STREAM_STRING(strm) = strng;
+++  strm->sm.sm_object1 = OBJNULL;
+++  STRING_INPUT_STREAM_NEXT(strm)= istart;
+++  STRING_INPUT_STREAM_END(strm)= iend;
+++  strm->sm.sm_flags=0;
+++
+++  RETURN1(strm);
++ 
++-     strm = alloc_object(t_stream);
++-     strm->sm.sm_mode = (short)smm_string_input;
++-     strm->sm.sm_fp = NULL;
++-     strm->sm.sm_buffer = 0;
++-     STRING_STREAM_STRING(strm) = strng;
++-     strm->sm.sm_object1 = OBJNULL;
++-     STRING_INPUT_STREAM_NEXT(strm)= istart;
++-     STRING_INPUT_STREAM_END(strm)= iend;
++-     strm->sm.sm_flags=0;
++-     return(strm);
++ }
+++#ifdef STATIC_FUNCTION_POINTERS
+++object
+++fSmake_string_input_stream_int(object x,fixnum y,fixnum z) {
+++  return FFN(fSmake_string_input_stream_int)(x,y,z);
+++}
+++#endif
++ 
++ DEFUN_NEW("STRING-INPUT-STREAM-P",object,fSstring_input_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++   return type_of(x)==t_stream && x->sm.sm_mode == (short)smm_string_input ? Ct : Cnil;
++@@ -722,7 +713,7 @@ int line_length;
++      strm->sm.sm_buffer = 0;
++      STRING_STREAM_STRING(strm) = strng;
++      strm->sm.sm_object1 = OBJNULL;
++-     strm->sm.sm_int0 = STREAM_FILE_COLUMN(strm) = 0;
+++     strm->sm.sm_int = 0;
++      strm->sm.sm_flags=0;
++      vs_reset;
++      return(strm);
++@@ -777,7 +768,6 @@ BEGIN:
++              /* strm->sm.sm_int0++; */
++              return(c==EOF ? c : (c&0377));
++ 
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -880,7 +870,6 @@ BEGIN:
++              /* --strm->sm.sm_int0; */  /* use ftell now for position */
++              break;
++ 
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -982,7 +971,6 @@ BEGIN:
++ 
++              break;
++ 
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1093,7 +1081,6 @@ BEGIN:
++ #endif
++                closed_stream(strm);
++              break;
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1182,7 +1169,6 @@ BEGIN:
++      case smm_probe:
++              return(FALSE);
++ 
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              check_stream(strm);
++@@ -1308,7 +1294,6 @@ BEGIN:
++ #endif
++              return TRUE;
++ 
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1345,136 +1330,6 @@ BEGIN:
++ }
++ 
++ int
++-file_position(strm)
++-object strm;
++-{
++-BEGIN:
++-     switch (strm->sm.sm_mode) {
++-     case smm_input:
++-     case smm_output:
++-     case smm_io:
++-             /*  return(strm->sm.sm_int0);  */
++-             if (strm->sm.sm_fp == NULL)
++-                     closed_stream(strm);
++-             return(ftell(strm->sm.sm_fp));
++-     case smm_socket:
++-        return -1;
++-       
++-
++-     case smm_string_output:
++-             return(STRING_STREAM_STRING(strm)->st.st_fillp);
++-
++-     case smm_file_synonym:
++-     case smm_synonym:
++-             strm = symbol_value(strm->sm.sm_object0);
++-             if (type_of(strm) != t_stream)
++-                     FEwrong_type_argument(sLstream, strm);
++-             goto BEGIN;
++-
++-     case smm_probe:
++-     case smm_broadcast:
++-     case smm_concatenated:
++-     case smm_two_way:
++-     case smm_echo:
++-     case smm_string_input:
++-             return(-1);
++-
++-     default:
++-             error("illegal stream mode");
++-             return(-1);
++-     }
++-}
++-
++-int
++-file_position_set(strm, disp)
++-object strm;
++-int disp;
++-{
++-BEGIN:
++-     switch (strm->sm.sm_mode) {
++-     case smm_socket:
++-       return -1;
++-     case smm_input:
++-     case smm_output:
++-     case smm_io:
++-
++-             if (fseek(strm->sm.sm_fp, disp, 0) < 0)
++-                     return(-1);
++-             /* strm->sm.sm_int0 = disp; */
++-             return(0);
++-
++-     case smm_string_output:
++-             if (disp < STRING_STREAM_STRING(strm)->st.st_fillp) {
++-                     STRING_STREAM_STRING(strm)->st.st_fillp = disp;
++-                     /* strm->sm.sm_int0 = disp; */
++-             } else {
++-                     disp -= STRING_STREAM_STRING(strm)->st.st_fillp;
++-                     while (disp-- > 0)
++-                             writec_stream(' ', strm);
++-             }
++-             return(0);
++-
++-     case smm_file_synonym:
++-     case smm_synonym:
++-             strm = symbol_value(strm->sm.sm_object0);
++-             if (type_of(strm) != t_stream)
++-                     FEwrong_type_argument(sLstream, strm);
++-             goto BEGIN;
++-
++-     case smm_probe:
++-     case smm_broadcast:
++-     case smm_concatenated:
++-     case smm_two_way:
++-     case smm_echo:
++-     case smm_string_input:
++-             return(-1);
++-
++-     default:
++-             error("illegal stream mode");
++-             return(-1);
++-     }
++-}
++-
++-static int
++-file_length(strm)
++-object strm;
++-{
++-BEGIN:
++-     switch (strm->sm.sm_mode) {
++-     case smm_input:
++-     case smm_output:
++-     case smm_io:
++-
++-             if (strm->sm.sm_fp == NULL)
++-                     closed_stream(strm);
++-             return(file_len(strm->sm.sm_fp));
++-             
++-
++-       
++-     case smm_file_synonym:
++-     case smm_synonym:
++-             strm = symbol_value(strm->sm.sm_object0);
++-             if (type_of(strm) != t_stream)
++-                     FEwrong_type_argument(sLstream, strm);
++-             goto BEGIN;
++-
++-     case smm_socket:
++-     case smm_probe:
++-     case smm_broadcast:
++-     case smm_concatenated:
++-     case smm_two_way:
++-     case smm_echo:
++-     case smm_string_input:
++-     case smm_string_output:
++-             return(-1);
++-
++-     default:
++-             error("illegal stream mode");
++-             return(-1);
++-     }
++-}
++-
++-int
++ file_column(object strm) {
++      int i;
++      object x;
++@@ -1491,7 +1346,6 @@ BEGIN:
++      case smm_two_way:
++            strm=STREAM_OUTPUT_STREAM(strm);
++            goto BEGIN;
++-     case smm_file_synonym:
++      case smm_synonym:
++              strm = symbol_value(strm->sm.sm_object0);
++              if (type_of(strm) != t_stream)
++@@ -1558,22 +1412,6 @@ load(const char *s) {
++ 
++ \f
++ 
++-static int
++-file_synonym_stream_p(object x) {
++-  switch(x->sm.sm_mode) {
++-  case smm_input:
++-  case smm_output:
++-  case smm_io:
++-  case smm_probe:
++-  case smm_file_synonym:
++-    return 1;
++-  case smm_synonym:
++-    return file_synonym_stream_p(x->sm.sm_object0->s.s_dbind);
++-  default:
++-    return 0;
++-  }
++-}
++-
++ LFD(Lmake_synonym_stream)()
++ {
++      object x;
++@@ -1581,12 +1419,12 @@ LFD(Lmake_synonym_stream)()
++      check_arg(1);
++      check_type_sym(&vs_base[0]);
++      x = alloc_object(t_stream);
++-     x->sm.sm_mode = file_synonym_stream_p(vs_base[0]) ? (short)smm_file_synonym : (short)smm_synonym;
+++     x->sm.sm_mode = (short)smm_synonym;
++      x->sm.sm_fp = NULL;
++      x->sm.sm_buffer = 0;
++      x->sm.sm_object0 = vs_base[0];
++      x->sm.sm_object1 = OBJNULL;
++-     x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++     x->sm.sm_int = 0;
++      x->sm.sm_flags=0;
++      vs_base[0] = x;
++ }
++@@ -1610,7 +1448,7 @@ LFD(Lmake_broadcast_stream)()
++      x->sm.sm_buffer = 0;
++      x->sm.sm_object0 = vs_base[0];
++      x->sm.sm_object1 = OBJNULL;
++-     x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++     x->sm.sm_int = 0;
++      x->sm.sm_flags=0;
++      vs_base[0] = x;
++ }
++@@ -1634,7 +1472,7 @@ LFD(Lmake_concatenated_stream)()
++      x->sm.sm_buffer = 0;
++      x->sm.sm_object0 = vs_base[0];
++      x->sm.sm_object1 = OBJNULL;
++-     x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++     x->sm.sm_int = 0;
++      x->sm.sm_flags=0;
++      vs_base[0] = x;
++ }
++@@ -1667,32 +1505,6 @@ LFD(Lmake_echo_stream)()
++      vs_popp;
++ }
++ 
++-@(static defun make_string_input_stream (strng &o istart iend)
++-     int s, e;
++-@
++-     check_type_string(&strng);
++-     if (istart == Cnil)
++-             s = 0;
++-     else if (type_of(istart) != t_fixnum)
++-             goto E;
++-     else
++-             s = fix(istart);
++-     if (iend == Cnil)
++-             e = strng->st.st_fillp;
++-     else if (type_of(iend) != t_fixnum)
++-             goto E;
++-     else
++-             e = fix(iend);
++-     if (s < 0 || e > strng->st.st_fillp || s > e)
++-             goto E;
++-     @(return `make_string_input_stream(strng, s, e)`)
++-
++-E:
++-     FEerror("~S and ~S are illegal as :START and :END~%\
++-for the string ~S.",
++-             3, istart, iend, strng);
++-@)
++-
++ @(static defun make_string_output_stream (&k element_type)
++ @
++         element_type=Cnil;/*FIXME*/
++@@ -1724,12 +1536,29 @@ LFD(siLoutput_stream_string)()
++      vs_base[0] = vs_base[0]->sm.sm_object0;
++ }
++ 
+++object
+++file_stream(object x) {
+++  if (type_of(x)==t_stream)
+++    switch(x->sm.sm_mode) {
+++    case smm_input:
+++    case smm_output:
+++    case smm_io:
+++    case smm_probe:
+++      return x;
+++    case smm_synonym:
+++      return file_stream(x->sm.sm_object0->s.s_dbind);
+++    default:
+++      break;
+++  }
+++  return Cnil;
+++}
+++
++ DEFUN_NEW("FILE-STREAM-P",object,fSfile_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++-  RETURN1(type_of(x)==t_stream && file_synonym_stream_p(x) ? Ct : Cnil);
+++  RETURN1(file_stream(x)!=Cnil ? Ct : Cnil);
++ }
++ 
++ DEFUN_NEW("SYNONYM-STREAM-P",object,fSsynonym_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++-  RETURN1(type_of(x)==t_stream && (x->sm.sm_mode==smm_file_synonym || x->sm.sm_mode==smm_synonym) ? Ct : Cnil);
+++  RETURN1(type_of(x)==t_stream && x->sm.sm_mode==smm_synonym ? Ct : Cnil);
++ }
++ 
++ DEFUN_NEW("TERMINAL-INPUT-STREAM-P",object,fSterminal_input_stream_p,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++@@ -1802,43 +1631,6 @@ LFD(Lstream_element_type)()
++ @)
++ 
++ 
++-@(defun file_position (file_stream &o position)
++-     int i=0;
++-@
++-     check_type_stream(&file_stream);
++-     if (position == Cnil) {
++-             i = file_position(file_stream);
++-             if (i < 0)
++-                     @(return Cnil)
++-             @(return `make_fixnum(i)`)
++-     } else {
++-             if (position == sKstart)
++-                     i = 0;
++-             else if (position == sKend)
++-                     i = file_length(file_stream);
++-             else if (type_of(position) != t_fixnum ||
++-                 (i = fix((position))) < 0)
++-                     FEerror("~S is an illegal file position~%\
++-for the file-stream ~S.",
++-                             2, position, file_stream);
++-             if (file_position_set(file_stream, i) < 0)
++-                     @(return Cnil)
++-             @(return Ct)
++-     }       
++-@)
++-
++-LFD(Lfile_length)()
++-{
++-     int i;
++-
++-     check_arg(1);
++-     check_type_stream(&vs_base[0]);
++-     i = file_length(vs_base[0]);
++-     if (i < 0)
++-             vs_base[0] = Cnil;
++-     else
++-             vs_base[0] = make_fixnum(i);
++-}
++ 
++ object sLAload_pathnameA;
++ DEFVAR("*COLLECT-BINARY-MODULES*",sSAcollect_binary_modulesA,SI,sLnil,"");
++@@ -1911,17 +1703,6 @@ DEFUN_NEW("LOAD-FASL",object,fSload_fasl
++ 
++ }
++ 
++-static void
++-FFN(siLget_string_input_stream_index)()
++-{
++-     check_arg(1);
++-     check_type_stream(&vs_base[0]);
++-     if ((enum smmode)vs_base[0]->sm.sm_mode != smm_string_input)
++-             FEerror("~S is not a string-input stream.", 1, vs_base[0]);
++-     vs_base[0] = make_fixnum(STRING_INPUT_STREAM_NEXT(vs_base[0]));
++-}
++-
++-
++ LFD(siLmake_string_output_stream_from_string)()
++ {
++      object strng, strm;
++@@ -2042,7 +1823,6 @@ int out;
++  if (type_of(strm) != t_stream)
++    FEwrong_type_argument(sLstream, strm);
++  switch (strm->sm.sm_mode){
++- case smm_file_synonym:
++  case smm_synonym:
++   strm = symbol_value(strm->sm.sm_object0);
++   if (type_of(strm) != t_stream)
++@@ -2203,7 +1983,7 @@ object async;
++   x->sm.sm_buffer = 0;
++   x->sm.sm_object0 = list(3,server,host,port);
++   x->sm.sm_object1 = 0;
++-  x->sm.sm_int0 = x->sm.sm_int1 = 0;
+++  x->sm.sm_int = 0;
++   x->sm.sm_flags=0;
++   SOCKET_STREAM_FD(x)= fd;
++   SET_STREAM_FLAG(x,mode,1);
++@@ -2466,8 +2246,7 @@ gcl_init_file(void)
++ #ifdef UNIX
++      = make_simple_string("stdin");
++ #endif
++-     standard_input->sm.sm_int0 = 0; /* unused */
++-     standard_input->sm.sm_int1 = 0; /* unused */
+++     standard_input->sm.sm_int = 0; /* unused */
++      standard_input->sm.sm_flags=0;
++ 
++      standard_output = alloc_object(t_stream);
++@@ -2479,8 +2258,7 @@ gcl_init_file(void)
++ #ifdef UNIX
++      = make_simple_string("stdout");
++ #endif
++-     standard_output->sm.sm_int0 = 0; /* unused */
++-     STREAM_FILE_COLUMN(standard_output) = 0;
+++     standard_output->sm.sm_int = 0; /* unused */
++      standard_output->sm.sm_flags=0;
++ 
++      terminal_io = standard
++@@ -2488,12 +2266,12 @@ gcl_init_file(void)
++      enter_mark_origin(&terminal_io);
++ 
++      x = alloc_object(t_stream);
++-     x->sm.sm_mode = (short)smm_file_synonym;
+++     x->sm.sm_mode = (short)smm_synonym;
++      x->sm.sm_fp = NULL;
++      x->sm.sm_buffer = 0;
++      x->sm.sm_object0 = sLAterminal_ioA;
++      x->sm.sm_object1 = OBJNULL;
++-     x->sm.sm_int0 = x->sm.sm_int1 = 0; /* unused */
+++     x->sm.sm_int = 0; /* unused */
++      x->sm.sm_flags=0;
++      standard_io = x;
++      enter_mark_origin(&standard_io);        
++@@ -2561,8 +2339,6 @@ gcl_init_file_function()
++                    Lmake_concatenated_stream);
++      make_function("MAKE-TWO-WAY-STREAM", Lmake_two_way_stream);
++      make_function("MAKE-ECHO-STREAM", Lmake_echo_stream);
++-     make_function("MAKE-STRING-INPUT-STREAM",
++-                   Lmake_string_input_stream);
++      make_function("MAKE-STRING-OUTPUT-STREAM",
++                    Lmake_string_output_stream);
++      make_function("GET-OUTPUT-STREAM-STRING",
++@@ -2581,11 +2357,6 @@ gcl_init_file_function()
++      make_function("STREAM-ELEMENT-TYPE", Lstream_element_type);
++      make_function("CLOSE", Lclose);
++ 
++-     make_function("FILE-POSITION", Lfile_position);
++-     make_function("FILE-LENGTH", Lfile_length);
++-
++-     make_si_function("GET-STRING-INPUT-STREAM-INDEX",
++-                      siLget_string_input_stream_index);
++      make_si_function("MAKE-STRING-OUTPUT-STREAM-FROM-STRING",
++                       siLmake_string_output_stream_from_string);
++      make_si_function("COPY-STREAM", siLcopy_stream);
++--- gcl-2.6.12.orig/o/gbc.c
+++++ gcl-2.6.12/o/gbc.c
++@@ -627,7 +627,6 @@ mark_object1(object x) {
++       }
++       break;
++ 
++-    case smm_file_synonym:
++     case smm_synonym:
++       mark_object(x->sm.sm_object0);
++       break;
++--- gcl-2.6.12.orig/o/pathname.d
+++++ gcl-2.6.12/o/pathname.d
++@@ -83,6 +83,11 @@ DEFUN_NEW("C-STREAM-OBJECT1",object,fSc_
++   RETURN1(x->sm.sm_object1);
++ }
++ 
+++DEFUN_NEW("C-SET-STREAM-OBJECT0",object,fSc_set_stream_object0,SI,2,2,NONE,OO,OO,OO,OO,(object x,object y),"") {
+++  x->sm.sm_object0=y;
+++  RETURN1(x);
+++}
+++
++ DEFUN_NEW("C-SET-STREAM-OBJECT1",object,fSc_set_stream_object1,SI,2,2,NONE,OO,OO,OO,OO,(object x,object y),"") {
++   x->sm.sm_object1=y;
++   RETURN1(x);
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -1260,7 +1260,6 @@ int level;
++                      write_ch('>');
++                      break;
++ 
++-             case smm_file_synonym:
++              case smm_synonym:
++                      write_str("#<synonym stream to ");
++                      write_object(x->sm.sm_object0, level);
++--- gcl-2.6.12.orig/o/read.d
+++++ gcl-2.6.12/o/read.d
++@@ -2204,7 +2204,7 @@ object x;
++      object in;
++      vs_mark;
++ 
++-     in = make_string_input_stream(x, 0, x->st.st_fillp);
+++     in = fSmake_string_input_stream_int(x, 0, x->st.st_fillp);
++      vs_push(in);
++      preserving_whitespace_flag = FALSE;
++      detect_eos_flag = FALSE;
++--- gcl-2.6.12.orig/o/run_process.c
+++++ gcl-2.6.12/o/run_process.c
++@@ -434,7 +434,7 @@ enum smmode smm;
++ 
++      stream->sm.sm_object0 = sLcharacter;
++      stream->sm.sm_object1 = host_l;
++-     stream->sm.sm_int0 = stream->sm.sm_int1 = 0;
+++     stream->sm.sm_int = 0;
++      stream->sm.sm_flags=0;
++      vs_push(stream);
++      setup_stream_buffer(stream);
++@@ -503,8 +503,7 @@ make_socket_pair()
++   stream_in->sm.sm_mode = smm_input;
++   stream_in->sm.sm_fp = fp1;
++   stream_in->sm.sm_buffer = 0;
++-  stream_in->sm.sm_int0 = sockets_in[1];
++-  stream_in->sm.sm_int1 = 0;
+++  stream_in->sm.sm_int = sockets_in[1];
++   stream_in->sm.sm_object0=stream_in->sm.sm_object1=OBJNULL;
++   stream_in->sm.sm_flags = 0;
++   stream_out = (object) alloc_object(t_stream);
++@@ -513,8 +512,7 @@ make_socket_pair()
++   stream_out->sm.sm_buffer = 0;
++   setup_stream_buffer(stream_in);
++   setup_stream_buffer(stream_out);
++-  stream_out->sm.sm_int0 = sockets_out[1];
++-  stream_out->sm.sm_int1 = 0;
+++  stream_out->sm.sm_int = sockets_out[1];
++   stream_out->sm.sm_flags = 0;
++   stream_out->sm.sm_object0=stream_out->sm.sm_object1=OBJNULL;
++   stream = make_two_way_stream(stream_in, stream_out);
++@@ -538,8 +536,8 @@ char **argv;
++   int fdout;
++   if (istream->sm.sm_fp == NULL || ostream->sm.sm_fp == NULL)
++     FEerror("Cannot spawn process with given stream", 0);
++-  fdin = istream->sm.sm_int0;
++-  fdout = ostream->sm.sm_int0;
+++  fdin = istream->sm.sm_int;
+++  fdout = ostream->sm.sm_int;
++   if (pfork() == 0)
++     { /* the child --- replace standard in and out with descriptors given */
++       close(0);
++--- gcl-2.6.12.orig/o/sockets.c
+++++ gcl-2.6.12/o/sockets.c
++@@ -518,16 +518,6 @@ DEFUN_NEW("SET-SIGIO-FOR-FD",object,fSse
++ 
++ }
++      
++-DEFUN_NEW("RESET-STRING-INPUT-STREAM",object,fSreset_string_input_stream,SI,4,4,NONE,OO,OI,IO,OO,(object strm,object string,fixnum start,fixnum end),
++-      "Reuse a string output STREAM by setting its output to STRING \
++-and positioning the ouput/input to start at START and end at END")
++-
++-{ strm->sm.sm_object0 = string;
++-  strm->sm.sm_int0 = start;
++-  strm->sm.sm_int1 = end;
++-  return strm;
++-}
++-
++ DEFUN_NEW("CHECK-STATE-INPUT",object,fScheck_state_input,SI,2,2,NONE,OO,IO,OO,OO,(object osfd,fixnum timeout),
++       "") 
++ {
++--- gcl-2.6.12.orig/o/string.d
+++++ gcl-2.6.12/o/string.d
++@@ -564,28 +564,33 @@ LFD(Lnstring_capitalize)() { casefun = c
++      @(return `coerce_to_string(x)`)
++ @)
++ 
++-static void
++-FFN(siLstring_concatenate)()
++-{
++-     int narg, i, l, m;
++-     object *v;
+++DEFUN_NEW("STRING-CONCATENATE",object,fLstring_concatenate,SI,0,63,NONE,OO,OO,OO,OO,(object first,...),"") {
+++
+++  fixnum i,l,m,narg=VFUN_NARGS;
+++  object x;
+++  va_list ap;
+++
+++  va_start(ap,first);
+++  vs_base=vs_top;
+++  for (l=i=0;i<narg;i++) {
+++    vs_push(coerce_to_string(i ? va_arg(ap,object) : first));
+++    l += vs_head->st.st_fillp;
+++  }
+++  va_end(ap);
+++
+++  {
+++    object *p;
+++    BEGIN_NO_INTERRUPT;
+++    x=alloc_simple_string(l);
+++    (x)->st.st_self = alloc_relblock(l);
+++    for (l=0,p=vs_base;p<vs_top && (m=(*p)->st.st_fillp)>=0;p++,l+=m)
+++      memcpy(x->st.st_self+l,(*p)->st.st_self,m);
+++    END_NO_INTERRUPT;
+++
+++  }
+++
+++  RETURN1(x);
++ 
++-     narg = vs_top - vs_base;
++-     for (i = 0, l = 0;  i < narg;  i++) {
++-             vs_base[i] = coerce_to_string(vs_base[i]);
++-             l += vs_base[i]->st.st_fillp;
++-     }
++-     v = vs_top;
++-     {BEGIN_NO_INTERRUPT;    
++-     vs_push(alloc_simple_string(l));
++-     (*v)->st.st_self = alloc_relblock(l);
++-     for (i = 0, l = 0;  i < narg;  i++)
++-             for (m = 0;  m < vs_base[i]->st.st_fillp;  m++)
++-                     (*v)->st.st_self[l++]
++-                     = vs_base[i]->st.st_self[m];
++-     vs_base[0] = *v;
++-     vs_top = vs_base + 1;
++-     END_NO_INTERRUPT;}      
++ }
++ 
++ void
++@@ -628,6 +633,4 @@ gcl_init_string_function()
++      make_function("NSTRING-CAPITALIZE", Lnstring_capitalize);
++      make_function("STRING", Lstring);
++ 
++-     make_si_function("STRING-CONCATENATE",
++-                      siLstring_concatenate);
++ }
++--- gcl-2.6.12.orig/o/unixfsys.c
+++++ gcl-2.6.12/o/unixfsys.c
++@@ -55,7 +55,7 @@ get_string(object x) {
++     case smm_probe:
++     case smm_io:
++       return get_string(x->sm.sm_object1);
++-    case smm_file_synonym:
+++    case smm_synonym:
++       return get_string(x->sm.sm_object0->s.s_dbind);
++     }
++   }
++@@ -169,24 +169,6 @@ DEF_ORDINARY("DIRECTORY",sKdirectory,KEY
++ DEF_ORDINARY("LINK",sKlink,KEYWORD,"");
++ DEF_ORDINARY("FILE",sKfile,KEYWORD,"");
++ 
++-object
++-file_stream(object x) {
++-  if (type_of(x)==t_stream)
++-    switch(x->sm.sm_mode) {
++-    case smm_input:
++-    case smm_output:
++-    case smm_io:
++-    case smm_probe:
++-      return x;
++-    case smm_synonym:
++-      return file_stream(x->sm.sm_object0->s.s_dbind);
++-    default:
++-      break;
++-  }
++-  return Cnil;
++-}
++-
++-
++ DEFUNM_NEW("STAT",object,fSstat,SI,1,1,NONE,OO,OO,OO,OO,(object x),"") {
++ 
++   struct stat ss;
++--- gcl-2.6.12.orig/pcl/sys-proclaim.lisp
+++++ gcl-2.6.12/pcl/sys-proclaim.lisp
++@@ -2,29 +2,19 @@
++ (COMMON-LISP::IN-PACKAGE "PCL") 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FUNCTION)
++-         PCL::CACHE-LIMIT-FN PCL::FAST-METHOD-CALL-FUNCTION
++-         PCL::METHOD-CALL-FUNCTION)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM COMMON-LISP::T)
+++             COMMON-LISP::T)
+++         PCL::%CCLOSURE-ENV-NTHCDR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
++-         PCL::DISPATCH-DFUN-INFO PCL::DEFAULT-METHOD-ONLY-DFUN-INFO
++-         PCL::MAKE-CACHE PCL::BOOTSTRAP-BUILT-IN-CLASSES
++-         PCL::RENEW-SYS-FILES PCL::SHOW-EMF-CALL-TRACE PCL::MAKE-CPD
++-         PCL::BOOTSTRAP-META-BRAID PCL::CACHES-TO-ALLOCATE
++-         PCL::LIST-ALL-DFUNS PCL::INITIAL-DISPATCH-DFUN-INFO
++-         PCL::INITIAL-DFUN-INFO PCL::%%ALLOCATE-INSTANCE--CLASS
++-         PCL::MAKE-ARG-INFO PCL::ALLOCATE-FUNCALLABLE-INSTANCE-2
++-         PCL::SHOW-FREE-CACHE-VECTORS PCL::UPDATE-DISPATCH-DFUNS
++-         PCL::GET-EFFECTIVE-METHOD-GENSYM PCL::IN-THE-COMPILER-P
++-         PCL::SHOW-DFUN-CONSTRUCTORS PCL::NO-METHODS-DFUN-INFO
++-         PCL::INITIALIZE-CHECKING-OR-CACHING-FUNCTION-LIST
++-         PCL::ALLOCATE-FUNCALLABLE-INSTANCE-1
++-         PCL::STRUCTURE-FUNCTIONS-EXIST-P)) 
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::FIXNUM)
+++         PCL::GET-WRAPPER-CACHE-NUMBER)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) PCL::FIELD-TYPE)
++-         PCL::CACHE-FIELD)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             PCL::NON-NEGATIVE-FIXNUM)
+++         PCL::CACHE-NLINES PCL::CACHE-MASK PCL::CACHE-SIZE
+++         PCL::CACHE-MAX-LOCATION)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++@@ -32,296 +22,344 @@
++          PCL::CACHE-VECTOR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::INTEGER 1 256))
++-         PCL::CACHE-LINE-SIZE)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::ACCESSOR-VALUES-INTERNAL
+++         PCL::MAKE-OPTIMIZED-STD-READER-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
+++         PCL::MAKE-FINAL-N-N-ACCESSOR-DFUN
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
+++         PCL::CHECK-METHOD-ARG-INFO
+++         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
+++         PCL::GET-OPTIMIZED-STD-ACCESSOR-METHOD-FUNCTION
+++         PCL::GET-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
+++         PCL::MAKE-OPTIMIZED-STD-BOUNDP-METHOD-FUNCTION
+++         PCL::OPTIMIZE-SLOT-VALUE-BY-CLASS-P
+++         ITERATE::WALK-GATHERING-BODY
+++         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER
+++         PCL::|(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
+++         PCL::SLOT-BOUNDP-USING-CLASS-DFUN WALKER::WALK-FORM-INTERNAL
+++         PCL::LOAD-LONG-DEFCOMBIN PCL::MAKE-FINAL-CACHING-DFUN
+++         PCL::EMIT-READER/WRITER
+++         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER-FUNCTION
+++         PCL::SLOT-VALUE-USING-CLASS-DFUN PCL::CACHING-MISS
+++         PCL::|(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
+++         PCL::EMIT-READER/WRITER-FUNCTION PCL::ACCESSOR-VALUES1
+++         PCL::GENERATING-LISP PCL::GET-CLASS-SLOT-VALUE-1
+++         PCL::MAKE-FINAL-CONSTANT-VALUE-DFUN PCL::CACHE-MISS-VALUES
+++         WALKER::WALK-LET-IF
+++         PCL::|(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
+++         PCL::|(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
+++         PCL::CHECKING-MISS ITERATE::EXPAND-INTO-LET
+++         PCL::MAKE-OPTIMIZED-STD-WRITER-METHOD-FUNCTION
+++         PCL::CONSTANT-VALUE-MISS ITERATE::RENAME-VARIABLES
+++         PCL::|(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
+++         PCL::SET-SLOT-VALUE
+++         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
+++         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
+++         PCL::|(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
+++         PCL::CONVERT-METHODS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::INTEGER 1 255))
++-         PCL::CACHE-NKEYS)) 
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::|(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
+++         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
+++         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
+++         PCL::|(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
+++         PCL::MAKE-TWO-CLASS-ACCESSOR-DFUN
+++         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
+++         PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::ADD-METHOD-DECLARATIONS
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
+++         PCL::WALK-METHOD-LAMBDA
+++         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO-INTERNAL
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::GET-ACCESSOR-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
+++         PCL::MAKE-ONE-CLASS-ACCESSOR-DFUN
+++         PCL::|(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
+++         PCL::GENERATE-DISCRIMINATION-NET
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
+++         PCL::LOAD-SHORT-DEFCOMBIN
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::REAL-MAKE-METHOD-LAMBDA PCL::SET-CLASS-SLOT-VALUE-1
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITION
+++         PCL::MAKE-FINAL-ONE-INDEX-ACCESSOR-DFUN
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
+++         PCL::ACCESSOR-MISS PCL::|(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
+++         PCL::ACCESSOR-VALUES
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (T T))|
+++         PCL::|(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
+++         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION
+++         PCL::INITIALIZE-INSTANCE-SIMPLE-FUNCTION
+++         PCL::MAKE-FINAL-CHECKING-DFUN
+++         PCL::MAKE-SHARED-INITIALIZE-FORM-LIST
+++         PCL::|(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
+++         PCL::EMIT-CHECKING-OR-CACHING
+++         PCL::|(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
+++         PCL::|(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
+++         PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN
+++         PCL::GET-ACCESSOR-FROM-SVUC-METHOD-FUNCTION
+++         PCL::|(FAST-METHOD NO-APPLICABLE-METHOD (T))|
+++         PCL::ORDER-SPECIALIZERS
+++         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         PCL::MAKE-N-N-ACCESSOR-DFUN
+++         PCL::GET-SIMPLE-INITIALIZATION-FUNCTION
+++         PCL::MAKE-FINAL-ACCESSOR-DFUN
+++         PCL::GET-EFFECTIVE-METHOD-FUNCTION PCL::MAKE-ACCESSOR-TABLE
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION PCL::MAKE-CHECKING-DFUN
+++         PCL::GET-COMPLEX-INITIALIZATION-FUNCTIONS
+++         PCL::MAKE-DEFAULT-INITARGS-FORM-LIST PCL::REAL-ADD-METHOD
+++         PCL::SLOT-VALUE-OR-DEFAULT PCL::LOAD-DEFGENERIC PCL::CPL-ERROR
+++         WALKER::NESTED-WALK-FORM PCL::TYPES-FROM-ARGUMENTS
+++         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::MAKE-LONG-METHOD-COMBINATION-FUNCTION
+++         PCL::GENERATE-DISCRIMINATION-NET-INTERNAL
+++         PCL::CACHE-MISS-VALUES-INTERNAL
+++         PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::DO-SHORT-METHOD-COMBINATION PCL::MEMF-CODE-CONVERTER)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         PCL::MAKE-ONE-INDEX-ACCESSOR-DFUN WALKER::WALK-DECLARATIONS
+++         PCL::GET-SECONDARY-DISPATCH-FUNCTION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::|(FAST-METHOD SLOT-MISSING (T T T T))|
+++         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|
+++         ITERATE::ITERATE-TRANSFORM-BODY)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         ITERATE::RENAME-LET-BINDINGS
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE1)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         PCL::REAL-MAKE-A-METHOD)) 
++ (COMMON-LISP::MAPC
++     (COMMON-LISP::LAMBDA (COMPILER::X)
++       (COMMON-LISP::SETF
++-          (COMMON-LISP::GET COMPILER::X 'SYSTEM::PROCLAIMED-CLOSURE)
+++          (COMMON-LISP::GET COMPILER::X 'COMPILER::PROCLAIMED-CLOSURE)
++           COMMON-LISP::T))
++     '(PCL::REDEFINE-FUNCTION PCL::DO-STANDARD-DEFSETF-1
++-         PCL::FDEFINE-CAREFULLY PCL::TRACE-METHOD-INTERNAL)) 
+++         PCL::TRACE-METHOD-INTERNAL PCL::FDEFINE-CAREFULLY)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
++-         PCL::SYMBOL-APPEND)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
+++         PCL::ANALYZE-LAMBDA-LIST PCL::GET-DISPATCH-FUNCTION
+++         PCL::PARSE-DEFMETHOD PCL::MAKE-DISPATCH-DFUN
+++         PCL::EMIT-IN-CHECKING-CACHE-P PCL::EMIT-ONE-INDEX-READERS
+++         PCL::METHOD-PROTOTYPE-FOR-GF PCL::EMIT-ONE-CLASS-READER
+++         PCL::GENERIC-FUNCTION-NAME-P PCL::DEFAULT-CODE-CONVERTER
+++         PCL::CLASS-EQ-TYPE PCL::CONVERT-TO-SYSTEM-TYPE
+++         PCL::COMPILE-IIS-FUNCTIONS PCL::EMIT-CONSTANT-VALUE
+++         PCL::GET-GENERIC-FUNCTION-INFO PCL::EARLY-METHOD-FUNCTION
+++         PCL::FIND-STRUCTURE-CLASS PCL::PCL-DESCRIBE
+++         PCL::NET-CODE-CONVERTER PCL::PARSE-METHOD-GROUP-SPECIFIER
+++         PCL::TYPE-FROM-SPECIALIZER PCL::EMIT-TWO-CLASS-WRITER
+++         PCL::COMPUTE-APPLICABLE-METHODS-EMF PCL::EMIT-ONE-CLASS-WRITER
+++         PCL::PROTOTYPES-FOR-MAKE-METHOD-LAMBDA
+++         PCL::SPECIALIZER-FROM-TYPE PCL::EARLY-COLLECT-INHERITANCE
+++         PCL::EMIT-TWO-CLASS-READER PCL::FIND-WRAPPER
+++         PCL::*NORMALIZE-TYPE PCL::EMIT-ONE-INDEX-WRITERS
+++         PCL::STRUCTURE-WRAPPER PCL::MAKE-FINAL-DISPATCH-DFUN)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
++-         PCL::FAST-METHOD-CALL-NEXT-METHOD-CALL
++-         PCL::GENERIC-CLOBBERS-FUNCTION PCL::STRUCTURE-SLOTD-TYPE
++-         WALKER::GET-WALKER-TEMPLATE PCL::COMPILE-LAMBDA-UNCOMPILED
++-         PCL::EXTRACT-LAMBDA-LIST PCL::DEFAULT-METHOD-ONLY-P
++-         PCL::DISPATCH-CACHE PCL::STRUCTURE-SLOTD-NAME
++-         PCL::FAST-METHOD-CALL-P PCL::SFUN-P
++-         PCL::FTYPE-DECLARATION-FROM-LAMBDA-LIST
++-         PCL::EARLY-CLASS-DEFINITION PCL::CONSTANT-SYMBOL-P
++-         PCL::ARG-INFO-LAMBDA-LIST WALKER::ENV-LEXICAL-VARIABLES
++-         PCL::INTERN-EQL-SPECIALIZER PCL::PARSE-SPECIALIZERS
++-         PCL::%STD-INSTANCE-WRAPPER PCL::UPDATE-ALL-C-A-M-GF-INFO
++-         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITIALIZE-FUNCTION
++-         PCL::STORE-FGEN PCL::COMPUTE-MCASE-PARAMETERS
++-         PCL::INTERNED-SYMBOL-P PCL::MAKE-CALL-METHODS
++-         PCL::USE-CACHING-DFUN-P PCL::LEGAL-CLASS-NAME-P
++-         WALKER::VARIABLE-GLOBALLY-SPECIAL-P PCL::FUNCTION-RETURNING-T
++-         PCL::METHOD-FUNCTION-METHOD PCL::GET-BUILT-IN-CLASS-SYMBOL
++-         PCL::DEFAULT-STRUCTURE-TYPE PCL::GF-DFUN-INFO PCL::CACHING-P
++-         PCL::FREE-CACHE-VECTOR PCL::ONE-CLASS-CACHE
++-         PCL::DEFAULT-TEST-CONVERTER PCL::UNDEFMETHOD-1
++-         PCL::MAKE-INITFUNCTION PCL::GET-CACHE-VECTOR
++-         PCL::CLASS-PRECEDENCE-DESCRIPTION-P PCL::GF-INFO-FAST-MF-P
++-         PCL::ECD-SOURCE PCL::INITIAL-P PCL::ARG-INFO-APPLYP
++-         PCL::ARG-INFO-KEYWORDS
++-         PCL::MAKE-DEFAULT-METHOD-GROUP-DESCRIPTION
++-         PCL::CACHING-DFUN-COST PCL::INITIAL-DISPATCH-P PCL::EVAL-FORM
++-         PCL::MAKE-CONSTANT-FUNCTION PCL::FUNCTION-RETURNING-NIL
++-         PCL::INITIALIZE-INFO-BOUND-SLOTS PCL::FGEN-GENSYMS
++-         PCL::EXPAND-SHORT-DEFCOMBIN WALKER::ENV-LOCK
++-         PCL::INITIALIZE-INFO-CACHED-CONSTANTS
++-         PCL::INITIALIZE-INFO-WRAPPER
++-         PCL::STRUCTURE-TYPE-INCLUDED-TYPE-NAME PCL::TWO-CLASS-INDEX
++-         PCL::ONE-INDEX-ACCESSOR-TYPE
++-         PCL::EARLY-COLLECT-DEFAULT-INITARGS WALKER::ENV-WALK-FORM
++-         PCL::STRUCTURE-TYPE-INTERNAL-SLOTDS PCL::MAKE-FUNCTION-INLINE
++-         PCL::FLUSH-CACHE-VECTOR-INTERNAL
++-         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-T-FUNCTION
++-         PCL::FGEN-GENERATOR PCL::CONSTANT-VALUE-P
++-         PCL::METHOD-FUNCTION-FROM-FAST-FUNCTION
++-         PCL::EARLY-CLASS-PRECEDENCE-LIST PCL::SLOT-BOUNDP-SYMBOL
++-         PCL::ARG-INFO-NUMBER-OPTIONAL
++-         PCL::GF-PRECOMPUTE-DFUN-AND-EMF-P PCL::GET-PV-CELL-FOR-CLASS
++-         PCL::CHECKING-FUNCTION PCL::USE-DEFAULT-METHOD-ONLY-DFUN-P
++-         PCL::INITIAL-DISPATCH-CACHE PCL::STRUCTURE-SVUC-METHOD
++-         PCL::NO-METHODS-CACHE PCL::GF-DFUN-CACHE PCL::%CCLOSURE-ENV
++-         PCL::CONSTANT-VALUE-CACHE PCL::BUILT-IN-WRAPPER-OF
++-         PCL::CLASS-HAS-A-FORWARD-REFERENCED-SUPERCLASS-P
++-         PCL::EARLY-COLLECT-CPL COMMON-LISP::CLASS-OF
++-         PCL::STRUCTURE-SLOTD-ACCESSOR-SYMBOL PCL::SYMBOL-PKG-NAME
++-         PCL::GDEFINITION
++-         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-NIL-FUNCTION
++-         PCL::ACCESSOR-DFUN-INFO-CACHE PCL::EXTRACT-SPECIALIZER-NAMES
++-         PCL::CHECK-WRAPPER-VALIDITY PCL::MAKE-INITIAL-DFUN
++-         PCL::WRAPPER-FIELD PCL::EARLY-SLOT-DEFINITION-LOCATION
++-         PCL::EARLY-GF-P PCL::GF-INFO-STATIC-C-A-M-EMF PCL::LOOKUP-FGEN
++-         PCL::MAKE-PV-TYPE-DECLARATION
++-         PCL::INFORM-TYPE-SYSTEM-ABOUT-STD-CLASS
++-         PCL::EARLY-METHOD-CLASS
++-         PCL::DEFAULT-SECONDARY-DISPATCH-FUNCTION
++-         WALKER::ENV-DECLARATIONS PCL::ALLOCATE-CACHE-VECTOR
++-         PCL::FUNCTION-PRETTY-ARGLIST
++-         PCL::EARLY-CLASS-DIRECT-SUBCLASSES
++-         PCL::COMPUTE-APPLICABLE-METHODS-EMF-STD-P
++-         PCL::MAKE-CLASS-EQ-PREDICATE PCL::ECD-OTHER-INITARGS
++-         PCL::GBOUNDP PCL::METHOD-FUNCTION-PV-TABLE
++-         WALKER::GET-IMPLEMENTATION-DEPENDENT-WALKER-TEMPLATE
++-         PCL::MAKE-INSTANCE-FUNCTION-SYMBOL
++-         PCL::MAKE-OPTIMIZED-STRUCTURE-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::FIND-CYCLE-REASONS PCL::FGEN-TEST
++-         PCL::SLOT-INITARGS-FROM-STRUCTURE-SLOTD PCL::FREE-CACHE
++-         PCL::TYPE-CLASS PCL::INITIAL-CACHE
++-         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS
++-         PCL::STRUCTURE-SLOTD-WRITER-FUNCTION
++-         PCL::INITIALIZE-INFO-CACHED-DEFAULT-INITARGS-FUNCTION
++-         PCL::EARLY-COLLECT-SLOTS PCL::LIST-DFUN
++-         PCL::EXPAND-MAKE-INSTANCE-FORM PCL::N-N-CACHE
++-         PCL::MAKE-TYPE-PREDICATE PCL::INTERN-FUNCTION-NAME
++-         PCL::GET-MAKE-INSTANCE-FUNCTIONS WALKER::ENV-WALK-FUNCTION
++-         PCL::TWO-CLASS-CACHE PCL::MAKE-CALLS-TYPE-DECLARATION
++-         PCL::MAKE-STRUCTURE-SLOT-BOUNDP-FUNCTION
++-         PCL::INITIALIZE-INFO-KEY PCL::GF-LAMBDA-LIST
++-         ITERATE::VARIABLES-FROM-LET PCL::COMPUTE-CLASS-SLOTS
++-         PCL::DFUN-ARG-SYMBOL PCL::CHECKING-P PCL::ARG-INFO-P
++-         PCL::INITIALIZE-INFO-CACHED-RI-VALID-P PCL::CHECKING-CACHE
++-         PCL::METHOD-FUNCTION-PLIST PCL::STRUCTURE-OBJECT-P
++-         PCL::ARG-INFO-PRECEDENCE PCL::ONE-CLASS-INDEX
++-         PCL::STD-INSTANCE-P PCL::STRUCTURE-TYPE-SLOT-DESCRIPTION-LIST
++-         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::EARLY-SLOT-DEFINITION-NAME PCL::UNPARSE-SPECIALIZERS
++-         PCL::STRUCTURE-TYPE-P PCL::ACCESSOR-DFUN-INFO-ACCESSOR-TYPE
++-         PCL::PV-TABLEP PCL::CLASS-FROM-TYPE
++-         PCL::GF-INFO-SIMPLE-ACCESSOR-TYPE PCL::STRUCTURE-TYPE
++-         PCL::MAKE-EQL-PREDICATE PCL::TWO-CLASS-ACCESSOR-TYPE
++-         PCL::DEFAULT-STRUCTURE-INSTANCE-P
++-         PCL::EARLY-METHOD-STANDARD-ACCESSOR-SLOT-NAME
++-         PCL::ONE-INDEX-DFUN-INFO-ACCESSOR-TYPE PCL::GFS-OF-TYPE
++-         PCL::DEFAULT-STRUCTUREP PCL::EARLY-CLASS-NAME-OF
++-         PCL::%STD-INSTANCE-SLOTS PCL::ONE-INDEX-INDEX PCL::WRAPPER-OF
++-         PCL::ARG-INFO-VALID-P PCL::KEYWORD-SPEC-NAME
++-         PCL::METHOD-CALL-P PCL::SHOW-DFUN-COSTS PCL::DFUN-INFO-CACHE
++-         PCL::DEFAULT-CONSTANT-CONVERTER ITERATE::SEQUENCE-ACCESSOR
++-         PCL::COUNT-DFUN PCL::EXPAND-LONG-DEFCOMBIN
++-         PCL::CACHING-DFUN-INFO PCL::INITIALIZE-INFO-CACHED-VALID-P
++-         PCL::FAST-INSTANCE-BOUNDP-P PCL::ARG-INFO-METATYPES
++-         PCL::EXTRACT-PARAMETERS PCL::GF-INFO-C-A-M-EMF-STD-P
++-         PCL::FINAL-ACCESSOR-DFUN-TYPE PCL::GMAKUNBOUND
++-         PCL::FAST-METHOD-CALL-ARG-INFO PCL::COMPUTE-LINE-SIZE
++-         PCL::ONE-INDEX-CACHE PCL::NO-METHODS-P
++-         PCL::COMPUTE-STD-CPL-PHASE-2
++-         PCL::COMPLICATED-INSTANCE-CREATION-METHOD
++-         PCL::MAKE-PERMUTATION-VECTOR PCL::CONSTANT-VALUE-DFUN-INFO
++-         PCL::TWO-CLASS-WRAPPER1 PCL::MAP-ALL-GENERIC-FUNCTIONS
++-         PCL::CLASS-PREDICATE SYSTEM::%STRUCTURE-NAME
++-         PCL::RESET-CLASS-INITIALIZE-INFO
++-         PCL::BUILT-IN-OR-STRUCTURE-WRAPPER1 PCL::EARLY-CLASS-NAME
++-         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION-SYMBOL
++-         PCL::UPDATE-PV-TABLE-CACHE-INFO PCL::SLOT-READER-SYMBOL
++-         PCL::ARG-INFO-NKEYS PCL::METHOD-CALL-CALL-METHOD-ARGS
++-         PCL::CCLOSUREP PCL::DEFAULT-METHOD-ONLY-CACHE
++-         PCL::NEXT-WRAPPER-FIELD PCL::SLOT-WRITER-SYMBOL
++-         PCL::ACCESSOR-DFUN-INFO-P
++-         PCL::GET-MAKE-INSTANCE-FUNCTION-SYMBOL
++-         PCL::EXTRACT-REQUIRED-PARAMETERS PCL::FORMAT-CYCLE-REASONS
++-         PCL::UNENCAPSULATED-FDEFINITION
++-         PCL::GET-BUILT-IN-WRAPPER-SYMBOL PCL::ONE-CLASS-P
++-         PCL::ECD-METACLASS PCL::METHOD-LL->GENERIC-FUNCTION-LL
++-         PCL::PROCLAIM-INCOMPATIBLE-SUPERCLASSES PCL::ONE-INDEX-P
++-         PCL::INITIALIZE-INFO-CACHED-INITARGS-FORM-LIST
++-         PCL::ECD-CANONICAL-SLOTS
++-         PCL::METHOD-FUNCTION-NEEDS-NEXT-METHODS-P
++-         PCL::INITIALIZE-INFO-CACHED-NEW-KEYS
++-         PCL::STRUCTURE-SLOTD-READER-FUNCTION
++-         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITARGS-FORM-LIST
++-         PCL::DISPATCH-P PCL::LIST-LARGE-CACHE
++-         PCL::FAST-METHOD-CALL-PV-CELL PCL::GET-MAKE-INSTANCE-FUNCTION
++-         PCL::DNET-METHODS-P PCL::STRUCTURE-SLOTD-INIT-FORM
++-         PCL::UPDATE-CLASS-CAN-PRECEDE-P PCL::ONE-CLASS-ACCESSOR-TYPE
++-         PCL::RESET-INITIALIZE-INFO PCL::STANDARD-SVUC-METHOD
++-         PCL::DEFAULT-CONSTANTP PCL::UPDATE-C-A-M-GF-INFO
++-         PCL::ONE-INDEX-DFUN-INFO-CACHE PCL::EARLY-CLASS-SLOTS
++-         PCL::CPD-SUPERS PCL::FGEN-GENERATOR-LAMBDA
++-         PCL::ECD-SUPERCLASS-NAMES PCL::ECD-CLASS-NAME PCL::SETFBOUNDP
++-         PCL::GET-SETF-FUNCTION-NAME PCL::DFUN-INFO-P
++-         PCL::SLOT-VECTOR-SYMBOL PCL::INITIALIZE-INFO-P
++-         PCL::TWO-CLASS-P PCL::UPDATE-GF-SIMPLE-ACCESSOR-TYPE
++-         PCL::COPY-CACHE PCL::MAKE-PV-TABLE-TYPE-DECLARATION
++-         PCL::SORT-CALLS PCL::STRUCTURE-SLOT-BOUNDP PCL::%FBOUNDP
++-         PCL::RESET-CLASS-INITIALIZE-INFO-1 PCL::UPDATE-GF-INFO
++-         PCL::WRAPPER-FOR-STRUCTURE PCL::FUNCALLABLE-INSTANCE-P
++-         PCL::CPD-CLASS PCL::EARLY-METHOD-STANDARD-ACCESSOR-P
++-         PCL::SORT-SLOTS PCL::CANONICAL-SLOT-NAME
++-         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
++-         PCL::EARLY-ACCESSOR-METHOD-SLOT-NAME PCL::%SYMBOL-FUNCTION
++-         PCL::EARLY-METHOD-LAMBDA-LIST PCL::ONE-INDEX-DFUN-INFO-INDEX
++-         PCL::N-N-ACCESSOR-TYPE PCL::CACHING-CACHE
++-         PCL::EARLY-CLASS-SLOTDS PCL::ONE-INDEX-DFUN-INFO-P
++-         SYSTEM::%COMPILED-FUNCTION-NAME
++-         PCL::BOOTSTRAP-CLASS-PREDICATES PCL::NET-TEST-CONVERTER
++-         PCL::DO-STANDARD-DEFSETFS-FOR-DEFCLASS PCL::TWO-CLASS-WRAPPER0
++-         PCL::MAP-SPECIALIZERS PCL::EARLY-GF-NAME PCL::N-N-P
++-         PCL::FGEN-SYSTEM PCL::METHODS-CONTAIN-EQL-SPECIALIZER-P
++-         PCL::UPDATE-GFS-OF-CLASS PCL::ONE-CLASS-WRAPPER0
++-         PCL::CPD-AFTER
++-         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION
++-         PCL::CACHE-P PCL::EARLY-METHOD-QUALIFIERS PCL::CHECK-CACHE
++-         PCL::FORCE-CACHE-FLUSHES PCL::CACHE-OWNER
++-         PCL::COMPILE-LAMBDA-DEFERRED PCL::ARG-INFO-KEY/REST-P)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
+++         PCL::|__si::MAKE-INITIAL| PCL::|__si::MAKE-ARG-INFO|
+++         PCL::STRING-APPEND PCL::|__si::MAKE-ONE-INDEX|
+++         PCL::MAKE-INITIALIZE-INFO PCL::MAKE-FAST-METHOD-CALL
+++         PCL::|__si::MAKE-STD-INSTANCE|
+++         PCL::|__si::MAKE-ONE-INDEX-DFUN-INFO|
+++         PCL::|__si::MAKE-CONSTANT-VALUE| PCL::|__si::MAKE-N-N|
+++         PCL::FIX-EARLY-GENERIC-FUNCTIONS PCL::INTERN-PV-TABLE
+++         PCL::FALSE PCL::|__si::MAKE-DFUN-INFO|
+++         PCL::|__si::MAKE-CACHING| PCL::MAKE-PV-TABLE
+++         PCL::MAKE-METHOD-CALL PCL::TRUE PCL::MAKE-PROGN
+++         PCL::|__si::MAKE-CACHE|
+++         PCL::|STRUCTURE-OBJECT class constructor|
+++         PCL::|__si::MAKE-CLASS-PRECEDENCE-DESCRIPTION|
+++         PCL::|__si::MAKE-NO-METHODS| PCL::|__si::MAKE-ONE-CLASS|
+++         PCL::|__si::MAKE-PV-TABLE| PCL::PV-WRAPPERS-FROM-PV-ARGS
+++         WALKER::UNBOUND-LEXICAL-FUNCTION PCL::|__si::MAKE-TWO-CLASS|
+++         PCL::|__si::MAKE-ACCESSOR-DFUN-INFO|
+++         PCL::|__si::MAKE-DEFAULT-METHOD-ONLY|
+++         PCL::MAKE-FAST-INSTANCE-BOUNDP
+++         PCL::CALLED-FIN-WITHOUT-FUNCTION PCL::USE-PACKAGE-PCL
+++         PCL::|__si::MAKE-CHECKING| PCL::|__si::MAKE-INITIAL-DISPATCH|
+++         PCL::|__si::MAKE-DISPATCH|)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
++-         COMMON-LISP::INVALID-METHOD-ERROR PCL::LIST-LARGE-CACHES
++-         PCL::UPDATE-MAKE-INSTANCE-FUNCTION-TABLE PCL::UNTRACE-METHOD
++-         COMMON-LISP::METHOD-COMBINATION-ERROR)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FUNCTION)
+++         PCL::METHOD-CALL-FUNCTION PCL::FAST-METHOD-CALL-FUNCTION
+++         PCL::CACHE-LIMIT-FN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::BOOLEAN)
+++         PCL::CACHE-VALUEP)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             PCL::NON-NEGATIVE-FIXNUM)
++-         PCL::CACHE-MAX-LOCATION PCL::CACHE-NLINES PCL::CACHE-SIZE
++-         PCL::CACHE-MASK)) 
+++             (COMMON-LISP::INTEGER 1 255))
+++         PCL::CACHE-NKEYS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::INTEGER 1 256))
+++         PCL::CACHE-LINE-SIZE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::VALUES COMMON-LISP::T COMMON-LISP::T))
+++         PCL::SYMBOL-APPEND)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
+++             (COMMON-LISP::*))
+++         PCL::SORT-APPLICABLE-METHODS PCL::SORT-METHODS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         PCL::MAKE-INTERNAL-READER-METHOD-FUNCTION
++-         ITERATE::SIMPLE-EXPAND-ITERATE-FORM PCL::ADD-DIRECT-SUBCLASSES
++-         PCL::PROCLAIM-DEFMETHOD PCL::UPDATE-INITIALIZE-INFO-INTERNAL
++-         PCL::RAISE-METATYPE PCL::CLASS-CAN-PRECEDE-P
++-         WALKER::VARIABLE-SPECIAL-P PCL::GF-MAKE-FUNCTION-FROM-EMF
++-         PCL::|SETF PCL METHOD-FUNCTION-PLIST|
+++         PCL::COMPUTE-CALLS PCL::SET-STRUCTURE-SVUC-METHOD
+++         PCL::UPDATE-STD-OR-STR-METHODS PCL::SET-METHODS
+++         WALKER::NOTE-LEXICAL-BINDING
+++         ITERATE::SIMPLE-EXPAND-ITERATE-FORM
+++         PCL::|SETF PCL METHOD-FUNCTION-PLIST| PCL::SAUT-NOT-PROTOTYPE
+++         PCL::VALUE-FOR-CACHING PCL::PROCLAIM-DEFMETHOD
+++         PCL::MAKE-FAST-METHOD-CALL-LAMBDA-LIST
+++         PCL::MAKE-STD-BOUNDP-METHOD-FUNCTION PCL::METHODS-CONVERTER
+++         PCL::DEAL-WITH-ARGUMENTS-OPTION
+++         PCL::UPDATE-ALL-PV-TABLE-CACHES
+++         PCL::MAP-PV-TABLE-REFERENCES-OF PCL::UPDATE-CLASS
+++         PCL::FIND-STANDARD-II-METHOD
+++         PCL::METHOD-FUNCTION-RETURNING-NIL
+++         PCL::REDIRECT-EARLY-FUNCTION-INTERNAL PCL::UPDATE-CPL
+++         PCL::QUALIFIER-CHECK-RUNTIME PCL::COMPUTE-STD-CPL
+++         PCL::COMPUTE-CONSTANTS PCL::ADD-FORMS PCL::AUGMENT-TYPE
+++         PCL::MEMF-CONSTANT-CONVERTER PCL::SWAP-WRAPPERS-AND-SLOTS
+++         PCL::SET-WRAPPER PCL::GET-KEY-ARG PCL::MAKE-PLIST
+++         PCL::MAKE-PV-TABLE-INTERNAL ITERATE::EXTRACT-SPECIAL-BINDINGS
+++         PCL::SAUT-NOT-EQL WALKER::VARIABLE-SYMBOL-MACRO-P
+++         PCL::EMIT-1-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
++          PCL::SET-FUNCTION-PRETTY-ARGLIST
+++         PCL::GF-MAKE-FUNCTION-FROM-EMF PCL::FIND-SLOT-DEFINITION
+++         PCL::SET-STANDARD-SVUC-METHOD PCL::ADD-TO-CVECTOR
+++         PCL::PV-WRAPPERS-FROM-ALL-WRAPPERS COMMON-LISP::REMOVE-METHOD
+++         PCL::CHECKING-DFUN-INFO PCL::PARSE-QUALIFIER-PATTERN
+++         PCL::%SET-CCLOSURE-ENV PCL::MAKE-CDXR
++          PCL::FUNCALLABLE-STANDARD-INSTANCE-ACCESS
+++         PCL::NET-CONSTANT-CONVERTER PCL::|SETF PCL FIND-CLASS|
+++         PCL::METHOD-FUNCTION-RETURNING-T PCL::CHANGE-CLASS-INTERNAL
+++         PCL::MAKE-DFUN-ARG-LIST PCL::DOCTOR-DFUN-FOR-THE-DEBUGGER
+++         PCL::MAKE-STD-WRITER-METHOD-FUNCTION ITERATE::MV-SETQ
+++         PCL::MAKE-EARLY-ACCESSOR PCL::GET-KEY-ARG1
+++         PCL::ADD-DIRECT-SUBCLASSES PCL::DO-SATISFIES-DEFTYPE
+++         PCL::N-N-DFUN-INFO PCL::CLASSES-HAVE-COMMON-SUBCLASS-P
+++         PCL::SAUT-NOT-CLASS PCL::CANONICALIZE-DEFCLASS-OPTION
++          PCL::MAKE-DISCRIMINATING-FUNCTION-ARGLIST
++-         PCL::DEAL-WITH-ARGUMENTS-OPTION WALKER::NOTE-DECLARATION
++-         PCL::MAKE-CLASS-PREDICATE PCL::VALUE-FOR-CACHING
++-         PCL::EMIT-1-NIL-DLAP PCL::MAKE-CAXR PCL::SYMBOL-LESSP
++-         PCL::GET-KEY-ARG1 PCL::ADD-FORMS
++-         PCL::EMIT-N-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
++-         PCL::DOCTOR-DFUN-FOR-THE-DEBUGGER
++-         PCL::CLASSES-HAVE-COMMON-SUBCLASS-P PCL::N-N-DFUN-INFO
++-         PCL::CANONICALIZE-SLOT-SPECIFICATION
++-         PCL::REDIRECT-EARLY-FUNCTION-INTERNAL
++-         PCL::UPDATE-STD-OR-STR-METHODS PCL::%SET-CCLOSURE-ENV
++-         PCL::QUALIFIER-CHECK-RUNTIME
++-         PCL::MAKE-STD-READER-METHOD-FUNCTION 
++-         PCL::ADD-SLOT-ACCESSORS PCL::ADD-TO-CVECTOR
++-         PCL::COMPUTE-LAYOUT PCL::DESTRUCTURE-INTERNAL
++-         PCL::SUPERCLASSES-COMPATIBLE-P
++-         PCL::COMPUTE-APPLICABLE-METHODS-FUNCTION ITERATE::MV-SETQ
++-         PCL::COMPUTE-STD-CPL PCL::SET-METHODS PCL::CHECKING-DFUN-INFO
++-         ITERATE::EXTRACT-SPECIAL-BINDINGS PCL::SWAP-WRAPPERS-AND-SLOTS
++-         PCL::CANONICALIZE-DEFCLASS-OPTION PCL::MAKE-CDXR
++-         PCL::PRINTING-RANDOM-THING-INTERNAL COMMON-LISP::ADD-METHOD
+++         WALKER::VARIABLE-LEXICAL-P WALKER::ENVIRONMENT-FUNCTION
+++         PCL::PV-TABLE-LOOKUP PCL::DESTRUCTURE-INTERNAL
+++         PCL::MAKE-INTERNAL-READER-METHOD-FUNCTION
+++         PCL::REMOVE-SLOT-ACCESSORS
+++         PCL::|SETF PCL FIND-CLASS-PREDICATE|
+++         PCL::|SETF PCL GDEFINITION| PCL::MAKE-DFUN-LAMBDA-LIST
+++         PCL::CANONICALIZE-SLOT-SPECIFICATION WALKER::WALK-REPEAT-EVAL
++          PCL::STANDARD-INSTANCE-ACCESS
++-         SYSTEM::%SET-COMPILED-FUNCTION-NAME PCL::FIND-SLOT-DEFINITION
+++         PCL::PRINTING-RANDOM-THING-INTERNAL PCL::REMTAIL
+++         PCL::ACCESSOR-MISS-FUNCTION PCL::COMPUTE-LAYOUT
++          PCL::CLASS-MIGHT-PRECEDE-P
++-         PCL::MAKE-STD-BOUNDP-METHOD-FUNCTION PCL::SAUT-NOT-EQL
++-         PCL::SET-WRAPPER PCL::SET-STANDARD-SVUC-METHOD
++-         PCL::SAUT-NOT-PROTOTYPE PCL::ACCESSOR-MISS-FUNCTION
++-         PCL::NO-SLOT PCL::REMTAIL PCL::PV-WRAPPERS-FROM-ALL-ARGS
++-         PCL::UPDATE-CLASS PCL::AUGMENT-TYPE PCL::MAKE-EARLY-ACCESSOR
++-         PCL::MAKE-PLIST PCL::MEC-ALL-CLASSES-INTERNAL
++-         PCL::MAKE-STD-WRITER-METHOD-FUNCTION
++-         PCL::PARSE-QUALIFIER-PATTERN PCL::MEMF-CONSTANT-CONVERTER
++-         PCL::|SETF PCL FIND-CLASS-PREDICATE|
++-         PCL::MAKE-UNORDERED-METHODS-EMF WALKER::ENVIRONMENT-FUNCTION
++-         PCL::MEC-ALL-CLASS-LISTS PCL::SAUT-NOT-CLASS-EQ
++-         PCL::DO-SATISFIES-DEFTYPE PCL::SET-STRUCTURE-SVUC-METHOD
++-         PCL::MAKE-DLAP-LAMBDA-LIST PCL::METHOD-FUNCTION-RETURNING-T
++-         PCL::COMPUTE-CALLS PCL::REMOVE-SLOT-ACCESSORS
++-         PCL::UPDATE-ALL-PV-TABLE-CACHES PCL::MAKE-DFUN-LAMBDA-LIST
++-         WALKER::NOTE-LEXICAL-BINDING PCL::REMOVE-DIRECT-SUBCLASSES
++-         PCL::MAP-PV-TABLE-REFERENCES-OF PCL::COMPUTE-CONSTANTS
++-         PCL::METHOD-FUNCTION-RETURNING-NIL PCL::METHODS-CONVERTER
++-         PCL::PV-TABLE-LOOKUP PCL::DESCRIBE-PACKAGE
++-         COMMON-LISP::SLOT-EXISTS-P PCL::MAKE-PV-TABLE-INTERNAL
++-         PCL::SAUT-NOT-CLASS PCL::|SETF PCL FIND-CLASS|
++-         PCL::UPDATE-INITS PCL::UPDATE-CPL
++-         PCL::EMIT-1-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
++-         PCL::COMPUTE-PV WALKER::VARIABLE-LEXICAL-P
++-         PCL::PROCLAIM-DEFGENERIC PCL::MAKE-DFUN-ARG-LIST
++-         PCL::GET-KEY-ARG COMMON-LISP::REMOVE-METHOD
++-         PCL::PV-WRAPPERS-FROM-ALL-WRAPPERS PCL::VARIABLE-CLASS
++-         PCL::UPDATE-SLOTS PCL::SYMBOL-OR-CONS-LESSP
++-         PCL::MEC-ALL-CLASSES PCL::LIST-EQ
++-         PCL::SET-FUNCALLABLE-INSTANCE-FUNCTION
++-         WALKER::WALK-REPEAT-EVAL WALKER::ENVIRONMENT-MACRO
++-         WALKER::VARIABLE-SYMBOL-MACRO-P
++-         PCL::MAKE-FAST-METHOD-CALL-LAMBDA-LIST
++-         PCL::BOOTSTRAP-SLOT-INDEX PCL::PLIST-VALUE
++-         PCL::CHANGE-CLASS-INTERNAL PCL::NET-CONSTANT-CONVERTER
++-         PCL::|SETF PCL GDEFINITION| PCL::FIND-STANDARD-II-METHOD)) 
+++         PCL::EMIT-N-WRAPPER-COMPUTE-PRIMARY-CACHE-LOCATION
+++         SYSTEM::%SET-COMPILED-FUNCTION-NAME PCL::PLIST-VALUE
+++         PCL::MAKE-CAXR PCL::MAKE-DLAP-LAMBDA-LIST
+++         PCL::MAKE-STD-READER-METHOD-FUNCTION WALKER::ENVIRONMENT-MACRO
+++         PCL::UPDATE-SLOTS PCL::VARIABLE-CLASS
+++         PCL::SET-FUNCALLABLE-INSTANCE-FUNCTION PCL::LIST-EQ
+++         PCL::ADD-SLOT-ACCESSORS PCL::SAUT-NOT-CLASS-EQ PCL::COMPUTE-PV
+++         PCL::PV-WRAPPERS-FROM-ALL-ARGS PCL::UPDATE-INITS
+++         PCL::MEC-ALL-CLASS-LISTS PCL::RAISE-METATYPE
+++         WALKER::NOTE-DECLARATION PCL::EMIT-1-NIL-DLAP
+++         PCL::BOOTSTRAP-SLOT-INDEX PCL::SUPERCLASSES-COMPATIBLE-P
+++         PCL::MEC-ALL-CLASSES-INTERNAL COMMON-LISP::SLOT-EXISTS-P
+++         PCL::DESCRIBE-PACKAGE PCL::NO-SLOT PCL::PROCLAIM-DEFGENERIC
+++         COMMON-LISP::ADD-METHOD PCL::MAKE-UNORDERED-METHODS-EMF
+++         PCL::MEC-ALL-CLASSES PCL::SYMBOL-OR-CONS-LESSP
+++         PCL::UPDATE-INITIALIZE-INFO-INTERNAL PCL::CLASS-CAN-PRECEDE-P
+++         PCL::SYMBOL-LESSP PCL::COMPUTE-APPLICABLE-METHODS-FUNCTION
+++         PCL::MAKE-CLASS-PREDICATE WALKER::VARIABLE-SPECIAL-P
+++         PCL::REMOVE-DIRECT-SUBCLASSES)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::*)
++-         WALKER::WALK-FORM PCL::MAKE-INSTANCE-1
++-         PCL::EXTRACT-DECLARATIONS PCL::GET-FUNCTION
++-         WALKER::MACROEXPAND-ALL PCL::ALLOCATE-STRUCTURE-INSTANCE
++-         PCL::MAKE-FINAL-DFUN-INTERNAL PCL::GET-METHOD-FUNCTION
++-         PCL::COERCE-TO-CLASS PCL::MAP-ALL-CLASSES PCL::ENSURE-CLASS
++-         PCL::PARSE-METHOD-OR-SPEC COMMON-LISP::ENSURE-GENERIC-FUNCTION
++-         PCL::MAKE-CACHING-DFUN PCL::GET-FUNCTION1
++-         PCL::GET-DFUN-CONSTRUCTOR PCL::MAKE-CONSTANT-VALUE-DFUN
++-         PCL::MAKE-METHOD-FUNCTION-INTERNAL PCL::COMPILE-LAMBDA
++-         PCL::PARSE-SPECIALIZED-LAMBDA-LIST PCL::DISPATCH-DFUN-COST
++-         PCL::MAKE-METHOD-LAMBDA-INTERNAL)) 
+++         PCL::MAKE-METHOD-FUNCTION-INTERNAL
+++         PCL::MAKE-FINAL-DFUN-INTERNAL WALKER::MACROEXPAND-ALL
+++         COMMON-LISP::ENSURE-GENERIC-FUNCTION
+++         PCL::MAKE-METHOD-LAMBDA-INTERNAL PCL::MAKE-CONSTANT-VALUE-DFUN
+++         PCL::GET-FUNCTION PCL::EXTRACT-DECLARATIONS
+++         PCL::COERCE-TO-CLASS PCL::PARSE-METHOD-OR-SPEC
+++         PCL::DISPATCH-DFUN-COST PCL::PARSE-SPECIALIZED-LAMBDA-LIST
+++         PCL::MAP-ALL-CLASSES PCL::COMPILE-LAMBDA PCL::ENSURE-CLASS
+++         PCL::GET-METHOD-FUNCTION WALKER::WALK-FORM
+++         PCL::ALLOCATE-STRUCTURE-INSTANCE PCL::GET-FUNCTION1
+++         PCL::MAKE-CACHING-DFUN PCL::MAKE-INSTANCE-1
+++         PCL::GET-DFUN-CONSTRUCTOR)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++@@ -329,270 +367,405 @@
++          PCL::MAKE-CLASS-PREDICATE-NAME PCL::MAKE-KEYWORD)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::VECTOR COMMON-LISP::CHARACTER
+++                 COMMON-LISP::*))
+++         PCL::CAPITALIZE-WORDS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::T)
+++         PCL::ALLOCATE-FUNCALLABLE-INSTANCE-1 PCL::SHOW-EMF-CALL-TRACE
+++         PCL::CACHES-TO-ALLOCATE PCL::MAKE-CACHE
+++         PCL::SHOW-FREE-CACHE-VECTORS PCL::MAKE-ARG-INFO
+++         PCL::NO-METHODS-DFUN-INFO PCL::STRUCTURE-FUNCTIONS-EXIST-P
+++         PCL::INITIALIZE-CHECKING-OR-CACHING-FUNCTION-LIST
+++         PCL::BOOTSTRAP-BUILT-IN-CLASSES
+++         PCL::%%ALLOCATE-INSTANCE--CLASS PCL::DISPATCH-DFUN-INFO
+++         PCL::INITIAL-DISPATCH-DFUN-INFO PCL::BOOTSTRAP-META-BRAID
+++         PCL::UPDATE-DISPATCH-DFUNS PCL::LIST-ALL-DFUNS
+++         PCL::DEFAULT-METHOD-ONLY-DFUN-INFO PCL::RENEW-SYS-FILES
+++         PCL::IN-THE-COMPILER-P PCL::GET-EFFECTIVE-METHOD-GENSYM
+++         PCL::MAKE-CPD PCL::INITIAL-DFUN-INFO
+++         PCL::SHOW-DFUN-CONSTRUCTORS
+++         PCL::ALLOCATE-FUNCALLABLE-INSTANCE-2)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::FIXNUM)
+++         PCL::ZERO)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::T COMMON-LISP::STREAM COMMON-LISP::T)
++              COMMON-LISP::T)
++-         PCL::FIND-CLASS-FROM-CELL PCL::GET-METHOD-FUNCTION-PV-CELL
++-         PCL::PROBE-CACHE PCL::NAMED-OBJECT-PRINT-FUNCTION
++-         PCL::PRECOMPUTE-EFFECTIVE-METHODS
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE
++-         PCL::GET-EFFECTIVE-METHOD-FUNCTION1 PCL::MAKE-EMF-FROM-METHOD
++-         PCL::EMIT-MISS PCL::REAL-ENSURE-GF-USING-CLASS--NULL
++-         PCL::RECORD-DEFINITION WALKER::CONVERT-MACRO-TO-LAMBDA
++-         PCL::INITIALIZE-INFO PCL::EXPAND-EFFECTIVE-METHOD-FUNCTION
++-         PCL::METHOD-FUNCTION-GET PCL::FIND-CLASS-PREDICATE-FROM-CELL
++-         PCL::ENSURE-GENERIC-FUNCTION-USING-CLASS
++-         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION1 PCL::GET-DECLARATION
++-         PCL::REAL-ENSURE-GF-USING-CLASS--GENERIC-FUNCTION
++-         PCL::MAP-CACHE)) 
+++         PCL::PRINT-DFUN-INFO)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::FIXNUM COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::*)
+++         PCL::FIND-FREE-CACHE-LINE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::FIXNUM COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::COMPUTE-CACHE-PARAMETERS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
+++         PCL::COUNT-ALL-DFUNS PCL::EMIT-N-N-WRITERS
+++         PCL::EMIT-N-N-READERS)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::MAKE-FINAL-DFUN PCL::SET-ARG-INFO PCL::TRACE-METHOD
+++         PCL::MAKE-SPECIALIZABLE WALKER::WALKER-ENVIRONMENT-BIND-1
+++         ITERATE::FUNCTION-LAMBDA-P COMMON-LISP::FIND-CLASS
+++         PCL::MAKE-WRAPPER PCL::UPDATE-DFUN
+++         PCL::MAKE-TYPE-PREDICATE-NAME PCL::PV-TABLE-LOOKUP-PV-ARGS
+++         PCL::USE-CONSTANT-VALUE-DFUN-P WALKER::RELIST
+++         PCL::MAKE-EARLY-GF PCL::INITIALIZE-METHOD-FUNCTION
+++         PCL::FIND-CLASS-CELL PCL::USE-DISPATCH-DFUN-P
+++         PCL::FIND-CLASS-PREDICATE PCL::ALLOCATE-STANDARD-INSTANCE
+++         PCL::INITIALIZE-INTERNAL-SLOT-GFS ITERATE::MAYBE-WARN
+++         PCL::ALLOCATE-FUNCALLABLE-INSTANCE
+++         PCL::EARLY-METHOD-SPECIALIZERS WALKER::RELIST* PCL::SET-DFUN)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
+++             COMMON-LISP::*)
+++         PCL::SLOT-UNBOUND-INTERNAL ITERATE::PARSE-DECLARATIONS
+++         PCL::EMIT-CACHING PCL::COMPUTE-STD-CPL-PHASE-1
+++         PCL::INITIAL-DFUN PCL::INSURE-DFUN PCL::EMIT-CHECKING
+++         PCL::COMPUTE-TEST PCL::COMPUTE-CODE PCL::MAKE-DIRECT-SLOTD
+++         PCL::SAUT-CLASS COMMON-LISP::SLOT-MAKUNBOUND
+++         PCL::CPL-FORWARD-REFERENCED-CLASS-ERROR PCL::INVOKE-EMF
+++         PCL::*SUBTYPEP PCL::SPECIALIZER-APPLICABLE-USING-TYPE-P
+++         PCL::COMPUTE-APPLICABLE-METHODS-USING-TYPES
+++         PCL::REAL-REMOVE-METHOD PCL::SAUT-PROTOTYPE
+++         PCL::MUTATE-SLOTS-AND-CALLS PCL::FIND-SUPERCLASS-CHAIN
+++         COMMON-LISP::SLOT-BOUNDP PCL::FORM-LIST-TO-LISP
+++         PCL::CPL-INCONSISTENT-ERROR PCL::EMIT-DEFAULT-ONLY-FUNCTION
+++         PCL::ENSURE-CLASS-VALUES PCL::CHECK-INITARGS-VALUES
+++         PCL::SAUT-EQL PCL::SPLIT-DECLARATIONS
+++         PCL::UPDATE-SLOT-VALUE-GF-INFO PCL::SAUT-AND
+++         PCL::SLOT-NAME-LISTS-FROM-SLOTS
+++         PCL::MAKE-INSTANCE-FUNCTION-TRAP PCL::EMIT-DEFAULT-ONLY
+++         PCL::SAUT-NOT PCL::SAUT-CLASS-EQ COMMON-LISP::SLOT-VALUE
+++         PCL::DESTRUCTURE PCL::GENERATE-FAST-CLASS-SLOT-ACCESS-P
+++         PCL::GET-NEW-FUNCTION-GENERATOR-INTERNAL
+++         PCL::CLASS-APPLICABLE-USING-CLASS-P PCL::SDFUN-FOR-CACHING
+++         PCL::SET-FUNCTION-NAME)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
+++         PCL::ARG-INFO-NUMBER-REQUIRED PCL::CACHING-LIMIT-FN
+++         PCL::PV-CACHE-LIMIT-FN PCL::ONE-INDEX-LIMIT-FN
+++         PCL::PV-TABLE-PV-SIZE PCL::CACHE-COUNT PCL::DEFAULT-LIMIT-FN
+++         PCL::CPD-COUNT PCL::CHECKING-LIMIT-FN
+++         PCL::N-N-ACCESSORS-LIMIT-FN PCL::EARLY-CLASS-SIZE
+++         PCL::FAST-INSTANCE-BOUNDP-INDEX)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
+++         PCL::POWER-OF-TWO-CEILING)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::GET-CACHE-FROM-CACHE)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM COMMON-LISP::T)
+++             COMMON-LISP::FIXNUM)
+++         PCL::COMPUTE-PRIMARY-CACHE-LOCATION)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) PCL::FIELD-TYPE)
+++         PCL::CACHE-FIELD)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
+++             (COMMON-LISP::OR PCL::CACHE COMMON-LISP::NULL))
+++         PCL::PV-TABLE-CACHE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++              COMMON-LISP::T)
++-         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
++-         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++          PCL::|(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
++-         WALKER::WALK-PROG/PROG*
++-         PCL::|(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
++-         WALKER::WALK-BINDINGS-2
++-         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
++-         WALKER::WALK-DO/DO*
++-         PCL::|(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-         PCL::|(FAST-METHOD DOCUMENTATION (T))|
+++         WALKER::WALK-TEMPLATE PCL::|(FAST-METHOD PRINT-OBJECT (T T))|
+++         WALKER::WALK-DO/DO* PCL::LOAD-PRECOMPILED-DFUN-CONSTRUCTOR
++          PCL::|(FAST-METHOD DOCUMENTATION (DOCUMENTATION-MIXIN))|
++-         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
+++         WALKER::WALK-LET/LET*
+++         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
+++         PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-TYPE
+++         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
++          PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
++-         PCL::INITIALIZE-INSTANCE-SIMPLE PCL::BOOTSTRAP-SET-SLOT
++-         PCL::|(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
++-         PCL::|(FAST-METHOD PRINT-OBJECT (CLASS T))|
++-         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
++-         PCL::FILL-CACHE-P
++-         PCL::|(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
++-         PCL::|(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
+++         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
+++         PCL::INITIALIZE-INSTANCE-SIMPLE
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
+++         PCL::EXPAND-SYMBOL-MACROLET-INTERNAL
++          PCL::|(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
++-         PCL::OPTIMIZE-WRITER PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-TYPE
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-INTERNAL
++-         PCL::|(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
++          PCL::MAKE-EFFECTIVE-METHOD-FUNCTION1
++-         PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
++-         PCL::|(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
++          PCL::|(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
++-         PCL::ADJUST-CACHE
++-         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-         PCL::LOAD-PRECOMPILED-DFUN-CONSTRUCTOR
++-         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
++          PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-         PCL::|(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
++-         PCL::MEMF-TEST-CONVERTER
++          PCL::|(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-         PCL::|(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
++-         WALKER::WALK-TEMPLATE PCL::TWO-CLASS-DFUN-INFO
++-         PCL::EXPAND-CACHE
+++         PCL::|(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
+++         PCL::|(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
+++         PCL::|(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
+++         PCL::|(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
++          PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
+++         PCL::|(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
+++         PCL::|(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
+++         PCL::MAKE-DISPATCH-LAMBDA
+++         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++         PCL::EXPAND-DEFCLASS
+++         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++         PCL::|(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
+++         PCL::OPTIMIZE-WRITER
+++         PCL::|(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD DOCUMENTATION (T))|
+++         PCL::|(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++          PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
++-         PCL::|(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
++-         PCL::GET-WRAPPERS-FROM-CLASSES
++-         PCL::|(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
++-         PCL::|(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-         PCL::LOAD-PRECOMPILED-IIS-ENTRY
++-         PCL::|(FAST-METHOD PRINT-OBJECT (T T))|
++-         PCL::EXPAND-SYMBOL-MACROLET-INTERNAL
++-         PCL::MAYBE-EXPAND-ACCESSOR-FORM
+++         PCL::OPTIMIZE-READER WALKER::WALK-PROG/PROG*
+++         PCL::BOOTSTRAP-SET-SLOT
++          PCL::EMIT-CHECKING-OR-CACHING-FUNCTION-PRELIMINARY
++-         PCL::|(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
++-         PCL::|(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++         PCL::TWO-CLASS-DFUN-INFO
+++         PCL::|(FAST-METHOD MAKE-INSTANCE (CLASS))|
+++         PCL::|(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++         PCL::ADJUST-CACHE
+++         PCL::|(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
+++         PCL::EXPAND-CACHE
+++         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
+++         PCL::|(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD PRINT-OBJECT (CLASS T))|
+++         PCL::|(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
+++         PCL::|(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
+++         PCL::|(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
+++         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
++          PCL::|(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
++-         PCL::EXPAND-DEFCLASS
++-         PCL::|(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
++-         WALKER::WALK-LET/LET* PCL::MAKE-DISPATCH-LAMBDA
+++         PCL::GET-WRAPPERS-FROM-CLASSES
+++         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
+++         PCL::MAYBE-EXPAND-ACCESSOR-FORM WALKER::WALK-BINDINGS-2
+++         PCL::FILL-CACHE-P PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-INTERNAL
++          PCL::|(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
++-         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
++-         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
++-         PCL::OPTIMIZE-READER
++-         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
++-         PCL::|(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-         PCL::|(FAST-METHOD MAKE-INSTANCE (CLASS))|)) 
+++         PCL::|(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
+++         PCL::|(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
+++         PCL::|(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
+++         PCL::LOAD-PRECOMPILED-IIS-ENTRY PCL::MEMF-TEST-CONVERTER
+++         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::REAL-ADD-NAMED-METHOD PCL::EARLY-ADD-NAMED-METHOD
+++         PCL::FILL-DFUN-CACHE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         PCL::OPTIMIZE-SET-SLOT-VALUE
++-         PCL::|(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
++-         PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
++-         PCL::MAKE-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
++-         PCL::|(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
++-         PCL::PRINT-CACHE WALKER::WALK-UNEXPECTED-DECLARE
++-         ITERATE::OPTIMIZE-ITERATE-FORM
++-         PCL::|(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
++-         WALKER::WALK-MULTIPLE-VALUE-SETQ PCL::FIRST-FORM-TO-LISP
++-         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
++-         WALKER::WALK-LABELS
++-         PCL::|(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
++-         PCL::ONE-CLASS-DFUN-INFO PCL::GET-FUNCTION-GENERATOR
++-         WALKER::RELIST-INTERNAL PCL::NOTE-PV-TABLE-REFERENCE
++-         WALKER::WALK-LAMBDA PCL::WRAP-METHOD-GROUP-SPECIFIER-BINDINGS
++-         PCL::ONE-INDEX-DFUN-INFO PCL::MAP-ALL-ORDERS
++-         PCL::OPTIMIZE-GF-CALL-INTERNAL PCL::COMPUTE-PRECEDENCE
++-         WALKER::WALK-DO PCL::PRINT-STD-INSTANCE
++-         PCL::OBSOLETE-INSTANCE-TRAP PCL::SORT-APPLICABLE-METHODS
++-         PCL::|(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-         PCL::EMIT-GREATER-THAN-1-DLAP
++-         PCL::|(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-         WALKER::WALK-FLET
++-         PCL::|(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
++-         PCL::|SETF PCL PLIST-VALUE| WALKER::WALK-PROG*
++-         WALKER::VARIABLE-DECLARATION
++-         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
++-         PCL::SKIP-FAST-SLOT-ACCESS-P PCL::SET-FUNCTION-NAME-1
++-         WALKER::WALK-MACROLET PCL::CAN-OPTIMIZE-ACCESS
++-         WALKER::WITH-AUGMENTED-ENVIRONMENT-INTERNAL
++-         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
++-         PCL::|(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
++-         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
++-         PCL::SKIP-OPTIMIZE-SLOT-VALUE-BY-CLASS-P
++-         PCL::|(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
++-         PCL::|(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
++-         PCL::EMIT-BOUNDP-CHECK PCL::|SETF PCL METHOD-FUNCTION-GET|
+++         PCL::OBSOLETE-INSTANCE-TRAP
++          PCL::|(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
++-         PCL::MAKE-METHOD-SPEC PCL::FLUSH-CACHE-TRAP WALKER::WALK-IF
++-         PCL::OPTIMIZE-SLOT-BOUNDP
++-         PCL::STANDARD-COMPUTE-EFFECTIVE-METHOD
++-         WALKER::WALK-MULTIPLE-VALUE-BIND
++-         ITERATE::RENAME-AND-CAPTURE-VARIABLES WALKER::WALK-LET*
++-         WALKER::WALK-DO*
++-         PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
++-         PCL::INVALIDATE-WRAPPER
++-         PCL::|(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
+++         WALKER::WALK-TAGBODY
+++         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++         PCL::ENTRY-IN-CACHE-P WALKER::WALK-COMPILER-LET
++          PCL::|(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
++-         PCL::MAKE-OPTIMIZED-STD-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
++-         ITERATE::SIMPLE-EXPAND-GATHERING-FORM PCL::ENTRY-IN-CACHE-P
++-         WALKER::WALK-LOCALLY PCL::OPTIMIZE-SLOT-VALUE
+++         PCL::NOTE-PV-TABLE-REFERENCE PCL::COMPUTE-EFFECTIVE-METHOD
+++         PCL::MAKE-DFUN-CALL PCL::|SETF PCL PLIST-VALUE|
+++         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
+++         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
+++         PCL::|(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
+++         PCL::|(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++         WALKER::WALK-UNEXPECTED-DECLARE
++          PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL
+++         PCL::SKIP-FAST-SLOT-ACCESS-P PCL::SET-FUNCTION-NAME-1
+++         WALKER::WALK-DO PCL::EMIT-1-T-DLAP PCL::PRINT-STD-INSTANCE
+++         PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
+++         WALKER::WALK-LAMBDA PCL::MAKE-METHOD-SPEC
+++         PCL::|(FAST-METHOD CLASS-PREDICATE-NAME (T))|
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
+++         PCL::OPTIMIZE-SET-SLOT-VALUE
+++         PCL::MAKE-OPTIMIZED-STD-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::EXPAND-DEFGENERIC WALKER::VARIABLE-DECLARATION
+++         ITERATE::RENAME-AND-CAPTURE-VARIABLES
+++         PCL::|(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
+++         PCL::MAP-ALL-ORDERS
+++         PCL::|(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
+++         PCL::DECLARE-STRUCTURE WALKER::WALK-PROG
+++         PCL::|(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
+++         PCL::OPTIMIZE-SLOT-VALUE WALKER::WALK-MULTIPLE-VALUE-BIND
++          PCL::|(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
+++         PCL::STANDARD-COMPUTE-EFFECTIVE-METHOD WALKER::WALK-LOCALLY
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
+++         WALKER::WALK-DO*
++          PCL::|(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::MAKE-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::EMIT-BOUNDP-CHECK WALKER::RECONS
+++         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
+++         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
+++         WALKER::WALK-LET* WALKER::WALK-TAGBODY-1 PCL::FLUSH-CACHE-TRAP
+++         WALKER::WALK-FLET
+++         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
+++         PCL::PRINT-CACHE
++          PCL::|(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
++-         PCL::TRACE-EMF-CALL-INTERNAL WALKER::WALK-SYMBOL-MACROLET
++-         PCL::|(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
++-         PCL::CONVERT-TABLE
+++         PCL::INVALIDATE-WRAPPER PCL::GET-NEW-FUNCTION-GENERATOR
+++         ITERATE::OPTIMIZE-ITERATE-FORM WALKER::RELIST-INTERNAL
+++         PCL::CAN-OPTIMIZE-ACCESS PCL::MAKE-TOP-LEVEL-FORM
++          PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
+++         WALKER::WALK-MULTIPLE-VALUE-SETQ WALKER::WALK-LABELS
+++         PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
+++         PCL::|(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
+++         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
+++         WALKER::WALK-SETQ  WALKER::WALK-LET
+++         PCL::|SETF PCL METHOD-FUNCTION-GET| WALKER::WALK-IF
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
+++         ITERATE::SIMPLE-EXPAND-GATHERING-FORM
+++         PCL::|(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
+++         WALKER::WALK-NAMED-LAMBDA PCL::FIRST-FORM-TO-LISP
+++         PCL::ONE-CLASS-DFUN-INFO
+++         WALKER::WITH-AUGMENTED-ENVIRONMENT-INTERNAL
+++         PCL::EMIT-GREATER-THAN-1-DLAP PCL::CONVERT-TABLE
+++         PCL::|(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
++          PCL::INITIALIZE-INTERNAL-SLOT-GFS*
+++         ITERATE::OPTIMIZE-GATHERING-FORM
+++         PCL::|(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
+++         PCL::OPTIMIZE-SLOT-BOUNDP
+++         PCL::|(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
+++         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
+++         PCL::WRAP-METHOD-GROUP-SPECIFIER-BINDINGS
+++         WALKER::WALK-SYMBOL-MACROLET ITERATE::VARIABLE-SAME-P
+++         PCL::EMIT-SLOT-READ-FORM
+++         PCL::SKIP-OPTIMIZE-SLOT-VALUE-BY-CLASS-P
+++         PCL::|(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
+++         PCL::GET-FUNCTION-GENERATOR
+++         PCL::MAKE-OPTIMIZED-STD-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
+++         PCL::FIX-SLOT-ACCESSORS
++          PCL::|(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD CLASS-PREDICATE-NAME (T))|
++-         PCL::|(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
++-         PCL::MAKE-OPTIMIZED-STD-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++          PCL::|(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
++-         PCL::|(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
++-         PCL::|(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
++-         WALKER::WALK-SETQ PCL::EXPAND-DEFGENERIC
++-         PCL::|(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
++-         ITERATE::OPTIMIZE-GATHERING-FORM PCL::FIX-SLOT-ACCESSORS
++-         PCL::EMIT-SLOT-READ-FORM WALKER::WALK-PROG
++-         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
++-         WALKER::WALK-NAMED-LAMBDA PCL::GET-NEW-FUNCTION-GENERATOR
++-         PCL::|(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-         WALKER::WALK-TAGBODY
++-         PCL::|(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
++-         WALKER::WALK-COMPILER-LET PCL::DECLARE-STRUCTURE
++-         WALKER::WALK-LET ITERATE::VARIABLE-SAME-P
++-         PCL::|(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
++-         PCL::EMIT-1-T-DLAP PCL::MAKE-DFUN-CALL
++-         PCL::COMPUTE-EFFECTIVE-METHOD PCL::SORT-METHODS
++-         WALKER::WALK-TAGBODY-1
+++         PCL::OPTIMIZE-GF-CALL-INTERNAL
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
++          PCL::|(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
+++         PCL::|(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
+++         PCL::|(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
++          PCL::|(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-         PCL::|(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
++-         PCL::MAKE-TOP-LEVEL-FORM
++-         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
++-         WALKER::RECONS)) 
+++         PCL::|(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++         WALKER::WALK-PROG* PCL::ONE-INDEX-DFUN-INFO
+++         PCL::COMPUTE-PRECEDENCE PCL::TRACE-EMF-CALL-INTERNAL
+++         WALKER::WALK-MACROLET)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::MAKE-DEFMETHOD-FORM-INTERNAL PCL::LOAD-DEFMETHOD
+++         PCL::EARLY-MAKE-A-METHOD PCL::MAKE-DEFMETHOD-FORM)) 
+++(COMMON-LISP::PROCLAIM
+++    '(COMMON-LISP::FTYPE
+++         (COMMON-LISP::FUNCTION
+++             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++             COMMON-LISP::T)
+++         PCL::GET-EFFECTIVE-METHOD-FUNCTION1
+++         PCL::ENSURE-GENERIC-FUNCTION-USING-CLASS
+++         PCL::MAKE-EMF-FROM-METHOD
+++         PCL::REAL-ENSURE-GF-USING-CLASS--NULL PCL::PROBE-CACHE
+++         PCL::MAP-CACHE PCL::GET-DECLARATION
+++         PCL::REAL-ENSURE-GF-USING-CLASS--GENERIC-FUNCTION
+++         WALKER::CONVERT-MACRO-TO-LAMBDA
+++         PCL::EXPAND-EFFECTIVE-METHOD-FUNCTION PCL::EMIT-MISS
+++         PCL::GET-METHOD-FUNCTION-PV-CELL PCL::METHOD-FUNCTION-GET
+++         PCL::FIND-CLASS-FROM-CELL PCL::RECORD-DEFINITION
+++         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION1
+++         PCL::FIND-CLASS-PREDICATE-FROM-CELL
+++         PCL::NAMED-OBJECT-PRINT-FUNCTION
+++         PCL::PRECOMPUTE-EFFECTIVE-METHODS PCL::INITIALIZE-INFO
+++         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
++-         PCL::UPDATE-SLOTS-IN-PV PCL::MAKE-INSTANCE-FUNCTION-COMPLEX
++-         PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
+++         PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL1
++          PCL::GET-MAKE-INSTANCE-FUNCTION-INTERNAL
++-         PCL::|(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
++-         PCL::MAKE-INSTANCE-FUNCTION-SIMPLE
++-         PCL::|(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
++-         PCL::COMPUTE-PV-SLOT PCL::MAKE-METHOD-INITARGS-FORM-INTERNAL1
++-         PCL::|(FAST-METHOD SLOT-UNBOUND (T T T))|
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
++-         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
++-         PCL::OPTIMIZE-INSTANCE-ACCESS
++-         PCL::|(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS1 PCL::MAKE-EMF-CACHE
+++         PCL::|(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
+++         PCL::MAKE-FGEN
++          PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
++-         PCL::REAL-MAKE-METHOD-INITARGS-FORM
+++         PCL::BOOTSTRAP-MAKE-SLOT-DEFINITIONS
+++         PCL::|(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::OPTIMIZE-ACCESSOR-CALL
+++         PCL::MAKE-INSTANCE-FUNCTION-COMPLEX PCL::UPDATE-SLOTS-IN-PV
+++         PCL::COMPUTE-PV-SLOT
++          PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
+++         PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
+++         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
++          PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T T))|
+++         PCL::OPTIMIZE-INSTANCE-ACCESS
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
+++         PCL::MAKE-INSTANCE-FUNCTION-SIMPLE
+++         PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++         PCL::OPTIMIZE-GENERIC-FUNCTION-CALL
+++         PCL::LOAD-FUNCTION-GENERATOR WALKER::WALK-BINDINGS-1
++          PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
++-         PCL::MAKE-FINAL-ORDINARY-DFUN-INTERNAL
++-         PCL::BOOTSTRAP-MAKE-SLOT-DEFINITIONS
++-         PCL::|(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
+++         PCL::REAL-MAKE-METHOD-INITARGS-FORM
+++         PCL::|(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
+++         PCL::|(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
+++         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
+++         WALKER::WALK-TEMPLATE-HANDLE-REPEAT
++          PCL::MAKE-PARAMETER-REFERENCES
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
+++         PCL::|(FAST-METHOD SLOT-UNBOUND (T T T))|
++          PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
+++         PCL::EXPAND-EMF-CALL-METHOD
+++         PCL::|(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
+++         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
++          PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
++          PCL::|(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::OPTIMIZE-ACCESSOR-CALL
++-         WALKER::WALK-TEMPLATE-HANDLE-REPEAT WALKER::WALK-BINDINGS-1
++          PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
++-         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS1
++-         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::MAKE-FGEN
++-         PCL::|(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
++-         PCL::|(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
++-         PCL::OPTIMIZE-GENERIC-FUNCTION-CALL
++-         PCL::LOAD-FUNCTION-GENERATOR PCL::MAKE-EMF-CACHE
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
++-         PCL::|(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::EXPAND-EMF-CALL-METHOD)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::EXPAND-DEFMETHOD PCL::LOAD-DEFMETHOD-INTERNAL)) 
+++         PCL::MAKE-FINAL-ORDINARY-DFUN-INTERNAL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::*)
++              COMMON-LISP::T)
++-         PCL::FILL-CACHE PCL::CAN-OPTIMIZE-ACCESS1 PCL::MAKE-EMF-CALL
+++         PCL::GET-METHOD WALKER::WALK-ARGLIST PCL::REAL-GET-METHOD
++          PCL::EMIT-FETCH-WRAPPER PCL::CHECK-INITARGS-2-LIST
++-         PCL::GET-METHOD PCL::CHECK-INITARGS-2-PLIST
++-         PCL::CHECK-INITARGS-1 PCL::REAL-GET-METHOD
++-         WALKER::WALK-ARGLIST)) 
+++         PCL::FILL-CACHE PCL::CHECK-INITARGS-2-PLIST PCL::MAKE-EMF-CALL
+++         PCL::CHECK-INITARGS-1 PCL::CAN-OPTIMIZE-ACCESS1)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++@@ -605,394 +778,250 @@
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::LOAD-DEFMETHOD PCL::MAKE-DEFMETHOD-FORM
++-         PCL::EARLY-MAKE-A-METHOD PCL::MAKE-DEFMETHOD-FORM-INTERNAL)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++              COMMON-LISP::T)
+++         PCL::REAL-LOAD-DEFCLASS PCL::LOAD-DEFCLASS PCL::SET-ARG-INFO1
+++         PCL::BOOTSTRAP-MAKE-SLOT-DEFINITION PCL::EMIT-SLOT-ACCESS
+++         WALKER::WALK-TEMPLATE-HANDLE-REPEAT-1 PCL::OPTIMIZE-GF-CALL
++          PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::SET-ARG-INFO1 PCL::BOOTSTRAP-MAKE-SLOT-DEFINITION
++-         PCL::LOAD-DEFCLASS PCL::REAL-LOAD-DEFCLASS
++-         PCL::OPTIMIZE-GF-CALL WALKER::WALK-TEMPLATE-HANDLE-REPEAT-1
++-         PCL::EMIT-SLOT-ACCESS PCL::MAKE-EARLY-CLASS-DEFINITION)) 
+++         PCL::MAKE-EARLY-CLASS-DEFINITION)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
+++                 COMMON-LISP::FIXNUM)
++              COMMON-LISP::T)
++-         PCL::EMIT-DLAP PCL::GET-SECONDARY-DISPATCH-FUNCTION1)) 
+++         PCL::GET-CACHE PCL::FILL-CACHE-FROM-CACHE-P)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::EARLY-ADD-NAMED-METHOD PCL::FILL-DFUN-CACHE
++-         PCL::REAL-ADD-NAMED-METHOD)) 
+++             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::*)
+++             COMMON-LISP::FIXNUM)
+++         PCL::COMPUTE-PRIMARY-CACHE-LOCATION-FROM-LOCATION)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::BOOTSTRAP-INITIALIZE-CLASS)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
+++         PCL::EVAL-FORM PCL::EARLY-CLASS-NAME-OF PCL::DFUN-INFO-CACHE
+++         PCL::MAKE-CONSTANT-FUNCTION PCL::EXPAND-SHORT-DEFCOMBIN
+++         PCL::COPY-CACHE PCL::PROCLAIM-INCOMPATIBLE-SUPERCLASSES
+++         PCL::MAKE-INITIAL-DFUN PCL::ECD-METACLASS
+++         PCL::EXTRACT-SPECIALIZER-NAMES PCL::GBOUNDP
+++         PCL::GET-SETF-FUNCTION-NAME PCL::USE-CACHING-DFUN-P
+++         PCL::INITIALIZE-INFO-CACHED-CONSTANTS
+++         PCL::STRUCTURE-TYPE-INTERNAL-SLOTDS COMMON-LISP::CLASS-OF
+++         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-NIL-FUNCTION
+++         PCL::ARG-INFO-KEY/REST-P PCL::METHOD-CALL-CALL-METHOD-ARGS
+++         PCL::FGEN-GENSYMS PCL::EARLY-CLASS-PRECEDENCE-LIST
+++         PCL::EARLY-SLOT-DEFINITION-LOCATION
+++         PCL::EXPAND-MAKE-INSTANCE-FORM PCL::INTERN-EQL-SPECIALIZER
+++         PCL::METHOD-FUNCTION-METHOD PCL::FGEN-GENERATOR-LAMBDA
+++         PCL::SLOT-READER-SYMBOL PCL::CACHING-P
+++         PCL::EARLY-METHOD-QUALIFIERS
+++         PCL::EARLY-COLLECT-DEFAULT-INITARGS PCL::KEYWORD-SPEC-NAME
+++         PCL::ONE-INDEX-P PCL::COMPLICATED-INSTANCE-CREATION-METHOD
+++         PCL::DFUN-ARG-SYMBOL PCL::N-N-CACHE
+++         PCL::ONE-INDEX-DFUN-INFO-INDEX PCL::INITIAL-DISPATCH-CACHE
+++         PCL::CPD-CLASS PCL::FAST-METHOD-CALL-ARG-INFO
+++         PCL::MAKE-PV-TYPE-DECLARATION PCL::COMPUTE-STD-CPL-PHASE-2
+++         PCL::GET-BUILT-IN-CLASS-SYMBOL
+++         PCL::INITIALIZE-INFO-CACHED-RI-VALID-P
+++         PCL::UPDATE-GFS-OF-CLASS PCL::STRUCTURE-SVUC-METHOD
+++         PCL::SLOT-BOUNDP-SYMBOL PCL::FGEN-SYSTEM
+++         PCL::FIND-CYCLE-REASONS ITERATE::SEQUENCE-ACCESSOR
+++         PCL::GF-INFO-C-A-M-EMF-STD-P PCL::STRUCTURE-TYPE-P
+++         PCL::TWO-CLASS-CACHE PCL::METHOD-LL->GENERIC-FUNCTION-LL
+++         PCL::ONE-CLASS-ACCESSOR-TYPE PCL::WRAPPER-FOR-STRUCTURE
+++         PCL::ACCESSOR-DFUN-INFO-CACHE PCL::%SYMBOL-FUNCTION
+++         PCL::STRUCTURE-TYPE PCL::NET-TEST-CONVERTER
+++         PCL::CONSTANT-SYMBOL-P PCL::GMAKUNBOUND PCL::INITIAL-P
+++         PCL::GF-DFUN-CACHE PCL::STRUCTURE-SLOTD-TYPE
+++         PCL::%STD-INSTANCE-WRAPPER PCL::INITIALIZE-INFO-P
+++         PCL::CACHING-DFUN-INFO
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::FAST-METHOD-CALL-P PCL::GF-DFUN-INFO
+++         PCL::INITIALIZE-INFO-BOUND-SLOTS PCL::ECD-CLASS-NAME
+++         PCL::MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::INITIALIZE-INFO-CACHED-DEFAULT-INITARGS-FUNCTION
+++         PCL::STD-INSTANCE-P PCL::EXTRACT-PARAMETERS
+++         WALKER::GET-WALKER-TEMPLATE PCL::SYMBOL-PKG-NAME
+++         PCL::CCLOSUREP PCL::LOOKUP-FGEN PCL::CPD-SUPERS
+++         PCL::ARG-INFO-KEYWORDS PCL::DISPATCH-P
+++         PCL::INITIALIZE-INFO-CACHED-NEW-KEYS
+++         PCL::MAKE-CALLS-TYPE-DECLARATION PCL::INITIALIZE-INFO-WRAPPER
+++         PCL::%FBOUNDP PCL::DEFAULT-STRUCTURE-INSTANCE-P
+++         WALKER::ENV-WALK-FORM PCL::EARLY-CLASS-DEFINITION
+++         PCL::SORT-CALLS PCL::EARLY-METHOD-STANDARD-ACCESSOR-SLOT-NAME
+++         PCL::DISPATCH-CACHE PCL::INITIALIZE-INFO-KEY
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SLOT-BOUNDP-USING-CLASS-METHOD-FUNCTION
+++         PCL::ARG-INFO-METATYPES PCL::GF-LAMBDA-LIST
+++         WALKER::ENV-LEXICAL-VARIABLES PCL::ACCESSOR-DFUN-INFO-P
+++         PCL::GF-PRECOMPUTE-DFUN-AND-EMF-P PCL::COMPUTE-LINE-SIZE
+++         PCL::INITIALIZE-INFO-CACHED-SHARED-INITIALIZE-T-FUNCTION
+++         PCL::FORCE-CACHE-FLUSHES PCL::TWO-CLASS-P PCL::DFUN-INFO-P
+++         PCL::MAP-SPECIALIZERS PCL::MAKE-PERMUTATION-VECTOR
+++         WALKER::ENV-LOCK PCL::CPD-AFTER PCL::EARLY-CLASS-SLOTS
+++         PCL::GET-PV-CELL-FOR-CLASS PCL::ARG-INFO-P
+++         PCL::EXTRACT-REQUIRED-PARAMETERS
+++         PCL::STRUCTURE-SLOTD-READER-FUNCTION PCL::COMPUTE-CLASS-SLOTS
+++         PCL::INFORM-TYPE-SYSTEM-ABOUT-STD-CLASS
+++         PCL::TWO-CLASS-WRAPPER0
+++         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::COMPILE-LAMBDA-UNCOMPILED PCL::EARLY-CLASS-NAME
+++         PCL::SFUN-P PCL::EXTRACT-LAMBDA-LIST PCL::UNDEFMETHOD-1
+++         PCL::ONE-INDEX-DFUN-INFO-ACCESSOR-TYPE PCL::WRAPPER-OF
+++         PCL::ARG-INFO-LAMBDA-LIST PCL::LIST-DFUN
+++         PCL::NEXT-WRAPPER-FIELD PCL::CHECK-WRAPPER-VALIDITY
+++         PCL::STRUCTURE-SLOTD-NAME PCL::BUILT-IN-WRAPPER-OF
+++         PCL::GET-MAKE-INSTANCE-FUNCTIONS
+++         PCL::GENERIC-CLOBBERS-FUNCTION PCL::NO-METHODS-P
+++         PCL::CONSTANT-VALUE-P WALKER::ENV-WALK-FUNCTION
+++         PCL::INITIAL-CACHE PCL::SLOT-INITARGS-FROM-STRUCTURE-SLOTD
+++         PCL::MAKE-CLASS-EQ-PREDICATE
+++         PCL::GET-MAKE-INSTANCE-FUNCTION-SYMBOL
+++         PCL::BOOTSTRAP-ACCESSOR-DEFINITIONS
+++         PCL::FUNCTION-PRETTY-ARGLIST
+++         PCL::MAKE-OPTIMIZED-STRUCTURE-SETF-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
+++         PCL::FTYPE-DECLARATION-FROM-LAMBDA-LIST PCL::TYPE-CLASS
+++         PCL::CHECK-CACHE PCL::STANDARD-SVUC-METHOD
+++         PCL::STRUCTURE-SLOTD-ACCESSOR-SYMBOL PCL::GF-INFO-FAST-MF-P
+++         PCL::STRUCTURE-SLOTD-WRITER-FUNCTION
+++         PCL::BOOTSTRAP-CLASS-PREDICATES PCL::DEFAULT-METHOD-ONLY-CACHE
+++         PCL::GET-CACHE-VECTOR PCL::SLOT-WRITER-SYMBOL
+++         PCL::FGEN-GENERATOR PCL::DNET-METHODS-P
+++         PCL::DEFAULT-STRUCTURE-TYPE
+++         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITARGS-FORM-LIST
+++         PCL::N-N-ACCESSOR-TYPE
+++         PCL::STRUCTURE-TYPE-SLOT-DESCRIPTION-LIST
+++         WALKER::ENV-DECLARATIONS WALKER::VARIABLE-GLOBALLY-SPECIAL-P
+++         PCL::ONE-INDEX-INDEX PCL::ONE-INDEX-DFUN-INFO-CACHE
+++         PCL::EARLY-ACCESSOR-METHOD-SLOT-NAME PCL::EARLY-CLASS-SLOTDS
+++         PCL::CANONICAL-SLOT-NAME PCL::EARLY-COLLECT-CPL
+++         PCL::RESET-CLASS-INITIALIZE-INFO-1
+++         PCL::BUILT-IN-OR-STRUCTURE-WRAPPER1 PCL::ONE-INDEX-CACHE
+++         PCL::MAKE-STRUCTURE-SLOT-BOUNDP-FUNCTION
+++         PCL::MAKE-TYPE-PREDICATE PCL::FREE-CACHE
+++         ITERATE::VARIABLES-FROM-LET
+++         PCL::EARLY-METHOD-STANDARD-ACCESSOR-P
+++         PCL::DEFAULT-CONSTANT-CONVERTER PCL::CLASS-PREDICATE
+++         PCL::CHECKING-CACHE PCL::ARG-INFO-PRECEDENCE
+++         PCL::METHOD-FUNCTION-NEEDS-NEXT-METHODS-P
+++         PCL::DEFAULT-METHOD-ONLY-P
+++         PCL::COMPUTE-APPLICABLE-METHODS-EMF-STD-P
+++         PCL::STRUCTURE-SLOT-BOUNDP PCL::ONE-INDEX-ACCESSOR-TYPE
+++         PCL::TWO-CLASS-ACCESSOR-TYPE
+++         PCL::USE-DEFAULT-METHOD-ONLY-DFUN-P PCL::METHOD-CALL-P
+++         PCL::UPDATE-CLASS-CAN-PRECEDE-P PCL::CONSTANT-VALUE-DFUN-INFO
+++         PCL::COMPILE-LAMBDA-DEFERRED PCL::SETFBOUNDP
+++         PCL::CLASS-HAS-A-FORWARD-REFERENCED-SUPERCLASS-P
+++         PCL::PV-TABLEP PCL::STRUCTURE-OBJECT-P PCL::TWO-CLASS-INDEX
+++         PCL::METHOD-FUNCTION-PV-TABLE PCL::ECD-OTHER-INITARGS
+++         WALKER::GET-IMPLEMENTATION-DEPENDENT-WALKER-TEMPLATE
+++         PCL::EARLY-GF-P PCL::STRUCTURE-SLOTD-INIT-FORM
+++         PCL::FUNCALLABLE-INSTANCE-P PCL::CHECKING-FUNCTION
+++         PCL::FUNCTION-RETURNING-NIL PCL::FUNCTION-RETURNING-T
+++         PCL::UPDATE-C-A-M-GF-INFO PCL::COUNT-DFUN
+++         PCL::UNPARSE-SPECIALIZERS PCL::CACHE-OWNER
+++         PCL::EARLY-METHOD-CLASS
+++         PCL::INITIALIZE-INFO-CACHED-COMBINED-INITIALIZE-FUNCTION
+++         PCL::EARLY-SLOT-DEFINITION-NAME
+++         PCL::GET-MAKE-INSTANCE-FUNCTION
+++         PCL::STRUCTURE-TYPE-INCLUDED-TYPE-NAME
+++         PCL::ECD-SUPERCLASS-NAMES PCL::GFS-OF-TYPE PCL::SORT-SLOTS
+++         PCL::DO-STANDARD-DEFSETFS-FOR-DEFCLASS
+++         PCL::COMPUTE-MCASE-PARAMETERS PCL::METHOD-FUNCTION-PLIST
+++         PCL::ARG-INFO-NKEYS PCL::FINAL-ACCESSOR-DFUN-TYPE
+++         PCL::EARLY-COLLECT-SLOTS PCL::EARLY-METHOD-LAMBDA-LIST
+++         PCL::FAST-INSTANCE-BOUNDP-P PCL::GDEFINITION
+++         PCL::%CCLOSURE-ENV SYSTEM::%COMPILED-FUNCTION-NAME
+++         PCL::RESET-INITIALIZE-INFO PCL::ARG-INFO-NUMBER-OPTIONAL
+++         PCL::RESET-CLASS-INITIALIZE-INFO
+++         PCL::INITIALIZE-INFO-CACHED-VALID-P PCL::INTERNED-SYMBOL-P
+++         PCL::EARLY-GF-NAME PCL::FGEN-TEST PCL::MAKE-INITFUNCTION
+++         PCL::MAP-ALL-GENERIC-FUNCTIONS PCL::SHOW-DFUN-COSTS
+++         PCL::CLASS-FROM-TYPE PCL::EXPAND-LONG-DEFCOMBIN
+++         PCL::MAKE-DEFAULT-METHOD-GROUP-DESCRIPTION
+++         PCL::FREE-CACHE-VECTOR PCL::%STD-INSTANCE-SLOTS
+++         PCL::ALLOCATE-CACHE-VECTOR PCL::ONE-CLASS-P
+++         PCL::CLASS-PRECEDENCE-DESCRIPTION-P PCL::SLOT-VECTOR-SYMBOL
+++         PCL::INITIALIZE-INFO-CACHED-MAKE-INSTANCE-FUNCTION
+++         PCL::ONE-CLASS-WRAPPER0 PCL::N-N-P
+++         PCL::UPDATE-ALL-C-A-M-GF-INFO PCL::CHECKING-P
+++         PCL::TWO-CLASS-WRAPPER1 PCL::PARSE-SPECIALIZERS
+++         PCL::FORMAT-CYCLE-REASONS PCL::FLUSH-CACHE-VECTOR-INTERNAL
+++         PCL::UNENCAPSULATED-FDEFINITION PCL::ONE-CLASS-INDEX
+++         PCL::DEFAULT-CONSTANTP PCL::UPDATE-GF-INFO
+++         PCL::ACCESSOR-DFUN-INFO-ACCESSOR-TYPE
+++         PCL::INITIALIZE-INFO-CACHED-INITARGS-FORM-LIST
+++         PCL::MAKE-EQL-PREDICATE PCL::ARG-INFO-VALID-P
+++         PCL::CACHING-CACHE PCL::METHOD-FUNCTION-FROM-FAST-FUNCTION
+++         PCL::FAST-METHOD-CALL-NEXT-METHOD-CALL
+++         PCL::DEFAULT-SECONDARY-DISPATCH-FUNCTION
+++         PCL::MAKE-FUNCTION-INLINE PCL::STORE-FGEN
+++         PCL::LIST-LARGE-CACHE PCL::METHODS-CONTAIN-EQL-SPECIALIZER-P
+++         PCL::ARG-INFO-APPLYP SYSTEM::%STRUCTURE-NAME
+++         PCL::GF-INFO-SIMPLE-ACCESSOR-TYPE PCL::ECD-SOURCE
+++         PCL::EARLY-CLASS-DIRECT-SUBCLASSES
+++         PCL::UPDATE-PV-TABLE-CACHE-INFO PCL::DEFAULT-TEST-CONVERTER
+++         PCL::MAKE-CALL-METHODS PCL::GET-BUILT-IN-WRAPPER-SYMBOL
+++         PCL::GF-INFO-STATIC-C-A-M-EMF PCL::DEFAULT-STRUCTUREP
+++         PCL::CONSTANT-VALUE-CACHE PCL::INITIAL-DISPATCH-P
+++         PCL::ECD-CANONICAL-SLOTS PCL::WRAPPER-FIELD
+++         PCL::UPDATE-GF-SIMPLE-ACCESSOR-TYPE PCL::ONE-CLASS-CACHE
+++         PCL::CACHING-DFUN-COST PCL::LEGAL-CLASS-NAME-P
+++         PCL::INTERN-FUNCTION-NAME PCL::FAST-METHOD-CALL-PV-CELL
+++         PCL::CACHE-P PCL::ONE-INDEX-DFUN-INFO-P
+++         PCL::MAKE-PV-TABLE-TYPE-DECLARATION PCL::NO-METHODS-CACHE)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::FIXNUM)
++-             COMMON-LISP::T)
++-         PCL::COMPUTE-STD-CPL-PHASE-3)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::*)
+++         PCL::UPDATE-MAKE-INSTANCE-FUNCTION-TABLE PCL::UNTRACE-METHOD
+++         COMMON-LISP::METHOD-COMBINATION-ERROR
+++         COMMON-LISP::INVALID-METHOD-ERROR PCL::LIST-LARGE-CACHES)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::FIXNUM)
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++              COMMON-LISP::T)
++-         PCL::FILL-CACHE-FROM-CACHE-P PCL::GET-CACHE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::LIST)
++-         PCL::PV-TABLE-CALL-LIST PCL::CACHE-OVERFLOW
++-         PCL::PV-TABLE-SLOT-NAME-LISTS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::FIXNUM COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::COMPUTE-CACHE-PARAMETERS)) 
+++         PCL::EMIT-DLAP PCL::GET-SECONDARY-DISPATCH-FUNCTION1)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::FIXNUM COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         PCL::FIND-FREE-CACHE-LINE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::BOOLEAN)
++-         PCL::CACHE-VALUEP)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::*)
++-         PCL::DEFAULT-CODE-CONVERTER PCL::EMIT-IN-CHECKING-CACHE-P
++-         PCL::METHOD-PROTOTYPE-FOR-GF PCL::EMIT-TWO-CLASS-WRITER
++-         PCL::PARSE-METHOD-GROUP-SPECIFIER PCL::EMIT-ONE-CLASS-WRITER
++-         PCL::EMIT-ONE-INDEX-WRITERS PCL::FIND-STRUCTURE-CLASS
++-         PCL::PROTOTYPES-FOR-MAKE-METHOD-LAMBDA PCL::MAKE-DISPATCH-DFUN
++-         PCL::COMPUTE-APPLICABLE-METHODS-EMF PCL::EARLY-METHOD-FUNCTION
++-         PCL::NET-CODE-CONVERTER PCL::GET-DISPATCH-FUNCTION
++-         PCL::STRUCTURE-WRAPPER PCL::FIND-WRAPPER PCL::CLASS-EQ-TYPE
++-         PCL::TYPE-FROM-SPECIALIZER PCL::SPECIALIZER-FROM-TYPE
++-         PCL::PCL-DESCRIBE PCL::PARSE-DEFMETHOD
++-         PCL::ANALYZE-LAMBDA-LIST PCL::EMIT-ONE-CLASS-READER
++-         PCL::EARLY-COLLECT-INHERITANCE PCL::GET-GENERIC-FUNCTION-INFO
++-         PCL::COMPILE-IIS-FUNCTIONS PCL::EMIT-CONSTANT-VALUE
++-         PCL::EMIT-ONE-INDEX-READERS PCL::GENERIC-FUNCTION-NAME-P
++-         PCL::CONVERT-TO-SYSTEM-TYPE PCL::MAKE-FINAL-DISPATCH-DFUN
++-         PCL::EMIT-TWO-CLASS-READER PCL::*NORMALIZE-TYPE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::*) COMMON-LISP::T)
++-         PCL::|__si::MAKE-CLASS-PRECEDENCE-DESCRIPTION|
++-         PCL::MAKE-FAST-INSTANCE-BOUNDP PCL::MAKE-INITIALIZE-INFO
++-         PCL::|STRUCTURE-OBJECT class constructor|
++-         PCL::|__si::MAKE-CACHE| PCL::|__si::MAKE-DEFAULT-METHOD-ONLY|
++-         PCL::TRUE PCL::|__si::MAKE-PV-TABLE|
++-         PCL::|__si::MAKE-ONE-INDEX| WALKER::UNBOUND-LEXICAL-FUNCTION
++-         PCL::|__si::MAKE-CHECKING| PCL::MAKE-PV-TABLE
++-         PCL::|__si::MAKE-NO-METHODS| PCL::MAKE-METHOD-CALL
++-         PCL::CALLED-FIN-WITHOUT-FUNCTION PCL::USE-PACKAGE-PCL
++-         PCL::INTERN-PV-TABLE PCL::|__si::MAKE-ACCESSOR-DFUN-INFO|
++-         PCL::|__si::MAKE-DISPATCH|
++-         PCL::|__si::MAKE-ONE-INDEX-DFUN-INFO|
++-         PCL::|__si::MAKE-ARG-INFO| PCL::FIX-EARLY-GENERIC-FUNCTIONS
++-         PCL::ZERO PCL::MAKE-PROGN PCL::|__si::MAKE-INITIAL|
++-         PCL::|__si::MAKE-ONE-CLASS| PCL::|__si::MAKE-DFUN-INFO|
++-         PCL::|__si::MAKE-CONSTANT-VALUE|
++-         PCL::|__si::MAKE-STD-INSTANCE| PCL::PV-WRAPPERS-FROM-PV-ARGS
++-         PCL::|__si::MAKE-TWO-CLASS| PCL::|__si::MAKE-N-N|
++-         PCL::|__si::MAKE-CACHING| PCL::FALSE PCL::STRING-APPEND
++-         PCL::|__si::MAKE-INITIAL-DISPATCH| PCL::MAKE-FAST-METHOD-CALL)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::FIXNUM)
++-         PCL::ARG-INFO-NUMBER-REQUIRED PCL::PV-TABLE-PV-SIZE
++-         PCL::CACHE-COUNT PCL::PV-CACHE-LIMIT-FN PCL::CHECKING-LIMIT-FN
++-         PCL::CACHING-LIMIT-FN PCL::N-N-ACCESSORS-LIMIT-FN
++-         PCL::DEFAULT-LIMIT-FN PCL::EARLY-CLASS-SIZE PCL::CPD-COUNT
++-         PCL::ONE-INDEX-LIMIT-FN PCL::FAST-INSTANCE-BOUNDP-INDEX)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM) COMMON-LISP::T)
++-         PCL::POWER-OF-TWO-CEILING)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::*)
+++             (COMMON-LISP::T COMMON-LISP::T
+++                 (COMMON-LISP::INTEGER -9223372036854775808
+++                     9223372036854775807))
++              COMMON-LISP::T)
++-         PCL::MAKE-TYPE-PREDICATE-NAME PCL::MAKE-FINAL-DFUN
++-         PCL::CAPITALIZE-WORDS PCL::SET-DFUN ITERATE::MAYBE-WARN
++-         PCL::MAKE-EARLY-GF PCL::USE-DISPATCH-DFUN-P WALKER::RELIST
++-         PCL::MAKE-SPECIALIZABLE PCL::PV-TABLE-LOOKUP-PV-ARGS
++-         PCL::ALLOCATE-STANDARD-INSTANCE
++-         PCL::ALLOCATE-FUNCALLABLE-INSTANCE
++-         PCL::USE-CONSTANT-VALUE-DFUN-P ITERATE::FUNCTION-LAMBDA-P
++-         PCL::UPDATE-DFUN PCL::SET-ARG-INFO
++-         PCL::EARLY-METHOD-SPECIALIZERS PCL::MAKE-WRAPPER
++-         PCL::FIND-CLASS-CELL WALKER::WALKER-ENVIRONMENT-BIND-1
++-         PCL::TRACE-METHOD WALKER::RELIST* COMMON-LISP::FIND-CLASS
++-         PCL::INITIALIZE-INTERNAL-SLOT-GFS PCL::FIND-CLASS-PREDICATE
++-         PCL::INITIALIZE-METHOD-FUNCTION)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::SAUT-NOT PCL::INVOKE-EMF PCL::SAUT-PROTOTYPE
++-         PCL::COMPUTE-CODE ITERATE::PARSE-DECLARATIONS
++-         PCL::SDFUN-FOR-CACHING
++-         PCL::COMPUTE-APPLICABLE-METHODS-USING-TYPES
++-         PCL::GET-NEW-FUNCTION-GENERATOR-INTERNAL
++-         PCL::SLOT-NAME-LISTS-FROM-SLOTS PCL::DESTRUCTURE
++-         PCL::SPLIT-DECLARATIONS PCL::MAKE-DIRECT-SLOTD
++-         PCL::FORM-LIST-TO-LISP PCL::EMIT-CHECKING
++-         PCL::CPL-FORWARD-REFERENCED-CLASS-ERROR PCL::COMPUTE-TEST
++-         PCL::SET-FUNCTION-NAME COMMON-LISP::SLOT-BOUNDP PCL::SAUT-AND
++-         PCL::EMIT-CACHING PCL::INITIAL-DFUN
++-         COMMON-LISP::SLOT-MAKUNBOUND COMMON-LISP::SLOT-VALUE
++-         PCL::UPDATE-SLOT-VALUE-GF-INFO
++-         PCL::CLASS-APPLICABLE-USING-CLASS-P
++-         PCL::CPL-INCONSISTENT-ERROR PCL::*SUBTYPEP
++-         PCL::SLOT-UNBOUND-INTERNAL
++-         PCL::GENERATE-FAST-CLASS-SLOT-ACCESS-P
++-         PCL::CHECK-INITARGS-VALUES PCL::ENSURE-CLASS-VALUES
++-         PCL::SAUT-EQL PCL::REAL-REMOVE-METHOD PCL::EMIT-DEFAULT-ONLY
++-         PCL::INSURE-DFUN PCL::EMIT-DEFAULT-ONLY-FUNCTION
++-         PCL::MUTATE-SLOTS-AND-CALLS PCL::FIND-SUPERCLASS-CHAIN
++-         PCL::SAUT-CLASS PCL::MAKE-INSTANCE-FUNCTION-TRAP
++-         PCL::SAUT-CLASS-EQ PCL::COMPUTE-STD-CPL-PHASE-1
++-         PCL::SPECIALIZER-APPLICABLE-USING-TYPE-P)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::T)
++-             (COMMON-LISP::OR PCL::CACHE COMMON-LISP::NULL))
++-         PCL::PV-TABLE-CACHE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         WALKER::WALK-DECLARATIONS PCL::GET-SECONDARY-DISPATCH-FUNCTION
++-         PCL::MAKE-ONE-INDEX-ACCESSOR-DFUN)) 
+++         PCL::COMPUTE-STD-CPL-PHASE-3)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
+++                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::MAKE-SHARED-INITIALIZE-FORM-LIST PCL::ACCESSOR-MISS
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
++-         PCL::|(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
++-         PCL::|(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
++-         PCL::|(FAST-METHOD NO-APPLICABLE-METHOD (T))|
++-         PCL::SET-CLASS-SLOT-VALUE-1
++-         PCL::|(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
++-         PCL::|(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|
++-         PCL::GET-ACCESSOR-FROM-SVUC-METHOD-FUNCTION
++-         PCL::SETF-SLOT-VALUE-USING-CLASS-DFUN
++-         PCL::|(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
++-         PCL::EMIT-CHECKING-OR-CACHING-FUNCTION
++-         PCL::MAKE-FINAL-ONE-INDEX-ACCESSOR-DFUN
++-         PCL::LOAD-SHORT-DEFCOMBIN PCL::EMIT-CHECKING-OR-CACHING
++-         PCL::|(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
++-         PCL::MAKE-FINAL-CHECKING-DFUN
++-         PCL::|(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
++-         PCL::|(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
++-         PCL::ACCESSOR-VALUES
++-         PCL::|(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
++-         PCL::REAL-MAKE-METHOD-LAMBDA
++-         PCL::|(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++-         PCL::GET-ACCESSOR-METHOD-FUNCTION
++-         PCL::|(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
++-         PCL::|(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
++-         PCL::ORDER-SPECIALIZERS
++-         PCL::|(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
++-         PCL::GENERATE-DISCRIMINATION-NET
++-         PCL::|(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
++-         PCL::|(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
++-         PCL::MAKE-ONE-CLASS-ACCESSOR-DFUN
++-         PCL::|(FAST-METHOD DESCRIBE-OBJECT (T T))|
++-         PCL::BOOTSTRAP-ACCESSOR-DEFINITION
++-         PCL::INITIALIZE-INSTANCE-SIMPLE-FUNCTION)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::GET-OPTIMIZED-STD-ACCESSOR-METHOD-FUNCTION
++-         PCL::MAKE-OPTIMIZED-STD-WRITER-METHOD-FUNCTION
++-         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
++-         PCL::|(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
++-         PCL::|(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
++-         PCL::MAKE-OPTIMIZED-STD-BOUNDP-METHOD-FUNCTION
++-         PCL::CONVERT-METHODS WALKER::WALK-LET-IF
++-         PCL::EMIT-READER/WRITER-FUNCTION PCL::ACCESSOR-VALUES-INTERNAL
++-         PCL::|(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
++-         PCL::LOAD-LONG-DEFCOMBIN PCL::CHECK-METHOD-ARG-INFO
++-         PCL::ACCESSOR-VALUES1
++-         PCL::|(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
++-         PCL::GENERATING-LISP PCL::MAKE-FINAL-N-N-ACCESSOR-DFUN
++-         WALKER::WALK-FORM-INTERNAL PCL::CONSTANT-VALUE-MISS
++-         PCL::SLOT-VALUE-USING-CLASS-DFUN PCL::CACHING-MISS
++-         PCL::|(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
++-         PCL::SLOT-BOUNDP-USING-CLASS-DFUN PCL::CHECKING-MISS
++-         PCL::|(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
++-         PCL::EMIT-READER/WRITER ITERATE::EXPAND-INTO-LET
++-         PCL::GET-CLASS-SLOT-VALUE-1
++-         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER-FUNCTION
++-         PCL::MAKE-FINAL-CACHING-DFUN
++-         PCL::|(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
++-         PCL::|(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
++-         PCL::GET-OPTIMIZED-STD-SLOT-VALUE-USING-CLASS-METHOD-FUNCTION
++-         PCL::|(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
++-         PCL::OPTIMIZE-SLOT-VALUE-BY-CLASS-P PCL::SET-SLOT-VALUE
++-         PCL::EMIT-ONE-OR-N-INDEX-READER/WRITER
++-         ITERATE::RENAME-VARIABLES
++-         PCL::|(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
++-         PCL::|(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
++-         ITERATE::WALK-GATHERING-BODY PCL::CACHE-MISS-VALUES
++-         PCL::MAKE-OPTIMIZED-STD-READER-METHOD-FUNCTION
++-         PCL::MAKE-FINAL-CONSTANT-VALUE-DFUN)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::DO-SHORT-METHOD-COMBINATION PCL::MEMF-CODE-CONVERTER
++-         PCL::GENERATE-DISCRIMINATION-NET-INTERNAL
++-         PCL::|(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::MAKE-LONG-METHOD-COMBINATION-FUNCTION
++-         PCL::CACHE-MISS-VALUES-INTERNAL)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
++-         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
++-         PCL::ADD-METHOD-DECLARATIONS
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
++-         PCL::|(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
++-         PCL::COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO-INTERNAL
++-         PCL::|(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
++-         PCL::|(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
++-         PCL::MAKE-TWO-CLASS-ACCESSOR-DFUN
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
++-         PCL::|(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
++-         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::|(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
++-         PCL::|(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
++-         PCL::|(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
++-         PCL::|(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-         PCL::WALK-METHOD-LAMBDA
++-         PCL::|(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|)) 
+++             COMMON-LISP::T)
+++         PCL::EXPAND-DEFMETHOD PCL::LOAD-DEFMETHOD-INTERNAL)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++          (COMMON-LISP::FUNCTION
++              (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         PCL::REAL-MAKE-A-METHOD)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         PCL::MAKE-DEFAULT-INITARGS-FORM-LIST
++-         PCL::GET-COMPLEX-INITIALIZATION-FUNCTIONS
++-         PCL::SLOT-VALUE-OR-DEFAULT
++-         PCL::GET-SIMPLE-INITIALIZATION-FUNCTION PCL::REAL-ADD-METHOD
++-         PCL::LOAD-DEFGENERIC PCL::CPL-ERROR
++-         PCL::MAKE-FINAL-ACCESSOR-DFUN PCL::MAKE-N-N-ACCESSOR-DFUN
++-         PCL::TYPES-FROM-ARGUMENTS PCL::MAKE-ACCESSOR-TABLE
++-         PCL::MAKE-CHECKING-DFUN WALKER::NESTED-WALK-FORM
++-         PCL::GET-EFFECTIVE-METHOD-FUNCTION
++-         PCL::COMPUTE-SECONDARY-DISPATCH-FUNCTION
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++                  COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T)
++-             COMMON-LISP::*)
++-         ITERATE::ITERATE-TRANSFORM-BODY
++-         PCL::|(FAST-METHOD SLOT-MISSING (T T T T))|
++-         PCL::|(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
++-                 COMMON-LISP::T COMMON-LISP::*)
++-             COMMON-LISP::*)
++-         PCL::MAKE-EFFECTIVE-METHOD-FUNCTION-SIMPLE1
++-         ITERATE::RENAME-LET-BINDINGS)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM COMMON-LISP::T)
++-             COMMON-LISP::FIXNUM)
++-         PCL::COMPUTE-PRIMARY-CACHE-LOCATION)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::FIXNUM COMMON-LISP::*)
++-             COMMON-LISP::T)
++-         PCL::COMPUTE-PRIMARY-CACHE-LOCATION-FROM-LOCATION
++-         PCL::GET-CACHE-FROM-CACHE)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION (COMMON-LISP::FIXNUM COMMON-LISP::T)
++-             COMMON-LISP::T)
++-         PCL::%CCLOSURE-ENV-NTHCDR)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION
++-             (COMMON-LISP::T COMMON-LISP::STREAM COMMON-LISP::T)
+++                 COMMON-LISP::*)
++              COMMON-LISP::T)
++-         PCL::PRINT-DFUN-INFO)) 
++-(COMMON-LISP::PROCLAIM
++-    '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::*)
++-         PCL::COUNT-ALL-DFUNS PCL::EMIT-N-N-WRITERS
++-         PCL::EMIT-N-N-READERS)) 
+++         PCL::BOOTSTRAP-INITIALIZE-CLASS)) 
++ (COMMON-LISP::PROCLAIM
++     '(COMMON-LISP::FTYPE
++-         (COMMON-LISP::FUNCTION COMMON-LISP::NIL COMMON-LISP::FIXNUM)
++-         PCL::GET-WRAPPER-CACHE-NUMBER)) 
+++         (COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::LIST)
+++         PCL::PV-TABLE-CALL-LIST PCL::CACHE-OVERFLOW
+++         PCL::PV-TABLE-SLOT-NAME-LISTS)) 
++ (IN-PACKAGE "PCL")
++ 
++-(DOLIST (V '(|(FAST-WRITER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-METHODS)|
+++(DOLIST (V '(|(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-METHODS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT SLOTS)|
++                 |(FAST-WRITER-METHOD SLOT-CLASS SLOTS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DIRECT-SLOTS)|
++                 |(FAST-WRITER-METHOD SLOT-CLASS DIRECT-SLOTS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT METHODS)|
++                 |(FAST-WRITER-METHOD STANDARD-GENERIC-FUNCTION METHODS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT OPTIONS)|
++@@ -1034,17 +1063,16 @@
++                 COMPATIBLE-META-CLASS-CHANGE-P
++                 |(FAST-READER-METHOD SLOT-OBJECT CLASS-EQ-SPECIALIZER)|
++                 |(FAST-READER-METHOD CLASS CLASS-EQ-SPECIALIZER)|
++-                |(BOUNDP READER-FUNCTION)| TRACE-METHOD-INTERNAL
++-                |(BOUNDP PREDICATE-NAME)| |(BOUNDP READERS)|
++-                UPDATE-GF-DFUN |(BOUNDP CLASS-PRECEDENCE-LIST)|
+++                |(BOUNDP READER-FUNCTION)| |(BOUNDP PREDICATE-NAME)|
+++                |(BOUNDP READERS)| UPDATE-GF-DFUN
+++                |(BOUNDP CLASS-PRECEDENCE-LIST)|
++                 |(BOUNDP ACCESSOR-FLAGS)| |(BOUNDP LOCATION)|
++                 |(BOUNDP DOCUMENTATION)| SPECIALIZER-OBJECT
++                 |(BOUNDP INCOMPATIBLE-SUPERCLASS-LIST)|
++                 ACCESSOR-METHOD-SLOT-NAME |(BOUNDP SPECIALIZERS)|
++                 |(BOUNDP IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DEFSTRUCT-ACCESSOR-SYMBOL)|
++-                REDEFINE-FUNCTION SPECIALIZER-CLASS
++-                |(BOUNDP PRETTY-ARGLIST)|
+++                SPECIALIZER-CLASS |(BOUNDP PRETTY-ARGLIST)|
++                 |PCL::PCL-CLASS class predicate|
++                 |PCL::STD-CLASS class predicate|
++                 |(BOUNDP DEFSTRUCT-FORM)|
++@@ -1082,104 +1110,104 @@
++                 |(BOUNDP OPTIONS)| |(WRITER METHOD)|
++                 |PCL::DEPENDENT-UPDATE-MIXIN class predicate|
++                 GENERIC-FUNCTION-PRETTY-ARGLIST |(WRITER SOURCE)|
+++                |(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
++                 |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER-WITH-OBJECT))|
++                 |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (SPECIALIZER-WITH-OBJECT))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
++                 |(FAST-METHOD UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (STANDARD-OBJECT STANDARD-OBJECT))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE (SLOT-OBJECT))|
++                 |(FAST-METHOD INITIALIZE-INSTANCE (SLOT-OBJECT))|
++-                |(FAST-METHOD SLOTS-TO-INSPECT (SLOT-CLASS SLOT-OBJECT))|
++-                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
++-                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
++                 |(FAST-METHOD SPECIALIZER-CLASS (EQL-SPECIALIZER))|
++-                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
++                 |(FAST-METHOD SAME-SPECIALIZER-P (EQL-SPECIALIZER EQL-SPECIALIZER))|
+++                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS-EQ-SPECIALIZER CLASS-EQ-SPECIALIZER))|
++                 |(FAST-METHOD SAME-SPECIALIZER-P (SPECIALIZER SPECIALIZER))|
+++                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (CLASS-EQ-SPECIALIZER))|
+++                |(FAST-METHOD SPECIALIZER-METHOD-TABLE (EQL-SPECIALIZER))|
++                 MAKE-BOUNDP-METHOD-FUNCTION
++                 |(FAST-METHOD (SETF DOCUMENTATION) (T DOCUMENTATION-MIXIN))|
++                 |(FAST-METHOD DOCUMENTATION (DOCUMENTATION-MIXIN))|
++                 |PCL::METAOBJECT class predicate|
++-                |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
+++                |(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
+++                |(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
+++                |(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
+++                |(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
++                 |(FAST-METHOD GENERIC-FUNCTION-PRETTY-ARGLIST (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
+++                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
++                 |(FAST-METHOD GENERIC-FUNCTION-LAMBDA-LIST (GENERIC-FUNCTION))|
+++                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
++                 |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-WRITER-METHOD))|
++-                |(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
++-                |(FAST-METHOD GF-FAST-METHOD-FUNCTION-P (STANDARD-GENERIC-FUNCTION))|
++                 |(FAST-METHOD ACCESSOR-METHOD-CLASS (STANDARD-ACCESSOR-METHOD))|
++-                |(FAST-METHOD METHOD-QUALIFIERS (STANDARD-METHOD))|
++-                |(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
+++                |(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
+++                |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
++                 |(FAST-METHOD REMOVE-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-                |(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
++                 |(FAST-METHOD ADD-DIRECT-METHOD (SPECIALIZER-WITH-OBJECT METHOD))|
++-                |(FAST-METHOD INITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
+++                |(FAST-METHOD REMOVE-DIRECT-METHOD (CLASS METHOD))|
++                 |(FAST-METHOD ADD-DIRECT-METHOD (CLASS METHOD))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE (STANDARD-METHOD))|
++-                |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD METHOD-FUNCTION (STANDARD-METHOD))|
++-                |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (SYMBOL))|
++-                |(FAST-METHOD METHOD-SPECIALIZERS (TRACED-METHOD))|
++-                |(FAST-METHOD METHOD-LAMBDA-LIST (TRACED-METHOD))|
++-                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD METHOD-PRETTY-ARGLIST (STANDARD-METHOD))|
++-                |(FAST-METHOD ACCESSOR-METHOD-SLOT-NAME (TRACED-METHOD))|
++-                |(FAST-METHOD COMPUTE-DISCRIMINATING-FUNCTION-ARGLIST-INFO (STANDARD-GENERIC-FUNCTION))|
++-                |(FAST-METHOD METHOD-QUALIFIERS (TRACED-METHOD))|
++-                |(FAST-METHOD FUNCTION-KEYWORDS (STANDARD-METHOD))|
++-                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++                 |(FAST-METHOD (SETF DOCUMENTATION) (T STANDARD-SLOT-DEFINITION))|
++-                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD CHANGE-CLASS (T SYMBOL))|
++                 |(FAST-METHOD DOCUMENTATION (STANDARD-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-DEFINITION-ALLOCATION (STRUCTURE-SLOT-DEFINITION))|
+++                |(FAST-METHOD INITIALIZE-INTERNAL-SLOT-FUNCTIONS (EFFECTIVE-SLOT-DEFINITION))|
++                 |(FAST-METHOD MAKE-INSTANCE (SYMBOL))|
+++                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++                 |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
++-                |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
++-                |(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
++-                |(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
++-                |(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
++-                |(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
++-                |(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
++-                |(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
+++                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STRUCTURE-CLASS STRUCTURE-OBJECT STRUCTURE-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-MAKUNBOUND-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-BOUNDP-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD (SETF SLOT-VALUE-USING-CLASS) (T STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SLOT-VALUE-USING-CLASS (STD-CLASS STANDARD-OBJECT STANDARD-EFFECTIVE-SLOT-DEFINITION))|
+++                |(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
+++                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
+++                |(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
+++                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++                 |(FAST-METHOD WRAPPER-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
+++                |(FAST-METHOD CLASS-DEFAULT-INITARGS (BUILT-IN-CLASS))|
++                 |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (BUILT-IN-CLASS))|
+++                |(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
++                 |(FAST-METHOD CLASS-DIRECT-SLOTS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
+++                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++                 |(FAST-METHOD MAKE-INSTANCES-OBSOLETE (STD-CLASS))|
++-                |(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
+++                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
++                 |(FAST-METHOD COMPUTE-SLOTS :AROUND (STRUCTURE-CLASS))|
++-                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
++-                |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
++-                |(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
++-                |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
+++                |(FAST-METHOD COMPUTE-SLOTS (STRUCTURE-CLASS))|
++                 |(FAST-METHOD COMPUTE-SLOTS :AROUND (STD-CLASS))|
++-                |(FAST-METHOD COMPUTE-CLASS-PRECEDENCE-LIST (SLOT-CLASS))|
++-                |(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
++-                |(FAST-METHOD SLOTS-FETCHER (FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD SPECIALIZER-CLASS (CLASS))|
++-                |(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
++-                |(FAST-METHOD CLASS-SLOTS (BUILT-IN-CLASS))|
++-                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (FUNCALLABLE-STANDARD-CLASS))|
+++                |(FAST-METHOD COMPUTE-SLOTS (STD-CLASS))|
+++                |(FAST-METHOD COMPUTE-DEFAULT-INITARGS (SLOT-CLASS))|
++                 |(FAST-METHOD FINALIZE-INHERITANCE (STD-CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS BUILT-IN-CLASS))|
++-                |(FAST-METHOD SAME-SPECIALIZER-P (CLASS CLASS))|
++-                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT STANDARD-CLASS))|
++-                |(FAST-METHOD CHANGE-CLASS (STANDARD-OBJECT FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (FUNCALLABLE-STANDARD-CLASS STANDARD-CLASS))|
++-                |(FAST-METHOD ALLOCATE-INSTANCE (FUNCALLABLE-STANDARD-CLASS))|
++-                |(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
++-                |(FAST-METHOD MAKE-INSTANCE (CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (CLASS CLASS))|
++-                |(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
++-                |(FAST-METHOD VALIDATE-SUPERCLASS (SLOT-CLASS FORWARD-REFERENCED-CLASS))|
++-                |(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
+++                |(FAST-METHOD FINALIZE-INHERITANCE (STRUCTURE-CLASS))|
+++                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
++                 |(FAST-METHOD REINITIALIZE-INSTANCE :BEFORE (SLOT-CLASS))|
+++                |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T PCL-CLASS))|
+++                |(FAST-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (CLASS))|
+++                |(FAST-METHOD SPECIALIZER-DIRECT-METHODS (CLASS))|
+++                |(FAST-METHOD REMOVE-DIRECT-SUBCLASS (CLASS CLASS))|
+++                |(FAST-METHOD ADD-DIRECT-SUBCLASS (CLASS CLASS))|
+++                |(FAST-METHOD CLASS-SLOT-CELLS (STD-CLASS))|
+++                |(FAST-METHOD CLASS-CONSTRUCTORS (SLOT-CLASS))|
+++                |(FAST-METHOD CLASS-DEFAULT-INITARGS (SLOT-CLASS))|
+++                |(FAST-METHOD CLASS-DIRECT-DEFAULT-INITARGS (SLOT-CLASS))|
++                 |(FAST-METHOD CLASS-PROTOTYPE (STRUCTURE-CLASS))|
++                 |(FAST-METHOD CLASS-PROTOTYPE (STD-CLASS))|
+++                |(FAST-METHOD CLASS-FINALIZED-P (PCL-CLASS))|
+++                |(FAST-METHOD MAKE-INSTANCE (CLASS))|
++                 |(FAST-METHOD ALLOCATE-INSTANCE (STRUCTURE-CLASS))|
++-                |(FAST-METHOD REINITIALIZE-INSTANCE :AFTER (SLOT-CLASS))|
+++                |(FAST-METHOD ALLOCATE-INSTANCE (STANDARD-CLASS))|
+++                |(FAST-METHOD RAW-INSTANCE-ALLOCATOR (STANDARD-CLASS))|
+++                |(FAST-METHOD SLOTS-FETCHER (STANDARD-CLASS))|
+++                |(FAST-METHOD WRAPPER-FETCHER (STANDARD-CLASS))|
++                 CLASS-PREDICATE-NAME
++                 |PCL::STRUCTURE-SLOT-DEFINITION class predicate|
++                 |PCL::STRUCTURE-DIRECT-SLOT-DEFINITION class predicate|
++@@ -1205,8 +1233,8 @@
++                 |(WRITER PREDICATE-NAME)| |(WRITER READERS)|
++                 |(READER WRITER-FUNCTION)| |(READER INITFUNCTION)|
++                 INITIALIZE-INTERNAL-SLOT-FUNCTIONS
++-                |SETF PCL SLOT-DEFINITION-TYPE| |(READER WRITERS)|
++-                |(WRITER CLASS-PRECEDENCE-LIST)|
+++                |SETF PCL SLOT-DEFINITION-TYPE|
+++                |(WRITER CLASS-PRECEDENCE-LIST)| |(READER WRITERS)|
++                 |(WRITER ACCESSOR-FLAGS)| |(READER INITFORM)|
++                 METHOD-COMBINATION-P |(WRITER LOCATION)|
++                 |(WRITER DOCUMENTATION)|
++@@ -1220,11 +1248,11 @@
++                 |(READER ALLOCATION)| |(WRITER SPECIALIZERS)|
++                 |(CALL REAL-ENSURE-GF-USING-CLASS--NULL)|
++                 |(WRITER IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(SETF METHOD-GENERIC-FUNCTION)|
++-                |(WRITER PRETTY-ARGLIST)| LEGAL-SPECIALIZERS-P
++-                |SETF PCL OBJECT-PLIST| |(WRITER DEFSTRUCT-FORM)|
++-                |(READER FUNCTION)| |(READER GENERIC-FUNCTION)|
++-                |(READER LAMBDA-LIST)| |(READER SLOT-DEFINITION)|
+++                |(SETF METHOD-GENERIC-FUNCTION)| LEGAL-SPECIALIZERS-P
+++                |(WRITER PRETTY-ARGLIST)| |SETF PCL OBJECT-PLIST|
+++                |(WRITER DEFSTRUCT-FORM)| |(READER FUNCTION)|
+++                |(READER GENERIC-FUNCTION)| |(READER LAMBDA-LIST)|
+++                |(READER SLOT-DEFINITION)|
++                 |PCL::CLASS-PROTOTYPE-SPECIALIZER class predicate|
++                 |SETF PCL SLOT-DEFINITION-INITFORM|
++                 |SETF PCL CLASS-DEFSTRUCT-FORM|
++@@ -1245,16 +1273,17 @@
++                 |SETF PCL SLOT-DEFINITION-ALLOCATION|
++                 |SETF PCL SLOT-DEFINITION-INITFUNCTION|
++                 |(WRITER SLOT-NAME)| |(BOUNDP NAME)|
++-                |(READER FAST-FUNCTION)| |(WRITER ALLOCATION)|
+++                |(WRITER ALLOCATION)| |(READER FAST-FUNCTION)|
++                 |(READER METHOD-CLASS)| |(SETF OBJECT-PLIST)|
++                 |(READER INTERNAL-WRITER-FUNCTION)|
++                 |(READER INTERNAL-READER-FUNCTION)|
++                 |(READER METHOD-COMBINATION)|
++                 METHOD-COMBINATION-OPTIONS |(READER DIRECT-SLOTS)|
++                 |(READER DIRECT-METHODS)|
++-                |SETF PCL SLOT-DEFINITION-READERS| |(WRITER FUNCTION)|
++-                |(WRITER GENERIC-FUNCTION)| |(READER BOUNDP-FUNCTION)|
++-                |SETF PCL DOCUMENTATION| |(READER DIRECT-SUBCLASSES)|
+++                |SETF PCL SLOT-DEFINITION-READERS|
+++                |(READER BOUNDP-FUNCTION)| |(WRITER FUNCTION)|
+++                |(WRITER GENERIC-FUNCTION)| |SETF PCL DOCUMENTATION|
+++                |(READER DIRECT-SUBCLASSES)|
++                 |(READER DIRECT-SUPERCLASSES)| |(WRITER LAMBDA-LIST)|
++                 FUNCALLABLE-STANDARD-CLASS-P
++                 |(FAST-WRITER-METHOD SLOT-OBJECT METHOD)|
++@@ -1265,7 +1294,7 @@
++                 |SETF PCL SLOT-VALUE-USING-CLASS|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 |(FAST-WRITER-METHOD STRUCTURE-SLOT-DEFINITION DEFSTRUCT-ACCESSOR-SYMBOL)|
++-                |(WRITER PROTOTYPE)| |(BOUNDP TYPE)| |(BOUNDP OBJECT)|
+++                |(WRITER PROTOTYPE)| |(BOUNDP OBJECT)| |(BOUNDP TYPE)|
++                 CLASS-CAN-PRECEDE-LIST |SETF PCL CLASS-DIRECT-SLOTS|
++                 |SETF PCL CLASS-SLOTS| SLOT-ACCESSOR-FUNCTION
++                 |(BOUNDP PLIST)|
++@@ -1280,11 +1309,11 @@
++                 |(FAST-WRITER-METHOD SLOT-OBJECT ARG-INFO)|
++                 |PCL::PLIST-MIXIN class predicate|
++                 |(WRITER FAST-FUNCTION)| |(WRITER METHOD-CLASS)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT WRAPPER)| GET-METHOD
+++                |(FAST-WRITER-METHOD SLOT-OBJECT WRAPPER)|
++                 |(WRITER INTERNAL-WRITER-FUNCTION)|
++                 |(WRITER INTERNAL-READER-FUNCTION)|
++-                |(WRITER METHOD-COMBINATION)| |(WRITER DIRECT-SLOTS)|
++-                |(WRITER DIRECT-METHODS)|
+++                |(WRITER METHOD-COMBINATION)| GET-METHOD
+++                |(WRITER DIRECT-SLOTS)| |(WRITER DIRECT-METHODS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT INITARGS)|
++                 |(FAST-WRITER-METHOD SLOT-DEFINITION INITARGS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT OPERATOR)|
++@@ -1354,18 +1383,18 @@
++                 |(FAST-READER-METHOD SLOT-DEFINITION READERS)|
++                 |(FAST-READER-METHOD SLOT-OBJECT SPECIALIZERS)|
++                 |(FAST-READER-METHOD STANDARD-METHOD SPECIALIZERS)|
+++                |(FAST-READER-METHOD SHORT-METHOD-COMBINATION IDENTITY-WITH-ONE-ARGUMENT)|
+++                |(FAST-READER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(FAST-READER-METHOD SPECIALIZER TYPE)|
++                 |(FAST-READER-METHOD SLOT-OBJECT PROTOTYPE)|
++                 |(FAST-READER-METHOD PCL-CLASS PROTOTYPE)|
++-                |(FAST-READER-METHOD SLOT-DEFINITION TYPE)|
++-                |(FAST-READER-METHOD SLOT-OBJECT TYPE)|
++-                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION TYPE)|
++-                |(FAST-READER-METHOD SHORT-METHOD-COMBINATION IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(FAST-READER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(FAST-READER-METHOD CLASS-EQ-SPECIALIZER OBJECT)|
++                 |(FAST-READER-METHOD CLASS-PROTOTYPE-SPECIALIZER OBJECT)|
++                 |(FAST-READER-METHOD SLOT-OBJECT OBJECT)|
++                 |(FAST-READER-METHOD EQL-SPECIALIZER OBJECT)|
+++                |(FAST-READER-METHOD SLOT-DEFINITION TYPE)|
+++                |(FAST-READER-METHOD SLOT-OBJECT TYPE)|
+++                |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION TYPE)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++                 |(FAST-READER-METHOD STRUCTURE-CLASS DEFSTRUCT-FORM)|
++                 |(FAST-READER-METHOD SLOT-OBJECT INITFORM)|
++@@ -1387,11 +1416,11 @@
++                 |(FAST-READER-METHOD SLOT-CLASS SLOTS)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SLOTS)|
++                 |(FAST-READER-METHOD SLOT-CLASS DIRECT-SLOTS)|
+++                |(FAST-READER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-READER-METHOD SLOT-OBJECT METHODS)|
++                 |(FAST-READER-METHOD STANDARD-GENERIC-FUNCTION METHODS)|
++                 |(FAST-READER-METHOD SLOT-OBJECT OPTIONS)|
++                 |(FAST-READER-METHOD STANDARD-METHOD-COMBINATION OPTIONS)|
++-                |(FAST-READER-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SUBCLASSES)|
++                 |(FAST-READER-METHOD CLASS DIRECT-SUBCLASSES)|
++                 |(FAST-READER-METHOD SLOT-OBJECT DIRECT-SUPERCLASSES)|
++@@ -1429,8 +1458,8 @@
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT READERS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT SPECIALIZERS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT PROTOTYPE)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT TYPE)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT OBJECT)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT TYPE)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT INITFORM)|
++                 |(SETF SLOT-VALUE-USING-CLASS)|
++@@ -1456,10 +1485,10 @@
++                 |(SETF SLOT-DEFINITION-TYPE)|
++                 |(SETF SLOT-DEFINITION-INITFORM)|
++                 |(BOUNDP INITIALIZE-INFO)|
++-                |(FAST-BOUNDP-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-METHODS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT SLOTS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SLOTS)|
+++                |(FAST-BOUNDP-METHOD SLOT-OBJECT FROM-DEFCLASS-P)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT METHODS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT OPTIONS)|
++                 |(FAST-BOUNDP-METHOD SLOT-OBJECT DIRECT-SUBCLASSES)|
++@@ -1468,94 +1497,95 @@
++                 |(BOUNDP INITARGS)| LONG-METHOD-COMBINATION-FUNCTION
++                 GENERIC-FUNCTION-P
++                 |PCL::SLOT-DEFINITION class predicate| |(READER NAME)|
++-                |(READER CLASS)| |(FAST-METHOD SLOT-UNBOUND (T T T))|
++-                |(FAST-METHOD (SETF DOCUMENTATION) (T T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
++-                |(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
++-                |(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
+++                |(READER CLASS)|
+++                |(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
+++                |(FAST-METHOD DESCRIBE-OBJECT (T T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
+++                |(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
+++                |(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
+++                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
+++                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
++                 |(FAST-METHOD REMOVE-NAMED-METHOD (T T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
+++                |(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
++                 |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-METHOD T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
++-                |(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION SHORT-METHOD-COMBINATION T))|
++                 |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-ACCESSOR-METHOD T))|
++-                |(FAST-METHOD FIND-METHOD-COMBINATION (GENERIC-FUNCTION (EQL STANDARD) T))|
++-                |(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
++-                |(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
++-                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
++                 |(FAST-METHOD LEGAL-SLOT-NAME-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD PRINT-OBJECT (STANDARD-ACCESSOR-METHOD T))|
+++                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
+++                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
+++                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
+++                |(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
++                 |(FAST-METHOD PRINT-OBJECT (CLASS T))|
++-                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION T))|
++                 |(FAST-METHOD PRINT-OBJECT (T T))|
++-                |(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD T))|
++-                |(FAST-METHOD PRINT-OBJECT (GENERIC-FUNCTION T))|
+++                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
+++                |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++                 |(FAST-METHOD MAP-DEPENDENTS (DEPENDENT-UPDATE-MIXIN T))|
++                 |(FAST-METHOD REMOVE-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
++-                |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (FUNCALLABLE-STANDARD-CLASS T))|
++-                |(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
++-                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
++-                |(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
++-                |(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
++-                |(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
++-                |(FAST-METHOD PRINT-OBJECT (STANDARD-METHOD-COMBINATION T))|
++-                |(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD PRINT-OBJECT (SLOT-DEFINITION T))|
++-                |(FAST-METHOD UPDATE-GF-DFUN (STD-CLASS T))|
+++                |(FAST-METHOD ADD-DEPENDENT (DEPENDENT-UPDATE-MIXIN T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (BUILT-IN-CLASS T))|
+++                |(FAST-METHOD COMPATIBLE-META-CLASS-CHANGE-P (T T))|
++                 |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STD-CLASS T))|
++-                |(FAST-METHOD LEGAL-DOCUMENTATION-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-LAMBDA-LIST-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-SPECIALIZER-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD MAKE-BOUNDP-METHOD-FUNCTION (SLOT-CLASS T))|
++                 |(FAST-METHOD MAKE-WRITER-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD INFORM-TYPE-SYSTEM-ABOUT-CLASS (STRUCTURE-CLASS T))|
++-                |(FAST-METHOD LEGAL-QUALIFIER-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-METHOD-FUNCTION-P (STANDARD-METHOD T))|
++                 |(FAST-METHOD MAKE-READER-METHOD-FUNCTION (SLOT-CLASS T))|
++-                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD REMOVE-BOUNDP-METHOD (SLOT-CLASS T))|
+++                |(FAST-METHOD REMOVE-WRITER-METHOD (SLOT-CLASS T))|
+++                |(FAST-METHOD REMOVE-READER-METHOD (SLOT-CLASS T))|
+++                |(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
++                 |(FAST-METHOD ADD-WRITER-METHOD (SLOT-CLASS T T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION LONG-METHOD-COMBINATION T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-METHOD T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
++-                |(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD WRITER-METHOD-CLASS (SLOT-CLASS T))|
++                 |(FAST-METHOD ADD-READER-METHOD (SLOT-CLASS T T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (STANDARD-GENERIC-FUNCTION T))|
++-                |(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
+++                |(FAST-METHOD READER-METHOD-CLASS (SLOT-CLASS T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS :AROUND (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS (SLOT-CLASS T))|
+++                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD EFFECTIVE-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
+++                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STD-CLASS T))|
+++                |(FAST-METHOD DIRECT-SLOT-DEFINITION-CLASS (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STRUCTURE-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :BEFORE (CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STD-CLASS T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
++                 |(FAST-METHOD SHARED-INITIALIZE :AFTER (CLASS-EQ-SPECIALIZER T))|
+++                |(FAST-METHOD (SETF DOCUMENTATION) (T T))|
+++                |(FAST-METHOD SHARED-INITIALIZE :AFTER (DOCUMENTATION-MIXIN T))|
+++                |(FAST-METHOD COMPUTE-SLOT-ACCESSOR-INFO (EFFECTIVE-SLOT-DEFINITION T T))|
+++                |(FAST-METHOD (SETF SLOT-ACCESSOR-STD-P) (T EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD SLOT-ACCESSOR-STD-P (EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD (SETF SLOT-ACCESSOR-FUNCTION) (T EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
++                 |(FAST-METHOD SHARED-INITIALIZE (SLOT-OBJECT T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (EQL-SPECIALIZER T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-SLOT-DEFINITION T))|
++-                |(FAST-METHOD SHARED-INITIALIZE :AFTER (STANDARD-ACCESSOR-METHOD T))|
++-                |(FAST-METHOD ADD-BOUNDP-METHOD (SLOT-CLASS T T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (CLASS T))|
++-                |(FAST-METHOD LEGAL-SPECIALIZERS-P (STANDARD-METHOD T))|
++-                |(FAST-METHOD LEGAL-QUALIFIERS-P (STANDARD-METHOD T))|
+++                |(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|
++                 |(FAST-METHOD DEFAULT-INITARGS (SLOT-CLASS T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (T T))|
++-                |(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
++-                |(FAST-METHOD COMPUTE-EFFECTIVE-SLOT-DEFINITION (SLOT-CLASS T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (SLOT-OBJECT T))|
++-                |(FAST-METHOD DESCRIBE-OBJECT (STANDARD-GENERIC-FUNCTION T))|
++-                |(FAST-METHOD COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION T))|
++-                |(FAST-METHOD SLOT-ACCESSOR-FUNCTION (EFFECTIVE-SLOT-DEFINITION T))|
+++                |(FAST-METHOD SLOT-UNBOUND (T T T))|
++                 |(FAST-METHOD SLOT-MISSING (T T T T))|
++-                |(FAST-METHOD UPDATE-INSTANCE-FOR-REDEFINED-CLASS (STANDARD-OBJECT T T T))|
++-                LEGAL-SLOT-NAME-P |(READER TYPE)| |(READER OBJECT)|
+++                |(FAST-METHOD (SETF CLASS-SLOT-VALUE) (T STD-CLASS T))|
+++                |(FAST-METHOD CLASS-SLOT-VALUE (STD-CLASS T))|
+++                LEGAL-SLOT-NAME-P |(READER OBJECT)| |(READER TYPE)|
++                 CLASS-WRAPPER |(READER PLIST)|
++                 |(FAST-METHOD CLASS-PREDICATE-NAME (T))|
++                 |(FAST-METHOD DOCUMENTATION (T))|
++                 |(FAST-METHOD NO-APPLICABLE-METHOD (T))|
++                 |(READER SLOTS)| |(WRITER NAME)| DEFINITION-SOURCE
++                 |PCL::SLOT-OBJECT class predicate| DEFAULT-INITARGS
++-                |(WRITER CLASS)| CLASS-SLOT-VALUE |(WRITER TYPE)|
++-                |(WRITER OBJECT)|
+++                |(WRITER CLASS)| CLASS-SLOT-VALUE |(WRITER OBJECT)|
+++                |(WRITER TYPE)|
++                 |(FAST-METHOD ENSURE-CLASS-USING-CLASS (T NULL))|
++                 |(WRITER PLIST)| |(WRITER SLOTS)|
++                 |PCL::DOCUMENTATION-MIXIN class predicate|
++@@ -1595,10 +1625,10 @@
++                 |COMMON-LISP::STANDARD-OBJECT class predicate|
++                 |COMMON-LISP::BUILT-IN-CLASS class predicate|
++                 |SETF PCL CLASS-SLOT-VALUE| |(SETF CLASS-SLOTS)|
++-                |(SETF CLASS-DIRECT-SLOTS)| DO-STANDARD-DEFSETF-1
++-                |(READER OPERATOR)| |(CALL REAL-GET-METHOD)|
++-                |(CALL REAL-REMOVE-METHOD)| |(CALL REAL-ADD-METHOD)|
++-                |(READER ARG-INFO)| METHOD-COMBINATION-TYPE
+++                |(SETF CLASS-DIRECT-SLOTS)| |(READER OPERATOR)|
+++                |(CALL REAL-GET-METHOD)| |(CALL REAL-REMOVE-METHOD)|
+++                |(CALL REAL-ADD-METHOD)| |(READER ARG-INFO)|
+++                METHOD-COMBINATION-TYPE
++                 |(READER DEFSTRUCT-CONSTRUCTOR)|
++                 |(INTERNAL-READER-METHOD STANDARD-GENERIC-FUNCTION ARG-INFO)|
++                 |(READER INITIALIZE-INFO)| |(WRITER WRAPPER)|
++@@ -1607,8 +1637,8 @@
++                 |(WRITER DEFSTRUCT-ACCESSOR-SYMBOL)|
++                 COMPUTE-SLOT-ACCESSOR-INFO |(READER INITARGS)|
++                 |(WRITER CLASS-EQ-SPECIALIZER)|
++-                STANDARD-BOUNDP-METHOD-P FDEFINE-CAREFULLY
++-                |(SETF DOCUMENTATION)| RAW-INSTANCE-ALLOCATOR
+++                STANDARD-BOUNDP-METHOD-P |(SETF DOCUMENTATION)|
+++                RAW-INSTANCE-ALLOCATOR
++                 |SETF PCL SLOT-DEFINITION-DEFSTRUCT-ACCESSOR-SYMBOL|
++                 |SETF PCL CLASS-INITIALIZE-INFO| |(WRITER OPERATOR)|
++                 |(WRITER ARG-INFO)|
++@@ -1621,8 +1651,9 @@
++                 METHOD-COMBINATION-DOCUMENTATION
++                 |SETF PCL SLOT-DEFINITION-INITARGS|
++                 REMOVE-BOUNDP-METHOD ADD-NAMED-METHOD
+++                |(WRITER INITARGS)|
++                 |SETF PCL CLASS-DEFSTRUCT-CONSTRUCTOR|
++-                |(WRITER INITARGS)| |(BOUNDP METHOD)|
+++                |(BOUNDP METHOD)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT PREDICATE-NAME)|
++                 |(FAST-WRITER-METHOD CLASS NAME)|
++                 |(FAST-WRITER-METHOD SLOT-DEFINITION NAME)|
++@@ -1668,11 +1699,11 @@
++                 |(FAST-WRITER-METHOD SLOT-OBJECT READERS)|
++                 |(FAST-WRITER-METHOD SLOT-DEFINITION READERS)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT SPECIALIZERS)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT PROTOTYPE)|
+++                |(FAST-WRITER-METHOD SLOT-OBJECT OBJECT)|
++                 |(FAST-WRITER-METHOD SLOT-DEFINITION TYPE)|
++                 |(FAST-WRITER-METHOD SLOT-OBJECT TYPE)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT IDENTITY-WITH-ONE-ARGUMENT)|
++-                |(FAST-WRITER-METHOD SLOT-OBJECT OBJECT)|
++                 REMOVE-NAMED-METHOD
++                 |(FAST-WRITER-METHOD SLOT-OBJECT DEFSTRUCT-FORM)|
++                 |(FAST-WRITER-METHOD STRUCTURE-CLASS DEFSTRUCT-FORM)|
++@@ -1725,6 +1756,5 @@
++                 ENSURE-CLASS-USING-CLASS NO-APPLICABLE-METHOD
++                 SLOT-DEFINITION-WRITERS
++                 COMPUTE-APPLICABLE-METHODS-USING-CLASSES
++-                CLASS-PRECEDENCE-LIST DISASSEMBLE DESCRIBE-OBJECT
++-                COMPILE))
++-  (SETF (GET V 'SYSTEM::PROCLAIMED-CLOSURE) T)) 
+++                CLASS-PRECEDENCE-LIST DESCRIBE-OBJECT))
+++  (SETF (GET V 'COMPILER::PROCLAIMED-CLOSURE) T)) 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9da00c3699f86939b39190e88aaa7ffd9320c421
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,159 @@@
++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.
++ .
++ gcl (2.6.12-56) unstable; urgency=medium
++ .
++   * list_order.12
++Author: Camm Maguire <camm@debian.org>
++
++---
++The information above should follow the Patch Tagging Guidelines, please
++checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
++are templates for supplementary fields that you might want to add:
++
++Origin: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++Last-Update: 2017-08-25
++
++--- gcl-2.6.12.orig/o/print.d
+++++ gcl-2.6.12/o/print.d
++@@ -702,18 +702,18 @@ print_symbol_name_body(object x) {
++ #define FOUND -1
++ 
++ static int
++-write_sharp_eq(object *vp,bool dot) {
+++do_write_sharp_eq(object x,bool dot) {
++ 
++-  bool defined=vp[1]!=Cnil;
+++  bool defined=x->c.c_cdr!=Cnil;
++ 
++   if (dot) {
++     write_str(" . ");
++     if (!defined) return FOUND;
++   }
++ 
++-  vp[1]=Ct;
+++  x->c.c_cdr=Ct;
++   write_ch('#');
++-  write_decimal((vp-PRINTvs_top)/2);
+++  write_decimal(fix(x->c.c_car));
++   write_ch(defined ? '#' : '=');
++ 
++   return defined ? DONE : FOUND;
++@@ -721,15 +721,12 @@ write_sharp_eq(object *vp,bool dot) {
++ }
++ 
++ static int
++-write_sharp_eqs(object x,bool dot) {
+++write_sharp_eq(object x,bool dot) {
++ 
++-  object *vp;
+++  struct htent *e;
++ 
++-  for (vp = PRINTvs_top;  vp < PRINTvs_limit;  vp += 2)
++-    if (x == *vp)
++-      return write_sharp_eq(vp,dot);
++-
++-  return 0;
+++  return PRINTvs_top[0]!=Cnil && (e=gethash(x,PRINTvs_top[0]))->hte_key!=OBJNULL ?
+++    do_write_sharp_eq(e->hte_value,dot) : 0;
++ 
++ }
++ 
++@@ -916,7 +913,7 @@ int level;
++          if (PRINTescape) {
++            if (x->s.s_hpack == Cnil) {
++              if (PRINTcircle)
++-               if (write_sharp_eqs(x,FALSE)==DONE) return;
+++               if (write_sharp_eq(x,FALSE)==DONE) return;
++              if (PRINTgensym)
++                write_str("#:");
++            } else if (x->s.s_hpack == keyword_package) {
++@@ -952,7 +949,7 @@ int level;
++                      break;
++              }
++              if (PRINTcircle)
++-               if (write_sharp_eqs(x,FALSE)==DONE) return;
+++               if (write_sharp_eq(x,FALSE)==DONE) return;
++              if (PRINTlevel >= 0 && level >= PRINTlevel) {
++                      write_ch('#');
++                      break;
++@@ -1028,7 +1025,7 @@ int level;
++                      break;
++              }
++              if (PRINTcircle)
++-               if (write_sharp_eqs(x,FALSE)==DONE) return;
+++               if (write_sharp_eq(x,FALSE)==DONE) return;
++              if (PRINTlevel >= 0 && level >= PRINTlevel) {
++                      write_ch('#');
++                      break;
++@@ -1099,7 +1096,7 @@ int level;
++                      break;
++              }
++              if (PRINTcircle)
++-               if (write_sharp_eqs(x,FALSE)==DONE) return;
+++               if (write_sharp_eq(x,FALSE)==DONE) return;
++                 if (PRINTpretty) {
++              if (x->c.c_car == sLquote &&
++                  type_of(x->c.c_cdr) == t_cons &&
++@@ -1146,7 +1143,7 @@ int level;
++                              break;
++                      }
++                      if (PRINTcircle)
++-                       switch (write_sharp_eqs(x,TRUE)) {
+++                       switch (write_sharp_eq(x,TRUE)) {
++                        case FOUND:
++                          write_object(x, level);
++                        case DONE:
++@@ -1316,7 +1313,7 @@ int level;
++ 
++      case t_structure:
++              if (PRINTcircle)
++-               if (write_sharp_eqs(x,FALSE)==DONE) return;
+++               if (write_sharp_eq(x,FALSE)==DONE) return;
++              if (PRINTlevel >= 0 && level >= PRINTlevel) {
++                      write_ch('#');
++                      break;
++@@ -1415,7 +1412,6 @@ travel_push(object x) {
++ 
++     if (!travel_pushed(x)) {
++       vs_check_push(x);
++-      vs_check_push(Cnil);
++       travel_pushed(x)=1;
++     }
++ 
++@@ -1519,10 +1515,13 @@ travel_clear(object x) {
++ 
++ }
++ 
+++object sLeq;
++ 
++ static void
++ setupPRINTcircle(object x,int dogensyms) {
++ 
+++  object *xp;
+++
++   BEGIN_NO_INTERRUPT;
++   dgs=dogensyms;
++   travel_push(x);
++@@ -1531,6 +1530,12 @@ setupPRINTcircle(object x,int dogensyms)
++   travel_clear(x);
++   END_NO_INTERRUPT;
++ 
+++  vs_check_push(PRINTvs_limit>PRINTvs_top ? funcall_cfun(Lmake_hash_table,2,sKtest,sLeq) : Cnil);
+++  for (xp=PRINTvs_top;xp<PRINTvs_limit;xp++)
+++    sethash(*xp,vs_head,MMcons(make_fixnum(xp-PRINTvs_top),Cnil));
+++  PRINTvs_top[0]=vs_head;
+++  PRINTvs_limit=vs_top=PRINTvs_top+1;
+++
++ }
++ 
++ void
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c2ccd31a43cc1c7b8fc32ab0b68c348f4d798d62
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,112 @@@
++Version_2_6_13pre1
++Version_2_6_13pre1a
++Version_2_6_13pre1b
++Version_2_6_13pre2
++Version_2_6_13pre3
++Version_2_6_13pre3a
++Version_2_6_13pre4
++Version_2_6_13pre5
++Version_2_6_13pre6
++Version_2_6_13pre7
++Version_2_6_13pre8a
++Version_2_6_13pre8b
++Version_2_6_13pre12
++Version_2_6_13pre13
++Version_2_6_13pre16
++Version_2_6_13pre17
++Version_2_6_13pre18
++Version_2_6_13pre19
++Version_2_6_13pre20
++Version_2_6_13pre22
++Version_2_6_13pre25
++Version_2_6_13pre26
++Version_2_6_13pre27
++Version_2_6_13pre28
++Version_2_6_13pre29
++Version_2_6_13pre30
++Version_2_6_13pre31
++Version_2_6_13pre32
++Version_2_6_13pre33
++Version_2_6_13pre34
++Version_2_6_13pre35
++Version_2_6_13pre36
++Version_2_6_13pre38
++Version_2_6_13pre39
++data_bss_offset-in-unexec-sparc64-fix
++Version_2_6_13pre41
++Version_2_6_13pre45
++Version_2_6_13pre46
++Version_2_6_13pre47
++Version_2_6_13pre48
++Version_2_6_13pre49
++Version_2_6_13pre50
++pathnames1.1
++ansi-test-clean-target
++pathnames1.2
++pathnames1.3
++pathnames1.4
++pathnames1.5
++pathnames1.6
++pathnames1.7
++pathnames1.9
++pathnames1.11
++pathnames1.12
++pathnames1.13
++list_order.1
++list_order.5
++list_order.6
++defined_real_maxpage
++list_order.7
++list_order.8
++list_order.9
++list_order.11
++disable_gprof_aarch64
++list_order.12
++real_list_order.12
++list_order.13
++list_order.4
++list_order.16
++list_order.17
++list_order.18
++list_order.19
++list_order.20
++list_order.21
++list_order.22
++list_order.23
++list_order.24
++list_order.25
++Version_2_6_13pre52
++Version_2_6_13pre54
++Version_2_6_13pre55
++Version_2_6_13pre56
++Version_2_6_13pre57
++Version_2_6_13pre58
++Version_2_6_13pre59
++Version_2_6_13pre60
++Version_2_6_13pre61
++Version_2_6_13pre62
++Version_2_6_13pre63
++Version_2_6_13pre64
++Version_2_6_13pre65
++Version_2_6_13pre66
++Version_2_6_13pre67
++Version_2_6_13pre68
++Version_2_6_13pre69
++Version_2_6_13pre70
++Version_2_6_13pre71
++Version_2_6_13pre72
++Version_2_6_13pre73
++Version_2_6_13pre74
++Version_2_6_13pre76
++Version_2_6_13pre77
++Version_2_6_13pre78
++Version_2_6_13pre79
++Version_2_6_13pre80
++Version_2_6_13pre81
++Version_2_6_13pre82
++Version_2_6_13pre83
++Version_2_6_13pre84
++Version_2_6_13pre85
++Version_2_6_13pre86
++Version_2_6_13pre87
++Version_2_6_13pre88
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..74f2f037e335f67cacdbcdc3702dd7cc757f0405
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,98 @@@
++# Debconf translations for gcl.
++# Copyright (C) 2016 THE gcl'S COPYRIGHT HOLDER
++# This file is distributed under the same license as the gcl package.
++# Adriano Rafael Gomes <adrianorg@arg.eti.br>, 2016.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: gcl\n"
++"Report-Msgid-Bugs-To: gcl@packages.debian.org\n"
++"POT-Creation-Date: 2012-12-30 11:53-0400\n"
++"PO-Revision-Date: 2016-01-05 11:09-0200\n"
++"Last-Translator: Adriano Rafael Gomes <adrianorg@arg.eti.br>\n"
++"Language-Team: Brazilian Portuguese <debian-l10n-portuguese@lists.debian."
++"org>\n"
++"Language: pt_BR\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../gcl.templates:2001
++msgid "Use the work-in-progress ANSI build by default?"
++msgstr "Usar a versão ANSI em desenvolvimento por padrão?"
++
++#. Type: boolean
++#. Description
++#: ../gcl.templates:2001
++msgid ""
++"GCL is in the process of providing an ANSI compliant image in addition to "
++"its traditional CLtL1 image still in production use."
++msgstr ""
++"O GCL está em processo de fornecer uma imagem de acordo com o padrão ANSI em "
++"adição à sua imagem CLtL1 tradicional, ainda em uso em produção."
++
++#. Type: boolean
++#. Description
++#: ../gcl.templates:2001
++msgid ""
++"Please see the README.Debian file for a brief description of these terms. "
++"Choosing this option will determine which image will be used by default when "
++"executing 'gcl@EXT@'."
++msgstr ""
++"Por favor, veja o arquivo README.Debian para uma breve descrição desses "
++"termos. Escolher essa opção determinará qual imagem será usada por padrão ao "
++"executar \"gcl@EXT@\"."
++
++#. Type: boolean
++#. Description
++#: ../gcl.templates:2001
++msgid ""
++"This setting may be overridden by setting the GCL_ANSI environment variable "
++"to any non-empty string for the ANSI build, and to the empty string for the "
++"CLtL1 build, e.g. GCL_ANSI=t gcl@EXT@. The currently enforced build flavor "
++"will be reported in the initial startup banner."
++msgstr ""
++"Essa configuração pode ser sobreposta definindo a variável de ambiente "
++"GCL_ANSI para qualquer texto não vazio para a versão ANSI, e para um texto "
++"vazio para a versão CLtL1, por exemplo, GCL_ANSI=t gcl@EXT@. O sabor da "
++"versão atualmente definida será exibida na mensagem de inicialização."
++
++#. Type: boolean
++#. Description
++#: ../gcl.templates:3001
++msgid "Use the profiling build by default?"
++msgstr "Usar a versão de \"profiling\" por padrão?"
++
++#. Type: boolean
++#. Description
++#: ../gcl.templates:3001
++msgid "GCL has optional support for profiling via gprof."
++msgstr "O GCL tem suporte opcional a \"profiling\" via gprof."
++
++#. Type: boolean
++#. Description
++#: ../gcl.templates:3001
++msgid ""
++"Please see the documentation for si::gprof-start and si::gprof-quit for "
++"details. As this build is slower than builds without gprof support, it is "
++"not recommended for final production use."
++msgstr ""
++"Por favor, veja a documentação para si::gprof-start e si::gprof-quit para "
++"detalhes. Como essa versão é mais lenta que versões sem suporte a gprof, ela "
++"não é recomendada para uso final em produção."
++
++#. Type: boolean
++#. Description
++#: ../gcl.templates:3001
++msgid ""
++"Set the GCL_PROF environment variable to the empty string for more optimized "
++"builds, or any non-empty string for profiling support; e.g. GCL_PROF=t "
++"gcl@EXT@. If profiling is enabled, this will be reported in the initial "
++"startup banner."
++msgstr ""
++"Defina a variável de ambiente GCL_PROF para um texto vazio para versões mais "
++"otimizadas, ou para qualquer texto não vazio para ter suporte a \"profiling"
++"\"; por exemplo, GCL_PROF=t gcl@EXT@. Se o \"profiling\" estiver habilitado, "
++"isso será exibido na mensagem de inicialização."
diff --cc debian/rules
index 0697af40fd87519860c59ff0fbaacdff48bc675e,0000000000000000000000000000000000000000..8145de6f4eb0178d593ea2b623c9b6d4ee491cea
mode 100755,000000..100755
--- /dev/null
@@@ -1,268 -1,0 +1,269 @@@
-       [ "$*" != "ansi" ] || FLAGS="--enable-ansi" ; \
-       [ "$*" != "gprof" ] || FLAGS="--enable-gprof" ; \
-       [ "$*" != "ansi-gprof" ] || FLAGS="--enable-ansi --enable-gprof" ; \
-       eval `dpkg-buildflags --export=sh |sed -e 's,-O2,,g' -e 's,-g,,g'` && CC=$(MCC) ./configure \
 +#!/usr/bin/make -f
 +# Sample debian/rules that uses debhelper. 
 +# GNU copyright 1997 by Joey Hess.
 +#
 +# This version is for a hypothetical package that builds an
 +# architecture-dependant package, as well as an architecture-independent
 +# package.
 +
 +# Uncomment this to turn on verbose mode. 
 +#export DH_VERBOSE=1
 +
 +# This is the debhelper compatability version to use.
 +ARCHT:=$(shell dpkg-architecture -qDEB_HOST_ARCH)
 +
 +MCC:=gcc
 +# ifeq ($(ARCHT),alpha)
 +# MCC:=gcc-4.6
 +# endif
 +# ifeq ($(ARCHT),mips)
 +# MCC:=gcc-4.6
 +# endif
 +# ifeq ($(ARCHT),mipsel)
 +# MCC:=gcc-4.6
 +# endif
 +# ifeq ($(ARCHT),ia64)
 +# MCC:=gcc-4.6
 +# endif
 +# ifeq ($(ARCHT),armel)
 +# MCC:=gcc-4.6
 +# endif
 +# ifeq ($(ARCHT),armhf)
 +# MCC:=gcc-4.6
 +# endif
 +
 +#RELOC=locbfd
 +#RELOC?=statsysbfd
 +RELOC?=custreloc
 +ifeq ($(ARCHT),ia64)
 +RELOC=dlopen
 +endif
 +# ifeq ($(ARCHT),ppc64)
 +# RELOC=dlopen
 +# endif
 +#ifeq ($(ARCHT),hppa)
 +#RELOC=dlopen
 +#endif
 +
 +GMP?=
 +
 +DEBUG=
 +
 +#ifeq ($(ARCHT),hppa)
 +#DEBUG=--enable-debug
 +#endif
 +
 +VERS=$(shell echo $$(cat majvers).$$(cat minvers))
 +#EXT:=cvs
 +
 +CFG:=$(addsuffix /config.,.)# gmp4/configfsf.
 +# Bug in autoconf dependency on emacsen-common workaround
 +#CFGS:=$(addsuffix .ori,configure $(addsuffix guess,$(CFG)) $(addsuffix sub,$(CFG)))
 +CFGS:=$(addsuffix .ori,$(addsuffix guess,$(CFG)) $(addsuffix sub,$(CFG)))
 +
 +$(filter %.guess.ori,$(CFGS)): %.ori: /usr/share/misc/config.guess %
 +      ! [ -e $* ] || [ -e $@ ] || cp $* $@
 +      [ $$($< -t | tr -d '-') -le $$(./$* -t | tr -d '-') ] || cp $< $*
 +      touch $@
 +
 +$(filter %.sub.ori,$(CFGS)): %.ori: /usr/share/misc/config.sub %
 +      ! [ -e $* ] || [ -e $@ ] || cp $* $@
 +      [ $$($< -t | tr -d '-') -le $$(./$* -t | tr -d '-') ] || cp $< $*
 +      touch $@
 +
 +configure.ori: %.ori: configure.in 
 +      ! [ -e $* ] || [ -e $@ ] || cp $* $@
 +      cd $(@D) && autoconf 
 +      touch $@
 +
 +configure-%-stamp: $(CFGS)
 +
 +      dh_testdir
 +
 +      ! [ -e unixport/saved_pre_gcl ] || $(MAKE) clean
 +
 +#     chmod -R +x gmp4/*
 +
-               echo "(reset-sys-paths \"$$new/\")(si::save-system \"debian/tmp-image\")" | $$tmp/$$new/unixport/$$i &&\
++      [ "$*" != "trad" ] || FLAGS="--disable-ansi" ; \
++      [ "$*" != "gprof" ] || FLAGS="--disable-ansi --enable-gprof" ; \
++      [ "$*" != "ansi-gprof" ] || FLAGS="--enable-gprof" ; \
++      eval `dpkg-buildflags --export=sh` && CC=$(MCC) ./configure \
 +              --host=$$(dpkg-architecture -qDEB_HOST_GNU_TYPE) \
 +              --disable-statsysbfd \
 +              --disable-custreloc \
 +              --disable-dlopen \
 +              --enable-prelink \
 +              --enable-$(RELOC) \
 +              $(GMP) \
 +              $(DEBUG) \
 +              $$FLAGS \
 +              --prefix=/usr \
 +              --mandir=\$${prefix}/share/man \
 +              --enable-infodir=\$${prefix}/share/info \
 +              --enable-emacsdir=\$${prefix}/share/emacs/site-lisp
 +
 +      touch $@
 +
 +
 +build-%-stamp: configure-%-stamp
 +      dh_testdir
 +
 +      $(MAKE)
 +
 +      rm -rf debian/$*
 +      mkdir -p debian/$*
 +      $(MAKE) install DESTDIR=$$(pwd)/debian/$*
 +      [ "$(findstring gprof,$*)" = "" ] || (\
 +              tmp=debian/$*; old=/usr/lib/gcl-$(VERS); new=$$old-prof;\
 +              if [ "$(findstring ansi,$*)" = "" ] ; then i=saved_gcl ; else i=saved_ansi_gcl ; fi;\
 +              mv $$tmp/$$old $$tmp/$$new ;\
-       dh_clean -k
++              echo "(si::reset-sys-paths \"$$new/\")(si::save-system \"debian/tmp-image\")" | $$tmp/$$new/unixport/$$i &&\
 +              mv debian/tmp-image $$tmp/$$new/unixport/$$i;)
 +
 +      touch $@
 +
 +bclean-stamp:
 +      $(MAKE) clean
 +      touch $@
 +
 +ansi-tests/test_results: build-ansi-stamp
 +      $(MAKE) $@
 +
 +build: build-arch build-indep
 +build-arch: build-stamp
 +build-indep: build-stamp
 +build-stamp: build-gprof-stamp build-ansi-gprof-stamp build-trad-stamp build-ansi-stamp ansi-tests/test_results
 +      touch $@
 +
 +debian/control.rm:
 +      rm -f `echo $@ | sed 's,\.rm$$,,1'`
 +
 +debian/control: debian/control.rm
 +      cp debian/control.$(EXT) debian/control
 +
 +clean: debian/control debian/gcl.templates
 +      dh_testdir
 +      dh_testroot
 +      rm -f *stamp
 +      debconf-updatepo
 +
 +      $(MAKE) clean
 +
 +      dh_clean
 +      rm -rf debian/gprof debian/ansi-gprof debian/trad debian/ansi $(INS) debian/substvars debian.upstream
 +      rm -rf *stamp
 +      for i in $(CFGS) ; do ! [ -e $$i ] || mv $$i $${i%.ori} ; done
 +
 +INS:=$(shell for i in debian/in.* ; do echo $$i | sed 's,in.,,1' ; done |sed "s,gcl,gcl$(EXT),g")
 +
 +$(INS): debian/gcl$(EXT)% : debian/in.gcl%
 +      cat $< | sed 's,@EXT@,$(EXT),g' >$@
 +
 +install: install-stamp
 +install-stamp: build-stamp debian/control $(INS)
 +      dh_testdir
 +      dh_testroot
-       dh_strip -a -Xlibgcl -Xlibansi_gcl \
-               -Xgcl-$(VERS)-prof/unixport/saved_gcl -Xgcl-$(VERS)-prof/unixport/saved_ansi_gcl
++#     dh_clean -k
++      dh_prep
 +      dh_installdirs
 +
 +      mkdir -p debian/tmp
 +      cp -a debian/ansi/* debian/tmp/
 +      cp -a debian/trad/* debian/tmp/
 +      cp -a debian/gprof/* debian/tmp/
 +      cp -a debian/ansi-gprof/* debian/tmp/
 +
 +      mv debian/tmp/usr/share/emacs/site-lisp debian/tmp/usr/share/emacs/foo
 +      mkdir -p debian/tmp/usr/share/emacs/site-lisp
 +      mv debian/tmp/usr/share/emacs/foo debian/tmp/usr/share/emacs/site-lisp/gcl$(EXT)
 +
 +      cat debian/tmp/usr/share/emacs/site-lisp/gcl$(EXT)/gcl.el |\
 +              sed "s,(provide 'gcl),(provide 'gcl$(EXT)),1" >tmp &&\
 +              mv tmp debian/tmp/usr/share/emacs/site-lisp/gcl$(EXT)/gcl$(EXT).el
 +      [ "$(EXT)" = "" ] || rm debian/tmp/usr/share/emacs/site-lisp/gcl$(EXT)/gcl.el
 +
 +      cat debian/tmp/usr/share/emacs/site-lisp/gcl$(EXT)/dbl.el |\
 +              sed "s,(provide 'dbl),(provide 'dbl$(EXT)),1" >tmp &&\
 +              mv tmp debian/tmp/usr/share/emacs/site-lisp/gcl$(EXT)/dbl$(EXT).el
 +      [ "$(EXT)" = "" ] || rm debian/tmp/usr/share/emacs/site-lisp/gcl$(EXT)/dbl.el
 +
 +      [ "$(EXT)" = "" ] || \
 +              for i in debian/tmp/usr/share/info/*.info*; do \
 +                      mv $$i $$(echo $$i | sed "s,gcl,gcl$(EXT),g"); done
 +
 +      mv debian/tmp/usr/share/doc debian/tmp/usr/share/foo
 +      mkdir -p debian/tmp/usr/share/doc/gcl-doc
 +      mv debian/tmp/usr/share/foo/* debian/tmp/usr/share/doc/gcl-doc
 +      rmdir debian/tmp/usr/share/foo
 +
 +      [ "$(EXT)" = "" ] || \
 +              mv debian/tmp/usr/share/doc/gcl-doc debian/tmp/usr/share/doc/gcl$(EXT)-doc 
 +
 +      [ "$(EXT)" = "" ] || \
 +              (cat debian/tmp/usr/share/man/man1/gcl.1 |sed -e 's, gcl , gcl$(EXT) ,g' 's, GCL , GCL$(EXT) ,g' >debian/foo && \
 +                      mv debian/foo debian/tmp/usr/share/man/man1/gcl$(EXT).1)
 +
 +      cat debian/tmp/usr/lib/gcl-$(VERS)/gcl-tk/demos/index.lsp | \
 +              sed "s,$$(pwd)/debian/tmp,,1" >debian/foo
 +      mv debian/foo debian/tmp/usr/lib/gcl-$(VERS)/gcl-tk/demos/index.lsp
 +
 +      rm -f debian/tmp/usr/bin/*.exe debian/tmp/usr/bin/*.bat
 +
 +      find debian/tmp -type f -name "*.lsp" -exec chmod ugo-x {} \;
 +      find debian/tmp -type f -name "*.lisp" -exec chmod ugo-x {} \;
 +      find debian/tmp -type f -name "*.el" -exec chmod ugo-x {} \;
 +      find debian/tmp -type f -name "*.tcl" -exec chmod ugo-x {} \;
 +
 +      rm -f debian/tmp/usr/bin/gcl
 +      TKVERS=$$(cat bin/gcl | grep /tk | head -1l | sed "s,.*/tk\([0-9.]*\)\").*,\1,1"); \
 +              cat debian/gcl.sh | sed -e "s,@EXT@,$(EXT),g" \
 +                                      -e "s,@VERS@,$(VERS),g" \
 +                                      -e "s,@TKVERS@,$$TKVERS,g" >debian/tmp/usr/bin/gcl$(EXT)
 +      chmod 0755 debian/tmp/usr/bin/gcl$(EXT)
 +
 +      rm -rf debian/tmp/usr/lib/gcl-$(VERS)/info
 +
 +      dh_install
 +
 +      touch $@
 +
 +# Build architecture-independent files here.
 +# Pass -i to all debhelper commands in this target to reduce clutter.
 +binary-indep: build install
 +      dh_testdir -i
 +      dh_testroot -i
 +      dh_installdocs -i
 +      dh_installinfo -i
 +      dh_installchangelogs ChangeLog -i
 +      dh_link -i
 +      dh_compress -i
 +      dh_fixperms -i
 +      dh_installdeb -i
 +      dh_gencontrol -i
 +      dh_md5sums -i
 +      dh_builddeb -i
 +
 +binary-arch: build install #debian/substvars
 +      dh_testdir -a
 +      dh_testroot -a
 +      dh_installdocs -a -XRELEASE-2.6.2.html
 +      dh_installemacsen -a
 +      dh_installman -a
 +      dh_installdebconf -a
 +      sed -i -e 's,@EXT@,$(EXT),g' debian/gcl$(EXT)/DEBIAN/templates
 +      dh_installchangelogs ChangeLog -a
++      dh_strip -a -Xlibgcl -Xlibansi_gcl
++#             -Xgcl-$(VERS)-prof/unixport/saved_gcl -Xgcl-$(VERS)-prof/unixport/saved_ansi_gcl
 +      dh_lintian -a
 +      dh_link -a
 +      dh_compress -a
 +      dh_fixperms -a
 +      dh_installdeb -a
 +      dh_shlibdeps -a
 +      dh_gencontrol -a -u"-Vgcc=$(MCC)"
 +      dh_md5sums -a
 +      dh_builddeb -a
 +
 +binary: binary-indep binary-arch
 +.PHONY: build clean binary-indep binary-arch binary install configure
 +.PRECIOUS: configure-trad-stamp configure-ansi-stamp configure-gprof-stamp configure-ansi-gprof-stamp
index 0fe30092b400264cedcfc8096002528f37e39e06,0000000000000000000000000000000000000000..f95b9a3e5a30946ab36d02d19ca6214fd1705e63
mode 100644,000000..100644
--- /dev/null
@@@ -1,3 -1,0 +1,4 @@@
 +info/gcl-si.pdf
 +info/gcl-tk.pdf
 +xgcl-2/dwdoc.pdf
++unixport/ff