Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit f8053e8

Browse files
authored
Merge pull request #122 from ColinFinck/rust-llvm-release-7-0-0-v1
Add support for writing HermitCore (https://hermitcore.org) ELF binaries
2 parents f4130c0 + 04277e8 commit f8053e8

File tree

4 files changed

+12
-1
lines changed

4 files changed

+12
-1
lines changed

include/llvm/ADT/Triple.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ class Triple {
182182
Mesa3D,
183183
Contiki,
184184
AMDPAL, // AMD PAL Runtime
185-
LastOSType = AMDPAL
185+
HermitCore, // HermitCore Unikernel/Multikernel
186+
LastOSType = HermitCore
186187
};
187188
enum EnvironmentType {
188189
UnknownEnvironment,

include/llvm/MC/MCELFObjectWriter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ class MCELFObjectTargetWriter : public MCObjectTargetWriter {
7373
switch (OSType) {
7474
case Triple::CloudABI:
7575
return ELF::ELFOSABI_CLOUDABI;
76+
case Triple::HermitCore:
77+
return ELF::ELFOSABI_STANDALONE;
7678
case Triple::PS4:
7779
case Triple::FreeBSD:
7880
return ELF::ELFOSABI_FREEBSD;

lib/Support/Triple.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ StringRef Triple::getOSTypeName(OSType Kind) {
209209
case Mesa3D: return "mesa3d";
210210
case Contiki: return "contiki";
211211
case AMDPAL: return "amdpal";
212+
case HermitCore: return "hermit";
212213
}
213214

214215
llvm_unreachable("Invalid OSType");
@@ -502,6 +503,7 @@ static Triple::OSType parseOS(StringRef OSName) {
502503
.StartsWith("mesa3d", Triple::Mesa3D)
503504
.StartsWith("contiki", Triple::Contiki)
504505
.StartsWith("amdpal", Triple::AMDPAL)
506+
.StartsWith("hermit", Triple::HermitCore)
505507
.Default(Triple::UnknownOS);
506508
}
507509

unittests/ADT/TripleTest.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,12 @@ TEST(TripleTest, ParsedIDs) {
235235
EXPECT_EQ(Triple::Fuchsia, T.getOS());
236236
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
237237

238+
T = Triple("x86_64-unknown-hermit");
239+
EXPECT_EQ(Triple::x86_64, T.getArch());
240+
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
241+
EXPECT_EQ(Triple::HermitCore, T.getOS());
242+
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
243+
238244
T = Triple("wasm32-unknown-unknown");
239245
EXPECT_EQ(Triple::wasm32, T.getArch());
240246
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());

0 commit comments

Comments
 (0)