diff options
Diffstat (limited to 'src/shared/winutils/utils.cpp')
-rw-r--r-- | src/shared/winutils/utils.cpp | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/shared/winutils/utils.cpp b/src/shared/winutils/utils.cpp index cdf017715..00a205438 100644 --- a/src/shared/winutils/utils.cpp +++ b/src/shared/winutils/utils.cpp @@ -493,8 +493,6 @@ QString findInPath(const QString &file) const char *qmakeInfixKey = "QT_INFIX"; -QMap<QString, QString> queryQMakeAll(QString *errorMessage); - QMap<QString, QString> queryQMakeAll(QString *errorMessage) { QByteArray stdOut; @@ -819,12 +817,12 @@ inline void determineDebugAndDependentLibs(const ImageNtHeader *nth, const void { const bool hasDebugEntry = nth->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size; QStringList dependentLibraries; - if (dependentLibrariesIn || (isDebugIn && hasDebugEntry && !isMinGW)) + if (dependentLibrariesIn || (isDebugIn != nullptr && hasDebugEntry && !isMinGW)) dependentLibraries = readImportSections(nth, fileMemory, errorMessage); if (dependentLibrariesIn) *dependentLibrariesIn = dependentLibraries; - if (isDebugIn) { + if (isDebugIn != nullptr) { if (isMinGW) { // Use logic that's used e.g. in objdump / pfd library *isDebugIn = !(nth->FileHeader.Characteristics & IMAGE_FILE_DEBUG_STRIPPED); @@ -840,7 +838,7 @@ inline void determineDebugAndDependentLibs(const ImageNtHeader *nth, const void // and debug flags. bool readPeExecutable(const QString &peExecutableFileName, QString *errorMessage, QStringList *dependentLibrariesIn, unsigned *wordSizeIn, - bool *isDebugIn, bool isMinGW) + bool *isDebugIn, bool isMinGW, unsigned short *machineArchIn) { bool result = false; HANDLE hFile = NULL; @@ -890,6 +888,9 @@ bool readPeExecutable(const QString &peExecutableFileName, QString *errorMessage fileMemory, isMinGW, dependentLibrariesIn, isDebugIn, errorMessage); } + if (machineArchIn) + *machineArchIn = ntHeaders->FileHeader.Machine; + result = true; if (optVerboseLevel > 1) { std::wcout << __FUNCTION__ << ": " << QDir::toNativeSeparators(peExecutableFileName) @@ -970,7 +971,7 @@ QString findD3dCompiler(Platform platform, const QString &qtBinDir, unsigned wor #else // Q_OS_WIN bool readPeExecutable(const QString &, QString *errorMessage, - QStringList *, unsigned *, bool *, bool) + QStringList *, unsigned *, bool *, bool, unsigned short *) { *errorMessage = QStringLiteral("Not implemented."); return false; @@ -1032,4 +1033,23 @@ bool patchQtCore(const QString &path, QString *errorMessage) return true; } +#ifdef Q_OS_WIN +QString getArchString(unsigned short machineArch) +{ + switch (machineArch) { + case IMAGE_FILE_MACHINE_I386: + return QStringLiteral("x86"); + case IMAGE_FILE_MACHINE_ARM: + return QStringLiteral("arm"); + case IMAGE_FILE_MACHINE_AMD64: + return QStringLiteral("x64"); + case IMAGE_FILE_MACHINE_ARM64: + return QStringLiteral("arm64"); + default: + break; + } + return QString(); +} +#endif // Q_OS_WIN + QT_END_NAMESPACE |