From: Shenghou Ma Date: Tue, 1 Sep 2015 23:58:31 +0000 (-0400) Subject: cmd/link/internal/ld: align PE .text section to 32-byte when external linking X-Git-Tag: go1.6beta1~1181 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=821e124c24c2b2d753be22a04a3b20b7bf579627;p=gostls13.git cmd/link/internal/ld: align PE .text section to 32-byte when external linking Some symbols, for example, masks requires 16-byte alignment, and they are placed in the text section. Before this change, the text section is only aligned to 4-byte, and it's making masks unaligned. Fixes #12415. Change-Id: I7767778d1b4f7d3e74c2719a02848350782a4160 Reviewed-on: https://go-review.googlesource.com/14166 Run-TryBot: Minux Ma Reviewed-by: Alex Brainman TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- diff --git a/src/cmd/link/internal/ld/pe.go b/src/cmd/link/internal/ld/pe.go index d5f7e62989..4a7d710856 100644 --- a/src/cmd/link/internal/ld/pe.go +++ b/src/cmd/link/internal/ld/pe.go @@ -1107,6 +1107,11 @@ func Asmbpe() { t := addpesection(".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 + if 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. + t.Characteristics |= IMAGE_SCN_ALIGN_32BYTES + } chksectseg(t, &Segtext) textsect = pensect