diff --git a/gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch b/gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
new file mode 100644
index 0000000..446ac6b
--- /dev/null
+++ b/gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
@@ -0,0 +1,86 @@
+Index: gdb-7.6.1/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.6.1/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.exp 2016-03-10 22:31:31.152094080 +0100
+@@ -0,0 +1,43 @@
++# Copyright (C) 2016 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 .
++
++if { [prepare_for_testing rhbz1261564-aarch64-watchpoint.exp "rhbz1261564-aarch64-watchpoint"] } {
++ return -1
++}
++
++if { ! [ runto main ] } then { return 0 }
++
++gdb_test "rwatch aligned.var4" "Hardware read watchpoint \[0-9\]+: aligned.var4"
++
++proc checkvar { address } {
++ global gdb_prompt
++
++ set test "p &aligned.var$address"
++ gdb_test_multiple $test $test {
++ -re " = \\(int \\*\\) 0x\[0-9a-f\]+$address \r\n$gdb_prompt $" {
++ pass $test
++ }
++ -re "\r\n$gdb_prompt $" {
++ untested "$test (unexpected ELF layout)"
++ return 0
++ }
++ }
++ return 1
++}
++if ![checkvar "0"] { return }
++if ![checkvar "4"] { return }
++if ![checkvar "8"] { return }
++
++gdb_continue_to_end
+Index: gdb-7.6.1/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.6.1/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.c 2016-03-10 22:31:31.152094080 +0100
+@@ -0,0 +1,33 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++ Copyright 2016 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 . */
++
++__attribute__((aligned(16))) struct
++{
++ int var0, var4, var8;
++} aligned;
++
++int
++main (void)
++{
++ aligned.var0 = 1;
++ aligned.var4 = 2;
++ aligned.var8 = 3;
++
++ aligned.var4 = aligned.var0;
++
++ return 0;
++}
diff --git a/gdb-upstream.patch b/gdb-upstream.patch
new file mode 100644
index 0000000..1e5d59f
--- /dev/null
+++ b/gdb-upstream.patch
@@ -0,0 +1,155 @@
+http://sourceware.org/ml/gdb-patches/2016-03/msg00013.html
+Subject: [PATCH 1/2] Fix PR gdb/19676: Disable displaced stepping if /proc not mounted
+
+On GNU/Linux archs that support displaced stepping, if /proc is not
+mounted, GDB gets stuck not able to step past breakpoints:
+
+ (gdb) c
+ Continuing.
+ dl_main (phdr=, phnum=, user_entry=, auxv=) at rtld.c:2163
+ 2163 LIBC_PROBE (init_complete, 2, LM_ID_BASE, r);
+ Cannot find AT_ENTRY auxiliary vector entry.
+ (gdb) c
+ Continuing.
+ dl_main (phdr=, phnum=, user_entry=, auxv=) at rtld.c:2163
+ 2163 LIBC_PROBE (init_complete, 2, LM_ID_BASE, r);
+ Cannot find AT_ENTRY auxiliary vector entry.
+ (gdb)
+
+That's because GDB can't figure out where the scratch pad is.
+
+This is a regression introduced by the earlier changes to make the
+Linux native target always work in non-stop mode.
+
+This commit makes GDB detect the case and fallback to stepping over
+breakpoints in-line.
+
+gdb/ChangeLog:
+2016-03-01 Pedro Alves
+
+ PR gdb/19676
+ * infrun.c (displaced_step_prepare): Also disable displaced
+ stepping on NOT_SUPPORTED_ERROR.
+ * linux-tdep.c (linux_displaced_step_location): If reading auxv
+ fails, throw NOT_SUPPORTED_ERROR instead of generic error.
+---
+ gdb/infrun.c | 3 ++-
+ gdb/linux-tdep.c | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/gdb/infrun.c b/gdb/infrun.c
+index 3e8c9e0..696105d 100644
+--- a/gdb/infrun.c
++++ b/gdb/infrun.c
+@@ -1894,7 +1894,8 @@ displaced_step_prepare (ptid_t ptid)
+ {
+ struct displaced_step_inferior_state *displaced_state;
+
+- if (ex.error != MEMORY_ERROR)
++ if (ex.error != MEMORY_ERROR
++ && ex.error != NOT_SUPPORTED_ERROR)
+ throw_exception (ex);
+
+ if (debug_infrun)
+diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
+index 555c302..f197aa7 100644
+--- a/gdb/linux-tdep.c
++++ b/gdb/linux-tdep.c
+@@ -2426,7 +2426,8 @@ linux_displaced_step_location (struct gdbarch *gdbarch)
+ location. The auxiliary vector gets us the PowerPC-side entry
+ point address instead. */
+ if (target_auxv_search (¤t_target, AT_ENTRY, &addr) <= 0)
+- error (_("Cannot find AT_ENTRY auxiliary vector entry."));
++ throw_error (NOT_SUPPORTED_ERROR,
++ _("Cannot find AT_ENTRY auxiliary vector entry."));
+
+ /* Make certain that the address points at real code, and not a
+ function descriptor. */
+--
+2.5.0
+
+
+
+http://sourceware.org/ml/gdb-patches/2016-03/msg00014.html
+Subject: [PATCH 2/2] Fix PR gdb/19676: Internal error in linux-thread.db.c if /proc not mounted
+
+If /proc is not mounted, GDB fails an assertion in find_new_threads_once:
+
+ Continuing.
+ /home/pedro/gdb/mygit/src/gdb/linux-thread-db.c:1249: internal-error: find_new_threads_once: Assertion `!target_has_execution' failed.
+ A problem internal to GDB has been detected,
+ further debugging may prove unreliable.
+ Quit this debugging session? (y or n)
+
+That was supposed to catch misuses of td_ta_thr_iter, which is unsafe
+for live debugging. However, if /proc is not mounted, we still
+fallback to using it.
+
+I didn't bother with a warning, because GDB already prints several
+others related to failing to open /proc files.
+
+gdb/ChangeLog:
+2016-03-01 Pedro Alves
+
+ PR gdb/19676
+ * linux-thread-db.c (try_thread_db_load_1): Leave
+ info->td_ta_thr_iter_p NULL iff debugging a live process and we
+ have /proc access.
+ (find_new_threads_once): Assert that we have a non-NULL
+ info->td_ta_thr_iter_p instead of checking whether the target has
+ execution.
+---
+ gdb/linux-thread-db.c | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
+index 1eb457d..ce60beb 100644
+--- a/gdb/linux-thread-db.c
++++ b/gdb/linux-thread-db.c
+@@ -564,7 +564,6 @@ try_thread_db_load_1 (struct thread_db_info *info)
+
+ /* These are essential. */
+ CHK (TDB_VERBOSE_DLSYM (info, td_ta_map_lwp2thr));
+- CHK (TDB_VERBOSE_DLSYM (info, td_ta_thr_iter));
+ CHK (TDB_VERBOSE_DLSYM (info, td_thr_validate));
+ CHK (TDB_VERBOSE_DLSYM (info, td_thr_get_info));
+
+@@ -572,10 +571,6 @@ try_thread_db_load_1 (struct thread_db_info *info)
+ TDB_DLSYM (info, td_thr_tls_get_addr);
+ TDB_DLSYM (info, td_thr_tlsbase);
+
+-#undef TDB_VERBOSE_DLSYM
+-#undef TDB_DLSYM
+-#undef CHK
+-
+ /* It's best to avoid td_ta_thr_iter if possible. That walks data
+ structures in the inferior's address space that may be corrupted,
+ or, if the target is running, may change while we walk them. If
+@@ -587,6 +582,15 @@ try_thread_db_load_1 (struct thread_db_info *info)
+ currently on core targets, as it uses ptrace directly. */
+ if (target_has_execution
+ && linux_proc_task_list_dir_exists (ptid_get_pid (inferior_ptid)))
++ info->td_ta_thr_iter_p = NULL;
++ else
++ CHK (TDB_VERBOSE_DLSYM (info, td_ta_thr_iter));
++
++#undef TDB_VERBOSE_DLSYM
++#undef TDB_DLSYM
++#undef CHK
++
++ if (info->td_ta_thr_iter_p == NULL)
+ {
+ struct lwp_info *lp;
+ int pid = ptid_get_pid (inferior_ptid);
+@@ -1246,7 +1250,7 @@ find_new_threads_once (struct thread_db_info *info, int iteration,
+ data.new_threads = 0;
+
+ /* See comment in thread_db_update_thread_list. */
+- gdb_assert (!target_has_execution);
++ gdb_assert (info->td_ta_thr_iter_p != NULL);
+
+ TRY
+ {
+--
+2.5.0
+
diff --git a/gdb.spec b/gdb.spec
index a5f7192..0266af9 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -27,7 +27,7 @@ Version: 7.11
# 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: 59%{?dist}
+Release: 60%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain and GFDL
Group: Development/Debuggers
@@ -245,7 +245,7 @@ Patch231: gdb-6.3-bz202689-exec-from-pthread-test.patch
# Backported fixups post the source tarball.
#Xdrop: Just backports.
-#Patch232: gdb-upstream.patch
+Patch232: gdb-upstream.patch
# Testcase for PPC Power6/DFP instructions disassembly (BZ 230000).
#=fedoratest+ppc
@@ -557,6 +557,10 @@ Patch1075: gdb-testsuite-readline63-sigint.patch
# Fix strict-aliasing rules compilation error (RH BZ 1315191).
Patch1107: gdb-bfd-aliasing.patch
+# [aarch64] Fix hardware watchpoints (RH BZ 1261564).
+#=fedoratest
+Patch1113: gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
+
%if 0%{!?rhel:1} || 0%{?rhel} > 6
# RL_STATE_FEDORA_GDB would not be found for:
# Patch642: gdb-readline62-ask-more-rh.patch
@@ -752,7 +756,7 @@ find -name "*.info*"|xargs rm -f
# Match the Fedora's version info.
%patch2 -p1
-#patch232 -p1
+%patch232 -p1
%patch349 -p1
%patch1058 -p1
%patch1059 -p1
@@ -871,6 +875,7 @@ find -name "*.info*"|xargs rm -f
%patch331 -p1
%patch1075 -p1
%patch1107 -p1
+%patch1113 -p1
%if 0%{?rhel:1} && 0%{?rhel} <= 7
%patch1044 -p1
@@ -1388,6 +1393,10 @@ then
fi
%changelog
+* Tue Mar 15 2016 Jan Kratochvil - 7.11-60.fc24
+- New Fedora GDB testfile: rhbz1261564-aarch64-watchpoint.exp
+- Backport gdb-7.11 stable branch PR gdb/19676 fix (Pedro Alves).
+
* Tue Mar 8 2016 Jan Kratochvil - 7.11-59.fc24
- Fix strict-aliasing rules compilation error (RH BZ 1315191).