我正在使用LLVMSharp *库构建编译器,并且它会针对wasm32-unknown-unknown
发出LLVM .bc模块文件。我正在尝试通过使用{ "wasm-import-module"="wasi_unstable" }
属性标记这些函数值从WASI接口将函数导入其中。 (这应该等效于clang对__attribute__((import_module(<module_name>)))
所做的操作;请参见here)。但是,当我将生成的.bc文件传递给wasm-ld(已安装Windows 64位9.0.0版本)时,生成的.wasm模块仍然从"env"
导入了这些功能,这是行不通的。
是否有一些选项可以传递给wasm-ld以使其正确处理wasm-import-module
,还是我需要走另一条路线?
*特别是,我正在使用LLVMSharp 5.0.0,它是最新的稳定版本。 LLVMSharp 8.0.0可能支持构建.wasm模块,但没有针对该版本的NuGet版本,并且Beta NuGet存在一些妨碍我升级的问题。这就是为什么我要走wasm-ld路线。
wasm-ld应该支持此属性。首先要检查的是您的目标文件。
您可以使用llvm-readobj --syms
将符号转储到目标文件中。您应该在符号上看到ImportModule: foo
,其中foo
是您在属性中指定的模块名称。
我似乎支持在wasm-ld中获得的支持:https://reviews.llvm.org/D45796
我相信此更改将在llvm 8.0之前实现,因此您将达到llvm 8.0或更高版本。