summaryrefslogtreecommitdiff
path: root/src/shared/winutils/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/winutils/utils.cpp')
-rw-r--r--src/shared/winutils/utils.cpp32
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