Open3
WasmLinux: 目指せWasmユーザーランド
現状のWasmLinuxではLinuxカーネルのみがWebAssemblyになっていて、ユーザーランド側のバイナリはネイティブコードから直接syscallを呼んでいる。というわけで、ユーザーランド側もWebAssemblyで供給する方法を模索したい。
TableとMemoryをimportにする
特に何も指定しない場合、 wasm-ld
はtableやmemoryをexport側に置く。これだと都合が悪いのでimportにしておく。
--import-memory Import the module's memory from the default module of "env" with the name "memory".
--import-table Import function table from the environment
--import-memory
と --import-table
オプションがある。 ただし、この方法でmemoryやtableをアプリ側で確保するように変更したとしても 初期データのinstantiateにオフセットが効かない ため、手動で実施する必要がある。
→ clangに -shared
を渡せばOKだった。警告は出るけど。
wasm-ld: warning: creating shared libraries, with -shared, is not yet stable
できた
まぁprintfじゃなくてwriteだけど。。
難しそうなのは共有ライブラリケースだな。。まだちょっと良いアイデアが無い。