28 lines
656 B
Bash
Executable file
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
|