Avoid double definitions of PRI*64
PATCH 1/1 Avoid double definitions of PRI*64
From: Jan Kiszka <[email protected]>
Recent mingw32 provide those defines.
--- qemu-common.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
qemu-common.h +3 -0
@@ -113,12 +113,15 @@ static inline char *realpath(const char *path, char *resolved_path) return resolved_path; } +#ifndef PRId64#define PRId64 "I64d"#define PRIx64 "I64x"#define PRIu64 "I64u"#define PRIo64 "I64o"#endif +#endif +/* FIXME: Remove NEED_CPU_H. */ #ifndef NEED_CPU_H
Stefan Hajnoczi
AppliedQuoted 8 lines · Jan Kiszka
From: Jan Kiszka <[email protected]>
Recent mingw32 provide those defines.
Signed-off-by Jan Kiszka <[email protected]>--- qemu-common.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
It's never too late to implement C99!
Thanks, applied to the trivial patches tree:
http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/trivial-patches
Stefan
Am 23.06.2011 15:35, schrieb Stefan Hajnoczi:
Quoted 4 lines · Jan Kiszka
Quoted 3 lines
From: Jan Kiszka <[email protected]>
Recent mingw32 provide those defines.
... and all of those defines are wrong, because QEMU does not use MS format specifiers. http://patchwork.ozlabs.org/patch/74276/
tried to fix this. My preferred solution is removing those PRI*64 from qemu-common.h, because not only recent mingw32 versions provide the (wrong) definitions, but even the Debian version provides them (which is really old, but I use it for my regression tests).
The wrong definitions do not allow using -Wformat for mingw32 builds, but they work because (most?) relevant mingw32 functions accept both MS and standard format specifiers.
Adding the correct definitions (to qemu-os-win32.h, not to qemu-common.h) would be another solution as long as mingw32 does not handle __USE_MINGW_ANSI_STDIO correctly.
Quoted 6 lines
Quoted 5 lines
Signed-off-by Jan Kiszka <[email protected]>---
qemu-common.h| 3 +++1 files changed, 3 insertions(+), 0 deletions(-)
Quoted 6 lines
It's never too late to implement C99!
Thanks, applied to the trivial patches tree:
http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/trivial-patchesStefan
Stefan, the patch won't harm, but it's also unnecessary. So it's up to you whether you remove it from your queue, modify it as I suggested above or apply it as it is.
Stefan
Quoted 31 lines · Stefan Weil
Am 23.06.2011 15:35, schrieb Stefan Hajnoczi:
Quoted 6 lines · Jan Kiszka
Quoted 4 lines
From: Jan Kiszka <[email protected]>
Recent mingw32 provide those defines.
... and all of those defines are wrong, because QEMU does not use MS format specifiers. http://patchwork.ozlabs.org/patch/74276/
tried to fix this. My preferred solution is removing those PRI*64 fromqemu-common.h, because not only recent mingw32 versions provide the (wrong) definitions, but even the Debian version provides them (which is really old, but I use it for my regression tests).The wrong definitions do not allow using -Wformat for mingw32 builds, but they work because (most?) relevant mingw32 functions accept both MS and standard format specifiers.
Adding the correct definitions (to
qemu-os-win32.h, not toqemu-common.h) would be another solution as long as mingw32 does not handle__USE_MINGW_ANSI_STDIOcorrectly.Quoted 8 lines
Quoted 5 lines
Signed-off-by Jan Kiszka <[email protected]>---
qemu-common.h| 3 +++1 files changed, 3 insertions(+), 0 deletions(-)It's never too late to implement C99!
Quoted 8 lines
Quoted 4 lines
Thanks, applied to the trivial patches tree:
http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/trivial-patchesStefan
Stefan, the patch won't harm, but it's also unnecessary. So it's up to you whether you remove it from your queue, modify it as I suggested above or apply it as it is.
Keeping those #defines unconditional prevents new mingw builds from working, according to the commit description. So we have to either remove them entirely or do them correctly. Dropping this patch will keep the build from working.
I suggest we keep this patch. A follow-up patch can us MS format specifiers or do any other adjustments that make this work better. Stefan, would you be able to send that patch?
Stefan
Am 24.06.2011 07:41, schrieb Stefan Hajnoczi:
Quoted 46 lines · Stefan Weil
Quoted 31 lines
Am 23.06.2011 15:35, schrieb Stefan Hajnoczi:
Quoted 6 lines · Jan Kiszka
Quoted 4 lines
From: Jan Kiszka <[email protected]>
Recent mingw32 provide those defines.
... and all of those defines are wrong, because QEMU does not use MS format specifiers. http://patchwork.ozlabs.org/patch/74276/
tried to fix this. My preferred solution is removing those PRI*64 fromqemu-common.h, because not only recent mingw32 versions provide the (wrong) definitions, but even the Debian version provides them (which is really old, but I use it for my regression tests).The wrong definitions do not allow using -Wformat for mingw32 builds, but they work because (most?) relevant mingw32 functions accept both MS and standard format specifiers.
Adding the correct definitions (to
qemu-os-win32.h, not toqemu-common.h) would be another solution as long as mingw32 does not handle__USE_MINGW_ANSI_STDIOcorrectly.Quoted 8 lines
Quoted 5 lines
Signed-off-by Jan Kiszka <[email protected]>---
qemu-common.h| 3 +++1 files changed, 3 insertions(+), 0 deletions(-)It's never too late to implement C99!
Quoted 8 lines
Quoted 4 lines
Thanks, applied to the trivial patches tree:
http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/trivial-patchesStefan
Stefan, the patch won't harm, but it's also unnecessary. So it's up to you whether you remove it from your queue, modify it as I suggested above or apply it as it is.
Keeping those #defines unconditional prevents new mingw builds from working, according to the commit description. So we have to either remove them entirely or do them correctly. Dropping this patch will keep the build from working.
Quoted 5 lines
I suggest we keep this patch. A follow-up patch can us MS format specifiers or do any other adjustments that make this work better. Stefan, would you be able to send that patch?
Stefan
Hi Stefan,
I just did a "git blame include/inttypes.h" on cygwin/mingw32 sources (git repository created from CVS). Here is the result:
8f6754d5 (dannysmith 2002-06-13 10:20:41 +0000 34) #define PRId64 "I64d" 8f6754d5 (dannysmith 2002-06-13 10:20:41 +0000 52) #define PRIi64 "I64i" 8f6754d5 (dannysmith 2002-06-13 10:20:41 +0000 70) #define PRIo64 "I64o" 8f6754d5 (dannysmith 2002-06-13 10:20:41 +0000 90) #define PRIu64 "I64u"
8f6754d5 (dannysmith 2002-06-13 10:20:41 +0000 109) #define PRIx64 "I64x" 8f6754d5 (dannysmith 2002-06-13 10:20:41 +0000 127) #define PRIX64 "I64X"
The format specifiers were added in 2002 and never changed since that time, so they are rather old. They don't break any current mingw32 builds. They will break builds as soon as mingw32 fixes the wrong definitions (which I don't expect for the next months).
I'll send a patch which simply removes the definitions from qemu-common.h, so Jan's patch is no longer needed.
Stefan
Quoted 68 lines · Stefan Weil
Am 24.06.2011 07:41, schrieb Stefan Hajnoczi:
Quoted 49 lines · Stefan Weil
Quoted 34 lines
Am 23.06.2011 15:35, schrieb Stefan Hajnoczi:
Quoted 6 lines · Jan Kiszka
Quoted 4 lines
From: Jan Kiszka <[email protected]>
Recent mingw32 provide those defines.
... and all of those defines are wrong, because QEMU does not use MS format specifiers. http://patchwork.ozlabs.org/patch/74276/
tried to fix this. My preferred solution is removing those PRI*64 fromqemu-common.h, because not only recent mingw32 versions provide the (wrong) definitions, but even the Debian version provides them (which is really old, but I use it for my regression tests).The wrong definitions do not allow using -Wformat for mingw32 builds, but they work because (most?) relevant mingw32 functions accept both MS and standard format specifiers.
Adding the correct definitions (to
qemu-os-win32.h, not toqemu-common.h) would be another solution as long as mingw32 does not handle__USE_MINGW_ANSI_STDIOcorrectly.Quoted 10 lines
Quoted 5 lines
Signed-off-by Jan Kiszka <[email protected]>---
qemu-common.h| 3 +++1 files changed, 3 insertions(+), 0 deletions(-)It's never too late to implement C99!
Thanks, applied to the trivial patches tree:
Quoted 7 lines
Quoted 3 lines
http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/trivial-patches
Stefan
Stefan, the patch won't harm, but it's also unnecessary. So it's up to you whether you remove it from your queue, modify it as I suggested above or apply it as it is.
Keeping those #defines unconditional prevents new mingw builds from working, according to the commit description. So we have to either remove them entirely or do them correctly. Dropping this patch will keep the build from working.
Quoted 5 lines
I suggest we keep this patch. A follow-up patch can us MS format specifiers or do any other adjustments that make this work better. Stefan, would you be able to send that patch?
Stefan
Hi Stefan,
I just did a "git blame
include/inttypes.h" on cygwin/mingw32 sources (git repository created from CVS). Here is the result:
8f6754d5(dannysmith 2002-06-13 10:20:41 +0000 34) #define PRId64 "I64d"8f6754d5(dannysmith 2002-06-13 10:20:41 +0000 52) #define PRIi64 "I64i"8f6754d5(dannysmith 2002-06-13 10:20:41 +0000 70) #define PRIo64 "I64o"8f6754d5(dannysmith 2002-06-13 10:20:41 +0000 90) #define PRIu64 "I64u"8f6754d5(dannysmith 2002-06-13 10:20:41 +0000 109) #define PRIx64 "I64x"8f6754d5(dannysmith 2002-06-13 10:20:41 +0000 127) #define PRIX64 "I64X"
Quoted 7 lines
The format specifiers were added in 2002 and never changed since that time, so they are rather old. They don't break any current mingw32 builds. They will break builds as soon as mingw32 fixes the wrong definitions (which I don't expect for the next months).
I'll send a patch which simply removes the definitions from
qemu-common.h, so Jan's patch is no longer needed.
Thanks!
Stefan