diff --git a/gdb-bz541866-rwatch-before-run.patch b/gdb-bz541866-rwatch-before-run.patch
new file mode 100644
index 0000000..37bd001
--- /dev/null
+++ b/gdb-bz541866-rwatch-before-run.patch
@@ -0,0 +1,108 @@
+--- a/gdb/config/i386/linux64.mh
++++ b/gdb/config/i386/linux64.mh
+@@ -2,7 +2,7 @@
+ NATDEPFILES= inf-ptrace.o fork-child.o \
+ i386-nat.o amd64-nat.o amd64-linux-nat.o linux-nat.o \
+ proc-service.o linux-thread-db.o linux-fork.o
+-NAT_FILE= config/nm-linux.h
++NAT_FILE= nm-linux64.h
+
+ # The dynamically loaded libthread_db needs access to symbols in the
+ # gdb executable.
+--- a/gdb/config/i386/nm-linux.h
++++ b/gdb/config/i386/nm-linux.h
+@@ -29,4 +29,7 @@
+ #define FILL_FPXREGSET
+ #endif
+
++/* Red Hat backward compatibility with gdb-6.8. */
++#define target_can_use_hardware_watchpoint(type, cnt, ot) 1
++
+ #endif /* nm-linux.h */
+--- /dev/null
++++ b/gdb/config/i386/nm-linux64.h
+@@ -0,0 +1,28 @@
++/* Native support for GNU/Linux amd64.
++
++ Copyright 2010 Free Software Foundation, Inc.
++
++ This file is part of GDB.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see . */
++
++#ifndef NM_LINUX64_H
++#define NM_LINUX64_H
++
++#include "config/nm-linux.h"
++
++/* Red Hat backward compatibility with gdb-6.8. */
++#define target_can_use_hardware_watchpoint(type, cnt, ot) 1
++
++#endif /* NM_LINUX64_H */
+--- a/gdb/target.h
++++ b/gdb/target.h
+@@ -1257,8 +1257,10 @@ extern char *normal_pid_to_str (ptid_t ptid);
+ bp_hardware_breakpoint. CNT is the number of such watchpoints used so far
+ (including this one?). OTHERTYPE is who knows what... */
+
++#ifndef target_can_use_hardware_watchpoint
+ #define target_can_use_hardware_watchpoint(TYPE,CNT,OTHERTYPE) \
+ (*current_target.to_can_use_hw_breakpoint) (TYPE, CNT, OTHERTYPE);
++#endif
+
+ #define target_region_ok_for_hw_watchpoint(addr, len) \
+ (*current_target.to_region_ok_for_hw_watchpoint) (addr, len)
+--- /dev/null
++++ b/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp
+@@ -0,0 +1,40 @@
++# Copyright 2009, 2010 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see .
++
++# Arch not supporting hw watchpoints does not imply no_hardware_watchpoints set.
++if {(![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"]
++ && ![istarget "ia64-*-*"])
++ || [target_info exists gdb,no_hardware_watchpoints]} then {
++ verbose "Skipping watchpoint-hw-before-run test."
++ return
++}
++
++set test watchpoint-hw-before-run
++set srcfile watchpoint-hw-hit-once.c
++if { [prepare_for_testing ${test}.exp ${test} ${srcfile}] } {
++ return -1
++}
++
++gdb_test "rwatch watchee" "ardware read watchpoint 1: watchee"
++
++# `runto_main' or `runto main' would delete the watchpoint created above.
++
++if { [gdb_start_cmd] < 0 } {
++ untested start
++ return -1
++}
++gdb_test "" "main .* at .*" "start"
++
++gdb_test "continue" "Continuing.\r\nHardware read watchpoint \[0-9\]+: watchee\r\n\r\nValue = 0\r\n.*"
diff --git a/gdb.spec b/gdb.spec
index fdea211..ef8e93b 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -36,7 +36,7 @@ Version: 7.0.50.20100203
# The release always contains a leading reserved number, start it at 1.
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 14%{?_with_upstream:.upstream}%{dist}
+Release: 15%{?_with_upstream:.upstream}%{dist}
License: GPLv3+
Group: Development/Debuggers
@@ -426,6 +426,9 @@ Patch408: gdb-ppc-power7-test.patch
# Revert: Add -Wunused-function to compile flags.
Patch412: gdb-unused-revert.patch
+# Fix i386+x86_64 rwatch+awatch before run, regression against 6.8 (BZ 541866).
+Patch417: gdb-bz541866-rwatch-before-run.patch
+
BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
Requires: readline%{?_isa}
BuildRequires: readline-devel%{?_isa}
@@ -674,6 +677,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%patch407 -p1
%patch408 -p1
%patch412 -p1
+%patch417 -p1
+
%patch415 -p1
%patch393 -p1
%patch335 -p1
@@ -1005,6 +1010,9 @@ fi
%endif
%changelog
+* Mon Feb 8 2010 Jan Kratochvil - 7.0.50.20100203-15.fc13
+- Fix i386+x86_64 rwatch+awatch before run, regression against 6.8 (BZ 541866).
+
* Wed Feb 3 2010 Jan Kratochvil - 7.0.50.20100203-14.fc13
- Rediff gdb-6.8-bz254229-gcore-prpsinfo.patch for older patch(1) compatibility.