Author: dan
Date: 2005-10-14 03:58:38 +0000 (Fri, 14 Oct 2005)
New Revision: 1044

Added:
   glibc-package/trunk/debian/patches/mips-bits-syscall.dpatch
Removed:
   glibc-package/trunk/debian/patches/mips-asm-unistd.dpatch
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/00list
Log:
  * Merge MIPS <bits/syscall.h> fix from CVS (Closes: #329043).


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog        2005-10-14 03:31:34 UTC (rev 
1043)
+++ glibc-package/trunk/debian/changelog        2005-10-14 03:58:38 UTC (rev 
1044)
@@ -20,8 +20,9 @@
     <[EMAIL PROTECTED]> to fail earlier if builds fail
     (but omit the bit for make -k check) (Closes: #325460).
   * Update debconf dependency to work with cdebconf (Closes: #331838).
+  * Merge MIPS <bits/syscall.h> fix from CVS (Closes: #329043).
 
- -- Daniel Jacobowitz <[EMAIL PROTECTED]>  Thu, 13 Oct 2005 23:29:29 -0400
+ -- Daniel Jacobowitz <[EMAIL PROTECTED]>  Thu, 13 Oct 2005 23:57:32 -0400
 
 glibc (2.3.5-6) unstable; urgency=low
 

Modified: glibc-package/trunk/debian/patches/00list
===================================================================
--- glibc-package/trunk/debian/patches/00list   2005-10-14 03:31:34 UTC (rev 
1043)
+++ glibc-package/trunk/debian/patches/00list   2005-10-14 03:58:38 UTC (rev 
1044)
@@ -44,7 +44,6 @@
 glibc23-sse-oldkernel
 #glibc23-errno-hack    # g: untilsarge
 90_glibc233_tcsetaddr
-#mips-asm-unistd       # g: suspended
 localedef-fix-trampoline
 #translation-fr - translation maintainer currently reject this patch 2004-04-21
 amd64-lib
@@ -86,3 +85,4 @@
 glibc235-gcc4-hurd
 glibc235-alpha-divqu
 i386-amd64-biarch
+mips-bits-syscall

Deleted: glibc-package/trunk/debian/patches/mips-asm-unistd.dpatch
===================================================================
--- glibc-package/trunk/debian/patches/mips-asm-unistd.dpatch   2005-10-14 
03:31:34 UTC (rev 1043)
+++ glibc-package/trunk/debian/patches/mips-asm-unistd.dpatch   2005-10-14 
03:58:38 UTC (rev 1044)
@@ -1,307 +0,0 @@
-#! /bin/sh -e
-
-# All lines beginning with `# DP:' are a description of the patch.
-# DP: Description: create correct unistd.h and syscall.h on mips
-# DP: Related bugs: 223891
-# DP: Author: Daniel Jacobowitz <[EMAIL PROTECTED]>, Guido Guenther <[EMAIL 
PROTECTED]>
-# DP: Date:  2004-01-19
-
-if [ $# -ne 2 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-case "$1" in
-    -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
-    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
-    *)
-       echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-       exit 1
-esac
-exit 0
-
-# append the patch here and adjust the -p? flag in the patch calls.
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/Makefile.orig     2003-12-11 
16:04:24.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/Makefile  2003-12-11 
16:18:55.000000000 -0500
-@@ -12,7 +12,7 @@
- # Generate the list of SYS_* macros for the system calls (__NR_* macros).
- # We generate not only SYS_<syscall>, pointing at SYS_<abi>_<syscall> if
- # it exists, but also define SYS_<abi>_<syscall> for all ABIs.
--$(objpfx)syscall-%.h $(objpfx)syscall-%.d: 
../sysdeps/unix/sysv/linux/mips/sys/syscall.h
-+$(objpfx)syscall-list.h $(objpfx)syscall-list.d: $(common-objpfx)asm-unistd.h 
-       $(make-target-directory)
-       { \
-        echo '/* Generated at libc build time from kernel syscall list.  */';\
-@@ -21,31 +21,9 @@
-        echo '# error "Never use <bits/syscall.h> directly; include 
<sys/syscall.h> instead."'; \
-        echo '#endif'; \
-        echo ''; \
--       rm -f $(@:.d=.h).newt; \
--       $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \
--             -x c -I $(common-objdir) $(sysincludes) $< -D_LIBC -dM | \
--       sed -n '[EMAIL PROTECTED] __NR_\([^ ]*\) [EMAIL PROTECTED] SYS_\1 
[EMAIL PROTECTED]' \
--           > $(@:.d=.h).newt; \
--       if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \
--         echo '#if defined _ABI64 && _MIPS_SIM == _ABI64'; \
--         sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt; \
--         echo '#elif defined _ABIN32 && _MIPS_SIM == _ABIN32'; \
--         sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt; \
--         echo '#else'; \
--         sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt; \
--         echo '#endif'; \
--         sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt; \
--       else \
--         cat $(@:.d=.h).newt; \
--       fi; \
--       rm $(@:.d=.h).newt; \
-+       grep -E '^#.*(MIPS_SIM|__NR|sgidef)' $(common-objpfx)asm-unistd.h \
-+        | sed 's/__NR_/SYS_/g' ; \
-       } > $(@:.d=.h).new
-       mv -f $(@:.d=.h).new $(@:.d=.h)
--ifneq (,$(objpfx))
--      sed $(sed-remove-objpfx) $(@:.h=.d)-t > $(@:.h=.d)-t2
--      rm -f $(@:.h=.d)-t
--      mv -f $(@:.h=.d)-t2 $(@:.h=.d)
--else
--      mv -f $(@:.h=.d)-t $(@:.h=.d)
--endif
-+      echo > $(@:.h=.d)
- endif
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.in.orig 2004-01-19 
15:50:35.000000000 +0100
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.in      2004-01-19 
15:50:48.000000000 +0100
-@@ -3,7 +3,7 @@
- # Local configure fragment for sysdeps/unix/sysv/linux/mips.
- 
- case $machine in
--mips*64*)
-+mips*)
-   rm -f asm-unistd.h
-   asm_unistd_h=$sysheaders/asm/unistd.h
-   if test ! -f $asm_unistd_h; then
-@@ -19,57 +19,66 @@
-     AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed])
-     echo '#include <asm/unistd.h>' > asm-unistd.h
-   else
--    # The point of this preprocessing is to turn __NR_<syscall> into
--    # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
--    # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
--    # and <abi> is the compiler-enabled ABI.
-+    # There are two versions of this header.  The older form defined
-+    # __NR_foo, __NR_N32_foo, and __NR_O32_foo.  The new form defines
-+    # only __NR_foo, but does it based on the current ABI.
-+    # We want to have __NR_O32_foo, __NR_N64_foo, and __NR_N32_foo defined
-+    # always, and __NR_foo defined conditionally.  Only the newer form is
-+    # supported.
-     cat "$asm_unistd_h" |
--    sed -e 's,__NR_,__NR_N64_,g' \
--        -e 's,__NR_N64_##,__NR_##,g' \
--      -e 's,__NR_N64_O32_,__NR_O32_,g' \
--      -e 's,__NR_N64_N32_,__NR_N32_,g' \
--      -e 's,__NR_N64_N64_,__NR_N64_,g' \
--    | awk > asm-unistd.h '
--/^#define __NR.*unused/ { print; next; }
--/^#define __NR_N64__exit __NR_N64_exit/ {
--      print "#define __NR__exit __NR_exit";
--      print "#define __NR_O32__exit __NR_O32_exit";
--      print "#define __NR_N32__exit __NR_N32_exit";
-+    awk > asm-unistd.h '
-+BEGIN { print "#include <sgidefs.h>"; }
-+/^#if _MIPS_SIM == _MIPS_SIM_ABI32/,/^#endif.*_MIPS_SIM_ABI32/ {
-+  if (/^#define __NR_Linux/) { print; next; }
-+  if (/^#define __NR_/) {
-+      line = $0;
-+      gsub (/_NR_/, "_NR_O32_", line);
-+      print "#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */";
-+      print "";
-+      print line;
-+      print "";
-+      print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
-       print; next;
-+  }
-+  print; next;
- }
--/^#define __NR_O32_/ {
--      name = $2;
--      sub (/_O32_/, "_", name);
--      print;
--      print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
--      print "# define " name " " $2;
--      print "#endif";
--      next;
-+/^#if _MIPS_SIM == _MIPS_SIM_NABI32/,/^#endif.*_MIPS_SIM_NABI32/ {
-+  if (/^#define __NR_Linux/) { print; next; }
-+  if (/^#define __NR_/) {
-+      line = $0;
-+      gsub (/_NR_/, "_NR_N32_", line);
-+      print "#endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */";
-+      print "";
-+      print line;
-+      print "";
-+      print "#if _MIPS_SIM == _MIPS_SIM_NABI32";
-+      print; next;
-+  }
-+  print; next;
- }
--/^#define __NR_N32_/ {
--      name = $2;
--      sub (/_N32_/, "_", name);
--      print;
--      print "#if defined _ABIN32 && _MIPS_SIM == _ABIN32";
--      print "# define " name " " $2;
--      print "#endif";
--      next;
-+/^#if _MIPS_SIM == _MIPS_SIM_ABI64/,/^#endif.*_MIPS_SIM_ABI64/ {
-+  if (/^#define __NR_Linux/) { print; next; }
-+  if (/^#define __NR_/) {
-+      line = $0;
-+      gsub (/_NR_/, "_NR_N64_", line);
-+      print "#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */";
-+      print "";
-+      print line;
-+      print "";
-+      print "#if _MIPS_SIM == _MIPS_SIM_ABI64";
-+      print; next;
-+  }
-+  print; next;
- }
--/^#define __NR_N64_/ {
--      name = $2;
--      sub (/_N64_/, "_", name);
-+/^#define __NR_64_/ {
-+      line = $0;
-+      gsub (/_NR_64_/, "_NR_N64_", line);
-       print;
--      print "#if defined _ABI64 && _MIPS_SIM == _ABI64";
--      print "# define " name " " $2;
--      print "#endif";
-+      print line;
-       next;
- }
- {
-       print;
- }'
-   fi ;;
--mips*)
--  rm -f asm-unistd.h
--  echo '#include <asm/unistd.h>' > asm-unistd.h
--  ;;
- esac
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.orig    2004-01-19 
15:50:40.000000000 +0100
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure 2004-01-19 
15:50:44.000000000 +0100
-@@ -2,7 +2,7 @@
-  # Local configure fragment for sysdeps/unix/sysv/linux/mips.
- 
- case $machine in
--mips*64*)
-+mips*)
-   rm -f asm-unistd.h
-   asm_unistd_h=$sysheaders/asm/unistd.h
-   if test ! -f $asm_unistd_h; then
-@@ -19,57 +19,66 @@
- echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be 
pre-processed" >&2;}
-     echo '#include <asm/unistd.h>' > asm-unistd.h
-   else
--    # The point of this preprocessing is to turn __NR_<syscall> into
--    # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
--    # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
--    # and <abi> is the compiler-enabled ABI.
-+    # There are two versions of this header.  The older form defined
-+    # __NR_foo, __NR_N32_foo, and __NR_O32_foo.  The new form defines
-+    # only __NR_foo, but does it based on the current ABI.
-+    # We want to have __NR_O32_foo, __NR_N64_foo, and __NR_N32_foo defined
-+    # always, and __NR_foo defined conditionally.  Only the newer form is
-+    # supported.
-     cat "$asm_unistd_h" |
--    sed -e 's,__NR_,__NR_N64_,g' \
--        -e 's,__NR_N64_##,__NR_##,g' \
--      -e 's,__NR_N64_O32_,__NR_O32_,g' \
--      -e 's,__NR_N64_N32_,__NR_N32_,g' \
--      -e 's,__NR_N64_N64_,__NR_N64_,g' \
--    | awk > asm-unistd.h '
--/^#define __NR.*unused/ { print; next; }
--/^#define __NR_N64__exit __NR_N64_exit/ {
--      print "#define __NR__exit __NR_exit";
--      print "#define __NR_O32__exit __NR_O32_exit";
--      print "#define __NR_N32__exit __NR_N32_exit";
-+    awk > asm-unistd.h '
-+BEGIN { print "#include <sgidefs.h>"; }
-+/^#if _MIPS_SIM == _MIPS_SIM_ABI32/,/^#endif.*_MIPS_SIM_ABI32/ {
-+  if (/^#define __NR_Linux/) { print; next; }
-+  if (/^#define __NR_/) {
-+      line = $0;
-+      gsub (/_NR_/, "_NR_O32_", line);
-+      print "#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */";
-+      print "";
-+      print line;
-+      print "";
-+      print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
-       print; next;
-+  }
-+  print; next;
- }
--/^#define __NR_O32_/ {
--      name = $2;
--      sub (/_O32_/, "_", name);
--      print;
--      print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
--      print "# define " name " " $2;
--      print "#endif";
--      next;
-+/^#if _MIPS_SIM == _MIPS_SIM_NABI32/,/^#endif.*_MIPS_SIM_NABI32/ {
-+  if (/^#define __NR_Linux/) { print; next; }
-+  if (/^#define __NR_/) {
-+      line = $0;
-+      gsub (/_NR_/, "_NR_N32_", line);
-+      print "#endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */";
-+      print "";
-+      print line;
-+      print "";
-+      print "#if _MIPS_SIM == _MIPS_SIM_NABI32";
-+      print; next;
-+  }
-+  print; next;
- }
--/^#define __NR_N32_/ {
--      name = $2;
--      sub (/_N32_/, "_", name);
--      print;
--      print "#if defined _ABIN32 && _MIPS_SIM == _ABIN32";
--      print "# define " name " " $2;
--      print "#endif";
--      next;
-+/^#if _MIPS_SIM == _MIPS_SIM_ABI64/,/^#endif.*_MIPS_SIM_ABI64/ {
-+  if (/^#define __NR_Linux/) { print; next; }
-+  if (/^#define __NR_/) {
-+      line = $0;
-+      gsub (/_NR_/, "_NR_N64_", line);
-+      print "#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */";
-+      print "";
-+      print line;
-+      print "";
-+      print "#if _MIPS_SIM == _MIPS_SIM_ABI64";
-+      print; next;
-+  }
-+  print; next;
- }
--/^#define __NR_N64_/ {
--      name = $2;
--      sub (/_N64_/, "_", name);
-+/^#define __NR_64_/ {
-+      line = $0;
-+      gsub (/_NR_64_/, "_NR_N64_", line);
-       print;
--      print "#if defined _ABI64 && _MIPS_SIM == _ABI64";
--      print "# define " name " " $2;
--      print "#endif";
-+      print line;
-       next;
- }
- {
-       print;
- }'
-   fi ;;
--mips*)
--  rm -f asm-unistd.h
--  echo '#include <asm/unistd.h>' > asm-unistd.h
--  ;;
- esac

