diff -u -r1.7 -r1.8 --- fiasco-rel/l4/kernel/fiasco/src/kern/ux/loader.cpp 14 Aug 2003 11:14:36 -0000 1.7 +++ fiasco-rel/l4/kernel/fiasco/src/kern/ux/loader.cpp 25 Nov 2003 09:06:26 -0000 1.8 @@ -114,6 +114,9 @@ // Record entry point (initial EIP) module->reserved = eh.e_entry; + module->mod_start = 0xffffffff; + module->mod_end = 0; + // Load all program sections for (i = 0, offset = eh.e_phoff; i < eh.e_phnum; i++) { @@ -127,6 +130,10 @@ if (ph.p_type != PT_LOAD) continue; + // more recent binutils add an empty stack section + if (ph.p_memsz == 0) + continue; + // Check if section fits into memory if (ph.p_vaddr + ph.p_memsz > memsize) goto error; @@ -141,9 +148,9 @@ memset ((void *)(phys_base + ph.p_vaddr + ph.p_filesz), 0, ph.p_memsz - ph.p_filesz); - if (i == 0) + if (ph.p_vaddr < module->mod_start) module->mod_start = ph.p_vaddr; - if (i == eh.e_phnum - 1) + if (ph.p_vaddr+ph.p_memsz > module->mod_end) module->mod_end = ph.p_vaddr + ph.p_memsz; }