arctic/generate_handle_syscalls.sh
2024-01-03 19:06:22 -05:00

28 lines
656 B
Bash
Executable file

#!/bin/bash
if [ -e src/arctic/handle_syscalls.nim ]; then
exit 0
fi
if [ ! -e syscalls.json ]; then
curl 'https://syscalls.mebeim.net/db/x86/64/x64/v6.6/table.json' > syscalls.json
fi
cat <<EOF > src/arctic/handle_syscalls.nim
import types
import memory
proc syscall(number: clong): clong {.importcpp: "syscall(@)", header: "<unistd.h>", varargs.}
template handle_syscall*(state: var ArcticState, number: int64) =
case number:
EOF
jq -r -f generate_handle_syscalls.jq < syscalls.json >> src/arctic/handle_syscalls.nim
cat <<EOF >> src/arctic/handle_syscalls.nim
else:
# TODO: invalid syscall
discard
EOF