diff --git a/valgrind-3.15.0-dhat-x86.patch b/valgrind-3.15.0-dhat-x86.patch
new file mode 100644
index 0000000..38778ed
--- /dev/null
+++ b/valgrind-3.15.0-dhat-x86.patch
@@ -0,0 +1,18 @@
+commit e63d90d66e8de6d6ec2c92e3b0a32cc165b83369
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Wed Apr 10 01:22:37 2019 +0200
+
+    dhat is broken on x86 (32bit)
+
+diff --git a/dhat/dh_main.c b/dhat/dh_main.c
+index 47a9327..a933328 100644
+--- a/dhat/dh_main.c
++++ b/dhat/dh_main.c
+@@ -794,6 +794,7 @@ void dh_handle_noninsn_write ( CorePart part, ThreadId tid,
+ {
+    switch (part) {
+       case Vg_CoreSysCall:
++      case Vg_CoreClientReq:
+          dh_handle_write(base, size);
+          break;
+       case Vg_CoreSignal:
diff --git a/valgrind-3.15.0-gdb-output1.patch b/valgrind-3.15.0-gdb-output1.patch
new file mode 100644
index 0000000..692c0e7
--- /dev/null
+++ b/valgrind-3.15.0-gdb-output1.patch
@@ -0,0 +1,123 @@
+From 97df7b924435c5f7f576972dc924f2c29105edb3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= <ahajkova@redhat.com>
+Date: Tue, 9 Apr 2019 11:09:56 +0200
+Subject: [PATCH] gdbserver_tests: adjust filtering for the new gdb output
+
+mcsigpass and mcsignopass tests fails due to the slightly different
+gdb output. Filter the tests output to make it the same for different
+gdb version. Change mcsigpass and mcsignopass .exp to fit filtered
+.out.
+---
+ gdbserver_tests/filter_gdb              |  1 +
+ gdbserver_tests/mcsignopass.stdoutB.exp | 24 ++++++++++++------------
+ gdbserver_tests/mcsigpass.stdoutB.exp   |  6 +++---
+ 3 files changed, 16 insertions(+), 15 deletions(-)
+
+diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb
+index 05bbe4c54..7e6092dd0 100755
+--- a/gdbserver_tests/filter_gdb
++++ b/gdbserver_tests/filter_gdb
+@@ -139,6 +139,7 @@ sed -e '/Remote debugging using/,/vgdb launched process attached/d'
+     -e 's/VgTs_WaitSys) 0x/VgTs_WaitSys)  0x/'                                                        \
+     -e '/Cannot access memory at address 0x......../d'                                                \
+     -e '/\[New Thread/d'                                                                              \
++    -e 's/0x........ in test/test/'                                                                    \
+     -e '/^$/d'                                                                                     |
+ 
+ # remove all the lines telling where the SIGFPE was trapped.
+diff --git a/gdbserver_tests/mcsignopass.stdoutB.exp b/gdbserver_tests/mcsignopass.stdoutB.exp
+index d77f9832a..18c830be6 100644
+--- a/gdbserver_tests/mcsignopass.stdoutB.exp
++++ b/gdbserver_tests/mcsignopass.stdoutB.exp
+@@ -6,54 +6,54 @@ Signal        Stop	Print	Pass to program	Description
+ SIGFPE        Yes	Yes	Yes		Arithmetic exception
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Signal        Stop	Print	Pass to program	Description
+ SIGSEGV       No	Yes	Yes		Segmentation fault
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+ Program received signal SIGBUS, Bus error.
+-0x........ in test3 () at faultstatus.c:126
++test3 () at faultstatus.c:126
+ 126		mapping[FILESIZE+10];
+ Continuing.
+ Program received signal SIGFPE, Arithmetic exception.
+diff --git a/gdbserver_tests/mcsigpass.stdoutB.exp b/gdbserver_tests/mcsigpass.stdoutB.exp
+index de6c2634f..680035836 100644
+--- a/gdbserver_tests/mcsigpass.stdoutB.exp
++++ b/gdbserver_tests/mcsigpass.stdoutB.exp
+@@ -1,14 +1,14 @@
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test1 () at faultstatus.c:116
++test1 () at faultstatus.c:116
+ 116		*BADADDR = 'x';
+ Continuing.
+ Program received signal SIGSEGV, Segmentation fault.
+-0x........ in test2 () at faultstatus.c:121
++test2 () at faultstatus.c:121
+ 121		mapping[0] = 'x';
+ Continuing.
+ Program received signal SIGBUS, Bus error.
+-0x........ in test3 () at faultstatus.c:126
++test3 () at faultstatus.c:126
+ 126		mapping[FILESIZE+10];
+ Continuing.
+ Program received signal SIGFPE, Arithmetic exception.
+-- 
+2.17.2
+
diff --git a/valgrind-3.15.0-gdb-output2.patch b/valgrind-3.15.0-gdb-output2.patch
new file mode 100644
index 0000000..78f5ea9
--- /dev/null
+++ b/valgrind-3.15.0-gdb-output2.patch
@@ -0,0 +1,19 @@
+commit 983cb6ab1d60c79a8a9c6723815468fc59c4f248
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Wed Apr 10 01:28:24 2019 +0200
+
+    Bug 406357
+
+diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb
+index 05bbe4c..d0ab11d 100755
+--- a/gdbserver_tests/filter_gdb
++++ b/gdbserver_tests/filter_gdb
+@@ -92,7 +92,7 @@ sed -e '/Remote debugging using/,/vgdb launched process attached/d'
+     -e 's/^Thread .... received /Program received /'                                                  \
+     -e 's/#[0-9]\(  0x........ in sleeper_or_burner\)/#.\1/'                                          \
+     -e 's/\(#0  0x........ in do_burn ()\) at sleepers.c:41/\1/'                                      \
+-    -e '/^Reading symbols from .*\.\.\.done\./d'                                                      \
++    -e '/^Reading symbols from .*\.\.\.\(done\.\)\?/d'                                                \
+     -e '/^Loaded symbols for .*$/d'                                                                   \
+     -e '/^Current language.*/d'                                                                       \
+     -e '/^The current source language is.*/d'                                                         \
diff --git a/valgrind-3.15.0-libstdc++-supp.patch b/valgrind-3.15.0-libstdc++-supp.patch
new file mode 100644
index 0000000..990a344
--- /dev/null
+++ b/valgrind-3.15.0-libstdc++-supp.patch
@@ -0,0 +1,51 @@
+commit 751b5736bb597210c5d9de40cb586d4b341bf29a
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Tue Apr 9 16:09:50 2019 +0200
+
+    More memcheck/tests/libstdc++.supp suppressions
+
+diff --git a/memcheck/tests/libstdc++.supp b/memcheck/tests/libstdc++.supp
+index fad537f..28ab182 100644
+--- a/memcheck/tests/libstdc++.supp
++++ b/memcheck/tests/libstdc++.supp
+@@ -49,6 +49,9 @@
+ #    still reachable: 72,704 bytes in 1 blocks
+ #         suppressed: 0 bytes in 0 blocks
+ 
++# All the following suppressions are variants of
++# _dl_init -> call_init which calls the DT_INIT_ARRAY functions
++
+ {
+    malloc-leaks-cxx-stl-string-classes
+    Memcheck:Leak
+@@ -61,6 +64,16 @@
+    obj:*lib*/ld-2.*.so
+ }
+ {
++   malloc-leaks-cxx-stl-string-classes-2
++   Memcheck:Leak
++   match-leak-kinds: reachable
++   fun:malloc
++   obj:*lib*/libstdc++.so*
++   fun:call_init.part.0
++   fun:_dl_init
++   obj:*lib*/ld-2.*.so
++}
++{
+   malloc-leaks-cxx-stl-string-classes-debug
+   Memcheck:Leak
+   match-leak-kinds: reachable
+@@ -73,3 +86,13 @@
+   fun:_dl_init
+   obj:*lib*/ld-2.*.so
+ }
++{
++   malloc-leaks-cxx-stl-string-classes-debug2
++   Memcheck:Leak
++   match-leak-kinds: reachable
++   fun:malloc
++   obj:*
++   fun:call_init
++   fun:_dl_init
++   fun:_dl_start_user
++}
diff --git a/valgrind-3.15.0-missing-a-c.patch b/valgrind-3.15.0-missing-a-c.patch
new file mode 100644
index 0000000..d047b0f
--- /dev/null
+++ b/valgrind-3.15.0-missing-a-c.patch
@@ -0,0 +1,19 @@
+commit e5ff7e633a768a421dafbc115c3a3c2f713338db
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Wed Apr 10 00:33:26 2019 +0200
+
+    add missing a.c
+
+diff --git a/cachegrind/tests/a.c b/cachegrind/tests/a.c
+new file mode 100644
+index 0000000..cd1c66e
+--- /dev/null
++++ b/cachegrind/tests/a.c
+@@ -0,0 +1,7 @@
++int main(void) {
++   int z = 0;
++   for (int i = 0; i < 1000000; i++) {
++      z += i;
++   }
++   return z % 256;
++}
diff --git a/valgrind-3.15.0-s390x-get-startregs-constraint.patch b/valgrind-3.15.0-s390x-get-startregs-constraint.patch
new file mode 100644
index 0000000..f6f34dc
--- /dev/null
+++ b/valgrind-3.15.0-s390x-get-startregs-constraint.patch
@@ -0,0 +1,19 @@
+commit b2d2da64b0de1c4d657b63187967b68606e84711
+Author: Julian Seward <jseward@acm.org>
+Date:   Mon Apr 8 14:16:48 2019 +0200
+
+    GET_STARTREGS for s390: fix register constraint (per comments from Andreas Arnez).
+
+diff --git a/coregrind/m_libcassert.c b/coregrind/m_libcassert.c
+index 6d1cd4c..bb9b92b 100644
+--- a/coregrind/m_libcassert.c
++++ b/coregrind/m_libcassert.c
+@@ -180,7 +180,7 @@
+            "std %%f6, 72(%1);"                            \
+            "std %%f7, 80(%1);"                            \
+            : /* out */   "=r" (ia)                        \
+-           : /* in */    "r" (&block[0])                  \
++           : /* in */    "a" (&block[0])                  \
+            : /* trash */ "memory"                         \
+         );                                                \
+         (srP)->r_pc = ia;                                 \
diff --git a/valgrind.spec b/valgrind.spec
index 8943f2e..af8e295 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -3,7 +3,7 @@
 Summary: Tool for finding memory management bugs in programs
 Name: %{?scl_prefix}valgrind
 Version: 3.15.0
-Release: 0.1.RC1%{?dist}
+Release: 0.2.RC1%{?dist}
 Epoch: 1
 License: GPLv2+
 URL: http://www.valgrind.org/
@@ -84,6 +84,25 @@ Patch3: valgrind-3.9.0-ldso-supp.patch
 # same directory is used independent of arch.
 Patch4: valgrind-3.15.0-pkglibexecdir.patch
 
+# valgrind commit b2d2da64b0de1c4d657b63187967b68606e84711
+# GET_STARTREGS for s390: fix register constraint
+Patch5: valgrind-3.15.0-s390x-get-startregs-constraint.patch
+
+# KDE#406352 RC1 fails cachegrind/callgrind ann tests because of missing a.c
+Patch6: valgrind-3.15.0-missing-a-c.patch
+
+# KDE#406360 memcheck/tests/libstdc++.supp needs more supression variants
+Patch7: valgrind-3.15.0-libstdc++-supp.patch
+
+# KDE#406354 dhat is broken on x86 (32bit)
+Patch8: valgrind-3.15.0-dhat-x86.patch
+
+# KDE#406355 mcsignopass and mcsigpass fails due to a difference in gdb output
+Patch9: valgrind-3.15.0-gdb-output1.patch
+
+# KDE#406357 RC1 fails gdbserver_tests because of gdb output change
+Patch10: valgrind-3.15.0-gdb-output2.patch
+
 
 %if 0%{?fedora} >= 15
 BuildRequires: glibc-devel >= 2.14
@@ -216,6 +235,12 @@ Valgrind User Manual for details.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
 
 %build
 CC=gcc
@@ -428,6 +453,14 @@ fi
 %endif
 
 %changelog
+* Tue Apr  9 2019 Mark Wielaard <mjw@fedoraproject.org> - 3.15.0-0.2.RC1
+- Add valgrind-3.15.0-s390x-get-startregs-constraint.patch
+- Add valgrind-3.15.0-missing-a-c.patch
+- Add valgrind-3.15.0-libstdc++-supp.patch
+- Add valgrind-3.15.0-dhat-x86.patch
+- Add valgrind-3.15.0-gdb-output1.patch
+- Add valgrind-3.15.0-gdb-output2.patch
+
 * Mon Apr  8 2019 Mark Wielaard <mjw@fedoraproject.org> - 3.15.0-0.1.RC1
 - Remove patches to prebuild files and always ./autogen.sh.
 - Only ever build primary arch. Put tools under libexec.