aboutsummaryrefslogtreecommitdiff
path: root/gdb/printcmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/printcmd.c')
-rw-r--r--gdb/printcmd.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 0dfe80b..a51ba68 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -124,6 +124,8 @@ struct display
{
/* Chain link to next auto-display item. */
struct display *next;
+ /* The expression as the user typed it. */
+ char *exp_string;
/* Expression to be evaluated and displayed. */
struct expression *exp;
/* Item number of this auto-display item. */
@@ -1398,6 +1400,7 @@ display_command (char *exp, int from_tty)
new = (struct display *) xmalloc (sizeof (struct display));
+ new->exp_string = xstrdup (exp);
new->exp = expr;
new->block = innermost_block;
new->next = display_chain;
@@ -1416,6 +1419,7 @@ display_command (char *exp, int from_tty)
static void
free_display (struct display *d)
{
+ xfree (d->exp_string);
xfree (d->exp);
xfree (d);
}
@@ -1430,9 +1434,8 @@ clear_displays (void)
while ((d = display_chain) != NULL)
{
- xfree (d->exp);
display_chain = d->next;
- xfree (d);
+ free_display (d);
}
}
@@ -1546,7 +1549,7 @@ do_one_display (struct display *d)
annotate_display_expression ();
- print_expression (d->exp, gdb_stdout);
+ puts_filtered (d->exp_string);
annotate_display_expression_end ();
if (d->format.count != 1 || d->format.format == 'i')
@@ -1574,7 +1577,7 @@ do_one_display (struct display *d)
annotate_display_expression ();
- print_expression (d->exp, gdb_stdout);
+ puts_filtered (d->exp_string);
annotate_display_expression_end ();
printf_filtered (" = ");
@@ -1654,7 +1657,7 @@ Num Enb Expression\n"));
d->format.format);
else if (d->format.format)
printf_filtered ("/%c ", d->format.format);
- print_expression (d->exp, gdb_stdout);
+ puts_filtered (d->exp_string);
if (d->block && !contained_in (get_selected_block (0), d->block))
printf_filtered (_(" (cannot be evaluated in the current context)"));
printf_filtered ("\n");