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