summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-08-05 10:31:35 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-08-05 11:10:44 +0200
commitb6de6a96990577f8041ba1520bd0f2766be6027c (patch)
tree39b2ce1d423ce5972f5dc04302e83a90b2c5435e
parentde3b2541de380c04008cce7937076e10496cb78b (diff)
Teach QMacVersion to deal with 32-bit Mach-O headers
Pick-to: 5.15 Pick-to: 5.12 Change-Id: I7946aa35722bc76326e2d6cf0820353c4ba13fad Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
-rw-r--r--src/corelib/kernel/qcore_mac.mm4
-rw-r--r--src/corelib/kernel/qcore_mac_p.h4
2 files changed, 3 insertions, 5 deletions
diff --git a/src/corelib/kernel/qcore_mac.mm b/src/corelib/kernel/qcore_mac.mm
index 692c9fa6b5..7e45defc70 100644
--- a/src/corelib/kernel/qcore_mac.mm
+++ b/src/corelib/kernel/qcore_mac.mm
@@ -593,7 +593,9 @@ QMacVersion::VersionTuple QMacVersion::versionsForImage(const mach_header *machH
);
};
- auto commandCursor = uintptr_t(machHeader) + sizeof(mach_header_64);
+ const bool is64Bit = machHeader->magic == MH_MAGIC_64 || machHeader->magic == MH_CIGAM_64;
+ auto commandCursor = uintptr_t(machHeader) + (is64Bit ? sizeof(mach_header_64) : sizeof(mach_header));
+
for (uint32_t i = 0; i < machHeader->ncmds; ++i) {
load_command *loadCommand = reinterpret_cast<load_command *>(commandCursor);
if (loadCommand->cmd == LC_VERSION_MIN_MACOSX || loadCommand->cmd == LC_VERSION_MIN_IPHONEOS
diff --git a/src/corelib/kernel/qcore_mac_p.h b/src/corelib/kernel/qcore_mac_p.h
index 319b0379ad..02ea0aabdc 100644
--- a/src/corelib/kernel/qcore_mac_p.h
+++ b/src/corelib/kernel/qcore_mac_p.h
@@ -419,10 +419,6 @@ private:
// -------------------------------------------------------------------------
-#if QT_POINTER_SIZE == 4
-#error "32-bit builds are not supported"
-#endif
-
class Q_CORE_EXPORT QMacVersion
{
public: