summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter
diff options
context:
space:
mode:
Diffstat (limited to 'lld/lib/ReaderWriter')
-rw-r--r--lld/lib/ReaderWriter/PECOFF/PECOFFTargetInfo.cpp7
-rw-r--r--lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp4
2 files changed, 9 insertions, 2 deletions
diff --git a/lld/lib/ReaderWriter/PECOFF/PECOFFTargetInfo.cpp b/lld/lib/ReaderWriter/PECOFF/PECOFFTargetInfo.cpp
index 516479e65d5..a4c3e7ec4ab 100644
--- a/lld/lib/ReaderWriter/PECOFF/PECOFFTargetInfo.cpp
+++ b/lld/lib/ReaderWriter/PECOFF/PECOFFTargetInfo.cpp
@@ -23,6 +23,13 @@ error_code PECOFFTargetInfo::parseFile(
}
bool PECOFFTargetInfo::validate(raw_ostream &diagnostics) {
+ if (_stackReserve < _stackCommit) {
+ diagnostics << "Invalid stack size: reserve size must be equal to or "
+ << "greater than commit size, but got "
+ << _stackCommit << " and " << _stackReserve << ".\n";
+ return true;
+ }
+
_reader = createReaderPECOFF(*this);
_writer = createWriterPECOFF(*this);
return false;
diff --git a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
index af54e275f45..f8e4ae9f13d 100644
--- a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
+++ b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
@@ -155,8 +155,8 @@ public:
| llvm::COFF::IMAGE_DLL_CHARACTERISTICS_NX_COMPAT
| llvm::COFF::IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE;
- _peHeader.SizeOfStackReserve = 0x100000;
- _peHeader.SizeOfStackCommit = 0x1000;
+ _peHeader.SizeOfStackReserve = targetInfo.getStackReserve();
+ _peHeader.SizeOfStackCommit = targetInfo.getStackCommit();
_peHeader.SizeOfHeapReserve = 0x100000;
_peHeader.SizeOfHeapCommit = 0x1000;
OpenPOWER on IntegriCloud