From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25606 invoked by alias); 21 Oct 2002 23:06:58 -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 25598 invoked from network); 21 Oct 2002 23:06:57 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 21 Oct 2002 23:06:57 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id g9LMjhw26338 for ; Mon, 21 Oct 2002 18:45:43 -0400 Received: from pobox.corp.redhat.com (pobox.corp.redhat.com [172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id g9LN6vf29886; Mon, 21 Oct 2002 19:06:57 -0400 Received: from localhost.redhat.com (IDENT:cb5S+Afv+NpJC8X+p9QUIZsUW8btjYEw@tooth.toronto.redhat.com [172.16.14.29]) by pobox.corp.redhat.com (8.11.6/8.11.6) with ESMTP id g9LN6rw20776; Mon, 21 Oct 2002 19:06:54 -0400 Received: by localhost.redhat.com (Postfix, from userid 469) id 4C470FF79; Mon, 21 Oct 2002 19:04:09 -0400 (EDT) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15796.34792.245443.46505@localhost.redhat.com> Date: Mon, 21 Oct 2002 16:06:00 -0000 To: "J. Johnston" Cc: gdb-patches@sources.redhat.com Subject: Re: patch for gdb/mi 680 In-Reply-To: <3DA5EB31.8A9EF8B@redhat.com> References: <3DA5EB31.8A9EF8B@redhat.com> X-SW-Source: 2002-10/txt/msg00364.txt.bz2 J. Johnston writes: > 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. > Approved, but (nitpick) I would prefer more meaningful names instead of 'cleanup1, cleanup2, cleanup3' Something like cleanup_frame, cleanup_child, etc. Elena > 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.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);