aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2009-11-17 09:41:33 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2009-11-17 09:41:33 +0000
commit7f82dfc7f0654b735a1dbe5d9d2d2948f175ba64 (patch)
tree4424d7da6c4432ab27c4c598e6fb142c73f1b76d
parent1649019427594c0e78e7082a1885c6ac8a480cb5 (diff)
downloadgdb-7f82dfc7f0654b735a1dbe5d9d2d2948f175ba64.zip
gdb-7f82dfc7f0654b735a1dbe5d9d2d2948f175ba64.tar.gz
gdb-7f82dfc7f0654b735a1dbe5d9d2d2948f175ba64.tar.bz2
gdb/
Fix wrong debug output with `set debug infrun 1'. * gdb/infrun.c (handle_inferior_event <debug_infrun>): New variable old_chain. Temporarily switch INFERIOR_PTID. * target.h (target_stopped_by_watchpoint): Extend the comment. (target_stopped_data_address): New comment.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/infrun.c5
-rw-r--r--gdb/target.h9
3 files changed, 19 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2554732..9ff2447 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2009-11-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix wrong debug output with `set debug infrun 1'.
+ * gdb/infrun.c (handle_inferior_event <debug_infrun>): New variable
+ old_chain. Temporarily switch INFERIOR_PTID.
+ * target.h (target_stopped_by_watchpoint): Extend the comment.
+ (target_stopped_data_address): New comment.
+
2009-11-16 Tom Tromey <tromey@redhat.com>
* xcoffread.c (scan_xcoff_symtab): Update.
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 98e215c..3c17167 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -3135,6 +3135,9 @@ targets should add new threads to the thread list themselves in non-stop mode.")
{
struct regcache *regcache = get_thread_regcache (ecs->ptid);
struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ struct cleanup *old_chain = save_inferior_ptid ();
+
+ inferior_ptid = ecs->ptid;
fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = %s\n",
paddress (gdbarch, stop_pc));
@@ -3151,6 +3154,8 @@ targets should add new threads to the thread list themselves in non-stop mode.")
fprintf_unfiltered (gdb_stdlog,
"infrun: (no data address available)\n");
}
+
+ do_cleanups (old_chain);
}
if (stepping_past_singlestep_breakpoint)
diff --git a/gdb/target.h b/gdb/target.h
index e4421e9..c957b2a 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -1144,7 +1144,7 @@ extern char *normal_pid_to_str (ptid_t ptid);
/* Hardware watchpoint interfaces. */
/* Returns non-zero if we were stopped by a hardware watchpoint (memory read or
- write). */
+ write). Only the INFERIOR_PTID task is being queried. */
#define target_stopped_by_watchpoint \
(*current_target.to_stopped_by_watchpoint)
@@ -1192,8 +1192,11 @@ extern char *normal_pid_to_str (ptid_t ptid);
#define target_remove_hw_breakpoint(gdbarch, bp_tgt) \
(*current_target.to_remove_hw_breakpoint) (gdbarch, bp_tgt)
-#define target_stopped_data_address(target, x) \
- (*target.to_stopped_data_address) (target, x)
+/* Return non-zero if target knows the data address which triggered this
+ target_stopped_by_watchpoint, in such case place it to *ADDR_P. Only the
+ INFERIOR_PTID task is being queried. */
+#define target_stopped_data_address(target, addr_p) \
+ (*target.to_stopped_data_address) (target, addr_p)
#define target_watchpoint_addr_within_range(target, addr, start, length) \
(*target.to_watchpoint_addr_within_range) (target, addr, start, length)