iree: iree/hal/local/elf/elf_module_test failed to dispatch the simple_mul function correctly in RV32 config

Run https://github.com/google/iree/blob/main/iree/hal/local/elf/elf_module_test.cc resulting into a segfault in qemu-riscv32. The same code works fine in x86_64 and RV64 Linux configs

$ {QEMU_BIN} -cpu rv64 -L ${TOOLCHAIN_PATH}/sysroot/ iree-build-riscv/iree/hal/local/elf/elf_module_test
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from ELFModuleTest
[ RUN      ] ELFModuleTest.Check
[       OK ] ELFModuleTest.Check (3 ms)
[----------] 1 test from ELFModuleTest (3 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (7 ms total)
[  PASSED  ] 1 test.


$ {QEMU32_BIN} -cpu rv32 -L /tmp/toolchain_iree_rv32/sysroot/ iree-build-riscv_rv32_linux/iree/hal/local/elf/elf_module_test 
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from ELFModuleTest
[ RUN      ] ELFModuleTest.Check
Segmentation fault

Broken at https://github.com/google/iree/blob/9b946d7ffaf08f7f6130e6aacb3692e53456eb45/iree

Steps to reproduce patch https://github.com/hcindyl/iree/commit/6fa9e8b9a65b34388d68183d3e360ef44c7625b6 and build the test

Additional context

  • build the runtime with the RV32 baremetal results in the same segfault
  • build and run the abs() iree bytecode module towards the vmvx target with the same RV32 Linux toolchain works fine

I will try to run the system emulator with the baremetal config later to see if I can gather more information than the segfault.

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 23 (15 by maintainers)

Most upvoted comments

(and also make sure you rebuilt the compiler before generating the artifact)

Rebuild the host compiler and the same mismatch error persists. I am going to dump the library structure to see what’s there.