diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2015-08-15 18:17:33 +0200 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2015-08-11 12:53:04 +0200 |
commit | 0da5bf2ff222d1a499172a6e09507388676b5a08 (patch) | |
tree | 456b0befdce65b97d880eae3f9344cfc98a089d6 | |
parent | 370b68a9c3514ecb2fb6b814ba58e4e41f4f26c0 (diff) | |
download | unitd-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-x | make_syscall_h.sh | 2 |
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 "};" |