From 0da5bf2ff222d1a499172a6e09507388676b5a08 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 15 Aug 2015 18:17:33 +0200 Subject: [PATCH] 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 --- make_syscall_h.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 "};" -- 2.25.1