[lld] r238568 - Add /stack option.

Rui Ueyama ruiu at google.com
Fri May 29 09:21:12 PDT 2015


Author: ruiu
Date: Fri May 29 11:21:11 2015
New Revision: 238568

URL: http://llvm.org/viewvc/llvm-project?rev=238568&view=rev
Log:
Add /stack option.

Added:
    lld/trunk/test/COFF/stack.test
Modified:
    lld/trunk/COFF/Config.h
    lld/trunk/COFF/Driver.cpp
    lld/trunk/COFF/Writer.cpp

Modified: lld/trunk/COFF/Config.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Config.h?rev=238568&r1=238567&r2=238568&view=diff
==============================================================================
--- lld/trunk/COFF/Config.h (original)
+++ lld/trunk/COFF/Config.h Fri May 29 11:21:11 2015
@@ -24,7 +24,10 @@ public:
   llvm::COFF::MachineTypes MachineType = llvm::COFF::IMAGE_FILE_MACHINE_AMD64;
   bool Verbose = false;
   std::string EntryName = "mainCRTStartup";
+
   uint64_t ImageBase = 0x140000000;
+  uint64_t StackReserve = 1024 * 1024;
+  uint64_t StackCommit = 4096;
 
   bool insertFile(llvm::StringRef Path) {
     return VisitedFiles.insert(Path.lower()).second;

Modified: lld/trunk/COFF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=238568&r1=238567&r2=238568&view=diff
==============================================================================
--- lld/trunk/COFF/Driver.cpp (original)
+++ lld/trunk/COFF/Driver.cpp Fri May 29 11:21:11 2015
@@ -129,7 +129,16 @@ bool link(int Argc, const char *Argv[])
   // Handle /base
   if (auto *Arg = Args->getLastArg(OPT_base)) {
     if (auto EC = parseNumbers(Arg->getValue(), &Config->ImageBase)) {
-      llvm::errs() << EC.message() << "\n";
+      llvm::errs() << "/base: " << EC.message() << "\n";
+      return false;
+    }
+  }
+
+  // Handle /stack
+  if (auto *Arg = Args->getLastArg(OPT_stack)) {
+    if (auto EC = parseNumbers(Arg->getValue(), &Config->StackReserve,
+                               &Config->StackCommit)) {
+      llvm::errs() << "/stack: " << EC.message() << "\n";
       return false;
     }
   }

Modified: lld/trunk/COFF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Writer.cpp?rev=238568&r1=238567&r2=238568&view=diff
==============================================================================
--- lld/trunk/COFF/Writer.cpp (original)
+++ lld/trunk/COFF/Writer.cpp Fri May 29 11:21:11 2015
@@ -265,8 +265,8 @@ void Writer::writeHeader() {
   PE->SizeOfImage = SizeOfImage;
   PE->SizeOfHeaders = SizeOfHeaders;
   PE->AddressOfEntryPoint = Entry->getRVA();
-  PE->SizeOfStackReserve = 1024 * 1024;
-  PE->SizeOfStackCommit = 4096;
+  PE->SizeOfStackReserve = Config->StackReserve;
+  PE->SizeOfStackCommit = Config->StackCommit;
   PE->SizeOfHeapReserve = 1024 * 1024;
   PE->SizeOfHeapCommit = 4096;
   PE->NumberOfRvaAndSize = NumberfOfDataDirectory;

Added: lld/trunk/test/COFF/stack.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/stack.test?rev=238568&view=auto
==============================================================================
--- lld/trunk/test/COFF/stack.test (added)
+++ lld/trunk/test/COFF/stack.test Fri May 29 11:21:11 2015
@@ -0,0 +1,19 @@
+# RUN: lld -flavor link2 /entry:main /out:%t.exe %p/Inputs/ret42.obj
+# RUN: llvm-readobj -file-headers %t.exe | FileCheck -check-prefix=DEFAULT %s
+
+DEFAULT: SizeOfStackReserve: 1048576
+DEFAULT: SizeOfStackCommit: 4096
+
+# RUN: lld -flavor link2 /entry:main /out:%t.exe /stack:0x3000 \
+# RUN:   %p/Inputs/ret42.obj
+# RUN: llvm-readobj -file-headers %t.exe | FileCheck -check-prefix=CHECK1 %s
+
+CHECK1: SizeOfStackReserve: 12288
+CHECK1: SizeOfStackCommit: 4096
+
+# RUN: lld -flavor link2 /entry:main /out:%t.exe /stack:0x5000,0x3000 \
+# RUN:   %p/Inputs/ret42.obj
+# RUN: llvm-readobj -file-headers %t.exe | FileCheck -check-prefix=CHECK2 %s
+
+CHECK2: SizeOfStackReserve: 20480
+CHECK2: SizeOfStackCommit: 12288





More information about the llvm-commits mailing list