X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fruntime.c;h=b84d6aff34a087dd84f52cf2b9e81b50eb224b0f;hb=e034d6a8d034a3f8ca755bf89fae850f6387c505;hp=4c1ea7130e02a5fd7298e1080210f6228450c4d5;hpb=796f8af2cc2b3876b82f638e75b1ceaffedf226d;p=sbcl.git diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index 4c1ea71..b84d6af 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -179,6 +179,14 @@ Common toplevel options:\n\ --userinit Per-user init-file to use instead of default.\n\ --no-sysinit Inhibit processing of any system-wide init-file.\n\ --no-userinit Inhibit processing of any per-user init-file.\n\ + --disable-debugger Invoke sb-ext:disable-debugger.\n\ + --noprint Run a Read-Eval Loop without printing results.\n\ + --script [] Skip #! line, disable debugger, avoid verbosity.\n\ + --quit Exit with code 0 after option processing.\n\ + --non-interactive Sets both --quit and --disable-debugger.\n\ +Common toplevel options that are processed in order:\n\ + --eval
Form to eval when processing this option.\n\ + --load File to load when processing this option.\n\ \n\ User options are not processed by SBCL. All runtime options must\n\ appear before toplevel options, and all toplevel options must\n\ @@ -444,6 +452,15 @@ main(int argc, char *argv[], char *envp[]) end_runtime_options = 1; ++argi; break; + } else if (0 == strcmp(arg, "--merge-core-pages")) { + ++argi; + merge_core_pages = 1; + } else if (0 == strcmp(arg, "--no-merge-core-pages")) { + ++argi; + merge_core_pages = 0; + } else if (0 == strcmp(arg, "--default-merge-core-pages")) { + ++argi; + merge_core_pages = -1; } else { /* This option was unrecognized as a runtime option, * so it must be a toplevel option or a user option, @@ -482,6 +499,9 @@ main(int argc, char *argv[], char *envp[]) /* Align down to multiple of page_table page size, and to the appropriate * stack alignment. */ dynamic_space_size &= ~(PAGE_BYTES-1); +#ifdef LISP_FEATURE_GENCGC + dynamic_space_size &= ~(GENCGC_CARD_BYTES-1); +#endif thread_control_stack_size &= ~(CONTROL_STACK_ALIGNMENT_BYTES-1); /* Preserve the runtime options for possible future core saving */ @@ -522,6 +542,19 @@ main(int argc, char *argv[], char *envp[]) fflush(stdout); } + if (embedded_core_offset == 0) { + /* Here we make a last attempt at recognizing an embedded core, + * so that a file with an embedded core is a valid argument to + * --core. We take care that any decisions on special behaviour + * (suppressed banner, embedded options) have already been made + * before we reach this block, so that there is no observable + * difference between "embedded" and "bare" images given to + * --core. */ + os_vm_offset_t offset = search_for_embedded_core(core); + if (offset != -1) + embedded_core_offset = offset; + } + #if defined(SVR4) || defined(__linux__) || defined(__NetBSD__) tzset(); #endif