From: Cherry Mui Date: Thu, 16 Jun 2022 15:35:40 +0000 (-0400) Subject: cmd/link: consider alignment in carrier symbol size calculation X-Git-Tag: go1.19rc1~110 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=1d9d99b7ce279f2af928f79cbc5906d99f29bb67;p=gostls13.git cmd/link: consider alignment in carrier symbol size calculation Currently, when we calculate the size of a carrier symbol, we use the previous symbol's end address as the start. But the symbol actually starts after applying the alignment. Do this in the size calculation. Should fix AIX build. Updates #53372. Change-Id: I17942b1fe8027dce12b78c8e8c80ea6cebcee240 Reviewed-on: https://go-review.googlesource.com/c/go/+/412734 Run-TryBot: Cherry Mui TryBot-Result: Gopher Robot Reviewed-by: Than McIntosh --- diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go index f12cb78fb8..cb2afeaa9a 100644 --- a/src/cmd/link/internal/ld/data.go +++ b/src/cmd/link/internal/ld/data.go @@ -1854,6 +1854,9 @@ func (state *dodataState) allocateDataSections(ctxt *Link) { } for _, symn := range sym.ReadOnly { symnStartValue := state.datsize + if len(state.data[symn]) != 0 { + symnStartValue = aligndatsize(state, symnStartValue, state.data[symn][0]) + } state.assignToSection(sect, symn, sym.SRODATA) setCarrierSize(symn, state.datsize-symnStartValue) if ctxt.HeadType == objabi.Haix { @@ -1935,6 +1938,9 @@ func (state *dodataState) allocateDataSections(ctxt *Link) { symn := sym.RelROMap[symnro] symnStartValue := state.datsize + if len(state.data[symn]) != 0 { + symnStartValue = aligndatsize(state, symnStartValue, state.data[symn][0]) + } for _, s := range state.data[symn] { outer := ldr.OuterSym(s)