mirror of
https://github.com/golang/go
synced 2024-11-07 01:56:17 -07:00
cmd/link: fix the size of typerel.* with c-archive buildmode
With buildmode=c-archive, "runtime.types" type isn't STYPE but STYPERELRO. On AIX, this symbol is present in the symbol table and not under typerel.* outersymbol. Therefore, the size of typerel.* must be adapted. Fixes #35342 Change-Id: Ib982c6557d9b41bc3d8775e4825650897f9e0ee6 Reviewed-on: https://go-review.googlesource.com/c/go/+/205338 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
0c5d545ccd
commit
6dc250f456
@ -578,13 +578,14 @@ func xcoffUpdateOuterSize(ctxt *Link, size int64, stype sym.SymKind) {
|
|||||||
// Nothing to do
|
// Nothing to do
|
||||||
case sym.STYPERELRO:
|
case sym.STYPERELRO:
|
||||||
if ctxt.UseRelro() && (ctxt.BuildMode == BuildModeCArchive || ctxt.BuildMode == BuildModeCShared || ctxt.BuildMode == BuildModePIE) {
|
if ctxt.UseRelro() && (ctxt.BuildMode == BuildModeCArchive || ctxt.BuildMode == BuildModeCShared || ctxt.BuildMode == BuildModePIE) {
|
||||||
outerSymSize["typerel.*"] = size
|
// runtime.types size must be removed, as it's a real symbol.
|
||||||
|
outerSymSize["typerel.*"] = size - ctxt.Syms.ROLookup("runtime.types", 0).Size
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fallthrough
|
fallthrough
|
||||||
case sym.STYPE:
|
case sym.STYPE:
|
||||||
if !ctxt.DynlinkingGo() {
|
if !ctxt.DynlinkingGo() {
|
||||||
// runtime.types size must be removed.
|
// runtime.types size must be removed, as it's a real symbol.
|
||||||
outerSymSize["type.*"] = size - ctxt.Syms.ROLookup("runtime.types", 0).Size
|
outerSymSize["type.*"] = size - ctxt.Syms.ROLookup("runtime.types", 0).Size
|
||||||
}
|
}
|
||||||
case sym.SGOSTRING:
|
case sym.SGOSTRING:
|
||||||
|
Loading…
Reference in New Issue
Block a user