1 #ifndef QEMU_DISAS_H 2 #define QEMU_DISAS_H 3 4 #include "exec/hwaddr.h" 5 6 #ifdef NEED_CPU_H 7 #include "cpu.h" 8 9 /* Disassemble this for me please... (debugging). */ 10 void disas(FILE *out, const void *code, unsigned long size); 11 void target_disas(FILE *out, CPUState *cpu, target_ulong code, 12 target_ulong size); 13 14 void monitor_disas(Monitor *mon, CPUState *cpu, 15 target_ulong pc, int nb_insn, int is_physical); 16 17 char *plugin_disas(CPUState *cpu, uint64_t addr, size_t size); 18 19 /* Look up symbol for debugging purpose. Returns "" if unknown. */ 20 const char *lookup_symbol(target_ulong orig_addr); 21 #endif 22 23 struct syminfo; 24 struct elf32_sym; 25 struct elf64_sym; 26 27 #if defined(CONFIG_USER_ONLY) 28 typedef const char *(*lookup_symbol_t)(struct syminfo *s, target_ulong orig_addr); 29 #else 30 typedef const char *(*lookup_symbol_t)(struct syminfo *s, hwaddr orig_addr); 31 #endif 32 33 struct syminfo { 34 lookup_symbol_t lookup_symbol; 35 unsigned int disas_num_syms; 36 union { 37 struct elf32_sym *elf32; 38 struct elf64_sym *elf64; 39 } disas_symtab; 40 const char *disas_strtab; 41 struct syminfo *next; 42 }; 43 44 /* Filled in by elfload.c. Simplistic, but will do for now. */ 45 extern struct syminfo *syminfos; 46 47 #endif /* QEMU_DISAS_H */ 48