-
Notifications
You must be signed in to change notification settings - Fork 17.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
go appears to not support i386 CPUs lacking SSE #20009
Comments
Does this happen if you set
so after building something with 387 (if you have a working version of go on that machine). It shouldn't. If nothing crashes the problem is in your pre-build binary, you'll have to build from source with |
Does this happend if you set `GO386=387` ? I.e.
```
$ env GO386=387 go version
```
Yes, that still happens:
# env GO386=387 go version
Illegal instruction (core dumped)
#
Regards,
Håvard
|
Sorry I edited that message but github sent the mail too fast. We do support MMX cpus via the You'll have to build the toolchain from source on your MMX machine. |
Hmm, ok., I'll try to build it on this host. |
Not really: when cross-compiling you can tune everything you need with env variables. Your problem is that if nothing is set we have to default to something; and we default to what the building machine supports. I believe this is a sensible choice. |
I'm closing this since it appears that the crash is caused by a toolchain that was not compiled for your 386 machine (so there's no bug). Please comment if you think you found a bug, and we'll reopen. Thanks. |
Not really: when cross-compiling you can tune everything you
need with env variables. Your problem is that if nothing is set
we have to default to *something*; and we default to what the
building machine supports. I believe this is a sensible choice.
OK, then I may have a nit to pick with the packaging system, and
I'll need to look into what can be set to tune the build.
|
What version of Go are you using (
go version
)?1.8 (or, rather, trying to run)
This is a pre-built binary package, i.e. it's not built from source on this host.
What operating system and processor architecture are you using (
go env
)?NetBSD/i386 7.1
This is a true i386 CPU:
cpu0: Intel Celeron (Covington) (686-class), 331.13 MHz
cpu0: family 0x6 model 0x5 stepping 0x1 (id 0x651)
cpu0: features 0x183f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA>
cpu0: features 0x183f9ff<CMOV,PAT,PSE36,MMX,FXSR>
As such it has MMX but not SSE, as seen above.
What did you do?
Try to run / use go, e.g. "go version".
Watch it crash and burn with "Illegal instruction".
Examining the core dump reveals:
...
eip 0x807937b 0x807937b <runtime.check+27>
...
(gdb) x/i 0x807937b
=> 0x807937b <runtime.check+27>: xorps %xmm0,%xmm0
(gdb)
What did you expect to see?
1.8
What did you see instead?
Illegal instruction (core dumped)
Now, I realize I'm strictly in the minority here with such an old CPU, and it
may be that go insists on a newer CPU with SSE support.
The text was updated successfully, but these errors were encountered: