Summary
On current main, running the same float-related cases from #1664 on esp32 (xtensa emulator) still fails.
esp32c3-basic now passes these cases, but esp32 does not.
Reproduction
Run cases one by one with ESP32 emulator target:
llgo run -a -target=esp32 -emulator ./cl/_testgo/alias
llgo run -a -target=esp32 -emulator ./cl/_testgo/multiret
llgo run -a -target=esp32 -emulator ./cl/_testgo/struczero
llgo run -a -target=esp32 -emulator ./cl/_testdata/cpkgimp
Actual behavior (esp32)
-
./cl/_testgo/alias
- got: blank output line
- expect:
+5.000000e+00 +8.000000e+00
-
./cl/_testgo/multiret
- got:
1
- expect:
1 +2.000000e+00
-
./cl/_testgo/struczero
- got: no expected output; run did not finish within 240s in local check
- expect:
0x0 +0.000000e+00 notOk: true
0x0 +0.000000e+00 true
-
./cl/_testdata/cpkgimp
- got:
3
- expect:
3 +6.280000e+00
Comparison
With the same environment and same cases, esp32c3-basic outputs are correct and the runs finish.
Notes
A local quick test with temporary target override --undefined=_printf_float on esp32 led to link error:
undefined symbol: __fpclassifyd
referenced by nano-vfprintf_float.c ... in libc-xtensa.a
which suggests xtensa-side float printf support is still not fully wired.