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

(cherry picked from commit a35e86c670)
This commit is contained in:
cnauroth 2015-02-04 12:07:05 -08:00
parent 696266e99c
commit 196443318f
2 changed files with 20 additions and 3 deletions

View File

@ -476,6 +476,9 @@ Release 2.7.0 - UNRELEASED
HADOOP-11548. checknative should display a nicer error message when openssl HADOOP-11548. checknative should display a nicer error message when openssl
support is not compiled in. (Anu Engineer via cnauroth) 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 Release 2.6.1 - UNRELEASED
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -19,6 +19,19 @@
#include <jni.h> /* for jthrowable */ #include <jni.h> /* for jthrowable */
#include <stdarg.h> /* for va_list */ #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. * Create a new Exception.
@ -48,7 +61,7 @@ jthrowable newExceptionV(JNIEnv* env, const char *name,
* @return The RuntimeException * @return The RuntimeException
*/ */
jthrowable newException(JNIEnv* env, const char *name, const char *fmt, ...) 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. * Create a new RuntimeException.
@ -62,7 +75,7 @@ jthrowable newException(JNIEnv* env, const char *name, const char *fmt, ...)
* @return The RuntimeException * @return The RuntimeException
*/ */
jthrowable newRuntimeException(JNIEnv* env, const char *fmt, ...) jthrowable newRuntimeException(JNIEnv* env, const char *fmt, ...)
__attribute__((format(printf, 2, 3))); TYPE_CHECKED_PRINTF_FORMAT(2, 3);
/** /**
* Create a new IOException. * Create a new IOException.
@ -77,7 +90,7 @@ jthrowable newRuntimeException(JNIEnv* env, const char *fmt, ...)
* to create the NativeIOException. * to create the NativeIOException.
*/ */
jthrowable newIOException(JNIEnv* env, const char *fmt, ...) jthrowable newIOException(JNIEnv* env, const char *fmt, ...)
__attribute__((format(printf, 2, 3))); TYPE_CHECKED_PRINTF_FORMAT(2, 3);
/** /**
* Thread-safe strerror alternative. * Thread-safe strerror alternative.
@ -87,4 +100,5 @@ jthrowable newIOException(JNIEnv* env, const char *fmt, ...)
*/ */
const char* terror(int errnum); const char* terror(int errnum);
#undef TYPE_CHECKED_PRINTF_FORMAT
#endif #endif