qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Does i386-linux-user build on an i686 host?
@ 2019-08-08 15:37 Markus Armbruster
  2019-08-09 12:22 ` Peter Maydell
  0 siblings, 1 reply; 9+ messages in thread
From: Markus Armbruster @ 2019-08-08 15:37 UTC (permalink / raw)
  To: qemu-devel

Fails for me, but perhaps I'm doing it wrong:

$ uname -a
Linux gcc45 3.16.0-7-686-pae #1 SMP Debian 3.16.59-1 (2018-10-03) i686 GNU/Linux
$ ../configure --target-list=i386-linux-user
Install prefix    /usr/local
BIOS directory    /usr/local/share/qemu
firmware path     /usr/local/share/qemu-firmware
binary directory  /usr/local/bin
library directory /usr/local/lib
module directory  /usr/local/lib/qemu
libexec directory /usr/local/libexec
include directory /usr/local/include
config directory  /usr/local/etc
local state directory   /usr/local/var
Manual directory  /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /home/armbru/qemu
GIT binary        git
GIT submodules    ui/keycodemapdb tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc capstone slirp
C compiler        cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler clang
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1  -I$(SRC_PATH)/dtc/libfdt -Werror  -pthread -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include  -fPIE -DPIE -m32 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -std=gnu99  -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -Wno-missing-braces -I/usr/include/p11-kit-1    -I/usr/include/libpng12  -I$(SRC_PATH)/capstone/include
LDFLAGS           -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m32 -g 
QEMU_LDFLAGS      -L$(BUILD_DIR)/dtc/libfdt 
make              make
install           install
python            python3 -B (3.4.2)
slirp support     git 
smbd              /usr/sbin/smbd
module support    no
host CPU          i386
host big endian   no
target list       i386-linux-user
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       no 
SDL image support no
GTK support       no 
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    yes
libgcrypt         no
nettle            yes (2.7.1)
libtasn1          yes
PAM               no
iconv support     yes
curses support    no
virgl support     no 
curl support      yes
mingw32 support   no
Audio drivers     pa oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    
Multipath support 
VNC support       yes
VNC SASL support  no
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               yes
vde support       no
netmap support    no
Linux AIO support yes
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
HVF support       no
WHPX support      no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
malloc trim support yes
RDMA support      no
PVRDMA support    no
fdt support       git
membarrier        no
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
posix_memalign    yes
libcap-ng support no
vhost-net support yes
vhost-crypto support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            yes
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   no
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
mutex debugging   no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh support    no
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     yes
lzfse support     no
NUMA host support yes
libxml2           yes
tcmalloc support  no
jemalloc support  no
avx2 optimization yes
replication support yes
VxHS block device no
bochs support     yes
cloop support     yes
dmg support       yes
qcow v1 support   yes
vdi support       yes
vvfat support     yes
qed support       yes
parallels support yes
sheepdog support  yes
capstone          git
docker            no
libpmem support   no
libudev           yes
default devices   yes

NOTE: cross-compilers enabled:  'cc'
$ make
  CC      i386-linux-user/linux-user/syscall.o
/home/armbru/qemu/linux-user/ioctls.h:306:9: error: ‘SNDCTL_DSP_MAPINBUF’ undeclared here (not in a function)
   IOCTL(SNDCTL_DSP_MAPINBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
         ^
/home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
     { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
                       ^
/home/armbru/qemu/linux-user/ioctls.h:307:9: error: ‘SNDCTL_DSP_MAPOUTBUF’ undeclared here (not in a function)
   IOCTL(SNDCTL_DSP_MAPOUTBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
         ^
/home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
     { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
                       ^
/home/armbru/qemu/linux-user/ioctls.h:362:9: error: ‘SOUND_MIXER_ACCESS’ undeclared here (not in a function)
   IOCTL(SOUND_MIXER_ACCESS, 0, TYPE_PTRVOID)
         ^
/home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
     { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
                       ^
/home/armbru/qemu/rules.mak:69: recipe for target 'linux-user/syscall.o' failed
make[1]: *** [linux-user/syscall.o] Error 1
Makefile:472: recipe for target 'i386-linux-user/all' failed
make: *** [i386-linux-user/all] Error 2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] Does i386-linux-user build on an i686 host?
  2019-08-08 15:37 [Qemu-devel] Does i386-linux-user build on an i686 host? Markus Armbruster
@ 2019-08-09 12:22 ` Peter Maydell
  2019-08-09 12:49   ` Peter Maydell
  0 siblings, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2019-08-09 12:22 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: QEMU Developers

On Thu, 8 Aug 2019 at 16:37, Markus Armbruster <armbru@redhat.com> wrote:
>
> Fails for me, but perhaps I'm doing it wrong:


> NOTE: cross-compilers enabled:  'cc'
> $ make
>   CC      i386-linux-user/linux-user/syscall.o
> /home/armbru/qemu/linux-user/ioctls.h:306:9: error: ‘SNDCTL_DSP_MAPINBUF’ undeclared here (not in a function)
>    IOCTL(SNDCTL_DSP_MAPINBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
>          ^
> /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
>      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
>                        ^
> /home/armbru/qemu/linux-user/ioctls.h:307:9: error: ‘SNDCTL_DSP_MAPOUTBUF’ undeclared here (not in a function)
>    IOCTL(SNDCTL_DSP_MAPOUTBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
>          ^
> /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
>      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
>                        ^
> /home/armbru/qemu/linux-user/ioctls.h:362:9: error: ‘SOUND_MIXER_ACCESS’ undeclared here (not in a function)
>    IOCTL(SOUND_MIXER_ACCESS, 0, TYPE_PTRVOID)
>          ^
> /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
>      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
>                        ^

We expect these to be provided by the system's "linux/soundcard.h".
For my Debian system that's provided by the linux-libc-dev package,
but I imagine you have that installed or you wouldn't have got
this far in the configure/compile process...

thanks
-- PMM


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] Does i386-linux-user build on an i686 host?
  2019-08-09 12:22 ` Peter Maydell
