mirror of
https://github.com/golang/go.git
synced 2025-05-06 08:03:03 +00:00
cmd/link: resolve relocations to .TOC. symbol
CL 404296 breaks the PPC64LE build because the .TOC. symbol is visibility hidden and was skipped from the "unresolved symbol" check (the check needs to be fix). In face, the .TOC. symbol is special in that it doesn't have a type but we have special logic to assign a value to it in the address pass. So we can actually resolve a relocation to .TOC.. We already have a special case for PIE. It also applies to non-PIE as well. Fix PPC64LE builds. Change-Id: Iaf7e36f10c4d0a40fc56b2135e5ff38815e203b1 Reviewed-on: https://go-review.googlesource.com/c/go/+/404302 Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: David Chase <drchase@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
a4af356075
commit
12420f9c01
@ -227,8 +227,10 @@ func (st *relocSymState) relocsym(s loader.Sym, P []byte) {
|
|||||||
// DWARF info between the compiler and linker.
|
// DWARF info between the compiler and linker.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
} else if target.IsPPC64() && target.IsPIE() && ldr.SymName(rs) == ".TOC." {
|
} else if target.IsPPC64() && ldr.SymName(rs) == ".TOC." {
|
||||||
// This is a TOC relative relocation generated from a go object. It is safe to resolve.
|
// TOC symbol doesn't have a type but we do assign a value
|
||||||
|
// (see the address pass) and we can resolve it.
|
||||||
|
// TODO: give it a type.
|
||||||
} else {
|
} else {
|
||||||
st.err.errorUnresolved(ldr, s, rs)
|
st.err.errorUnresolved(ldr, s, rs)
|
||||||
continue
|
continue
|
||||||
|
Loading…
x
Reference in New Issue
Block a user