Re: [Qemu-devel] [Bug 1531632] [NEW] Can't compile qemu because of errors in the Xen code

2016-01-13 Thread Stefano Stabellini
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

2016-01-07 Thread Leo
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: