Skip to content

host add-wasm-export tool source code#990

Open
qianxichen233 wants to merge 2 commits intomainfrom
add-wasm-export
Open

host add-wasm-export tool source code#990
qianxichen233 wants to merge 2 commits intomainfrom
add-wasm-export

Conversation

@qianxichen233
Copy link
Copy Markdown
Contributor

Custom tool to add wasm exports to existing wasm binary, used as part of the dynamic loading support

This PR only uploads source code, compiled binary are uploaded together with dynamic loading PR: #911

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total10
Success10
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/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 Successes197
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.046907s4.334903s
Success
chdir_getcwd.cSuccessNone0.048248s4.333223s
Success
chmod.cSuccessNone0.055940s4.340459s
Success
clock_gettime_highlevel.cSuccessNone0.122044s4.534602s
Success
clock_gettime_simple.cSuccessNone0.043358s4.306441s
Success
cloexec.cSuccessNone0.051405s4.007895s
Success
close.cSuccessNone0.058334s4.352828s
Success
creat_access.cSuccessNone0.051331s4.362407s
Success
doubleclose.cSuccessNone0.042749s3.924179s
Success
dup.cSuccessNone0.043067s4.285865s
Success
dup2.cSuccessNone0.049099s3.963080s
Success
dup3.cSuccessNone0.048202s4.332773s
Success
dupwrite.cSuccessNone0.053454s3.916302s
Success
etc_conf.cSuccessNone0.046326s4.328702s
Success
fchdir.cSuccessNone0.054644s4.387606s
Success
fchmod.cSuccessNone0.052519s4.350330s
Success
fcntl.cSuccessNone0.049233s4.298775s
Success
fdatasync.cSuccessNone0.048483s4.332990s
Success
filetest.cSuccessNone0.050317s3.910789s
Success
filetest1000.cSuccessNone0.058586s3.949877s
Success
flock.cSuccessNone0.059260s4.424945s
Success
fstat.cSuccessNone0.053105s4.305710s
Success
fstatfs.cSuccessNone0.046244s4.314578s
Success
fsync.cSuccessNone0.051184s4.331772s
Success
ftruncate.cSuccessNone0.054111s4.367446s
Success
getcwd.cSuccessNone0.046504s4.313833s
Success
getrandom.cSuccessNone0.049535s4.335787s
Success
ioctl.cSuccessNone0.054063s4.328290s
Success
link.cSuccessNone0.054677s4.354520s
Success
locale_test.cSuccessNone0.064086s6.132840s
Success
lseek.cSuccessNone0.055199s4.354022s
Success
mkdir_rmdir.cSuccessNone0.052057s4.363585s
Success
mkfifo_test.cSuccessNone0.057162s4.410365s
Success
mknod.cSuccessNone0.049137s4.326739s
Success
nocancel_io.cSuccessNone0.054865s5.552133s
Success
open.cSuccessNone0.046960s4.313559s
Success
openat.cSuccessNone0.046144s4.329438s
Success
path_conversion_safety.cSuccessNone0.056371s4.348885s
Success
pread_pwrite.cSuccessNone0.048744s4.333986s
Success
printf.cSuccessNone0.043286s3.917753s
Success
prlimit64.cSuccessNone0.044172s3.941949s
Success
read.cSuccessNone0.053270s4.353706s
Success
readbytes.cSuccessNone0.050094s3.950829s
Success
readlink.cSuccessNone0.050280s4.315320s
Success
readlinkat.cSuccessNone0.053288s4.316773s
Success
readv_writev_test.cSuccessNone0.054840s4.389322s
Success
rename.cSuccessNone0.054704s4.342226s
Success
sc-writev.cSuccessNone0.052920s4.295057s
Success
stat.cSuccessNone0.052802s4.347314s
Success
statfs.cSuccessNone0.048100s4.339689s
Success
sync_file_range.cSuccessNone0.048813s4.319362s
Success
timespec_time_t_compat.cSuccessNone0.048105s5.607255s
Success
truncate.cSuccessNone0.051768s4.314874s
Success
unlink.cSuccessNone0.055258s4.362338s
Success
unlinkat.cSuccessNone0.052730s4.327723s
Success
write.cSuccessNone0.044705s3.913652s
Success
writeloop.cSuccessNone0.056438s3.939093s
Success
writepartial.cSuccessNone0.052762s3.928100s
Success
writev.cSuccessNone0.054687s4.344077s
Success
Math Tests
math_link_smoke.cSuccessNone0.055587s3.992946s
Success
math_tests.cSuccessNone0.059844s4.126853s
Success
Memory Tests
brk.cSuccessNone0.048827s4.298531s
Success
fork_large_memory.cSuccessNone0.081766s4.525107s
Success
malloc.cSuccessNone0.047300s3.944870s
Success
malloc_large.cSuccessNone0.046763s4.377343s
Success
memcpy.cSuccessNone0.046933s3.911554s
Success
memory_error_test.cSuccessNone0.051851s4.313813s
Success
mmap.cSuccessNone0.043309s4.284977s
Success
mmap_aligned.cSuccessNone0.047339s4.372191s
Success
mmap_complicated.cSuccessNone0.051204s4.433188s
Success
mmap_file.cSuccessNone0.050914s4.290831s
Success
mmap_shared.cSuccessNone0.051030s4.355391s
Success
mmaptest.cSuccessNone0.046393s4.319731s
Success
mprotect.cSuccessNone0.046602s4.366568s
Success
mprotect_boundary.cSuccessNone0.047723s4.355562s
Success
mprotect_end_region.cSuccessNone0.045076s4.409468s
Success
mprotect_middle_region.cSuccessNone0.045503s4.341300s
Success
mprotect_multiple_times.cSuccessNone0.045680s4.313014s
Success
mprotect_same_value.cSuccessNone0.044697s4.421008s
Success
mprotect_spanning_regions.cSuccessNone0.047659s4.333958s
Success
sbrk.cSuccessNone0.048340s4.336313s
Success
segfault.cSuccessNone0.052865s4.388534s
Success
shm.cSuccessNone0.052589s4.360411s
Success
shmtest.cSuccessNone0.044797s4.299431s
Success
tcache_test.cSuccessNone0.054941s4.567730s
Success
thread_malloc_sequential.cSuccessNone0.054638s4.476353s
Success
vtable.cSuccessNone0.058503s3.987951s
Success
Networking Tests
accept4.cSuccessNone0.059130s4.405168s
Success
dns_resolve_test.cSuccessNone0.051716s6.046911s
Success
dnstest.cSuccessNone0.050444s4.290995s
Success
epoll_edge_triggered.cSuccessNone0.208426s4.532757s
Success
epollcreate1.cSuccessNone0.054444s4.305959s
Success
error_handling_net.cSuccessNone0.060211s4.356461s
Success
getaddrinfo_test.cSuccessNone0.054954s6.005288s
Success
getaddrinfo_unspec.cSuccessNone0.063718s5.978469s
Success
gethostname.cSuccessNone0.044452s3.921347s
Success
getifaddrs.cSuccessNone0.054540s4.428938s
Success
getsockname.cSuccessNone0.054662s4.371756s
Success
getsockopt.cSuccessNone0.054908s4.312738s
Success
ipv6_basic.cSuccessNone0.054967s4.366628s
Success
makepipe.cSuccessNone0.043808s3.906580s
Success
nonblocking_eagain.cSuccessNone0.056026s4.331613s
Success
pipe.cSuccessNone0.053979s4.341670s
Success
pipe2.cSuccessNone0.052161s4.291688s
Success
pipeinput.cSuccessNone0.056795s4.399620s
Success
pipeinput2.cSuccessNone0.054950s4.356584s
Success
pipeonestring.cSuccessNone0.054373s4.359558s
Success
pipepong.cSuccessNone0.052745s4.375369s
Success
pipewrite.cSuccessNone0.047871s4.281221s
Success
poll.cSuccessNone0.051021s4.318573s
Success
recvfrom-sendto.cSuccessNone0.052359s4.324535s
Success
sendmsg_recvmsg_test.cSuccessNone0.052093s4.331328s
Success
serverclient.cSuccessNone0.051817s3.971636s
Success
shutdown.cSuccessNone0.053365s3.934028s
Success
shutdown_fork.cSuccessNone0.052805s4.362870s
Success
simple-select.cSuccessNone0.056237s4.447453s
Success
simple_epoll.cSuccessNone0.051330s4.297316s
Success
socket.cSuccessNone0.050004s3.940073s
Success
socket_cloexec.cSuccessNone0.051766s4.356105s
Success
socket_options_advanced.cSuccessNone0.056404s4.335539s
Success
socketepoll.cSuccessNone0.050252s3.941007s
Success
socketpair.cSuccessNone0.050183s4.344841s
Success
socketselect.cSuccessNone0.050313s4.284801s
Success
udp_send_recv.cSuccessNone0.161080s4.593369s
Success
uds-getsockname.cSuccessNone0.053329s4.383032s
Success
uds-nb-select.cSuccessNone2.061724s6.615054s
Success
uds-serverclient.cSuccessNone0.057545s4.378669s
Success
uds-socketselect.cSuccessNone0.053629s3.961659s
Success
writev_socket.cSuccessNone0.059985s4.473462s
Success
Process Tests
barrier_test.cSuccessNone0.050182s4.467119s
Success
chain_thread.cSuccessNone1.052944s5.475719s
Success
ctor_syscall_test.cSuccessNone0.041843s4.329800s
Success
cxa_atexit_test.cSuccessNone0.047613s3.930672s
Success
execve_shebang.cSuccessNone0.051360s4.335592s
Success
exit.cSuccessNone0.050464s3.901006s
Success
exit_failure.cSuccessNone0.050835s3.977204s
Success
exit_group_thread.cSuccessNone0.054847s4.595559s
Success
flockfile_test.cSuccessNone0.054862s4.542754s
Success
fork2malloc.cSuccessNone0.052402s4.369685s
Success
fork_select.cSuccessNone0.052040s4.377991s
Success
fork_simple.cSuccessNone0.049868s4.392528s
Success
fork_syscall.cSuccessNone0.056100s4.445337s
Success
fork_tls_ctype.cSuccessNone0.055053s4.378847s
Success
forkandopen.cSuccessNone0.056725s4.396903s
Success
forkdup.cSuccessNone0.053201s4.006488s
Success
forkexecuid.cSuccessNone0.049262s4.426350s
Success
forkexecv-arg.cSuccessNone0.050574s4.434976s
Success
forkexecv.cSuccessNone0.049041s4.437502s
Success
forkfiles.cSuccessNone0.054809s4.412898s
Success
forkmalloc.cSuccessNone0.051566s4.369220s
Success
forknodup.cSuccessNone0.055256s4.414713s
Success
function-ptr.cSuccessNone0.046331s4.303066s
Success
getegid_syscall.cSuccessNone0.053046s4.389940s
Success
getgid_syscall.cSuccessNone0.053287s4.404774s
Success
getpid.cSuccessNone0.045093s4.333343s
Success
getpid_syscall.cSuccessNone0.053400s4.406289s
Success
getppid.cSuccessNone0.052223s4.411625s
Success
getppid_syscall.cSuccessNone0.055420s4.409270s
Success
getuid.cSuccessNone0.052767s4.369876s
Success
getuid_syscall.cSuccessNone0.051681s4.481959s
Success
hello-arg.cSuccessNone0.045025s3.913129s
Success
hello.cSuccessNone0.042754s3.929065s
Success
longjmp.cSuccessNone0.044609s3.961713s
Success
mutex.cSuccessNone2.055944s6.617438s
Success
printf_deadlock_smoke.cSuccessNone0.060737s4.631913s
Success
printf_thread_test.cSuccessNone0.050284s4.515172s
Success
sem_forks.cSuccessNone0.055136s4.403311s
Success
setsid.cSuccessNone0.045031s3.948486s
Success
template.cSuccessNone0.050968s4.404427s
Success
test_exec_nofork.cSuccessNone0.053551s4.473696s
Success
test_unlink_open_file.cSuccessNone0.047445s3.954656s
Success
thread-test.cSuccessNone0.048639s4.442097s
Success
thread.cSuccessNone0.046386s4.475750s
Success
thread_cageid_race.cSuccessNone0.047133s4.502743s
Success
tls_test.cSuccessNone0.050093s4.475213s
Success
uname.cSuccessNone0.045939s4.326627s
Success
wait.cSuccessNone2.049037s6.053340s
Success
waitpid_anychild.cSuccessNone0.051008s4.391799s
Success
waitpid_syscall.cSuccessNone1.051476s5.351040s
Success
waitpid_wnohang.cSuccessNone0.052202s4.030031s
Success
Signal Tests
alarm.cSuccessNone7.050965s10.981725s
Success
eintr_fork_signal.cSuccessNone1.056451s5.450730s
Success
kill.cSuccessNone1.067280s5.442871s
Success
setitimer.cSuccessNone7.051105s10.971355s
Success
sigalrm.cSuccessNone2.054349s5.994296s
Success
sigchld.cSuccessNone1.054207s4.993968s
Success
signal-fork.cSuccessNone4.055916s8.045971s
Success
signal-simple.cSuccessNone0.053663s4.030085s
Success
signal_SIGCHLD.cSuccessNone0.050357s4.391385s
Success
signal_fork.cSuccessNone0.048690s4.394750s
Success
signal_int_ignored.cSuccessNone2.054837s6.408886s
Success
signal_kill_cleanup.cSuccessNone1.051550s5.433774s
Success
signal_procmask.cSuccessNone0.047225s4.339214s
Success
signal_recursive.cSuccessNone0.047586s3.940782s
Success
signal_sa_mask.cSuccessNone0.046828s3.949554s
Success
sigpipe.cSuccessNone1.054847s5.445179s
Success
sigprocmask.cSuccessNone1.054056s4.994482s
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.108086s4.667741s
Success
mmap-negative2.cSuccessNone0.158689s4.558339s
Success
Signal Tests
signal_resethand.cSuccessNone1.054060s5.051721s
Success

@qianxichen233
Copy link
Copy Markdown
Contributor Author

let's keep this PR open until the dynamic loading PR is merged, in case I'll need to make additional changes to the tool

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.

1 participant