Michael S. Tsirkin schrieb: > Verify that stdio.h supports %lld %zd. > Some migw variants don't unless requested explicitly (see
migw -> mingw I don't know any ming32 variant which supports %lld, %zd. There is a new mingw-w64 were people are addressing the problem, but that variant is unsupported by qemu. > http://www.mail-archive.com/mingw-w64-pub...@lists.sourceforge.net/msg00417.html) > ), detect them early. > > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > Acked-by: Juan Quintela <quint...@trasno.org> > > --- > > changes from v1: > removed leftover chunk > > configure | 20 ++++++++++++++++++++ > 1 files changed, 20 insertions(+), 0 deletions(-) > > diff --git a/configure b/configure > index 5631bbb..6ba06d6 100755 > --- a/configure > +++ b/configure > @@ -123,6 +123,26 @@ else > exit 1 > fi > > +# Check that stdio.h compiler is sane: some > +# mingw variants do not support %z %l that we rely on > +cat > $TMPC <<EOF > +#include <stddef.h> > +#include <stdio.h> > +size_t z = 1; > +long long ll = 2; > +int main(void) { > + printf("z=%zd;ll=%lld;\n", z, ll); > + return 0; > +} > +EOF > + > +if compile_prog && ($TMPE | grep "z=1;ll=2;" > /dev/null); then > + : C compiler works ok > +else > + echo "ERROR: \"$cc\" does not have a working stdio.h" > + exit 1 > +fi > + > check_define() { > cat > $TMPC <<EOF > #if !defined($1) Tests of %lld must use a 64 bit pattern (ll = 0x0123456789abcdefLL). Otherwise, %lld, %ld and %d with ll = 1 will all print 1 on little endian machines, and the %lld test won't detect missing support. The problem is now several years old, it can be avoided for really important output, so it seems acceptable to wait another period of time until a working mingw is supported by qemu. A test which prevents qemu builds on windows with current mingw32 or cross builds with current debian cross mingw32 would not help. Both variants work for me even without full format support. Regards, Stefan Weil