From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24691 invoked by alias); 10 Oct 2002 21:03:47 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 24684 invoked from network); 10 Oct 2002 21:03:46 -0000 Received: from unknown (HELO touchme.toronto.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 10 Oct 2002 21:03:46 -0000 Received: from redhat.com (toocool.toronto.redhat.com [172.16.14.72]) by touchme.toronto.redhat.com (Postfix) with ESMTP id BB1218001D2 for ; Thu, 10 Oct 2002 17:03:45 -0400 (EDT) Message-ID: <3DA5EB31.8A9EF8B@redhat.com> Date: Thu, 10 Oct 2002 14:03:00 -0000 From: "J. Johnston" Organization: Red Hat Inc. X-Accept-Language: en MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: patch for gdb/mi 680 Content-Type: multipart/mixed; boundary="------------519E07EAFCA0BAE1C00B8FF0" X-SW-Source: 2002-10/txt/msg00223.txt.bz2 This is a multi-part message in MIME format. --------------519E07EAFCA0BAE1C00B8FF0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-length: 915 The following is a patch for PR gdb/mi 680. To summarize, the patch changes all usages of ui_out_tuple_begin/ui_out_tuple_end and ui_out_list_begin/ui_out_list_end in the mi code to use the make_cleanup_ui_out_xxxx_begin_end/do_cleanups alternative. This patch was generated from code that contains other patches I have made that have not yet been approved so I have diff'd so only the changes pertaining to this PR are shown. gdb/mi/ChangeLog: 2002-10-10 Jeff Johnston * mi-cmd-var.c: Change all remaining occurrences of ui_out_tuple_begin to make_cleanup_ui_out_tuple_begin_end. Change all remaining occurrences of ui_out_list_begin to make_cleanup_ui_out_list_begin_end. Use do_cleanups instead of ui_out_list_end or ui_out_tuple_end. This is a fix for PR gdb/680. * mi-cmd-stack.c: Ditto. * mi-main.c: Ditto. -- Jeff J. --------------519E07EAFCA0BAE1C00B8FF0 Content-Type: text/plain; charset=us-ascii; name="680.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="680.patch" Content-length: 7726 Index: mi/mi-cmd-stack.c =================================================================== RCS file: /cvs/src/src/gdb/mi/mi-cmd-stack.c,v retrieving revision 1.11 diff -u -r1.11 mi-cmd-stack.c --- mi/mi-cmd-stack.c 5 Apr 2002 22:04:43 -0000 1.11 +++ mi/mi-cmd-stack.c 10 Oct 2002 19:34:51 -0000 @@ -45,6 +45,7 @@ int frame_low; int frame_high; int i; + struct cleanup *cleanup; struct frame_info *fi; if (!target_has_stack) @@ -76,7 +77,7 @@ if (fi == NULL) error ("mi_cmd_stack_list_frames: Not enough frames in stack."); - ui_out_list_begin (uiout, "stack"); + cleanup = make_cleanup_ui_out_list_begin_end (uiout, "stack"); /* Now let;s print the frames up to frame_high, or until there are frames in the stack. */ @@ -95,7 +96,7 @@ 0 /* args */ ); } - ui_out_list_end (uiout); + do_cleanups (cleanup); if (i < frame_high) error ("mi_cmd_stack_list_frames: Not enough frames in stack."); @@ -155,6 +156,7 @@ int frame_high; int i; struct frame_info *fi; + struct cleanup *cleanup; if (argc < 1 || argc > 3 || argc == 2) error ("mi_cmd_stack_list_args: Usage: PRINT_VALUES [FRAME_LOW FRAME_HIGH]"); @@ -182,7 +184,7 @@ if (fi == NULL) error ("mi_cmd_stack_list_args: Not enough frames in stack."); - ui_out_list_begin (uiout, "stack-args"); + cleanup = make_cleanup_ui_out_list_begin_end (uiout, "stack-args"); /* Now let's print the frames up to frame_high, or until there are frames in the stack. */ @@ -190,14 +192,15 @@ fi && (i <= frame_high || frame_high == -1); i++, fi = get_prev_frame (fi)) { + struct cleanup *cleanup2; QUIT; - ui_out_tuple_begin (uiout, "frame"); + cleanup2 = make_cleanup_ui_out_tuple_begin_end (uiout, "frame"); ui_out_field_int (uiout, "level", i); list_args_or_locals (0, atoi (argv[0]), fi); - ui_out_tuple_end (uiout); + do_cleanups (cleanup2); } - ui_out_list_end (uiout); + do_cleanups (cleanup); if (i < frame_high) error ("mi_cmd_stack_list_args: Not enough frames in stack."); @@ -214,13 +217,14 @@ struct block *block; struct symbol *sym; int i, nsyms; + struct cleanup *cleanup; static struct ui_stream *stb = NULL; stb = ui_out_stream_new (uiout); block = get_frame_block (fi, 0); - ui_out_list_begin (uiout, locals ? "locals" : "args"); + cleanup = make_cleanup_ui_out_list_begin_end (uiout, locals ? "locals" : "args"); while (block != 0) { @@ -262,8 +266,9 @@ } if (print_me) { + struct cleanup *cleanup2; if (values) - ui_out_tuple_begin (uiout, NULL); + cleanup2 = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); ui_out_field_string (uiout, "name", SYMBOL_NAME (sym)); if (values) @@ -278,7 +283,7 @@ sym2 = sym; print_variable_value (sym2, fi, stb->stream); ui_out_field_stream (uiout, "value", stb); - ui_out_tuple_end (uiout); + do_cleanups (cleanup2); } } } @@ -287,7 +292,7 @@ else block = BLOCK_SUPERBLOCK (block); } - ui_out_list_end (uiout); + do_cleanups (cleanup); ui_out_stream_delete (stb); } --- mi/mi-cmd-var.0.c Thu Oct 10 13:42:27 2002 +++ mi/mi-cmd-var.c Thu Oct 10 14:05:33 2002 @@ -254,6 +254,7 @@ struct varobj *var; struct varobj **childlist; struct varobj **cc; + struct cleanup *cleanup; int numchild; char *type; @@ -271,11 +272,12 @@ if (numchild <= 0) return MI_CMD_DONE; - ui_out_tuple_begin (uiout, "children"); + cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "children"); cc = childlist; while (*cc != NULL) { - ui_out_tuple_begin (uiout, "child"); + struct cleanup *cleanup2; + cleanup2 = make_cleanup_ui_out_tuple_begin_end (uiout, "child"); ui_out_field_string (uiout, "name", varobj_get_objname (*cc)); ui_out_field_string (uiout, "exp", varobj_get_expression (*cc)); ui_out_field_int (uiout, "numchild", varobj_get_num_children (*cc)); @@ -283,10 +285,10 @@ /* C++ pseudo-variables (public, private, protected) do not have a type */ if (type) ui_out_field_string (uiout, "type", varobj_get_type (*cc)); - ui_out_tuple_end (uiout); + do_cleanups (cleanup2); cc++; } - ui_out_tuple_end (uiout); + do_cleanups (cleanup); xfree (childlist); return MI_CMD_DONE; } --- mi/mi-main.0.c Thu Oct 10 13:52:55 2002 +++ mi/mi-main.c Thu Oct 10 13:59:56 2002 @@ -911,19 +911,22 @@ /* Build the result as a two dimentional table. */ { struct ui_stream *stream = ui_out_stream_new (uiout); + struct cleanup *cleanup1; int row; int row_byte; - ui_out_list_begin (uiout, "memory"); + cleanup1 = make_cleanup_ui_out_list_begin_end (uiout, "memory"); for (row = 0, row_byte = 0; row < nr_rows; row++, row_byte += nr_cols * word_size) { int col; int col_byte; - ui_out_tuple_begin (uiout, NULL); + struct cleanup *cleanup2; + struct cleanup *cleanup3; + cleanup2 = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); ui_out_field_core_addr (uiout, "addr", addr + row_byte); /* ui_out_field_core_addr_symbolic (uiout, "saddr", addr + row_byte); */ - ui_out_list_begin (uiout, "data"); + cleanup3 = make_cleanup_ui_out_list_begin_end (uiout, "data"); for (col = 0, col_byte = row_byte; col < nr_cols; col++, col_byte += word_size) @@ -940,7 +943,7 @@ ui_out_field_stream (uiout, NULL, stream); } } - ui_out_list_end (uiout); + do_cleanups (cleanup3); if (aschar) { int byte; @@ -960,10 +963,10 @@ } ui_out_field_stream (uiout, "ascii", stream); } - ui_out_tuple_end (uiout); + do_cleanups (cleanup2); } ui_out_stream_delete (stream); - ui_out_list_end (uiout); + do_cleanups (cleanup1); } do_cleanups (cleanups); return MI_CMD_DONE; @@ -1415,17 +1418,18 @@ strcmp (previous_sect_name, section_name) : 1); if (new_section) { + struct cleanup *cleanups; xfree (previous_sect_name); previous_sect_name = xstrdup (section_name); if (last_async_command) fputs_unfiltered (last_async_command, raw_stdout); fputs_unfiltered ("+download", raw_stdout); - ui_out_tuple_begin (uiout, NULL); + cleanups = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); ui_out_field_string (uiout, "section", section_name); ui_out_field_int (uiout, "section-size", total_section); ui_out_field_int (uiout, "total-size", grand_total); - ui_out_tuple_end (uiout); + do_cleanups (cleanups); mi_out_put (uiout, raw_stdout); fputs_unfiltered ("\n", raw_stdout); gdb_flush (raw_stdout); @@ -1434,18 +1438,19 @@ if (delta.tv_sec >= update_threshold.tv_sec && delta.tv_usec >= update_threshold.tv_usec) { + struct cleanup *cleanups; last_update.tv_sec = time_now.tv_sec; last_update.tv_usec = time_now.tv_usec; if (last_async_command) fputs_unfiltered (last_async_command, raw_stdout); fputs_unfiltered ("+download", raw_stdout); - ui_out_tuple_begin (uiout, NULL); + cleanups = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); ui_out_field_string (uiout, "section", section_name); ui_out_field_int (uiout, "section-sent", sent_so_far); ui_out_field_int (uiout, "section-size", total_section); ui_out_field_int (uiout, "total-sent", total_sent); ui_out_field_int (uiout, "total-size", grand_total); - ui_out_tuple_end (uiout); + do_cleanups (cleanups); mi_out_put (uiout, raw_stdout); fputs_unfiltered ("\n", raw_stdout); gdb_flush (raw_stdout); --------------519E07EAFCA0BAE1C00B8FF0--