Skip to content

Commit cb3e04f

Browse files
committed
[MachO] Move getArchTriple implementation into BinaryFormat.
There's nothing ObjectFile specific about getArchTriple, so move it into the BinaryFormat library so that clients can use it without taking a dependence on libObject. MachOObjectFile::getArchTriple is updated to call through to the moved implementation.
1 parent f29f111 commit cb3e04f

File tree

4 files changed

+142
-138
lines changed

4 files changed

+142
-138
lines changed

llvm/include/llvm/BinaryFormat/MachO.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1709,6 +1709,9 @@ LLVM_ABI Expected<uint32_t> getCPUSubType(const Triple &T);
17091709
LLVM_ABI Expected<uint32_t> getCPUSubType(const Triple &T,
17101710
unsigned PtrAuthABIVersion,
17111711
bool PtrAuthKernelABIVersion);
1712+
LLVM_ABI Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
1713+
const char **McpuDefault = nullptr,
1714+
const char **ArchFlag = nullptr);
17121715

17131716
struct x86_thread_state32_t {
17141717
uint32_t eax;

llvm/include/llvm/Object/MachO.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,9 @@ class LLVM_ABI MachOObjectFile : public ObjectFile {
755755
static Triple::ArchType getArch(uint32_t CPUType, uint32_t CPUSubType);
756756
static Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
757757
const char **McpuDefault = nullptr,
758-
const char **ArchFlag = nullptr);
758+
const char **ArchFlag = nullptr) {
759+
return MachO::getArchTriple(CPUType, CPUSubType, McpuDefault, ArchFlag);
760+
}
759761
static bool isValidArch(StringRef ArchFlag);
760762
static ArrayRef<StringRef> getValidArchs();
761763
static Triple getHostArch();

