[lld] r185102 - [PECOFF][Writer] Fix DLLCharacteristic flag in image header.
Rui Ueyama
ruiu at google.com
Thu Jun 27 14:03:45 PDT 2013
Author: ruiu
Date: Thu Jun 27 16:03:44 2013
New Revision: 185102
URL: http://llvm.org/viewvc/llvm-project?rev=185102&view=rev
Log:
[PECOFF][Writer] Fix DLLCharacteristic flag in image header.
Modified:
lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
lld/trunk/test/pecoff/trivial.test
Modified: lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp?rev=185102&r1=185101&r2=185102&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp (original)
+++ lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp Thu Jun 27 16:03:44 2013
@@ -182,8 +182,14 @@ public:
// Must be multiple of FileAlignment.
_peHeader.SizeOfHeaders = 512;
_peHeader.Subsystem = targetInfo.getSubsystem();
+
+ // Despite its name, DLL characteristics field has meaning both for
+ // executables and DLLs. We are not very sure if the following bits must
+ // be set, but regular binaries seem to have these bits, so we follow
+ // them.
uint16_t dllCharacteristics =
llvm::COFF::IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE |
+ llvm::COFF::IMAGE_DLL_CHARACTERISTICS_NO_SEH |
llvm::COFF::IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE;
if (targetInfo.getNxCompat())
dllCharacteristics |= llvm::COFF::IMAGE_DLL_CHARACTERISTICS_NX_COMPAT;
Modified: lld/trunk/test/pecoff/trivial.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/trivial.test?rev=185102&r1=185101&r2=185102&view=diff
==============================================================================
--- lld/trunk/test/pecoff/trivial.test (original)
+++ lld/trunk/test/pecoff/trivial.test Thu Jun 27 16:03:44 2013
@@ -42,8 +42,9 @@ FILE: MinorSubsystemVersion: 11
FILE: SizeOfImage: 8192
FILE: SizeOfHeaders: 512
FILE: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
-FILE: Subsystem [ (0x8140)
+FILE: Subsystem [ (0x8540)
FILE: IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40)
+FILE: IMAGE_DLL_CHARACTERISTICS_NO_SEH (0x400)
FILE: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100)
FILE: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE (0x8000)
FILE: ]
More information about the llvm-commits
mailing list