diff --git a/valgrind-3.11.0-libstdc++-supp.patch b/valgrind-3.11.0-libstdc++-supp.patch
new file mode 100644
index 0000000..8f21a06
--- /dev/null
+++ b/valgrind-3.11.0-libstdc++-supp.patch
@@ -0,0 +1,109 @@
+commit 578a0ec2872203dd4a741f7a445056c80320e2c8
+Author: Mark Wielaard <mjw@redhat.com>
+Date:   Thu Mar 10 21:36:00 2016 +0100
+
+    Add libstdc++.supp for still reachable leaks from global memory cache.
+    
+    Contributed by Björn "besser82" Esser <fedora@besser82.io>.
+
+diff --git a/configure.ac b/configure.ac
+index 888a308..01012e1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1060,6 +1060,9 @@ if test "$VGCONF_OS" != "solaris"; then
+     DEFAULT_SUPP="exp-sgcheck.supp ${DEFAULT_SUPP}"
+ fi
+ 
++# Suppression file for libstdc++ until we solve KDE#345307
++DEFAULT_SUPP="libstdc++.supp ${DEFAULT_SUPP}"
++
+ 
+ #----------------------------------------------------------------------------
+ # Platform variants?
+diff --git a/libstdc++.supp b/libstdc++.supp
+new file mode 100644
+index 0000000..f04f90d
+--- /dev/null
++++ b/libstdc++.supp
+@@ -0,0 +1,68 @@
++
++# Some programs are using the C++ STL and string classes.
++# Valgrind reports 'still reachable' memory leaks involving these classes
++# at the exit of the program, but there should be none.
++#
++# Many implementations of the C++ standard libraries use their own memory
++# pool allocators.  Memory for quite a number of destructed objects is not
++# immediately freed and given back to the OS, but kept in the pool(s) for
++# later re-use.  The fact that the pools are not freed at the exit of the
++# program cause Valgrind to report this memory as still reachable.
++#
++# The behavior not to free pools at the exit could be called a bug of the
++# library though.
++#
++# Using GCC, you can force the STL to use malloc and to free memory as soon
++# as possible by globally disabling memory caching.  Beware! Doing so will
++# probably slow down your program, sometimes drastically.
++#
++# There are other ways to disable memory pooling: using the malloc_alloc
++# template with your objects (not portable, but should work for GCC) or
++# even writing your own memory allocators.   But beware: allocators belong
++# to the more messy parts of the STL and people went to great lengths to
++# make the STL portable across platforms.  Chances are good that your
++# solution will work on your platform, but not on others.
++#
++# 72,704 bytes in 1 blocks are still reachable in loss record 1 of 1
++#       at 0x4C28D06: malloc (vg_replace_malloc.c:299)
++#       by 0x50C317F: ??? (in /usr/lib64/libstdc++.so.6.0.21)
++#       by 0x400F759: call_init.part.0 (dl-init.c:72)
++#       by 0x400F86A: call_init (dl-init.c:30)
++#       by 0x400F86A: _dl_init (dl-init.c:120)
++#       by 0x4000CB9: ??? (in /usr/lib64/ld-2.22.so)
++#
++# HEAP SUMMARY:
++#     in use at exit: 72,704 bytes in 1 blocks
++#   total heap usage: 4 allocs, 3 frees, 72,864 bytes allocated
++#
++# LEAK SUMMARY:
++#    definitely lost: 0 bytes in 0 blocks
++#    indirectly lost: 0 bytes in 0 blocks
++#      possibly lost: 0 bytes in 0 blocks
++#    still reachable: 72,704 bytes in 1 blocks
++#         suppressed: 0 bytes in 0 blocks
++
++{
++   malloc-leaks-cxx-stl-string-classes
++   Memcheck:Leak
++   match-leak-kinds: reachable
++   fun:malloc
++   obj:/usr/*lib*/libstdc++.so*
++   fun:call_init.part.0
++   fun:call_init
++   fun:_dl_init
++   obj:/usr/*lib*/ld-2.*.so
++}
++{
++  malloc-leaks-cxx-stl-string-classes-debug
++  Memcheck:Leak
++  match-leak-kinds: reachable
++  fun:malloc
++  fun:pool
++  fun:__static_initialization_and_destruction_0
++  fun:_GLOBAL__sub_I_eh_alloc.cc
++  fun:call_init.part.0
++  fun:call_init
++  fun:_dl_init
++  obj:/usr/*lib*/ld-2.*.so
++}
+diff -ru valgrind-3.11.0.orig/configure valgrind-3.11.0/configure
+--- valgrind-3.11.0.orig/configure	2016-03-10 22:08:46.236519482 +0100
++++ valgrind-3.11.0/configure	2016-03-10 22:09:01.550443864 +0100
+@@ -7073,6 +7073,9 @@
+     DEFAULT_SUPP="exp-sgcheck.supp ${DEFAULT_SUPP}"
+ fi
+ 
++# Suppression file for libstdc++ until we solve KDE#345307
++DEFAULT_SUPP="libstdc++.supp ${DEFAULT_SUPP}"
++
+ 
+ #----------------------------------------------------------------------------
+ # Platform variants?
diff --git a/valgrind.spec b/valgrind.spec
index 2f9f7c1..f321546 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -120,6 +120,9 @@ Patch23: valgrind-3.11.0-ppoll-mask.patch
 # KDE#359503 - Add missing syscalls for aarch64 (arm64)
 Patch24: valgrind-3.11.0-arm64-more-syscalls.patch
 
+# Workaround for KDE#345307 - still reachable memory in libstdc++ from gcc 5
+Patch25: valgrind-3.11.0-libstdc++-supp.patch
+
 %if %{build_multilib}
 # Ensure glibc{,-devel} is installed for both multilib arches
 BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
@@ -252,6 +255,8 @@ Valgrind User Manual for details.
 # New filter (from patch24) needs to be executable.
 chmod 755 memcheck/tests/arm64-linux/filter_stderr
 
+%patch25 -p1
+
 %build
 # We need to use the software collection compiler and binutils if available.
 # The configure checks might otherwise miss support for various newer
@@ -443,8 +448,9 @@ echo ===============END TESTING===============
 %endif
 
 %changelog
-* Thu Mar 10 2016 Mark Wielaard <mjw@redhat.com>
+* Thu Mar 10 2016 Mark Wielaard <mjw@redhat.com> - 3.11.0-17
 - Update valgrind-3.11.0-arm64-more-syscalls.patch
+- Add valgrind-3.11.0-libstdc++-supp.patch (#1312647)
 
 * Wed Mar 09 2016 Mark Wielaard <mjw@redhat.com> - 3.11.0-16
 - Add valgrind-3.11.0-ppoll-mask.patch