summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2014-01-31 05:43:12 +0000
committerRui Ueyama <ruiu@google.com>2014-01-31 05:43:12 +0000
commit14876abb3df3231ec6def07f62fd8a79a301b17b (patch)
tree78cb1bab65592f8b34840b47261e3ade1687e386
parent2cbf38e36f8d208f64286065feaa3081e25a9b7c (diff)
downloadbcm5719-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.cpp7
-rw-r--r--lld/test/pecoff/pe32plus.test4
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 {
OpenPOWER on IntegriCloud