diff options
Diffstat (limited to 'fs/elf.c')
| -rw-r--r-- | fs/elf.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -1,6 +1,7 @@ #include "kernel/kernel.h" #include <stdint.h> #include "ext2.h" +#include "lib/string/string.h" #define EI_NIDENT 16 @@ -149,14 +150,14 @@ uint32_t load_elf(char *name, uint32_t *alloc) //uint8_t *data=vaddr+phdr->p_offset; uint8_t *data=vaddr+phdr->p_offset+phdr->p_filesz-1; - for(uint8_t *addr=phdr->p_vaddr+phdr->p_filesz-1; addr>=phdr->p_vaddr; addr--) + for(uint8_t *addr=phdr->p_vaddr+phdr->p_filesz-1; (uint32_t)addr>=phdr->p_vaddr; addr--) { *addr=*data; data--; } // let's zero init bss and set alloc (heap) just right after it! - for(uint8_t *addr=phdr->p_vaddr+phdr->p_filesz; addr<=phdr->p_vaddr+phdr->p_memsz; addr++) + for(uint8_t *addr=phdr->p_vaddr+phdr->p_filesz; (uint32_t)addr<=phdr->p_vaddr+phdr->p_memsz; addr++) { *addr=0; } |
