Environment
- Board: ESP32-S3
- ESP-IDF Version: 6.0.1
- Toolchain: xtensa-esp-elf GCC 15.2.0
- OS: Ubuntu Linux
- Project Version: 0.7.0
Description
Building esp32-csi-node fails while compiling the WASM3 component.
The project configures successfully and most components compile, but compilation stops in m3_compile.c with multiple errors originating from m3_exec.h.
Build Command
Relevant Log Information
FAILED: esp-idf/wasm3/CMakeFiles/__idf_wasm3.dir/wasm3-src/source/m3_compile.c.obj
~/.espressif/tools/xtensa-esp-elf/esp-15.2.0_20251204/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc -DESP_PLATFORM -DIDF_VER=\"v6.0.1\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -DWASM3_AVAILABLE=1 -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -Dd_m3CodePageAlignSize=4096 -Dd_m3FixedHeap=0 -Dd_m3HasFloat=1 -Dd_m3LogOutput=0 -Dd_m3MaxFunctionStackHeight=512 -Dd_m3Use32BitSlots=1 -I~/RuView/firmware/esp32-csi-node/build/config -I~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source -I~/esp32/components/esp_libc/platform_include -I~/esp32/components/freertos/config/include -I~/esp32/components/freertos/config/include/freertos -I~/esp32/components/freertos/config/xtensa/include -I~/esp32/components/freertos/FreeRTOS-Kernel/include -I~/esp32/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -I~/esp32/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -I~/esp32/components/freertos/esp_additions/include -I~/esp32/components/esp_hw_support/include -I~/esp32/components/esp_hw_support/include/soc -I~/esp32/components/esp_hw_support/ldo/include -I~/esp32/components/esp_hw_support/debug_probe/include -I~/esp32/components/esp_hw_support/etm/include -I~/esp32/components/esp_hw_support/mspi_timing_tuning/include -I~/esp32/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -I~/esp32/components/esp_hw_support/power_supply/include -I~/esp32/components/esp_hw_support/modem/include -I~/esp32/components/esp_hw_support/include/soc/esp32s3 -I~/esp32/components/esp_hw_support/port/esp32s3/. -I~/esp32/components/esp_hw_support/port/esp32s3/include -I~/esp32/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/. -I~/esp32/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/include -I~/esp32/components/heap/include -I~/esp32/components/heap/tlsf -I~/esp32/components/log/include -I~/esp32/components/soc/include -I~/esp32/components/soc/esp32s3 -I~/esp32/components/soc/esp32s3/include -I~/esp32/components/soc/esp32s3/register -I~/esp32/components/hal/platform_port/include -I~/esp32/components/hal/esp32s3/include -I~/esp32/components/hal/include -I~/esp32/components/esp_rom/include -I~/esp32/components/esp_rom/esp32s3/include -I~/esp32/components/esp_rom/esp32s3/include/esp32s3 -I~/esp32/components/esp_rom/esp32s3 -I~/esp32/components/esp_common/include -I~/esp32/components/esp_system/include -I~/esp32/components/esp_system/port/soc -I~/esp32/components/esp_system/port/include/private -I~/esp32/components/esp_stdio/include -I~/esp32/components/xtensa/esp32s3/include -I~/esp32/components/xtensa/include -I~/esp32/components/xtensa/deprecated_include -I~/esp32/components/esp_hal_gpio/include -I~/esp32/components/esp_hal_gpio/esp32s3/include -I~/esp32/components/esp_hal_usb/include -I~/esp32/components/esp_hal_usb/esp32s3/include -I~/esp32/components/esp_hal_pmu/include -I~/esp32/components/esp_hal_pmu/esp32s3/include -I~/esp32/components/esp_hal_ana_conv/include -I~/esp32/components/esp_hal_ana_conv/esp32s3/include -I~/esp32/components/esp_hal_dma/include -I~/esp32/components/esp_hal_dma/esp32s3/include -I~/esp32/components/lwip/include -I~/esp32/components/lwip/include/apps -I~/esp32/components/lwip/lwip/src/include -I~/esp32/components/lwip/port/include -I~/esp32/components/lwip/port/freertos/include -I~/esp32/components/lwip/port/esp32xx/include -I~/esp32/components/lwip/port/esp32xx/include/arch -I~/esp32/components/lwip/port/esp32xx/include/sys @"~/RuView/firmware/esp32-csi-node/build/toolchain/cflags" -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Os -freorder-blocks -mno-target-align -fmacro-prefix-map=~/RuView/firmware/esp32-csi-node=. -fmacro-prefix-map=~/esp32=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu23 -Wno-old-style-declaration -fzero-init-padding-bits=all -fno-malloc-dce -Wno-unused-function -Wno-unused-variable -Wno-maybe-uninitialized -MD -MT esp-idf/wasm3/CMakeFiles/__idf_wasm3.dir/wasm3-src/source/m3_compile.c.obj -MF esp-idf/wasm3/CMakeFiles/__idf_wasm3.dir/wasm3-src/source/m3_compile.c.obj.d -o esp-idf/wasm3/CMakeFiles/__idf_wasm3.dir/wasm3-src/source/m3_compile.c.obj -c ~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_compile.c
In file included from ~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_compile.h:12,
from ~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_env.h:13,
from ~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_compile.c:11:
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h: In function 'op_Branch':
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:59:38: error: cannot tail-call: machine description does not have a sibcall_epilogue instruction pattern
59 | # define jumpOpImpl(PC) ((IM3Operation)(* PC))( PC + 1, d_m3OpArgs)
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:63:56: note: in expansion of macro 'jumpOpImpl'
63 | #define jumpOpDirect(PC) M3_MUSTTAIL return jumpOpImpl((pc_t)(PC))
| ^~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:58:37: note: in expansion of macro 'jumpOpDirect'
58 | #define jumpOp(PC) jumpOpDirect(PC)
| ^~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:900:5: note: in expansion of macro 'jumpOp'
900 | jumpOp (* _pc);
| ^~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h: In function 'op_BranchTable':
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:59:38: error: cannot tail-call: machine description does not have a sibcall_epilogue instruction pattern
59 | # define jumpOpImpl(PC) ((IM3Operation)(* PC))( PC + 1, d_m3OpArgs)
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:63:56: note: in expansion of macro 'jumpOpImpl'
63 | #define jumpOpDirect(PC) M3_MUSTTAIL return jumpOpImpl((pc_t)(PC))
| ^~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:58:37: note: in expansion of macro 'jumpOpDirect'
58 | #define jumpOp(PC) jumpOpDirect(PC)
| ^~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:940:5: note: in expansion of macro 'jumpOp'
940 | jumpOp (branches [branchIndex]);
| ^~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h: In function 'op_BranchIf_r':
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:59:38: error: cannot tail-call: machine description does not have a sibcall_epilogue instruction pattern
59 | # define jumpOpImpl(PC) ((IM3Operation)(* PC))( PC + 1, d_m3OpArgs)
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:63:56: note: in expansion of macro 'jumpOpImpl'
63 | #define jumpOpDirect(PC) M3_MUSTTAIL return jumpOpImpl((pc_t)(PC))
| ^~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:58:37: note: in expansion of macro 'jumpOpDirect'
58 | #define jumpOp(PC) jumpOpDirect(PC)
| ^~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:1168:9: note: in expansion of macro 'jumpOp'
1168 | jumpOp (branch);
| ^~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h: In function 'op_BranchIf_s':
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:59:38: error: cannot tail-call: machine description does not have a sibcall_epilogue instruction pattern
59 | # define jumpOpImpl(PC) ((IM3Operation)(* PC))( PC + 1, d_m3OpArgs)
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:63:56: note: in expansion of macro 'jumpOpImpl'
63 | #define jumpOpDirect(PC) M3_MUSTTAIL return jumpOpImpl((pc_t)(PC))
| ^~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:58:37: note: in expansion of macro 'jumpOpDirect'
58 | #define jumpOp(PC) jumpOpDirect(PC)
| ^~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:1181:9: note: in expansion of macro 'jumpOp'
1181 | jumpOp (branch);
| ^~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h: In function 'op_If_s':
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:59:38: error: cannot tail-call: machine description does not have a sibcall_epilogue instruction pattern
59 | # define jumpOpImpl(PC) ((IM3Operation)(* PC))( PC + 1, d_m3OpArgs)
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:63:56: note: in expansion of macro 'jumpOpImpl'
63 | #define jumpOpDirect(PC) M3_MUSTTAIL return jumpOpImpl((pc_t)(PC))
| ^~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:58:37: note: in expansion of macro 'jumpOpDirect'
58 | #define jumpOp(PC) jumpOpDirect(PC)
| ^~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:926:9: note: in expansion of macro 'jumpOp'
926 | jumpOp (elsePC);
| ^~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h: In function 'op_If_r':
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:59:38: error: cannot tail-call: machine description does not have a sibcall_epilogue instruction pattern
59 | # define jumpOpImpl(PC) ((IM3Operation)(* PC))( PC + 1, d_m3OpArgs)
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec_defs.h:63:56: note: in expansion of macro 'jumpOpImpl'
63 | #define jumpOpDirect(PC) M3_MUSTTAIL return jumpOpImpl((pc_t)(PC))
| ^~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:58:37: note: in expansion of macro 'jumpOpDirect'
58 | #define jumpOp(PC) jumpOpDirect(PC)
| ^~~~~~~~~~~~
~/RuView/firmware/esp32-csi-node/components/wasm3/wasm3-src/source/m3_exec.h:913:9: note: in expansion of macro 'jumpOp'
913 | jumpOp (elsePC);
| ^~~~~~
ninja: build stopped: subcommand failed.
Environment
Description
Building esp32-csi-node fails while compiling the WASM3 component.
The project configures successfully and most components compile, but compilation stops in
m3_compile.cwith multiple errors originating fromm3_exec.h.Build Command
Relevant Log Information