[llvm] eef41ef - [MachO] Add skeletal support for DriverKit platform
Jez Ng via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 14 12:36:54 PDT 2020
Author: Greg McGary
Date: 2020-08-14T12:36:43-07:00
New Revision: eef41efe0098814ba8445633c7bc6756d4228f8a
URL: https://github.com/llvm/llvm-project/commit/eef41efe0098814ba8445633c7bc6756d4228f8a
DIFF: https://github.com/llvm/llvm-project/commit/eef41efe0098814ba8445633c7bc6756d4228f8a.diff
LOG: [MachO] Add skeletal support for DriverKit platform
Define the platform ID = 10, and simple mappings between platform ID & name.
Reviewed By: MaskRay, cishida
Differential Revision: https://reviews.llvm.org/D85594
Added:
Modified:
llvm/include/llvm/BinaryFormat/MachO.h
llvm/include/llvm/Object/MachO.h
llvm/include/llvm/TextAPI/MachO/Platform.h
llvm/lib/MC/MCAsmStreamer.cpp
llvm/lib/MC/MCParser/DarwinAsmParser.cpp
llvm/lib/TextAPI/MachO/Platform.cpp
llvm/lib/TextAPI/MachO/Target.cpp
llvm/lib/TextAPI/MachO/TextStub.cpp
llvm/lib/TextAPI/MachO/TextStubCommon.cpp
llvm/unittests/TextAPI/TextStubV4Tests.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/BinaryFormat/MachO.h b/llvm/include/llvm/BinaryFormat/MachO.h
index dc8d10f6129b..e84ed8b643cb 100644
--- a/llvm/include/llvm/BinaryFormat/MachO.h
+++ b/llvm/include/llvm/BinaryFormat/MachO.h
@@ -495,7 +495,8 @@ enum PlatformType {
PLATFORM_MACCATALYST = 6,
PLATFORM_IOSSIMULATOR = 7,
PLATFORM_TVOSSIMULATOR = 8,
- PLATFORM_WATCHOSSIMULATOR = 9
+ PLATFORM_WATCHOSSIMULATOR = 9,
+ PLATFORM_DRIVERKIT = 10,
};
// Values for tools enum in build_tool_version.
diff --git a/llvm/include/llvm/Object/MachO.h b/llvm/include/llvm/Object/MachO.h
index f48e0f1dcd58..7eb017397846 100644
--- a/llvm/include/llvm/Object/MachO.h
+++ b/llvm/include/llvm/Object/MachO.h
@@ -615,6 +615,7 @@ class MachOObjectFile : public ObjectFile {
case MachO::PLATFORM_IOSSIMULATOR: return "iossimulator";
case MachO::PLATFORM_TVOSSIMULATOR: return "tvossimulator";
case MachO::PLATFORM_WATCHOSSIMULATOR: return "watchossimulator";
+ case MachO::PLATFORM_DRIVERKIT: return "driverkit";
default:
std::string ret;
raw_string_ostream ss(ret);
diff --git a/llvm/include/llvm/TextAPI/MachO/Platform.h b/llvm/include/llvm/TextAPI/MachO/Platform.h
index a22aae9b7dce..fc59b8678af7 100644
--- a/llvm/include/llvm/TextAPI/MachO/Platform.h
+++ b/llvm/include/llvm/TextAPI/MachO/Platform.h
@@ -29,7 +29,8 @@ enum class PlatformKind : unsigned {
macCatalyst = MachO::PLATFORM_MACCATALYST,
iOSSimulator = MachO::PLATFORM_IOSSIMULATOR,
tvOSSimulator = MachO::PLATFORM_TVOSSIMULATOR,
- watchOSSimulator = MachO::PLATFORM_WATCHOSSIMULATOR
+ watchOSSimulator = MachO::PLATFORM_WATCHOSSIMULATOR,
+ driverKit = MachO::PLATFORM_DRIVERKIT,
};
using PlatformSet = SmallSet<PlatformKind, 3>;
@@ -42,4 +43,4 @@ StringRef getPlatformName(PlatformKind Platform);
} // end namespace MachO.
} // end namespace llvm.
-#endif // LLVM_TEXTAPI_MACHO_PLATFORM_H
\ No newline at end of file
+#endif // LLVM_TEXTAPI_MACHO_PLATFORM_H
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index b8da7f1615c9..db0ed9a73d22 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -580,6 +580,7 @@ static const char *getPlatformName(MachO::PlatformType Type) {
case MachO::PLATFORM_IOSSIMULATOR: return "iossimulator";
case MachO::PLATFORM_TVOSSIMULATOR: return "tvossimulator";
case MachO::PLATFORM_WATCHOSSIMULATOR: return "watchossimulator";
+ case MachO::PLATFORM_DRIVERKIT: return "driverkit";
}
llvm_unreachable("Invalid Mach-O platform type");
}
diff --git a/llvm/lib/MC/MCParser/DarwinAsmParser.cpp b/llvm/lib/MC/MCParser/DarwinAsmParser.cpp
index b670355a392b..926483451259 100644
--- a/llvm/lib/MC/MCParser/DarwinAsmParser.cpp
+++ b/llvm/lib/MC/MCParser/DarwinAsmParser.cpp
@@ -1152,6 +1152,7 @@ static Triple::OSType getOSTypeFromPlatform(MachO::PlatformType Type) {
case MachO::PLATFORM_IOSSIMULATOR: /* silence warning */ break;
case MachO::PLATFORM_TVOSSIMULATOR: /* silence warning */ break;
case MachO::PLATFORM_WATCHOSSIMULATOR: /* silence warning */ break;
+ case MachO::PLATFORM_DRIVERKIT: /* silence warning */ break;
}
llvm_unreachable("Invalid mach-o platform type");
}
diff --git a/llvm/lib/TextAPI/MachO/Platform.cpp b/llvm/lib/TextAPI/MachO/Platform.cpp
index 588ec9a4d83b..a13d569d6f23 100644
--- a/llvm/lib/TextAPI/MachO/Platform.cpp
+++ b/llvm/lib/TextAPI/MachO/Platform.cpp
@@ -49,7 +49,7 @@ PlatformKind mapToPlatformKind(const Triple &Target) {
case Triple::WatchOS:
return Target.isSimulatorEnvironment() ? PlatformKind::watchOSSimulator
: PlatformKind::watchOS;
- // TODO: add bridgeOS once in llvm::Triple
+ // TODO: add bridgeOS & driverKit once in llvm::Triple
}
llvm_unreachable("Unknown Target Triple");
}
@@ -83,6 +83,8 @@ StringRef getPlatformName(PlatformKind Platform) {
return "tvOS Simulator";
case PlatformKind::watchOSSimulator:
return "watchOS Simulator";
+ case PlatformKind::driverKit:
+ return "driverKit";
}
llvm_unreachable("Unknown llvm.MachO.PlatformKind enum");
}
diff --git a/llvm/lib/TextAPI/MachO/Target.cpp b/llvm/lib/TextAPI/MachO/Target.cpp
index aee8ef421425..6f8d9bb4e19a 100644
--- a/llvm/lib/TextAPI/MachO/Target.cpp
+++ b/llvm/lib/TextAPI/MachO/Target.cpp
@@ -33,6 +33,7 @@ Expected<Target> Target::create(StringRef TargetValue) {
.Case("ios-simulator", PlatformKind::iOSSimulator)
.Case("tvos-simulator", PlatformKind::tvOSSimulator)
.Case("watchos-simulator", PlatformKind::watchOSSimulator)
+ .Case("driverkit", PlatformKind::driverKit)
.Default(PlatformKind::unknown);
if (Platform == PlatformKind::unknown) {
diff --git a/llvm/lib/TextAPI/MachO/TextStub.cpp b/llvm/lib/TextAPI/MachO/TextStub.cpp
index 141f897fb564..a212e8ffa620 100644
--- a/llvm/lib/TextAPI/MachO/TextStub.cpp
+++ b/llvm/lib/TextAPI/MachO/TextStub.cpp
@@ -407,6 +407,9 @@ template <> struct ScalarTraits<Target> {
case PlatformKind::watchOSSimulator:
OS << "watchos-simulator";
break;
+ case PlatformKind::driverKit:
+ OS << "driverkit";
+ break;
}
}
diff --git a/llvm/lib/TextAPI/MachO/TextStubCommon.cpp b/llvm/lib/TextAPI/MachO/TextStubCommon.cpp
index 4a82df6beac1..0d3614b0a24c 100644
--- a/llvm/lib/TextAPI/MachO/TextStubCommon.cpp
+++ b/llvm/lib/TextAPI/MachO/TextStubCommon.cpp
@@ -84,6 +84,9 @@ void ScalarTraits<PlatformSet>::output(const PlatformSet &Values, void *IO,
case PlatformKind::macCatalyst:
OS << "iosmac";
break;
+ case PlatformKind::driverKit:
+ OS << "driverkit";
+ break;
}
}
diff --git a/llvm/unittests/TextAPI/TextStubV4Tests.cpp b/llvm/unittests/TextAPI/TextStubV4Tests.cpp
index e8addf1ae7a3..d4b2ef623eac 100644
--- a/llvm/unittests/TextAPI/TextStubV4Tests.cpp
+++ b/llvm/unittests/TextAPI/TextStubV4Tests.cpp
@@ -758,6 +758,30 @@ TEST(TBDv4, Target_i386_watchos_simulator) {
stripWhitespace(Buffer.c_str()));
}
+TEST(TBDv4, Target_i386_driverkit) {
+ static const char TBDv4i386DriverKit[] = "--- !tapi-tbd\n"
+ "tbd-version: 4\n"
+ "targets: [ i386-driverkit ]\n"
+ "install-name: Test.dylib\n"
+ "...\n";
+
+ Expected<TBDFile> Result =
+ TextAPIReader::get(MemoryBufferRef(TBDv4i386DriverKit, "Test.tbd"));
+ EXPECT_TRUE(!!Result);
+ TBDFile File = std::move(Result.get());
+ EXPECT_EQ(FileType::TBD_V4, File->getFileType());
+ EXPECT_EQ(ArchitectureSet(AK_i386), File->getArchitectures());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(PlatformKind::driverKit, *File->getPlatforms().begin());
+
+ SmallString<4096> Buffer;
+ raw_svector_ostream OS(Buffer);
+ auto WriteResult = TextAPIWriter::writeToStream(OS, *File);
+ EXPECT_TRUE(!WriteResult);
+ EXPECT_EQ(stripWhitespace(TBDv4i386DriverKit),
+ stripWhitespace(Buffer.c_str()));
+}
+
TEST(TBDv4, Swift_1) {
static const char TBDv4SwiftVersion1[] = "--- !tapi-tbd\n"
"tbd-version: 4\n"
More information about the llvm-commits
mailing list