LLVM устанавливает целевое значение для WebAssembly
Я написал код в C++ для использования ядра LLVM, чтобы получить файл PHP и сгенерировать IR для классической архитектуры. Я могу запустить этот код со встроенным JIT-компилятором LLVM. Я бы сделал IR для WebAssembly. Я использую LLVM 6.0 с WebAssembly в качестве целевой сборки
$ llvm-config --targets-built
AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 NVPTX PowerPC Sparc SystemZ X86 XCore WebAssembly AVR
Я установил это обновление в своем коде
...
LLVMSetTarget((LLVMOpaqueModule *)context->module, "wasm32");
...
Теперь я заметил, что дублированный ИК-код идентичен моему редактированию кода или нет, и я следовал этому конвейеру, чтобы сгенерировать мой файл wasm
$ llc -asm-verbose=false -march=wasm32 -o my.s my.bc
$ binaryen/bin/s2wasm my.s > my.wast
$ wabt/bin/wat2wasm my.wast -o my.wasm
Но когда я бегу
$ node ./runwasm.js my.wasm main
Я получаю следующую ошибку
RuntimeError: memory access out of bounds
Я не могу понять, в чем проблема, потому что, если я буду следовать этому руководству, я не получу никакой ошибки.
Предложения?