diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/disasm.c | 164 |
2 files changed, 87 insertions, 82 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0d1b6a9..d6e1d11 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2017-09-09 Tom Tromey <tom@tromey.com> + * disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Use + ui_out_emit_tuple. + +2017-09-09 Tom Tromey <tom@tromey.com> + * target.c (flash_erase_command): Use ui_out_emit_tuple. * stack.c (print_frame): Use ui_out_emit_tuple. * spu-tdep.c (info_spu_event_command): Use ui_out_emit_tuple. diff --git a/gdb/disasm.c b/gdb/disasm.c index 8061b60..5f22e78 100644 --- a/gdb/disasm.c +++ b/gdb/disasm.c @@ -198,95 +198,95 @@ gdb_pretty_print_disassembler::pretty_print_insn (struct ui_out *uiout, 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; |