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