[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] QEMU on Solaris 10 (was: [PATCH 01/32] use anonymous memory
From: |
Andreas Färber |
Subject: |
[Qemu-devel] QEMU on Solaris 10 (was: [PATCH 01/32] use anonymous memory for kqemu.) |
Date: |
Sat, 25 Oct 2008 12:17:41 +0200 |
Am 24.10.2008 um 21:59 schrieb Ben Taylor:
the big problem I see is that the addition of c99 features
borks a qemu compile on Solaris, specfically around stdbool.h.
Turning on -std=c99 or -std=gnuc99 creates more problems because
gcc-3.4.3 provided by solaris doesn't accept the anonymous unions
that are prevalent around the new code, specifically nbd and vnc.
I just gave it a try on S10 5/08 amd64, using the gcc 3.4.3 from Sun
and --disable-gcc-check
* configure complains about an illegal -q for grep.
It's used in a check for GNU ld. Could we use other options there or
let grep be overridable to ggrep?
Since I am building on amd64, it also complained that libSDL is not
amd64, so I use: --disable-sdl --disable-gfx-check
I can confirm the build failure due to stdbool.h. I therefore add: --
extra-cflags=-std=gnu99
sparc-softmmu then compiles fine.
For i386-softmmu however,
* I get a flood of warnings from softfloat_native.h due to
redefinitions of isunordered etc. (defined in Sun's math_c99.h), and
* the build of `qemu` fails to link due to undefined symbols
__builtin_isinf and __builtin_isnan in libqemu.a(op_helper.o).
Looking at fpu/softfloat_native.h I see it makes assumptions about
these macros that turn wrong when using the C99 headers. Any
suggestion what to do here? It does not seem to depend on the GCC
version since I am encountering this on 3.4.3, not 4.x.
If I prepend "0 && " to the #if line to avoid the redefinitions, I get
compilation errors about __builtin_* functions:
gmake[1]: Entering directory `/export/home/andreas/QEMU/qemu/i386-
softmmu'
Makefile:701: no file name for `-include'
gcc -I. -I.. -I/export/home/andreas/QEMU/qemu/target-i386 -I/export/
home/andreas/QEMU/qemu -MMD -MT vl.o -MP -DNEED_CPU_H -D_GNU_SOURCE -
D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/export/home/andreas/QEMU/
qemu/tcg -I/export/home/andreas/QEMU/qemu/tcg/x86_64 -I/export/home/
andreas/QEMU/qemu/fpu -DHAS_AUDIO -DHAS_AUDIO_CHOICE -I/export/home/
andreas/QEMU/qemu/slirp -std=gnu99 -O2 -g -fno-strict-aliasing -Wall -
Wundef -Wendif-labels -Wwrite-strings -m64 -c -o vl.o /export/home/
andreas/QEMU/qemu/vl.c
In file included from /export/home/andreas/QEMU/qemu/fpu/softfloat.h:
440,
from /export/home/andreas/QEMU/qemu/target-i386/
cpu.h:47,
from ../qemu-common.h:62,
from /export/home/andreas/QEMU/qemu/hw/hw.h:5,
from /export/home/andreas/QEMU/qemu/vl.c:24:
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`float32_le_quiet':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:217: error:
syntax error before "__builtin_islessequal"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:218: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`float32_lt_quiet':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:221: error:
syntax error before "__builtin_isless"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:222: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`float32_unordered':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:225: error:
syntax error before "__builtin_isunordered"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:227: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`float64_le_quiet':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:307: error:
syntax error before "__builtin_islessequal"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:308: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`float64_lt_quiet':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:311: error:
syntax error before "__builtin_isless"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:313: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`float64_unordered':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:316: error:
syntax error before "__builtin_isunordered"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:318: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`floatx80_le_quiet':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:394: error:
syntax error before "__builtin_islessequal"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:395: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`floatx80_lt_quiet':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:398: error:
syntax error before "__builtin_isless"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:400: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h: In function
`floatx80_unordered':
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:403: error:
syntax error before "__builtin_isunordered"
/export/home/andreas/QEMU/qemu/fpu/softfloat-native.h:405: warning: no
return statement in function returning non-void
/export/home/andreas/QEMU/qemu/vl.c: At top level:
/export/home/andreas/QEMU/qemu/vl.c:205: warning: 'no_frame' defined
but not used
/export/home/andreas/QEMU/qemu/vl.c:5372: warning: 'qemu_find_bt_vlan'
defined but not used
gmake[1]: *** [vl.o] Error 1
gmake[1]: Leaving directory `/export/home/andreas/QEMU/qemu/i386-
softmmu'
gmake: *** [subdir-i386-softmmu] Error 2
softfloat-native.h:217 does a simple "return islessequal(a, b);" -
Sun's header has it defined as ((x) __builtin_islessequal(y)). This
looks a little strange to me...
Should we continue to override their macros, using #undef to avoid all
the warnings, and define some additional ones for isinf and isnan, or
is there a better solution?
The -include warning above appears to be related to dependency
tracking only.
Andreas
- [Qemu-devel] [PATCH 0/32] New shot at accelerators, Glauber Costa, 2008/10/23
- [Qemu-devel] [PATCH 01/32] use anonymous memory for kqemu., Glauber Costa, 2008/10/23
- [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Jan Kiszka, 2008/10/23
- [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Anthony Liguori, 2008/10/23
- [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Jan Kiszka, 2008/10/23
- [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Anthony Liguori, 2008/10/23
- Re: [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Leonardo Reiter, 2008/10/23
- Re: [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Leonardo Reiter, 2008/10/23
- Re: [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Andreas Färber, 2008/10/24
- Re: [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Ben Taylor, 2008/10/24
- [Qemu-devel] QEMU on Solaris 10 (was: [PATCH 01/32] use anonymous memory for kqemu.),
Andreas Färber <=
- Re: [Qemu-devel] QEMU on Solaris 10 (was: [PATCH 01/32] use anonymous memory for kqemu.), Andreas Färber, 2008/10/25
- Re: [Qemu-devel] QEMU on Solaris 10 (was: [PATCH 01/32] use anonymous memory for kqemu.), Blue Swirl, 2008/10/25
- [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu., Glauber Costa, 2008/10/24
[Qemu-devel] [PATCH 02/32] protect exec-all.h frm multiple inclusion, Glauber Costa, 2008/10/23
[Qemu-devel] [PATCH 03/32] change definition of FILE for linux, Glauber Costa, 2008/10/23
[Qemu-devel] [PATCH 04/32] move kqemu_cpu_exec to kqemu.c, Glauber Costa, 2008/10/23