COFF: Add /LargeAddressAware command line option.
llvm-svn: 243373
This commit is contained in:
parent
7e387a68de
commit
4d54534627
|
@ -118,6 +118,7 @@ struct Configuration {
|
|||
bool NxCompat = true;
|
||||
bool AllowIsolation = true;
|
||||
bool TerminalServerAware = true;
|
||||
bool LargeAddressAware = false;
|
||||
};
|
||||
|
||||
extern Configuration *Config;
|
||||
|
|
|
@ -555,6 +555,10 @@ bool LinkerDriver::link(llvm::ArrayRef<const char *> ArgsArr) {
|
|||
OwningMBs.push_back(std::move(MB)); // take ownership
|
||||
}
|
||||
|
||||
// Handle /largeaddressaware
|
||||
if (Config->is64() || Args.hasArg(OPT_largeaddressaware))
|
||||
Config->LargeAddressAware = true;
|
||||
|
||||
// Handle /entry and /dll
|
||||
if (auto *Arg = Args.getLastArg(OPT_entry)) {
|
||||
Config->Entry = addUndefined(mangle(Arg->getValue()));
|
||||
|
|
|
@ -435,11 +435,10 @@ template <typename PEHeaderTy> void Writer::writeHeader() {
|
|||
COFF->Machine = Config->Machine;
|
||||
COFF->NumberOfSections = OutputSections.size();
|
||||
COFF->Characteristics = IMAGE_FILE_EXECUTABLE_IMAGE;
|
||||
if (Config->is64()) {
|
||||
if (Config->LargeAddressAware)
|
||||
COFF->Characteristics |= IMAGE_FILE_LARGE_ADDRESS_AWARE;
|
||||
} else {
|
||||
if (!Config->is64())
|
||||
COFF->Characteristics |= IMAGE_FILE_32BIT_MACHINE;
|
||||
}
|
||||
if (Config->DLL)
|
||||
COFF->Characteristics |= IMAGE_FILE_DLL;
|
||||
if (!Config->Relocatable)
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# RUN: yaml2obj < %p/Inputs/hello32.yaml > %t.obj
|
||||
# RUN: lld -flavor link2 %t.obj %p/Inputs/std32.lib /subsystem:console \
|
||||
# RUN: /entry:main@0 /out:%t.exe /largeaddressaware
|
||||
# RUN: llvm-readobj -file-headers %t.exe | FileCheck -check-prefix=HEADER %s
|
||||
|
||||
HEADER: Format: COFF-i386
|
||||
HEADER-NEXT: Arch: i386
|
||||
HEADER-NEXT: AddressSize: 32bit
|
||||
HEADER-NEXT: ImageFileHeader {
|
||||
HEADER-NEXT: Machine: IMAGE_FILE_MACHINE_I386 (0x14C)
|
||||
HEADER-NEXT: SectionCount: 4
|
||||
HEADER-NEXT: TimeDateStamp: 1970-01-01 00:00:00 (0x0)
|
||||
HEADER-NEXT: PointerToSymbolTable: 0x0
|
||||
HEADER-NEXT: SymbolCount: 0
|
||||
HEADER-NEXT: OptionalHeaderSize: 224
|
||||
HEADER-NEXT: Characteristics [ (0x122)
|
||||
HEADER-NEXT: IMAGE_FILE_32BIT_MACHINE (0x100)
|
||||
HEADER-NEXT: IMAGE_FILE_EXECUTABLE_IMAGE (0x2)
|
||||
HEADER-NEXT: IMAGE_FILE_LARGE_ADDRESS_AWARE (0x20)
|
||||
HEADER-NEXT: ]
|
||||
HEADER-NEXT: }
|
Loading…
Reference in New Issue