mirror of https://github.com/golang/go.git
cmd/link: preserve alignment for stackmap symbols
Stackmap symbols are content-addressable, so it may be dedup'd with another symbol with same content. We want stackmap symbols 4-byte aligned. But if it dedup's with another symbol with larger alignment, preserve that alignment. Fixes #42071. Change-Id: I1616dd2b0c175b2aac8f68782a5c7a62053c0b57 Reviewed-on: https://go-review.googlesource.com/c/go/+/264897 Trust: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Joel Sing <joel@sing.id.au> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
c80022204e
commit
404899f6b5
|
|
@ -580,8 +580,12 @@ func (ctxt *Link) symtab(pcln *pclntab) []sym.SymKind {
|
|||
symGroupType[s] = sym.SGOFUNC
|
||||
ldr.SetAttrNotInSymbolTable(s, true)
|
||||
ldr.SetCarrierSym(s, symgofunc)
|
||||
const align = 4
|
||||
ldr.SetSymAlign(s, align)
|
||||
align := int32(4)
|
||||
if a := ldr.SymAlign(s); a < align {
|
||||
ldr.SetSymAlign(s, align)
|
||||
} else {
|
||||
align = a
|
||||
}
|
||||
liveness += (ldr.SymSize(s) + int64(align) - 1) &^ (int64(align) - 1)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue