mirror of
https://github.com/golang/go
synced 2024-09-30 05:24:29 -06:00
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>
This commit is contained in:
parent
24902c5be6
commit
3a6cd4c72d
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user