* patch for gdb/mi 680
@ 2002-10-10 14:03 J. Johnston
2002-10-21 16:06 ` Elena Zannoni
2002-10-21 16:08 ` Elena Zannoni
0 siblings, 2 replies; 7+ messages in thread
From: J. Johnston @ 2002-10-10 14:03 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 915 bytes --]
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 <jjohnstn@redhat.com>
* 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.
[-- Attachment #2: 680.patch --]
[-- Type: text/plain, Size: 7726 bytes --]
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);
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: patch for gdb/mi 680
2002-10-10 14:03 patch for gdb/mi 680 J. Johnston
@ 2002-10-21 16:06 ` Elena Zannoni
2002-10-21 16:08 ` Elena Zannoni
1 sibling, 0 replies; 7+ messages in thread
From: Elena Zannoni @ 2002-10-21 16:06 UTC (permalink / raw)
To: J. Johnston; +Cc: gdb-patches
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 <jjohnstn@redhat.com>
>
> * 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);
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: patch for gdb/mi 680
2002-10-10 14:03 patch for gdb/mi 680 J. Johnston
2002-10-21 16:06 ` Elena Zannoni
@ 2002-10-21 16:08 ` Elena Zannoni
2002-10-21 16:34 ` J. Johnston
2002-10-21 18:13 ` Andrew Cagney
1 sibling, 2 replies; 7+ messages in thread
From: Elena Zannoni @ 2002-10-21 16:08 UTC (permalink / raw)
To: J. Johnston; +Cc: gdb-patches
Another thing, are there any more uses of ui_out_tuple_begin
ui_out_tuple_end, etc? Could the functions be zapped/ifdeffed out, so that
they are not creep in again?
Elena
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.
>
> gdb/mi/ChangeLog:
>
> 2002-10-10 Jeff Johnston <jjohnstn@redhat.com>
>
> * 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);
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: patch for gdb/mi 680
2002-10-21 16:08 ` Elena Zannoni
@ 2002-10-21 16:34 ` J. Johnston
2002-10-22 7:20 ` Elena Zannoni
2002-10-21 18:13 ` Andrew Cagney
1 sibling, 1 reply; 7+ messages in thread
From: J. Johnston @ 2002-10-21 16:34 UTC (permalink / raw)
To: Elena Zannoni; +Cc: gdb-patches
Elena Zannoni wrote:
>
> Another thing, are there any more uses of ui_out_tuple_begin
> ui_out_tuple_end, etc? Could the functions be zapped/ifdeffed out, so that
> they are not creep in again?
>
I made some extra changes for gdb/mi 796. After that patch, the only files
containing the old tuple and list calls are breakpoint.c and cli/cli-setshow.c.
I can make an addendum patch for 796 which includes the remaining changes and removal of
the tuple and list functions.
-- Jeff J.
> Elena
>
> 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.
> >
> > gdb/mi/ChangeLog:
> >
> > 2002-10-10 Jeff Johnston <jjohnstn@redhat.com>
> >
> > * 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);
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: patch for gdb/mi 680
2002-10-21 16:08 ` Elena Zannoni
2002-10-21 16:34 ` J. Johnston
@ 2002-10-21 18:13 ` Andrew Cagney
1 sibling, 0 replies; 7+ messages in thread
From: Andrew Cagney @ 2002-10-21 18:13 UTC (permalink / raw)
To: Elena Zannoni; +Cc: J. Johnston, gdb-patches
> Another thing, are there any more uses of ui_out_tuple_begin
> ui_out_tuple_end, etc? Could the functions be zapped/ifdeffed out, so that
> they are not creep in again?
Definitly a good idea (zap it).
Andrew
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: patch for gdb/mi 680
2002-10-21 16:34 ` J. Johnston
@ 2002-10-22 7:20 ` Elena Zannoni
2002-10-23 14:20 ` J. Johnston
0 siblings, 1 reply; 7+ messages in thread
From: Elena Zannoni @ 2002-10-22 7:20 UTC (permalink / raw)
To: J. Johnston; +Cc: Elena Zannoni, gdb-patches
J. Johnston writes:
> Elena Zannoni wrote:
> >
> > Another thing, are there any more uses of ui_out_tuple_begin
> > ui_out_tuple_end, etc? Could the functions be zapped/ifdeffed out, so that
> > they are not creep in again?
> >
>
> I made some extra changes for gdb/mi 796. After that patch, the only files
> containing the old tuple and list calls are breakpoint.c and cli/cli-setshow.c.
Great!
> I can make an addendum patch for 796 which includes the remaining changes and removal of
> the tuple and list functions.
>
I suggest a separate patch with a separate email subject, since it
affects different files.
In case it wasn't clear you can commit this, in the meantime.
Thanks
Elena
> -- Jeff J.
>
> > Elena
> >
> > 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.
> > >
> > > gdb/mi/ChangeLog:
> > >
> > > 2002-10-10 Jeff Johnston <jjohnstn@redhat.com>
> > >
> > > * 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);
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: patch for gdb/mi 680
2002-10-22 7:20 ` Elena Zannoni
@ 2002-10-23 14:20 ` J. Johnston
0 siblings, 0 replies; 7+ messages in thread
From: J. Johnston @ 2002-10-23 14:20 UTC (permalink / raw)
To: Elena Zannoni; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 12492 bytes --]
Elena Zannoni wrote:
>
> J. Johnston writes:
> > Elena Zannoni wrote:
> > >
> > > Another thing, are there any more uses of ui_out_tuple_begin
> > > ui_out_tuple_end, etc? Could the functions be zapped/ifdeffed out, so that
> > > they are not creep in again?
> > >
> >
> > I made some extra changes for gdb/mi 796. After that patch, the only files
> > containing the old tuple and list calls are breakpoint.c and cli/cli-setshow.c.
>
> Great!
>
> > I can make an addendum patch for 796 which includes the remaining changes and removal of
> > the tuple and list functions.
> >
>
> I suggest a separate patch with a separate email subject, since it
> affects different files.
>
> In case it wasn't clear you can commit this, in the meantime.
> Thanks
> Elena
>
Ok. The attached patch has been committed into the repository. I changed the
names in the original 680 patch to be more meaningful per your request.
-- Jeff J.
> >
> > > Elena
> > >
> > > 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.
> > > >
> > > > gdb/mi/ChangeLog:
> > > >
> > > > 2002-10-10 Jeff Johnston <jjohnstn@redhat.com>
> > > >
> > > > * 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);
[-- Attachment #2: 680.realpatch --]
[-- Type: text/plain, Size: 8365 bytes --]
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 23 Oct 2002 21:13:42 -0000
@@ -45,6 +45,7 @@
int frame_low;
int frame_high;
int i;
+ struct cleanup *cleanup_stack;
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_stack = 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_stack);
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_stack_args;
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_stack_args = 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 *cleanup_frame;
QUIT;
- ui_out_tuple_begin (uiout, "frame");
+ cleanup_frame = 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 (cleanup_frame);
}
- ui_out_list_end (uiout);
+ do_cleanups (cleanup_stack_args);
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_list;
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_list = make_cleanup_ui_out_list_begin_end (uiout, locals ? "locals" : "args");
while (block != 0)
{
@@ -262,8 +266,10 @@
}
if (print_me)
{
+ struct cleanup *cleanup_tuple = NULL;
if (values)
- ui_out_tuple_begin (uiout, NULL);
+ cleanup_tuple =
+ make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
ui_out_field_string (uiout, "name", SYMBOL_NAME (sym));
if (values)
@@ -278,7 +284,7 @@
sym2 = sym;
print_variable_value (sym2, fi, stb->stream);
ui_out_field_stream (uiout, "value", stb);
- ui_out_tuple_end (uiout);
+ do_cleanups (cleanup_tuple);
}
}
}
@@ -287,7 +293,7 @@
else
block = BLOCK_SUPERBLOCK (block);
}
- ui_out_list_end (uiout);
+ do_cleanups (cleanup_list);
ui_out_stream_delete (stb);
}
Index: mi/mi-cmd-var.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmd-var.c,v
retrieving revision 1.13
diff -u -r1.13 mi-cmd-var.c
--- mi/mi-cmd-var.c 3 Oct 2002 20:02:13 -0000 1.13
+++ mi/mi-cmd-var.c 23 Oct 2002 21:13:42 -0000
@@ -254,6 +254,7 @@
struct varobj *var;
struct varobj **childlist;
struct varobj **cc;
+ struct cleanup *cleanup_children;
int numchild;
char *type;
@@ -271,11 +272,12 @@
if (numchild <= 0)
return MI_CMD_DONE;
- ui_out_tuple_begin (uiout, "children");
+ cleanup_children = make_cleanup_ui_out_tuple_begin_end (uiout, "children");
cc = childlist;
while (*cc != NULL)
{
- ui_out_tuple_begin (uiout, "child");
+ struct cleanup *cleanup_child;
+ cleanup_child = 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 (cleanup_child);
cc++;
}
- ui_out_tuple_end (uiout);
+ do_cleanups (cleanup_children);
xfree (childlist);
return MI_CMD_DONE;
}
Index: mi/mi-main.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-main.c,v
retrieving revision 1.34
diff -u -r1.34 mi-main.c
--- mi/mi-main.c 22 Oct 2002 17:53:42 -0000 1.34
+++ mi/mi-main.c 23 Oct 2002 21:13:42 -0000
@@ -915,19 +915,22 @@
/* Build the result as a two dimentional table. */
{
struct ui_stream *stream = ui_out_stream_new (uiout);
+ struct cleanup *cleanup_list_memory;
int row;
int row_byte;
- ui_out_list_begin (uiout, "memory");
+ cleanup_list_memory = 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 *cleanup_tuple;
+ struct cleanup *cleanup_list_data;
+ cleanup_tuple = 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");
+ cleanup_list_data = make_cleanup_ui_out_list_begin_end (uiout, "data");
for (col = 0, col_byte = row_byte;
col < nr_cols;
col++, col_byte += word_size)
@@ -944,7 +947,7 @@
ui_out_field_stream (uiout, NULL, stream);
}
}
- ui_out_list_end (uiout);
+ do_cleanups (cleanup_list_data);
if (aschar)
{
int byte;
@@ -964,10 +967,10 @@
}
ui_out_field_stream (uiout, "ascii", stream);
}
- ui_out_tuple_end (uiout);
+ do_cleanups (cleanup_tuple);
}
ui_out_stream_delete (stream);
- ui_out_list_end (uiout);
+ do_cleanups (cleanup_list_memory);
}
do_cleanups (cleanups);
return MI_CMD_DONE;
@@ -1419,17 +1422,18 @@
strcmp (previous_sect_name, section_name) : 1);
if (new_section)
{
+ struct cleanup *cleanup_tuple;
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);
+ cleanup_tuple = 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 (cleanup_tuple);
mi_out_put (uiout, raw_stdout);
fputs_unfiltered ("\n", raw_stdout);
gdb_flush (raw_stdout);
@@ -1438,18 +1442,19 @@
if (delta.tv_sec >= update_threshold.tv_sec &&
delta.tv_usec >= update_threshold.tv_usec)
{
+ struct cleanup *cleanup_tuple;
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);
+ cleanup_tuple = 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 (cleanup_tuple);
mi_out_put (uiout, raw_stdout);
fputs_unfiltered ("\n", raw_stdout);
gdb_flush (raw_stdout);
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2002-10-23 21:20 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-10 14:03 patch for gdb/mi 680 J. Johnston
2002-10-21 16:06 ` Elena Zannoni
2002-10-21 16:08 ` Elena Zannoni
2002-10-21 16:34 ` J. Johnston
2002-10-22 7:20 ` Elena Zannoni
2002-10-23 14:20 ` J. Johnston
2002-10-21 18:13 ` Andrew Cagney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox