1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
use crate::*; #[derive(Debug, Eq, Ord, PartialEq, PartialOrd)] pub enum Machine { // No machine None, // AT&T WE 32100 M32, // SUN SPARC SPARC, // Intel 80386 Intel386, // Motorola m68k family M68K, // Motorola m88k family M88K, // Intel MCU IntelMCU, // Intel 80860 Intel80860, // MIPS R3000 big-endian MIPS, // IBM System/370 S370, // MIPS R3000 little-endian MIPSRS3LE, // reserved 11-14 // HPPA Parisc, // Fujitsu VPP500 VPP500, // Sun's "v8plus" SPARC32Plus, // Intel 80960 Intel80960, // PowerPC PowerPC, // PowerPC 64-bit PowerPC65, // IBM S390 S390, // IBM SPU/SPC SPU, // reserved 24-35 // NEC V700 series V800, // Fujitsu FR20 FR20, // TRW RH-32 RH32, // Motorola RCE RCE, // ARM Arm, // Digital Alpha FakeAlpha, // Hitachi SH EMSH, // SPARC v9 64-bit EMSPARCV9, // Siemens Tricore Tricore, // Argonaut RISC Core ARC, // Hitachi H8/300 H8300, // Hitachi H8/300H H8300H, // Hitachi H8S H8S, // Hitachi H8/500 H8500, // Stanford MIPS-X MIPSX, // Motorola Coldfire Coldfire, // Motorola M68HC12 M68HC12, // Fujitsu MMA Multimedia Accelerator MMA, // Siemens PCP PCP, // Sony nCPU embedded RISC NCPU, // Denso NDR1 microprocessor NDR1, // Motorola Start*Core processor StarCore, // Toyota ME16 processor ME16, // STMicroelectronic ST100 processor ST100, // Advanced Logic Corp. TinyJ embedded processor TinyJ, // Advanced Micro Devices X86-64 processor X8664, // Sony DSP Processor PSDP, // Digital Equipment Corp. PDP-10 PDP10, // Digital Equipment Corp. PDP-11 PDP11, // Siemens FX66 microcontroller FX66, // STMicroelectronics ST9+ 8/16 bit microcontroller ST9Plus, // STMicroelectronics ST7 8-bit microcontroller ST7, // Motorola MC68HC16 Microcontroller MC68HC16, // Motorola MC68HC11 Microcontroller MC68HC11, // Motorola MC68HC08 Microcontroller MC68HC08, // Motorola MC68HC05 Microcontroller MC68HC05, // Silicon Graphics SVx SVx, // STMicroelectronics ST19 8-bit cpu ST19, // Digital VAX VAX, // Axis Communications 32-bit embedded processor CRIS, // Infineon Technologies 32-bit embedded cpu Javelin, // Element 14 64-bit DSP processor Firepath, // LSI Logic's 16-bit DSP processor ZSP, // Donald Knuth's educational 64-bit processor MMIX, // Harvard's machine-independent format HUANY, // SiTera Prism Prism, // Atmel AVR 8-bit microcontroller AVR, // Fujitsu FR30 FR30, // Mitsubishi D10V D10V, // Mitsubishi D30V D30V, // Renesas V850 (formerly NEC V850) V850, // Renesas M32R (formerly Mitsubishi M32R) M32R, // Matsushita MN10300 MN10300, // Matsushita MN10200 MN10200, // picoJava PicoJava, // OpenRISC 1000 32-bit embedded processor OR1K, // ARC International ARCompact processor ARCompact, // Tensilica Xtensa Architecture Xtensa, // Old Sunplus S+core7 backend magic number. // Written in the absence of an ABI. SCoreOld, // Alphamosaic VideoCore processor VideoCore, // Thompson Multimedia General Purpose Processor TMMGPP, // National Semiconductor 32000 series NS32K, // Tenor Network TPC processor TPC, // Old value for picoJava. Deprecated. PicoJavaOld, // Trebia SNP 1000 processor SNP1K, // STMicroelectronics ST200 microcontroller ST200, Any(Elf64Half), } impl Machine { pub fn to_bytes(&self) -> Elf64Half { match self { Self::X8664 => 62, Self::Any(c) => *c, _ => panic!("not implemented -> {:?}", self), } } } impl From<Elf64Half> for Machine { fn from(bytes: Elf64Half) -> Self { match bytes { 62 => Self::X8664, _ => Self::Any(bytes), } } }