Re: [Vserver] Re: Bug#328209: [PATCH] Fix syscall number detection

From: Andrew Lee <andrew_at_linux.org.tw>
Date: Fri 28 Oct 2005 - 10:03:53 BST
Message-ID: <4361E979.6020601@linux.org.tw>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

found 328209 0.30.204-5sarge2
tags +patch
thanks

Ola Lundqvist wrote:
> I'm aware of this problem. Not really sure that it should be considered
> grave but as we have a solution to it I do not really bother.

I considered it as grave beause util-vserver package in sarge is
unuseable on all non-i386 machines(It should be FTBFS, but it compiled
on the buildd).

The attached patch is a backported from Bertl's
delta-0.30.208-fix03-fix04-hack.diff to sarge, it fixs the syscall
number detection on no vserver patched kernel.

- -Andrew
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFDYelwnQYz4bYlCYURAuH3AKDV3WAX9jDVw2HkTxD/xXnl77JTcQCffzKz
rrqj2294Tjm48Jt2pJ8vIN8=
=AD3H
-----END PGP SIGNATURE-----

diff -urN util-vserver-0.30.204.orig/configure util-vserver-0.30.204/configure
--- util-vserver-0.30.204.orig/configure 2005-02-16 07:14:42.000000000 +0800
+++ util-vserver-0.30.204/configure 2005-10-28 16:42:17.166831216 +0800
@@ -23746,8 +23746,11 @@
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
                 cat >conftest.$ac_ext <<_ACEOF
-
+#if (ENSC_MARK == alternative)
+#include <vserver-syscall-def.h>
+#else
 #include <asm/unistd.h>
+#endif
 #ifdef __NR_vserver
 ensc_syscall_tmp_nr=__NR_vserver;
 ensc_syscall_tmp_src=ENSC_MARK
@@ -23757,6 +23760,8 @@
                 ensc_syscall_tmp_nr=
                 ensc_syscall_tmp_src=
                 test "$ensc_syscall_tmp_nr" || \
+ eval $($CPP $CPPFLAGS -D ENSC_MARK='alternative' -Ilib conftest.c | $EGREP '^ensc_syscall_tmp_(nr=[1-9][0-9]*;|src=.*)$')
+ test "$ensc_syscall_tmp_nr" || \
                         eval $($CPP $CPPFLAGS -D ENSC_MARK='glibc' conftest.c | $EGREP '^ensc_syscall_tmp_(nr=[1-9][0-9]*;|src=.*)$')
                 test "$ensc_syscall_tmp_nr" || \
                         eval $($CPP $CPPFLAGS -D ENSC_MARK='kernel' -I $ensc_cv_path_kernelheaders conftest.c | $EGREP '^ensc_syscall_tmp_(nr=[1-9][0-9]*;|src=.*)$')
@@ -23878,7 +23883,7 @@
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ensc_cv_test_syscall=traditional
+ensc_cv_test_syscall=alternative
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 
diff -urN util-vserver-0.30.204.orig/lib/syscall-wrap.h util-vserver-0.30.204/lib/syscall-wrap.h
--- util-vserver-0.30.204.orig/lib/syscall-wrap.h 1970-01-01 08:00:00.000000000 +0800
+++ util-vserver-0.30.204/lib/syscall-wrap.h 2005-10-28 16:40:36.884076512 +0800
@@ -0,0 +1,42 @@
+// $Id: syscall-wrap.h,v 1.2 2005/05/02 21:42:05 ensc Exp $ --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+#ifndef H_UTIL_VSERVER_LIB_SYSCALL_WRAP_H
+#define H_UTIL_VSERVER_LIB_SYSCALL_WRAP_H
+
+#ifdef ENSC_USE_ALTERNATIVE_SYSCALL_MACROS
+
+# undef _syscall0
+# undef _syscall1
+# undef _syscall2
+# undef _syscall3
+# undef _syscall4
+# undef _syscall5
+# undef _syscall6
+# undef _syscall7
+
+# include "syscall-alternative.h"
+# include "vserver-syscall-def.h"
+#else
+
+# include <sys/syscall.h>
+# include <syscall.h>
+# include <unistd.h>
+#endif
+
+#endif // H_UTIL_VSERVER_LIB_SYSCALL_WRAP_H
diff -urN util-vserver-0.30.204.orig/lib/vserver-internal.h util-vserver-0.30.204/lib/vserver-internal.h
--- util-vserver-0.30.204.orig/lib/vserver-internal.h 2004-09-23 05:48:24.000000000 +0800
+++ util-vserver-0.30.204/lib/vserver-internal.h 2005-10-28 16:40:36.886076208 +0800
@@ -225,9 +225,7 @@
   return syscall(__NR_vserver, cmd, id, data);
 }
 #else
-inline static UNUSED ALWAYSINLINE
-_syscall3(int, vserver,
- uint32_t, cmd, uint32_t, id, void *, data)
+#include "vserver-syscall-def.h"
 #endif
 #endif
 
diff -urN util-vserver-0.30.204.orig/lib/vserver-syscall-def.h util-vserver-0.30.204/lib/vserver-syscall-def.h
--- util-vserver-0.30.204.orig/lib/vserver-syscall-def.h 1970-01-01 08:00:00.000000000 +0800
+++ util-vserver-0.30.204/lib/vserver-syscall-def.h 2005-10-28 16:40:36.887076056 +0800
@@ -0,0 +1,48 @@
+
+#include <stdint.h>
+
+#include "syscall.h"
+
+#if defined(__alpha__)
+#define __NR_vserver 428
+#elif defined(__arm__)
+#define __NR_vserver 313
+#elif defined(__cris__)
+#define __NR_vserver 273
+#elif defined(__frv__)
+#define __NR_vserver 273
+#elif defined(__h8300__)
+#define __NR_vserver 273
+#elif defined(__i386__)
+#define __NR_vserver 273
+#elif defined(__ia64__)
+#define __NR_vserver 1269
+#elif defined(__m32r__)
+#define __NR_vserver *
+#elif defined(__mc68000__)
+#define __NR_vserver 278
+#elif defined(__mips__) && (_MIPS_SIM == _MIPS_SIM_ABI32)
+#define __NR_vserver 277
+#elif defined(__mips__) && (_MIPS_SIM == _MIPS_SIM_ABI64)
+#define __NR_vserver 240
+#elif defined(__mips__) && (_MIPS_SIM == _MIPS_SIM_NABI32)
+#define __NR_vserver 236
+#elif defined(__hppa__)
+#define __NR_vserver 273
+#elif defined(__powerpc__)
+#define __NR_vserver 257
+#elif defined(__s390__)
+#define __NR_vserver 263
+#elif defined(__sh__)
+#define __NR_vserver 273
+#elif defined(__sparc__)
+#define __NR_vserver 267
+#elif defined(__v850__)
+#define __NR_vserver *
+#elif defined(__x86_64__)
+#define __NR_vserver 236
+#endif
+
+static inline
+_syscall3(int, vserver, uint32_t, cmd, uint32_t, id, void *, data);
+

_______________________________________________
Vserver mailing list
Vserver@list.linux-vserver.org
http://list.linux-vserver.org/mailman/listinfo/vserver
Received on Fri Oct 28 18:57:45 2005

[Next/Previous Months] [Main vserver Project Homepage] [Howto Subscribe/Unsubscribe] [Paul Sladen's vserver stuff]
Generated on Fri 28 Oct 2005 - 18:57:53 BST by hypermail 2.1.8