我在编译期间遇到以下错误
(。sram.text + 0x1283):危险的重定位:加窗的longcall十字架 1GB边界; return可能会失败:( UND + 0xdeadcafe)
其中一个功能。
架构是Xtensa,使用的工具链是为Xtensa构建的GNU工具链。此错误位于binutils源代码文件elf32-xtensa.c中的函数elf_xtensa_do_reloc()内。
请告诉我此错误的原因以及任何可能的解决方案。
谢谢和问候, 哈里
答案 0 :(得分:0)
这是默认的Xtensa窗口寄存器ABI的一个已知警告。引用Xtensa ISA reference manual:
与
a4
中的返回地址寄存器一起存储的窗口增量 占据寄存器的两个最高有效位,因此 这些位必须由子程序返回填充。RETW
和。{RETW.N
条指令填写了两个最重要的位 他们自己的地址。这可以防止寄存器窗口调用 用于在地址空间的不同1GB区域中调用例程。
您有两种方法可以解决此问题: