Hi Ben,
This is probably not the good fix, since now your process doesn't have
anything mapped to use his BSS :)
>> + error = target_mmap(vaddr_ps, vaddr_len,
>> + elf_prot, MAP_PRIVATE | MAP_FIXED,
>> + image_fd, eppnt->p_offset -
>> vaddr_po);
>> + if (error == -1) {
>> + goto exit_perror;
>> + }
>> }
>> vaddr_ef = vaddr + eppnt->p_filesz;
>> --- END ---
What about this fix instead, using the segment memory size rather than
the file size:
-- >8 --
@@ -2314,7 +2314,7 @@ static void load_elf_image(const char *image_name,
int image_fd,
vaddr = load_bias + eppnt->p_vaddr;
vaddr_po = TARGET_ELF_PAGEOFFSET(vaddr);
vaddr_ps = TARGET_ELF_PAGESTART(vaddr);
- vaddr_len = TARGET_ELF_PAGELENGTH(eppnt->p_filesz + vaddr_po);
+ vaddr_len = TARGET_ELF_PAGELENGTH(eppnt->p_memsz + vaddr_po);
error = target_mmap(vaddr_ps, vaddr_len,
elf_prot, MAP_PRIVATE | MAP_FIXED,