* printcmd.c: Include "arch-utils.h".
(do_one_display): Re-parse expression if current architecture changed.
This commit is contained in:
parent
c975cc9881
commit
704e916559
|
@ -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>
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue