diff --git a/valgrind-3.2.3-glibc2_7.patch b/valgrind-3.2.3-glibc2_7.patch
new file mode 100644
index 0000000..4728eb4
--- /dev/null
+++ b/valgrind-3.2.3-glibc2_7.patch
@@ -0,0 +1,323 @@
+--- valgrind-3.2.3/configure.in.jj	2007-06-27 12:22:59.000000000 +0200
++++ valgrind-3.2.3/configure.in	2007-06-27 16:03:45.000000000 +0200
+@@ -361,6 +361,16 @@ AC_EGREP_CPP([GLIBC_26], [
+ ],
+ glibc="2.6")
+ 
++AC_EGREP_CPP([GLIBC_27], [
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 7)
++  GLIBC_27
++ #endif
++#endif
++],
++glibc="2.7")
++
+ AC_MSG_CHECKING([the glibc version])
+ 
+ case "${glibc}" in
+@@ -388,9 +398,15 @@ case "${glibc}" in
+ 	DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}"
+ 	;;
+ 
++     2.7)
++	AC_MSG_RESULT(2.7 family)
++	AC_DEFINE([GLIBC_2_7], 1, [Define to 1 if you're using glibc 2.7.x])
++	DEFAULT_SUPP="glibc-2.7.supp ${DEFAULT_SUPP}"
++	;;
++
+      *)
+ 	AC_MSG_RESULT(unsupported version)
+-	AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.6])
++	AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.7])
+ 	;;
+ esac
+ 
+--- valgrind-3.2.3/config.h.in.jj	2007-01-02 15:55:38.000000000 +0100
++++ valgrind-3.2.3/config.h.in	2007-06-27 16:08:37.000000000 +0200
+@@ -18,6 +18,9 @@
+ /* Define to 1 if you're using glibc 2.6.x */
+ #undef GLIBC_2_6
+ 
++/* Define to 1 if you're using glibc 2.7.x */
++#undef GLIBC_2_7
++
+ /* Define to 1 if as supports mtocrf/mfocrf. */
+ #undef HAVE_AS_PPC_MFTOCRF
+ 
+--- valgrind-3.2.3/configure.jj	2007-06-27 12:22:59.000000000 +0200
++++ valgrind-3.2.3/configure	2007-06-27 16:08:16.000000000 +0200
+@@ -4413,6 +4413,28 @@ fi
+ rm -f conftest*
+ 
+ 
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h.  */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h.  */
++
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 7)
++  GLIBC_27
++ #endif
++#endif
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++  $EGREP "GLIBC_27" >/dev/null 2>&1; then
++  glibc="2.7"
++fi
++rm -f conftest*
++
++
+ { echo "$as_me:$LINENO: checking the glibc version" >&5
+ echo $ECHO_N "checking the glibc version... $ECHO_C" >&6; }
+ 
+@@ -4472,11 +4494,22 @@ _ACEOF
+ 	DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}"
+ 	;;
+ 
++     2.7)
++	echo "$as_me:$LINENO: result: 2.7 family" >&5
++echo "${ECHO_T}2.7 family" >&6
++
++cat >>confdefs.h <<\_ACEOF
++#define GLIBC_2_7 1
++_ACEOF
++
++	DEFAULT_SUPP="glibc-2.7.supp ${DEFAULT_SUPP}"
++	;;
++
+      *)
+ 	{ echo "$as_me:$LINENO: result: unsupported version" >&5
+ echo "${ECHO_T}unsupported version" >&6; }
+-	{ { echo "$as_me:$LINENO: error: Valgrind requires glibc version 2.2 - 2.6" >&5
+-echo "$as_me: error: Valgrind requires glibc version 2.2 - 2.6" >&2;}
++	{ { echo "$as_me:$LINENO: error: Valgrind requires glibc version 2.2 - 2.7" >&5
++echo "$as_me: error: Valgrind requires glibc version 2.2 - 2.7" >&2;}
+    { (exit 1); exit 1; }; }
+ 	;;
+ esac
+--- valgrind-3.2.3/glibc-2.7.supp.jj	2007-06-27 16:09:55.000000000 +0200
++++ valgrind-3.2.3/glibc-2.7.supp	2007-06-27 16:10:20.000000000 +0200
+@@ -0,0 +1,216 @@
++
++##----------------------------------------------------------------------##
++
++# Errors to suppress by default with glibc 2.7.x
++
++# Format of this file is:
++# {
++#     name_of_suppression
++#     tool_name:supp_kind
++#     (optional extra info for some suppression types)
++#     caller0 name, or /name/of/so/file.so
++#     caller1 name, or ditto
++#     (optionally: caller2 name)
++#     (optionally: caller3 name)
++#  }
++#
++# For Memcheck, the supp_kinds are:
++#
++#     Param Value1 Value2 Value4 Value8 Value16
++#     Free Addr1 Addr2 Addr4 Addr8 Addr16
++#     Cond (previously known as Value0)
++#
++# and the optional extra info is:
++#     if Param: name of system call param
++#     if Free: name of free-ing fn)
++
++{
++   dl-hack1
++   Memcheck:Cond
++   fun:_dl_start
++   fun:_start
++}
++
++{
++   dl-hack2
++   Memcheck:Cond
++   obj:/lib*/ld-2.7*.so
++   obj:/lib*/ld-2.7*.so
++   obj:/lib*/ld-2.7*.so
++   obj:/lib*/ld-2.7*.so
++}
++
++{
++   dl-hack3
++   Memcheck:Cond
++   obj:/lib*/ld-2.7*.so
++   obj:/lib*/ld-2.7*.so
++   obj:/lib*/ld-2.7*.so
++}
++
++##----------------------------------------------------------------------##
++{
++   glibc-2.5.x-on-SUSE-10.2-(PPC)-1
++   Memcheck:Cond
++   fun:_dl_start_final
++   fun:_dl_start
++   fun:_start
++}
++{
++   glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
++   Memcheck:Cond
++   fun:index
++   obj:*ld-2.7*.so
++}
++{
++   glibc-2.5.x-on-SuSE-10.2-(PPC)-2b
++   Memcheck:Addr4
++   fun:index
++   fun:expand_dynamic_string_token
++}
++{
++   glibc-2.5.5-on-SuSE-10.2-(PPC)-2c
++   Memcheck:Addr4
++   fun:index
++   obj:*ld-2.7*.so
++}
++{
++   glibc-2.3.5-on-SuSE-10.1-(PPC)-3
++   Memcheck:Addr4
++   fun:*wordcopy_fwd_dest_aligned*
++   fun:mem*cpy
++   obj:*lib*2.7*.so
++}
++
++##----------------------------------------------------------------------##
++## Various structure padding things on SUSE 10.2
++##
++{
++   X11-64bit-padding-1a
++   Memcheck:Param
++   write(buf)
++   fun:__write_nocancel
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++   fun:X*
++}
++{
++   X11-64bit-padding-1b
++   Memcheck:Param
++   write(buf)
++   fun:__write_nocancel
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++   fun:_X*
++}
++{
++   X11-64bit-padding-1c
++   Memcheck:Param
++   write(buf)
++   fun:__write_nocancel
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++}
++{
++   X11-64bit-padding-1d
++   Memcheck:Param
++   write(buf)
++   fun:__write_nocancel
++   obj:/usr/lib*/libICE.so*
++   obj:/usr/lib*/libICE.so*
++   obj:/usr/lib*/libICE.so*
++}
++{
++   X11-64bit-padding-2a
++   Memcheck:Param
++   writev(vector[...])
++   fun:do_writev
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++}
++{
++   X11-64bit-padding-2b
++   Memcheck:Param
++   writev(vector[...])
++   fun:do_writev
++   fun:writev
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++}
++
++{
++   glibc24-64bit-padding-1a
++   Memcheck:Param
++   socketcall.sendto(msg)
++   fun:send
++   fun:get_mapping
++   fun:__nscd_get_map_ref
++   fun:nscd*
++}
++{
++   glibc24-64bit-padding-1b
++   Memcheck:Param
++   socketcall.sendto(msg)
++   fun:__sendto_nocancel
++   obj:/*libc-2.7*.so
++   obj:/*libc-2.7*.so
++   obj:/*libc-2.7*.so
++}
++{
++   glibc24-64bit-padding-1c
++   Memcheck:Param
++   socketcall.send(msg)
++   fun:send
++   fun:__nscd_get_map_ref
++   fun:nscd_get*_r
++   fun:*nscd*
++   obj:/*libc-2.7*.so
++}
++
++
++{
++   X11-64bit-padding-3a
++   Memcheck:Param
++   write(buf)
++   obj:/*libpthread-2.7*.so*
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++   obj:/usr/lib*/libX11.so*
++}
++
++{
++   X11-64bit-padding-4a
++   Memcheck:Param
++   socketcall.sendto(msg)
++   fun:send
++   obj:/*libc-2.7*.so
++   obj:/*libc-2.7*.so
++   obj:/*libc-2.7*.so
++}
++{
++   X11-64bit-padding-4b
++   Memcheck:Param
++   socketcall.send(msg)
++   fun:send
++   obj:/*libc-2.7*.so
++   obj:/*libc-2.7*.so
++   obj:/*libc-2.7*.so
++}
++
++##----------------------------------------------------------------------##
++# MontaVista Linux 4.0.1 on ppc32
++{
++    MVL-401-linuxthreads-pthread_create
++    Memcheck:Param
++    write(buf)
++    fun:pthread_create
++}
++{
++   MVL-401-linuxthreads-pthread_create
++   Memcheck:Param
++   write(buf)
++   obj:/lib/libpthread-0.10.so
++   fun:pthread_create
++}
diff --git a/valgrind.spec b/valgrind.spec
index e8b7b02..9ec0802 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -1,7 +1,7 @@
 Summary: Tool for finding memory management bugs in programs
 Name: valgrind
 Version: 3.2.3
-Release: 6
+Release: 7
 Epoch: 1
 Source0: http://www.valgrind.org/downloads/valgrind-%{version}.tar.bz2
 Patch1: valgrind-3.2.3-openat.patch
@@ -12,6 +12,7 @@ Patch5: valgrind-3.2.3-io_destroy.patch
 Patch6: valgrind-3.2.3-power5+-6.patch
 Patch7: valgrind-3.2.3-private-futex.patch
 Patch8: valgrind-3.2.3-x86_64-nops.patch
+Patch9: valgrind-3.2.3-glibc2_7.patch
 License: GPLv2
 URL: http://www.valgrind.org/
 Group: Development/Debuggers
@@ -48,6 +49,7 @@ find/diagnose.
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
+%patch9 -p1
 
 %build
 %ifarch x86_64 ppc64
@@ -62,7 +64,7 @@ touch libgcc/libgcc_s_32.a
 
 # Force a specific set of default suppressions
 echo -n > default.supp
-for file in glibc-2.6.supp xfree-4.supp ; do
+for file in glibc-2.7.supp xfree-4.supp ; do
     cat $file >> default.supp
 done
 
@@ -135,6 +137,9 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man1/valgrind*
 
 %changelog
+* Thu Oct 18 2007 Jakub Jelinek <jakub@redhat.com> 3.2.3-7
+- add suppressions for glibc >= 2.7
+
 * Fri Aug 31 2007 Jakub Jelinek <jakub@redhat.com> 3.2.3-6
 - handle new x86_64 nops (#256801, KDE#148447)
 - add support for private futexes (KDE#146781)