40 lines
596 B
Bash
40 lines
596 B
Bash
|
#!/bin/sh
|
||
|
|
||
|
in="$1"
|
||
|
arch="$2"
|
||
|
|
||
|
syscall_macro() {
|
||
|
nr="$1"
|
||
|
name="$2"
|
||
|
|
||
|
echo " [$nr] = \"$name\","
|
||
|
}
|
||
|
|
||
|
emit() {
|
||
|
nr="$1"
|
||
|
entry="$2"
|
||
|
|
||
|
syscall_macro "$nr" "$entry"
|
||
|
}
|
||
|
|
||
|
echo "static const char *syscalltbl_${arch}[] = {"
|
||
|
|
||
|
sorted_table=$(mktemp /tmp/syscalltbl.XXXXXX)
|
||
|
grep '^[0-9]' "$in" | sort -n > $sorted_table
|
||
|
|
||
|
max_nr=0
|
||
|
while read nr abi name entry compat; do
|
||
|
if [ $nr -ge 512 ] ; then # discard compat sycalls
|
||
|
break
|
||
|
fi
|
||
|
|
||
|
emit "$nr" "$name"
|
||
|
max_nr=$nr
|
||
|
done < $sorted_table
|
||
|
|
||
|
rm -f $sorted_table
|
||
|
|
||
|
echo "};"
|
||
|
|
||
|
echo "#define SYSCALLTBL_${arch}_MAX_ID ${max_nr}"
|