qemu-arm fails to emulate go user programs due to how qemu handles certain signals.
The original issue/diff that seems to solve the issue is here:
Build this on an non-arm platform such as x86.
This will fail with the following error:
Testing with the aforementioned patch solves the issue, but I'm unsure its the best approach to solving this. I can re-propose that patch if there isn't a better solution, but this would be a very useful feature for using qemu user space emulation with go.
…r SIGRTMAX A forward port of https://codereview.appspot.com/124900043/ which somehow got lost somewhere. Fixes #13024 Change-Id: Iab128899e65c51d90f6704e3e1b2fc9326e3a1c2 Reviewed-on: https://go-review.googlesource.com/16853 Reviewed-by: Russ Cox <firstname.lastname@example.org> Reviewed-on: https://go-review.googlesource.com/16986 Run-TryBot: Austin Clements <email@example.com> Reviewed-by: Ian Lance Taylor <firstname.lastname@example.org>
I compiled a binary on ARM (
Yeah, I think we lost the ability to run Go binaries with qemu-arm long time ago. tcg fatal error also seems to suggest that it's a qemu bug. (the arm port used to be developed with qemu-arm, but then as the port is able to run on real hardwares, we no longer test on qemu-arm.) The signal patch is originally intended for qemu-ppc64, btw. I doubt that even qemu-ppc64 is able to run Go binaries, other than the most trivial one. As beefy arm boards are widely available, I don't think we should invest into qemu usermode emulation any more. It's slower than the more powerful arm boards, and it doesn't support multithreaded programs well.