diff options
author | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-17 23:07:31 +0000 |
---|---|---|
committer | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-17 23:07:31 +0000 |
commit | 82790064116b066531c8b61067509a0fd4169ee0 (patch) | |
tree | 3af63fc031eb29c8edfb0c688d5d63d82bc0afc7 | |
parent | 06c0b38830a47cadec4ddaec1788466bf9753d85 (diff) |
Cast ELF datatypes properly to host 64bit types.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3407 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | elf_ops.h | 6 | ||||
-rw-r--r-- | loader.c | 3 |
2 files changed, 6 insertions, 3 deletions
@@ -159,7 +159,7 @@ int glue(load_elf, SZ)(int fd, int64_t virt_to_phys_addend, goto fail; if (pentry) - *pentry = (uint64_t)ehdr.e_entry; + *pentry = (uint64_t)(elf_sword)ehdr.e_entry; glue(load_symbols, SZ)(&ehdr, fd, must_swab); @@ -206,9 +206,9 @@ int glue(load_elf, SZ)(int fd, int64_t virt_to_phys_addend, } qemu_free(phdr); if (lowaddr) - *lowaddr = (uint64_t)low; + *lowaddr = (uint64_t)(elf_sword)low; if (highaddr) - *highaddr = (uint64_t)high; + *highaddr = (uint64_t)(elf_sword)high; return total_size; fail: qemu_free(data); @@ -173,6 +173,7 @@ static void *load_at(int fd, int offset, int size) #define SZ 32 #define elf_word uint32_t +#define elf_sword int32_t #define bswapSZs bswap32s #include "elf_ops.h" @@ -182,6 +183,7 @@ static void *load_at(int fd, int offset, int size) #undef elf_sym #undef elf_note #undef elf_word +#undef elf_sword #undef bswapSZs #undef SZ #define elfhdr elf64_hdr @@ -190,6 +192,7 @@ static void *load_at(int fd, int offset, int size) #define elf_shdr elf64_shdr #define elf_sym elf64_sym #define elf_word uint64_t +#define elf_sword int64_t #define bswapSZs bswap64s #define SZ 64 #include "elf_ops.h" |