cmd/go, cmd/link: use Windows response files for gcc/g++ to avoid arg length limits #28372
Labels
compiler/runtime
Issues related to the Go compiler and/or runtime.
help wanted
NeedsFix
The path to resolution is known, but the work has not been done.
Milestone
What version of Go are you using (
go version
)?1.11.1
Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (
go env
)?windows 386/amd64
What did you do?
Tried to compile a cgo program.
What did you expect to see?
a successful compilation
What did you see instead?
gcc: error: CreateProcess: No such file or directory
and/or
g++: error: CreateProcess: No such file or directory
Possible solution?
This patch works for my needs.
It's mostly a copy of: https://go-review.googlesource.com/c/go/+/110395
But I also needed to escape the backslashes to make it work.
More info
The issue is related to: #18468
and https://github.com/golang/go/blob/master/src/cmd/go/internal/work/exec.go#L2851
The problem is caused by the 32K character limit on windows
https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessasuserw
Also, once there is support for msvc on windows (#20982) it might be good idea to whitelist
cl
as well.The text was updated successfully, but these errors were encountered: