From: Russ Cox Date: Tue, 20 Apr 2021 19:00:35 +0000 (-0400) Subject: cmd/link: fix PE section attributes for windows/arm64 X-Git-Tag: go1.17beta1~471 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c0e1301b8c;p=gostls13.git cmd/link: fix PE section attributes for windows/arm64 The clang-mingw toolchain on windows/arm64 expects .text to NOT be listed as containing initialized data and .dwarf* to be listed as containing initialized data. Neither is true today, resulting in the go .text and .dwarf* not being merged with the system .text and .dwarf*. Having multiple .text and .dwarf* sections confuses all kinds of tools. Change-Id: I1b9832804c5f5d594bf19e8ee0a5ed31bc1d381d Reviewed-on: https://go-review.googlesource.com/c/go/+/312032 Trust: Russ Cox Run-TryBot: Russ Cox TryBot-Result: Go Bot Reviewed-by: Cherry Zhang --- diff --git a/src/cmd/link/internal/ld/pe.go b/src/cmd/link/internal/ld/pe.go index 729b6b2443..30654412b9 100644 --- a/src/cmd/link/internal/ld/pe.go +++ b/src/cmd/link/internal/ld/pe.go @@ -452,7 +452,7 @@ func (f *peFile) addDWARFSection(name string, size int) *peSection { off := f.stringTable.add(name) h := f.addSection(name, size, size) h.shortName = fmt.Sprintf("/%d", off) - h.characteristics = IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_DISCARDABLE + h.characteristics = IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_DISCARDABLE | IMAGE_SCN_CNT_INITIALIZED_DATA return h } @@ -1593,7 +1593,7 @@ func addpersrc(ctxt *Link) { func asmbPe(ctxt *Link) { t := pefile.addSection(".text", int(Segtext.Length), int(Segtext.Length)) - t.characteristics = IMAGE_SCN_CNT_CODE | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ + t.characteristics = IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ if ctxt.LinkMode == LinkExternal { // some data symbols (e.g. masks) end up in the .text section, and they normally // expect larger alignment requirement than the default text section alignment.