From: Hauke Mehrtens Date: Sat, 15 Aug 2015 16:17:33 +0000 (+0200) Subject: fix generating syscall-names.h X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=commitdiff_plain;h=0da5bf2ff222d1a499172a6e09507388676b5a08 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 --- 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 " echo "static const char *syscall_names[] = {" echo "#include " | ${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 "};"