/* Branch trace support for GDB, the GNU debugger.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
Contributed by Intel Corp. <markus.t.metzger@intel.com>
if (tp == NULL)
error (_("No thread."));
+ validate_registers_access ();
+
btrace_fetch (tp);
if (btrace_is_empty (tp))
if (tp == NULL)
error (_("No thread."));
+ validate_registers_access ();
+
btinfo = &tp->btrace;
conf = btrace_conf (btinfo);
const struct btrace_insn_iterator *begin,
const struct btrace_insn_iterator *end, int flags)
{
- struct ui_file *stb;
struct cleanup *cleanups, *ui_item_chain;
- struct disassemble_info di;
struct gdbarch *gdbarch;
struct btrace_insn_iterator it;
struct btrace_line_range last_lines;
flags |= DISASSEMBLY_SPECULATIVE;
gdbarch = target_gdbarch ();
- stb = mem_fileopen ();
- cleanups = make_cleanup_ui_file_delete (stb);
- di = gdb_disassemble_info (gdbarch, stb);
last_lines = btrace_mk_line_range (NULL, 0, 0);
- make_cleanup_ui_out_list_begin_end (uiout, "asm_insns");
+ cleanups = make_cleanup_ui_out_list_begin_end (uiout, "asm_insns");
/* UI_ITEM_CHAIN is a cleanup chain for the last source line and the
instructions corresponding to that line. */
ui_item_chain = NULL;
+ gdb_pretty_print_disassembler disasm (gdbarch);
+
for (it = *begin; btrace_insn_cmp (&it, end) != 0; btrace_insn_next (&it, 1))
{
const struct btrace_insn *insn;
if ((insn->flags & BTRACE_INSN_FLAG_SPECULATIVE) != 0)
dinsn.is_speculative = 1;
- gdb_pretty_print_insn (gdbarch, uiout, &di, &dinsn, flags, stb);
+ disasm.pretty_print_insn (uiout, &dinsn, flags);
}
}