diff options
author | Rui Ueyama <ruiu@google.com> | 2014-01-31 05:43:12 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2014-01-31 05:43:12 +0000 |
commit | 14876abb3df3231ec6def07f62fd8a79a301b17b (patch) | |
tree | 78cb1bab65592f8b34840b47261e3ade1687e386 | |
parent | 2cbf38e36f8d208f64286065feaa3081e25a9b7c (diff) | |
download | bcm5719-llvm-14876abb3df3231ec6def07f62fd8a79a301b17b.tar.gz bcm5719-llvm-14876abb3df3231ec6def07f62fd8a79a301b17b.zip |
[PECOFF] Set the correct PE header field value.
The charcateristics field should not have IMAGE_FILE_32BIT_MACHINE bit but have
IMAGE_FILE_LARGE_ADDRESS_AWARE bit for PE32+.
llvm-svn: 200518
-rw-r--r-- | lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp | 7 | ||||
-rw-r--r-- | lld/test/pecoff/pe32plus.test | 4 |
2 files changed, 6 insertions, 5 deletions
diff --git a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp index 71daf5ad27e..d9068a9a783 100644 --- a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp @@ -331,9 +331,10 @@ PEHeaderChunk<PEHeader>::PEHeaderChunk(const PECOFFLinkingContext &ctx) _coffHeader.TimeDateStamp = time(nullptr); // Attributes of the executable. - uint16_t characteristics = llvm::COFF::IMAGE_FILE_32BIT_MACHINE | - llvm::COFF::IMAGE_FILE_EXECUTABLE_IMAGE; - if (ctx.getLargeAddressAware()) + uint16_t characteristics = llvm::COFF::IMAGE_FILE_EXECUTABLE_IMAGE; + if (!ctx.is64Bit()) + characteristics |= llvm::COFF::IMAGE_FILE_32BIT_MACHINE; + if (ctx.getLargeAddressAware() || ctx.is64Bit()) characteristics |= llvm::COFF::IMAGE_FILE_LARGE_ADDRESS_AWARE; if (ctx.getSwapRunFromCD()) characteristics |= llvm::COFF::IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP; diff --git a/lld/test/pecoff/pe32plus.test b/lld/test/pecoff/pe32plus.test index fff670ba054..ea20d1b851b 100644 --- a/lld/test/pecoff/pe32plus.test +++ b/lld/test/pecoff/pe32plus.test @@ -14,9 +14,9 @@ CHECK-NEXT: TimeDateStamp: CHECK-NEXT: PointerToSymbolTable: 0x0 CHECK-NEXT: SymbolCount: 0 CHECK-NEXT: OptionalHeaderSize: 240 -CHECK-NEXT: Characteristics [ (0x102) -CHECK-NEXT: IMAGE_FILE_32BIT_MACHINE (0x100) +CHECK-NEXT: Characteristics [ (0x22) CHECK-NEXT: IMAGE_FILE_EXECUTABLE_IMAGE (0x2) +CHECK-NEXT: IMAGE_FILE_LARGE_ADDRESS_AWARE (0x20) CHECK-NEXT: ] CHECK-NEXT: } CHECK-NEXT: ImageOptionalHeader { |