forked from qt-creator/qt-creator
Abi: Add xtensa architecture
Also add an "rtos" OS flavor to baremetal, which is popular with xtensa. Task-number: QTCREATORBUG-20147 Change-Id: Id4d22ebfc59f123a76dc3de898c7c57bb3be8a38 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -442,6 +442,12 @@ Abi Abi::abiFromTargetTriplet(const QString &triple)
|
|||||||
|| p == "i686" || p == "x86") {
|
|| p == "i686" || p == "x86") {
|
||||||
arch = X86Architecture;
|
arch = X86Architecture;
|
||||||
width = 32;
|
width = 32;
|
||||||
|
} else if (p == "xtensa") {
|
||||||
|
arch = XtensaArchitecture;
|
||||||
|
os = BareMetalOS;
|
||||||
|
flavor = GenericBareMetalFlavor;
|
||||||
|
format = ElfFormat;
|
||||||
|
width = 32;
|
||||||
} else if (p.startsWith("arm")) {
|
} else if (p.startsWith("arm")) {
|
||||||
arch = ArmArchitecture;
|
arch = ArmArchitecture;
|
||||||
width = p.contains("64") ? 64 : 32;
|
width = p.contains("64") ? 64 : 32;
|
||||||
@@ -601,6 +607,8 @@ QString Abi::toString(const Architecture &a)
|
|||||||
return QLatin1String("arm");
|
return QLatin1String("arm");
|
||||||
case AvrArchitecture:
|
case AvrArchitecture:
|
||||||
return QLatin1String("avr");
|
return QLatin1String("avr");
|
||||||
|
case XtensaArchitecture:
|
||||||
|
return QLatin1String("xtensa");
|
||||||
case X86Architecture:
|
case X86Architecture:
|
||||||
return QLatin1String("x86");
|
return QLatin1String("x86");
|
||||||
case MipsArchitecture:
|
case MipsArchitecture:
|
||||||
@@ -683,6 +691,8 @@ QString Abi::toString(const OSFlavor &of)
|
|||||||
return QLatin1String("ce");
|
return QLatin1String("ce");
|
||||||
case VxWorksFlavor:
|
case VxWorksFlavor:
|
||||||
return QLatin1String("vxworks");
|
return QLatin1String("vxworks");
|
||||||
|
case RtosFlavor:
|
||||||
|
return QLatin1String("rtos");
|
||||||
case UnknownFlavor:
|
case UnknownFlavor:
|
||||||
default:
|
default:
|
||||||
return QLatin1String("unknown");
|
return QLatin1String("unknown");
|
||||||
@@ -734,6 +744,8 @@ Abi::Architecture Abi::architectureFromString(const QStringRef &a)
|
|||||||
return ItaniumArchitecture;
|
return ItaniumArchitecture;
|
||||||
if (a == "sh")
|
if (a == "sh")
|
||||||
return ShArchitecture;
|
return ShArchitecture;
|
||||||
|
else if (a == "xtensa")
|
||||||
|
return XtensaArchitecture;
|
||||||
|
|
||||||
return UnknownArchitecture;
|
return UnknownArchitecture;
|
||||||
}
|
}
|
||||||
@@ -814,6 +826,8 @@ Abi::OSFlavor Abi::osFlavorFromString(const QStringRef &of, const OS os)
|
|||||||
result = WindowsCEFlavor;
|
result = WindowsCEFlavor;
|
||||||
} else if (of == "vxworks") {
|
} else if (of == "vxworks") {
|
||||||
result = VxWorksFlavor;
|
result = VxWorksFlavor;
|
||||||
|
} else if (of == "rtos") {
|
||||||
|
result = RtosFlavor;
|
||||||
}
|
}
|
||||||
|
|
||||||
return flavorsForOs(os).contains(result) ? result : UnknownFlavor;
|
return flavorsForOs(os).contains(result) ? result : UnknownFlavor;
|
||||||
@@ -869,7 +883,7 @@ QList<Abi::OSFlavor> Abi::flavorsForOs(const Abi::OS &o)
|
|||||||
case QnxOS:
|
case QnxOS:
|
||||||
return {GenericQnxFlavor, UnknownFlavor};
|
return {GenericQnxFlavor, UnknownFlavor};
|
||||||
case BareMetalOS:
|
case BareMetalOS:
|
||||||
return {GenericBareMetalFlavor, UnknownFlavor};
|
return {GenericBareMetalFlavor, RtosFlavor, UnknownFlavor};
|
||||||
case UnknownOS:
|
case UnknownOS:
|
||||||
return {UnknownFlavor};
|
return {UnknownFlavor};
|
||||||
}
|
}
|
||||||
@@ -1335,6 +1349,9 @@ void ProjectExplorer::ProjectExplorerPlugin::testAbiFromTargetTriplet_data()
|
|||||||
QTest::newRow("aarch64-unknown-linux-gnu") << int(Abi::ArmArchitecture)
|
QTest::newRow("aarch64-unknown-linux-gnu") << int(Abi::ArmArchitecture)
|
||||||
<< int(Abi::LinuxOS) << int(Abi::GenericLinuxFlavor)
|
<< int(Abi::LinuxOS) << int(Abi::GenericLinuxFlavor)
|
||||||
<< int(Abi::ElfFormat) << 64;
|
<< int(Abi::ElfFormat) << 64;
|
||||||
|
QTest::newRow("xtensa-lx106-elf") << int(Abi::XtensaArchitecture)
|
||||||
|
<< int(Abi::BareMetalOS) << int(Abi::GenericBareMetalFlavor)
|
||||||
|
<< int(Abi::ElfFormat) << 32;
|
||||||
|
|
||||||
// Yes, that's the entire triplet
|
// Yes, that's the entire triplet
|
||||||
QTest::newRow("avr") << int(Abi::AvrArchitecture)
|
QTest::newRow("avr") << int(Abi::AvrArchitecture)
|
||||||
|
@@ -49,6 +49,7 @@ public:
|
|||||||
PowerPCArchitecture,
|
PowerPCArchitecture,
|
||||||
ShArchitecture,
|
ShArchitecture,
|
||||||
AvrArchitecture,
|
AvrArchitecture,
|
||||||
|
XtensaArchitecture,
|
||||||
UnknownArchitecture
|
UnknownArchitecture
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -97,6 +98,9 @@ public:
|
|||||||
GenericQnxFlavor,
|
GenericQnxFlavor,
|
||||||
GenericBareMetalFlavor,
|
GenericBareMetalFlavor,
|
||||||
|
|
||||||
|
// Generic:
|
||||||
|
RtosFlavor,
|
||||||
|
|
||||||
UnknownFlavor
|
UnknownFlavor
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user