On 2019/11/14 20:08, [email protected] wrote:
> Hello all,
>
> Trying to run go or restic on a soekris net5501 results in:
>
> Illegal instruction (core dumped)
>
> Has anyone else seen issues similar to this? Go seems to work fine on
> all my amd64 boxes, and this is unfortunately the only i386 I have
> around to test on.
>
> Here's some minimal debug output:
>
> (gdb) run
> Starting program: /usr/local/bin/go
>
> Program received signal SIGILL, Illegal instruction.
> 0x0807fa0b in runtime.check ()
> Current language: auto; currently minimal
> (gdb) bt
> #0 0x0807fa0b in runtime.check ()
> #1 0x08927120 in ?? ()
> #2 0xcf7c5728 in ?? ()
> #3 0x08049598 in x_cgo_init ()
> Previous frame inner to this frame (corrupt stack?)
> (gdb)
I think if you run "disassemble" from gdb (or pkg_add gdb and run "egdb"
in case the old gdb in base doesn't understand the opcodes) you may find
which instruction it's complaining about.
This runs OK on an i386 with more CPU features; most likely it wants
SSE or similar which the Geode LX in your net5501 doesn't have. (Go has
runtime cpuid checks for most of the SSE variants but I think not for
the original SSE which it probably just assumes is available).
One clue would be if the disassembly has instructions referencing
registers X0..X15 which are just used for SSE.
> cpu0 at mainbus0: (uniprocessor)
> cpu0: Geode(TM) Integrated Processor by AMD PCS ("AuthenticAMD" 586-class)
> 500 MHz, 05-0a-02
> cpu0: FPU,DE,PSE,TSC,MSR,CX8,SEP,PGE,CMOV,CFLUSH,MMX,MMXX,3DNOW2,3DNOW