summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2015-08-15 18:17:33 +0200
committerJohn Crispin <blogic@openwrt.org>2015-08-11 12:53:04 +0200
commit0da5bf2ff222d1a499172a6e09507388676b5a08 (patch)
tree456b0befdce65b97d880eae3f9344cfc98a089d6
parent370b68a9c3514ecb2fb6b814ba58e4e41f4f26c0 (diff)
downloadunitd-0da5bf2ff222d1a499172a6e09507388676b5a08.tar
unitd-0da5bf2ff222d1a499172a6e09507388676b5a08.zip
fix generating syscall-names.h
Sometimes the syscall number is not defined with a number but with an offset to an other syscall and then make_syscall_h.sh created some broken header file. For example the bit/syscall.h from musl for i386 has this: #define __NR_timer_create 259 #define __NR_timer_settime (__NR_timer_create+1) With this patch the resulting array looks like this: [259] = "timer_create", [(__NR_timer_create+1)] = "timer_settime", This fixes this bug from OpenWrt: https://dev.openwrt.org/ticket/20195 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rwxr-xr-xmake_syscall_h.sh2
1 files changed, 1 insertions, 1 deletions
diff --git a/make_syscall_h.sh b/make_syscall_h.sh
index 57333fd..3363bc7 100755
--- a/make_syscall_h.sh
+++ b/make_syscall_h.sh
@@ -14,5 +14,5 @@ CC=$1
echo "#include <asm/unistd.h>"
echo "static const char *syscall_names[] = {"
echo "#include <sys/syscall.h>" | ${CC} -E -dM - | grep '^#define __NR_' | \
- LC_ALL=C sed -r -n -e 's/^\#define[ \t]+__NR_([a-z0-9_]+)[ \t]+([ ()+0-9NR_Linux]+)(.*)/ [\2] = "\1",/p'
+ LC_ALL=C sed -r -n -e 's/^\#define[ \t]+__NR_([a-z0-9_]+)[ \t]+([ ()+0-9a-zNR_Linux]+)(.*)/ [\2] = "\1",/p'
echo "};"