From f7be9fccf0c7e7f978db3747eaa97af0c4d0032f Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Thu, 23 Jun 2011 11:21:50 +0200 Subject: [PATCH] Abi: Fix detection of ELF files on big endian machines Change-Id: I1301e463fc97fa9615398a2a120874c809975ae5 Reviewed-on: http://codereview.qt.nokia.com/647 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> --- src/plugins/projectexplorer/abi.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index 0697ce28c57..fd5c7a3d9f2 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -34,6 +34,7 @@ #include <QtCore/QCoreApplication> #include <QtCore/QDebug> +#include <QtCore/QtEndian> #include <QtCore/QFile> #include <QtCore/QString> #include <QtCore/QStringList> @@ -134,7 +135,10 @@ static QList<Abi> abiOf(const QByteArray &data) && static_cast<unsigned char>(data.at(0)) == 0x7f && static_cast<unsigned char>(data.at(1)) == 'E' && static_cast<unsigned char>(data.at(2)) == 'L' && static_cast<unsigned char>(data.at(3)) == 'F') { // ELF format: + bool isLsbEncoded = (static_cast<quint8>(data.at(5)) == 1); quint16 machine = (data.at(19) << 8) + data.at(18); + if (!isLsbEncoded) + machine = qFromBigEndian(machine); quint8 osAbi = static_cast<quint8>(data.at(7)); Abi::OS os = Abi::UnixOS; -- GitLab