From ea5d7a9987534b6d393a523becd3f8ce5e967641 Mon Sep 17 00:00:00 2001
From: Pierre Muller <muller@sourceware.org>
Date: Wed, 17 Jun 2009 06:17:32 +0000
Subject: [PATCH] 	* infcmd.c (post_create_inferior): Call
 breakpoint_re_set after target 	is pushed for watchpoint promotion to
 hardware watchpoint.

---
 gdb/ChangeLog |  6 ++++++
 gdb/infcmd.c  | 12 ++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 692222c1702..3f9149625c5 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2009-06-17  Pierre Muller  <muller@ics.u-strasbg.fr>
+	Pedro Alves  <pedro@codesourcery.com>
+	
+	* infcmd.c (post_create_inferior): Call breakpoint_re_set after target
+	is pushed for watchpoint promotion to hardware watchpoint.
+
 2009-06-16  Paul Pluzhnikov  <ppluzhnikov@google.com>
 
 	* dwarf2read.c (dwarf_info_section, dwarf_abbrev_section)
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 9329558abc8..422993f1913 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -421,6 +421,18 @@ post_create_inferior (struct target_ops *target, int from_tty)
 #endif
     }
 
+  /* If the user sets watchpoints before execution having started,
+     then she gets software watchpoints, because GDB can't know which
+     target will end up being pushed, or if it supports hardware
+     watchpoints or not.  breakpoint_re_set takes care of promoting
+     watchpoints to hardware watchpoints if possible, however, if this
+     new inferior doesn't load shared libraries or we don't pull in
+     symbols from any other source on this target/arch,
+     breakpoint_re_set is never called.  Call it now so that software
+     watchpoints get a chance to be promoted to hardware watchpoints
+     if the now pushed target supports hardware watchpoints.  */
+  breakpoint_re_set ();
+
   observer_notify_inferior_created (target, from_tty);
 }
 
-- 
GitLab