Author: tqh Date: 2009-12-15 16:55:16 +0100 (Tue, 15 Dec 2009) New Revision: 34666 Changeset: http://dev.haiku-os.org/changeset/34666/haiku Modified: haiku/trunk/data/settings/kernel/drivers/kernel haiku/trunk/src/system/boot/loader/elf.cpp haiku/trunk/src/system/boot/loader/elf.h haiku/trunk/src/system/boot/loader/loader.cpp Log: Implemented TODO about not loading symbols at boot. This saves ~0.5s of boot time here, but I suspect it might be better for CD. Enabled loadSymbols in kernel settings so the behavior should be the same as before this change. Modified: haiku/trunk/data/settings/kernel/drivers/kernel =================================================================== --- haiku/trunk/data/settings/kernel/drivers/kernel 2009-12-15 12:08:36 UTC (rev 34665) +++ haiku/trunk/data/settings/kernel/drivers/kernel 2009-12-15 15:55:16 UTC (rev 34666) @@ -42,7 +42,7 @@ # Activates a hack that allows single-stepping under qemu # to work. -#load_symbols true +load_symbols true # load kernel and kernel add-on symbols, default is off #apm true Modified: haiku/trunk/src/system/boot/loader/elf.cpp =================================================================== --- haiku/trunk/src/system/boot/loader/elf.cpp 2009-12-15 12:08:36 UTC (rev 34665) +++ haiku/trunk/src/system/boot/loader/elf.cpp 2009-12-15 15:55:16 UTC (rev 34666) @@ -9,6 +9,7 @@ #include <boot/arch.h> #include <boot/platform.h> #include <boot/stage2.h> +#include <driver_settings.h> #include <elf32.h> #include <kernel.h> @@ -24,6 +25,17 @@ #endif +static bool _loadElfSymbols = false; + + +void +elf_init() { + void *settings = load_driver_settings("kernel"); + _loadElfSymbols = !get_driver_boolean_parameter(settings, "load_symbols", + false, false); +} + + static status_t verify_elf_header(struct Elf32_Ehdr &header) { @@ -370,8 +382,7 @@ image->debug_symbols = NULL; image->debug_string_table = NULL; - // ToDo: this should be enabled by kernel settings! - if (1) + if (_loadElfSymbols) load_elf_symbol_table(fd, image); free(programHeaders); Modified: haiku/trunk/src/system/boot/loader/elf.h =================================================================== --- haiku/trunk/src/system/boot/loader/elf.h 2009-12-15 12:08:36 UTC (rev 34665) +++ haiku/trunk/src/system/boot/loader/elf.h 2009-12-15 15:55:16 UTC (rev 34666) @@ -10,6 +10,7 @@ #include <boot/vfs.h> +extern void elf_init(); extern status_t elf_load_image(Directory *directory, const char *path); extern status_t elf_load_image(int fd, preloaded_image *image); Modified: haiku/trunk/src/system/boot/loader/loader.cpp =================================================================== --- haiku/trunk/src/system/boot/loader/loader.cpp 2009-12-15 12:08:36 UTC (rev 34665) +++ haiku/trunk/src/system/boot/loader/loader.cpp 2009-12-15 15:55:16 UTC (rev 34666) @@ -60,6 +60,7 @@ dprintf("load kernel...\n"); + elf_init(); status_t status = elf_load_image(fd, &gKernelArgs.kernel_image); close(fd);