go version)?1.12 rc1
go env)?Fedora Rawhide aarch64
Micro (https://github.com/zyedidia/micro ) 1.4.1 compilation fails with 1.12 rc1 on aarch64 while it was working on 1.11. The error message is cryptic to me and I didn't find any info ducking it:
BUILDSTDERR: cd /builddir/build/BUILD/micro-1.4.1/_build/src/github.com/zyedidia/micro/cmd/micro
BUILDSTDERR: /usr/lib/golang/pkg/tool/linux_arm64/compile -o $WORK/b001/_pkg_.a -trimpath $WORK/b001 -shared -p main -complete -installsuffix shared -buildid yOmOqxe3SyScT76ADNYq/yOmOqxe3SyScT76ADNYq -goversion go1.12rc1 -D "" -importcfg $WORK/b001/importcfg -pack ./actions.go ./actions_posix.go ./autocomplete.go ./bindings.go ./buffer.go ./cellview.go ./colorscheme.go ./command.go ./cursor.go ./eventhandler.go ./highlighter.go ./job.go ./keymenu.go ./lineArray.go ./loc.go ./lua.go ./messenger.go ./micro.go ./plugin.go ./pluginmanager.go ./rtfiles.go ./runtime.go ./scrollbar.go ./search.go ./settings.go ./shell.go ./shell_supported.go ./split_tree.go ./stack.go ./statusline.go ./tab.go ./terminal.go ./util.go ./view.go
BUILDSTDERR: # github.com/zyedidia/micro/cmd/micro
BUILDSTDERR: cmd/micro/terminal.go:150:25: illegal combination: 00560 (/builddir/build/BUILD/micro-1.4.1/_build/src/github.com/zyedidia/micro/cmd/micro/terminal.go:125) TSTW $1689262177517664, R3
BUILDSTDERR: error: Bad exit status from /var/tmp/rpm-tmp.N9zjPx (%build)
I don't have access to the build system so I can't give more infos than this. It seems to me it's a regression since 1.11 was building fine.
Thanks for the report. Can you provide the full output from go env? It would be helpful in narrowing this down.
Edit: I see you said "I don't have access to the build system so I can't give more infos than this." If go env is hard to come by, can you at least clarify which exact values of GOOS and GOARCH were used for compilation? Was it GOOS=linux GOARCH=arm64 or something else?
Thanks for the report. Can you provide the full output from
go env? It would be helpful in narrowing this down.
I managed to get it:
GOARCH="arm64"
GOBIN=""
GOCACHE="/builddir/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/builddir/build/BUILD/micro-1.4.1/_build:/usr/share/gocode"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_arm64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
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 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build446101992=/tmp/go-build -gno-record-gcc-switches"
I can confirm this. Simply assembling TSTW $1689262177517664, R3 now fails. It seems it starts to fail since CL https://go-review.googlesource.com/c/go/+/118796 (86ce1cb060446bcee2454080c7f55e754dbf7f82). I'll take a look tomorrow.
cc @zhangfannie
Thanks for that!
I can reproduce this by cross-compiling on my Mac:
$ export GOPATH=/tmp/empty
$ go get -d github.com/zyedidia/micro/cmd/micro
$ cd $GOPATH/src/github.com/zyedidia/micro/cmd/micro
$ git checkout v1.4.1
$ GOOS=linux GOARCH=arm64 go1.11.5 install
$ GOOS=linux GOARCH=arm64 go1.12rc1 install
# github.com/zyedidia/micro/cmd/micro
<autogenerated>:1: illegal combination: 00560 (/tmp/empty/src/github.com/zyedidia/micro/cmd/micro/terminal.go:125) TSTW $1689262177517664, R3
It is a regression compared to Go 1.11.5, so marking as release-blocker for 1.12 for now.
/cc @cherrymui Who would be good to ping about this? Edit: You beat me to it. :)
@cherrymui I am looking into it. Thank you.
@cherrymui I figured out the cause of the failure, it is indeed caused by my patch https://go-review.googlesource.com/c/go/+/118796。 This CL did not correctly consider the ADDCON2 class correctly causint this issue. Fix CL is ready, I will submit it ASAP. Thank you.
Change https://golang.org/cl/163259 mentions this issue: cmd/internal/obj/arm64: fix the bug assembling TSTW
Man, you guys rock!
Change https://golang.org/cl/163419 mentions this issue: [release-branch.go1.12] cmd/internal/obj/arm64: fix the bug assembling TSTW
Well, the fix didn't make it into 1.12, but it will be in 1.12.1.