Patchwork [1/4] fix implicit declaration of syscall() in linux-user/mmap.c

login
register
mail settings
Submitter John Spencer
Date Dec. 10, 2012, 6:59 a.m.
Message ID <1355122786-29243-1-git-send-email-maillist-qemu@barfooze.de>
Download mbox | patch
Permalink /patch/204827/
State New
Headers show

Comments

John Spencer - Dec. 10, 2012, 6:59 a.m.
on glibc, this header is getting pulled in automatically via
another header, however on musl we need to include it explicitly.

linux-user/mmap.c:705:9: warning: implicit declaration of function 'syscall'
linux-user/mmap.c:705:9: warning: nested extern declaration of 'syscall'

Signed-off-by: John Spencer <maillist-qemu@barfooze.de>

---
 linux-user/mmap.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Stefan Weil - Dec. 10, 2012, 5:44 p.m.
Am 10.12.2012 07:59, schrieb John Spencer:
> on glibc, this header is getting pulled in automatically via
> another header, however on musl we need to include it explicitly.
>
> linux-user/mmap.c:705:9: warning: implicit declaration of function 'syscall'
> linux-user/mmap.c:705:9: warning: nested extern declaration of 'syscall'
>
> Signed-off-by: John Spencer<maillist-qemu@barfooze.de>
>
> ---
>   linux-user/mmap.c |    1 +
>   1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/linux-user/mmap.c b/linux-user/mmap.c
> index b412e3f..171b449 100644
> --- a/linux-user/mmap.c
> +++ b/linux-user/mmap.c
> @@ -25,6 +25,7 @@
>   #include<sys/types.h>
>   #include<sys/stat.h>
>   #include<sys/mman.h>
> +#include<sys/syscall.h>
>   #include<linux/mman.h>
>   #include<linux/unistd.h>


According to the Linux man-page SYSCALL(2), syscall
is declared in unistd.h. On my Debian Linux with glibc,
this information is correct. Here is the result of grep:

/usr/include/unistd.h:extern long int syscall (long int __sysno, ...) 
__THROW;

unistd.h is included implicitly via qemu-common.h,
so if you don't get the declaration, there is a buggy
implementation of the header files in musl:

http://git.musl-libc.org/cgit/musl/plain/include/unistd.h
does not match the Linux documentation.

Please report this to the musl developers.

Regards
Stefan Weil

Patch

diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index b412e3f..171b449 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -25,6 +25,7 @@ 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/mman.h>
+#include <sys/syscall.h>
 #include <linux/mman.h>
 #include <linux/unistd.h>