diff options
Diffstat (limited to 'gdb/disasm.h')
-rw-r--r-- | gdb/disasm.h | 56 |
1 files changed, 43 insertions, 13 deletions
diff --git a/gdb/disasm.h b/gdb/disasm.h index 4c6fd54..c6cb13b 100644 --- a/gdb/disasm.h +++ b/gdb/disasm.h @@ -33,6 +33,49 @@ struct gdbarch; struct ui_out; struct ui_file; +class gdb_disassembler +{ + using di_read_memory_ftype = decltype (disassemble_info::read_memory_func); + +public: + gdb_disassembler (struct gdbarch *gdbarch, struct ui_file *file) + : gdb_disassembler (gdbarch, file, dis_asm_read_memory) + {} + + int print_insn (CORE_ADDR memaddr, int *branch_delay_insns = NULL); + + /* Prints the instruction INSN into UIOUT and returns the length of + the printed instruction in bytes. */ + int pretty_print_insn (struct ui_out *uiout, + const struct disasm_insn *insn, int flags); + + /* Return the gdbarch of gdb_disassembler. */ + struct gdbarch *arch () + { return m_gdbarch; } + +protected: + gdb_disassembler (struct gdbarch *gdbarch, struct ui_file *file, + di_read_memory_ftype func); + + struct ui_file *stream () + { return (struct ui_file *) m_di.stream; } + +private: + struct gdbarch *m_gdbarch; + + /* Stores data required for disassembling instructions in + opcodes. */ + struct disassemble_info m_di; + + static int dis_asm_read_memory (bfd_vma memaddr, gdb_byte *myaddr, + unsigned int len, + struct disassemble_info *info); + static void dis_asm_memory_error (int err, bfd_vma memaddr, + struct disassemble_info *info); + static void dis_asm_print_address (bfd_vma addr, + struct disassemble_info *info); +}; + /* An instruction to be disassembled. */ struct disasm_insn @@ -47,19 +90,6 @@ struct disasm_insn unsigned int is_speculative:1; }; -/* Prints the instruction INSN into UIOUT and returns the length of the - printed instruction in bytes. */ - -extern int gdb_pretty_print_insn (struct gdbarch *gdbarch, struct ui_out *uiout, - struct disassemble_info * di, - const struct disasm_insn *insn, int flags, - struct ui_file *stb); - -/* Return a filled in disassemble_info object for use by gdb. */ - -extern struct disassemble_info gdb_disassemble_info (struct gdbarch *gdbarch, - struct ui_file *file); - extern void gdb_disassembly (struct gdbarch *gdbarch, struct ui_out *uiout, char *file_string, int flags, int how_many, CORE_ADDR low, CORE_ADDR high); |