The Go runtime silently chose the gold linker on arm and aarch64 build
targets to work around a binutils bug.
That bug was from 2016, and has been fixed in binutils for a while. But
the Go workaround was still in place.
The workaround to choose gold was supposed to error out during the
configure phase if gold wasn't found - but that doesn't happen.
This leads to builds on aarch64 failing if attempting to compile without
gold.
Just removing the special condition in the Go source code:
https://go-review.googlesource.com/c/go/+/391115/
works, but that patch is unlikely to be merged upstream.
A patch fixing the build is more likely to be merged:
https://go-review.googlesource.com/c/go/+/366279/
which updates the linker selection to use gold only if available.
References to this bug in upstream Go and Binutils:
https://github.com/golang/go/issues/22040https://sourceware.org/bugzilla/show_bug.cgi?id=19962
Including the likely-to-be-merged patch here.