• Elias Naur's avatar
    liblink, cmd/5a, cmd/5l: restore cgo on older ARM processors · 1dd4da14
    Elias Naur authored
    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
    1dd4da14
a.y 11.2 KB