From: Russ Cox Date: Fri, 31 Jul 2015 02:35:56 +0000 (-0400) Subject: cmd/internal/obj/arm: fix large stack offsets on nacl/arm X-Git-Tag: go1.5rc1~64 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=782eea0190381b849e8e4b82bef46c1e3f281f97;p=gostls13.git cmd/internal/obj/arm: fix large stack offsets on nacl/arm The code already fixed large non-stack offsets but explicitly excluded stack references. Perhaps you could get away with that before, but current versions of nacl reject such stack references. Rewrite them the same as the others. For #11956 but probably not the last problem. Change-Id: I0db4e3a1ed4f88ccddf0d30228982960091d9fb7 Reviewed-on: https://go-review.googlesource.com/13010 Reviewed-by: Dave Cheney --- diff --git a/src/cmd/internal/obj/arm/asm5.go b/src/cmd/internal/obj/arm/asm5.go index e50dcf56f8..610637c42e 100644 --- a/src/cmd/internal/obj/arm/asm5.go +++ b/src/cmd/internal/obj/arm/asm5.go @@ -472,8 +472,8 @@ func asmoutnacl(ctxt *obj.Link, origPC int32, p *obj.Prog, o *Optab, out []uint3 break } - if (p.To.Type == obj.TYPE_MEM && p.To.Reg != REG_R13 && p.To.Reg != REG_R9) || // MOVW Rx, X(Ry), y != 13 && y != 9 - (p.From.Type == obj.TYPE_MEM && p.From.Reg != REG_R13 && p.From.Reg != REG_R9) { // MOVW X(Rx), Ry, x != 13 && x != 9 + if (p.To.Type == obj.TYPE_MEM && p.To.Reg != REG_R9) || // MOVW Rx, X(Ry), y != 9 + (p.From.Type == obj.TYPE_MEM && p.From.Reg != REG_R9) { // MOVW X(Rx), Ry, x != 9 var a *obj.Addr if p.To.Type == obj.TYPE_MEM { a = &p.To