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