Description
What version of Go are you using (go version
)?
go version devel +bf870f3d54 Tue Nov 27 18:04:27 2018 +0300 darwin/amd64
Does this issue reproduce with the latest release?
Only master branch affected, go 1.11.2 and 1.10.5 are fine (as they use bare Syscall functions).
What operating system and processor architecture are you using (go env
)?
go env
Output
GOARCH="amd64" GOBIN="" GOCACHE="off" GOEXE="" GOFLAGS="-ldflags=-s -ldflags=-w" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="<...>/.build" GOPROXY="" GORACE="" GOROOT="<...>/go" GOTMPDIR="" GOTOOLDIR="<...>/go/pkg/tool/darwin_amd64" GCCGO="gccgo" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="" 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 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build998597890=/tmp/go-build -gno-record-gcc-switches -fno-common"
Actually, I'm using gomobile, so GOARCHs are arm, arm64 (and 386, amd64 for simulator).
What did you do?
I'm building an iOS framework using gomobile and Go from master branch. Then I submit an app with this framework to the App Store Connect. After submission some (unknown) post processing happens on Apple's side.
What did you expect to see?
Binary should be processed successfully. (It is for go 1.11.2 and 1.10.5)
What did you see instead?
Binary is rejected for "Non-public API usage" - The app references non-public symbols: ___getdirentries64, _fstat64, _lstat64, _stat64
This happens because of these changes: a3b0144, c9762b8 in master branch
PS: I've solved it by patching syscall/mksyscall.pl - reverting back bare Syscall usage for mentioned symbols and generating updated zsyscall_darwin_{arm,arm64,386,amd64}.{go,s} using syscall/mksyscall.pl and syscall/mkasm_darwin.go.