Re: [Qemu-devel] [Bug 1531632] [NEW] Can't compile qemu because of errors in the Xen code
On Wed, 6 Jan 2016, Leo wrote: > Public bug reported: > > I'm using Arch Linux, with all needed libs packages installed via ABS > (compiled from source). > I tried to clone the master repository, the v2.5.0 and the stable-2.4.0, all > I had the same problems: Hello Leo, what is the version of Xen installed on your system? The problem seems to be that QEMU detects a Xen < 4.5, but actually ioservid_t is already defined (it shouldn't be, if Xen was a regular 4.5). > First I have to disable -Werror, because it claims about some > uninitialized variables. > > Trying to compile the code, it stops when compiling the xen code > (hw/block/xendisk.o), complaining that ioservid_t is declared twice, > first as 16bit and then as 32bit. > > Output of make: > > CChw/block/xen_disk.o > In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types > for ‘ioservid_t’ > typedef uint16_t ioservid_t; > ^ > In file included from /usr/include/xenctrl.h:37:0, > from /home/leo/qemu/include/hw/xen/xen_common.h:9, > from /home/leo/qemu/include/hw/xen/xen_backend.h:4, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /usr/include/xen/xen.h:353:18: note: previous declaration of ‘ioservid_t’ was > here > typedef uint32_t ioservid_t; > ^ I don't know where this is coming from. I cannot find it in the sources anywhere. > In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /home/leo/qemu/include/hw/xen/xen_common.h: In function > ‘xen_get_ioreq_server_info’: > /home/leo/qemu/include/hw/xen/xen_common.h:256:36: error: > ‘HVM_PARAM_IOREQ_PFN’ undeclared (first use in this function) > rc = xc_get_hvm_param(xc, dom, HVM_PARAM_IOREQ_PFN, ); > ^ > /home/leo/qemu/include/hw/xen/xen_common.h:256:36: note: each undeclared > identifier is reported only once for each function it appears in > In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /home/leo/qemu/include/hw/xen/xen_common.h:264:36: error: > ‘HVM_PARAM_BUFIOREQ_PFN’ undeclared (first use in this function) > rc = xc_get_hvm_param(xc, dom, HVM_PARAM_BUFIOREQ_PFN, ); > ^ > /home/leo/qemu/rules.mak:57: recipe for target 'hw/block/xen_disk.o' failed > make: *** [hw/block/xen_disk.o] Error 1 > [leo@AlphaArch build]$ make > CChw/block/xen_disk.o > In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types > for ‘ioservid_t’ > typedef uint16_t ioservid_t; > ^ > In file included from /usr/include/xenctrl.h:37:0, > from /home/leo/qemu/include/hw/xen/xen_common.h:9, > from /home/leo/qemu/include/hw/xen/xen_backend.h:4, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /usr/include/xen/xen.h:353:18: note: previous declaration of ‘ioservid_t’ was > here > typedef uint32_t ioservid_t; > ^ > In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /home/leo/qemu/include/hw/xen/xen_common.h: In function > ‘xen_get_ioreq_server_info’: > /home/leo/qemu/include/hw/xen/xen_common.h:256:36: error: > ‘HVM_PARAM_IOREQ_PFN’ undeclared (first use in this function) > rc = xc_get_hvm_param(xc, dom, HVM_PARAM_IOREQ_PFN, ); > ^ > /home/leo/qemu/include/hw/xen/xen_common.h:256:36: note: each undeclared > identifier is reported only once for each function it appears in > In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /home/leo/qemu/include/hw/xen/xen_common.h:264:36: error: > ‘HVM_PARAM_BUFIOREQ_PFN’ undeclared (first use in this function) > rc = xc_get_hvm_param(xc, dom, HVM_PARAM_BUFIOREQ_PFN, ); > ^ > /home/leo/qemu/rules.mak:57: recipe for target 'hw/block/xen_disk.o' failed > make: *** [hw/block/xen_disk.o] Error 1 > [leo@AlphaArch build]$ make > CChw/block/xen_disk.o > In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, > from /home/leo/qemu/hw/block/xen_disk.c:39: > /home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types > for ‘ioservid_t’ > typedef uint16_t ioservid_t; > ^ > In file included from /usr/include/xenctrl.h:37:0, > from /home/leo/qemu/include/hw/xen/xen_common.h:9, > from
[Qemu-devel] [Bug 1531632] [NEW] Can't compile qemu because of errors in the Xen code
Public bug reported: I'm using Arch Linux, with all needed libs packages installed via ABS (compiled from source). I tried to clone the master repository, the v2.5.0 and the stable-2.4.0, all I had the same problems: First I have to disable -Werror, because it claims about some uninitialized variables. Trying to compile the code, it stops when compiling the xen code (hw/block/xendisk.o), complaining that ioservid_t is declared twice, first as 16bit and then as 32bit. Output of make: CChw/block/xen_disk.o In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, from /home/leo/qemu/hw/block/xen_disk.c:39: /home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types for ‘ioservid_t’ typedef uint16_t ioservid_t; ^ In file included from /usr/include/xenctrl.h:37:0, from /home/leo/qemu/include/hw/xen/xen_common.h:9, from /home/leo/qemu/include/hw/xen/xen_backend.h:4, from /home/leo/qemu/hw/block/xen_disk.c:39: /usr/include/xen/xen.h:353:18: note: previous declaration of ‘ioservid_t’ was here typedef uint32_t ioservid_t; ^ In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, from /home/leo/qemu/hw/block/xen_disk.c:39: /home/leo/qemu/include/hw/xen/xen_common.h: In function ‘xen_get_ioreq_server_info’: /home/leo/qemu/include/hw/xen/xen_common.h:256:36: error: ‘HVM_PARAM_IOREQ_PFN’ undeclared (first use in this function) rc = xc_get_hvm_param(xc, dom, HVM_PARAM_IOREQ_PFN, ); ^ /home/leo/qemu/include/hw/xen/xen_common.h:256:36: note: each undeclared identifier is reported only once for each function it appears in In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, from /home/leo/qemu/hw/block/xen_disk.c:39: /home/leo/qemu/include/hw/xen/xen_common.h:264:36: error: ‘HVM_PARAM_BUFIOREQ_PFN’ undeclared (first use in this function) rc = xc_get_hvm_param(xc, dom, HVM_PARAM_BUFIOREQ_PFN, ); ^ /home/leo/qemu/rules.mak:57: recipe for target 'hw/block/xen_disk.o' failed make: *** [hw/block/xen_disk.o] Error 1 [leo@AlphaArch build]$ make CChw/block/xen_disk.o In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, from /home/leo/qemu/hw/block/xen_disk.c:39: /home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types for ‘ioservid_t’ typedef uint16_t ioservid_t; ^ In file included from /usr/include/xenctrl.h:37:0, from /home/leo/qemu/include/hw/xen/xen_common.h:9, from /home/leo/qemu/include/hw/xen/xen_backend.h:4, from /home/leo/qemu/hw/block/xen_disk.c:39: /usr/include/xen/xen.h:353:18: note: previous declaration of ‘ioservid_t’ was here typedef uint32_t ioservid_t; ^ In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, from /home/leo/qemu/hw/block/xen_disk.c:39: /home/leo/qemu/include/hw/xen/xen_common.h: In function ‘xen_get_ioreq_server_info’: /home/leo/qemu/include/hw/xen/xen_common.h:256:36: error: ‘HVM_PARAM_IOREQ_PFN’ undeclared (first use in this function) rc = xc_get_hvm_param(xc, dom, HVM_PARAM_IOREQ_PFN, ); ^ /home/leo/qemu/include/hw/xen/xen_common.h:256:36: note: each undeclared identifier is reported only once for each function it appears in In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, from /home/leo/qemu/hw/block/xen_disk.c:39: /home/leo/qemu/include/hw/xen/xen_common.h:264:36: error: ‘HVM_PARAM_BUFIOREQ_PFN’ undeclared (first use in this function) rc = xc_get_hvm_param(xc, dom, HVM_PARAM_BUFIOREQ_PFN, ); ^ /home/leo/qemu/rules.mak:57: recipe for target 'hw/block/xen_disk.o' failed make: *** [hw/block/xen_disk.o] Error 1 [leo@AlphaArch build]$ make CChw/block/xen_disk.o In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, from /home/leo/qemu/hw/block/xen_disk.c:39: /home/leo/qemu/include/hw/xen/xen_common.h:198:18: error: conflicting types for ‘ioservid_t’ typedef uint16_t ioservid_t; ^ In file included from /usr/include/xenctrl.h:37:0, from /home/leo/qemu/include/hw/xen/xen_common.h:9, from /home/leo/qemu/include/hw/xen/xen_backend.h:4, from /home/leo/qemu/hw/block/xen_disk.c:39: /usr/include/xen/xen.h:353:18: note: previous declaration of ‘ioservid_t’ was here typedef uint32_t ioservid_t; ^ In file included from /home/leo/qemu/include/hw/xen/xen_backend.h:4:0, from /home/leo/qemu/hw/block/xen_disk.c:39: /home/leo/qemu/include/hw/xen/xen_common.h: In function ‘xen_get_ioreq_server_info’: /home/leo/qemu/include/hw/xen/xen_common.h:256:36: error: