在编译过程中出现以下错误
(.sram.text+0x1283):危险的重定位:窗口化的 longcall 跨越 1GB 边界;返回可能失败:( UND +0xdeadcafe)
在其中一个功能中。
架构是 Xtensa,使用的工具链是为 Xtensa 构建的 GNU 工具链。此错误位于 binutils 源代码中文件 elf32-xtensa.c 中的函数 elf_xtensa_do_reloc() 内。
请让我知道此错误的原因以及任何可能的解决方案。
在编译过程中出现以下错误
(.sram.text+0x1283):危险的重定位:窗口化的 longcall 跨越 1GB 边界;返回可能失败:( UND +0xdeadcafe)
在其中一个功能中。
架构是 Xtensa,使用的工具链是为 Xtensa 构建的 GNU 工具链。此错误位于 binutils 源代码中文件 elf32-xtensa.c 中的函数 elf_xtensa_do_reloc() 内。
请让我知道此错误的原因以及任何可能的解决方案。
这是默认 Xtensa 窗口寄存器 ABI 的一个已知警告。引用Xtensa ISA 参考手册:
与返回地址寄存器一起存储的窗口增量
a4
占据了寄存器的两个最高有效位,因此这些位必须由子程序返回填充。和指令从它们自己地址的两个最高有效位中填充这些位RETW
。RETW.N
这可以防止寄存器窗口调用被用于调用地址空间的不同 1GB 区域中的例程。
您有两种选择来解决此问题: