Page 1 of 1

遇到错误 dangerous relocation: windowed longcall crosses 1GB boundary; return may fail: nan

Posted: Mon Oct 18, 2021 7:18 pm
by zhangjingxun12
使用了lua的库,编译出现 dangerous relocation: windowed longcall crosses 1GB boundary; return may fail: nan错误
ESP_IDF4.3

cmd.exe /C "cd . && J:\IOT\Espress\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe -mlongcalls -Wno-frame-address @CMakeFiles\lua_demo_input.elf.rsp -o lua_demo_input.elf && cd ."
j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/u_app/libu_app.a(lmathlib.c.obj): in function `math_tan':
j:\esp32\lua_demo\esp32_lua\lua_demo_input\build/../components/u_app/lua-5.4.2/src/lmathlib.c:51:(.text.math_tan+0xa): dangerous relocation: windowed longcall crosses 1GB boundary; return may fail: tan
j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/lib/esp32-psram/no-rtti\libm.a(lib_a-w_acos.o): in function `acos':
/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libm/math/w_acos.c:94:(.text+0x5e): dangerous relocation: windowed longcall crosses 1GB boundary; return may fail: nan
j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/lib/esp32-psram/no-rtti\libm.a(lib_a-w_asin.o): in function `asin':
/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libm/math/w_asin.c:98:(.text+0x5e): dangerous relocation: windowed longcall crosses 1GB boundary; return may fail: nan
j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/lib/esp32-psram/no-rtti\libm.a(lib_a-w_log.o): in function `log':
/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libm/math/w_log.c:98:(.text+0xc7): dangerous relocation: windowed longcall crosses 1GB boundary; return may fail: nan
j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/lib/esp32-psram/no-rtti\libm.a(lib_a-w_log10.o): in function `log10':
/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libm/math/w_log10.c:96:(.text+0xc7): dangerous relocation: windowed longcall crosses 1GB boundary; return may fail: nan
j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: j:/iot/espress/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/lib/esp32-psram/no-rtti\libm.a(lib_a-e_pow.o): in function `__ieee754_pow':
/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libm/math/e_pow.c:125:(.text+0x66): dangerous relocation: windowed longcall crosses 1GB boundary; return may fail: nan
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
ninja failed with exit code 1


从以上信息看,貌似是math库tan等函数对参数的验证问题,应该可以通过编译选项修改,不知道有没有遇到并解决的