[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