ARM链接时出错
在编译时无报错,在进行链接时报错如下:
relocation R_ARM_THM_JUMP11 to debug_putchar truncated to fit at .text.__putchar+0。(解决方法:将这两个符号在链接时的地址尽可能接近)
通过字面意思,猜测是链接时两个符号无法进行关联。经查看文档:ELF for the Arm Architecture Release 2019Q1(自行bing搜索) 文档。有如下描述:
该名字会用指令B进行跳转。(???这种链接关系还要自己手动处理吗)。查看ARM手册,得知B指令使用T2时,最大跳转为-2048到2046之间。
查看链接信息如下:
__putchar 0x0005BFCF
debug_putchar 0x0005B649
两个符号之间差距为:0x986,即2438。可知超过了B指令的跳转范围。
所以我们要通过修改链接脚本将这两个符号放入同一段中,编译通过。