return copied_string(filename);
}
}
-
-/* Convert a null-terminated array of null-terminated strings (e.g.
- * argv or envp) into a Lisp list of Lisp base-strings. */
-static lispobj
-alloc_base_string_list(char *array_ptr[])
-{
- if (*array_ptr) {
- return alloc_cons(alloc_base_string(*array_ptr),
- alloc_base_string_list(1 + array_ptr));
- } else {
- return NIL;
- }
-}
\f
/* miscellaneous chattiness */
--version Print version information and exit.\n\
--core <filename> Use the specified core file instead of the default.\n\
--dynamic-space-size <MiB> Size of reserved dynamic space in megabytes.\n\
+ --control-stack-size <MiB> Size of reserved control stack in megabytes.\n\
\n\
Common toplevel options:\n\
--sysinit <filename> System-wide init-file to use instead of default.\n\
char *stem = "/sbcl.core";
char *core;
- if(!sbcl_home) sbcl_home = SBCL_HOME;
+ if (!(sbcl_home && *sbcl_home)) sbcl_home = SBCL_HOME;
lookhere = (char *) calloc(strlen(sbcl_home) +
strlen(stem) +
1,
boolean end_runtime_options = 0;
lispobj initial_function;
+ const char *sbcl_home = getenv("SBCL_HOME");
interrupt_init();
block_blockable_signals();
dynamic_space_size = strtol(argv[argi++], 0, 0) << 20;
if (errno)
lose("argument to --dynamic-space-size is not a number");
+ } else if (0 == strcmp(arg, "--control-stack-size")) {
+ ++argi;
+ if (argi >= argc)
+ lose("missing argument for --control-stack-size");
+ errno = 0;
+ thread_control_stack_size = strtol(argv[argi++], 0, 0) << 20;
+ if (errno)
+ lose("argument to --dynamic-space-size is not a number");
} else if (0 == strcmp(arg, "--debug-environment")) {
int n = 0;
printf("; Commandline arguments:\n");
}
}
- /* Align down to multiple of page_table page size */
- dynamic_space_size = (dynamic_space_size/PAGE_BYTES) * PAGE_BYTES;
+ /* Align down to multiple of page_table page size, and to the appropriate
+ * stack alignment. */
+ dynamic_space_size &= ~(PAGE_BYTES-1);
+ thread_control_stack_size &= ~(CONTROL_STACK_ALIGNMENT_BYTES-1);
/* KLUDGE: os_vm_page_size is set by os_init(), and on some
* systems (e.g. Alpha) arch_init() needs need os_vm_page_size, so
}
}
- /* Make sure that SBCL_HOME is set, unless loading an embedded core. */
- if (!getenv("SBCL_HOME") && embedded_core_offset == 0) {
+ /* Make sure that SBCL_HOME is set and not the empty string,
+ unless loading an embedded core. */
+ if (!(sbcl_home && *sbcl_home) && embedded_core_offset == 0) {
char *envstring, *copied_core, *dir;
char *stem = "SBCL_HOME=";
copied_core = copied_string(core);