Revision 409dbce5 hw/loader.c
b/hw/loader.c | ||
---|---|---|
276 | 276 |
#include "elf_ops.h" |
277 | 277 |
|
278 | 278 |
/* return < 0 if error, otherwise the number of bytes loaded in memory */ |
279 |
int load_elf(const char *filename, int64_t address_offset,
|
|
280 |
uint64_t *pentry, uint64_t *lowaddr, uint64_t *highaddr,
|
|
281 |
int big_endian, int elf_machine, int clear_lsb) |
|
279 |
int load_elf(const char *filename, uint64_t (*translate_fn)(void *, uint64_t),
|
|
280 |
void *translate_opaque, uint64_t *pentry, uint64_t *lowaddr,
|
|
281 |
uint64_t *highaddr, int big_endian, int elf_machine, int clear_lsb)
|
|
282 | 282 |
{ |
283 | 283 |
int fd, data_order, target_data_order, must_swab, ret; |
284 | 284 |
uint8_t e_ident[EI_NIDENT]; |
... | ... | |
312 | 312 |
|
313 | 313 |
lseek(fd, 0, SEEK_SET); |
314 | 314 |
if (e_ident[EI_CLASS] == ELFCLASS64) { |
315 |
ret = load_elf64(filename, fd, address_offset, must_swab, pentry,
|
|
316 |
lowaddr, highaddr, elf_machine, clear_lsb); |
|
315 |
ret = load_elf64(filename, fd, translate_fn, translate_opaque, must_swab,
|
|
316 |
pentry, lowaddr, highaddr, elf_machine, clear_lsb);
|
|
317 | 317 |
} else { |
318 |
ret = load_elf32(filename, fd, address_offset, must_swab, pentry,
|
|
319 |
lowaddr, highaddr, elf_machine, clear_lsb); |
|
318 |
ret = load_elf32(filename, fd, translate_fn, translate_opaque, must_swab,
|
|
319 |
pentry, lowaddr, highaddr, elf_machine, clear_lsb);
|
|
320 | 320 |
} |
321 | 321 |
|
322 | 322 |
close(fd); |
Also available in: Unified diff