llvm/lib/BinaryFormat/MachO.cpp

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,139 @@ Expected<uint32_t> MachO::getCPUSubType(const Triple &T,
123123
return CPU_SUBTYPE_ARM64E_WITH_PTRAUTH_VERSION(PtrAuthABIVersion,
124124
PtrAuthKernelABIVersion);
125125
}
126+
127+
Triple MachO::getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
128+
const char **McpuDefault, const char **ArchFlag) {
129+
if (McpuDefault)
130+
*McpuDefault = nullptr;
131+
if (ArchFlag)
132+
*ArchFlag = nullptr;
133+
134+
switch (CPUType) {
135+
case MachO::CPU_TYPE_I386:
136+
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
137+
case MachO::CPU_SUBTYPE_I386_ALL:
138+
if (ArchFlag)
139+
*ArchFlag = "i386";
140+
return Triple("i386-apple-darwin");
141+
default:
142+
return Triple();
143+
}
144+
case MachO::CPU_TYPE_X86_64:
145+
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
146+
case MachO::CPU_SUBTYPE_X86_64_ALL:
147+
if (ArchFlag)
148+
*ArchFlag = "x86_64";
149+
return Triple("x86_64-apple-darwin");
150+
case MachO::CPU_SUBTYPE_X86_64_H:
151+
if (ArchFlag)
152+
*ArchFlag = "x86_64h";
153+
return Triple("x86_64h-apple-darwin");
154+
default:
155+
return Triple();
156+
}
157+
case MachO::CPU_TYPE_ARM:
158+
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
159+
case MachO::CPU_SUBTYPE_ARM_V4T:
160+
if (ArchFlag)
161+
*ArchFlag = "armv4t";
162+
return Triple("armv4t-apple-darwin");
163+
case MachO::CPU_SUBTYPE_ARM_V5TEJ:
164+
if (ArchFlag)
165+
*ArchFlag = "armv5e";
166+
return Triple("armv5e-apple-darwin");
167+
case MachO::CPU_SUBTYPE_ARM_XSCALE:
168+
if (ArchFlag)
169+
*ArchFlag = "xscale";
170+
return Triple("xscale-apple-darwin");
171+
case MachO::CPU_SUBTYPE_ARM_V6:
172+
if (ArchFlag)
173+
*ArchFlag = "armv6";
174+
return Triple("armv6-apple-darwin");
175+
case MachO::CPU_SUBTYPE_ARM_V6M:
176+
if (McpuDefault)
177+
*McpuDefault = "cortex-m0";
178+
if (ArchFlag)
179+
*ArchFlag = "armv6m";
180+
return Triple("armv6m-apple-darwin");
181+
case MachO::CPU_SUBTYPE_ARM_V7:
182+
if (ArchFlag)
183+
*ArchFlag = "armv7";
184+
return Triple("armv7-apple-darwin");
185+
case MachO::CPU_SUBTYPE_ARM_V7EM:
186+
if (McpuDefault)
187+
*McpuDefault = "cortex-m4";
188+
if (ArchFlag)
189+
*ArchFlag = "armv7em";
190+
return Triple("thumbv7em-apple-darwin");
191+
case MachO::CPU_SUBTYPE_ARM_V7K:
192+
if (McpuDefault)
193+
*McpuDefault = "cortex-a7";
194+
if (ArchFlag)
195+
*ArchFlag = "armv7k";
196+
return Triple("armv7k-apple-darwin");
197+
case MachO::CPU_SUBTYPE_ARM_V7M:
198+
if (McpuDefault)
199+
*McpuDefault = "cortex-m3";
200+
if (ArchFlag)
201+
*ArchFlag = "armv7m";
202+
return Triple("thumbv7m-apple-darwin");
203+
case MachO::CPU_SUBTYPE_ARM_V7S:
204+
if (McpuDefault)
205+
*McpuDefault = "cortex-a7";
206+
if (ArchFlag)
207+
*ArchFlag = "armv7s";
208+
return Triple("armv7s-apple-darwin");
209+
default:
210+
return Triple();
211+
}
212+
case MachO::CPU_TYPE_ARM64:
213+
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
214+
case MachO::CPU_SUBTYPE_ARM64_ALL:
215+
if (McpuDefault)
216+
*McpuDefault = "cyclone";
217+
if (ArchFlag)
218+
*ArchFlag = "arm64";
219+
return Triple("arm64-apple-darwin");
220+
case MachO::CPU_SUBTYPE_ARM64E:
221+
if (McpuDefault)
222+
*McpuDefault = "apple-a12";
223+
if (ArchFlag)
224+
*ArchFlag = "arm64e";
225+
return Triple("arm64e-apple-darwin");
226+
default:
227+
return Triple();
228+
}
229+
case MachO::CPU_TYPE_ARM64_32:
230+
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
231+
case MachO::CPU_SUBTYPE_ARM64_32_V8:
232+
if (McpuDefault)
233+
*McpuDefault = "cyclone";
234+
if (ArchFlag)
235+
*ArchFlag = "arm64_32";
236+
return Triple("arm64_32-apple-darwin");
237+
default:
238+
return Triple();
239+
}
240+
case MachO::CPU_TYPE_POWERPC:
241+
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
242+
case MachO::CPU_SUBTYPE_POWERPC_ALL:
243+
if (ArchFlag)
244+
*ArchFlag = "ppc";
245+
return Triple("ppc-apple-darwin");
246+
default:
247+
return Triple();
248+
}
249+
case MachO::CPU_TYPE_POWERPC64:
250+
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
251+
case MachO::CPU_SUBTYPE_POWERPC_ALL:
252+
if (ArchFlag)
253+
*ArchFlag = "ppc64";
254+
return Triple("ppc64-apple-darwin");
255+
default:
256+
return Triple();
257+
}
258+
default:
259+
return Triple();
260+
}
261+
}

llvm/lib/Object/MachOObjectFile.cpp

Lines changed: 0 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -2706,143 +2706,6 @@ Triple::ArchType MachOObjectFile::getArch(uint32_t CPUType, uint32_t CPUSubType)
27062706
}
27072707
}
27082708

