summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <kraj@mvista.com>2008-07-10 00:12:29 +0000
committerKhem Raj <kraj@mvista.com>2008-07-10 00:12:29 +0000
commit431377ede96b5e8a84c231366cbb8b6667675a3f (patch)
treed09ebe4766222f8569596fbe9f83ec4bbaae55f0
parentc776700c71250f0666f5f23ba198f6c3d03974c6 (diff)
downloaduClibc-alpine-431377ede96b5e8a84c231366cbb8b6667675a3f.tar.bz2
uClibc-alpine-431377ede96b5e8a84c231366cbb8b6667675a3f.tar.xz
Handle system call names like __ARM_NR_set_tls
-rwxr-xr-xextra/scripts/gen_bits_syscall_h.sh17
1 files changed, 11 insertions, 6 deletions
diff --git a/extra/scripts/gen_bits_syscall_h.sh b/extra/scripts/gen_bits_syscall_h.sh
index c0b4c25f5..d4adb0fad 100755
--- a/extra/scripts/gen_bits_syscall_h.sh
+++ b/extra/scripts/gen_bits_syscall_h.sh
@@ -22,11 +22,16 @@ case $CC in
*) CC_SYSNUM_ARGS="-dN" ;;
esac
+# Most syscall numbers have names like '__NR_open', which become names
+# like 'SYS_open'. Some of the ARM syscalls have names like
+# '__ARM_NR_set_tls', which we transform into names like
+# 'SYS_ARM_set_tls'.
+
( echo "#include <asm/unistd.h>";
echo "#include <asm/unistd.h>" |
$CC -E $CC_SYSNUM_ARGS $INCLUDE_OPTS - |
- sed -ne 's/^[ ]*#define[ ]*__NR_\([A-Za-z0-9_]*\).*/UCLIBC_\1 __NR_\1/gp' \
- -e 's/^[ ]*#undef[ ]*__NR_\([A-Za-z0-9_]*\).*/UNDEFUCLIBC_\1 __NR_\1/gp' # needed to strip out any kernel-internal defines
+ sed -ne 's/^[ ]*#define[ ]*__\([A-Za-z0-9_]*\)NR_\([A-Za-z0-9_]*\).*/UCLIBC_\1NR_\2 __\1NR_\2/gp' \
+ -e 's/^[ ]*#undef[ ]*__\([A-Za-z0-9_]*\)NR_\([A-Za-z0-9_]*\).*/UNDEFUCLIBC_\1NR_\2 __\1NR_\2/gp' # needed to strip out any kernel-internal defines
) |
$CC -E $INCLUDE_OPTS - |
( echo "/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */" ;
@@ -37,10 +42,10 @@ $CC -E $INCLUDE_OPTS - |
echo "#ifndef _SYSCALL_H" ;
echo "# error \"Never use <bits/sysnum.h> directly; include <sys/syscall.h> instead.\"" ;
echo "#endif" ; echo ;
- sed -ne 's/^UCLIBC_\([A-Za-z0-9_]*\) *\(.*\)/#undef __NR_\1\
-#define __NR_\1 \2\
-#define SYS_\1 __NR_\1/gp' \
- -e 's/^UNDEFUCLIBC_\([A-Za-z0-9_]*\).*/#undef __NR_\1/gp'
+ sed -ne 's/^UCLIBC_\([A-Za-z0-9_]*\)NR_\([A-Za-z0-9_]*\) *\(.*\)/#undef __\1NR_\2\
+#define __\1NR_\2 \3\
+#define SYS_\1\2 __\1NR_\2/gp' \
+ -e 's/^UNDEFUCLIBC_\([A-Za-z0-9_]*\)NR_\([A-Za-z0-9_]*\).*/#undef __\1NR_\2/gp'
echo ;
echo "#endif" ;
)