diff options
Diffstat (limited to 'lld/lib/ReaderWriter')
| -rw-r--r-- | lld/lib/ReaderWriter/PECOFF/PECOFFTargetInfo.cpp | 7 | ||||
| -rw-r--r-- | lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp | 4 |
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; |

