From: Adrian B. <bu...@st...> - 2007-01-05 23:53:49
|
FYI: I've applied the patch below to the 2.6.16 tree to fix the UML compilation on systems with recent kernel headers. Please complain if anything is wrong with it. cu Adrian commit cc0e04780f51553c88a2eb1a33f709346f6d0281 Author: Adrian Bunk <bu...@st...> Date: Fri Jan 5 03:17:11 2007 +0100 fix the UML compilation Based on patches from Linus' tree. Signed-off-by: Adrian Bunk <bu...@st...> diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c index d261888..a0afd10 100644 --- a/arch/um/os-Linux/process.c +++ b/arch/um/os-Linux/process.c @@ -11,6 +11,7 @@ #include <linux/unistd.h> #include <sys/mman.h> #include <sys/wait.h> +#include <sys/syscall.h> #include "ptrace_user.h" #include "os.h" #include "user.h" @@ -139,11 +140,9 @@ void os_usr1_process(int pid) * syscalls, and also breaks with clone(), which does not unshare the TLS. */ -inline _syscall0(pid_t, getpid) - int os_getpid(void) { - return(getpid()); + return(syscall(__NR_getpid)); } int os_getpgrp(void) diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index bbf34cb..215ef68 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/arch/um/os-Linux/skas/process.c @@ -17,6 +17,7 @@ #include <sys/time.h> #include <asm/unistd.h> #include <asm/types.h> +#include <asm/page.h> #include "user.h" #include "sysdep/ptrace.h" #include "user_util.h" diff --git a/arch/um/sys-i386/unmap.c b/arch/um/sys-i386/unmap.c index 1b0ad0e..8e55cd5 100644 --- a/arch/um/sys-i386/unmap.c +++ b/arch/um/sys-i386/unmap.c @@ -5,20 +5,17 @@ #include <linux/mman.h> #include <asm/unistd.h> +#include <sys/syscall.h> -static int errno; - -static inline _syscall2(int,munmap,void *,start,size_t,len) -static inline _syscall6(void *,mmap2,void *,addr,size_t,len,int,prot,int,flags,int,fd,off_t,offset) int switcheroo(int fd, int prot, void *from, void *to, int size) { - if(munmap(to, size) < 0){ + if (syscall(__NR_munmap, to, size) < 0){ return(-1); } - if(mmap2(to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1 ){ + if (syscall(__NR_mmap2, to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1 ){ return(-1); } - if(munmap(from, size) < 0){ + if (syscall(__NR_munmap, from, size) < 0){ return(-1); } return(0); diff --git a/arch/um/sys-x86_64/unmap.c b/arch/um/sys-x86_64/unmap.c index f4a4bff..57c9286 100644 --- a/arch/um/sys-x86_64/unmap.c +++ b/arch/um/sys-x86_64/unmap.c @@ -5,20 +5,17 @@ #include <linux/mman.h> #include <asm/unistd.h> +#include <sys/syscall.h> -static int errno; - -static inline _syscall2(int,munmap,void *,start,size_t,len) -static inline _syscall6(void *,mmap,void *,addr,size_t,len,int,prot,int,flags,int,fd,off_t,offset) int switcheroo(int fd, int prot, void *from, void *to, int size) { - if(munmap(to, size) < 0){ + if (syscall(__NR_munmap, to, size) < 0){ return(-1); } - if(mmap(to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1){ + if (syscall(__NR_mmap, to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1){ return(-1); } - if(munmap(from, size) < 0){ + if (syscall(__NR_munmap, from, size) < 0){ return(-1); } return(0); |
From: Jeff D. <jd...@ad...> - 2007-01-09 18:00:54
|
On Sat, Jan 06, 2007 at 12:52:52AM +0100, Adrian Bunk wrote: > FYI: > I've applied the patch below to the 2.6.16 tree to fix the UML > compilation on systems with recent kernel headers. > > Please complain if anything is wrong with it. With this patch, if it builds, it's good. Jeff -- Work email - jdike at linux dot intel dot com |
From: Blaisorblade <bla...@ya...> - 2007-01-09 23:58:37
|
On Saturday 06 January 2007 00:52, Adrian Bunk wrote: > FYI: > I've applied the patch below to the 2.6.16 tree to fix the UML > compilation on systems with recent kernel headers. > > Please complain if anything is wrong with it. > > cu > Adrian > > > commit cc0e04780f51553c88a2eb1a33f709346f6d0281 > Author: Adrian Bunk <bu...@st...> > Date: Fri Jan 5 03:17:11 2007 +0100 > > fix the UML compilation > > Based on patches from Linus' tree. > > Signed-off-by: Adrian Bunk <bu...@st...> > I reverted the below two hunks when they were applied on git tree, they're wrong (even because this code is compiled using our headers, not using host ones). In fact both in git HEAD and in 2.6.19 there is the correct code version. > diff --git a/arch/um/sys-i386/unmap.c b/arch/um/sys-i386/unmap.c > index 1b0ad0e..8e55cd5 100644 > --- a/arch/um/sys-i386/unmap.c > +++ b/arch/um/sys-i386/unmap.c > @@ -5,20 +5,17 @@ > > #include <linux/mman.h> > #include <asm/unistd.h> > +#include <sys/syscall.h> > > -static int errno; > - > -static inline _syscall2(int,munmap,void *,start,size_t,len) > -static inline _syscall6(void *,mmap2,void > *,addr,size_t,len,int,prot,int,flags,int,fd,off_t,offset) int > switcheroo(int fd, int prot, void *from, void *to, int size) > { > - if(munmap(to, size) < 0){ > + if (syscall(__NR_munmap, to, size) < 0){ > return(-1); > } > - if(mmap2(to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1 ){ > + if (syscall(__NR_mmap2, to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == > (void*) -1 ){ return(-1); > } > - if(munmap(from, size) < 0){ > + if (syscall(__NR_munmap, from, size) < 0){ > return(-1); > } > return(0); > diff --git a/arch/um/sys-x86_64/unmap.c b/arch/um/sys-x86_64/unmap.c > index f4a4bff..57c9286 100644 > --- a/arch/um/sys-x86_64/unmap.c > +++ b/arch/um/sys-x86_64/unmap.c > @@ -5,20 +5,17 @@ > > #include <linux/mman.h> > #include <asm/unistd.h> > +#include <sys/syscall.h> > > -static int errno; > - > -static inline _syscall2(int,munmap,void *,start,size_t,len) > -static inline _syscall6(void *,mmap,void > *,addr,size_t,len,int,prot,int,flags,int,fd,off_t,offset) int > switcheroo(int fd, int prot, void *from, void *to, int size) > { > - if(munmap(to, size) < 0){ > + if (syscall(__NR_munmap, to, size) < 0){ > return(-1); > } > - if(mmap(to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1){ > + if (syscall(__NR_mmap, to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == > (void*) -1){ return(-1); > } > - if(munmap(from, size) < 0){ > + if (syscall(__NR_munmap, from, size) < 0){ > return(-1); > } > return(0); > -- Inform me of my mistakes, so I can add them to my list! Paolo Giarrusso, aka Blaisorblade http://www.user-mode-linux.org/~blaisorblade Chiacchiera con i tuoi amici in tempo reale! http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com |
From: Adrian B. <bu...@st...> - 2007-01-14 14:57:15
|
On Wed, Jan 10, 2007 at 12:43:18AM +0100, Blaisorblade wrote: > On Saturday 06 January 2007 00:52, Adrian Bunk wrote: > > FYI: > > I've applied the patch below to the 2.6.16 tree to fix the UML > > compilation on systems with recent kernel headers. > > > > Please complain if anything is wrong with it. > > > > cu > > Adrian > > > > > > commit cc0e04780f51553c88a2eb1a33f709346f6d0281 > > Author: Adrian Bunk <bu...@st...> > > Date: Fri Jan 5 03:17:11 2007 +0100 > > > > fix the UML compilation > > > > Based on patches from Linus' tree. > > > > Signed-off-by: Adrian Bunk <bu...@st...> > > > I reverted the below two hunks when they were applied on git tree, they're > wrong (even because this code is compiled using our headers, not using host > ones). In fact both in git HEAD and in 2.6.19 there is the correct code > version. >... Thanks, I missed this because in 2.6.16 it only affects the MODE_TT compilation (the tls.c's aren't in 2.6.16). I've now additionally committed the patch below. cu Adrian commit 12f5aa0834c6f2d55382daed856af509cd54b9f6 Author: Paolo 'Blaisorblade' Giarrusso <bla...@ya...> Date: Sun Jan 14 15:42:49 2007 +0100 UML: fix the MODE_TT compilation Signed-off-by: Paolo 'Blaisorblade' Giarrusso <bla...@ya...> Signed-off-by: Adrian Bunk <bu...@st...> diff --git a/arch/um/sys-i386/unmap.c b/arch/um/sys-i386/unmap.c index 8e55cd5..1b0ad0e 100644 --- a/arch/um/sys-i386/unmap.c +++ b/arch/um/sys-i386/unmap.c @@ -5,17 +5,20 @@ #include <linux/mman.h> #include <asm/unistd.h> -#include <sys/syscall.h> +static int errno; + +static inline _syscall2(int,munmap,void *,start,size_t,len) +static inline _syscall6(void *,mmap2,void *,addr,size_t,len,int,prot,int,flags,int,fd,off_t,offset) int switcheroo(int fd, int prot, void *from, void *to, int size) { - if (syscall(__NR_munmap, to, size) < 0){ + if(munmap(to, size) < 0){ return(-1); } - if (syscall(__NR_mmap2, to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1 ){ + if(mmap2(to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1 ){ return(-1); } - if (syscall(__NR_munmap, from, size) < 0){ + if(munmap(from, size) < 0){ return(-1); } return(0); diff --git a/arch/um/sys-x86_64/unmap.c b/arch/um/sys-x86_64/unmap.c index 57c9286..f4a4bff 100644 --- a/arch/um/sys-x86_64/unmap.c +++ b/arch/um/sys-x86_64/unmap.c @@ -5,17 +5,20 @@ #include <linux/mman.h> #include <asm/unistd.h> -#include <sys/syscall.h> +static int errno; + +static inline _syscall2(int,munmap,void *,start,size_t,len) +static inline _syscall6(void *,mmap,void *,addr,size_t,len,int,prot,int,flags,int,fd,off_t,offset) int switcheroo(int fd, int prot, void *from, void *to, int size) { - if (syscall(__NR_munmap, to, size) < 0){ + if(munmap(to, size) < 0){ return(-1); } - if (syscall(__NR_mmap, to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1){ + if(mmap(to, size, prot, MAP_SHARED | MAP_FIXED, fd, 0) == (void*) -1){ return(-1); } - if (syscall(__NR_munmap, from, size) < 0){ + if(munmap(from, size) < 0){ return(-1); } return(0); |