diff options
author | Joel Brobecker <brobecker@gnat.com> | 2008-04-29 21:14:06 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2008-04-29 21:14:06 +0000 |
commit | 1de34ab72d7fe2c5a98a72f0e2b02d05828687a5 (patch) | |
tree | 0bf12040a57095aeff169d14e9484bd05f336b59 | |
parent | ea42b34a37453fb7cf3a4ac7a5a6d0d456623fd9 (diff) | |
download | gdb-1de34ab72d7fe2c5a98a72f0e2b02d05828687a5.zip gdb-1de34ab72d7fe2c5a98a72f0e2b02d05828687a5.tar.gz gdb-1de34ab72d7fe2c5a98a72f0e2b02d05828687a5.tar.bz2 |
* ia64-tdep.c (ia64_memory_remove_breakpoint): Set
show_memory_breakpoints to 1 while reading the instruction bundle.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/ia64-tdep.c | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 35c6cea..b5a31dd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2008-04-29 Joel Brobecker <brobecker@adacore.com> + * ia64-tdep.c (ia64_memory_remove_breakpoint): Set + show_memory_breakpoints to 1 while reading the instruction bundle. + +2008-04-29 Joel Brobecker <brobecker@adacore.com> + * gdbarch.sh: Document the return_value method. Explain that the FUNCTYPE parameter might be NULL. * gdbarch.h: Regenerated. diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 37ed4fc..dd2064c 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -598,9 +598,15 @@ ia64_memory_remove_breakpoint (struct gdbarch *gdbarch, long long instr; int val; int template; + struct cleanup *cleanup; addr &= ~0x0f; + /* Disable the automatic memory restoration from breakpoints while + we read our instruction bundle. Otherwise, the general restoration + mechanism kicks in and ends up corrupting our bundle, because it + is not aware of the concept of instruction bundles. */ + cleanup = make_show_memory_breakpoints_cleanup (1); val = target_read_memory (addr, bundle, BUNDLE_LEN); /* Check for L type instruction in 2nd slot, if present then @@ -616,6 +622,7 @@ ia64_memory_remove_breakpoint (struct gdbarch *gdbarch, if (val == 0) target_write_memory (addr, bundle, BUNDLE_LEN); + do_cleanups (cleanup); return val; } |