int offset;
int line;
int size;
- struct cleanup *ui_out_chain;
char *filename = NULL;
char *name = NULL;
CORE_ADDR pc;
struct gdbarch *gdbarch = arch ();
- ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
- pc = insn->addr;
-
- if (insn->number != 0)
- {
- uiout->field_fmt ("insn-number", "%u", insn->number);
- uiout->text ("\t");
- }
-
- if ((flags & DISASSEMBLY_SPECULATIVE) != 0)
- {
- if (insn->is_speculative)
- {
- uiout->field_string ("is-speculative", "?");
-
- /* The speculative execution indication overwrites the first
- character of the PC prefix.
- We assume a PC prefix length of 3 characters. */
- if ((flags & DISASSEMBLY_OMIT_PC) == 0)
- uiout->text (pc_prefix (pc) + 1);
- else
- uiout->text (" ");
- }
- else if ((flags & DISASSEMBLY_OMIT_PC) == 0)
- uiout->text (pc_prefix (pc));
- else
- uiout->text (" ");
- }
- else if ((flags & DISASSEMBLY_OMIT_PC) == 0)
- uiout->text (pc_prefix (pc));
- uiout->field_core_addr ("address", gdbarch, pc);
-
- if (!build_address_symbolic (gdbarch, pc, 0, &name, &offset, &filename,
- &line, &unmapped))
- {
- /* We don't care now about line, filename and unmapped. But we might in
- the future. */
- uiout->text (" <");
- if ((flags & DISASSEMBLY_OMIT_FNAME) == 0)
- uiout->field_string ("func-name", name);
- uiout->text ("+");
- uiout->field_int ("offset", offset);
- uiout->text (">:\t");
- }
- else
- uiout->text (":\t");
-
- if (filename != NULL)
- xfree (filename);
- if (name != NULL)
- xfree (name);
-
- m_insn_stb.clear ();
-
- if (flags & DISASSEMBLY_RAW_INSN)
- {
- CORE_ADDR end_pc;
- bfd_byte data;
- int err;
- const char *spacer = "";
-
- /* Build the opcodes using a temporary stream so we can
- write them out in a single go for the MI. */
- m_opcode_stb.clear ();
-
+ {
+ ui_out_emit_tuple tuple_emitter (uiout, NULL);
+ pc = insn->addr;
+
+ if (insn->number != 0)
+ {
+ uiout->field_fmt ("insn-number", "%u", insn->number);
+ uiout->text ("\t");
+ }
+
+ if ((flags & DISASSEMBLY_SPECULATIVE) != 0)
+ {
+ if (insn->is_speculative)
+ {
+ uiout->field_string ("is-speculative", "?");
+
+ /* The speculative execution indication overwrites the first
+ character of the PC prefix.
+ We assume a PC prefix length of 3 characters. */
+ if ((flags & DISASSEMBLY_OMIT_PC) == 0)
+ uiout->text (pc_prefix (pc) + 1);
+ else
+ uiout->text (" ");
+ }
+ else if ((flags & DISASSEMBLY_OMIT_PC) == 0)
+ uiout->text (pc_prefix (pc));
+ else
+ uiout->text (" ");
+ }
+ else if ((flags & DISASSEMBLY_OMIT_PC) == 0)
+ uiout->text (pc_prefix (pc));
+ uiout->field_core_addr ("address", gdbarch, pc);
+
+ if (!build_address_symbolic (gdbarch, pc, 0, &name, &offset, &filename,
+ &line, &unmapped))
+ {
+ /* We don't care now about line, filename and unmapped. But we might in
+ the future. */
+ uiout->text (" <");
+ if ((flags & DISASSEMBLY_OMIT_FNAME) == 0)
+ uiout->field_string ("func-name", name);
+ uiout->text ("+");
+ uiout->field_int ("offset", offset);
+ uiout->text (">:\t");
+ }
+ else
+ uiout->text (":\t");
+
+ if (filename != NULL)
+ xfree (filename);
+ if (name != NULL)
+ xfree (name);
+
+ m_insn_stb.clear ();
+
+ if (flags & DISASSEMBLY_RAW_INSN)
+ {
+ CORE_ADDR end_pc;
+ bfd_byte data;
+ int err;
+ const char *spacer = "";
+
+ /* Build the opcodes using a temporary stream so we can
+ write them out in a single go for the MI. */
+ m_opcode_stb.clear ();
+
+ size = m_di.print_insn (pc);
+ end_pc = pc + size;
+
+ for (;pc < end_pc; ++pc)
+ {
+ read_code (pc, &data, 1);
+ m_opcode_stb.printf ("%s%02x", spacer, (unsigned) data);
+ spacer = " ";
+ }
+
+ uiout->field_stream ("opcodes", m_opcode_stb);
+ uiout->text ("\t");
+ }
+ else
size = m_di.print_insn (pc);
- end_pc = pc + size;
- for (;pc < end_pc; ++pc)
- {
- read_code (pc, &data, 1);
- m_opcode_stb.printf ("%s%02x", spacer, (unsigned) data);
- spacer = " ";
- }
-
- uiout->field_stream ("opcodes", m_opcode_stb);
- uiout->text ("\t");
- }
- else
- size = m_di.print_insn (pc);
-
- uiout->field_stream ("inst", m_insn_stb);
- do_cleanups (ui_out_chain);
+ uiout->field_stream ("inst", m_insn_stb);
+ }
uiout->text ("\n");
return size;