compiler.h: explicit case for Clang printf attribute
Since commit efc6c07
("configure: Add a test for the minimum compiler
version"), QEMU explicitely depends on GCC >= 4.8, we could thus drop
earlier version checks. Except clang advertizes itself as GCC 4.2.1.
Since clang doesn't support gnu_printf, make that case explicitely and
drop GCC version check.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20201210134752.780923-8-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
db5deef996
commit
28f86163a4
@ -99,19 +99,19 @@
|
|||||||
#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(QEMU_BUILD_BUG_ON_STRUCT(x)) - \
|
#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(QEMU_BUILD_BUG_ON_STRUCT(x)) - \
|
||||||
sizeof(QEMU_BUILD_BUG_ON_STRUCT(x)))
|
sizeof(QEMU_BUILD_BUG_ON_STRUCT(x)))
|
||||||
|
|
||||||
#if defined __GNUC__
|
#if defined(__clang__)
|
||||||
# if !QEMU_GNUC_PREREQ(4, 4)
|
/* clang doesn't support gnu_printf, so use printf. */
|
||||||
/* gcc versions before 4.4.x don't support gnu_printf, so use printf. */
|
|
||||||
# define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m)))
|
# define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m)))
|
||||||
# else
|
#elif defined(__GNUC__)
|
||||||
/* Use gnu_printf when supported (qemu uses standard format strings). */
|
/* Use gnu_printf (qemu uses standard format strings). */
|
||||||
# define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m)))
|
# define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m)))
|
||||||
# if defined(_WIN32)
|
# if defined(_WIN32)
|
||||||
/* Map __printf__ to __gnu_printf__ because we want standard format strings
|
/*
|
||||||
* even when MinGW or GLib include files use __printf__. */
|
* Map __printf__ to __gnu_printf__ because we want standard format strings even
|
||||||
|
* when MinGW or GLib include files use __printf__.
|
||||||
|
*/
|
||||||
# define __printf__ __gnu_printf__
|
# define __printf__ __gnu_printf__
|
||||||
# endif
|
# endif
|
||||||
# endif
|
|
||||||
#else
|
#else
|
||||||
#define GCC_FMT_ATTR(n, m)
|
#define GCC_FMT_ATTR(n, m)
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user