[MinGW] Fixed C99/C++11 format attributes in printf-like functions
authorannulen@yandex.ru <annulen@yandex.ru@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 5 Nov 2016 17:58:31 +0000 (17:58 +0000)
committerannulen@yandex.ru <annulen@yandex.ru@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 5 Nov 2016 17:58:31 +0000 (17:58 +0000)
https://bugs.webkit.org/show_bug.cgi?id=164448

Reviewed by Michael Catanzaro.

By default MinGW uses printf-like function provided in msvcrt.dll,
however they miss support for C99/C++11 format attributes. Use MinGW
implementations instead.

.:

* Source/cmake/OptionsCommon.cmake: Define __USE_MINGW_ANSI_STDIO

Source/WTF:

* wtf/Assertions.h: Use gnu_printf format in WTF_ATTRIBUTE_PRINTF

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208418 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
Source/WTF/ChangeLog
Source/WTF/wtf/Assertions.h
Source/cmake/OptionsCommon.cmake

index f2d265d..19ef2bb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2016-11-05  Konstantin Tokarev  <annulen@yandex.ru>
+
+        [MinGW] Fixed C99/C++11 format attributes in printf-like functions
+        https://bugs.webkit.org/show_bug.cgi?id=164448
+
+        Reviewed by Michael Catanzaro.
+
+        By default MinGW uses printf-like function provided in msvcrt.dll,
+        however they miss support for C99/C++11 format attributes. Use MinGW
+        implementations instead.
+
+        * Source/cmake/OptionsCommon.cmake: Define __USE_MINGW_ANSI_STDIO
+
 2016-11-03  Konstantin Tokarev  <annulen@yandex.ru>
 
         Fixes to build JSCOnly on macOS
 2016-11-03  Konstantin Tokarev  <annulen@yandex.ru>
 
         Fixes to build JSCOnly on macOS
index 4aab543..48760d1 100644 (file)
@@ -1,3 +1,16 @@
+2016-11-05  Konstantin Tokarev  <annulen@yandex.ru>
+
+        [MinGW] Fixed C99/C++11 format attributes in printf-like functions
+        https://bugs.webkit.org/show_bug.cgi?id=164448
+
+        Reviewed by Michael Catanzaro.
+
+        By default MinGW uses printf-like function provided in msvcrt.dll,
+        however they miss support for C99/C++11 format attributes. Use MinGW
+        implementations instead.
+
+        * wtf/Assertions.h: Use gnu_printf format in WTF_ATTRIBUTE_PRINTF
+
 2016-11-05  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         [JSCOnly] RunLoopGeneric should adopt MonotonicTime / WallTime change
 2016-11-05  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         [JSCOnly] RunLoopGeneric should adopt MonotonicTime / WallTime change
index f867599..84c4694 100644 (file)
 #define WTF_PRETTY_FUNCTION __FUNCTION__
 #endif
 
 #define WTF_PRETTY_FUNCTION __FUNCTION__
 #endif
 
+#if COMPILER(MINGW)
+/* By default MinGW emits warnings when C99 format attributes are used, even if __USE_MINGW_ANSI_STDIO is defined */
+#define WTF_ATTRIBUTE_PRINTF(formatStringArgument, extraArguments) __attribute__((__format__(gnu_printf, formatStringArgument, extraArguments)))
+#elif COMPILER(GCC_OR_CLANG) && !defined(__OBJC__)
 /* WTF logging functions can process %@ in the format string to log a NSObject* but the printf format attribute
    emits a warning when %@ is used in the format string.  Until <rdar://problem/5195437> is resolved we can't include
    the attribute when being used from Objective-C code in case it decides to use %@. */
 /* WTF logging functions can process %@ in the format string to log a NSObject* but the printf format attribute
    emits a warning when %@ is used in the format string.  Until <rdar://problem/5195437> is resolved we can't include
    the attribute when being used from Objective-C code in case it decides to use %@. */
-#if COMPILER(GCC_OR_CLANG) && !defined(__OBJC__)
 #define WTF_ATTRIBUTE_PRINTF(formatStringArgument, extraArguments) __attribute__((__format__(printf, formatStringArgument, extraArguments)))
 #else
 #define WTF_ATTRIBUTE_PRINTF(formatStringArgument, extraArguments)
 #define WTF_ATTRIBUTE_PRINTF(formatStringArgument, extraArguments) __attribute__((__format__(printf, formatStringArgument, extraArguments)))
 #else
 #define WTF_ATTRIBUTE_PRINTF(formatStringArgument, extraArguments)
index 8cfef7f..59b7128 100644 (file)
@@ -50,6 +50,7 @@ endif ()
 
 if (WIN32 AND COMPILER_IS_GCC_OR_CLANG)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mno-ms-bitfields -Wno-unknown-pragmas")
 
 if (WIN32 AND COMPILER_IS_GCC_OR_CLANG)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mno-ms-bitfields -Wno-unknown-pragmas")
+    add_definitions(-D__USE_MINGW_ANSI_STDIO=1)
 endif ()
 
 # Ensure that the default include system directories are added to the list of CMake implicit includes.
 endif ()
 
 # Ensure that the default include system directories are added to the list of CMake implicit includes.