diff --git a/ldb/arch.h b/ldb/arch.h
index 3947377261ac7239ac96ca74b4be1b765c25d33d..cc363b0f44bbc9117b171c5e0e36b74f08bcca3b 100644
--- a/ldb/arch.h
+++ b/ldb/arch.h
@@ -1,7 +1,7 @@
 #ifndef __ARCH_H__
 #define __ARCH_H__
 
-extern void arch_init();
+extern char *arch_init();
 extern void arch_skip_instruction();
 extern os_vm_address_t arch_get_bad_addr();
 
diff --git a/ldb/ldb.c b/ldb/ldb.c
index 537e259484679a33c4326bc898d4295083467658..9166c3f92fa685cbc29a7a53d7f657af9037864a 100644
--- a/ldb/ldb.c
+++ b/ldb/ldb.c
@@ -1,4 +1,4 @@
-/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/ldb.c,v 1.17 1992/03/22 20:02:40 wlott Exp $ */
+/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/ldb.c,v 1.18 1992/04/28 21:37:25 wlott Exp $ */
 /* Lisp kernel core debugger */
 
 #include <stdio.h>
@@ -44,7 +44,7 @@ char *argv[];
 char *envp[];
 {
     char *arg, **argptr;
-    char *core = NULL;
+    char *core = NULL, *default_core;
     boolean restore_state, monitor;
 
     number_stack_start = (char *)&monitor;
@@ -71,17 +71,19 @@ char *envp[];
 	}
     }
 
+    default_core = arch_init();
+    if (default_core == NULL)
+	default_core = "lisp.core";
+
     /* Note: the /usr/misc/.cmucl/lib/ default path is also wired into */
     /* the lisp code in .../code/save.lisp. */
 
     if (core == NULL) {
+	static char buf[MAXPATHLEN];
 	extern char *getenv();
 	char *lib = getenv("CMUCLLIB");
 
-	if (lib == NULL)
-	    core = "/usr/misc/.cmucl/lib/lisp.core";
-	else {
-	    static char buf[MAXPATHLEN];
+	if (lib != NULL) {
 	    char *dst;
 	    struct stat statbuf;
 
@@ -91,18 +93,19 @@ char *envp[];
 		    *dst++ = *lib++;
 		if (dst != buf && dst[-1] != '/')
 		    *dst++ = '/';
-		strcpy(dst, "lisp.core");
+		strcpy(dst, default_core);
 		if (stat(buf, &statbuf) == 0) {
 		    core = buf;
 		    break;
 		}
 	    } while (*lib++ == ':');
-	    if (core == NULL)
-		core = "/usr/misc/.cmucl/lib/lisp.core";
+	}
+	if (core == NULL) {
+	    strcpy(buf, "/usr/misc/.cmucl/lib/";
+	    strcat(buf, default_core);
 	}
     }
 
-    arch_init();
     os_init();
 
 #if defined(EXT_PAGER)
diff --git a/ldb/mips-arch.c b/ldb/mips-arch.c
index be504dba94e0fc58e078133bd37932c766a33071..8e0761dee1b46b4ff12e85598bc7315e00c1290d 100644
--- a/ldb/mips-arch.c
+++ b/ldb/mips-arch.c
@@ -9,8 +9,9 @@
 #include "lispregs.h"
 #include "signal.h"
 
-void arch_init()
+char *arch_init()
 {
+    return NULL;
 }
 
 os_vm_address_t arch_get_bad_addr(context)
diff --git a/ldb/sparc-arch.c b/ldb/sparc-arch.c
index bda435987a2985d079d96ff4e8adbe33605d1128..db76c73263b4ecfddead1d04008ad61673a5d27a 100644
--- a/ldb/sparc-arch.c
+++ b/ldb/sparc-arch.c
@@ -9,8 +9,9 @@
 #include "lispregs.h"
 #include "signal.h"
 
-void arch_init()
+char *arch_init()
 {
+    return NULL;
 }
 
 os_vm_address_t arch_get_bad_addr(context)