2709-
Triple MachOObjectFile::getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
2710-
const char **McpuDefault,
2711-
const char **ArchFlag) {
2712-
if (McpuDefault)
2713-
*McpuDefault = nullptr;
2714-
if (ArchFlag)
2715-
*ArchFlag = nullptr;
2716-
2717-
switch (CPUType) {
2718-
case MachO::CPU_TYPE_I386:
2719-
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
2720-
case MachO::CPU_SUBTYPE_I386_ALL:
2721-
if (ArchFlag)
2722-
*ArchFlag = "i386";
2723-
return Triple("i386-apple-darwin");
2724-
default:
2725-
return Triple();
2726-
}
2727-
case MachO::CPU_TYPE_X86_64:
2728-
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
2729-
case MachO::CPU_SUBTYPE_X86_64_ALL:
2730-
if (ArchFlag)
2731-
*ArchFlag = "x86_64";
2732-
return Triple("x86_64-apple-darwin");
2733-
case MachO::CPU_SUBTYPE_X86_64_H:
2734-
if (ArchFlag)
2735-
*ArchFlag = "x86_64h";
2736-
return Triple("x86_64h-apple-darwin");
2737-
default:
2738-
return Triple();
2739-
}
2740-
case MachO::CPU_TYPE_ARM:
2741-
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
2742-
case MachO::CPU_SUBTYPE_ARM_V4T:
2743-
if (ArchFlag)
2744-
*ArchFlag = "armv4t";
2745-
return Triple("armv4t-apple-darwin");
2746-
case MachO::CPU_SUBTYPE_ARM_V5TEJ:
2747-
if (ArchFlag)
2748-
*ArchFlag = "armv5e";
2749-
return Triple("armv5e-apple-darwin");
2750-
case MachO::CPU_SUBTYPE_ARM_XSCALE:
2751-
if (ArchFlag)
2752-
*ArchFlag = "xscale";
2753-
return Triple("xscale-apple-darwin");
2754-
case MachO::CPU_SUBTYPE_ARM_V6:
2755-
if (ArchFlag)
2756-
*ArchFlag = "armv6";
2757-
return Triple("armv6-apple-darwin");
2758-
case MachO::CPU_SUBTYPE_ARM_V6M:
2759-
if (McpuDefault)
2760-
*McpuDefault = "cortex-m0";
2761-
if (ArchFlag)
2762-
*ArchFlag = "armv6m";
2763-
return Triple("armv6m-apple-darwin");
2764-
case MachO::CPU_SUBTYPE_ARM_V7:
2765-
if (ArchFlag)
2766-
*ArchFlag = "armv7";
2767-
return Triple("armv7-apple-darwin");
2768-
case MachO::CPU_SUBTYPE_ARM_V7EM:
2769-
if (McpuDefault)
2770-
*McpuDefault = "cortex-m4";
2771-
if (ArchFlag)
2772-
*ArchFlag = "armv7em";
2773-
return Triple("thumbv7em-apple-darwin");
2774-
case MachO::CPU_SUBTYPE_ARM_V7K:
2775-
if (McpuDefault)
2776-
*McpuDefault = "cortex-a7";
2777-
if (ArchFlag)
2778-
*ArchFlag = "armv7k";
2779-
return Triple("armv7k-apple-darwin");
2780-
case MachO::CPU_SUBTYPE_ARM_V7M:
2781-
if (McpuDefault)
2782-
*McpuDefault = "cortex-m3";
2783-
if (ArchFlag)
2784-
*ArchFlag = "armv7m";
2785-
return Triple("thumbv7m-apple-darwin");
2786-
case MachO::CPU_SUBTYPE_ARM_V7S:
2787-
if (McpuDefault)
2788-
*McpuDefault = "cortex-a7";
2789-
if (ArchFlag)
2790-
*ArchFlag = "armv7s";
2791-
return Triple("armv7s-apple-darwin");
2792-
default:
2793-
return Triple();
2794-
}
2795-
case MachO::CPU_TYPE_ARM64:
2796-
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
2797-
case MachO::CPU_SUBTYPE_ARM64_ALL:
2798-
if (McpuDefault)
2799-
*McpuDefault = "cyclone";
2800-
if (ArchFlag)
2801-
*ArchFlag = "arm64";
2802-
return Triple("arm64-apple-darwin");
2803-
case MachO::CPU_SUBTYPE_ARM64E:
2804-
if (McpuDefault)
2805-
*McpuDefault = "apple-a12";
2806-
if (ArchFlag)
2807-
*ArchFlag = "arm64e";
2808-
return Triple("arm64e-apple-darwin");
2809-
default:
2810-
return Triple();
2811-
}
2812-
case MachO::CPU_TYPE_ARM64_32:
2813-
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
2814-
case MachO::CPU_SUBTYPE_ARM64_32_V8:
2815-
if (McpuDefault)
2816-
*McpuDefault = "cyclone";
2817-
if (ArchFlag)
2818-
*ArchFlag = "arm64_32";
2819-
return Triple("arm64_32-apple-darwin");
2820-
default:
2821-
return Triple();
2822-
}
2823-
case MachO::CPU_TYPE_POWERPC:
2824-
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
2825-
case MachO::CPU_SUBTYPE_POWERPC_ALL:
2826-
if (ArchFlag)
2827-
*ArchFlag = "ppc";
2828-
return Triple("ppc-apple-darwin");
2829-
default:
2830-
return Triple();
2831-
}
2832-
case MachO::CPU_TYPE_POWERPC64:
2833-
switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
2834-
case MachO::CPU_SUBTYPE_POWERPC_ALL:
2835-
if (ArchFlag)
2836-
*ArchFlag = "ppc64";
2837-
return Triple("ppc64-apple-darwin");
2838-
default:
2839-
return Triple();
2840-
}
2841-
default:
2842-
return Triple();
2843-
}
2844-
}
2845-
28462709
Triple MachOObjectFile::getHostArch() {
28472710
return Triple(sys::getDefaultTargetTriple());
28482711
}

0 commit comments

Comments
 (0)