diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-04-19 16:14:46 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-04-19 16:14:46 -0700 |
commit | 15b3ac1e94a482ec22da49932475ec76b3f5392b (patch) | |
tree | 5fb271a409e043fbceaffa2ee11bcc797848a6b5 | |
parent | e474878db4a406fb0bc7f6051314352f4406fcd2 (diff) | |
download | pk-15b3ac1e94a482ec22da49932475ec76b3f5392b.zip pk-15b3ac1e94a482ec22da49932475ec76b3f5392b.tar.gz pk-15b3ac1e94a482ec22da49932475ec76b3f5392b.tar.bz2 |
Fix loading of misaligned ELF segments
-rw-r--r-- | pk/elf.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -72,7 +72,7 @@ void load_elf(const char* fn, elf_info* info) memset((void*)vaddr + ph[i].p_filesz, 0, ph[i].p_memsz - ph[i].p_filesz); \ } else { \ int flags2 = flags | (prepad ? MAP_POPULATE : 0); \ - if (__do_mmap(vaddr - prepad, ph[i].p_filesz + prepad, -1, flags2, file, ph[i].p_offset - prepad) != vaddr) \ + if (__do_mmap(vaddr - prepad, ph[i].p_filesz + prepad, -1, flags2, file, ph[i].p_offset - prepad) != vaddr - prepad) \ goto fail; \ memset((void*)vaddr - prepad, 0, prepad); \ size_t mapped = ROUNDUP(ph[i].p_filesz + prepad, RISCV_PGSIZE) - prepad; \ |