Use ui_out_emit_tuple in disasm.c
[deliverable/binutils-gdb.git] / gdb / disasm.c
index 8061b603807406a02a1bc8750f03603797564e7b..5f22e789016cf7bf9728f17805332d056f73b37d 100644 (file)
@@ -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;
This page took 0.025213 seconds and 4 git commands to generate.