diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 45cecefc3418b6ad4cc1dbee44fd0524107d67ee..86cff5c55be14dc75cc026c0eb88c13a3df511fc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-17  Matthias Klose  <doko@debian.org>
+
+	PR libstdc++/11953
+	* gcc/config/mips/linux.h (SUBTARGET_CPP_SPEC): Extend.
+
 2006-12-17  Steven Bosscher  <steven@gcc.gnu.org>
 
 	* cse.c (cse_find_path): Don't wrap a gcc_assert in ENABLE_CHECKING.
diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
index a56c1cc683ff1ccfe122b327591c2ef40b41ef06..303ce1d0a5a366af65e286f98ca05bf7edb59ba9 100644
--- a/gcc/config/mips/linux.h
+++ b/gcc/config/mips/linux.h
@@ -90,7 +90,7 @@ Boston, MA 02110-1301, USA.  */
   } while (0)
 
 #undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC "%{pthread:-D_REENTRANT}"
+#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
 
 /* A standard GNU/Linux mapping.  On most targets, it is included in
    CC1_SPEC itself by config/linux.h, but mips.h overrides CC1_SPEC