HADOOP-11547. hadoop-common native compilation fails on Windows due to missing 
support for __attribute__ declaration. Contributed by Chris Nauroth.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b537751f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b537751f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b537751f

Branch: refs/heads/HDFS-EC
Commit: b537751f4b1db56074c2c5cebe9427a7bdb2ee27
Parents: 12cbbd2
Author: cnauroth <[email protected]>
Authored: Wed Feb 4 12:07:05 2015 -0800
Committer: Zhe Zhang <[email protected]>
Committed: Fri Feb 6 13:45:47 2015 -0800

----------------------------------------------------------------------
 hadoop-common-project/hadoop-common/CHANGES.txt |  3 +++
 .../src/main/native/src/exception.h             | 20 +++++++++++++++++---
 2 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/b537751f/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt 
b/hadoop-common-project/hadoop-common/CHANGES.txt
index b970254..3d11b71 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -832,6 +832,9 @@ Release 2.7.0 - UNRELEASED
     HADOOP-11548. checknative should display a nicer error message when openssl
     support is not compiled in. (Anu Engineer via cnauroth)
 
+    HADOOP-11547. hadoop-common native compilation fails on Windows due to
+    missing support for __attribute__ declaration. (cnauroth)
+
 Release 2.6.1 - UNRELEASED
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/b537751f/hadoop-common-project/hadoop-common/src/main/native/src/exception.h
----------------------------------------------------------------------
diff --git 
a/hadoop-common-project/hadoop-common/src/main/native/src/exception.h 
b/hadoop-common-project/hadoop-common/src/main/native/src/exception.h
index 1ec47a6..afa08e9 100644
--- a/hadoop-common-project/hadoop-common/src/main/native/src/exception.h
+++ b/hadoop-common-project/hadoop-common/src/main/native/src/exception.h
@@ -19,6 +19,19 @@
 
 #include <jni.h> /* for jthrowable */
 #include <stdarg.h> /* for va_list */
+#include "org_apache_hadoop.h"
+
+#ifdef WINDOWS
+/*
+ * gcc-style type-checked format arguments are not supported on Windows, so 
just
+ * stub this macro.
+ */
+#define TYPE_CHECKED_PRINTF_FORMAT(formatArg, varArgs)
+# else
+/* Use gcc type-checked format arguments. */
+#define TYPE_CHECKED_PRINTF_FORMAT(formatArg, varArgs) \
+  __attribute__((format(printf, formatArg, varArgs)))
+#endif
 
 /**
  * Create a new Exception.
@@ -48,7 +61,7 @@ jthrowable newExceptionV(JNIEnv* env, const char *name,
  * @return              The RuntimeException
  */
 jthrowable newException(JNIEnv* env, const char *name, const char *fmt, ...)
-    __attribute__((format(printf, 3, 4)));
+    TYPE_CHECKED_PRINTF_FORMAT(3, 4);
 
 /**
  * Create a new RuntimeException.
@@ -62,7 +75,7 @@ jthrowable newException(JNIEnv* env, const char *name, const 
char *fmt, ...)
  * @return              The RuntimeException
  */
 jthrowable newRuntimeException(JNIEnv* env, const char *fmt, ...)
-    __attribute__((format(printf, 2, 3)));
+    TYPE_CHECKED_PRINTF_FORMAT(2, 3);
 
 /**
  * Create a new IOException.
@@ -77,7 +90,7 @@ jthrowable newRuntimeException(JNIEnv* env, const char *fmt, 
...)
  *                      to create the NativeIOException.
  */
 jthrowable newIOException(JNIEnv* env, const char *fmt, ...)
-    __attribute__((format(printf, 2, 3)));
+    TYPE_CHECKED_PRINTF_FORMAT(2, 3);
 
 /**
  * Thread-safe strerror alternative.
@@ -87,4 +100,5 @@ jthrowable newIOException(JNIEnv* env, const char *fmt, ...)
  */
 const char* terror(int errnum);
 
+#undef TYPE_CHECKED_PRINTF_FORMAT
 #endif

Reply via email to