diff --git a/data/settings/kernel/drivers/kernel b/data/settings/kernel/drivers/kernel index f27ac82378..8d325b8c8a 100644 --- a/data/settings/kernel/drivers/kernel +++ b/data/settings/kernel/drivers/kernel @@ -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 diff --git a/src/system/boot/loader/elf.cpp b/src/system/boot/loader/elf.cpp index 4940f0e822..fc25856a38 100644 --- a/src/system/boot/loader/elf.cpp +++ b/src/system/boot/loader/elf.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -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 @@ elf_load_image(int fd, preloaded_image *image) 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); diff --git a/src/system/boot/loader/elf.h b/src/system/boot/loader/elf.h index 29b991ee6a..8a899b6aff 100644 --- a/src/system/boot/loader/elf.h +++ b/src/system/boot/loader/elf.h @@ -10,6 +10,7 @@ #include +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); diff --git a/src/system/boot/loader/loader.cpp b/src/system/boot/loader/loader.cpp index cce476bfdf..37d06e73d5 100644 --- a/src/system/boot/loader/loader.cpp +++ b/src/system/boot/loader/loader.cpp @@ -60,6 +60,7 @@ load_kernel(stage2_args *args, Directory *volume) dprintf("load kernel...\n"); + elf_init(); status_t status = elf_load_image(fd, &gKernelArgs.kernel_image); close(fd);