@@ -2685,6 +2685,164 @@ StringRef MachOObjectFile::getFileFormatName() const {
2685
2685
}
2686
2686
}
2687
2687
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
+
2688
2846
Triple MachOObjectFile::getHostArch () {
2689
2847
return Triple (sys::getDefaultTargetTriple ());
2690
2848
}
0 commit comments