Skip to content

Commit 213424b

Browse files
authored
Add MachO RISC-V CPU type and CPU subtype to llvm & lldb (llvm#136785)
Add the enum values for MachO RISC-V CPU type and CPU subtype to llvm and use in LLDB's ArchSpec.
1 parent 3b48e2a commit 213424b

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

lldb/source/Utility/ArchSpec.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,8 @@ static const ArchDefinitionEntry g_macho_arch_entries[] = {
353353
{ArchSpec::eCore_x86_64_x86_64, llvm::MachO::CPU_TYPE_X86_64, llvm::MachO::CPU_SUBTYPE_X86_ARCH1, UINT32_MAX, SUBTYPE_MASK},
354354
{ArchSpec::eCore_x86_64_x86_64h, llvm::MachO::CPU_TYPE_X86_64, llvm::MachO::CPU_SUBTYPE_X86_64_H, UINT32_MAX, SUBTYPE_MASK},
355355
{ArchSpec::eCore_x86_64_x86_64, llvm::MachO::CPU_TYPE_X86_64, CPU_ANY, UINT32_MAX, UINT32_MAX},
356+
{ArchSpec::eCore_riscv32, llvm::MachO::CPU_TYPE_RISCV, llvm::MachO::CPU_SUBTYPE_RISCV_ALL, UINT32_MAX, SUBTYPE_MASK},
357+
{ArchSpec::eCore_riscv32, llvm::MachO::CPU_TYPE_RISCV, CPU_ANY, UINT32_MAX, SUBTYPE_MASK},
356358
// Catch any unknown mach architectures so we can always use the object and symbol mach-o files
357359
{ArchSpec::eCore_uknownMach32, 0, 0, 0xFF000000u, 0x00000000u},
358360
{ArchSpec::eCore_uknownMach64, llvm::MachO::CPU_ARCH_ABI64, 0, 0xFF000000u, 0x00000000u}};

lldb/unittests/Utility/ArchSpecTest.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,14 @@ TEST(ArchSpecTest, TestSetTriple) {
113113
.consume_front("powerpc-apple-darwin"));
114114
EXPECT_EQ(ArchSpec::eCore_ppc_ppc970, AS.GetCore());
115115

116+
AS = ArchSpec();
117+
EXPECT_TRUE(AS.SetTriple("24-0-apple-unknown"));
118+
EXPECT_EQ(uint32_t(llvm::MachO::CPU_TYPE_RISCV), AS.GetMachOCPUType());
119+
EXPECT_EQ(0u, AS.GetMachOCPUSubType());
120+
EXPECT_TRUE(llvm::StringRef(AS.GetTriple().str())
121+
.consume_front("riscv32-apple-unknown"));
122+
EXPECT_EQ(ArchSpec::eCore_riscv32, AS.GetCore());
123+
116124
AS = ArchSpec();
117125
EXPECT_TRUE(AS.SetTriple("i686-pc-windows"));
118126
EXPECT_EQ(llvm::Triple::x86, AS.GetTriple().getArch());

llvm/include/llvm/BinaryFormat/MachO.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1571,7 +1571,9 @@ enum CPUType {
15711571
CPU_TYPE_ARM64_32 = CPU_TYPE_ARM | CPU_ARCH_ABI64_32,
15721572
CPU_TYPE_SPARC = 14,
15731573
CPU_TYPE_POWERPC = 18,
1574-
CPU_TYPE_POWERPC64 = CPU_TYPE_POWERPC | CPU_ARCH_ABI64
1574+
CPU_TYPE_POWERPC64 = CPU_TYPE_POWERPC | CPU_ARCH_ABI64,
1575+
1576+
CPU_TYPE_RISCV = 24,
15751577
};
15761578

15771579
enum : uint32_t {
@@ -1698,6 +1700,10 @@ enum CPUSubTypePowerPC {
16981700
CPU_SUBTYPE_MC98601 = CPU_SUBTYPE_POWERPC_601
16991701
};
17001702

1703+
enum CPUSubTypeRISCV {
1704+
CPU_SUBTYPE_RISCV_ALL = 0,
1705+
};
1706+
17011707
Expected<uint32_t> getCPUType(const Triple &T);
17021708
Expected<uint32_t> getCPUSubType(const Triple &T);
17031709
Expected<uint32_t> getCPUSubType(const Triple &T, unsigned PtrAuthABIVersion,

0 commit comments

Comments
 (0)