Use Py_GCC_ATTRIBUTE instead of __attribute__.  Compilers other than GCC
might use __attribute__ in other ways (e.g. CodeWarrior).
diff --git a/Include/pgenheaders.h b/Include/pgenheaders.h
index 77acca5..2049ae3 100644
--- a/Include/pgenheaders.h
+++ b/Include/pgenheaders.h
@@ -10,9 +10,9 @@
 #include "Python.h"
 
 PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
-			__attribute__((format(printf, 1, 2)));
+			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
 PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
-			__attribute__((format(printf, 1, 2)));
+			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
 
 #define addarc _Py_addarc
 #define addbit _Py_addbit
diff --git a/Include/pyerrors.h b/Include/pyerrors.h
index bd44e02..119aa2e 100644
--- a/Include/pyerrors.h
+++ b/Include/pyerrors.h
@@ -83,7 +83,7 @@
 PyAPI_FUNC(PyObject *) PyErr_SetFromErrno(PyObject *);
 PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename(PyObject *, char *);
 PyAPI_FUNC(PyObject *) PyErr_Format(PyObject *, const char *, ...)
-			__attribute__((format(printf, 2, 3)));
+			Py_GCC_ATTRIBUTE((format(printf, 2, 3)));
 #ifdef MS_WINDOWS
 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(int, const char *);
 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int);
@@ -195,9 +195,9 @@
 
 #include <stdarg.h>
 PyAPI_FUNC(int) PyOS_snprintf(char *str, size_t size, const char  *format, ...)
-			__attribute__((format(printf, 3, 4)));
+			Py_GCC_ATTRIBUTE((format(printf, 3, 4)));
 PyAPI_FUNC(int) PyOS_vsnprintf(char *str, size_t size, const char  *format, va_list va)
-			__attribute__((format(printf, 3, 0)));
+			Py_GCC_ATTRIBUTE((format(printf, 3, 0)));
 
 #ifdef __cplusplus
 }
diff --git a/Include/pyport.h b/Include/pyport.h
index f1c42fb..5395b10 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -531,7 +531,9 @@
 #if (!defined(__GNUC__) || __GNUC__ < 2 || \
      (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ) && \
     !defined(RISCOS)
-#define __attribute__(__x)
+#define Py_GCC_ATTRIBUTE(x)
+#else
+#define Py_GCC_ATTRIBUTE(x) __attribute__(x)
 #endif
 
 #endif /* Py_PYPORT_H */
diff --git a/Include/stringobject.h b/Include/stringobject.h
index ff30704..7f67a1f 100644
--- a/Include/stringobject.h
+++ b/Include/stringobject.h
@@ -52,9 +52,9 @@
 PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, int);
 PyAPI_FUNC(PyObject *) PyString_FromString(const char *);
 PyAPI_FUNC(PyObject *) PyString_FromFormatV(const char*, va_list)
-				__attribute__((format(printf, 1, 0)));
+				Py_GCC_ATTRIBUTE((format(printf, 1, 0)));
 PyAPI_FUNC(PyObject *) PyString_FromFormat(const char*, ...)
-				__attribute__((format(printf, 1, 2)));
+				Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
 PyAPI_FUNC(int) PyString_Size(PyObject *);
 PyAPI_FUNC(char *) PyString_AsString(PyObject *);
 PyAPI_FUNC(PyObject *) PyString_Repr(PyObject *, int);
diff --git a/Include/sysmodule.h b/Include/sysmodule.h
index 4f05ac9..1c9b187 100644
--- a/Include/sysmodule.h
+++ b/Include/sysmodule.h
@@ -14,9 +14,9 @@
 PyAPI_FUNC(void) PySys_SetPath(char *);
 
 PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
-			__attribute__((format(printf, 1, 2)));
+			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
 PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
-			__attribute__((format(printf, 1, 2)));
+			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
 
 PyAPI_DATA(PyObject *) _PySys_TraceFunc, *_PySys_ProfileFunc;
 PyAPI_DATA(int) _PySys_CheckInterval;