diff --git a/kernel/tasks.c b/kernel/tasks.c index c941e57e..2dec1348 100644 --- a/kernel/tasks.c +++ b/kernel/tasks.c @@ -419,6 +419,7 @@ static int load_task(load_args_t* largs) //elf_section_header_t sec_header; vfs_node_t* node; task_t* curr_task = per_core(current_task); + int err; if (!largs) return -EINVAL; @@ -427,7 +428,12 @@ static int load_task(load_args_t* largs) if (!node) return -EINVAL; - read_fs(node, (uint8_t*)&header, sizeof(elf_header_t), 0); + err = read_fs(node, (uint8_t*)&header, sizeof(elf_header_t), 0); + if (err < 0) { + kprintf("read_fs failed: %d\n", err); + return err; + } + if (BUILTIN_EXPECT(header.ident.magic != ELF_MAGIC, 0)) goto invalid; @@ -595,6 +601,12 @@ static int load_task(load_args_t* largs) invalid: kprintf("Invalid executable!\n"); + kprintf("magic number 0x%x\n", (uint32_t) header.ident.magic); + kprintf("header type 0x%x\n", (uint32_t) header.type); + kprintf("machine type 0x%x\n", (uint32_t) header.machine); + kprintf("elf ident class 0x%x\n", (uint32_t) header.ident._class); + kprintf("elf identdata !0x%x\n", header.ident.data); + kprintf("program entry point 0x%x\n", (size_t) header.entry); return -EINVAL; }