qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

qemu_elf.h (1111B)


      1 /*
      2  * Copyright (c) 2018 Virtuozzo International GmbH
      3  *
      4  * This work is licensed under the terms of the GNU GPL, version 2 or later.
      5  */
      6 
      7 #ifndef ELF2DMP_QEMU_ELF_H
      8 #define ELF2DMP_QEMU_ELF_H
      9 
     10 #include "elf.h"
     11 
     12 typedef struct QEMUCPUSegment {
     13     uint32_t selector;
     14     uint32_t limit;
     15     uint32_t flags;
     16     uint32_t pad;
     17     uint64_t base;
     18 } QEMUCPUSegment;
     19 
     20 typedef struct QEMUCPUState {
     21     uint32_t version;
     22     uint32_t size;
     23     uint64_t rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp;
     24     uint64_t r8, r9, r10, r11, r12, r13, r14, r15;
     25     uint64_t rip, rflags;
     26     QEMUCPUSegment cs, ds, es, fs, gs, ss;
     27     QEMUCPUSegment ldt, tr, gdt, idt;
     28     uint64_t cr[5];
     29     uint64_t kernel_gs_base;
     30 } QEMUCPUState;
     31 
     32 int is_system(QEMUCPUState *s);
     33 
     34 typedef struct QEMU_Elf {
     35     GMappedFile *gmf;
     36     size_t size;
     37     void *map;
     38     QEMUCPUState **state;
     39     size_t state_nr;
     40     int has_kernel_gs_base;
     41 } QEMU_Elf;
     42 
     43 int QEMU_Elf_init(QEMU_Elf *qe, const char *filename);
     44 void QEMU_Elf_exit(QEMU_Elf *qe);
     45 
     46 Elf64_Phdr *elf64_getphdr(void *map);
     47 Elf64_Half elf_getphdrnum(void *map);
     48 
     49 #endif /* ELF2DMP_QEMU_ELF_H */