@@ -2685,6 +2685,164 @@ StringRef MachOObjectFile::getFileFormatName() const {
26852685 }
26862686}
26872687
2688+ Triple::ArchType MachOObjectFile::getArch (uint32_t CPUType, uint32_t CPUSubType) {
2689+ switch (CPUType) {
2690+ case MachO::CPU_TYPE_I386:
2691+ return Triple::x86;
2692+ case MachO::CPU_TYPE_X86_64:
2693+ return Triple::x86_64;
2694+ case MachO::CPU_TYPE_ARM:
2695+ return Triple::arm;
2696+ case MachO::CPU_TYPE_ARM64:
2697+ return Triple::aarch64;
2698+ case MachO::CPU_TYPE_ARM64_32:
2699+ return Triple::aarch64_32;
2700+ case MachO::CPU_TYPE_POWERPC:
2701+ return Triple::ppc;
2702+ case MachO::CPU_TYPE_POWERPC64:
2703+ return Triple::ppc64;
2704+ default :
2705+ return Triple::UnknownArch;
2706+ }
2707+ }
2708+
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+
26882846Triple MachOObjectFile::getHostArch () {
26892847 return Triple (sys::getDefaultTargetTriple ());
26902848}
0 commit comments