summaryrefslogtreecommitdiff
path: root/packages/uclibc/uclibc-0.9.28/thumb-sysnum-h.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/uclibc/uclibc-0.9.28/thumb-sysnum-h.patch')
-rw-r--r--packages/uclibc/uclibc-0.9.28/thumb-sysnum-h.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/packages/uclibc/uclibc-0.9.28/thumb-sysnum-h.patch b/packages/uclibc/uclibc-0.9.28/thumb-sysnum-h.patch
new file mode 100644
index 0000000000..599691ecee
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/thumb-sysnum-h.patch
@@ -0,0 +1,45 @@
+--- uClibc-0.9.28/extra/scripts/gen_bits_syscall_h.sh.orig 2005-09-18 02:20:04.441119651 -0700
++++ uClibc-0.9.28/extra/scripts/gen_bits_syscall_h.sh 2005-09-18 03:17:58.287715035 -0700
+@@ -11,6 +11,37 @@
+ UNISTD_H_PATH=$TOPDIR/include/asm/unistd.h
+ INCLUDE_OPTS="-I$TOPDIR/include"
+
++# This test is added to avoid mangling the (variable) syscall base value on
++# ARM
++if echo "#if defined __arm__ || defined __thumb__
++xyzzy
++#endif" | $CC -E $INCLUDE_OPTS - | grep xyzzy >/dev/null
++then
++ echo '/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */
++#ifndef _BITS_SYSNUM_H
++#define _BITS_SYSNUM_H
++
++#ifndef _SYSCALL_H
++# error "Never use <bits/sysnum.h> directly; include <sys/syscall.h> instead."
++#endif'
++ # arm case, assume unistd.h conforms to the one in 2.6.x, if not
++ # go into a corner and sulk (fix this script) The sed rune below
++ # expects items of the form UCLIBC_foo at the start of the line
++ # for each syscall number, the arm syscalls all start with lower
++ # case alpha and the all-important __NR_SYSCALL_BASE does not...
++ sed -n -e '/__sys2/Q' -e '/^[ ]*#include/,${
++ s/^[ ]*#include.*$//
++ h
++ s/^[ ]*#define[ ]*__NR_\([a-z][A-Za-z0-9_]*\)[ ]*\(.*\)[ ]*$/#undef __NR_\1\
++#define SYS_\1 __NR_\1/p
++ g
++ p
++ }' $UNISTD_H_PATH
++ # i.e. this relies on the __sys2 definition coming after the last
++ # sys number define (and #include preceding all useful definitions)
++ echo '#endif'
++else
++# non-arm case
+ ( echo "#include \"$UNISTD_H_PATH\"" ;
+ $CC -E -dN $INCLUDE_OPTS $UNISTD_H_PATH | # needed to strip out any kernel-internal defines
+ sed -ne 's/^[ ]*#define[ ]*__NR_\([A-Za-z0-9_]*\).*/UCLIBC_\1 __NR_\1/gp'
+@@ -29,3 +60,4 @@
+ echo ;
+ echo "#endif" ;
+ )
++fi