Update SBCL to version 1.0.31 from MAINTAINER (Josh Elsasser).

Highlights:
	- amd64 support
	- bootstraping works with clisp
This commit is contained in:
pirofti 2009-11-17 10:44:59 +00:00
parent 8c1eea771b
commit b49caa5621
19 changed files with 450 additions and 127 deletions

View File

@ -1,11 +1,11 @@
# $OpenBSD: Makefile,v 1.2 2008/04/15 12:07:31 deanna Exp $
# $OpenBSD: Makefile,v 1.3 2009/11/17 10:44:59 pirofti Exp $
# not yet ported to other arches
ONLY_FOR_ARCHS= i386
ONLY_FOR_ARCHS = amd64 i386
COMMENT= compiler and runtime system for ANSI Common Lisp
V= 1.0.15
V = 1.0.31
DISTNAME= sbcl-${V}-source
PKGNAME= sbcl-${V}
WRKDIST= ${WRKDIR}/sbcl-${V}
@ -13,7 +13,7 @@ EXTRACT_SUFX= .tar.bz2
CATEGORIES= lang
HOMEPAGE= http://www.sbcl.org/
MAINTAINER= Josh Elsasser <josh@elsasser.org>
MAINTAINER = Joshua Elsasser <joshua@elsasser.org>
# Public domain and BSD
PERMIT_PACKAGE_CDROM= Yes
@ -24,42 +24,25 @@ PERMIT_DISTFILES_FTP= Yes
WANTLIB= c m util
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=sbcl/}
MASTER_SITES0= http://www.elsasser.org/openbsd/
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
SUPDISTFILES= ${SBCL_BOOTSTRAP_I386}.tar.bz2:0
SBCL_BOOTSTRAP_I386= sbcl-1.0.14-openbsd-i386-static-1
SBCL_BOOTSTRAP= ${SBCL_BOOTSTRAP_${MACHINE_ARCH:U}}
# To build a new bootstrap tarball, do "make patch" then edit the
# following files:
# ${WRKSRC}/make.sh
# comment out "time sh make-target-contrib.sh" near the end
# ${WRKSRC}/src/runtime/Config.x86-openbsd
# change the -export-dynamic flags to -static
# You should also edit the do-build target in this Makefile, comment
# out the second line to avoid trying to build the manual. Finally, do
# "make build" and go get some coffee. When it's finished you can grab
# ${WRKSRC}/src/runtime/sbcl and ${WRKSRC}/output/sbcl.core to make
# the bootstrap tarball.
PSEUDO_FLAVORS= native_bootstrap
FLAVOR?=
BUILD_DEPENDS= ::print/texlive/base
# it's not actually interactive, it just needs /proc and higher resource limits
REGRESS_IS_INTERACTIVE=Yes
.if ${FLAVOR:L:Mnative_bootstrap}
BUILD_DEPENDS+= ::lang/sbcl
BOOTSTRAP_CMD= ${LOCALBASE}/bin/sbcl \
--disable-debugger --no-sysinit --no-userinit
.elif !empty(SBCL_BOOTSTRAP)
DISTFILES+= ${SBCL_BOOTSTRAP}.tar.bz2:0
BOOTSTRAP_CMD= ${WRKDIR}/${SBCL_BOOTSTRAP}/sbcl \
--core ${WRKDIR}/${SBCL_BOOTSTRAP}/sbcl.core \
--disable-debugger --no-sysinit --no-userinit
.else
BUILD_DEPENDS += ::lang/clisp
BOOTSTRAP_CMD = ${LOCALBASE}/bin/clisp -q -norc
.endif
.if ${MACHINE_ARCH} == "i386"
PKG_ARGS += -Di386=1
.else
PKG_ARGS += -Di386=0
.endif
USE_GMAKE= Yes
@ -67,6 +50,9 @@ PORTHOME= ${TMPDIR}
MAKE_ENV= GNUMAKE=${GMAKE} INSTALL_ROOT=${PREFIX} \
MAN_DIR=${PREFIX}/man INFO_DIR=${PREFIX}/info
pre-configure:
@${SUBST_CMD} ${WRKSRC}/src/runtime/runtime.c
do-build:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} /bin/sh make.sh "${BOOTSTRAP_CMD}"
cd ${WRKSRC}/doc/manual && ${SETENV} ${MAKE_ENV} ${GMAKE}
@ -78,13 +64,6 @@ post-install:
${CHOWN} -R 0:0 ${PREFIX}/lib/sbcl
do-regress:
@echo "These tests must be run with a data size resource limit of at least"
@echo "768 MB, for example by a user in the staff or daemon login classes."
@echo
@echo "The /proc filesystem must also be mounted for the core.test.sh test:"
@echo " mkdir -p /proc && mount -t procfs proc /proc"
@echo
@sleep 5
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} RUN_CONTRIB_TESTS=1 \
/bin/sh make-target-contrib.sh
cd ${WRKSRC}/tests && ${SETENV} ${MAKE_ENV} /bin/sh run-tests.sh

View File

