qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] qemu fails to build with glibc-2.15


From: Peter Maydell
Subject: Re: [Qemu-devel] qemu fails to build with glibc-2.15
Date: Tue, 17 Jul 2012 10:51:56 +0100

On 17 July 2012 10:38, X O <address@hidden> wrote:
> On Mon, Jul 16, 2012 at 6:35 PM, X O <address@hidden> wrote:
>> On Mon, Jul 16, 2012 at 5:14 PM, Avi Kivity <address@hidden> wrote:
>>> (fixed mailing list)
>>>
>>> On 07/16/2012 03:37 PM, X O wrote:
> [...]
>>>> Is there a way to compile qemu with glibc-2.15?
> [...]
>>>> ~~~
>>>>   CC    i386-linux-user/syscall.o
>>>> /tmp/qemu-1.1.1/linux-user/syscall.c: In function 'sys_getdents':
>>>> /tmp/qemu-1.1.1/linux-user/syscall.c:217:1: error: '__NR_getdents'
>>>> undeclared (first use in this function)
>>>> /tmp/qemu-1.1.1/linux-user/syscall.c:217:1: note: each undeclared
>>>> identifier is reported only once for each function it appears in
>>>> /tmp/qemu-1.1.1/linux-user/syscall.c: In function '_llseek':
>>>> /tmp/qemu-1.1.1/linux-user/syscall.c:224:1: error: '__NR_lseek'
>>>> undeclared (first use in this function)
>
> Please, see below. I know it is nowhere near clean solution, but it is
> a quick hack which works for me and might be useful for somebody else.
> Feel free to kick me in the right direction for a proper patch.
>
> I know, some #ifdefs would have to take a place; "<asm/unistd_32.h>"
> won't be available for all platforms and all glibc versions(?) etc.
> etc. At least these are the issues I can think off from top of my
> head.
>
> ~~~[CUT]~~~
> --- linux-user/syscall.c.orig   2012-07-17 09:45:07.000000000 +0200
> +++ linux-user/syscall.c        2012-07-17 10:36:12.000000000 +0200
> @@ -25,6 +25,7 @@
>  #include <endian.h>
>  #include <errno.h>
>  #include <unistd.h>
> +#include <asm/unistd_32.h>

This is (obviously) the wrong thing -- we shouldn't need to
include asm/ headers and certainly including 32 bit only
headers will break 64 bit compiles.

My Ubuntu Precise system has (e)glibc-2.15 and it works fine, because:

* qemu linux-user/syscall.c #includes <linux/unistd.h>
* /usr/include/linux/unistd.h #includes <asm/unistd.h>
* /usr/include/asm/unistd.h #includes either asm/unistd_32.h
  or asm/unistd_64.h as appropriate for 32/64 bit compiles.

Is part of this chain broken on your system?

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]