@ 2019-08-09 12:49   ` Peter Maydell
  2019-08-09 13:22     ` Aleksandar Markovic
                       ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Peter Maydell @ 2019-08-09 12:49 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: Riku Voipio, QEMU Developers, Laurent Vivier

On Fri, 9 Aug 2019 at 13:22, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Thu, 8 Aug 2019 at 16:37, Markus Armbruster <armbru@redhat.com> wrote:
> >
> > Fails for me, but perhaps I'm doing it wrong:
>
>
> > NOTE: cross-compilers enabled:  'cc'
> > $ make
> >   CC      i386-linux-user/linux-user/syscall.o
> > /home/armbru/qemu/linux-user/ioctls.h:306:9: error: ‘SNDCTL_DSP_MAPINBUF’ undeclared here (not in a function)
> >    IOCTL(SNDCTL_DSP_MAPINBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
> >          ^
> > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
> >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> >                        ^
> > /home/armbru/qemu/linux-user/ioctls.h:307:9: error: ‘SNDCTL_DSP_MAPOUTBUF’ undeclared here (not in a function)
> >    IOCTL(SNDCTL_DSP_MAPOUTBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
> >          ^
> > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
> >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> >                        ^
> > /home/armbru/qemu/linux-user/ioctls.h:362:9: error: ‘SOUND_MIXER_ACCESS’ undeclared here (not in a function)
> >    IOCTL(SOUND_MIXER_ACCESS, 0, TYPE_PTRVOID)
> >          ^
> > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
> >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> >                        ^
>
> We expect these to be provided by the system's "linux/soundcard.h".
> For my Debian system that's provided by the linux-libc-dev package,
> but I imagine you have that installed or you wouldn't have got
> this far in the configure/compile process...

Further investigation shows that this is because the system has
the 'oss4-dev' package installed, which diverts /usr/include/linux/soundcard.h
and installs its own version which doesn't provide all the symbols
that the kernel one does.

Easy fix: uninstall oss4-dev.

Better fix: patch QEMU to provide its own versions of these constants
if the system headers don't.

Utopian fix: I've wondered occasionally whether for cases like this
where the constant is known to be the same for the host and the guest
we should have some sort of approach which lets us use the QEMU
copies of the linux kernel headers rather than having to rely on
the host system, which might have an older version that restricts
us unnecessarily on what we could support...

Issue previously reported in 2016:
https://lists.gnu.org/archive/html/qemu-devel/2016-12/msg01421.html

thanks
-- PMM


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] Does i386-linux-user build on an i686 host?
  2019-08-09 12:49   ` Peter Maydell
@ 2019-08-09 13:22     ` Aleksandar Markovic
  2019-08-09 13:30     ` Michael Tokarev
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Aleksandar Markovic @ 2019-08-09 13:22 UTC (permalink / raw)
  To: Peter Maydell
  Cc: Laurent Vivier, Riku Voipio, Markus Armbruster, QEMU Developers

On Fri, Aug 9, 2019 at 2:57 PM Peter Maydell <peter.maydell@linaro.org>
wrote:

> On Fri, 9 Aug 2019 at 13:22, Peter Maydell <peter.maydell@linaro.org>
> wrote:
> >
> > On Thu, 8 Aug 2019 at 16:37, Markus Armbruster <armbru@redhat.com>
> wrote:
> > >
> > > Fails for me, but perhaps I'm doing it wrong:
> >
> >
> > > NOTE: cross-compilers enabled:  'cc'
> > > $ make
> > >   CC      i386-linux-user/linux-user/syscall.o
> > > /home/armbru/qemu/linux-user/ioctls.h:306:9: error:
> ‘SNDCTL_DSP_MAPINBUF’ undeclared here (not in a function)
> > >    IOCTL(SNDCTL_DSP_MAPINBUF, IOC_R,
> MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
> > >          ^
> > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of
> macro ‘IOCTL’
> > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > >                        ^
> > > /home/armbru/qemu/linux-user/ioctls.h:307:9: error:
> ‘SNDCTL_DSP_MAPOUTBUF’ undeclared here (not in a function)
> > >    IOCTL(SNDCTL_DSP_MAPOUTBUF, IOC_R,
> MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
> > >          ^
> > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of
> macro ‘IOCTL’
> > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > >                        ^
> > > /home/armbru/qemu/linux-user/ioctls.h:362:9: error:
> ‘SOUND_MIXER_ACCESS’ undeclared here (not in a function)
> > >    IOCTL(SOUND_MIXER_ACCESS, 0, TYPE_PTRVOID)
> > >          ^
> > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of
> macro ‘IOCTL’
> > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > >                        ^
> >
> > We expect these to be provided by the system's "linux/soundcard.h".
> > For my Debian system that's provided by the linux-libc-dev package,
> > but I imagine you have that installed or you wouldn't have got
> > this far in the configure/compile process...
>
> Further investigation shows that this is because the system has
> the 'oss4-dev' package installed, which diverts
> /usr/include/linux/soundcard.h
> and installs its own version which doesn't provide all the symbols
> that the kernel one does.
>
> Easy fix: uninstall oss4-dev.
>
> Better fix: patch QEMU to provide its own versions of these constants
> if the system headers don't.
>
>
Another related case, needing internal-to-QEMU ioctl constant definitions:

Linux namespaces and their ioctls:
===========================

http://man7.org/linux/man-pages/man7/namespaces.7.html

http://man7.org/linux/man-pages/man2/ioctl_ns.2.html

Kernel support exist since 4.9 (amended in 4.11), but there is no
header that exposes ioctl definitions - an applications must contain
something like this:

       #ifndef NS_GET_USERNS
       #define NSIO    0xb7
       #define NS_GET_USERNS   _IO(NSIO, 0x1)
       #define NS_GET_PARENT   _IO(NSIO, 0x2)
       #endif

QEMU does not support these ioctls (regardless of the presence of
host kernel support) - however, if we had the above definitions in our
code, we could support them (of course, relying on the support in the
host kernel, otherwise we would return "unknown ioctl").

Cordially,
Aleksandar



> Utopian fix: I've wondered occasionally whether for cases like this
> where the constant is known to be the same for the host and the guest
> we should have some sort of approach which lets us use the QEMU
> copies of the linux kernel headers rather than having to rely on
> the host system, which might have an older version that restricts
> us unnecessarily on what we could support...
>
> Issue previously reported in 2016:
> https://lists.gnu.org/archive/html/qemu-devel/2016-12/msg01421.html
>
> thanks
> -- PMM
>
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] Does i386-linux-user build on an i686 host?
  2019-08-09 12:49   ` Peter Maydell
  2019-08-09 13:22     ` Aleksandar Markovic
@ 2019-08-09 13:30     ` Michael Tokarev
  2019-08-09 13:35     ` Daniel P. Berrangé
  2019-08-09 14:10     ` Peter Maydell
  3 siblings, 0 replies; 9+ messages in thread
From: Michael Tokarev @ 2019-08-09 13:30 UTC (permalink / raw)
  To: Peter Maydell, Markus Armbruster
  Cc: Riku Voipio, QEMU Developers, Laurent Vivier

09.08.2019 15:49, Peter Maydell wrote:
>>>   CC      i386-linux-user/linux-user/syscall.o
>>> /home/armbru/qemu/linux-user/ioctls.h:306:9: error: ‘SNDCTL_DSP_MAPINBUF’ undeclared here (not in a function)
>>>    IOCTL(SNDCTL_DSP_MAPINBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
[]
> Further investigation shows that this is because the system has
> the 'oss4-dev' package installed, which diverts /usr/include/linux/soundcard.h
> and installs its own version which doesn't provide all the symbols
> that the kernel one does.
> 
> Easy fix: uninstall oss4-dev.

On debian we have qemu build-conflict with oss4-dev, exactly for this
very reason, - installing oss4-dev breaks qemu build.

Thanks,

/mjt

> Better fix: patch QEMU to provide its own versions of these constants
> if the system headers don't.
[]



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] Does i386-linux-user build on an i686 host?
  2019-08-09 12:49   ` Peter Maydell
  2019-08-09 13:22     ` Aleksandar Markovic
  2019-08-09 13:30     ` Michael Tokarev
@ 2019-08-09 13:35     ` Daniel P. Berrangé
  2019-08-09 14:02       ` Peter Maydell
  2019-08-09 14:05       ` Aleksandar Markovic
  2019-08-09 14:10     ` Peter Maydell
  3 siblings, 2 replies; 9+ messages in thread
From: Daniel P. Berrangé @ 2019-08-09 13:35 UTC (permalink / raw)
  To: Peter Maydell
  Cc: Laurent Vivier, Riku Voipio, Markus Armbruster, QEMU Developers

On Fri, Aug 09, 2019 at 01:49:07PM +0100, Peter Maydell wrote:
> On Fri, 9 Aug 2019 at 13:22, Peter Maydell <peter.maydell@linaro.org> wrote:
> >
> > On Thu, 8 Aug 2019 at 16:37, Markus Armbruster <armbru@redhat.com> wrote:
> > >
> > > Fails for me, but perhaps I'm doing it wrong:
> >
> >
> > > NOTE: cross-compilers enabled:  'cc'
> > > $ make
> > >   CC      i386-linux-user/linux-user/syscall.o
> > > /home/armbru/qemu/linux-user/ioctls.h:306:9: error: ‘SNDCTL_DSP_MAPINBUF’ undeclared here (not in a function)
> > >    IOCTL(SNDCTL_DSP_MAPINBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
> > >          ^
> > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
> > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > >                        ^
> > > /home/armbru/qemu/linux-user/ioctls.h:307:9: error: ‘SNDCTL_DSP_MAPOUTBUF’ undeclared here (not in a function)
> > >    IOCTL(SNDCTL_DSP_MAPOUTBUF, IOC_R, MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
> > >          ^
> > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
> > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > >                        ^
> > > /home/armbru/qemu/linux-user/ioctls.h:362:9: error: ‘SOUND_MIXER_ACCESS’ undeclared here (not in a function)
> > >    IOCTL(SOUND_MIXER_ACCESS, 0, TYPE_PTRVOID)
> > >          ^
> > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition of macro ‘IOCTL’
> > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > >                        ^
> >
> > We expect these to be provided by the system's "linux/soundcard.h".
> > For my Debian system that's provided by the linux-libc-dev package,
> > but I imagine you have that installed or you wouldn't have got
> > this far in the configure/compile process...
> 
> Further investigation shows that this is because the system has
> the 'oss4-dev' package installed, which diverts /usr/include/linux/soundcard.h
> and installs its own version which doesn't provide all the symbols
> that the kernel one does.
> 
> Easy fix: uninstall oss4-dev.

Perhaps also make 'configure' exit with an error if it detects the
broken soundcard.h ?

> Better fix: patch QEMU to provide its own versions of these constants
> if the system headers don't.
> 
> Utopian fix: I've wondered occasionally whether for cases like this
> where the constant is known to be the same for the host and the guest
> we should have some sort of approach which lets us use the QEMU
> copies of the linux kernel headers rather than having to rely on
> the host system, which might have an older version that restricts
> us unnecessarily on what we could support...
> 
> Issue previously reported in 2016:
> https://lists.gnu.org/archive/html/qemu-devel/2016-12/msg01421.html
> 
> thanks
> -- PMM
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] Does i386-linux-user build on an i686 host?
  2019-08-09 13:35     ` Daniel P. Berrangé
@ 2019-08-09 14:02       ` Peter Maydell
  2019-08-09 14:05       ` Aleksandar Markovic
  1 sibling, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2019-08-09 14:02 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Laurent Vivier, Riku Voipio, Markus Armbruster, QEMU Developers

On Fri, 9 Aug 2019 at 14:35, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Fri, Aug 09, 2019 at 01:49:07PM +0100, Peter Maydell wrote:
> > Easy fix: uninstall oss4-dev.
>
> Perhaps also make 'configure' exit with an error if it detects the
> broken soundcard.h ?

If you're going to patch QEMU you want this one:

> > Better fix: patch QEMU to provide its own versions of these constants
> > if the system headers don't.

which isn't really any more work.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] Does i386-linux-user build on an i686 host?
  2019-08-09 13:35     ` Daniel P. Berrangé
  2019-08-09 14:02       ` Peter Maydell
@ 2019-08-09 14:05       ` Aleksandar Markovic
  1 sibling, 0 replies; 9+ messages in thread
From: Aleksandar Markovic @ 2019-08-09 14:05 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: QEMU Developers, Peter Maydell, Riku Voipio, Laurent Vivier,
	Markus Armbruster

On Fri, Aug 9, 2019 at 3:35 PM Daniel P. Berrangé <berrange@redhat.com>
wrote:

> On Fri, Aug 09, 2019 at 01:49:07PM +0100, Peter Maydell wrote:
> > On Fri, 9 Aug 2019 at 13:22, Peter Maydell <peter.maydell@linaro.org>
> wrote:
> > >
> > > On Thu, 8 Aug 2019 at 16:37, Markus Armbruster <armbru@redhat.com>
> wrote:
> > > >
> > > > Fails for me, but perhaps I'm doing it wrong:
> > >
> > >
> > > > NOTE: cross-compilers enabled:  'cc'
> > > > $ make
> > > >   CC      i386-linux-user/linux-user/syscall.o
> > > > /home/armbru/qemu/linux-user/ioctls.h:306:9: error:
> ‘SNDCTL_DSP_MAPINBUF’ undeclared here (not in a function)
> > > >    IOCTL(SNDCTL_DSP_MAPINBUF, IOC_R,
> MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
> > > >          ^
> > > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition
> of macro ‘IOCTL’
> > > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > > >                        ^
> > > > /home/armbru/qemu/linux-user/ioctls.h:307:9: error:
> ‘SNDCTL_DSP_MAPOUTBUF’ undeclared here (not in a function)
> > > >    IOCTL(SNDCTL_DSP_MAPOUTBUF, IOC_R,
> MK_PTR(MK_STRUCT(STRUCT_buffmem_desc)))
> > > >          ^
> > > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition
> of macro ‘IOCTL’
> > > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > > >                        ^
> > > > /home/armbru/qemu/linux-user/ioctls.h:362:9: error:
> ‘SOUND_MIXER_ACCESS’ undeclared here (not in a function)
> > > >    IOCTL(SOUND_MIXER_ACCESS, 0, TYPE_PTRVOID)
> > > >          ^
> > > > /home/armbru/qemu/linux-user/syscall.c:5023:23: note: in definition
> of macro ‘IOCTL’
> > > >      { TARGET_ ## cmd, cmd, #cmd, access, 0, {  __VA_ARGS__ } },
> > > >                        ^
> > >
> > > We expect these to be provided by the system's "linux/soundcard.h".
> > > For my Debian system that's provided by the linux-libc-dev package,
> > > but I imagine you have that installed or you wouldn't have got
> > > this far in the configure/compile process...
> >
> > Further investigation shows that this is because the system has
> > the 'oss4-dev' package installed, which diverts
> /usr/include/linux/soundcard.h
> > and installs its own version which doesn't provide all the symbols
> > that the kernel one does.
> >
> > Easy fix: uninstall oss4-dev.
>
> Perhaps also make 'configure' exit with an error if it detects the
> broken soundcard.h ?
>
>
Daniel, it looks to me that this is too drastic. Only applicable ioctl
support
could be removed for such case, QEMU is otherwise fine.

Yours,
Aleksandar



> > Better fix: patch QEMU to provide its own versions of these constants
> > if the system headers don't.
> >
> > Utopian fix: I've wondered occasionally whether for cases like this
> > where the constant is known to be the same for the host and the guest
> > we should have some sort of approach which lets us use the QEMU
> > copies of the linux kernel headers rather than having to rely on
> > the host system, which might have an older version that restricts
> > us unnecessarily on what we could support...
> >
> > Issue previously reported in 2016:
> > https://lists.gnu.org/archive/html/qemu-devel/2016-12/msg01421.html
> >
> > thanks
> > -- PMM
> >
>
> Regards,
> Daniel
> --
> |: https://berrange.com      -o-
> https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-
> https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-
> https://www.instagram.com/dberrange :|
>
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] Does i386-linux-user build on an i686 host?
  2019-08-09 12:49   ` Peter Maydell
                       ` (2 preceding siblings ...)
  2019-08-09 13:35     ` Daniel P. Berrangé
@ 2019-08-09 14:10     ` Peter Maydell
  3 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2019-08-09 14:10 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: Riku Voipio, Michael Tokarev, QEMU Developers, Laurent Vivier

On Fri, 9 Aug 2019 at 13:49, Peter Maydell <peter.maydell@linaro.org> wrote:
> Easy fix: uninstall oss4-dev.
>
> Better fix: patch QEMU to provide its own versions of these constants
> if the system headers don't.
>
> Utopian fix: I've wondered occasionally whether for cases like this
> where the constant is known to be the same for the host and the guest
> we should have some sort of approach which lets us use the QEMU
> copies of the linux kernel headers rather than having to rely on
> the host system, which might have an older version that restricts
> us unnecessarily on what we could support...

I missed out this other option:

Make The World A Better Place fix:

Report bug and/or provide patch to the oss4-dev headers to
augment them to provide all the ioctl numbers and other
constants that the kernel's version does, so they really
are interoperable with the header they're diverting.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-08-09 14:10 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-08 15:37 [Qemu-devel] Does i386-linux-user build on an i686 host? Markus Armbruster
2019-08-09 12:22 ` Peter Maydell
2019-08-09 12:49   ` Peter Maydell
2019-08-09 13:22     ` Aleksandar Markovic
2019-08-09 13:30     ` Michael Tokarev
2019-08-09 13:35     ` Daniel P. Berrangé
2019-08-09 14:02       ` Peter Maydell
2019-08-09 14:05       ` Aleksandar Markovic
2019-08-09 14:10     ` Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).