@ -1,10 +1,5 @@
MD5 (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = LLiuQhzlqTgixZV4yZ5j7Q==
MD5 (sbcl-1.0.15-source.tar.bz2) = 09la4QaEo8/FnkJ+xTPuaA==
RMD160 (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = cx9B6lgyN7hg2alpXHXu54diiBM=
RMD160 (sbcl-1.0.15-source.tar.bz2) = WNputGy3LQ6IzbXtWhvAHVklz6I=
SHA1 (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = 8UjrJjR7PPKBrjz+7qvdvKMF/XA=
SHA1 (sbcl-1.0.15-source.tar.bz2) = TTNX9W5vYAyuCsP3gRH8zVrrdHM=
SHA256 (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = fn++aMwD+62CKaXAuqPgFi1EztAD2GI5Pxas9iGQwG4=
SHA256 (sbcl-1.0.15-source.tar.bz2) = XeSYVZpr4AAZ/QzgkHV+dch12J6FR1k9ehCvttqXC+k=
SIZE (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = 7636859
SIZE (sbcl-1.0.15-source.tar.bz2) = 3205556
MD5 (sbcl-1.0.31-source.tar.bz2) = ph/QmacsLT+hClcpjzyb9g==
RMD160 (sbcl-1.0.31-source.tar.bz2) = 6UyQl/9BOEccF5v+Hx4sM+by4Wk=
SHA1 (sbcl-1.0.31-source.tar.bz2) = Skt03hdPlwUKJ4WsRVmqbdSKPQk=
SHA256 (sbcl-1.0.31-source.tar.bz2) = 0CZNbkpJ5tGBwnNI8H3nM8CYYMnNdKH76Objy3yiidw=
SIZE (sbcl-1.0.31-source.tar.bz2) = 3354506

View File

@ -1,7 +1,13 @@
$OpenBSD: patch-contrib_asdf-module.mk,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
--- contrib/asdf-module.mk.orig Wed Sep 6 17:56:59 2006
+++ contrib/asdf-module.mk Thu Apr 10 14:37:27 2008
@@ -18,7 +18,8 @@ endif
$OpenBSD: patch-contrib_asdf-module.mk,v 1.2 2009/11/17 10:45:00 pirofti Exp $
Fix 'all' target to allow building without running tests.
Don't copy every single file when installing the contribs, only the
ones that are actually needed to load the system.
--- contrib/asdf-module.mk.orig Tue Apr 28 09:02:13 2009
+++ contrib/asdf-module.mk Tue Jul 7 17:57:02 2009
@@ -22,7 +22,8 @@ endif
export CC SBCL EXTRA_CFLAGS EXTRA_LDFLAGS
@ -11,9 +17,10 @@ $OpenBSD: patch-contrib_asdf-module.mk,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp
$(MAKE) -C ../asdf
$(SBCL) --eval '(defvar *system* "$(SYSTEM)")' --load ../asdf-stub.lisp --eval '(quit)'
@@ -29,4 +30,4 @@ test: all
@@ -34,5 +35,4 @@ test: all
# KLUDGE: There seems to be no portable way to tell tar to not to
# preserve owner, so chown after installing for the current user.
install: $(EXTRA_INSTALL_TARGETS)
- tar cf - . | ( cd "$(BUILD_ROOT)$(INSTALL_DIR)" && tar xpvf - )
- find "$(BUILD_ROOT)$(INSTALL_DIR)" -type f -exec chown `id -u`:`id -g` {} \;
+ cp -p $(SYSTEM).asd *.lisp *.fasl "$(BUILD_ROOT)$(INSTALL_DIR)"

View File

@ -1,4 +1,7 @@
$OpenBSD: patch-contrib_vanilla-module.mk,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
$OpenBSD: patch-contrib_vanilla-module.mk,v 1.2 2009/11/17 10:45:00 pirofti Exp $
Add an 'all' target to allow building without running tests.
--- contrib/vanilla-module.mk.orig Wed Sep 6 17:56:59 2006
+++ contrib/vanilla-module.mk Thu Apr 10 14:13:34 2008
@@ -1,3 +1,4 @@

View File

@ -1,7 +1,12 @@
$OpenBSD: patch-make-target-contrib.sh,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
--- make-target-contrib.sh.orig Mon Oct 8 04:02:52 2007
+++ make-target-contrib.sh Thu Apr 10 14:13:34 2008
@@ -42,6 +42,7 @@ export SBCL SBCL_BUILDING_CONTRIB
$OpenBSD: patch-make-target-contrib.sh,v 1.2 2009/11/17 10:45:00 pirofti Exp $
Only run the contrib tests if $RUN_CONTRIB_TESTS is not empty. This
allows the contribs to be build when USE_SYSTRACE=Yes, and the tests
to be run later in do-regress.
--- make-target-contrib.sh.orig Mon Feb 16 13:36:13 2009
+++ make-target-contrib.sh Tue Jul 7 17:57:02 2009
@@ -43,6 +43,7 @@ export SBCL SBCL_BUILDING_CONTRIB
# as SB-RT and SB-GROVEL, but FIXME: there's probably a better
# solution. -- CSR, 2003-05-30
@ -9,7 +14,7 @@ $OpenBSD: patch-make-target-contrib.sh,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp
find contrib/ \( -name '*.fasl' -o \
-name '*.FASL' -o \
-name 'foo.c' -o \
@@ -55,13 +56,17 @@ find contrib/ \( -name '*.fasl' -o \
@@ -56,13 +57,17 @@ find contrib/ \( -name '*.fasl' -o \
-print | xargs rm -f
find output -name 'building-contrib.*' -print | xargs rm -f

View File

@ -0,0 +1,30 @@
$OpenBSD: patch-src_code_common-os_lisp,v 1.1 2009/11/17 10:45:00 pirofti Exp $
If os_get_runtime_executable_path(1) returns NULL then try to use
saved_runtime_path, which fixes the shebang line in fasls.
--- src/code/common-os.lisp.orig Wed Jun 24 07:33:19 2009
+++ src/code/common-os.lisp Mon Jun 29 07:53:42 2009
@@ -15,7 +15,10 @@
(sb!alien:define-alien-variable ("posix_argv" *native-posix-argv*) (* (* char)))
(sb!alien:define-alien-variable ("core_string" *native-core-string*) (* char))
-(sb!alien:define-alien-routine os-get-runtime-executable-path sb!alien:c-string)
+(sb!alien:define-alien-routine
+ os-get-runtime-executable-path sb!alien:c-string (external-path boolean))
+(sb!alien:define-alien-variable
+ ("saved_runtime_path" *native-saved-runtime-path*) (* char))
;;; if something ever needs to be done differently for one OS, then
;;; split out the different part into per-os functions.
@@ -43,6 +46,8 @@
(setf *core-pathname*
(merge-pathnames (native-pathname *core-string*)))
(/show0 "setting *RUNTIME-PATHNAME*")
- (let ((exe (os-get-runtime-executable-path)))
- (setf *runtime-pathname* (when exe (native-pathname exe))))
+ (let ((exe (os-get-runtime-executable-path t))
+ (saved (sb!alien:cast *native-saved-runtime-path* sb!alien:c-string)))
+ (setf *runtime-pathname*
+ (when (or exe saved) (native-pathname (or exe saved)))))
(/show0 "leaving OS-COLD-INIT-OR-REINIT"))

View File

@ -0,0 +1,15 @@
$OpenBSD: patch-src_compiler_ir1util_lisp,v 1.1 2009/11/17 10:45:00 pirofti Exp $
Clisp 2.43 chokes on this declaration.
--- src/compiler/ir1util.lisp.orig Wed Jun 17 13:03:36 2009
+++ src/compiler/ir1util.lisp Mon Jun 29 08:22:24 2009
@@ -429,7 +429,7 @@
(lvar-dynamic-extent it)))
(defun flushable-combination-p (call)
- (declare (combination call))
+ (declare (type combination call))
(let ((kind (combination-kind call))
(info (combination-fun-info call)))
(when (and (eq kind :known) (fun-info-p info))

View File

@ -1,9 +1,9 @@
$OpenBSD: patch-src_runtime_Config.x86-openbsd,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
--- src/runtime/Config.x86-openbsd.orig Wed Jan 9 11:12:23 2008
+++ src/runtime/Config.x86-openbsd Thu Apr 10 14:13:34 2008
@@ -25,4 +25,4 @@ OS_LIBS += -lutil
$OpenBSD: patch-src_runtime_Config.x86-openbsd,v 1.2 2009/11/17 10:45:00 pirofti Exp $
--- src/runtime/Config.x86-openbsd.orig Sun Feb 3 10:34:58 2008
+++ src/runtime/Config.x86-openbsd Thu Feb 5 08:41:33 2009
@@ -24,5 +24,3 @@ OS_LIBS += -lutil
LINKFLAGS += -export-dynamic
LDFLAGS += -export-dynamic
-
-CFLAGS = -g -Wall -O2
+CFLAGS += -g -Wall -O2 -DSBCL_HOME='"${PREFIX}/lib/sbcl/"'

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-src_runtime_GNUmakefile,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
$OpenBSD: patch-src_runtime_GNUmakefile,v 1.2 2009/11/17 10:45:00 pirofti Exp $
--- src/runtime/GNUmakefile.orig Wed Feb 20 09:55:26 2008
+++ src/runtime/GNUmakefile Thu Apr 10 14:13:34 2008
@@ -23,7 +23,7 @@ NM = nm -gp
@ -6,7 +6,7 @@ $OpenBSD: patch-src_runtime_GNUmakefile,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp
GREP = grep
-CFLAGS = -g -Wall -Wsign-compare -O3
+CFLAGS += -Wsign-compare
+CFLAGS += -Wall -Wsign-compare
ASFLAGS = $(CFLAGS)
CPPFLAGS = -I.

View File

@ -0,0 +1,29 @@
$OpenBSD: patch-src_runtime_bsd-os_c,v 1.1 2009/11/17 10:45:00 pirofti Exp $
Add a flag to os_get_runtime_executable_path() indicating if an
externally usable path is required, which means we can't use
/proc/curproc/file even if procfs happens to be mounted.
--- src/runtime/bsd-os.c.orig Wed May 13 11:13:48 2009
+++ src/runtime/bsd-os.c Mon Jun 29 07:53:42 2009
@@ -465,16 +465,12 @@ os_get_runtime_executable_path()
}
#elif defined(LISP_FEATURE_NETBSD) || defined(LISP_FEATURE_OPENBSD)
char *
-os_get_runtime_executable_path()
+os_get_runtime_executable_path(int external)
{
struct stat sb;
- char *path = strdup("/proc/curproc/file");
- if (path && ((stat(path, &sb)) == 0))
- return path;
- else {
- fprintf(stderr, "Couldn't stat /proc/curproc/file; is /proc mounted?\n");
- return NULL;
- }
+ if (!external && stat("/proc/curproc/file", &sb) == 0)
+ return copied_string("/proc/curproc/file");
+ return NULL;
}
#else /* Not DARWIN or FREEBSD or NETBSD or OPENBSD */
char *

View File

@ -1,20 +0,0 @@
$OpenBSD: patch-src_runtime_gc-common.c,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
--- src/runtime/gc-common.c.orig Wed Feb 20 09:55:27 2008
+++ src/runtime/gc-common.c Thu Apr 10 14:13:34 2008
@@ -25,6 +25,7 @@
* <ftp://ftp.cs.utexas.edu/pub/garbage/bigsurv.ps>.
*/
+#include <sys/param.h>
#include <stdio.h>
#include <signal.h>
#include <string.h>
@@ -53,7 +54,7 @@
#endif
#endif
-size_t dynamic_space_size = DEFAULT_DYNAMIC_SPACE_SIZE;
+size_t dynamic_space_size = MIN(DEFAULT_DYNAMIC_SPACE_SIZE, 400 * 1024 * 1024);
inline static boolean
forwarding_pointer_p(lispobj *pointer) {

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-src_runtime_os_h,v 1.1 2009/11/17 10:45:00 pirofti Exp $
--- src/runtime/os.h.orig Wed Jul 25 14:37:31 2007
+++ src/runtime/os.h Mon Jun 29 07:53:42 2009
@@ -175,6 +175,6 @@ int os_get_errno(void);
/* Return an absolute path to the runtime executable, or NULL if this
* information is unavailable. If a non-null pathname is returned, it
* must be 'free'd. */
-extern char *os_get_runtime_executable_path(void);
+extern char *os_get_runtime_executable_path(int external_path);
#endif

View File

@ -1,12 +1,147 @@
$OpenBSD: patch-src_runtime_runtime.c,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
--- src/runtime/runtime.c.orig Thu Oct 25 21:33:34 2007
+++ src/runtime/runtime.c Thu Apr 10 14:13:34 2008
@@ -279,6 +279,8 @@ main(int argc, char *argv[], char *envp[])
dynamic_space_size = strtol(argv[argi++], 0, 0) << 20;
if (errno)
lose("argument to --dynamic-space-size is not a number");
+ if (dynamic_space_size > DEFAULT_DYNAMIC_SPACE_SIZE)
+ lose("argument to --dynamic-space-size is too large");
} else if (0 == strcmp(arg, "--debug-environment")) {
int n = 0;
printf("; Commandline arguments:\n");
$OpenBSD: patch-src_runtime_runtime.c,v 1.2 2009/11/17 10:45:00 pirofti Exp $
Don't hardcode /usr/local, patch and use SUBST_COMMAND.
Try to guess the path to the current executable from argv[0] and stash
it in saved_runtime_path for later. It's needed to check for an
embedded core, to save an executable core, and to write a shebang line
in fasls.
Check saved_runtime_path if os_get_runtime_executable_path(0) returns
NULL, which it always will on OpenBSD unless /proc is mounted.
--- src/runtime/runtime.c.orig Thu May 21 09:22:55 2009
+++ src/runtime/runtime.c Mon Jun 29 07:53:42 2009
@@ -67,7 +67,7 @@
#endif
#ifndef SBCL_HOME
-#define SBCL_HOME "/usr/local/lib/sbcl/"
+#define SBCL_HOME "${PREFIX}/lib/sbcl/"
#endif
#ifdef LISP_FEATURE_HPUX
@@ -127,6 +127,37 @@ copied_existing_filename_or_null(char *filename)
return copied_string(filename);
}
}
+
+#ifndef LISP_FEATURE_WIN32
+char *
+copied_realpath(const char *pathname)
+{
+ char *messy, *tidy;
+ size_t len;
+
+ /* realpath() supposedly can't be counted on to always return
+ * an absolute path, so we prepend the cwd to relative paths */
+ messy = NULL;
+ if (pathname[0] != '/') {
+ messy = successful_malloc(PATH_MAX + 1);
+ if (getcwd(messy, PATH_MAX + 1) == NULL) {
+ free(messy);
+ return NULL;
+ }
+ len = strlen(messy);
+ snprintf(messy + len, PATH_MAX + 1 - len, "/%s", pathname);
+ }
+
+ tidy = successful_malloc(PATH_MAX + 1);
+ if (realpath((messy ? messy : pathname), tidy) == NULL) {
+ free(messy);
+ free(tidy);
+ return NULL;
+ }
+
+ return tidy;
+}
+#endif /* LISP_FEATURE_WIN32 */
/* miscellaneous chattiness */
@@ -205,11 +236,58 @@ search_for_core ()
return core;
}
+/* Try to find the path to an executable from argv[0], this is only
+ * used when os_get_runtime_executable_path() returns NULL */
+#ifdef LISP_FEATURE_WIN32
+char *
+search_for_executable(const char *argv0)
+{
+ return NULL;
+}
+#else /* LISP_FEATURE_WIN32 */
+char *
+search_for_executable(const char *argv0)
+{
+ char *search, *start, *end, *buf;
+
+ /* If argv[0] contains a slash then it's probably an absolute path
+ * or relative to the current directory, so check if it exists. */
+ if (strchr(argv0, '/') != NULL && access(argv0, F_OK) == 0)
+ return copied_realpath(argv0);
+
+ /* Bail on an absolute path which doesn't exist */
+ if (argv0[0] == '/')
+ return NULL;
+
+ /* Otherwise check if argv[0] exists relative to any directory in PATH */
+ search = getenv("PATH");
+ if (search == NULL)
+ return NULL;
+ search = copied_string(search);
+ buf = successful_malloc(PATH_MAX + 1);
+ for (start = search; (end = strchr(start, ':')) != NULL; start = end + 1) {
+ *end = '\0';
+ snprintf(buf, PATH_MAX + 1, "%s/%s", start, argv0);
+ if (access(buf, F_OK) == 0) {
+ free(search);
+ search = copied_realpath(buf);
+ free(buf);
+ return search;
+ }
+ }
+
+ free(search);
+ free(buf);
+ return NULL;
+}
+#endif /* LISP_FEATURE_WIN32 */
+
char **posix_argv;
char *core_string;
struct runtime_options *runtime_options;
+char *saved_runtime_path = NULL;
int
main(int argc, char *argv[], char *envp[])
@@ -241,15 +319,22 @@ main(int argc, char *argv[], char *envp[])
runtime_options = NULL;
+ /* Save the argv[0] derived runtime path in case
+ * os_get_runtime_executable_path(1) isn't able to get an
+ * externally-usable path later on. */
+ saved_runtime_path = search_for_executable(argv[0]);
+
/* Check early to see if this executable has an embedded core,
* which also populates runtime_options if the core has runtime
* options */
- runtime_path = os_get_runtime_executable_path();
- if (runtime_path) {
- os_vm_offset_t offset = search_for_embedded_core(runtime_path);
+ runtime_path = os_get_runtime_executable_path(0);
+ if (runtime_path || saved_runtime_path) {
+ os_vm_offset_t offset = search_for_embedded_core(
+ runtime_path ? runtime_path : saved_runtime_path);
if (offset != -1) {
embedded_core_offset = offset;
- core = runtime_path;
+ core = (runtime_path ? runtime_path :
+ copied_string(saved_runtime_path));
} else {
free(runtime_path);
}

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-src_runtime_runtime_h,v 1.1 2009/11/17 10:45:00 pirofti Exp $
--- src/runtime/runtime.h.orig Mon Jun 22 06:00:14 2009
+++ src/runtime/runtime.h Mon Jun 29 07:53:42 2009
@@ -254,4 +254,7 @@ struct runtime_options {
size_t thread_control_stack_size;
};
+/* saved runtime path computed from argv[0] */
+extern char *saved_runtime_path;
+
#endif /* _SBCL_RUNTIME_H_ */

View File

@ -0,0 +1,75 @@
$OpenBSD: patch-src_runtime_save_c,v 1.1 2009/11/17 10:45:00 pirofti Exp $
Fall back to saved_runtime_path if os_get_runtime_executable_path(0)
returns NULL.
Search for the current build_id when loading the runtime from disk to
save an executable core. This provided some protection against
accidentally embedding a core in the wrong runtime, which may be more
likely when using saved_runtime_path.
--- src/runtime/save.c.orig Sat Jan 17 02:43:57 2009
+++ src/runtime/save.c Mon Jun 29 07:53:42 2009
@@ -376,6 +376,25 @@ save_to_filehandle(FILE *file, char *filename, lispobj
exit(0);
}
+/* Check if the build_id for the current runtime is present in a
+ * buffer. */
+int
+check_runtime_build_id(void *buf, size_t size)
+{
+ size_t idlen;
+ char *pos;
+
+ idlen = strlen(build_id) - 1;
+ while ((pos = memchr(buf, build_id[0], size)) != NULL) {
+ size -= (pos + 1) - (char *)buf;
+ buf = (pos + 1);
+ if (idlen <= size && memcmp(buf, build_id + 1, idlen) == 0)
+ return 1;
+ }
+
+ return 0;
+}
+
/* Slurp the executable portion of the runtime into a malloced buffer
* and return it. Places the size in bytes of the runtime into
* 'size_out'. Returns NULL if the runtime cannot be loaded from
@@ -407,6 +426,12 @@ load_runtime(char *runtime_path, size_t *size_out)
goto lose;
}
+ if (!check_runtime_build_id(buf, size)) {
+ fprintf(stderr, "Failed to locate current build_id in runtime: %s\n",
+ runtime_path);
+ goto lose;
+ }
+
fclose(input);
*size_out = size;
return buf;
@@ -453,15 +478,19 @@ prepare_to_save(char *filename, boolean prepend_runtim
char *runtime_path;
if (prepend_runtime) {
- runtime_path = os_get_runtime_executable_path();
+ runtime_path = os_get_runtime_executable_path(0);
- if (runtime_path == NULL) {
+ if (runtime_path == NULL && saved_runtime_path == NULL) {
fprintf(stderr, "Unable to get default runtime path.\n");
return NULL;
}
- *runtime_bytes = load_runtime(runtime_path, runtime_size);
- free(runtime_path);
+ if (runtime_path == NULL)
+ *runtime_bytes = load_runtime(saved_runtime_path, runtime_size);
+ else {
+ *runtime_bytes = load_runtime(runtime_path, runtime_size);
+ free(runtime_path);
+ }
if (*runtime_bytes == NULL)
return 0;

View File

@ -1,12 +0,0 @@
$OpenBSD: patch-tests_subr.sh,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
--- tests/subr.sh.orig Fri Dec 28 11:46:57 2007
+++ tests/subr.sh Thu Apr 10 14:13:34 2008
@@ -29,7 +29,7 @@ set -a # export all variables at assignment-time.
SBCL_HOME="$SBCL_PWD/../contrib"
SBCL_CORE="$SBCL_PWD/../output/sbcl.core"
SBCL_RUNTIME="$SBCL_PWD/../src/runtime/sbcl"
-SBCL_ARGS="--noinform --no-sysinit --no-userinit --noprint --disable-debugger"
+SBCL_ARGS="--noinform --dynamic-space-size 600 --no-sysinit --no-userinit --noprint --disable-debugger"
# Scripts that use these variables should quote them.
TEST_BASENAME="$(basename $0)"

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-tests_timer_impure_lisp,v 1.1 2009/11/17 10:45:00 pirofti Exp $
The timer scheduler seems to only run one timer per SIGALRM and
OpenBSD only delivers ~50 SIGALRMs per second, so it takes ~5 secs to
trigger 200 timers.
--- tests/timer.impure.lisp.orig Mon Apr 6 01:54:27 2009
+++ tests/timer.impure.lisp Thu Jun 4 07:31:02 2009
@@ -159,7 +159,7 @@
(let ((time (1+ (get-universal-time))))
(loop repeat 200 do
(schedule-timer (make-timer (lambda ())) time :absolute-p t))
- (sleep 2)
+ (sleep 6)
(assert (zerop (length (sb-impl::%pqueue-contents sb-impl::*schedule*))))))
(with-test (:name (:with-timeout :timeout))

2
lang/sbcl/pkg/PFRAG.i386 Normal file
View File

@ -0,0 +1,2 @@
@comment $OpenBSD: PFRAG.i386,v 1.1 2009/11/17 10:45:00 pirofti Exp $
lib/sbcl/sb-rotate-byte/x86-vm.fasl

View File

@ -1,5 +1,6 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
bin/sbcl
@comment $OpenBSD: PLIST,v 1.2 2009/11/17 10:45:00 pirofti Exp $
%%i386%%
@bin bin/sbcl
@info info/asdf.info
@info info/sbcl.info
lib/sbcl/
@ -83,7 +84,14 @@ lib/sbcl/sb-grovel/foreign-glue.lisp
lib/sbcl/sb-grovel/sb-grovel.asd
lib/sbcl/sb-grovel/sb-grovel.fasl
lib/sbcl/sb-introspect/
lib/sbcl/sb-introspect/introspect.fasl
lib/sbcl/sb-introspect/introspect.lisp
lib/sbcl/sb-introspect/sb-introspect.asd
lib/sbcl/sb-introspect/sb-introspect.fasl
lib/sbcl/sb-introspect/test-driver.lisp
lib/sbcl/sb-introspect/test.lisp
lib/sbcl/sb-introspect/xref-test-data.lisp
lib/sbcl/sb-introspect/xref-test.lisp
lib/sbcl/sb-md5/
lib/sbcl/sb-md5/md5-tests.lisp
lib/sbcl/sb-md5/md5.fasl
@ -104,6 +112,8 @@ lib/sbcl/sb-posix/macros.lisp
lib/sbcl/sb-posix/posix-tests.lisp
lib/sbcl/sb-posix/sb-posix.asd
lib/sbcl/sb-posix/sb-posix.fasl
lib/sbcl/sb-queue/
lib/sbcl/sb-queue/sb-queue.fasl
lib/sbcl/sb-rotate-byte/
lib/sbcl/sb-rotate-byte/compiler.fasl
lib/sbcl/sb-rotate-byte/compiler.lisp
@ -115,7 +125,6 @@ lib/sbcl/sb-rotate-byte/rotate-byte.fasl
lib/sbcl/sb-rotate-byte/rotate-byte.lisp
lib/sbcl/sb-rotate-byte/sb-rotate-byte.asd
lib/sbcl/sb-rotate-byte/sb-rotate-byte.fasl
lib/sbcl/sb-rotate-byte/x86-vm.fasl
lib/sbcl/sb-rotate-byte/x86-vm.lisp
lib/sbcl/sb-rt/
lib/sbcl/sb-rt/rt.fasl
@ -162,7 +171,6 @@ share/doc/sbcl/BUGS
share/doc/sbcl/COPYING
share/doc/sbcl/CREDITS
share/doc/sbcl/NEWS
share/doc/sbcl/SUPPORT
share/doc/sbcl/asdf.pdf
share/doc/sbcl/html/
share/doc/sbcl/html/asdf/
@ -192,8 +200,7 @@ share/doc/sbcl/html/asdf/missing-bits-in-implementation.html
share/doc/sbcl/html/sbcl/
share/doc/sbcl/html/sbcl/ANSI-Conformance.html
share/doc/sbcl/html/sbcl/Accessing-Foreign-Values.html
share/doc/sbcl/html/sbcl/Additional-Distributed-Documentation.html
share/doc/sbcl/html/sbcl/Automatic-Recompilation-of-Stale-Fasls.html
share/doc/sbcl/html/sbcl/Additional-Documentation-Files.html
share/doc/sbcl/html/sbcl/Beyond-the-ANSI-Standard.html
share/doc/sbcl/html/sbcl/Binary-stream-methods.html
share/doc/sbcl/html/sbcl/Bivalent-Streams.html
@ -214,6 +221,7 @@ share/doc/sbcl/html/sbcl/Class-sb_002dgray_003afundamental_002dcharacter_002dstr
share/doc/sbcl/html/sbcl/Class-sb_002dgray_003afundamental_002dinput_002dstream.html
share/doc/sbcl/html/sbcl/Class-sb_002dgray_003afundamental_002doutput_002dstream.html
share/doc/sbcl/html/sbcl/Class-sb_002dgray_003afundamental_002dstream.html
share/doc/sbcl/html/sbcl/Class-sb_002dposix_003aflock.html
share/doc/sbcl/html/sbcl/Class-sb_002dposix_003apasswd.html
share/doc/sbcl/html/sbcl/Class-sb_002dposix_003astat.html
share/doc/sbcl/html/sbcl/Class-sb_002dposix_003atermios.html
@ -222,6 +230,7 @@ share/doc/sbcl/html/sbcl/Coercing-Foreign-Values.html
share/doc/sbcl/html/sbcl/Colophon.html
share/doc/sbcl/html/sbcl/Command-Line-Options.html
share/doc/sbcl/html/sbcl/Command_002dline-arguments.html
share/doc/sbcl/html/sbcl/Commercial-Support.html
share/doc/sbcl/html/sbcl/Common-Lisp-Books.html
share/doc/sbcl/html/sbcl/Compiler-Errors.html
share/doc/sbcl/html/sbcl/Compiler-Policy.html
@ -235,6 +244,7 @@ share/doc/sbcl/html/sbcl/Condition-sb_002dext_003apackage_002dlocked_002derror.h
share/doc/sbcl/html/sbcl/Condition-sb_002dext_003asymbol_002dpackage_002dlocked_002derror.html
share/doc/sbcl/html/sbcl/Condition-sb_002dthread_003ainterrupt_002dthread_002derror.html
share/doc/sbcl/html/sbcl/Condition-sb_002dthread_003ajoin_002dthread_002derror.html
share/doc/sbcl/html/sbcl/Condition-sb_002dthread_003athread_002derror.html
share/doc/sbcl/html/sbcl/Contributed-Modules.html
share/doc/sbcl/html/sbcl/Controlling-Verbosity.html
share/doc/sbcl/html/sbcl/Customization-Hooks-for-Users.html
@ -265,6 +275,7 @@ share/doc/sbcl/html/sbcl/Exiting-Commands.html
share/doc/sbcl/html/sbcl/Extensible-Streams.html
share/doc/sbcl/html/sbcl/Extensions.html
share/doc/sbcl/html/sbcl/External-Foreign-Variables.html
share/doc/sbcl/html/sbcl/FASL-Format.html
share/doc/sbcl/html/sbcl/File_002ddescriptors.html
share/doc/sbcl/html/sbcl/Filenames.html
share/doc/sbcl/html/sbcl/Foreign-Data-Structure-Examples.html
@ -275,12 +286,14 @@ share/doc/sbcl/html/sbcl/Foreign-Type-Specifiers.html
share/doc/sbcl/html/sbcl/Foreign-Types-and-Lisp-Types.html
share/doc/sbcl/html/sbcl/Foreign-Types.html
share/doc/sbcl/html/sbcl/Foreign-Variables.html
share/doc/sbcl/html/sbcl/Foreign-threads.html
share/doc/sbcl/html/sbcl/Function-Index.html
share/doc/sbcl/html/sbcl/Function-Names.html
share/doc/sbcl/html/sbcl/Function-Parameters.html
share/doc/sbcl/html/sbcl/Function-Return-Values.html
share/doc/sbcl/html/sbcl/Function-Tracing.html
share/doc/sbcl/html/sbcl/Function-common_002dlisp_003aed.html
share/doc/sbcl/html/sbcl/Function-common_002dlisp_003amake_002dhash_002dtable.html
share/doc/sbcl/html/sbcl/Function-common_002dlisp_003arequire.html
share/doc/sbcl/html/sbcl/Function-sb_002dalien_003aload_002dshared_002dobject.html
share/doc/sbcl/html/sbcl/Function-sb_002dbsd_002dsockets_003aget_002dhost_002dby_002daddress.html
@ -305,8 +318,11 @@ share/doc/sbcl/html/sbcl/Function-sb_002dcover_003arestore_002dcoverage_002dfrom
share/doc/sbcl/html/sbcl/Function-sb_002dcover_003asave_002dcoverage.html
share/doc/sbcl/html/sbcl/Function-sb_002dcover_003asave_002dcoverage_002din_002dfile.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003aadd_002dimplementation_002dpackage.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003aarray_002dstorage_002dvector.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003acancel_002dfinalization.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003afinalize.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003ahash_002dtable_002dsynchronized_002dp.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003ahash_002dtable_002dweakness.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003alist_002dall_002dtimers.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003alock_002dpackage.html
share/doc/sbcl/html/sbcl/Function-sb_002dext_003amake_002dtimer.html
@ -344,11 +360,21 @@ share/doc/sbcl/html/sbcl/Function-sb_002dmd5_003amd5sum_002dfile.html
share/doc/sbcl/html/sbcl/Function-sb_002dmd5_003amd5sum_002dsequence.html
share/doc/sbcl/html/sbcl/Function-sb_002dmd5_003amd5sum_002dstream.html
share/doc/sbcl/html/sbcl/Function-sb_002dmd5_003amd5sum_002dstring.html
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003afile_002ddescriptor.html
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003afilename.html
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003agetcwd.html
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003areadlink.html
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003asyslog.html
share/doc/sbcl/html/sbcl/Function-sb_002dprofile_003areport.html
share/doc/sbcl/html/sbcl/Function-sb_002dprofile_003areset.html
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003adequeue.html
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aenqueue.html
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003alist_002dqueue_002dcontents.html
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003amake_002dqueue.html
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aqueue_002dcount.html
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aqueue_002dempty_002dp.html
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aqueue_002dname.html
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aqueuep.html
share/doc/sbcl/html/sbcl/Function-sb_002drotate_002dbyte_003arotate_002dbyte.html
share/doc/sbcl/html/sbcl/Function-sb_002dsprof_003aprofile_002dcall_002dcounts.html
share/doc/sbcl/html/sbcl/Function-sb_002dsprof_003areport.html
@ -361,9 +387,7 @@ share/doc/sbcl/html/sbcl/Function-sb_002dthread_003acondition_002dnotify.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003acondition_002dwait.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003aget_002dmutex.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003ainterrupt_002dthread.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003ainterrupt_002dthread_002derror_002dthread.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003ajoin_002dthread.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003ajoin_002dthread_002derror_002dthread.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003alist_002dall_002dthreads.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003amake_002dmutex.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003amake_002dsemaphore.html
@ -375,8 +399,11 @@ share/doc/sbcl/html/sbcl/Function-sb_002dthread_003arelease_002dmutex.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003asemaphore_002dcount.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003asemaphore_002dname.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003asignal_002dsemaphore.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003asymbol_002dvalue_002din_002dthread.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003aterminate_002dthread.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003athread_002dalive_002dp.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003athread_002derror_002dthread.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003athread_002dname.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003athread_002dyield.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003await_002don_002dsemaphore.html
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003awaitqueue_002dname.html
@ -423,10 +450,13 @@ share/doc/sbcl/html/sbcl/Generic_002dFunction-sb_002dgray_003astream_002dwrite_0
share/doc/sbcl/html/sbcl/Generic_002dFunction-sb_002dgray_003astream_002dwrite_002dsequence.html
share/doc/sbcl/html/sbcl/Generic_002dFunction-sb_002dgray_003astream_002dwrite_002dstring.html
share/doc/sbcl/html/sbcl/Getting-Existing-Programs-to-Run.html
share/doc/sbcl/html/sbcl/Getting-Support-and-Reporting-Bugs.html
share/doc/sbcl/html/sbcl/Global-and-Always_002dBound-variables.html
share/doc/sbcl/html/sbcl/Gray-Streams-classes.html
share/doc/sbcl/html/sbcl/Gray-Streams-examples.html
share/doc/sbcl/html/sbcl/Gray-Streams.html
share/doc/sbcl/html/sbcl/Handling-of-Types.html
share/doc/sbcl/html/sbcl/Hash-Table-Extensions.html
share/doc/sbcl/html/sbcl/History-and-Implementation-of-SBCL.html
share/doc/sbcl/html/sbcl/How-Arguments-are-Printed.html
share/doc/sbcl/html/sbcl/How-the-Source-is-Found.html
@ -434,10 +464,8 @@ share/doc/sbcl/html/sbcl/INET-Domain-Sockets.html
share/doc/sbcl/html/sbcl/Idiosyncrasies.html
share/doc/sbcl/html/sbcl/Implementation-Limitations.html
share/doc/sbcl/html/sbcl/Implementation-Packages.html
share/doc/sbcl/html/sbcl/Implementation-_0028Linux-x86_0029.html
share/doc/sbcl/html/sbcl/Implementation-_0028Linux-x86_002fx86_002d64_0029.html
share/doc/sbcl/html/sbcl/Information-Commands.html
share/doc/sbcl/html/sbcl/Initialization-Examples.html
share/doc/sbcl/html/sbcl/Initialization-File-Semantics.html
share/doc/sbcl/html/sbcl/Initialization-Files.html
share/doc/sbcl/html/sbcl/Initialization-and-Exit-Hooks.html
share/doc/sbcl/html/sbcl/Input-stream-methods.html
@ -456,6 +484,9 @@ share/doc/sbcl/html/sbcl/Local-_0028Unix_0029-Domain-Sockets.html
share/doc/sbcl/html/sbcl/Macro-common_002dlisp_003astep.html
share/doc/sbcl/html/sbcl/Macro-common_002dlisp_003atrace.html
share/doc/sbcl/html/sbcl/Macro-common_002dlisp_003auntrace.html
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003adefglobal.html
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003adefine_002dhash_002dtable_002dtest.html
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003awith_002dlocked_002dhash_002dtable.html
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003awith_002dunlocked_002dpackages.html
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003awithout_002dpackage_002dlocks.html
share/doc/sbcl/html/sbcl/Macro-sb_002dprofile_003aprofile.html
@ -465,7 +496,10 @@ share/doc/sbcl/html/sbcl/Macro-sb_002dsprof_003awith_002dsampling.html
share/doc/sbcl/html/sbcl/Macro-sb_002dthread_003awith_002dmutex.html
share/doc/sbcl/html/sbcl/Macro-sb_002dthread_003awith_002drecursive_002dlock.html
share/doc/sbcl/html/sbcl/Metaobject-Protocol.html
share/doc/sbcl/html/sbcl/Method-sb_002dbsd_002dsockets_003asocket_002dmake_002dstream-_0028_0028socket-socket_0029-_0026key-input-output-_0028element_002dtype-_0027character_0029-_0028buffering-full_0029-_0028external_002dformat-default_0029-timeout_0029.html
share/doc/sbcl/html/sbcl/Methods-common-to-all-streams.html
share/doc/sbcl/html/sbcl/Miscellaneous-Efficiency-Issues.html
share/doc/sbcl/html/sbcl/Miscellaneous-Extensions.html
share/doc/sbcl/html/sbcl/Modular-arithmetic.html
share/doc/sbcl/html/sbcl/More-Common-Lisp-Information.html
share/doc/sbcl/html/sbcl/More-SBCL-Information.html
@ -492,6 +526,7 @@ share/doc/sbcl/html/sbcl/Profiling.html
share/doc/sbcl/html/sbcl/Querying-the-process-environment.html
share/doc/sbcl/html/sbcl/Quit.html
share/doc/sbcl/html/sbcl/Read-Errors.html
share/doc/sbcl/html/sbcl/Reporting-Bugs.html
share/doc/sbcl/html/sbcl/Resolution-of-Name-Conflicts.html
share/doc/sbcl/html/sbcl/Running-external-programs.html
share/doc/sbcl/html/sbcl/Running-from-Emacs.html
@ -504,6 +539,7 @@ share/doc/sbcl/html/sbcl/Sessions_002fDebugging.html
share/doc/sbcl/html/sbcl/Shebang-Scripts.html
share/doc/sbcl/html/sbcl/Simple-Streams.html
share/doc/sbcl/html/sbcl/Single-Stepping.html
share/doc/sbcl/html/sbcl/Slot-access.html
share/doc/sbcl/html/sbcl/Socket-Options.html
share/doc/sbcl/html/sbcl/Sockets-Overview.html
share/doc/sbcl/html/sbcl/Source-Location-Availability.html
@ -519,13 +555,13 @@ share/doc/sbcl/html/sbcl/Statistical-Profiler.html
share/doc/sbcl/html/sbcl/Step_002dBy_002dStep-Example-of-the-Foreign-Function-Interface.html
share/doc/sbcl/html/sbcl/Stopping-SBCL.html
share/doc/sbcl/html/sbcl/Structure-sb_002dext_003atimer.html
share/doc/sbcl/html/sbcl/Structure-sb_002dqueue_003aqueue.html
share/doc/sbcl/html/sbcl/Structure-sb_002dthread_003amutex.html
share/doc/sbcl/html/sbcl/Structure-sb_002dthread_003asemaphore.html
share/doc/sbcl/html/sbcl/Structure-sb_002dthread_003athread.html
share/doc/sbcl/html/sbcl/Structure-sb_002dthread_003awaitqueue.html
share/doc/sbcl/html/sbcl/Style-Warnings.html
share/doc/sbcl/html/sbcl/Support-For-Unix.html
share/doc/sbcl/html/sbcl/System-Initialization-File.html
share/doc/sbcl/html/sbcl/The-Original-and-Actual-Source.html
share/doc/sbcl/html/sbcl/The-Parts-of-a-Compiler-Diagnostic.html
share/doc/sbcl/html/sbcl/The-Processing-Path.html
@ -539,12 +575,13 @@ share/doc/sbcl/html/sbcl/Tools-To-Help-Developers.html
share/doc/sbcl/html/sbcl/Toplevel-Options.html
share/doc/sbcl/html/sbcl/Type-Errors-at-Compile-Time.html
share/doc/sbcl/html/sbcl/Type-Index.html
share/doc/sbcl/html/sbcl/Type-conversion-functions.html
share/doc/sbcl/html/sbcl/Type-sb_002dposix_003afile_002ddescriptor.html
share/doc/sbcl/html/sbcl/Type-sb_002dposix_003afile_002ddescriptor_002ddesignator.html
share/doc/sbcl/html/sbcl/Type-sb_002dposix_003afilename.html
share/doc/sbcl/html/sbcl/Type-sb_002dposix_003afilename_002ddesignator.html
share/doc/sbcl/html/sbcl/Types.html
share/doc/sbcl/html/sbcl/Understanding-Compiler-Diagnostics.html
share/doc/sbcl/html/sbcl/Unix_002dstyle-Command-Line-Protocol.html
share/doc/sbcl/html/sbcl/Unknown-Locations-and-Interrupts.html
share/doc/sbcl/html/sbcl/User-Initialization-File.html
share/doc/sbcl/html/sbcl/Variable-Access.html
share/doc/sbcl/html/sbcl/Variable-Index.html
share/doc/sbcl/html/sbcl/Variable-Value-Availability.html
@ -561,10 +598,13 @@ share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002aexit_002dhooks_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002ainit_002dhooks_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002ainvoke_002ddebugger_002dhook_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002amodule_002dprovider_002dfunctions_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002amuffled_002dwarnings_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002asave_002dhooks_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002astack_002dallocate_002ddynamic_002dextent_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dsprof_003a_002amax_002dsamples_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dsprof_003a_002asample_002dinterval_002a.html
share/doc/sbcl/html/sbcl/Variable-sb_002dthread_003a_002acurrent_002dthread_002a.html
share/doc/sbcl/html/sbcl/Volunteer-Support.html
share/doc/sbcl/html/sbcl/Waitqueue_002fcondition-variables.html
share/doc/sbcl/html/sbcl/define_002dalien_002droutine-Example.html
share/doc/sbcl/html/sbcl/index.html
@ -573,5 +613,6 @@ share/doc/sbcl/html/sbcl/sb_002dcover.html
share/doc/sbcl/html/sbcl/sb_002dgrovel.html
share/doc/sbcl/html/sbcl/sb_002dmd5.html
share/doc/sbcl/html/sbcl/sb_002dposix.html
share/doc/sbcl/html/sbcl/sb_002dqueue.html
share/doc/sbcl/html/sbcl/sb_002drotate_002dbyte.html
share/doc/sbcl/sbcl.pdf