aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/riscv
diff options
context:
space:
mode:
authorJoel Sing <joel@sing.id.au>2020-01-01 01:44:54 +1100
committerJoel Sing <joel@sing.id.au>2020-01-04 04:11:40 +0000
commit3a6cd4c72d5c8fc6c86f074eadaaf3972e591973 (patch)
treee95936b57e76f890a5dbae3b352ac27e2032c3e0 /src/cmd/internal/obj/riscv
parent24902c5be6ba2eac6919879d2e5cb0a7bdadf91c (diff)
downloadgo-3a6cd4c72d5c8fc6c86f074eadaaf3972e591973.tar.xz
cmd/internal/obj/riscv: correct CALL reloc symbol handling
Move the CALL reloc symbol back to p.From.Sym, rather than p.To.Sym - while p.To.Sym is the correct final location, the call to lowerJALR flips the p.To and p.From addresses (and proves that this form of obj.Prog rewriting is not a good idea). Updates #27532 Change-Id: Iaf9fa24b05bda32b963f8d243401c6cd82c1355c Reviewed-on: https://go-review.googlesource.com/c/go/+/212759 Reviewed-by: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/internal/obj/riscv')
-rw-r--r--src/cmd/internal/obj/riscv/obj.go4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/cmd/internal/obj/riscv/obj.go b/src/cmd/internal/obj/riscv/obj.go
index 2e9ac6750b..b024a6a546 100644
--- a/src/cmd/internal/obj/riscv/obj.go
+++ b/src/cmd/internal/obj/riscv/obj.go
@@ -58,14 +58,14 @@ func jalrToSym(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc, lr int16) *ob
p.Mark |= NEED_PCREL_ITYPE_RELOC
p = obj.Appendp(p, newprog)
- // Leave p.To.Sym only for the CALL reloc in assemble.
+ // Leave Sym only for the CALL reloc in assemble.
p.As = AJALR
p.From.Type = obj.TYPE_REG
p.From.Reg = lr
+ p.From.Sym = to.Sym
p.Reg = 0
p.To.Type = obj.TYPE_REG
p.To.Reg = REG_TMP
- p.To.Sym = to.Sym
lowerJALR(p)
return p