diff -Naur Python-2.7.9-orig/Include/pgenheaders.h Python-2.7.9/Include/pgenheaders.h
--- Python-2.7.9-orig/Include/pgenheaders.h	2014-12-10 18:59:32.000000000 +0300
+++ Python-2.7.9/Include/pgenheaders.h	2014-12-11 13:51:30.074600000 +0300
@@ -10,9 +10,9 @@
 #include "Python.h"
 
 PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
-			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
+			Py_GCC_ATTRIBUTE((format(gnu_printf, 1, 2)));
 PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
-			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
+			Py_GCC_ATTRIBUTE((format(gnu_printf, 1, 2)));
 
 #define addarc _Py_addarc
 #define addbit _Py_addbit
diff -Naur Python-2.7.9-orig/Include/pyerrors.h Python-2.7.9/Include/pyerrors.h
--- Python-2.7.9-orig/Include/pyerrors.h	2014-12-10 18:59:32.000000000 +0300
+++ Python-2.7.9/Include/pyerrors.h	2014-12-11 13:51:30.074600000 +0300
@@ -193,7 +193,7 @@
 #endif /* MS_WINDOWS */
 
 PyAPI_FUNC(PyObject *) PyErr_Format(PyObject *, const char *, ...)
-                        Py_GCC_ATTRIBUTE((format(printf, 2, 3)));
+                        Py_GCC_ATTRIBUTE((format(gnu_printf, 2, 3)));
 
 #ifdef MS_WINDOWS
 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilenameObject(
@@ -318,9 +318,9 @@
 
 #include <stdarg.h>
 PyAPI_FUNC(int) PyOS_snprintf(char *str, size_t size, const char  *format, ...)
-                        Py_GCC_ATTRIBUTE((format(printf, 3, 4)));
+                        Py_GCC_ATTRIBUTE((format(gnu_printf, 3, 4)));
 PyAPI_FUNC(int) PyOS_vsnprintf(char *str, size_t size, const char  *format, va_list va)
-                        Py_GCC_ATTRIBUTE((format(printf, 3, 0)));
+                        Py_GCC_ATTRIBUTE((format(gnu_printf, 3, 0)));
 
 #ifdef __cplusplus
 }
diff -Naur Python-2.7.9-orig/Include/stringobject.h Python-2.7.9/Include/stringobject.h
--- Python-2.7.9-orig/Include/stringobject.h	2014-12-10 18:59:32.000000000 +0300
+++ Python-2.7.9/Include/stringobject.h	2014-12-11 13:51:30.090200000 +0300
@@ -62,9 +62,9 @@
 PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
 PyAPI_FUNC(PyObject *) PyString_FromString(const char *);
 PyAPI_FUNC(PyObject *) PyString_FromFormatV(const char*, va_list)
-				Py_GCC_ATTRIBUTE((format(printf, 1, 0)));
+				Py_GCC_ATTRIBUTE((format(gnu_printf, 1, 0)));
 PyAPI_FUNC(PyObject *) PyString_FromFormat(const char*, ...)
-				Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
+				Py_GCC_ATTRIBUTE((format(gnu_printf, 1, 2)));
 PyAPI_FUNC(Py_ssize_t) PyString_Size(PyObject *);
 PyAPI_FUNC(char *) PyString_AsString(PyObject *);
 PyAPI_FUNC(PyObject *) PyString_Repr(PyObject *, int);
diff -Naur Python-2.7.9-orig/Include/sysmodule.h Python-2.7.9/Include/sysmodule.h
--- Python-2.7.9-orig/Include/sysmodule.h	2014-12-10 18:59:32.000000000 +0300
+++ Python-2.7.9/Include/sysmodule.h	2014-12-11 13:51:30.090200000 +0300
@@ -15,9 +15,9 @@
 PyAPI_FUNC(void) PySys_SetPath(char *);
 
 PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
-			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
+			Py_GCC_ATTRIBUTE((format(gnu_printf, 1, 2)));
 PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
-			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
+			Py_GCC_ATTRIBUTE((format(gnu_printf, 1, 2)));
 
 PyAPI_FUNC(void) PySys_ResetWarnOptions(void);
 PyAPI_FUNC(void) PySys_AddWarnOption(char *);
