1 回答
TA贡献1783条经验 获得超5个赞
我不确定如何解释这个
Google 搜索“MIPS sdc1”表明这是一条浮点“Store Doubleword from Coprocessor-1”指令。
一个猜测:你的嵌入式系统没有浮点协处理器?
您可能需要添加-msoft-float到您的xgo命令并重建。
更新:
它在同一个调用中崩溃
sdc1,寄存器是相同的$f20,56(a0)。
是的,但是是在同一个函数 ( __sigsetjmp_aux) 中,还是在一些不同的函数中?
这是我用 xgo 构建的调用:
xgo --go=1.12 --targets=linux/mips --ldflags '-extldflags "-static -msoft-float"' ~/path/to/project
看起来例程__sigsetjmp_aux来自 GLIBC,它不是由xgo.
并且您正在使用的 GLIBC 版本是在没有构建的情况下构建的-msoft-float,因此您仍在链接需要硬件浮点的代码,而您的系统却没有。
第 1 步:验证__sigsetjmp_aux来源。为此,您需要传递-y __sigsetjmp_aux给链接器。也许--ldflags '-extldflags "-static -msoft-float -Wl,-y,__sigsetjmp_aux"'会那样做。
你应该看到类似这样的东西:
gcc t.o -Wl,-y,setjmp -static t.o: reference to setjmp /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libc.a(bsd-setjmp.o): definition of setjmp
假设您__sigsetjmp_aux对 does 的定义来自libc.a,您需要使用-msoft-floatin重建它CFLAGS。
注意:传递-msoft-float给链接器是错误的,不会有任何效果——它是一个编译器标志。
- 1 回答
- 0 关注
- 317 浏览
添加回答
举报
