1 回答

TA貢獻(xiàn)1783條經(jīng)驗 獲得超4個贊
我不確定如何解釋這個
Google 搜索“MIPS sdc1”表明這是一條浮點“Store Doubleword from Coprocessor-1”指令。
一個猜測:你的嵌入式系統(tǒng)沒有浮點協(xié)處理器?
您可能需要添加-msoft-float
到您的xgo
命令并重建。
更新:
它在同一個調(diào)用中崩潰
sdc1
,寄存器是相同的$f20,56(a0)
。
是的,但是是在同一個函數(shù) ( __sigsetjmp_aux
) 中,還是在一些不同的函數(shù)中?
這是我用 xgo 構(gòu)建的調(diào)用:
xgo --go=1.12 --targets=linux/mips --ldflags '-extldflags "-static -msoft-float"' ~/path/to/project
看起來例程__sigsetjmp_aux
來自 GLIBC,它不是由xgo
.
并且您正在使用的 GLIBC 版本是在沒有構(gòu)建的情況下構(gòu)建的-msoft-float
,因此您仍在鏈接需要硬件浮點的代碼,而您的系統(tǒng)卻沒有。
第 1 步:驗證__sigsetjmp_aux
來源。為此,您需要傳遞-y __sigsetjmp_aux
給鏈接器。也許--ldflags '-extldflags "-static -msoft-float -Wl,-y,__sigsetjmp_aux"'
會那樣做。
你應(yīng)該看到類似這樣的東西:
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
假設(shè)您__sigsetjmp_aux
對 does 的定義來自libc.a
,您需要使用-msoft-float
in重建它CFLAGS
。
注意:傳遞-msoft-float
給鏈接器是錯誤的,不會有任何效果——它是一個編譯器標(biāo)志。
- 1 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報