xref: /qemu/include/disas/disas.h (revision 2b01688380103acc2a9cd197b964d643fceba2a9)
12a6a4076SMarkus Armbruster #ifndef QEMU_DISAS_H
22a6a4076SMarkus Armbruster #define QEMU_DISAS_H
3b9adb4a6Sbellard 
4b9adb4a6Sbellard /* Disassemble this for me please... (debugging). */
5c0d691abSRichard Henderson #ifdef CONFIG_TCG
6b6235a75SRichard Henderson void disas(FILE *out, const void *code, size_t size);
7*4c833c60SRichard Henderson void target_disas(FILE *out, CPUState *cpu, const DisasContextBase *db);
8c0d691abSRichard Henderson #endif
9376253ecSaliguori 
10b6235a75SRichard Henderson void monitor_disas(Monitor *mon, CPUState *cpu, uint64_t pc,
11b6235a75SRichard Henderson                    int nb_insn, bool is_physical);
12b9adb4a6Sbellard 
13c0d691abSRichard Henderson #ifdef CONFIG_PLUGIN
14*4c833c60SRichard Henderson char *plugin_disas(CPUState *cpu, const DisasContextBase *db,
15*4c833c60SRichard Henderson                    uint64_t addr, size_t size);
16c0d691abSRichard Henderson #endif
17cbafa236SAlex Bennée 
18b9adb4a6Sbellard /* Look up symbol for debugging purpose.  Returns "" if unknown. */
19b6235a75SRichard Henderson const char *lookup_symbol(uint64_t orig_addr);
20b9adb4a6Sbellard 
2149918a75Spbrook struct syminfo;
2249918a75Spbrook struct elf32_sym;
2349918a75Spbrook struct elf64_sym;
2449918a75Spbrook 
25b6235a75SRichard Henderson typedef const char *(*lookup_symbol_t)(struct syminfo *s, uint64_t orig_addr);
2649918a75Spbrook 
2749918a75Spbrook struct syminfo {
2849918a75Spbrook     lookup_symbol_t lookup_symbol;
29e80cfcfcSbellard     unsigned int disas_num_syms;
3049918a75Spbrook     union {
3149918a75Spbrook       struct elf32_sym *elf32;
3249918a75Spbrook       struct elf64_sym *elf64;
3349918a75Spbrook     } disas_symtab;
34e80cfcfcSbellard     const char *disas_strtab;
35e80cfcfcSbellard     struct syminfo *next;
3649918a75Spbrook };
3749918a75Spbrook 
3849918a75Spbrook /* Filled in by elfload.c.  Simplistic, but will do for now. */
3949918a75Spbrook extern struct syminfo *syminfos;
40e80cfcfcSbellard 
412a6a4076SMarkus Armbruster #endif /* QEMU_DISAS_H */
42