From c0e1301b8c137d4b9f93067469b9608c252f2cea Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 20 Apr 2021 15:00:35 -0400 Subject: [PATCH] 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 --- src/cmd/link/internal/ld/pe.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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. -- 2.50.0