Skip to content

Add auto-generation script for syscall mappings#1005

Open
celinehoang177 wants to merge 3 commits intomainfrom
auto-generate-syscall-mapping
Open

Add auto-generation script for syscall mappings#1005
celinehoang177 wants to merge 3 commits intomainfrom
auto-generate-syscall-mapping

Conversation

@celinehoang177
Copy link
Copy Markdown
Contributor

This PR introduces an automated script to generate syscall mapping constants from a single source of truth, eliminating the need for manual synchronization across multiple files. Closes #989.

What Changed

  • Added scripts/generate_syscall_mappings.py - Auto-generation script that parses syscall definitions from glibc's C header and generates Rust constants
  • Generated src/sysdefs/src/constants/syscall_const.rs - Full set of syscall constants for the Lind platform
  • Generated src/wasmtime/crates/lind-utils/src/lind_syscall_numbers.rs - Minimal set of syscalls for the Wasmtime runtime

Why

Previously, syscall numbers were manually copied and maintained in multiple places:

  • src/glibc/lind_syscall/lind_syscall_num.h (C header)
  • src/sysdefs/src/constants/syscall_const.rs (Rust)
  • src/wasmtime/crates/lind-utils/src/lind_syscall_numbers.rs (Minimal set)

This created synchronization issues and manual maintenance burden. The script provides a single source of truth (Linux x86_64 syscall table via glibc header) and auto-generates both files.

How to Use

Run the script from the workspace root:

