mirror of
https://github.com/golang/go
synced 2024-11-07 09:06:20 -07:00
[dev.link] cmd/link: on AIX, use relocation to locate target symbol from TOC symbol
On AIX, a TOC symbol always has a relocation to its target symbol. Instead of using name lookup to locate the target symbol, we can just use the relocation. Using name lookup, besides being less efficient, needs to provide the right symbol version. In this particular case, we are looking for a data symbol so it is almost always version 0. But in case that it is a text symbol, we may get an ABIALIAS symbol, which does not have its Sect set. Change-Id: I1ecfd284b04a86bbbc450059ee89d99d40493e51 Reviewed-on: https://go-review.googlesource.com/c/go/+/201019 Reviewed-by: Than McIntosh <thanm@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
c9f633487b
commit
cfa421c9a6
@ -550,7 +550,7 @@ func archreloctoc(ctxt *ld.Link, r *sym.Reloc, s *sym.Symbol, val int64) int64 {
|
|||||||
const prefix = "TOC."
|
const prefix = "TOC."
|
||||||
var tarSym *sym.Symbol
|
var tarSym *sym.Symbol
|
||||||
if strings.HasPrefix(r.Sym.Name, prefix) {
|
if strings.HasPrefix(r.Sym.Name, prefix) {
|
||||||
tarSym = ctxt.Syms.ROLookup(strings.TrimPrefix(r.Sym.Name, prefix), 0)
|
tarSym = r.Sym.R[0].Sym
|
||||||
} else {
|
} else {
|
||||||
ld.Errorf(s, "archreloctoc called for a symbol without TOC anchor")
|
ld.Errorf(s, "archreloctoc called for a symbol without TOC anchor")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user