xref: /qemu/include/disas/disas.h (revision 5ee24e78f5af0e4be7c6c7192541ca5fd7b0cf96)
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, void *code, unsigned long size, const char *note);
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