python3 scripts/generate_syscall_mappings.py

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 6, 2026

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases197
Number of Successes196
Number of Failures1
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure1
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.045788s4.268621s
Success
chdir_getcwd.cSuccessNone0.047453s4.288385s
Success
chmod.cSuccessNone0.055034s4.302350s
Success
clock_gettime_highlevel.cSuccessNone0.117406s4.469701s
Success
clock_gettime_simple.cSuccessNone0.040772s4.319964s
Success
cloexec.cSuccessNone0.050133s3.986690s
Success
close.cSuccessNone0.057865s4.305165s
Success
creat_access.cSuccessNone0.049065s4.285160s
Success
doubleclose.cSuccessNone0.041282s3.894452s
Success
dup.cSuccessNone0.042779s4.294141s
Success
dup2.cSuccessNone0.047547s3.922320s
Success
dup3.cSuccessNone0.045965s4.289906s
Success
dupwrite.cSuccessNone0.049144s3.893885s
Success
etc_conf.cSuccessNone0.044270s4.275005s
Success
fchdir.cSuccessNone0.052395s4.323974s
Success
fchmod.cSuccessNone0.051247s4.315745s
Success
fcntl.cSuccessNone0.048952s4.320298s
Success
fdatasync.cSuccessNone0.047384s4.272302s
Success
filetest.cSuccessNone0.048297s3.901797s
Success
filetest1000.cSuccessNone0.056734s3.905436s
Success
flock.cSuccessNone0.056459s4.376790s
Success
fstat.cSuccessNone0.050749s4.289450s
Success
fstatfs.cSuccessNone0.043459s4.285654s
Success
fsync.cSuccessNone0.047958s4.268692s
Success
ftruncate.cSuccessNone0.053310s4.348529s
Success
getcwd.cSuccessNone0.044974s4.282726s
Success
getrandom.cSuccessNone0.048452s4.292795s
Success
ioctl.cSuccessNone0.051919s4.290838s
Success
link.cSuccessNone0.052341s4.321546s
Success
locale_test.cSuccessNone0.063434s6.104870s
Success
lseek.cSuccessNone0.056911s4.366251s
Success
mkdir_rmdir.cSuccessNone0.049172s4.296271s
Success
mkfifo_test.cSuccessNone0.054642s4.378302s
Success
mknod.cSuccessNone0.048839s4.341123s
Success
nocancel_io.cSuccessNone0.052653s5.496091s
Success
open.cSuccessNone0.043723s4.277486s
Success
openat.cSuccessNone0.044355s4.240226s
Success
path_conversion_safety.cSuccessNone0.053826s4.291543s
Success
pread_pwrite.cSuccessNone0.047645s4.288865s
Success
printf.cSuccessNone0.040656s3.862370s
Success
prlimit64.cSuccessNone0.042805s3.906247s
Success
read.cSuccessNone0.053610s4.268342s
Success
readbytes.cSuccessNone0.045606s3.882165s
Success
readlink.cSuccessNone0.049204s4.314066s
Success
readlinkat.cSuccessNone0.051173s4.283983s
Success
readv_writev_test.cSuccessNone0.050872s4.293931s
Success
rename.cSuccessNone0.051501s4.313031s
Success
sc-writev.cSuccessNone0.050454s4.271583s
Success
stat.cSuccessNone0.050668s4.280328s
Success
statfs.cSuccessNone0.043638s4.241567s
Success
sync_file_range.cSuccessNone0.046693s4.266791s
Success
timespec_time_t_compat.cSuccessNone0.046166s5.538413s
Success
truncate.cSuccessNone0.050027s4.327770s
Success
unlink.cSuccessNone0.051952s4.319691s
Success
unlinkat.cSuccessNone0.051808s4.327419s
Success
write.cSuccessNone0.042815s3.897738s
Success
writeloop.cSuccessNone0.052313s3.877188s
Success
writepartial.cSuccessNone0.049676s3.885821s
Success
writev.cSuccessNone0.050566s4.330608s
Success
Math Tests
math_link_smoke.cSuccessNone0.054258s3.946738s
Success
math_tests.cSuccessNone0.056526s4.088513s
Success
Memory Tests
brk.cSuccessNone0.057573s4.282490s
Success
fork_large_memory.cSuccessNone0.079144s4.443427s
Success
malloc.cSuccessNone0.045352s3.869698s
Success
malloc_large.cSuccessNone0.045324s4.265452s
Success
memcpy.cSuccessNone0.044093s3.872851s
Success
memory_error_test.cSuccessNone0.050958s4.307053s
Success
mmap.cSuccessNone0.042197s4.273595s
Success
mmap_aligned.cSuccessNone0.043720s4.277361s
Success
mmap_complicated.cSuccessNone0.048638s4.323424s
Success
mmap_file.cSuccessNone0.049850s4.287655s
Success
mmap_shared.cSuccessNone0.048764s4.320913s
Success
mmaptest.cSuccessNone0.045752s4.714637s
Success
mprotect.cSuccessNone0.043680s4.257168s
Success
mprotect_boundary.cSuccessNone0.043275s4.272657s
Success
mprotect_end_region.cSuccessNone0.043143s4.298520s
Success
mprotect_middle_region.cSuccessNone0.044086s4.324035s
Success
mprotect_multiple_times.cSuccessNone0.044648s4.271595s
Success
mprotect_same_value.cSuccessNone0.042255s4.267953s
Success
mprotect_spanning_regions.cSuccessNone0.044451s4.284417s
Success
sbrk.cSuccessNone0.045047s4.425228s
Success
segfault.cSuccessNone0.051409s4.348979s
Success
shm.cSuccessNone0.048763s4.345800s
Success
shmtest.cSuccessNone0.043980s4.272569s
Success
tcache_test.cFailureUnknown_Failure0.053040s4.688558s
tcache reuse: yes
thread_malloc_sequential.cSuccessNone0.050709s4.438130s
Success
vtable.cSuccessNone0.055897s3.925193s
Success
Networking Tests
accept4.cSuccessNone0.055219s4.334138s
Success
dns_resolve_test.cSuccessNone0.050797s6.032574s
Success
dnstest.cSuccessNone0.049818s4.278160s
Success
epoll_edge_triggered.cSuccessNone0.207761s4.501159s
Success
epollcreate1.cSuccessNone0.051792s4.308222s
Success
error_handling_net.cSuccessNone0.057547s4.363756s
Success
getaddrinfo_test.cSuccessNone0.053276s6.049039s
Success
getaddrinfo_unspec.cSuccessNone0.049640s6.055771s
Success
gethostname.cSuccessNone0.043431s3.893489s
Success
getifaddrs.cSuccessNone0.051537s4.399163s
Success
getsockname.cSuccessNone0.051735s4.307102s
Success
getsockopt.cSuccessNone0.054307s4.317829s
Success
ipv6_basic.cSuccessNone0.054464s4.344956s
Success
makepipe.cSuccessNone0.043715s3.897309s
Success
nonblocking_eagain.cSuccessNone0.054926s4.351305s
Success
pipe.cSuccessNone0.053623s4.348131s
Success
pipe2.cSuccessNone0.051572s4.374605s
Success
pipeinput.cSuccessNone0.053310s4.367533s
Success
pipeinput2.cSuccessNone0.053119s4.344024s
Success
pipeonestring.cSuccessNone0.053314s4.356008s
Success
pipepong.cSuccessNone0.052120s4.366483s
Success
pipewrite.cSuccessNone0.046145s4.284339s
Success
poll.cSuccessNone0.051204s4.338658s
Success
recvfrom-sendto.cSuccessNone0.051817s4.316414s
Success
sendmsg_recvmsg_test.cSuccessNone0.051794s4.322427s
Success
serverclient.cSuccessNone0.050886s3.916652s
Success
shutdown.cSuccessNone0.053447s3.950055s
Success
shutdown_fork.cSuccessNone0.051827s4.355907s
Success
simple-select.cSuccessNone0.052675s4.348703s
Success
simple_epoll.cSuccessNone0.050460s4.294394s
Success
socket.cSuccessNone0.049596s3.944625s
Success
socket_cloexec.cSuccessNone0.049315s4.286102s
Success
socket_options_advanced.cSuccessNone0.055748s4.337288s
Success
socketepoll.cSuccessNone0.051043s3.934726s
Success
socketpair.cSuccessNone0.049325s4.362391s
Success
socketselect.cSuccessNone0.049742s4.286188s
Success
udp_send_recv.cSuccessNone0.157748s4.511408s
Success
uds-getsockname.cSuccessNone0.051280s4.286113s
Success
uds-nb-select.cSuccessNone2.058650s6.526571s
Success
uds-serverclient.cSuccessNone0.056670s4.403198s
Success
uds-socketselect.cSuccessNone0.052650s3.924185s
Success
writev_socket.cSuccessNone0.053621s4.311853s
Success
Process Tests
barrier_test.cSuccessNone0.048355s4.517932s
Success
chain_thread.cSuccessNone1.051528s5.430661s
Success
ctor_syscall_test.cSuccessNone0.041914s4.337116s
Success
cxa_atexit_test.cSuccessNone0.046469s3.946320s
Success
execve_shebang.cSuccessNone0.050274s4.305929s
Success
exit.cSuccessNone0.047603s3.891741s
Success
exit_failure.cSuccessNone0.051974s4.081179s
Success
exit_group_thread.cSuccessNone0.056004s4.554021s
Success
flockfile_test.cSuccessNone0.053378s4.613383s
Success
fork2malloc.cSuccessNone0.052156s4.360520s
Success
fork_select.cSuccessNone0.049316s4.336940s
Success
fork_simple.cSuccessNone0.049988s4.316783s
Success
fork_syscall.cSuccessNone0.057237s4.424611s
Success
fork_tls_ctype.cSuccessNone0.052962s4.366985s
Success
forkandopen.cSuccessNone0.051003s4.376890s
Success
forkdup.cSuccessNone0.052134s3.981802s
Success
forkexecuid.cSuccessNone0.049452s4.461050s
Success
forkexecv-arg.cSuccessNone0.050219s4.426897s
Success
forkexecv.cSuccessNone0.049664s4.482129s
Success
forkfiles.cSuccessNone0.050732s4.330337s
Success
forkmalloc.cSuccessNone0.052031s4.360594s
Success
forknodup.cSuccessNone0.054060s4.437238s
Success
function-ptr.cSuccessNone0.044776s4.260550s
Success
getegid_syscall.cSuccessNone0.052008s4.369476s
Success
getgid_syscall.cSuccessNone0.051707s4.422817s
Success
getpid.cSuccessNone0.043186s4.276866s
Success
getpid_syscall.cSuccessNone0.051952s4.439408s
Success
getppid.cSuccessNone0.050435s4.341689s
Success
getppid_syscall.cSuccessNone0.055002s4.389495s
Success
getuid.cSuccessNone0.053443s4.321061s
Success
getuid_syscall.cSuccessNone0.049830s4.372534s
Success
hello-arg.cSuccessNone0.043267s3.970160s
Success
hello.cSuccessNone0.041237s3.879151s
Success
longjmp.cSuccessNone0.042619s3.916200s
Success
mutex.cSuccessNone2.055123s6.583693s
Success
printf_deadlock_smoke.cSuccessNone0.058344s4.647943s
Success
printf_thread_test.cSuccessNone0.049832s4.552052s
Success
sem_forks.cSuccessNone0.052547s4.398036s
Success
setsid.cSuccessNone0.043533s3.913063s
Success
template.cSuccessNone0.052082s4.407665s
Success
test_exec_nofork.cSuccessNone0.051099s4.436123s
Success
test_unlink_open_file.cSuccessNone0.045067s3.882024s
Success
thread-test.cSuccessNone0.045136s4.422513s
Success
thread.cSuccessNone0.044587s4.449279s
Success
thread_cageid_race.cSuccessNone0.046411s4.418898s
Success
tls_test.cSuccessNone0.050624s4.460443s
Success
uname.cSuccessNone0.050074s4.374409s
Success
wait.cSuccessNone2.047000s5.957876s
Success
waitpid_anychild.cSuccessNone0.050352s4.361323s
Success
waitpid_syscall.cSuccessNone1.050267s5.361708s
Success
waitpid_wnohang.cSuccessNone0.050866s3.951252s
Success
Signal Tests
alarm.cSuccessNone7.052659s10.994542s
Success
eintr_fork_signal.cSuccessNone1.052700s5.357517s
Success
kill.cSuccessNone1.061343s5.382484s
Success
setitimer.cSuccessNone7.051095s10.992419s
Success
sigalrm.cSuccessNone2.051555s5.956758s
Success
sigchld.cSuccessNone1.052241s4.977970s
Success
signal-fork.cSuccessNone4.051418s7.969501s
Success
signal-simple.cSuccessNone0.059498s3.948798s
Success
signal_SIGCHLD.cSuccessNone0.048955s4.381753s
Success
signal_fork.cSuccessNone0.047334s4.338732s
Success
signal_int_ignored.cSuccessNone2.050850s6.439493s
Success
signal_kill_cleanup.cSuccessNone1.047937s5.369963s
Success
signal_procmask.cSuccessNone0.047601s4.321535s
Success
signal_recursive.cSuccessNone0.045559s3.954645s
Success
signal_sa_mask.cSuccessNone0.046579s3.960869s
Success
sigpipe.cSuccessNone1.052779s5.368897s
Success
sigprocmask.cSuccessNone1.049375s4.930140s
Success
Fail Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
mmap-negative1.cSuccessNone0.105101s4.539177s
Success
mmap-negative2.cSuccessNone0.109456s4.683381s
Success
Signal Tests
signal_resethand.cSuccessNone1.053078s5.060689s
Success

