Commit 9b4c91ca authored by Ralf Nolden's avatar Ralf Nolden

qmake ABI detection fix for NetBSD and OpenBSD

The ABI dection works on inspecting the ELF header which should contain
the values for ELFOSABI, with the macro ELFOSABI_NETBSD equals 2 and
ELFOSABI_OPENBSD equals 12. However, on these systems the ELF binaries
are built using 0 so detection will fail and default to Linux, preventing
to use the correct qmake for Desktop Qt. Therefore, on these systems default 0
to use the host OS (NetBSD or OpenBSD), otherwise Linux as before.

Change-Id: I293389980860977ba6c2ad9903edd567f0a5b9f0
Reviewed-by: Jake Petroules's avatarJake Petroules <jake.petroules@qt.io>
Reviewed-by: Tobias Hunger's avatarTobias Hunger <tobias.hunger@qt.io>
parent 47b4f2c7
......@@ -199,12 +199,20 @@ static QList<Abi> abiOf(const QByteArray &data)
Abi::OSFlavor flavor = Abi::GenericUnixFlavor;
// http://www.sco.com/developers/gabi/latest/ch4.eheader.html#elfid
switch (osAbi) {
case 2: // NetBSD:
#if defined(Q_OS_NETBSD)
case 0: // NetBSD: ELFOSABI_NETBSD 2, however, NetBSD uses 0
os = Abi::BsdOS;
flavor = Abi::NetBsdFlavor;
break;
case 3: // Linux:
#elif defined(Q_OS_OPENBSD)
case 0: // OpenBSD: ELFOSABI_OPENBSD 12, however, OpenBSD uses 0
os = Abi::BsdOS;
flavor = Abi::OpenBsdFlavor;
break;
#else
case 0: // no extra info available: Default to Linux:
#endif
case 3: // Linux:
case 97: // ARM, also linux most of the time.
os = Abi::LinuxOS;
flavor = Abi::GenericLinuxFlavor;
......@@ -217,9 +225,6 @@ static QList<Abi> abiOf(const QByteArray &data)
os = Abi::BsdOS;
flavor = Abi::FreeBsdFlavor;
break;
case 12: // OpenBSD:
os = Abi::BsdOS;
flavor = Abi::OpenBsdFlavor;
}
switch (machine) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment