From ebd27ff654a5973be404183d3dd517bd13ff06a0 Mon Sep 17 00:00:00 2001 From: Yuhang Zhao <2546789017@qq.com> Date: Sun, 16 Apr 2023 13:19:48 +0800 Subject: windeployqt: improve debug detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MSVC binaries can also be stripped and according to my experiments they still work normally. So we should not limit this check to MinGW only. Change-Id: I026d75a38b94f309ad695cf8f700ed3ac160dd87 Reviewed-by: Oliver Wolff Reviewed-by: Timothée Keller --- src/tools/windeployqt/utils.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/tools/windeployqt/utils.cpp b/src/tools/windeployqt/utils.cpp index ec68d6c3712..cf3356b0078 100644 --- a/src/tools/windeployqt/utils.cpp +++ b/src/tools/windeployqt/utils.cpp @@ -728,13 +728,10 @@ inline QStringList determineDependentLibs(const ImageNtHeader *nth, const void * template inline bool determineDebug(const ImageNtHeader *nth, const void *fileMemory, - bool isMinGW, - QStringList *dependentLibrariesIn, - QString *errorMessage) + QStringList *dependentLibrariesIn, QString *errorMessage) { - // Use logic that's used e.g. in objdump / pfd library - if (isMinGW) - return !(nth->FileHeader.Characteristics & IMAGE_FILE_DEBUG_STRIPPED); + if (nth->FileHeader.Characteristics & IMAGE_FILE_DEBUG_STRIPPED) + return false; const QStringList dependentLibraries = dependentLibrariesIn != nullptr ? *dependentLibrariesIn : @@ -752,7 +749,6 @@ inline bool determineDebug(const ImageNtHeader *nth, const void *fileMemory, template inline void determineDebugAndDependentLibs(const ImageNtHeader *nth, const void *fileMemory, - bool isMinGW, QStringList *dependentLibrariesIn, bool *isDebugIn, QString *errorMessage) { @@ -760,7 +756,7 @@ inline void determineDebugAndDependentLibs(const ImageNtHeader *nth, const void *dependentLibrariesIn = determineDependentLibs(nth, fileMemory, errorMessage); if (isDebugIn) - *isDebugIn = determineDebug(nth, fileMemory, isMinGW, dependentLibrariesIn, errorMessage); + *isDebugIn = determineDebug(nth, fileMemory, dependentLibrariesIn, errorMessage); } // Read a PE executable and determine dependent libraries, word size @@ -814,10 +810,10 @@ bool readPeExecutable(const QString &peExecutableFileName, QString *errorMessage *wordSizeIn = wordSize; if (wordSize == 32) { determineDebugAndDependentLibs(reinterpret_cast(ntHeaders), - fileMemory, isMinGW, dependentLibrariesIn, isDebugIn, errorMessage); + fileMemory, dependentLibrariesIn, isDebugIn, errorMessage); } else { determineDebugAndDependentLibs(reinterpret_cast(ntHeaders), - fileMemory, isMinGW, dependentLibrariesIn, isDebugIn, errorMessage); + fileMemory, dependentLibrariesIn, isDebugIn, errorMessage); } if (machineArchIn) -- cgit v1.2.3