blob: 13c2aa3616e7d10914ad0c02ed6dd28ef3e8f20b [file] [log] [blame]
bellardb9adb4a2003-04-29 20:41:16 +00001#ifndef _QEMU_DISAS_H
2#define _QEMU_DISAS_H
3
bellardb9adb4a2003-04-29 20:41:16 +00004/* Disassemble this for me please... (debugging). */
bellardc27004e2005-01-03 23:35:10 +00005void disas(FILE *out, void *code, unsigned long size);
bellard83b34f82005-01-23 20:26:30 +00006void target_disas(FILE *out, target_ulong code, target_ulong size, int flags);
bellard34765622005-11-21 23:35:10 +00007void monitor_disas(CPUState *env,
8 target_ulong pc, int nb_insn, int is_physical, int flags);
bellardb9adb4a2003-04-29 20:41:16 +00009
10/* Look up symbol for debugging purpose. Returns "" if unknown. */
bellardc27004e2005-01-03 23:35:10 +000011const char *lookup_symbol(target_ulong orig_addr);
bellardb9adb4a2003-04-29 20:41:16 +000012
pbrook49918a72008-10-22 15:11:31 +000013struct syminfo;
14struct elf32_sym;
15struct elf64_sym;
16
17typedef const char *(*lookup_symbol_t)(struct syminfo *s, target_ulong orig_addr);
18
19struct syminfo {
20 lookup_symbol_t lookup_symbol;
bellarde80cfcf2004-12-19 23:18:01 +000021 unsigned int disas_num_syms;
pbrook49918a72008-10-22 15:11:31 +000022 union {
23 struct elf32_sym *elf32;
24 struct elf64_sym *elf64;
25 } disas_symtab;
bellarde80cfcf2004-12-19 23:18:01 +000026 const char *disas_strtab;
27 struct syminfo *next;
pbrook49918a72008-10-22 15:11:31 +000028};
29
30/* Filled in by elfload.c. Simplistic, but will do for now. */
31extern struct syminfo *syminfos;
bellarde80cfcf2004-12-19 23:18:01 +000032
bellardb9adb4a2003-04-29 20:41:16 +000033#endif /* _QEMU_DISAS_H */