summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWeijie Gao2025-06-14 15:01:55 +0000
committerHauke Mehrtens2025-06-19 20:21:54 +0000
commitcde025d5baf32e62b485ef9f8ba1e835ba8ece0e (patch)
treeb6dca417b160619ddd0bb2efeed288aa5591ece6
parent59d22013f9dd38f60b0f953534601532dd429c28 (diff)
downloadprocd-cde025d5baf32e62b485ef9f8ba1e835ba8ece0e.tar.gz
fix generating syscall-names.h for loongarch64
The <bits/syscall.h> from musl loongarch64 arch contains some indirect syscall definitions: #define __NR3264_fcntl 25 #define __NR_fcntl __NR3264_fcntl This will result in incorrect contents generated by make_syscall_h_sh: [__NR3264_fcntl] = "fcntl", To fix this issue, all macros staring with __NR3264_ should be also copied to the generated syscall-names.h Signed-off-by: Weijie Gao <hackpascal@gmail.com>
-rwxr-xr-xmake_syscall_h.sh4
1 files changed, 4 insertions, 0 deletions
diff --git a/make_syscall_h.sh b/make_syscall_h.sh
index 17e3bc4..6e2161c 100755
--- a/make_syscall_h.sh
+++ b/make_syscall_h.sh
@@ -12,6 +12,10 @@ CC=$1
[ -n "$TARGET_CC_NOCACHE" ] && CC=$TARGET_CC_NOCACHE
echo "#include <asm/unistd.h>"
+
+# for loongarch __NR3264_* macros
+echo "#include <sys/syscall.h>" | ${CC} -E -dM - | grep '^#define __NR3264_[a-z0-9_]\+[ \t].*[0-9].*$'
+
echo "static const char *__syscall_names[] = {"
echo "#include <sys/syscall.h>" | ${CC} -E -dM - | grep '^#define __NR_[a-z0-9_]\+[ \t].*[0-9].*$' | \
LC_ALL=C sed -r -n -e 's/^\#define[ \t]+__NR_([a-z0-9_]+)[ \t]+([ ()+0-9a-zNR_LSYCABE]+)(.*)/ [\2] = "\1",/p'