summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2014-02-26 02:31:53 +0000
committerRui Ueyama <ruiu@google.com>2014-02-26 02:31:53 +0000
commitf9be75f538f4712acf98cde444e1176ce775b806 (patch)
treeee79cc2809c57fe5029ea032c9169bef10509d96
parent16da3240517366168e9d0618eff2d8ce957024df (diff)
downloadbcm5719-llvm-f9be75f538f4712acf98cde444e1176ce775b806.tar.gz
bcm5719-llvm-f9be75f538f4712acf98cde444e1176ce775b806.zip
[PECOFF] Fix DLLCharacteristics field.
IMAGE_DLL_CHARACTERISTICS_NO_SEH flag should be set only when SEH is disabled. llvm-svn: 202215
-rw-r--r--lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp4
-rw-r--r--lld/test/pecoff/pe32plus.test3
-rw-r--r--lld/test/pecoff/trivial.test3
3 files changed, 5 insertions, 5 deletions
diff --git a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
index d9068a9a783..e519887d9e7 100644
--- a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
+++ b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
@@ -385,7 +385,9 @@ PEHeaderChunk<PEHeader>::PEHeaderChunk(const PECOFFLinkingContext &ctx)
// 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_NO_SEH;
+ uint16_t dllCharacteristics = 0;
+ if (ctx.noSEH())
+ dllCharacteristics |= llvm::COFF::IMAGE_DLL_CHARACTERISTICS_NO_SEH;
if (ctx.isTerminalServerAware())
dllCharacteristics |=
llvm::COFF::IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE;
diff --git a/lld/test/pecoff/pe32plus.test b/lld/test/pecoff/pe32plus.test
index f1bc39e8dcf..60f51b01303 100644
--- a/lld/test/pecoff/pe32plus.test
+++ b/lld/test/pecoff/pe32plus.test
@@ -39,9 +39,8 @@ CHECK-NEXT: MinorSubsystemVersion: 0
CHECK-NEXT: SizeOfImage: 12288
CHECK-NEXT: SizeOfHeaders: 512
CHECK-NEXT: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
-CHECK-NEXT: Subsystem [ (0x8540)
+CHECK-NEXT: Subsystem [ (0x8140)
CHECK-NEXT: IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40)
-CHECK-NEXT: IMAGE_DLL_CHARACTERISTICS_NO_SEH (0x400)
CHECK-NEXT: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100)
CHECK-NEXT: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE (0x8000)
CHECK-NEXT: ]
diff --git a/lld/test/pecoff/trivial.test b/lld/test/pecoff/trivial.test
index 6f149d0b21b..9a849854f62 100644
--- a/lld/test/pecoff/trivial.test
+++ b/lld/test/pecoff/trivial.test
@@ -48,9 +48,8 @@ FILE-NEXT: MinorSubsystemVersion: 11
FILE-NEXT: SizeOfImage: 8192
FILE-NEXT: SizeOfHeaders: 512
FILE-NEXT: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
-FILE-NEXT: Subsystem [ (0x8540)
+FILE-NEXT: Subsystem [ (0x8140)
FILE-NEXT: IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40)
-FILE-NEXT: IMAGE_DLL_CHARACTERISTICS_NO_SEH (0x400)
FILE-NEXT: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100)
FILE-NEXT: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE (0x8000)
FILE-NEXT: ]
OpenPOWER on IntegriCloud