You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Addedscripts/generate_syscall_mappings.py - Auto-generation script that parses syscall definitions from glibc's C header and generates Rust constants
Generatedsrc/sysdefs/src/constants/syscall_const.rs - Full set of syscall constants for the Lind platform
Generatedsrc/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:
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.
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
STDOUT:
pass
STDERR:
simple-tests/cpdata_grate.c
Success
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.c
Success
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.c
Success
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
Metric
Count
Total Test Cases
197
Number of Successes
196
Number of Failures
1
Number of Compilation Failure Native
0
Number of Runtime Failure Native
0
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
1
Number of C Compiler and Wasm Output mismatch
0
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 Case
Status
Error Type
Native Time
Wasm Time
Output
File Tests
chartests.c
Success
None
0.045788s
4.268621s
Success
chdir_getcwd.c
Success
None
0.047453s
4.288385s
Success
chmod.c
Success
None
0.055034s
4.302350s
Success
clock_gettime_highlevel.c
Success
None
0.117406s
4.469701s
Success
clock_gettime_simple.c
Success
None
0.040772s
4.319964s
Success
cloexec.c
Success
None
0.050133s
3.986690s
Success
close.c
Success
None
0.057865s
4.305165s
Success
creat_access.c
Success
None
0.049065s
4.285160s
Success
doubleclose.c
Success
None
0.041282s
3.894452s
Success
dup.c
Success
None
0.042779s
4.294141s
Success
dup2.c
Success
None
0.047547s
3.922320s
Success
dup3.c
Success
None
0.045965s
4.289906s
Success
dupwrite.c
Success
None
0.049144s
3.893885s
Success
etc_conf.c
Success
None
0.044270s
4.275005s
Success
fchdir.c
Success
None
0.052395s
4.323974s
Success
fchmod.c
Success
None
0.051247s
4.315745s
Success
fcntl.c
Success
None
0.048952s
4.320298s
Success
fdatasync.c
Success
None
0.047384s
4.272302s
Success
filetest.c
Success
None
0.048297s
3.901797s
Success
filetest1000.c
Success
None
0.056734s
3.905436s
Success
flock.c
Success
None
0.056459s
4.376790s
Success
fstat.c
Success
None
0.050749s
4.289450s
Success
fstatfs.c
Success
None
0.043459s
4.285654s
Success
fsync.c
Success
None
0.047958s
4.268692s
Success
ftruncate.c
Success
None
0.053310s
4.348529s
Success
getcwd.c
Success
None
0.044974s
4.282726s
Success
getrandom.c
Success
None
0.048452s
4.292795s
Success
ioctl.c
Success
None
0.051919s
4.290838s
Success
link.c
Success
None
0.052341s
4.321546s
Success
locale_test.c
Success
None
0.063434s
6.104870s
Success
lseek.c
Success
None
0.056911s
4.366251s
Success
mkdir_rmdir.c
Success
None
0.049172s
4.296271s
Success
mkfifo_test.c
Success
None
0.054642s
4.378302s
Success
mknod.c
Success
None
0.048839s
4.341123s
Success
nocancel_io.c
Success
None
0.052653s
5.496091s
Success
open.c
Success
None
0.043723s
4.277486s
Success
openat.c
Success
None
0.044355s
4.240226s
Success
path_conversion_safety.c
Success
None
0.053826s
4.291543s
Success
pread_pwrite.c
Success
None
0.047645s
4.288865s
Success
printf.c
Success
None
0.040656s
3.862370s
Success
prlimit64.c
Success
None
0.042805s
3.906247s
Success
read.c
Success
None
0.053610s
4.268342s
Success
readbytes.c
Success
None
0.045606s
3.882165s
Success
readlink.c
Success
None
0.049204s
4.314066s
Success
readlinkat.c
Success
None
0.051173s
4.283983s
Success
readv_writev_test.c
Success
None
0.050872s
4.293931s
Success
rename.c
Success
None
0.051501s
4.313031s
Success
sc-writev.c
Success
None
0.050454s
4.271583s
Success
stat.c
Success
None
0.050668s
4.280328s
Success
statfs.c
Success
None
0.043638s
4.241567s
Success
sync_file_range.c
Success
None
0.046693s
4.266791s
Success
timespec_time_t_compat.c
Success
None
0.046166s
5.538413s
Success
truncate.c
Success
None
0.050027s
4.327770s
Success
unlink.c
Success
None
0.051952s
4.319691s
Success
unlinkat.c
Success
None
0.051808s
4.327419s
Success
write.c
Success
None
0.042815s
3.897738s
Success
writeloop.c
Success
None
0.052313s
3.877188s
Success
writepartial.c
Success
None
0.049676s
3.885821s
Success
writev.c
Success
None
0.050566s
4.330608s
Success
Math Tests
math_link_smoke.c
Success
None
0.054258s
3.946738s
Success
math_tests.c
Success
None
0.056526s
4.088513s
Success
Memory Tests
brk.c
Success
None
0.057573s
4.282490s
Success
fork_large_memory.c
Success
None
0.079144s
4.443427s
Success
malloc.c
Success
None
0.045352s
3.869698s
Success
malloc_large.c
Success
None
0.045324s
4.265452s
Success
memcpy.c
Success
None
0.044093s
3.872851s
Success
memory_error_test.c
Success
None
0.050958s
4.307053s
Success
mmap.c
Success
None
0.042197s
4.273595s
Success
mmap_aligned.c
Success
None
0.043720s
4.277361s
Success
mmap_complicated.c
Success
None
0.048638s
4.323424s
Success
mmap_file.c
Success
None
0.049850s
4.287655s
Success
mmap_shared.c
Success
None
0.048764s
4.320913s
Success
mmaptest.c
Success
None
0.045752s
4.714637s
Success
mprotect.c
Success
None
0.043680s
4.257168s
Success
mprotect_boundary.c
Success
None
0.043275s
4.272657s
Success
mprotect_end_region.c
Success
None
0.043143s
4.298520s
Success
mprotect_middle_region.c
Success
None
0.044086s
4.324035s
Success
mprotect_multiple_times.c
Success
None
0.044648s
4.271595s
Success
mprotect_same_value.c
Success
None
0.042255s
4.267953s
Success
mprotect_spanning_regions.c
Success
None
0.044451s
4.284417s
Success
sbrk.c
Success
None
0.045047s
4.425228s
Success
segfault.c
Success
None
0.051409s
4.348979s
Success
shm.c
Success
None
0.048763s
4.345800s
Success
shmtest.c
Success
None
0.043980s
4.272569s
Success
tcache_test.c
Failure
Unknown_Failure
0.053040s
4.688558s
tcache reuse: yes
thread_malloc_sequential.c
Success
None
0.050709s
4.438130s
Success
vtable.c
Success
None
0.055897s
3.925193s
Success
Networking Tests
accept4.c
Success
None
0.055219s
4.334138s
Success
dns_resolve_test.c
Success
None
0.050797s
6.032574s
Success
dnstest.c
Success
None
0.049818s
4.278160s
Success
epoll_edge_triggered.c
Success
None
0.207761s
4.501159s
Success
epollcreate1.c
Success
None
0.051792s
4.308222s
Success
error_handling_net.c
Success
None
0.057547s
4.363756s
Success
getaddrinfo_test.c
Success
None
0.053276s
6.049039s
Success
getaddrinfo_unspec.c
Success
None
0.049640s
6.055771s
Success
gethostname.c
Success
None
0.043431s
3.893489s
Success
getifaddrs.c
Success
None
0.051537s
4.399163s
Success
getsockname.c
Success
None
0.051735s
4.307102s
Success
getsockopt.c
Success
None
0.054307s
4.317829s
Success
ipv6_basic.c
Success
None
0.054464s
4.344956s
Success
makepipe.c
Success
None
0.043715s
3.897309s
Success
nonblocking_eagain.c
Success
None
0.054926s
4.351305s
Success
pipe.c
Success
None
0.053623s
4.348131s
Success
pipe2.c
Success
None
0.051572s
4.374605s
Success
pipeinput.c
Success
None
0.053310s
4.367533s
Success
pipeinput2.c
Success
None
0.053119s
4.344024s
Success
pipeonestring.c
Success
None
0.053314s
4.356008s
Success
pipepong.c
Success
None
0.052120s
4.366483s
Success
pipewrite.c
Success
None
0.046145s
4.284339s
Success
poll.c
Success
None
0.051204s
4.338658s
Success
recvfrom-sendto.c
Success
None
0.051817s
4.316414s
Success
sendmsg_recvmsg_test.c
Success
None
0.051794s
4.322427s
Success
serverclient.c
Success
None
0.050886s
3.916652s
Success
shutdown.c
Success
None
0.053447s
3.950055s
Success
shutdown_fork.c
Success
None
0.051827s
4.355907s
Success
simple-select.c
Success
None
0.052675s
4.348703s
Success
simple_epoll.c
Success
None
0.050460s
4.294394s
Success
socket.c
Success
None
0.049596s
3.944625s
Success
socket_cloexec.c
Success
None
0.049315s
4.286102s
Success
socket_options_advanced.c
Success
None
0.055748s
4.337288s
Success
socketepoll.c
Success
None
0.051043s
3.934726s
Success
socketpair.c
Success
None
0.049325s
4.362391s
Success
socketselect.c
Success
None
0.049742s
4.286188s
Success
udp_send_recv.c
Success
None
0.157748s
4.511408s
Success
uds-getsockname.c
Success
None
0.051280s
4.286113s
Success
uds-nb-select.c
Success
None
2.058650s
6.526571s
Success
uds-serverclient.c
Success
None
0.056670s
4.403198s
Success
uds-socketselect.c
Success
None
0.052650s
3.924185s
Success
writev_socket.c
Success
None
0.053621s
4.311853s
Success
Process Tests
barrier_test.c
Success
None
0.048355s
4.517932s
Success
chain_thread.c
Success
None
1.051528s
5.430661s
Success
ctor_syscall_test.c
Success
None
0.041914s
4.337116s
Success
cxa_atexit_test.c
Success
None
0.046469s
3.946320s
Success
execve_shebang.c
Success
None
0.050274s
4.305929s
Success
exit.c
Success
None
0.047603s
3.891741s
Success
exit_failure.c
Success
None
0.051974s
4.081179s
Success
exit_group_thread.c
Success
None
0.056004s
4.554021s
Success
flockfile_test.c
Success
None
0.053378s
4.613383s
Success
fork2malloc.c
Success
None
0.052156s
4.360520s
Success
fork_select.c
Success
None
0.049316s
4.336940s
Success
fork_simple.c
Success
None
0.049988s
4.316783s
Success
fork_syscall.c
Success
None
0.057237s
4.424611s
Success
fork_tls_ctype.c
Success
None
0.052962s
4.366985s
Success
forkandopen.c
Success
None
0.051003s
4.376890s
Success
forkdup.c
Success
None
0.052134s
3.981802s
Success
forkexecuid.c
Success
None
0.049452s
4.461050s
Success
forkexecv-arg.c
Success
None
0.050219s
4.426897s
Success
forkexecv.c
Success
None
0.049664s
4.482129s
Success
forkfiles.c
Success
None
0.050732s
4.330337s
Success
forkmalloc.c
Success
None
0.052031s
4.360594s
Success
forknodup.c
Success
None
0.054060s
4.437238s
Success
function-ptr.c
Success
None
0.044776s
4.260550s
Success
getegid_syscall.c
Success
None
0.052008s
4.369476s
Success
getgid_syscall.c
Success
None
0.051707s
4.422817s
Success
getpid.c
Success
None
0.043186s
4.276866s
Success
getpid_syscall.c
Success
None
0.051952s
4.439408s
Success
getppid.c
Success
None
0.050435s
4.341689s
Success
getppid_syscall.c
Success
None
0.055002s
4.389495s
Success
getuid.c
Success
None
0.053443s
4.321061s
Success
getuid_syscall.c
Success
None
0.049830s
4.372534s
Success
hello-arg.c
Success
None
0.043267s
3.970160s
Success
hello.c
Success
None
0.041237s
3.879151s
Success
longjmp.c
Success
None
0.042619s
3.916200s
Success
mutex.c
Success
None
2.055123s
6.583693s
Success
printf_deadlock_smoke.c
Success
None
0.058344s
4.647943s
Success
printf_thread_test.c
Success
None
0.049832s
4.552052s
Success
sem_forks.c
Success
None
0.052547s
4.398036s
Success
setsid.c
Success
None
0.043533s
3.913063s
Success
template.c
Success
None
0.052082s
4.407665s
Success
test_exec_nofork.c
Success
None
0.051099s
4.436123s
Success
test_unlink_open_file.c
Success
None
0.045067s
3.882024s
Success
thread-test.c
Success
None
0.045136s
4.422513s
Success
thread.c
Success
None
0.044587s
4.449279s
Success
thread_cageid_race.c
Success
None
0.046411s
4.418898s
Success
tls_test.c
Success
None
0.050624s
4.460443s
Success
uname.c
Success
None
0.050074s
4.374409s
Success
wait.c
Success
None
2.047000s
5.957876s
Success
waitpid_anychild.c
Success
None
0.050352s
4.361323s
Success
waitpid_syscall.c
Success
None
1.050267s
5.361708s
Success
waitpid_wnohang.c
Success
None
0.050866s
3.951252s
Success
Signal Tests
alarm.c
Success
None
7.052659s
10.994542s
Success
eintr_fork_signal.c
Success
None
1.052700s
5.357517s
Success
kill.c
Success
None
1.061343s
5.382484s
Success
setitimer.c
Success
None
7.051095s
10.992419s
Success
sigalrm.c
Success
None
2.051555s
5.956758s
Success
sigchld.c
Success
None
1.052241s
4.977970s
Success
signal-fork.c
Success
None
4.051418s
7.969501s
Success
signal-simple.c
Success
None
0.059498s
3.948798s
Success
signal_SIGCHLD.c
Success
None
0.048955s
4.381753s
Success
signal_fork.c
Success
None
0.047334s
4.338732s
Success
signal_int_ignored.c
Success
None
2.050850s
6.439493s
Success
signal_kill_cleanup.c
Success
None
1.047937s
5.369963s
Success
signal_procmask.c
Success
None
0.047601s
4.321535s
Success
signal_recursive.c
Success
None
0.045559s
3.954645s
Success
signal_sa_mask.c
Success
None
0.046579s
3.960869s
Success
sigpipe.c
Success
None
1.052779s
5.368897s
Success
sigprocmask.c
Success
None
1.049375s
4.930140s
Success
Fail Tests
Summary
Metric
Count
Total Test Cases
3
Number of Successes
3
Number of Failures
0
Number of Compilation Failure Native
0
Number of Runtime Failure Native
0
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
0
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)
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
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.c
Success
STDOUT:
pass
STDERR:
simple-tests/cpdata_grate.c
Success
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.c
Success
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.c
Success
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
Metric
Count
Total Test Cases
199
Number of Successes
199
Number of Failures
0
Number of Compilation Failure Native
0
Number of Runtime Failure Native
0
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
0
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 Case
Status
Error Type
Native Time
Wasm Time
Output
File Tests
chartests.c
Success
None
0.046514s
0.182604s
Success
chdir_getcwd.c
Success
None
0.046945s
0.144084s
Success
chmod.c
Success
None
0.051776s
0.150685s
Success
clock_gettime_highlevel.c
Success
None
0.117588s
0.313350s
Success
clock_gettime_simple.c
Success
None
0.041244s
0.125286s
Success
cloexec.c
Success
None
0.050633s
0.214672s
Success
close.c
Success
None
0.057336s
0.164816s
Success
creat_access.c
Success
None
0.049971s
0.146019s
Success
doubleclose.c
Success
None
0.041682s
0.121986s
Success
dup.c
Success
None
0.043211s
0.140471s
Success
dup2.c
Success
None
0.048197s
0.142084s
Success
dup3.c
Success
None
0.046126s
0.143714s
Success
dupwrite.c
Success
None
0.049909s
0.135795s
Success
etc_conf.c
Success
None
0.045011s
0.143862s
Success
fchdir.c
Success
None
0.052126s
0.153532s
Success
fchmod.c
Success
None
0.051679s
0.152537s
Success
fcntl.c
Success
None
0.049792s
0.147083s
Success
fdatasync.c
Success
None
0.049731s
0.136303s
Success
filetest.c
Success
None
0.048900s
0.136571s
Success
filetest1000.c
Success
None
0.057141s
0.147893s
Success
flock.c
Success
None
0.057976s
0.181593s
Success
fstat.c
Success
None
0.051223s
0.149678s
Success
fstatfs.c
Success
None
0.044966s
0.134065s
Success
fsync.c
Success
None
0.048824s
0.135599s
Success
ftruncate.c
Success
None
0.053474s
0.266778s
Success
getcwd.c
Success
None
0.045442s
0.133017s
Success
getrandom.c
Success
None
0.049244s
0.142308s
Success
ioctl.c
Success
None
0.052374s
0.143777s
Success
link.c
Success
None
0.052522s
0.201774s
Success
locale_test.c
Success
None
0.063952s
0.628914s
Success
lseek.c
Success
None
0.054165s
0.259480s
Success
mkdir_rmdir.c
Success
None
0.050488s
0.144506s
Success
mkfifo_test.c
Success
None
0.055102s
0.190182s
Success
mknod.c
Success
None
0.048923s
0.150389s
Success
nocancel_io.c
Success
None
0.052986s
0.172089s
Success
open.c
Success
None
0.045255s
0.127566s
Success
openat.c
Success
None
0.045270s
0.136246s
Success
path_conversion_safety.c
Success
None
0.053591s
0.172482s
Success
pread_pwrite.c
Success
None
0.047201s
0.151644s
Success
preadv_pwritev.c
Success
None
0.051928s
0.160914s
Success
printf.c
Success
None
0.041625s
0.120476s
Success
prlimit64.c
Success
None
0.043315s
0.126751s
Success
read.c
Success
None
0.050316s
0.145602s
Success
readbytes.c
Success
None
0.045952s
0.130296s
Success
readdir_basic.c
Success
None
0.053398s
0.166678s
Success
readlink.c
Success
None
0.049934s
0.144484s
Success
readlinkat.c
Success
None
0.051483s
0.151857s
Success
readv_writev_test.c
Success
None
0.051599s
0.155106s
Success
rename.c
Success
None
0.052198s
0.144637s
Success
sc-writev.c
Success
None
0.047860s
0.139735s
Success
stat.c
Success
None
0.050389s
0.147418s
Success
statfs.c
Success
None
0.044095s
0.131874s
Success
sync_file_range.c
Success
None
0.046986s
0.139525s
Success
timespec_time_t_compat.c
Success
None
0.047718s
0.130994s
Success
truncate.c
Success
None
0.051372s
0.158724s
Success
unlink.c
Success
None
0.052676s
0.194223s
Success
unlinkat.c
Success
None
0.052214s
0.160575s
Success
write.c
Success
None
0.043077s
0.122532s
Success
writeloop.c
Success
None
0.052354s
0.134029s
Success
writepartial.c
Success
None
0.050841s
0.131171s
Success
writev.c
Success
None
0.051294s
0.150227s
Success
Math Tests
math_link_smoke.c
Success
None
0.052915s
0.130861s
Success
math_tests.c
Success
None
0.057300s
0.163442s
Success
Memory Tests
brk.c
Success
None
0.047518s
0.134060s
Success
fork_large_memory.c
Success
None
0.078713s
0.394965s
Success
malloc.c
Success
None
0.045532s
0.125353s
Success
malloc_large.c
Success
None
0.045861s
0.132522s
Success
memcpy.c
Success
None
0.045603s
0.133973s
Success
memory_error_test.c
Success
None
0.051270s
0.166565s
Success
mmap.c
Success
None
0.042638s
0.132531s
Success
mmap_aligned.c
Success
None
0.044595s
0.143333s
Success
mmap_complicated.c
Success
None
0.050625s
0.154165s
Success
mmap_file.c
Success
None
0.050535s
0.143729s
Success
mmap_shared.c
Success
None
0.048747s
0.149293s
Success
mmaptest.c
Success
None
0.045434s
0.136163s
Success
mprotect.c
Success
None
0.044891s
0.131133s
Success
mprotect_boundary.c
Success
None
0.044232s
0.144578s
Success
mprotect_end_region.c
Success
None
0.043370s
0.135652s
Success
mprotect_middle_region.c
Success
None
0.043048s
0.139668s
Success
mprotect_multiple_times.c
Success
None
0.043506s
0.138343s
Success
mprotect_same_value.c
Success
None
0.043159s
0.136001s
Success
mprotect_spanning_regions.c
Success
None
0.044622s
0.153400s
Success
sbrk.c
Success
None
0.044922s
0.128348s
Success
segfault.c
Success
None
0.054922s
0.163114s
Success
shm.c
Success
None
0.050422s
0.151554s
Success
shmtest.c
Success
None
0.044252s
0.135304s
Success
thread_malloc_sequential.c
Success
None
0.051355s
0.160997s
Success
vtable.c
Success
None
0.055171s
0.148623s
Success
Networking Tests
accept4.c
Success
None
0.055286s
0.163692s
Success
dns_resolve_test.c
Success
None
0.049500s
0.140470s
Success
dnstest.c
Success
None
0.051335s
0.150871s
Success
epoll_edge_triggered.c
Success
None
0.207760s
0.490094s
Success
epollcreate1.c
Success
None
0.051146s
0.148628s
Success
error_handling_net.c
Success
None
0.058042s
0.262220s
Success
getaddrinfo_test.c
Success
None
0.056240s
0.188764s
Success
getaddrinfo_unspec.c
Success
None
0.094250s
0.212665s
Success
gethostname.c
Success
None
0.044410s
0.125429s
Success
getifaddrs.c
Success
None
0.051331s
0.144728s
Success
getsockname.c
Success
None
0.056362s
0.147062s
Success
getsockopt.c
Success
None
0.056634s
0.196187s
Success
ipv6_basic.c
Success
None
0.055318s
0.197620s
Success
makepipe.c
Success
None
0.043022s
0.121336s
Success
nonblocking_eagain.c
Success
None
0.055123s
0.209409s
Success
pipe.c
Success
None
0.053071s
0.153537s
Success
pipe2.c
Success
None
0.052243s
0.143069s
Success
pipeinput.c
Success
None
0.053384s
0.164662s
Success
pipeinput2.c
Success
None
0.054177s
0.165850s
Success
pipeonestring.c
Success
None
0.053570s
0.164642s
Success
pipepong.c
Success
None
0.052527s
0.167089s
Success
pipewrite.c
Success
None
0.046196s
0.142579s
Success
poll.c
Success
None
0.050695s
0.138796s
Success
recvfrom-sendto.c
Success
None
0.052272s
0.156858s
Success
sendmsg_recvmsg_test.c
Success
None
0.052022s
0.154714s
Success
serverclient.c
Success
None
0.051192s
0.146412s
Success
shutdown.c
Success
None
0.052990s
0.148746s
Success
shutdown_fork.c
Success
None
0.051692s
0.153406s
Success
simple-select.c
Success
None
0.053299s
0.168787s
Success
simple_epoll.c
Success
None
0.050988s
0.149561s
Success
socket.c
Success
None
0.049520s
0.135953s
Success
socket_cloexec.c
Success
None
0.049952s
0.136625s
Success
socket_options_advanced.c
Success
None
0.056829s
0.219461s
Success
socketepoll.c
Success
None
0.050054s
0.141572s
Success
socketpair.c
Success
None
0.049035s
0.147351s
Success
socketselect.c
Success
None
0.049975s
0.146175s
Success
udp_send_recv.c
Success
None
0.158497s
0.313620s
Success
uds-getsockname.c
Success
None
0.051596s
0.141367s
Success
uds-nb-select.c
Success
None
2.059773s
2.217299s
Success
uds-serverclient.c
Success
None
0.056232s
0.183516s
Success
uds-socketselect.c
Success
None
0.051331s
0.145440s
Success
writev_socket.c
Success
None
0.054479s
0.181361s
Success
Process Tests
barrier_test.c
Success
None
0.049398s
0.150135s
Success
chain_thread.c
Success
None
1.051847s
1.154636s
Success
ctor_syscall_test.c
Success
None
0.041252s
0.123816s
Success
cxa_atexit_test.c
Success
None
0.047011s
0.127796s
Success
execve_shebang.c
Success
None
0.050336s
0.141342s
Success
exit.c
Success
None
0.048342s
0.127547s
Success
exit_failure.c
Success
None
0.049766s
0.139722s
Success
exit_group_thread.c
Success
None
0.051706s
0.150730s
Success
flockfile_test.c
Success
None
0.050673s
0.167552s
Success
fork2malloc.c
Success
None
0.051680s
0.146510s
Success
fork_select.c
Success
None
0.049751s
0.155756s
Success
fork_simple.c
Success
None
0.048296s
0.138327s
Success
fork_syscall.c
Success
None
0.055691s
0.294764s
Success
fork_tls_ctype.c
Success
None
0.053038s
0.171508s
Success
forkandopen.c
Success
None
0.052359s
0.164485s
Success
forkdup.c
Success
None
0.054287s
0.164453s
Success
forkexecuid.c
Success
None
0.047837s
0.218115s
Success
forkexecv-arg.c
Success
None
0.048988s
0.195892s
Success
forkexecv.c
Success
None
0.046736s
0.192413s
Success
forkfiles.c
Success
None
0.051428s
0.159296s
Success
forkmalloc.c
Success
None
0.059270s
0.144411s
Success
forknodup.c
Success
None
0.051832s
0.160241s
Success
function-ptr.c
Success
None
0.045461s
0.130462s
Success
getegid_syscall.c
Success
None
0.050943s
0.263980s
Success
getgid_syscall.c
Success
None
0.051604s
0.275112s
Success
getpid.c
Success
None
0.043359s
0.125148s
Success
getpid_syscall.c
Success
None
0.053235s
0.285872s
Success
getppid.c
Success
None
0.050834s
0.146890s
Success
getppid_syscall.c
Success
None
0.053443s
0.239776s
Success
getuid.c
Success
None
0.050771s
0.137107s
Success
getuid_syscall.c
Success
None
0.049432s
0.187412s
Success
hello-arg.c
Success
None
0.041532s
0.128429s
Success
hello.c
Success
None
0.040808s
0.120636s
Success
longjmp.c
Success
None
0.042621s
0.129946s
Success
mutex.c
Success
None
2.053739s
2.158692s
Success
printf_deadlock_smoke.c
Success
None
0.059068s
0.188467s
Success
printf_thread_test.c
Success
None
0.048646s
0.156537s
Success
sem_forks.c
Success
None
0.053417s
0.161332s
Success
setsid.c
Success
None
0.043264s
0.125066s
Success
template.c
Success
None
0.050662s
0.159863s
Success
test_exec_nofork.c
Success
None
0.049251s
0.194158s
Success
test_unlink_open_file.c
Success
None
0.045546s
0.127611s
Success
thread-test.c
Success
None
0.045330s
0.135488s
Success
thread.c
Success
None
0.045394s
0.135034s
Success
thread_cageid_race.c
Success
None
0.046949s
0.191161s
Success
tls_test.c
Success
None
0.048556s
0.150909s
Success
uname.c
Success
None
0.043649s
0.125759s
Success
wait.c
Success
None
2.047266s
2.147980s
Success
waitpid_anychild.c
Success
None
0.050404s
0.145480s
Success
waitpid_syscall.c
Success
None
1.050729s
1.182739s
Success
waitpid_wnohang.c
Success
None
0.051107s
0.145145s
Success
Signal Tests
alarm.c
Success
None
7.049981s
7.167670s
Success
eintr_fork_signal.c
Success
None
1.054679s
1.169138s
Success
kill.c
Success
None
1.052822s
1.149988s
Success
setitimer.c
Success
None
7.050607s
7.176704s
Success
sigalrm.c
Success
None
2.051313s
2.157191s
Success
sigaltstack.c
Success
None
0.054124s
0.153258s
Success
sigchld.c
Success
None
1.053193s
1.151367s
Success
signal-fork.c
Success
None
4.053453s
4.160624s
Success
signal-simple.c
Success
None
0.052290s
0.144629s
Success
signal_SIGCHLD.c
Success
None
0.049307s
0.148434s
Success
signal_fork.c
Success
None
0.048578s
0.156105s
Success
signal_int_ignored.c
Success
None
2.051571s
2.155164s
Success
signal_kill_cleanup.c
Success
None
1.049568s
1.146666s
Success
signal_procmask.c
Success
None
0.045641s
0.143106s
Success
signal_recursive.c
Success
None
0.046465s
0.143067s
Success
signal_sa_mask.c
Success
None
0.045685s
0.135019s
Success
sigpipe.c
Success
None
1.053279s
1.169488s
Success
sigprocmask.c
Success
None
1.050783s
1.153226s
Success
Fail Tests
Summary
Metric
Count
Total Test Cases
4
Number of Successes
4
Number of Failures
0
Number of Compilation Failure Native
0
Number of Runtime Failure Native
0
Number of Segmentation Fault Native
0
Number of Timeout During Native
0
Number of Lind Wasm Compile Failure
0
Number of Lind Wasm Runtime Failure
0
Number of Lind Wasm Segmentation Failure
0
Number of Timeout During Lind Wasm run
0
Number of Unknown Failure
0
Number of C Compiler and Wasm Output mismatch
0
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)
The reason will be displayed to describe this comment to others. Learn more.
This seems not including lind specific syscall num?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
scripts/generate_syscall_mappings.py- Auto-generation script that parses syscall definitions from glibc's C header and generates Rust constantssrc/sysdefs/src/constants/syscall_const.rs- Full set of syscall constants for the Lind platformsrc/wasmtime/crates/lind-utils/src/lind_syscall_numbers.rs- Minimal set of syscalls for the Wasmtime runtimeWhy
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: