X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fdisasm.h;h=5c1b30b85310e825eef0ce52c6ca7d98a7e31b25;hb=fe33e22e7b2ef36f564df92c7259728eaf2e5028;hp=6aa046a96102ac5d0a39709279d4f7447b1cddff;hpb=e2882c85786571175a0b0bfc3bcd2f14620b1ea3;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/disasm.h b/gdb/disasm.h index 6aa046a961..5c1b30b853 100644 --- a/gdb/disasm.h +++ b/gdb/disasm.h @@ -1,5 +1,5 @@ /* Disassemble support for GDB. - Copyright (C) 2002-2018 Free Software Foundation, Inc. + Copyright (C) 2002-2019 Free Software Foundation, Inc. This file is part of GDB. @@ -20,7 +20,7 @@ #define DISASM_H #include "dis-asm.h" -#include "common/enum-flags.h" +#include "gdbsupport/enum-flags.h" enum gdb_disassembly_flag { @@ -66,6 +66,11 @@ private: /* Stores data required for disassembling instructions in opcodes. */ struct disassemble_info m_di; + + /* If we own the string in `m_di.disassembler_options', we do so + using this field. */ + std::string m_disassembler_options_holder; + CORE_ADDR m_err_memaddr; static int dis_asm_read_memory (bfd_vma memaddr, gdb_byte *myaddr, @@ -107,26 +112,32 @@ extern int gdb_print_insn (struct gdbarch *gdbarch, CORE_ADDR memaddr, class gdb_pretty_print_disassembler { public: - explicit gdb_pretty_print_disassembler (struct gdbarch *gdbarch) - : m_di (gdbarch, &m_insn_stb) + explicit gdb_pretty_print_disassembler (struct gdbarch *gdbarch, + struct ui_out *uiout) + : m_uiout (uiout), + m_insn_stb (uiout->can_emit_style_escape ()), + m_di (gdbarch, &m_insn_stb) {} - /* 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, + /* Prints the instruction INSN into the saved ui_out and returns the + length of the printed instruction in bytes. */ + int pretty_print_insn (const struct disasm_insn *insn, gdb_disassembly_flags flags); private: /* Returns the architecture used for disassembling. */ struct gdbarch *arch () { return m_di.arch (); } - /* The disassembler used for instruction printing. */ - gdb_disassembler m_di; + /* The ui_out that is used by pretty_print_insn. */ + struct ui_out *m_uiout; /* The buffer used to build the instruction string. The disassembler is initialized with this stream. */ string_file m_insn_stb; + /* The disassembler used for instruction printing. */ + gdb_disassembler m_di; + /* The buffer used to build the raw opcodes string. */ string_file m_opcode_stb; };