gpt4 book ai didi

go - 为 MIPS 构建一个没有硬件浮点的小型 Go 程序(需要 softfloat)

转载 作者:IT王子 更新时间:2023-10-29 00:38:14 26 4
gpt4 key购买 nike

我有一个用 go 编写的小程序,我正在尝试交叉编译以在 MIPS 架构机器上运行。我一直在尝试使用 XGO 交叉编译库进行交叉编译,但在让我的程序运行方面取得了有限的成功 (https://github.com/karalabe/xgo)。

这里是设备的cpuinfo,当前运行的是某个版本的openwrt。

system type     : Qualcomm Atheros QCA9533 ver 2 rev 0
machine : GL.iNet GL-AR750
processor : 0
cpu model : MIPS 24Kc V7.4
BogoMIPS : 432.53
wait instruction : yes
microsecond timers : yes
tlb_entries : 16
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available

运行该程序,我从以下内容中得到一条 SIGILL 非法指令:

Program terminated with signal SIGILL, Illegal instruction.
#0 0x008274a8 in __sigsetjmp_aux ()

我可以看到这里定义了__sigsetjmp_aux()

/usr/lib/gcc-cross/mips-linux-gnu/5/../../../../mips-linux-gnu/lib/../lib/libc.a(setjmp_aux.o): definition of __sigsetjmp_aux 

如何确保我的所有依赖项都使用 SOFTFLOAT 编译?

我一直在向 xgo 传递以下环境变量,但似乎 GLIBC 没有被编译为 soft-float

CC=mips-linux-gnu-gcc-5 CXX=mips-linux-gnu-g++-5 GOOS=linux GOARCH=mips GOMIPS=softfloat CGO_ENABLED=1 CFLAGS=msoft-float

如有任何帮助,我们将不胜感激!

编辑这是 asm 布局

    0x8274a4 <__sigsetjmp_aux+4>    addiu  gp,gp,-19312                                                                                                                          │
>│0x8274a8 <__sigsetjmp_aux+8> sdc1 $f20,56(a0) │
│0x8274ac <__sigsetjmp_aux+12> sdc1 $f22,64(a0)

最佳答案

我不得不在 MIPS 上运行 Go 一次,并通过使用浮点仿真构建内核解决了这个问题。它很慢,但很管用。

关于go - 为 MIPS 构建一个没有硬件浮点的小型 Go 程序(需要 softfloat),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56138616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com