]> Cypherpunks repositories - gostls13.git/commit
liblink, cmd/5a, cmd/5l: restore cgo on older ARM processors
authorElias Naur <elias.naur@gmail.com>
Mon, 3 Feb 2014 22:07:54 +0000 (14:07 -0800)
committerIan Lance Taylor <iant@golang.org>
Mon, 3 Feb 2014 22:07:54 +0000 (14:07 -0800)
commit1dd4da14591a25748f90a42ef35fa360ff8edde2
tree2d1c3e79d0afb5fc12f2ff4a5208b7b5a1c7838a
parente6d8bfe218a5f387d7aceddcaee5067a59181838
liblink, cmd/5a, cmd/5l: restore cgo on older ARM processors

CL 56120043 fixed TLS handling on ARM after the introduction of
liblink but left older ARM processors broken.

Before liblink, the MRC instruction was replaced with a fallback
on older ARMs. CL 56120043 removed that, because the rewrite matched
bit patterns on the AWORD pseudo-instruction and could therefore change
unrelated AWORDs that happened to match.

This CL adds an AMRC instruction to encode both MRC and MCR previously
encoded as AWORDs. Then, in liblink, the AMRC instructions are either
rewritten to AWORD, or, on goarm < 7, replaced with a branch to the
fallback.

./all.bash completes successfully on an ARMv7 with either GOARM=7 or
GOARM=5. I have verified that the fallback is indeed present in both
runtime.save_gm and runtime.load_gm when GOARM=5 but not when GOARM=7.

If all goes well, this should fix the armv5 builders.

LGTM=iant
R=iant, rsc
CC=golang-codereviews
https://golang.org/cl/55540044
src/cmd/5a/a.y
src/cmd/5a/y.tab.c
src/cmd/5a/y.tab.h
src/cmd/5l/5.out.h
src/liblink/obj5.c