peterdelevoryas / rpms / qemu

Forked from rpms/qemu 2 years ago
Clone

Blame 0227-w32-Always-use-standard-instead-of-native-format-str.patch

5544c1
From 675a9bdcd5bf5bd663ee58cf5e4be4acf12d34ce Mon Sep 17 00:00:00 2001
5544c1
From: Stefan Weil <sw@weilnetz.de>
5544c1
Date: Wed, 22 Aug 2012 21:42:32 +0200
5544c1
Subject: [PATCH] w32: Always use standard instead of native format strings
5544c1
MIME-Version: 1.0
5544c1
Content-Type: text/plain; charset=UTF-8
5544c1
Content-Transfer-Encoding: 8bit
5544c1
5544c1
GLib 2.0 include files use __printf__ for the format attribute
5544c1
which resolves to native format strings on w32 hosts.
5544c1
5544c1
QEMU wants standard format strings instead of native format
5544c1
strings, so we simply change any declaration with __printf__
5544c1
to use __gnu_printf__.
5544c1
5544c1
This works because all basic printf functions support both
5544c1
kinds of format strings.
5544c1
5544c1
This fixes a compiler warning:
5544c1
5544c1
qapi/string-output-visitor.c: In function ‘print_type_int’:
5544c1
qapi/string-output-visitor.c:34:5: warning: unknown conversion type character ‘l’ in format [-Wformat]
5544c1
qapi/string-output-visitor.c:34:5: warning: too many arguments for format [-Wformat-extra-args]
5544c1
5544c1
Signed-off-by: Stefan Weil <sw@weilnetz.de>
5544c1
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
5544c1
(cherry picked from commit 95df51a4a02a853af8828c281bce2d4f2a41d6fd)
5544c1
5544c1
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
5544c1
---
5544c1
 compiler.h | 5 +++++
5544c1
 1 file changed, 5 insertions(+)
5544c1
5544c1
diff --git a/compiler.h b/compiler.h
5544c1
index 07ba1f8..c734a71 100644
5544c1
--- a/compiler.h
5544c1
+++ b/compiler.h
5544c1
@@ -44,6 +44,11 @@
5544c1
    /* Use gnu_printf when supported (qemu uses standard format strings). */
5544c1
 #  define GCC_ATTR __attribute__((__unused__, format(gnu_printf, 1, 2)))
5544c1
 #  define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m)))
5544c1
+#  if defined(_WIN32)
5544c1
+    /* Map __printf__ to __gnu_printf__ because we want standard format strings
5544c1
+     * even when MinGW or GLib include files use __printf__. */
5544c1
+#   define __printf__ __gnu_printf__
5544c1
+#  endif
5544c1
 # endif
5544c1
 #if defined(_WIN32)
5544c1
 #define GCC_WEAK __attribute__((weak))
5544c1
-- 
5544c1
1.7.12.1
5544c1