diff options
author | Jonas Maebe <jonas.maebe@elis.ugent.be> | 2014-10-24 16:07:15 +0200 |
---|---|---|
committer | Riku Voipio <riku.voipio@linaro.org> | 2014-11-03 11:03:34 +0200 |
commit | a93934fecd4dffc9d4b452b670c9506be5dea30d (patch) | |
tree | 8fba143f9591c93908ef2a05c750c9da2b937e97 /linux-user | |
parent | 686581adcfead947b4726d82b1eaf7c25fa597e6 (diff) | |
download | qemu-a93934fecd4dffc9d4b452b670c9506be5dea30d.zip qemu-a93934fecd4dffc9d4b452b670c9506be5dea30d.tar.gz qemu-a93934fecd4dffc9d4b452b670c9506be5dea30d.tar.bz2 |
elf: take phdr offset into account when calculating the program load address
The first program header does not necessarily start at offset 0. This change
corresponds to what the Linux kernel does in load_elf_binary().
Signed-off-by: Jonas Maebe <jonas.maebe@elis.ugent.be>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
Diffstat (limited to 'linux-user')
-rw-r--r-- | linux-user/elfload.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c index f2e2197..84123ba 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1820,7 +1820,7 @@ static void load_elf_image(const char *image_name, int image_fd, loaddr = -1, hiaddr = 0; for (i = 0; i < ehdr->e_phnum; ++i) { if (phdr[i].p_type == PT_LOAD) { - abi_ulong a = phdr[i].p_vaddr; + abi_ulong a = phdr[i].p_vaddr - phdr[i].p_offset; if (a < loaddr) { loaddr = a; } |