X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fruntime.c;h=0307d055fc20a220daf39b74151b9a0d77e554e9;hb=a7c2a16d0c2be6709becc962be1cb5e0aeda68c6;hp=d39b892030b3f668d866b08853c924df282b709e;hpb=6cbe4d8ba6d7bc469d03a72514c789b1f3944878;p=sbcl.git diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index d39b892..0307d05 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include @@ -21,6 +22,10 @@ #include #include +#if defined(SVR4) || defined(__linux__) +#include +#endif + #include "signal.h" #include "runtime.h" @@ -35,9 +40,6 @@ #include "interr.h" #include "monitor.h" #include "validate.h" -#if defined GENCGC -#include "gencgc.h" -#endif #include "core.h" #include "save.h" #include "lispregs.h" @@ -48,13 +50,11 @@ #endif /* SIGINT handler that invokes the monitor (for when Lisp isn't up to it) */ - static void sigint_handler(int signal, siginfo_t *info, void *void_context) { - printf("\nSIGINT hit at 0x%08lX\n", - (unsigned long) *os_context_pc_addr(void_context)); - ldb_monitor(); + lose("\nSIGINT hit at 0x%08lX\n", + (unsigned long) *os_context_pc_addr(void_context)); } /* (This is not static, because we want to be able to call it from @@ -148,10 +148,10 @@ main(int argc, char *argv[], char *envp[]) lose("more than one core file specified"); } else { ++argi; - core = copied_string(argv[argi]); if (argi >= argc) { lose("missing filename for --core argument"); } + core = copied_string(argv[argi]); ++argi; } } else if (0 == strcmp(arg, "--end-runtime-options")) { @@ -195,15 +195,19 @@ main(int argc, char *argv[], char *envp[]) char *sbcl_home = getenv("SBCL_HOME"); if (sbcl_home) { char *lookhere; - lookhere = (char *) calloc(strlen("/sbcl.core") + strlen(sbcl_home) + 1, - sizeof(char)); - sprintf(lookhere, "%s/sbcl.core", sbcl_home); + char *stem = "/sbcl.core"; + lookhere = (char *) calloc(strlen(sbcl_home) + + strlen(stem) + + 1, + sizeof(char)); + sprintf(lookhere, "%s%s", sbcl_home, stem); core = copied_existing_filename_or_null(lookhere); free(lookhere); } else { core = copied_existing_filename_or_null("/usr/lib/sbcl.core"); if (!core) { - core = copied_existing_filename_or_null("/usr/local/lib/sbcl.core"); + core = + copied_existing_filename_or_null("/usr/local/lib/sbcl.core"); } } if (!core) { @@ -213,25 +217,25 @@ main(int argc, char *argv[], char *envp[]) if (!noinform) { printf( -"This is SBCL " SBCL_VERSION_STRING ", an implementation of ANSI Common Lisp. - -SBCL is derived from the CMU CL system created at Carnegie Mellon University. -Besides software and documentation originally created at Carnegie Mellon -University, SBCL contains some software originally from the Massachusetts -Institute of Technology, Symbolics Incorporated, and Xerox Corporation, and -material contributed by volunteers since the release of CMU CL into the -public domain. See the CREDITS file in the distribution for more information. - -SBCL is a free software system, provided as is, with absolutely no warranty. -It is mostly in the public domain, but also includes some software copyrighted - Massachusetts Institute of Technology, 1986; - Symbolics, Inc., 1989, 1990, 1991, 1992; and - Xerox Corporation, 1985, 1986, 1987, 1988, 1989, 1990 -used under BSD-style licenses allowing copying only under certain conditions. -See the COPYING file in the distribution for more information. - -More information on SBCL is available at . -"); +"This is SBCL %s, an implementation of ANSI Common Lisp.\n\ +\n\ +SBCL is derived from the CMU CL system created at Carnegie Mellon University.\n\ +Besides software and documentation originally created at Carnegie Mellon\n\ +University, SBCL contains some software originally from the Massachusetts\n\ +Institute of Technology, Symbolics Incorporated, and Xerox Corporation, and\n\ +material contributed by volunteers since the release of CMU CL into the\n\ +public domain. See the CREDITS file in the distribution for more information.\n\ +\n\ +SBCL is a free software system, provided as is, with absolutely no warranty.\n\ +It is mostly in the public domain, but also includes some software copyrighted\n\ + Massachusetts Institute of Technology, 1986;\n\ + Symbolics, Inc., 1989, 1990, 1991, 1992; and\n\ + Xerox Corporation, 1985, 1986, 1987, 1988, 1989, 1990\n\ +used under BSD-style licenses allowing copying only under certain conditions.\n\ +See the COPYING file in the distribution for more information.\n\ +\n\ +More information about SBCL is available at .\n\ +", SBCL_VERSION_STRING); fflush(stdout); } @@ -245,13 +249,8 @@ More information on SBCL is available at . define_var("nil", NIL, 1); define_var("t", T, 1); - set_lossage_handler(ldb_monitor); + set_lossage_handler(monitor_or_something); -#if 0 - os_init(); - gc_init(); - validate(); -#endif globals_init(); initial_function = load_core_file(core); @@ -261,17 +260,11 @@ More information on SBCL is available at . SHOW("freeing core"); free(core); -#if defined GENCGC - gencgc_pickup_dynamic(); -#else -#endif + gc_initialize_pointers(); #ifdef BINDING_STACK_POINTER SetSymbolValue(BINDING_STACK_POINTER, BINDING_STACK_START); #endif -#if defined INTERNAL_GC_TRIGGER && !defined __i386__ - SetSymbolValue(INTERNAL_GC_TRIGGER, make_fixnum(-1)); -#endif interrupt_init();