scripts: check duplicated syscall number in syscall table

Currently, syscall{hdr,tbl}.sh sorts the entire syscall table, but you
can assume it is already sorted by the syscall number.

The generated syscall table does not work if the same syscall number
appears twice. Check it in the script.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
Masahiro Yamada 2021-07-05 15:06:54 +09:00
parent a0e781a2a3
commit c6a3a81d19
2 changed files with 7 additions and 2 deletions

View File

@ -69,7 +69,7 @@ guard=_UAPI_ASM_$(basename "$outfile" |
sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
-e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g') -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g')
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+$abis" "$infile" | sort -n | { grep -E "^[0-9A-Fa-fXx]+[[:space:]]+$abis" "$infile" | {
echo "#ifndef $guard" echo "#ifndef $guard"
echo "#define $guard" echo "#define $guard"
echo echo

View File

@ -52,10 +52,15 @@ outfile="$2"
nxt=0 nxt=0
grep -E "^[0-9]+[[:space:]]+$abis" "$infile" | sort -n | { grep -E "^[0-9]+[[:space:]]+$abis" "$infile" | {
while read nr abi name native compat ; do while read nr abi name native compat ; do
if [ $nxt -gt $nr ]; then
echo "error: $infile: syscall table is not sorted or duplicates the same syscall number" >&2
exit 1
fi
while [ $nxt -lt $nr ]; do while [ $nxt -lt $nr ]; do
echo "__SYSCALL($nxt, sys_ni_syscall)" echo "__SYSCALL($nxt, sys_ni_syscall)"
nxt=$((nxt + 1)) nxt=$((nxt + 1))