Not working on Mips architecture (openwrt)
varac opened this issue · 5 comments
I'm trying to run speedtest-cli 1.09 on a GL-X750 LTE router.
I tried both the -mips-hardfloat
and -mips-softfloat
binaries, but both stall shortly after starting with no console output.
Strace shows:
root@GL-X750:~# strace /tmp/librespeed-cli-mips-hardfloat
execve("/tmp/librespeed-cli-mips-hardfloat", ["/tmp/librespeed-cli-mips-hardflo"...], 0x7feaaa90 /* 13 vars */) = 0
open("/proc/self/exe", O_RDONLY) = 3
mmap(NULL, 2378876, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x77d55000
mmap(0x77d55000, 2378033, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x77d55000
cacheflush(0x77f99244, 0xa38, 0x3) = 0
mprotect(0x77f98000, 7292, PROT_READ|PROT_EXEC) = 0
readlink("/proc/self/exe", "/tmp/librespeed-cli-mips-hardflo"..., 4095) = 34
cacheflush(0x7fba0fb0, 0x114, 0x3) = 0
mmap(0x10000, 6762496, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x10000
mmap(0x10000, 3677824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x10000
cacheflush(0x10000, 0x114, 0x3) = 0
cacheflush(0x10114, 0x381d6c, 0x3) = 0
mprotect(0x10000, 3677824, PROT_READ|PROT_EXEC) = 0
CPU info:
root@GL-X750:~# cat /proc/cpuinfo
system type : Qualcomm Atheros QCA9533 ver 2 rev 0
machine : GL.iNet GL-X750 (NOR)
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
Options implemented : tlb 4kex 4k_cache prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit nan_legacy nan_2008 perf
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
Am I using the right binaries ? From what I can see I don't have a 64bit architecture.
What's the difference between -softfload
and -hardfloat
, and between -mips
and -mipsle` ?
@maddie Thx, I tried using upx but it doesn't start neither. I downloaded https://github.com/upx/upx/releases/download/v3.96/upx-3.96-mips_linux.tar.xz to my laptop, extracted the archive using tar -xJf upx-3.96-mipsel_linux.tar.xz
and copied the upx
binary to the router. There it stalls at the same stage, wonder what I'm doing wrong:
root@GL-X750:/tmp# strace ./upx
execve("./upx", ["./upx"], 0x7faf10d0 /* 13 vars */) = 0
open("/proc/self/exe", O_RDONLY) = 3
mmap(NULL, 438624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x77f06000
mmap(0x77f06000, 437605, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x77f06000
cacheflush(0x77f70728, 0xa38, 0x3) = 0
mprotect(0x77f6f000, 8544, PROT_READ|PROT_EXEC) = 0
readlink("/proc/self/exe", "/tmp/upx", 4095) = 8
cacheflush(0x7fce30e0, 0xf4, 0x3) = 0
mmap(0x400000, 2363392, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400000
mmap(0x400000, 2241500, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400000
cacheflush(0x400000, 0xf4, 0x3) = 0
cacheflush(0x4000f4, 0x2232e8, 0x3) = 0
mprotect(0x400000, 2241500, PROT_READ|PROT_EXEC) = 0
Well I just found that this is a know issue with upx and their latest release doesn't work on mips :/
Ooh, nice I uncompressed it using upx on my laptop and now it works ! Thx @maddie for the hint. Might be good to document this in the README.
No problem. I'll close this issue as fixed.