summaryrefslogtreecommitdiff
path: root/linux-user
diff options
context:
space:
mode:
authorJonas Maebe <jonas.maebe@elis.ugent.be>2014-10-24 16:07:15 +0200
committerRiku Voipio <riku.voipio@linaro.org>2014-11-03 11:03:34 +0200
commita93934fecd4dffc9d4b452b670c9506be5dea30d (patch)
tree8fba143f9591c93908ef2a05c750c9da2b937e97 /linux-user
parent686581adcfead947b4726d82b1eaf7c25fa597e6 (diff)
downloadqemu-a93934fecd4dffc9d4b452b670c9506be5dea30d.tar.gz
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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index f2e21976f3..84123baa58 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;
}