[lld] r305929 - [COFF] Set MajorLinkerVersion to 14 instead of 0.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 21 09:42:09 PDT 2017
Author: ruiu
Date: Wed Jun 21 11:42:08 2017
New Revision: 305929
URL: http://llvm.org/viewvc/llvm-project?rev=305929&view=rev
Log:
[COFF] Set MajorLinkerVersion to 14 instead of 0.
This works around a strange interaction with Authenticode signatures,
in which a signed PE executable with {Major,Minor}LinkerVersion = 0.0
fails to validate on Windows 7 (but is OK on Windows 10). Setting the
linker version to 14.0 (which is what VS2015 outputs) makes it work
again.
Patch by Simon Tatham <simon.tatham at arm.com>.
Modified:
lld/trunk/COFF/Writer.cpp
lld/trunk/test/COFF/hello32.test
Modified: lld/trunk/COFF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Writer.cpp?rev=305929&r1=305928&r2=305929&view=diff
==============================================================================
--- lld/trunk/COFF/Writer.cpp (original)
+++ lld/trunk/COFF/Writer.cpp Wed Jun 21 11:42:08 2017
@@ -603,6 +603,15 @@ template <typename PEHeaderTy> void Writ
auto *PE = reinterpret_cast<PEHeaderTy *>(Buf);
Buf += sizeof(*PE);
PE->Magic = Config->is64() ? PE32Header::PE32_PLUS : PE32Header::PE32;
+
+ // If {Major,Minor}LinkerVersion is left at 0.0, then for some
+ // reason signing the resulting PE file with Authenticode produces a
+ // signature that fails to validate on Windows 7 (but is OK on 10).
+ // Set it to 14.0, which is what VS2015 outputs, and which avoids
+ // that problem.
+ PE->MajorLinkerVersion = 14;
+ PE->MinorLinkerVersion = 0;
+
PE->ImageBase = Config->ImageBase;
PE->SectionAlignment = PageSize;
PE->FileAlignment = SectorSize;
Modified: lld/trunk/test/COFF/hello32.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/hello32.test?rev=305929&r1=305928&r2=305929&view=diff
==============================================================================
--- lld/trunk/test/COFF/hello32.test (original)
+++ lld/trunk/test/COFF/hello32.test Wed Jun 21 11:42:08 2017
@@ -21,7 +21,7 @@ HEADER-NEXT: IMAGE_FILE_EXECUTABLE_I
HEADER-NEXT: ]
HEADER-NEXT: }
HEADER-NEXT: ImageOptionalHeader {
-HEADER-NEXT: MajorLinkerVersion: 0
+HEADER-NEXT: MajorLinkerVersion: 14
HEADER-NEXT: MinorLinkerVersion: 0
HEADER-NEXT: SizeOfCode: 512
HEADER-NEXT: SizeOfInitializedData: 1536
More information about the llvm-commits
mailing list