mirror of https://github.com/proxmox/mirror_qemu
Cast ELF datatypes properly to host 64bit types.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3407 c046a42c-6fe2-441c-8c8c-71466251a162master
parent
06c0b38830
commit
8279006411
|
@ -159,7 +159,7 @@ int glue(load_elf, SZ)(int fd, int64_t virt_to_phys_addend,
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (pentry)
|
if (pentry)
|
||||||
*pentry = (uint64_t)ehdr.e_entry;
|
*pentry = (uint64_t)(elf_sword)ehdr.e_entry;
|
||||||
|
|
||||||
glue(load_symbols, SZ)(&ehdr, fd, must_swab);
|
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);
|
qemu_free(phdr);
|
||||||
if (lowaddr)
|
if (lowaddr)
|
||||||
*lowaddr = (uint64_t)low;
|
*lowaddr = (uint64_t)(elf_sword)low;
|
||||||
if (highaddr)
|
if (highaddr)
|
||||||
*highaddr = (uint64_t)high;
|
*highaddr = (uint64_t)(elf_sword)high;
|
||||||
return total_size;
|
return total_size;
|
||||||
fail:
|
fail:
|
||||||
qemu_free(data);
|
qemu_free(data);
|
||||||
|
|
3
loader.c
3
loader.c
|
@ -173,6 +173,7 @@ static void *load_at(int fd, int offset, int size)
|
||||||
|
|
||||||
#define SZ 32
|
#define SZ 32
|
||||||
#define elf_word uint32_t
|
#define elf_word uint32_t
|
||||||
|
#define elf_sword int32_t
|
||||||
#define bswapSZs bswap32s
|
#define bswapSZs bswap32s
|
||||||
#include "elf_ops.h"
|
#include "elf_ops.h"
|
||||||
|
|
||||||
|
@ -182,6 +183,7 @@ static void *load_at(int fd, int offset, int size)
|
||||||
#undef elf_sym
|
#undef elf_sym
|
||||||
#undef elf_note
|
#undef elf_note
|
||||||
#undef elf_word
|
#undef elf_word
|
||||||
|
#undef elf_sword
|
||||||
#undef bswapSZs
|
#undef bswapSZs
|
||||||
#undef SZ
|
#undef SZ
|
||||||
#define elfhdr elf64_hdr
|
#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_shdr elf64_shdr
|
||||||
#define elf_sym elf64_sym
|
#define elf_sym elf64_sym
|
||||||
#define elf_word uint64_t
|
#define elf_word uint64_t
|
||||||
|
#define elf_sword int64_t
|
||||||
#define bswapSZs bswap64s
|
#define bswapSZs bswap64s
|
||||||
#define SZ 64
|
#define SZ 64
|
||||||
#include "elf_ops.h"
|
#include "elf_ops.h"
|
||||||
|
|
Loading…
Reference in New Issue