gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Tue, 17 Nov 2009 09:41:33 +0000 (09:41 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Tue, 17 Nov 2009 09:41:33 +0000 (09:41 +0000)
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.

gdb/ChangeLog
gdb/infrun.c
gdb/target.h

index 25547324ea26c7b05e1966a09bdbd5c409e44077..9ff244700673216d4183c60b5611163866be39ff 100644 (file)
@@ -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.
index 98e215c7e740ff599b8894f3294ce2e9d7e67d33..3c1716733525e9bc1418d8fdbc3ca03d56809a92 100644 (file)
@@ -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)
index e4421e90e308dc53eda58bfde351da70ce5c3e90..c957b2a631051f173ba2a9865e35d7a0d3ff245a 100644 (file)
@@ -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)