diff options
| author | Rui Ueyama <ruiu@google.com> | 2014-02-26 02:31:53 +0000 |
|---|---|---|
| committer | Rui Ueyama <ruiu@google.com> | 2014-02-26 02:31:53 +0000 |
| commit | f9be75f538f4712acf98cde444e1176ce775b806 (patch) | |
| tree | ee79cc2809c57fe5029ea032c9169bef10509d96 | |
| parent | 16da3240517366168e9d0618eff2d8ce957024df (diff) | |
| download | bcm5719-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.cpp | 4 | ||||
| -rw-r--r-- | lld/test/pecoff/pe32plus.test | 3 | ||||
| -rw-r--r-- | lld/test/pecoff/trivial.test | 3 |
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: ] |

