1 回答
TA贡献1783条经验 获得超4个赞
我不确定如何解释这个
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-float
in重建它CFLAGS
。
注意:传递-msoft-float
给链接器是错误的,不会有任何效果——它是一个编译器标志。
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报