diff --git a/gdb/syscalls/update-linux.sh b/gdb/syscalls/update-linux.sh
index e2af1a75cb5..da8082d6488 100755
--- a/gdb/syscalls/update-linux.sh
+++ b/gdb/syscalls/update-linux.sh
@@ -62,10 +62,15 @@ EOF
 
     echo '#include <sys/syscall.h>' \
 	| gcc -E - -dD "$@" \
-	| grep -E '#define __NR_' \
+	| grep -E '#define (__NR_|__NR3264_)' \
 	| while read -r line; do
-	name=$(echo "$line" | awk '{print $2}' | sed 's/^__NR_//')
-	nr=$(echo "$line" | awk '{print $3}')
+	line=$(echo "$line" | awk '$2 ~ "__NR" && $3 !~ "__NR3264_" {
+	     sub("^#define __NR(3264)?_", ""); print | "sort -k2 -n"}')
+	if [ -z "$line" ]; then
+		continue
+	fi
+	name=$(echo "$line" | awk '{print $1}')
+	nr=$(echo "$line" | awk '{print $2}')
 	echo "  <syscall name=\"$name\" number=\"$nr\"/>"
     done
 
