From: Stefan Weil <sw@weilnetz.de>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Subject: [Qemu-devel] QEMU 2.4 for Windows - current status
Date: Wed, 05 Aug 2015 13:03:51 +0200 [thread overview]
Message-ID: <55C1ED97.2080005@weilnetz.de> (raw)
In-Reply-To: <20150805095246.GB16246@redhat.com>
Am 05.08.2015 um 11:52 schrieb Daniel P. Berrange:
> On Fri, Jul 31, 2015 at 07:58:45PM +0200, Stefan Weil wrote:
>> Am 31.07.2015 um 14:49 schrieb Paolo Bonzini:
>>> On 31/07/2015 12:17, Daniel P. Berrange wrote:
>>>> CC util/osdep.o
>>>> In file included from include/qemu-common.h:48:0,
>>>> from util/osdep.c:48:
>>>> include/sysemu/os-win32.h:77:12: error: redundant redeclaration of 'gmtime_r' [-Werror=redundant-decls]
>>>> struct tm *gmtime_r(const time_t *timep, struct tm *result);
>>>> ^
>>>> In file included from include/qemu-common.h:35:0,
>>>> from util/osdep.c:48:
>>>> /usr/i686-w64-mingw32/sys-root/mingw/include/time.h:272:107: note: previous definition of 'gmtime_r' was here
>>>> In file included from include/qemu-common.h:48:0,
>>>> from util/osdep.c:48:
>>>> include/sysemu/os-win32.h:79:12: error: redundant redeclaration of 'localtime_r' [-Werror=redundant-decls]
>>>> struct tm *localtime_r(const time_t *timep, struct tm *result);
>>>> ^
>>>> In file included from include/qemu-common.h:35:0,
>>>> from util/osdep.c:48:
>>>> /usr/i686-w64-mingw32/sys-root/mingw/include/time.h:269:107: note: previous definition of 'localtime_r' was here
>>>>
>>>> This change adds a configure test to see if localtime_r
>>>> exits, and only enables the QEMU impl if missing. We also
>>>> re-arrange qemu-common.h try attempt to guarantee that all
>>>> source files get unistd.h before time.h and thus see the
>>>> localtime_r/gmtime_r defs.
>>> These are only with --enable-werror, right? The patch shouldn't be
>>> necessary for 2.4.
>>>
>>> Paolo
>> It isn't necessary for 2.4. There are more severe problems which also
>> seem to be triggered by recent changes in the MinGW-w64 toolchain:
>>
>> 64 bit executables crash at longjmp from generated code,
>> and networking fails because of asynchronous connect calls
>> which were never implemented correctly in the slirp code.
>> I'll try to summarize all that I know in a separate mail later.
>>
>> I only recently got reports about these problems and think
>> that it is too late to fix them in 2.4.0.
> Could you post the info about these problems, or point me to the bug
> reports. I'm currently trying to get a patchset of mine working on
> Win32 so need to understand what's broken with Mingw/Win32 currently.
>
> Regards,
> Daniel
Sorry for the delay - I have currently only sporadic
internet access.
I recently upgraded my build environment from Debian Wheezy
to Debian Jessie. Obviously the newer MinGW-w64 packages
introduced several problems for QEMU:
* Compiler warnings caused by newer compiler and changes in
system include files
* Modified order of include files and definitions. This results in
a wrong sigsetjmp call in cpu-exec.c for 64 bit code.
That code will crash as soon as there is a longjmp returning
from generated TCG code because that code does not support
stack unwinding.
* Asynchronous connect call. Obviously TCP connect was
synchronous with earlier versions. Now it can also fail,
but Windows does not set errno (slirp expects errno code).
This results in buggy networking with all Windows versions
of QEMU (any connect will fail).
Here are two hacks to fix these problems:
Fix sigsetjmp for w64
http://repo.or.cz/w/qemu/ar7.git/commit/8fa9c07c9a33174905e67589bea6be3e278712cb
slirp: Fix non blocking connect for w32
http://repo.or.cz/w/qemu/ar7.git/commit/b3f21d56ad3f36562d396685de8ff4981af6b805
At least the first patch (maybe also the 2nd one) will
also be needed for old versions of QEMU as they
don't depend on the QEMU version but on the
version of MinGW-w64.
Regards
Stefan
next prev parent reply other threads:[~2015-08-05 11:04 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-31 10:17 [Qemu-devel] [PATCH for-2.4] oslib-win32: only provide localtime_r/gmtime_r if missing Daniel P. Berrange
2015-07-31 12:49 ` Paolo Bonzini
2015-07-31 13:33 ` Daniel P. Berrange
2015-07-31 17:58 ` Stefan Weil
2015-08-05 9:52 ` Daniel P. Berrange
2015-08-05 11:03 ` Stefan Weil [this message]
2015-08-05 12:49 ` [Qemu-devel] QEMU 2.4 for Windows - current status Paolo Bonzini
2015-08-05 15:38 ` Stefan Weil
2015-09-10 20:38 ` Stefan Weil
2015-08-05 16:51 ` Liviu Ionescu
2015-08-05 16:56 ` Paolo Bonzini
2015-08-05 18:39 ` Liviu Ionescu
2015-08-05 20:30 ` Stefan Weil
2015-08-05 21:42 ` Liviu Ionescu
2015-08-06 8:44 ` Kevin Wolf
2015-08-06 10:12 ` Stefan Weil
2015-08-06 17:12 ` Richard Henderson
2015-08-10 10:25 ` Peter Maydell
2015-08-10 11:39 ` Stefan Weil
2015-08-10 14:00 ` Paolo Bonzini
2015-08-10 20:22 ` Stefan Weil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55C1ED97.2080005@weilnetz.de \
--to=sw@weilnetz.de \
--cc=berrange@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.