Added: glibc-package/trunk/debian/patches/mips-bits-syscall.dpatch
===================================================================
--- glibc-package/trunk/debian/patches/mips-bits-syscall.dpatch 2005-10-14 
03:31:34 UTC (rev 1043)
+++ glibc-package/trunk/debian/patches/mips-bits-syscall.dpatch 2005-10-14 
03:58:38 UTC (rev 1044)
@@ -0,0 +1,517 @@
+#! /bin/sh -e
+
+# All lines beginning with `# DP:' are a description of the patch.
+# DP: Description: Generate correct <bits/syscall.h> on MIPS.
+# DP: Related bugs: 223891, 329043
+# DP: Dpatch author: Daniel Jacobowitz <[EMAIL PROTECTED]>
+# DP: Patch author: Richard Sandiford <[EMAIL PROTECTED]>
+# DP: Upstream status: In CVS
+# DP: Status Details: Currently on HEAD but not glibc 2.3.x branch
+# DP: Date: 2005-10-13
+
+if [ $# -ne 2 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
+    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
+    *)
+       echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+       exit 1
+esac
+exit 0
+
+# append the patch here and adjust the -p? flag in the patch calls.
+From libc-alpha-return-16642-listarch-libc-alpha=sources dot redhat dot com at 
sources dot redhat dot com Thu Nov 11 09:15:58 2004
+Return-Path: <libc-alpha-return-16642-listarch-libc-alpha=sources dot redhat 
dot com at sources dot redhat dot com>
+Delivered-To: listarch-libc-alpha at sources dot redhat dot com
+Received: (qmail 10691 invoked by alias); 11 Nov 2004 09:15:55 -0000
+Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by 
ezmlm
+Precedence: bulk
+List-Subscribe: <mailto:libc-alpha-subscribe at sources dot redhat dot com>
+List-Archive: <http://sources.redhat.com/ml/libc-alpha/>
+List-Post: <mailto:libc-alpha at sources dot redhat dot com>
+List-Help: <mailto:libc-alpha-help at sources dot redhat dot com>, 
<http://sources dot redhat dot com/ml/#faqs>
+Sender: libc-alpha-owner at sources dot redhat dot com
+Delivered-To: mailing list libc-alpha at sources dot redhat dot com
+Received: (qmail 10627 invoked from network); 11 Nov 2004 09:15:39 -0000
+Received: from unknown (HELO mx1.redhat.com) (66.187.233.31)
+  by sourceware dot org with SMTP; 11 Nov 2004 09:15:39 -0000
+Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com 
[172.16.52.254])
+       by mx1 dot redhat dot com (8 dot 12 dot 11/8 dot 12 dot 11) with ESMTP 
id iAB9FdqQ030883
+       for <libc-alpha at sources dot redhat dot com>; Thu, 11 Nov 2004 
04:15:39 -0500
+Received: from talisman.cambridge.redhat.com (talisman.cambridge.redhat.com 
[172.16.18.81])
+       by int-mx1 dot corp dot redhat dot com (8 dot 11 dot 6/8 dot 11 dot 6) 
with ESMTP id iAB9Fcr07582
+       for <libc-alpha at sources dot redhat dot com>; Thu, 11 Nov 2004 
04:15:38 -0500
+Received: from talisman.cambridge.redhat.com (localhost.localdomain 
[127.0.0.1])
+       by talisman dot cambridge dot redhat dot com (8 dot 13 dot 1/8 dot 12 
dot 10) with ESMTP id iAB9Fb5l028658
+       for <libc-alpha at sources dot redhat dot com>; Thu, 11 Nov 2004 
09:15:37 GMT
+Received: (from [EMAIL PROTECTED])
+       by talisman dot cambridge dot redhat dot com (8 dot 13 dot 1/8 dot 12 
dot 10/Submit) id iAB9FbgK028657;
+       Thu, 11 Nov 2004 09:15:37 GMT
+X-Authentication-Warning: talisman dot cambridge dot redhat dot com: rsandifo 
set sender to rsandifo at redhat dot com using -f
+To: libc-alpha at sources dot redhat dot com
+Subject: [PATCH] <asm/unistd.h> and mips*-linux-gnu
+From: Richard Sandiford <rsandifo at redhat dot com>
+Date: Thu, 11 Nov 2004 09:15:37 +0000
+Message-ID: <[EMAIL PROTECTED]>
+User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+
+As has been mentioned before on this list, the MIPS versions of
+<asm/unistd.h> in linux 2.6 use a different naming scheme from earlier
+versions.  Paraphrasing comments from the patch, there are now three
+sets of headers that glibc needs to consider:
+
+  (1) Headers from the pre-2.6 32-bit MIPS port.  They just define
+      a single list of __NR macros.
+
+  (2) Headers from the pre-2.6 64-bit MIPS port.  They unconditionally
+      define syscalls for all three ABIs, with o32 syscalls prefixed
+      by __NR_O32, n32 syscalls prefixed by __NR_N32 and n64 syscalls
+      prefixed by plain __NR.
+
+  (3) Headers from the combined 2.6 MIPS port.  They use the _MIPS_SIM
+      macro to define the right set of syscalls for the current ABI.
+      The syscalls themselves have no special ABI prefix, but the
+      headers also define:
+
+         __NR_O32_Linux{,_syscalls}
+         __NR_N32_Linux{,_syscalls}
+         __NR_64_Linux{,_syscalls}
+
+At the moment, glibc only handles (1) and (2).  Ilya Volynets-Evenbakh
+posted a patch for (3) in May:
+
+    http://sources.redhat.com/ml/libc-alpha/2004-05/msg00113.html
+
+but I don't think that's enough.  I believe the affected areas are
+as follows:
+
+   (a) sysdeps/unix/sysv/linux/mips/configure creates a private
+       (non-installed) header called asm-unistd.h.  In case (1) above,
+       this file just includes <asm/unistd.h>.  In case (2), it contains
+       a processed version that:
+
+          (i) changes the n64 __NR defines to use __NR_N64 instead.
+          (ii) defines __NR macros as appropriate for the current ABI.
+
+       This processing doesn't work for 2.6 headers.
+
+   (b) In the mips64 versions of sysdeps.h, SYS_ify() will use the
+       ABI-prefixed names (__NR_O32_*, __NR_N32_* and __NR_N64_*)
+       that are defined in asm-unistd.h.   They should just use
+       __NR with 2.6 headers.
+
+   (c) The MIPS-specific code to create syscalls.h also uses the
+       ABI-prefixed names.  This too needs to be updated for 2.6.
+
+To fix these, we need some way of detecting case (3) over case (2).
+One easy way of doing this is to check for __NR_N32_open, which only
+the pre-2.6 mips64 headers will define.  (I also used __NR_O32_open
+when dealing specifically with o32.  That seemed more readable than
+checking for __NR_N32_open in something that no relation to n32.)
+
+So, addressing each point in turn:
+
+   (a) For (3), asm-unistd.h should simply include <asm/unistd.h>,
+       just like it does for (1).  The patch therefore guards the
+       processing step with a grep for __NR_N32_open.
+
+   (b) The mips64 versions of sysdeps.h should use the normal
+       __NR macros for SYS_ify().  Thanks to the definitions
+       in asm-unistd.h, this will work for both (2) and (3).
+
+   (c) I've tried to fix this in such a way that syscalls.h can be
+       generated from either set of headers and such that it will
+       work with either set of headers.  For mips64*-linux-gnu,
+       the makefile will preprocess the syscall list once for
+       each ABI and generate output of the form:
+
+           #if _MIPS_SIM == _MIPS_SIM_NABI32
+           # ifdef __NR_N32_open
+           #  define SYS_n32syscall1 __NR_N32_n32syscall1
+           #  ...
+           # else
+           #  define SYS_n32syscall1 __NR_n32syscall1
+           #  ...
+           # endif
+           #elif _MIPS_SIM == _MIPS_SIM_ABI64
+           # define SYS_n64syscall1 __NR_n64syscall1
+           # ...
+           #else
+           # ifdef __NR_O32_open
+           #  define SYS_o32syscall1 __NR_O32_o32syscall1
+           #  ...
+           # else
+           #  define SYS_o32syscall1 __NR_o32syscall1
+           #  ...
+           # endif
+           #endif
+
+       Comments in the patch explain things in more detail.
+
+I've tested this against:
+
+   - the pre-2.6 32-bit headers (target mips-linux-gnu)
+   - the pre-2.6 64-bit headers (target mips64-linux-gnu, all three ABIs)
+   - the 2.6 headers (target mips64-linux-gnu, all three ABIs)
+
+As expected, the syscalls.h output for mips64-linux-gnu doesn't depend
+on the ABI that glibc is being built for.  Please install if OK.
+
+Richard
+
+
+2004-11-11  Richard Sandiford  <[EMAIL PROTECTED]>
+
+       * sysdeps/unix/sysv/linux/mips/configure.in (asm-unistd.h): Only
+       preprocess <asm/unistd.h> if it defines ABI-prefixed syscall names
+       like __NR_N32_open.  Just include <asm/unistd.h> otherwise.
+       * sysdeps/unix/sysv/linux/mips/configure: Regenerate.
+       * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: Delete
+       * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h (SYS_ify): Use the
+       standard __NR prefix.
+       * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h (SYS_ify): Likewise.
+       * sysdeps/unix/sysv/linux/mips/Makefile (syscall-%.h): Rework so that
+       the output file is compatible with both pre-2.6 and 2.6 kernel headers.
+       Extract separate syscall lists for each ABI.
+
+Index: libc/sysdeps/unix/sysv/linux/mips/Makefile
+===================================================================
+RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/Makefile,v
+retrieving revision 1.13
+diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.13 Makefile
+*** libc/sysdeps/unix/sysv/linux/mips/Makefile 20 Jul 2004 16:37:41 -0000      
1.13
+--- libc/sysdeps/unix/sysv/linux/mips/Makefile 9 Nov 2004 21:14:19 -0000
+*************** sysdep_headers += sys/cachectl.h sys/sys
+*** 9,19 ****
+  
+  no_syscall_list_h = 1
+  
+! # Generate the list of SYS_* macros for the system calls (__NR_* macros).
+! # We generate not only SYS_<syscall>, pointing at SYS_<abi>_<syscall> if
+! # it exists, but also define SYS_<abi>_<syscall> for all ABIs.
+  $(objpfx)syscall-%.h $(objpfx)syscall-%.d: 
../sysdeps/unix/sysv/linux/mips/sys/syscall.h
+       $(make-target-directory)
+       { \
+        echo '/* Generated at libc build time from kernel syscall list.  */';\
+        echo ''; \
+--- 9,81 ----
+  
+  no_syscall_list_h = 1
+  
+! # A callable macro that expands to a shell command.  Preprocess file $(1)
+! # using ABI option $(2) and see which macros it defines.  Print FOO for each
+! # macro of the form __NR$(3)_FOO, filtering out ABI-specific __NR macros
+! # that have a prefix other than $(3).
+! mips_list_syscalls = $(filter-out -m%,$(CC)) -E -x c $(+includes) \
+!                          $(sysincludes) -D_LIBC -dM -mabi=$(2) $(1) | \
+!                      sed -n '[EMAIL PROTECTED] __NR$(3)_\([^ ]*\) [EMAIL 
PROTECTED]@p' | \
+!                      sed -e '/^[ON]32_/d' -e '/^N64_/d' -e '/^64_/d' | \
+!                      LC_ALL=C sort
+! 
+! # Generate a list of SYS_* macros from the linux __NR macros.
+! #
+! # Before version 2.6, linux had separate 32-bit and 64-bit MIPS ports,
+! # each with its own set of headers.  The ports were merged for 2.6 and
+! # this merged port defines the syscalls in a slightly different way.
+! # There are therefore three sets of headers that we need to consider:
+! #
+! #    (1) Headers from the separate 32-bit MIPS port.  They just define
+! #     a single list of __NR macros.
+! #
+! #    (2) Headers from the separate 64-bit MIPS port.  They unconditionally
+! #     define syscalls for all three ABIs, with o32 syscalls prefixed
+! #     by __NR_O32, n32 syscalls prefixed by __NR_N32 and n64 syscalls
+! #     prefixed by plain __NR.
+! #
+! #    (3) Headers from the combined port.  They use the _MIPS_SIM macro to
+! #     define the right set of syscalls for the current ABI.  The syscalls
+! #     themselves have no special ABI prefix, but the headers also define:
+! #
+! #        __NR_O32_Linux{,_syscalls}
+! #        __NR_N32_Linux{,_syscalls}
+! #        __NR_64_Linux{,_syscalls}
+! #
+! # In case (1) we just want a simple list of SYS_* macros.  In cases (2)
+! # and (3) we want a file that will work for all three ABIs, regardless
+! # of which ABI we are currently using.  We also want the file to work
+! # if the user later moves from (2) to (3).  Thus the file we create
+! # for (2) and (3) has the form:
+! #
+! #    #if _MIPS_SIM == _MIPS_SIM_NABI32
+! #    # ifdef __NR_N32_open
+! #    #  define SYS_n32syscall1 __NR_N32_n32syscall1
+! #    #  ...
+! #    # else
+! #    #  define SYS_n32syscall1 __NR_n32syscall1
+! #    #  ...
+! #    # endif
+! #    #elif _MIPS_SIM == _MIPS_SIM_ABI64
+! #    # define SYS_n64syscall1 __NR_n64syscall1
+! #    # ...
+! #    #else
+! #    # ifdef __NR_O32_open
+! #    #  define SYS_o32syscall1 __NR_O32_o32syscall1
+! #    #  ...
+! #    # else
+! #    #  define SYS_o32syscall1 __NR_o32syscall1
+! #    #  ...
+! #    # endif
+! #    #endif
+! #
+! # Here, __NR_N32_open and __NR_O32_open are used to detect case (2)
+! # over case (3).  The n64 SYS_* macros can always use the normal
+! # ABI-less names.
+  $(objpfx)syscall-%.h $(objpfx)syscall-%.d: 
../sysdeps/unix/sysv/linux/mips/sys/syscall.h
+       $(make-target-directory)
++      $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC $< -MD -MP \
++            -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' > /dev/null
+       { \
+        echo '/* Generated at libc build time from kernel syscall list.  */';\
+        echo ''; \
+*************** $(objpfx)syscall-%.h $(objpfx)syscall-%.
+*** 22,49 ****
+        echo '#endif'; \
+        echo ''; \
+        echo '#include <sgidefs.h>'; \
+!       rm -f $(@:.d=.h).newt; \
+!       $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \
+!             -x c $(+includes) $(sysincludes) $< -D_LIBC -dM | \
+!       sed -n '[EMAIL PROTECTED] __NR_\([^ ]*\) [EMAIL PROTECTED] SYS_\1 
[EMAIL PROTECTED]' \
+!           > $(@:.d=.h).newt; \
+!       if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \
+          echo '#if _MIPS_SIM == _ABIN32'; \
+!         sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt | \
+!              LC_ALL=C sort; \
+          echo '#elif _MIPS_SIM == _ABI64'; \
+!         sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt | \
+!              LC_ALL=C sort; \
+          echo '#else'; \
+!         sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt | \
+!              LC_ALL=C sort; \
+          echo '#endif'; \
+-         sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt | \
+-              LC_ALL=C sort +1.8; \
+        else \
+!         cat $(@:.d=.h).newt; \
+        fi; \
+!       rm $(@:.d=.h).newt; \
+       } > $(@:.d=.h).new
+       mv -f $(@:.d=.h).new $(@:.d=.h)
+  ifneq (,$(objpfx))
+--- 84,121 ----
+        echo '#endif'; \
+        echo ''; \
+        echo '#include <sgidefs.h>'; \
+!       rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \
+!       $(call mips_list_syscalls,$<,n32,_N32) > $(@:.d=.h).newn32; \
+!       if test -s $(@:.d=.h).newn32; then \
+!         if grep open $(@:.d=.h).newn32 > /dev/null; then \
+!           $(call mips_list_syscalls,$<,32,_O32) > $(@:.d=.h).new32; \
+!           $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \
+!         else \
+!           $(call mips_list_syscalls,$<,32,) > $(@:.d=.h).new32; \
+!           $(call mips_list_syscalls,$<,n32,) > $(@:.d=.h).newn32; \
+!           $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \
+!         fi; \
+          echo '#if _MIPS_SIM == _ABIN32'; \
+!         echo '# ifdef __NR_N32_open'; \
+!         sed '[EMAIL PROTECTED](.*\)@#  define SYS_\1 __NR_N32_\1@' < 
$(@:.d=.h).newn32; \
+!         echo '# else'; \
+!         sed '[EMAIL PROTECTED](.*\)@#  define SYS_\1 __NR_\1@' < 
$(@:.d=.h).newn32; \
+!         echo '# endif'; \
+          echo '#elif _MIPS_SIM == _ABI64'; \
+!         sed '[EMAIL PROTECTED](.*\)@# define SYS_\1 __NR_\1@' < 
$(@:.d=.h).new64; \
+          echo '#else'; \
+!         echo '# ifdef __NR_O32_open'; \
+!         sed '[EMAIL PROTECTED](.*\)@#  define SYS_\1 __NR_O32_\1@' < 
$(@:.d=.h).new32; \
+!         echo '# else'; \
+!         sed '[EMAIL PROTECTED](.*\)@#  define SYS_\1 __NR_\1@' < 
$(@:.d=.h).new32; \
+!         echo '# endif'; \
+          echo '#endif'; \
+        else \
+!         $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC -dM $< | \
+!         sed -n '[EMAIL PROTECTED] __NR_\([^ ]*\) [EMAIL PROTECTED] SYS_\1 
[EMAIL PROTECTED]' | \
+!         LC_ALL=C sort; \
+        fi; \
+!       rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \
+       } > $(@:.d=.h).new
+       mv -f $(@:.d=.h).new $(@:.d=.h)
+  ifneq (,$(objpfx))
+
+Index: libc/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
+===================================================================
+RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h,v
+retrieving revision 1.4
+diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.4 sysdep.h
+*** libc/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h      18 Oct 2004 
05:16:07 -0000      1.4
+--- libc/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h      9 Nov 2004 
21:14:19 -0000
+*************** #define _LINUX_MIPS_SYSDEP_H 1
+*** 28,36 ****
+     so we have to redefine the `SYS_ify' macro here.  */
+  #undef SYS_ify
+  #ifdef __STDC__
+! # define SYS_ify(syscall_name)       __NR_N32_##syscall_name
+  #else
+! # define SYS_ify(syscall_name)       __NR_N32_/**/syscall_name
+  #endif
+  
+  #ifdef __ASSEMBLER__
+--- 28,36 ----
+     so we have to redefine the `SYS_ify' macro here.  */
+  #undef SYS_ify
+  #ifdef __STDC__
+! # define SYS_ify(syscall_name)       __NR_##syscall_name
+  #else
+! # define SYS_ify(syscall_name)       __NR_/**/syscall_name
+  #endif
+  
+  #ifdef __ASSEMBLER__
+Index: libc/sysdeps/unix/sysv/linux/mips/configure
+===================================================================
+RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/configure,v
+retrieving revision 1.7
+diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.7 configure
+*** libc/sysdeps/unix/sysv/linux/mips/configure        20 Jul 2004 16:35:29 
-0000      1.7
+--- libc/sysdeps/unix/sysv/linux/mips/configure        9 Nov 2004 21:14:19 
-0000
+*************** mips*64*)
+*** 18,24 ****
+      { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not 
be pre-processed" >&5
+  echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be 
pre-processed" >&2;}
+      echo '#include <asm/unistd.h>' > asm-unistd.h
+!   else
+      # The point of this preprocessing is to turn __NR_<syscall> into
+      # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
+      # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
+--- 18,24 ----
+      { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not 
be pre-processed" >&5
+  echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be 
pre-processed" >&2;}
+      echo '#include <asm/unistd.h>' > asm-unistd.h
+!   elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then
+      # The point of this preprocessing is to turn __NR_<syscall> into
+      # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
+      # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
+*************** BEGIN { print "#include <sgidefs.h>"; }
+*** 68,73 ****
+--- 68,75 ----
+  {
+       print;
+  }'
++   else
++     echo '#include <asm/unistd.h>' > asm-unistd.h
+    fi ;;
+  mips*)
+    rm -f asm-unistd.h
+Index: libc/sysdeps/unix/sysv/linux/mips/configure.in
+===================================================================
+RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/configure.in,v
+retrieving revision 1.6
+diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.6 configure.in
+*** libc/sysdeps/unix/sysv/linux/mips/configure.in     20 Jul 2004 16:35:29 
-0000      1.6
+--- libc/sysdeps/unix/sysv/linux/mips/configure.in     9 Nov 2004 21:14:19 
-0000
+*************** mips*64*)
+*** 18,24 ****
+    if test ! -f "$asm_unistd_h"; then
+      AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed])
+      echo '#include <asm/unistd.h>' > asm-unistd.h
+!   else
+      # The point of this preprocessing is to turn __NR_<syscall> into
+      # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
+      # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
+--- 18,24 ----
+    if test ! -f "$asm_unistd_h"; then
+      AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed])
+      echo '#include <asm/unistd.h>' > asm-unistd.h
+!   elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then
+      # The point of this preprocessing is to turn __NR_<syscall> into
+      # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
+      # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
+*************** BEGIN { print "#include <sgidefs.h>"; }
+*** 68,73 ****
+--- 68,75 ----
+  {
+       print;
+  }'
++   else
++     echo '#include <asm/unistd.h>' > asm-unistd.h
+    fi ;;
+  mips*)
+    rm -f asm-unistd.h
+Index: libc/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h
+===================================================================
+RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h,v
+retrieving revision 1.1
+diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.1 sysdep.h
+*** libc/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h   29 Mar 2003 
08:15:29 -0000      1.1
+--- libc/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h   9 Nov 2004 
21:14:19 -0000
+***************
+*** 1,36 ****
+- /* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+-    This file is part of the GNU C Library.
+- 
+-    The GNU C Library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+- 
+-    The GNU C Library 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
+-    Lesser General Public License for more details.
+- 
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with the GNU C Library; if not, write to the Free
+-    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-    02111-1307 USA.  */
+- 
+- #ifndef _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H
+- #define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1
+- 
+- /* There is some commonality.  */
+- #include <sysdeps/unix/sysv/linux/mips/mips32/sysdep.h>
+- 
+- /* For Linux we can use the system call table in the header file
+-      /usr/include/asm/unistd.h
+-    of the kernel.  But these symbols do not follow the SYS_* syntax
+-    so we have to redefine the `SYS_ify' macro here.  */
+- #undef SYS_ify
+- #ifdef __STDC__
+- # define SYS_ify(syscall_name)       __NR_O32_##syscall_name
+- #else
+- # define SYS_ify(syscall_name)       __NR_O32_/**/syscall_name
+- #endif
+- 
+- #endif /* linux/mips/mips32/kern64/sysdep.h */
+--- 0 ----
+Index: libc/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
+===================================================================
+RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h,v
+retrieving revision 1.4
+diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.4 sysdep.h
+*** libc/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h      18 Oct 2004 
05:16:08 -0000      1.4
+--- libc/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h      9 Nov 2004 
21:14:19 -0000
+*************** #define _LINUX_MIPS_SYSDEP_H 1
+*** 28,36 ****
+     so we have to redefine the `SYS_ify' macro here.  */
+  #undef SYS_ify
+  #ifdef __STDC__
+! # define SYS_ify(syscall_name)       __NR_N64_##syscall_name
+  #else
+! # define SYS_ify(syscall_name)       __NR_N64_/**/syscall_name
+  #endif
+  
+  #ifdef __ASSEMBLER__
+--- 28,36 ----
+     so we have to redefine the `SYS_ify' macro here.  */
+  #undef SYS_ify
+  #ifdef __STDC__
+! # define SYS_ify(syscall_name)       __NR_##syscall_name
+  #else
+! # define SYS_ify(syscall_name)       __NR_/**/syscall_name
+  #endif
+  
+  #ifdef __ASSEMBLER__


Property changes on: glibc-package/trunk/debian/patches/mips-bits-syscall.dpatch
___________________________________________________________________
Name: svn:executable
   + *


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to