Skip to content
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

crypto/x509: cgo errors on for loop initial declarations with gcc pre-C99 #24425

Closed
avinashrd opened this issue Mar 16, 2018 · 5 comments
Closed
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done. OS-Darwin
Milestone

Comments

@avinashrd
Copy link

Please answer these questions before submitting your issue. Thanks!

What version of Go are you using (go version)?

1.10

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

GOARCH="amd64"
GOBIN="/Users/avinashrd/Downloads/projects/golang/bin"
GOCACHE="/Users/avinashrd/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/avinashrd/Downloads/projects/golang"
GORACE=""
GOROOT="/usr/local/opt/go/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/opt/go/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="/usr/local/Cellar/gcc49/4.9.1/bin/gcc-4.9"
CXX="/usr/local/Cellar/gcc49/4.9.1/bin/g++-4.9"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/var/folders/w8/y97pxwvj35xcsw9vmh2s3gzr0000gn/T/go-build181075919=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

try to run the application in Jetbrains GoLand editor

If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is best.

What did you expect to see?

expected to see the valid output

What did you see instead?

/usr/local/opt/go/libexec/src/crypto/x509/root_cgo_darwin.go:104:2: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
for (int i = 0; i < numDomains; i++) {
^
/usr/local/opt/go/libexec/src/crypto/x509/root_cgo_darwin.go:104:2: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
/usr/local/opt/go/libexec/src/crypto/x509/root_cgo_darwin.go:112:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
for (int j = 0; j < numCerts; j++) {

@ianlancetaylor ianlancetaylor changed the title getting an error for simple go program with for loop in MAC OSX 10.13.13 crypto/x509: getting an error for simple go program with for loop in MAC OSX 10.13.13 Mar 16, 2018
@ianlancetaylor ianlancetaylor added the NeedsFix The path to resolution is known, but the work has not been done. label Mar 16, 2018
@ianlancetaylor ianlancetaylor added this to the Go1.11 milestone Mar 16, 2018
@ianlancetaylor
Copy link
Contributor

Thanks. This is happening because you are running quite an old version of GCC. I'll send a fix.

@gopherbot
Copy link

Change https://golang.org/cl/101215 mentions this issue: crypto/x509: don't require C99 mode in Darwin cgo code

@odeke-em odeke-em changed the title crypto/x509: getting an error for simple go program with for loop in MAC OSX 10.13.13 crypto/x509: cgo errors on for loop initial declarations with gcc pre-C99 Mar 16, 2018
@avinashrd
Copy link
Author

@ianlancetaylor

Thanks for the reply.
If I update my GCC using brew, will that fix the issue?

I didn't understand the comment by @gopherbot .

@FiloSottile
Copy link
Contributor

@avinashrd Yes, if you install a more recent version of GCC (for example brew install gcc which will currently install 7.3) and set it as your CC/CXX environment variables, it should fix your issue.

@gopherbot was just reporting that we are working on a fix in Go, but that will not be available until Go 1.11, and it might not be enough to make GCC 4.9 work anyway.

@avinashrd
Copy link
Author

I updated to 7.3 as suggested and ran the same program. I am getting this error now

crypto/x509

In file included from /System/Library/Frameworks/Security.framework/Headers/AuthSession.h:32:0,
from /System/Library/Frameworks/Security.framework/Headers/Security.h:43,
from /usr/local/Cellar/go/1.10/libexec/src/crypto/x509/root_cgo_darwin.go:17:
/System/Library/Frameworks/Security.framework/Headers/Authorization.h:193:7: error: variably modified 'bytes' at file scope
char bytes[kAuthorizationExternalFormLength];
^~~~~

Go Env :

GOARCH="amd64"
GOBIN="/Users/xxx/Downloads/projects/golang/bin"
GOCACHE="/Users/xxx/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/xxxx/Downloads/projects/golang"
GORACE=""
GOROOT="/usr/local/opt/go/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/opt/go/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="/usr/local/Cellar/gcc/7.3.0_1/bin/gcc-7"
CXX="/usr/local/Cellar/gcc/7.3.0_1/bin/g++-7"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/var/folders/w8/y97pxwvj35xcsw9vmh2s3gzr0000gn/T/go-build575805343=/tmp/go-build -gno-record-gcc-switches -fno-common"

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done. OS-Darwin
Projects
None yet
Development

No branches or pull requests

4 participants