@vidyalakshmir
Copy link
Copy Markdown
Contributor

We should also be invoking the script during the build phase, essentially before lind-boot and glibc build. @Yaxuan-w What are your thoughts on this?

Copy link
Copy Markdown
Member

@Yaxuan-w Yaxuan-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vidyalakshmir I'm fine with either way, but need to include this step and script usage in docs/

Comment thread scripts/generate_syscall_mappings.py Outdated
Comment thread scripts/generate_syscall_mappings.py Outdated
Comment thread scripts/generate_syscall_mappings.py Outdated
Comment thread scripts/generate_syscall_mappings.py Outdated
@Yaxuan-w
Copy link
Copy Markdown
Member

Yaxuan-w commented Apr 8, 2026

Also we need to include syscall num for REGISTER_HANDLER_SYSCALL/COPY_DATA_BETWEEN_CAGES_SYSCALL/COPY_HANDLER_TABLE_TO_CAGE_SYSCALL

@celinehoang177 celinehoang177 force-pushed the auto-generate-syscall-mapping branch from 20e0f51 to 2d76a1e Compare April 15, 2026 04:08
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total11
Success11
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|interpose-exec] Handling function ptr: 2 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 2 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 2
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|interpose-fork] Handling function ptr: 2 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 2 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 3
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 2
[Grate|interpose-register] Handling function ptr: 2 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 2 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 2 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 2
[Grate|geteuid] Handling function ptr: 2 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases199
Number of Successes199
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.046514s0.182604s
Success
chdir_getcwd.cSuccessNone0.046945s0.144084s
Success
chmod.cSuccessNone0.051776s0.150685s
Success
clock_gettime_highlevel.cSuccessNone0.117588s0.313350s
Success
clock_gettime_simple.cSuccessNone0.041244s0.125286s
Success
cloexec.cSuccessNone0.050633s0.214672s
Success
close.cSuccessNone0.057336s0.164816s
Success
creat_access.cSuccessNone0.049971s0.146019s
Success
doubleclose.cSuccessNone0.041682s0.121986s
Success
dup.cSuccessNone0.043211s0.140471s
Success
dup2.cSuccessNone0.048197s0.142084s
Success
dup3.cSuccessNone0.046126s0.143714s
Success
dupwrite.cSuccessNone0.049909s0.135795s
Success
etc_conf.cSuccessNone0.045011s0.143862s
Success
fchdir.cSuccessNone0.052126s0.153532s
Success
fchmod.cSuccessNone0.051679s0.152537s
Success
fcntl.cSuccessNone0.049792s0.147083s
Success
fdatasync.cSuccessNone0.049731s0.136303s
Success
filetest.cSuccessNone0.048900s0.136571s
Success
filetest1000.cSuccessNone0.057141s0.147893s
Success
flock.cSuccessNone0.057976s0.181593s
Success
fstat.cSuccessNone0.051223s0.149678s
Success
fstatfs.cSuccessNone0.044966s0.134065s
Success
fsync.cSuccessNone0.048824s0.135599s
Success
ftruncate.cSuccessNone0.053474s0.266778s
Success
getcwd.cSuccessNone0.045442s0.133017s
Success
getrandom.cSuccessNone0.049244s0.142308s
Success
ioctl.cSuccessNone0.052374s0.143777s
Success
link.cSuccessNone0.052522s0.201774s
Success
locale_test.cSuccessNone0.063952s0.628914s
Success
lseek.cSuccessNone0.054165s0.259480s
Success
mkdir_rmdir.cSuccessNone0.050488s0.144506s
Success
mkfifo_test.cSuccessNone0.055102s0.190182s
Success
mknod.cSuccessNone0.048923s0.150389s
Success
nocancel_io.cSuccessNone0.052986s0.172089s
Success
open.cSuccessNone0.045255s0.127566s
Success
openat.cSuccessNone0.045270s0.136246s
Success
path_conversion_safety.cSuccessNone0.053591s0.172482s
Success
pread_pwrite.cSuccessNone0.047201s0.151644s
Success
preadv_pwritev.cSuccessNone0.051928s0.160914s
Success
printf.cSuccessNone0.041625s0.120476s
Success
prlimit64.cSuccessNone0.043315s0.126751s
Success
read.cSuccessNone0.050316s0.145602s
Success
readbytes.cSuccessNone0.045952s0.130296s
Success
readdir_basic.cSuccessNone0.053398s0.166678s
Success
readlink.cSuccessNone0.049934s0.144484s
Success
readlinkat.cSuccessNone0.051483s0.151857s
Success
readv_writev_test.cSuccessNone0.051599s0.155106s
Success
rename.cSuccessNone0.052198s0.144637s
Success
sc-writev.cSuccessNone0.047860s0.139735s
Success
stat.cSuccessNone0.050389s0.147418s
Success
statfs.cSuccessNone0.044095s0.131874s
Success
sync_file_range.cSuccessNone0.046986s0.139525s
Success
timespec_time_t_compat.cSuccessNone0.047718s0.130994s
Success
truncate.cSuccessNone0.051372s0.158724s
Success
unlink.cSuccessNone0.052676s0.194223s
Success
unlinkat.cSuccessNone0.052214s0.160575s
Success
write.cSuccessNone0.043077s0.122532s
Success
writeloop.cSuccessNone0.052354s0.134029s
Success
writepartial.cSuccessNone0.050841s0.131171s
Success
writev.cSuccessNone0.051294s0.150227s
Success
Math Tests
math_link_smoke.cSuccessNone0.052915s0.130861s
Success
math_tests.cSuccessNone0.057300s0.163442s
Success
Memory Tests
brk.cSuccessNone0.047518s0.134060s
Success
fork_large_memory.cSuccessNone0.078713s0.394965s
Success
malloc.cSuccessNone0.045532s0.125353s
Success
malloc_large.cSuccessNone0.045861s0.132522s
Success
memcpy.cSuccessNone0.045603s0.133973s
Success
memory_error_test.cSuccessNone0.051270s0.166565s
Success
mmap.cSuccessNone0.042638s0.132531s
Success
mmap_aligned.cSuccessNone0.044595s0.143333s
Success
mmap_complicated.cSuccessNone0.050625s0.154165s
Success
mmap_file.cSuccessNone0.050535s0.143729s
Success
mmap_shared.cSuccessNone0.048747s0.149293s
Success
mmaptest.cSuccessNone0.045434s0.136163s
Success
mprotect.cSuccessNone0.044891s0.131133s
Success
mprotect_boundary.cSuccessNone0.044232s0.144578s
Success
mprotect_end_region.cSuccessNone0.043370s0.135652s
Success
mprotect_middle_region.cSuccessNone0.043048s0.139668s
Success
mprotect_multiple_times.cSuccessNone0.043506s0.138343s
Success
mprotect_same_value.cSuccessNone0.043159s0.136001s
Success
mprotect_spanning_regions.cSuccessNone0.044622s0.153400s
Success
sbrk.cSuccessNone0.044922s0.128348s
Success
segfault.cSuccessNone0.054922s0.163114s
Success
shm.cSuccessNone0.050422s0.151554s
Success
shmtest.cSuccessNone0.044252s0.135304s
Success
thread_malloc_sequential.cSuccessNone0.051355s0.160997s
Success
vtable.cSuccessNone0.055171s0.148623s
Success
Networking Tests
accept4.cSuccessNone0.055286s0.163692s
Success
dns_resolve_test.cSuccessNone0.049500s0.140470s
Success
dnstest.cSuccessNone0.051335s0.150871s
Success
epoll_edge_triggered.cSuccessNone0.207760s0.490094s
Success
epollcreate1.cSuccessNone0.051146s0.148628s
Success
error_handling_net.cSuccessNone0.058042s0.262220s
Success
getaddrinfo_test.cSuccessNone0.056240s0.188764s
Success
getaddrinfo_unspec.cSuccessNone0.094250s0.212665s
Success
gethostname.cSuccessNone0.044410s0.125429s
Success
getifaddrs.cSuccessNone0.051331s0.144728s
Success
getsockname.cSuccessNone0.056362s0.147062s
Success
getsockopt.cSuccessNone0.056634s0.196187s
Success
ipv6_basic.cSuccessNone0.055318s0.197620s
Success
makepipe.cSuccessNone0.043022s0.121336s
Success
nonblocking_eagain.cSuccessNone0.055123s0.209409s
Success
pipe.cSuccessNone0.053071s0.153537s
Success
pipe2.cSuccessNone0.052243s0.143069s
Success
pipeinput.cSuccessNone0.053384s0.164662s
Success
pipeinput2.cSuccessNone0.054177s0.165850s
Success
pipeonestring.cSuccessNone0.053570s0.164642s
Success
pipepong.cSuccessNone0.052527s0.167089s
Success
pipewrite.cSuccessNone0.046196s0.142579s
Success
poll.cSuccessNone0.050695s0.138796s
Success
recvfrom-sendto.cSuccessNone0.052272s0.156858s
Success
sendmsg_recvmsg_test.cSuccessNone0.052022s0.154714s
Success
serverclient.cSuccessNone0.051192s0.146412s
Success
shutdown.cSuccessNone0.052990s0.148746s
Success
shutdown_fork.cSuccessNone0.051692s0.153406s
Success
simple-select.cSuccessNone0.053299s0.168787s
Success
simple_epoll.cSuccessNone0.050988s0.149561s
Success
socket.cSuccessNone0.049520s0.135953s
Success
socket_cloexec.cSuccessNone0.049952s0.136625s
Success
socket_options_advanced.cSuccessNone0.056829s0.219461s
Success
socketepoll.cSuccessNone0.050054s0.141572s
Success
socketpair.cSuccessNone0.049035s0.147351s
Success
socketselect.cSuccessNone0.049975s0.146175s
Success
udp_send_recv.cSuccessNone0.158497s0.313620s
Success
uds-getsockname.cSuccessNone0.051596s0.141367s
Success
uds-nb-select.cSuccessNone2.059773s2.217299s
Success
uds-serverclient.cSuccessNone0.056232s0.183516s
Success
uds-socketselect.cSuccessNone0.051331s0.145440s
Success
writev_socket.cSuccessNone0.054479s0.181361s
Success
Process Tests
barrier_test.cSuccessNone0.049398s0.150135s
Success
chain_thread.cSuccessNone1.051847s1.154636s
Success
ctor_syscall_test.cSuccessNone0.041252s0.123816s
Success
cxa_atexit_test.cSuccessNone0.047011s0.127796s
Success
execve_shebang.cSuccessNone0.050336s0.141342s
Success
exit.cSuccessNone0.048342s0.127547s
Success
exit_failure.cSuccessNone0.049766s0.139722s
Success
exit_group_thread.cSuccessNone0.051706s0.150730s
Success
flockfile_test.cSuccessNone0.050673s0.167552s
Success
fork2malloc.cSuccessNone0.051680s0.146510s
Success
fork_select.cSuccessNone0.049751s0.155756s
Success
fork_simple.cSuccessNone0.048296s0.138327s
Success
fork_syscall.cSuccessNone0.055691s0.294764s
Success
fork_tls_ctype.cSuccessNone0.053038s0.171508s
Success
forkandopen.cSuccessNone0.052359s0.164485s
Success
forkdup.cSuccessNone0.054287s0.164453s
Success
forkexecuid.cSuccessNone0.047837s0.218115s
Success
forkexecv-arg.cSuccessNone0.048988s0.195892s
Success
forkexecv.cSuccessNone0.046736s0.192413s
Success
forkfiles.cSuccessNone0.051428s0.159296s
Success
forkmalloc.cSuccessNone0.059270s0.144411s
Success
forknodup.cSuccessNone0.051832s0.160241s
Success
function-ptr.cSuccessNone0.045461s0.130462s
Success
getegid_syscall.cSuccessNone0.050943s0.263980s
Success
getgid_syscall.cSuccessNone0.051604s0.275112s
Success
getpid.cSuccessNone0.043359s0.125148s
Success
getpid_syscall.cSuccessNone0.053235s0.285872s
Success
getppid.cSuccessNone0.050834s0.146890s
Success
getppid_syscall.cSuccessNone0.053443s0.239776s
Success
getuid.cSuccessNone0.050771s0.137107s
Success
getuid_syscall.cSuccessNone0.049432s0.187412s
Success
hello-arg.cSuccessNone0.041532s0.128429s
Success
hello.cSuccessNone0.040808s0.120636s
Success
longjmp.cSuccessNone0.042621s0.129946s
Success
mutex.cSuccessNone2.053739s2.158692s
Success
printf_deadlock_smoke.cSuccessNone0.059068s0.188467s
Success
printf_thread_test.cSuccessNone0.048646s0.156537s
Success
sem_forks.cSuccessNone0.053417s0.161332s
Success
setsid.cSuccessNone0.043264s0.125066s
Success
template.cSuccessNone0.050662s0.159863s
Success
test_exec_nofork.cSuccessNone0.049251s0.194158s
Success
test_unlink_open_file.cSuccessNone0.045546s0.127611s
Success
thread-test.cSuccessNone0.045330s0.135488s
Success
thread.cSuccessNone0.045394s0.135034s
Success
thread_cageid_race.cSuccessNone0.046949s0.191161s
Success
tls_test.cSuccessNone0.048556s0.150909s
Success
uname.cSuccessNone0.043649s0.125759s
Success
wait.cSuccessNone2.047266s2.147980s
Success
waitpid_anychild.cSuccessNone0.050404s0.145480s
Success
waitpid_syscall.cSuccessNone1.050729s1.182739s
Success
waitpid_wnohang.cSuccessNone0.051107s0.145145s
Success
Signal Tests
alarm.cSuccessNone7.049981s7.167670s
Success
eintr_fork_signal.cSuccessNone1.054679s1.169138s
Success
kill.cSuccessNone1.052822s1.149988s
Success
setitimer.cSuccessNone7.050607s7.176704s
Success
sigalrm.cSuccessNone2.051313s2.157191s
Success
sigaltstack.cSuccessNone0.054124s0.153258s
Success
sigchld.cSuccessNone1.053193s1.151367s
Success
signal-fork.cSuccessNone4.053453s4.160624s
Success
signal-simple.cSuccessNone0.052290s0.144629s
Success
signal_SIGCHLD.cSuccessNone0.049307s0.148434s
Success
signal_fork.cSuccessNone0.048578s0.156105s
Success
signal_int_ignored.cSuccessNone2.051571s2.155164s
Success
signal_kill_cleanup.cSuccessNone1.049568s1.146666s
Success
signal_procmask.cSuccessNone0.045641s0.143106s
Success
signal_recursive.cSuccessNone0.046465s0.143067s
Success
signal_sa_mask.cSuccessNone0.045685s0.135019s
Success
sigpipe.cSuccessNone1.053279s1.169488s
Success
sigprocmask.cSuccessNone1.050783s1.153226s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.042349s0.125640s
Success
Memory Tests
mmap-negative1.cSuccessNone0.140654s0.131621s
Success
mmap-negative2.cSuccessNone0.109992s0.137589s
Success
Signal Tests
signal_resethand.cSuccessNone1.050786s1.154314s
Success

from pathlib import Path


def parse_c_header(header_path: str) -> dict[str, int]:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems not including lind specific syscall num?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Automated generation of system call mapping

3 participants