* printcmd.c: Include "arch-utils.h".

(do_one_display): Re-parse expression if current architecture changed.
This commit is contained in:
Ulrich Weigand 2010-01-04 14:55:08 +00:00
parent c975cc9881
commit 704e916559
2 changed files with 20 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2010-01-04 Ulrich Weigand <uweigand@de.ibm.com>
* printcmd.c: Include "arch-utils.h".
(do_one_display): Re-parse expression if current architecture changed.
2010-01-03 Jan Kratochvil <jan.kratochvil@redhat.com>
Joel Brobecker <brobecker@adacore.com>

View File

@ -49,6 +49,7 @@
#include "solib.h"
#include "parser-defs.h"
#include "charset.h"
#include "arch-utils.h"
#ifdef TUI
#include "tui/tui.h" /* For tui_active et.al. */
@ -1606,6 +1607,20 @@ do_one_display (struct display *d)
if (d->enabled_p == 0)
return;
/* The expression carries the architecture that was used at parse time.
This is a problem if the expression depends on architecture features
(e.g. register numbers), and the current architecture is now different.
For example, a display statement like "display/i $pc" is expected to
display the PC register of the current architecture, not the arch at
the time the display command was given. Therefore, we re-parse the
expression if the current architecture has changed. */
if (d->exp != NULL && d->exp->gdbarch != get_current_arch ())
{
xfree (d->exp);
d->exp = NULL;
d->block = NULL;
}
if (d->exp == NULL)
{
volatile struct gdb_exception ex;