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 ELFMACHINE { // No machine EMNONE, // AT&T WE 32100 EMM32, // SUN SPARC EMSPARC, // Intel 80386 EM386, // Motorola m68k family EM68K, // Motorola m88k family EM88K, // Intel MCU EMIAMCU, // Intel 80860 EM860, // MIPS R3000 big-endian EMMIPS, // IBM System/370 EMS370, // MIPS R3000 little-endian EMMIPSRS3LE, // reserved 11-14 // HPPA EMPARISC, // Fujitsu VPP500 EMVPP500, // Sun's "v8plus" EMSPARC32PLUS, // Intel 80960 EM960, // PowerPC EMPPC, // PowerPC 64-bit EMPPC64, // IBM S390 EMS390, // IBM SPU/SPC EMSPU, // reserved 24-35 // NEC V700 series EMV800, // Fujitsu FR20 EMFR20, // TRW RH-32 EMRH32, // Motorola RCE EMRCE, // ARM EMARM, // Digital Alpha EMFAKEALPHA, // Hitachi SH EMSH, // SPARC v9 64-bit EMSPARCV9, // Siemens Tricore EMTRICORE, // Argonaut RISC Core EMARC, // Hitachi H8/300 EMH8300, // Hitachi H8/300H EMH8300H, // Hitachi H8S EMH8S, // Hitachi H8/500 EMH8500, // Stanford MIPS-X EMMIPSX, // Motorola Coldfire EMCOLDFIRE, // Motorola M68HC12 EM68HC12, // Fujitsu MMA Multimedia Accelerator EMMMA, // Siemens PCP EMPCP, // Sony nCPU embedded RISC EMNCPU, // Denso NDR1 microprocessor EMNDR1, // Motorola Start*Core processor EMSTARCORE, // Toyota ME16 processor EMME16, // STMicroelectronic ST100 processor EMST100, // Advanced Logic Corp. TinyJ embedded processor EMTINYJ, // Advanced Micro Devices X86-64 processor EMX8664, // Sony DSP Processor EMPDSP, // Digital Equipment Corp. PDP-10 EMPDP10, // Digital Equipment Corp. PDP-11 EMPDP11, // Siemens FX66 microcontroller EMFX66, // STMicroelectronics ST9+ 8/16 bit microcontroller EMST9PLUS, // STMicroelectronics ST7 8-bit microcontroller EMST7, // Motorola MC68HC16 Microcontroller EM68HC16, // Motorola MC68HC11 Microcontroller EM68HC11, // Motorola MC68HC08 Microcontroller EM68HC08, // Motorola MC68HC05 Microcontroller EM68HC05, // Silicon Graphics SVx EMSVX, // STMicroelectronics ST19 8-bit cpu EMST19, // Digital VAX EMVAX, // Axis Communications 32-bit embedded processor EMCRIS, // Infineon Technologies 32-bit embedded cpu EMJAVELIN, // Element 14 64-bit DSP processor EMFIREPATH, // LSI Logic's 16-bit DSP processor EMZSP, // Donald Knuth's educational 64-bit processor EMMMIX, // Harvard's machine-independent format EMHUANY, // SiTera Prism EMPRISM, // Atmel AVR 8-bit microcontroller EMAVR, // Fujitsu FR30 EMFR30, // Mitsubishi D10V EMD10V, // Mitsubishi D30V EMD30V, // Renesas V850 (formerly NEC V850) EMV850, // Renesas M32R (formerly Mitsubishi M32R) EMM32R, // Matsushita MN10300 EMMN10300, // Matsushita MN10200 EMMN10200, // picoJava EMPJ, // OpenRISC 1000 32-bit embedded processor EMOR1K, // ARC International ARCompact processor EMARCCOMPACT, // Tensilica Xtensa Architecture EMXTENSA, // Old Sunplus S+core7 backend magic number. // Written in the absence of an ABI. EMSCOREOLD, // Alphamosaic VideoCore processor EMVIDEOCORE, // Thompson Multimedia General Purpose Processor EMTMMGPP, // National Semiconductor 32000 series EMNS32K, // Tenor Network TPC processor EMTPC, // Old value for picoJava. Deprecated. EMPJOLD, // Trebia SNP 1000 processor EMSNP1K, // STMicroelectronics ST200 microcontroller EMST200, ANY(Elf64Half), } impl ELFMACHINE { pub fn to_bytes(&self) -> Elf64Half { match self { Self::EMX8664 => 62, Self::ANY(c) => *c, _ => panic!("not implemented -> {:?}", self), } } } impl From<Elf64Half> for ELFMACHINE { fn from(bytes: Elf64Half) -> Self { match bytes { 62 => Self::EMX8664, _ => Self::ANY(bytes), } } }