mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-24 08:24:33 +00:00
Add support for Nuxi CloudABI.
CloudABI is a POSIX-like runtime environment built around the concept of capability-based security. More details: https://github.com/NuxiNL/cloudlibc CloudABI uses its own ELFOSABI number. This number has been allocated by the maintainers of ELF a couple of days ago. Reviewed by: echristo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231681 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -120,6 +120,7 @@ public:
|
|||||||
enum OSType {
|
enum OSType {
|
||||||
UnknownOS,
|
UnknownOS,
|
||||||
|
|
||||||
|
CloudABI,
|
||||||
Darwin,
|
Darwin,
|
||||||
DragonFly,
|
DragonFly,
|
||||||
FreeBSD,
|
FreeBSD,
|
||||||
|
@ -41,6 +41,8 @@ protected:
|
|||||||
public:
|
public:
|
||||||
static uint8_t getOSABI(Triple::OSType OSType) {
|
static uint8_t getOSABI(Triple::OSType OSType) {
|
||||||
switch (OSType) {
|
switch (OSType) {
|
||||||
|
case Triple::CloudABI:
|
||||||
|
return ELF::ELFOSABI_CLOUDABI;
|
||||||
case Triple::PS4:
|
case Triple::PS4:
|
||||||
case Triple::FreeBSD:
|
case Triple::FreeBSD:
|
||||||
return ELF::ELFOSABI_FREEBSD;
|
return ELF::ELFOSABI_FREEBSD;
|
||||||
|
@ -344,6 +344,7 @@ enum {
|
|||||||
ELFOSABI_NSK = 14, // Hewlett-Packard Non-Stop Kernel
|
ELFOSABI_NSK = 14, // Hewlett-Packard Non-Stop Kernel
|
||||||
ELFOSABI_AROS = 15, // AROS
|
ELFOSABI_AROS = 15, // AROS
|
||||||
ELFOSABI_FENIXOS = 16, // FenixOS
|
ELFOSABI_FENIXOS = 16, // FenixOS
|
||||||
|
ELFOSABI_CLOUDABI = 17, // Nuxi CloudABI
|
||||||
ELFOSABI_C6000_ELFABI = 64, // Bare-metal TMS320C6000
|
ELFOSABI_C6000_ELFABI = 64, // Bare-metal TMS320C6000
|
||||||
ELFOSABI_C6000_LINUX = 65, // Linux TMS320C6000
|
ELFOSABI_C6000_LINUX = 65, // Linux TMS320C6000
|
||||||
ELFOSABI_ARM = 97, // ARM
|
ELFOSABI_ARM = 97, // ARM
|
||||||
|
@ -235,6 +235,7 @@ void ScalarEnumerationTraits<ELFYAML::ELF_ELFOSABI>::enumeration(
|
|||||||
ECase(ELFOSABI_NSK)
|
ECase(ELFOSABI_NSK)
|
||||||
ECase(ELFOSABI_AROS)
|
ECase(ELFOSABI_AROS)
|
||||||
ECase(ELFOSABI_FENIXOS)
|
ECase(ELFOSABI_FENIXOS)
|
||||||
|
ECase(ELFOSABI_CLOUDABI)
|
||||||
ECase(ELFOSABI_C6000_ELFABI)
|
ECase(ELFOSABI_C6000_ELFABI)
|
||||||
ECase(ELFOSABI_C6000_LINUX)
|
ECase(ELFOSABI_C6000_LINUX)
|
||||||
ECase(ELFOSABI_ARM)
|
ECase(ELFOSABI_ARM)
|
||||||
|
@ -141,6 +141,7 @@ const char *Triple::getOSTypeName(OSType Kind) {
|
|||||||
switch (Kind) {
|
switch (Kind) {
|
||||||
case UnknownOS: return "unknown";
|
case UnknownOS: return "unknown";
|
||||||
|
|
||||||
|
case CloudABI: return "cloudabi";
|
||||||
case Darwin: return "darwin";
|
case Darwin: return "darwin";
|
||||||
case DragonFly: return "dragonfly";
|
case DragonFly: return "dragonfly";
|
||||||
case FreeBSD: return "freebsd";
|
case FreeBSD: return "freebsd";
|
||||||
@ -345,6 +346,7 @@ static Triple::VendorType parseVendor(StringRef VendorName) {
|
|||||||
|
|
||||||
static Triple::OSType parseOS(StringRef OSName) {
|
static Triple::OSType parseOS(StringRef OSName) {
|
||||||
return StringSwitch<Triple::OSType>(OSName)
|
return StringSwitch<Triple::OSType>(OSName)
|
||||||
|
.StartsWith("cloudabi", Triple::CloudABI)
|
||||||
.StartsWith("darwin", Triple::Darwin)
|
.StartsWith("darwin", Triple::Darwin)
|
||||||
.StartsWith("dragonfly", Triple::DragonFly)
|
.StartsWith("dragonfly", Triple::DragonFly)
|
||||||
.StartsWith("freebsd", Triple::FreeBSD)
|
.StartsWith("freebsd", Triple::FreeBSD)
|
||||||
|
@ -207,6 +207,7 @@ static const EnumEntry<unsigned> ElfOSABI[] = {
|
|||||||
{ "NSK", ELF::ELFOSABI_NSK },
|
{ "NSK", ELF::ELFOSABI_NSK },
|
||||||
{ "AROS", ELF::ELFOSABI_AROS },
|
{ "AROS", ELF::ELFOSABI_AROS },
|
||||||
{ "FenixOS", ELF::ELFOSABI_FENIXOS },
|
{ "FenixOS", ELF::ELFOSABI_FENIXOS },
|
||||||
|
{ "CloudABI", ELF::ELFOSABI_CLOUDABI },
|
||||||
{ "C6000_ELFABI", ELF::ELFOSABI_C6000_ELFABI },
|
{ "C6000_ELFABI", ELF::ELFOSABI_C6000_ELFABI },
|
||||||
{ "C6000_LINUX" , ELF::ELFOSABI_C6000_LINUX },
|
{ "C6000_LINUX" , ELF::ELFOSABI_C6000_LINUX },
|
||||||
{ "ARM", ELF::ELFOSABI_ARM },
|
{ "ARM", ELF::ELFOSABI_ARM },
|
||||||
|
@ -159,6 +159,12 @@ TEST(TripleTest, ParsedIDs) {
|
|||||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||||
EXPECT_EQ(Triple::UnknownOS, T.getOS());
|
EXPECT_EQ(Triple::UnknownOS, T.getOS());
|
||||||
|
|
||||||
|
T = Triple("x86_64-unknown-cloudabi");
|
||||||
|
EXPECT_EQ(Triple::x86_64, T.getArch());
|
||||||
|
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||||
|
EXPECT_EQ(Triple::CloudABI, T.getOS());
|
||||||
|
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
|
||||||
|
|
||||||
T = Triple("huh");
|
T = Triple("huh");
|
||||||
EXPECT_EQ(Triple::UnknownArch, T.getArch());
|
EXPECT_EQ(Triple::UnknownArch, T.getArch());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user