Am 05.08.2015 um 20:39 schrieb Liviu Ionescu:
On 05 Aug 2015, at 19:56, Paolo Bonzini <pbonz...@redhat.com> wrote:

... I am not sure why things break for Stefan...
I confirm Stefan's conclusion, neither in my configuration adding

#include "qemu-common.h"

... in cpu-exec.c makes any difference.

however adding:

#if defined(_WIN64)
#ifdef sigsetjmp
#undef sigsetjmp
#endif
#define sigsetjmp(env, savesigs) _setjmp(env, NULL)
#endif

... fixes the problem, my custom QEMU happily blinks the LEDs on Win 8.1 
64-bits (see below).

perhaps a headers check would be helpful, such mysterious behaviours usually 
back fire at a certain point.


regards,

Liviu

http://qemu.weilnetz.de/test/cpu-exec.i shows the result of
the C preprocessor:

cpu-exec.c gets QEMU's os-win32.h with our definition of setjmp
early, but the system header file setjmp.h is included later, and
that file re-defines our definitions. Including setjmp.h from
os-win32.h would solve the problem, but I think there is a
better solution.

I am planning to remove the special definitions for _WIN64 from
os-win32.h and add them to cpu-exec.c, similar to the code
above (which can be shortened a little)
but with some comment lines added.

As I already said, this modification is needed for all versions
of QEMU, and it will stay unfixed in 2.4.0 which is nearly finished.

Regards
Stefan


Reply via email to