diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-10-29 14:38:11 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-29 16:17:55 +0100 |
commit | 175489f10200518d9b216266b7a469666a0e96c8 (patch) | |
tree | 6148280a6d09833de749b1e43e75af37c906b099 /qmake | |
parent | 2a704239eaf6edd40b2686c3a4ce9be20f95c53b (diff) |
fix /SAFESEH linker option for VS >= 2010
In VS 2010 and newer the /SAFESEH linker option is not passed as
additional option but is represented by the property
ImageHasSafeExceptionHandlers.
Task-number: QTBUG-34392
Change-Id: I3bd19078e695716050dd20736b6bc589bcb1cefd
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 10 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 1 |
3 files changed, 9 insertions, 4 deletions
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index a83f8f364b..3f16a7625e 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -147,6 +147,7 @@ const char _HeapReserveSize[] = "HeapReserveSize"; const char _IgnoreAllDefaultLibraries[] = "IgnoreAllDefaultLibraries"; const char _IgnoreEmbeddedIDL[] = "IgnoreEmbeddedIDL"; const char _IgnoreImportLibrary[] = "IgnoreImportLibrary"; +const char _ImageHasSafeExceptionHandlers[] = "ImageHasSafeExceptionHandlers"; const char _IgnoreSpecificDefaultLibraries[] = "IgnoreSpecificDefaultLibraries"; const char _IgnoreStandardIncludePath[] = "IgnoreStandardIncludePath"; const char _ImportLibrary[] = "ImportLibrary"; @@ -1494,6 +1495,7 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCLinkerTool &tool) << attrTagT(_IgnoreAllDefaultLibraries, tool.IgnoreAllDefaultLibraries) << attrTagT(_IgnoreEmbeddedIDL, tool.IgnoreEmbeddedIDL) << attrTagT(_IgnoreImportLibrary, tool.IgnoreImportLibrary) + << attrTagT(_ImageHasSafeExceptionHandlers, tool.ImageHasSafeExceptionHandlers) << attrTagX(_IgnoreSpecificDefaultLibraries, tool.IgnoreDefaultLibraryNames, ";") << attrTagS(_ImportLibrary, tool.ImportLibrary) << attrTagS(_KeyContainer, tool.KeyContainer) diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index 09213bec8e..fa0426a894 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -1172,6 +1172,7 @@ VCLinkerTool::VCLinkerTool() IgnoreAllDefaultLibraries(unset), IgnoreEmbeddedIDL(unset), IgnoreImportLibrary(_True), + ImageHasSafeExceptionHandlers(unset), LargeAddressAware(addrAwareDefault), LinkDLL(unset), LinkIncremental(linkIncrementalDefault), @@ -1654,11 +1655,12 @@ bool VCLinkerTool::parseOption(const char* option) StackCommitSize = both[1].toLongLong(); } break; - case 0x75AA4D8: // /SAFESH:{NO} - { + case 0x75AA4D8: // /SAFESEH:{NO} + if (config->CompilerVersion >= NET2010) + ImageHasSafeExceptionHandlers = (option[8] == ':') ? _False : _True; + else AdditionalOptions += option; - break; - } + break; case 0x9B3C00D: case 0x78dc00d: // /SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE}[,major[.minor]] { diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h index 4e19a43a8c..58b528301c 100644 --- a/qmake/generators/win32/msvc_objectmodel.h +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -615,6 +615,7 @@ public: QStringList IgnoreDefaultLibraryNames; triState IgnoreEmbeddedIDL; triState IgnoreImportLibrary; + triState ImageHasSafeExceptionHandlers; QString ImportLibrary; addressAwarenessType LargeAddressAware; triState LinkDLL; |