1 // sweet emacs regexp
2 // pub const \([[:word:]|_]*\)[[:space:]]*\([[:digit:]]+\)[[:space:]]*/\*\(.*\) \*/
3 // \\\\3 C-q C-j pub const \1: u32 = \2;
4 
5 /// TODO: use Enum with explicit discriminant and get debug printer for free?
6 
7 /// No machine
8 pub const EM_NONE: u16 = 0;
9 /// AT&T WE 32100
10 pub const EM_M32: u16 = 1;
11 /// SUN SPARC
12 pub const EM_SPARC: u16 = 2;
13 /// Intel 80386
14 pub const EM_386: u16 = 3;
15 /// Motorola m68k family
16 pub const EM_68K: u16 = 4;
17 /// Motorola m88k family
18 pub const EM_88K: u16 = 5;
19 /// Intel MCU
20 pub const EM_IAMCU: u16 = 6;
21 /// Intel 80860
22 pub const EM_860: u16 = 7;
23 /// MIPS R3000 big-endian
24 pub const EM_MIPS: u16 = 8;
25 /// IBM System/370
26 pub const EM_S370: u16 = 9;
27 /// MIPS R3000 little-endian
28 pub const EM_MIPS_RS3_LE: u16 = 10;
29 // reserved 11-14
30 /// HPPA
31 pub const EM_PARISC: u16 = 15;
32 // reserved 16
33 /// Fujitsu VPP500
34 pub const EM_VPP500: u16 = 17;
35 /// Sun's "v8plus"
36 pub const EM_SPARC32PLUS: u16 = 18;
37 /// Intel 80960
38 pub const EM_960: u16 = 19;
39 /// PowerPC
40 pub const EM_PPC: u16 = 20;
41 /// PowerPC 64-bit
42 pub const EM_PPC64: u16 = 21;
43 /// IBM S390
44 pub const EM_S390: u16 = 22;
45 /// IBM SPU/SPC
46 pub const EM_SPU: u16 = 23;
47 // reserved 24-35
48 /// NEC V800 series
49 pub const EM_V800: u16 = 36;
50 /// Fujitsu FR20
51 pub const EM_FR20: u16 = 37;
52 /// TRW RH-32
53 pub const EM_RH32: u16 = 38;
54 /// Motorola RCE
55 pub const EM_RCE: u16 = 39;
56 /// ARM
57 pub const EM_ARM: u16 = 40;
58 /// Digital Alpha
59 pub const EM_FAKE_ALPHA: u16 = 41;
60 /// Hitachi SH
61 pub const EM_SH: u16 = 42;
62 /// SPARC v9 64-bit
63 pub const EM_SPARCV9: u16 = 43;
64 /// Siemens Tricore
65 pub const EM_TRICORE: u16 = 44;
66 /// Argonaut RISC Core
67 pub const EM_ARC: u16 = 45;
68 /// Hitachi H8/300
69 pub const EM_H8_300: u16 = 46;
70 /// Hitachi H8/300H
71 pub const EM_H8_300H: u16 = 47;
72 /// Hitachi H8S
73 pub const EM_H8S: u16 = 48;
74 /// Hitachi H8/500
75 pub const EM_H8_500: u16 = 49;
76 /// Intel Merced
77 pub const EM_IA_64: u16 = 50;
78 /// Stanford MIPS-X
79 pub const EM_MIPS_X: u16 = 51;
80 /// Motorola Coldfire
81 pub const EM_COLDFIRE: u16 = 52;
82 /// Motorola M68HC12
83 pub const EM_68HC12: u16 = 53;
84 /// Fujitsu MMA Multimedia Accelerator
85 pub const EM_MMA: u16 = 54;
86 /// Siemens PCP
87 pub const EM_PCP: u16 = 55;
88 /// Sony nCPU embeeded RISC
89 pub const EM_NCPU: u16 = 56;
90 /// Denso NDR1 microprocessor
91 pub const EM_NDR1: u16 = 57;
92 /// Motorola Start*Core processor
93 pub const EM_STARCORE: u16 = 58;
94 /// Toyota ME16 processor
95 pub const EM_ME16: u16 = 59;
96 /// STMicroelectronic ST100 processor
97 pub const EM_ST100: u16 = 60;
98 /// Advanced Logic Corp. Tinyj emb.fam
99 pub const EM_TINYJ: u16 = 61;
100 /// AMD x86-64 architecture
101 pub const EM_X86_64: u16 = 62;
102 /// Sony DSP Processor
103 pub const EM_PDSP: u16 = 63;
104 /// Digital PDP-10
105 pub const EM_PDP10: u16 = 64;
106 /// Digital PDP-11
107 pub const EM_PDP11: u16 = 65;
108 /// Siemens FX66 microcontroller
109 pub const EM_FX66: u16 = 66;
110 /// STMicroelectronics ST9+ 8/16 mc
111 pub const EM_ST9PLUS: u16 = 67;
112 /// STmicroelectronics ST7 8 bit mc
113 pub const EM_ST7: u16 = 68;
114 /// Motorola MC68HC16 microcontroller
115 pub const EM_68HC16: u16 = 69;
116 /// Motorola MC68HC11 microcontroller
117 pub const EM_68HC11: u16 = 70;
118 /// Motorola MC68HC08 microcontroller
119 pub const EM_68HC08: u16 = 71;
120 /// Motorola MC68HC05 microcontroller
121 pub const EM_68HC05: u16 = 72;
122 /// Silicon Graphics SVx
123 pub const EM_SVX: u16 = 73;
124 /// STMicroelectronics ST19 8 bit mc
125 pub const EM_ST19: u16 = 74;
126 /// Digital VAX
127 pub const EM_VAX: u16 = 75;
128 /// Axis Communications 32-bit emb.proc
129 pub const EM_CRIS: u16 = 76;
130 /// Infineon Technologies 32-bit emb.proc
131 pub const EM_JAVELIN: u16 = 77;
132 /// Element 14 64-bit DSP Processor
133 pub const EM_FIREPATH: u16 = 78;
134 /// LSI Logic 16-bit DSP Processor
135 pub const EM_ZSP: u16 = 79;
136 /// Donald Knuth's educational 64-bit proc
137 pub const EM_MMIX: u16 = 80;
138 /// Harvard University machine-independent object files
139 pub const EM_HUANY: u16 = 81;
140 /// SiTera Prism
141 pub const EM_PRISM: u16 = 82;
142 /// Atmel AVR 8-bit microcontroller
143 pub const EM_AVR: u16 = 83;
144 /// Fujitsu FR30
145 pub const EM_FR30: u16 = 84;
146 /// Mitsubishi D10V
147 pub const EM_D10V: u16 = 85;
148 /// Mitsubishi D30V
149 pub const EM_D30V: u16 = 86;
150 /// NEC v850
151 pub const EM_V850: u16 = 87;
152 /// Mitsubishi M32R
153 pub const EM_M32R: u16 = 88;
154 /// Matsushita MN10300
155 pub const EM_MN10300: u16 = 89;
156 /// Matsushita MN10200
157 pub const EM_MN10200: u16 = 90;
158 /// picoJava
159 pub const EM_PJ: u16 = 91;
160 /// OpenRISC 32-bit embedded processor
161 pub const EM_OPENRISC: u16 = 92;
162 /// ARC International ARCompact
163 pub const EM_ARC_COMPACT: u16 = 93;
164 /// Tensilica Xtensa Architecture
165 pub const EM_XTENSA: u16 = 94;
166 /// Alphamosaic VideoCore
167 pub const EM_VIDEOCORE: u16 = 95;
168 /// Thompson Multimedia General Purpose Proc
169 pub const EM_TMM_GPP: u16 = 96;
170 /// National Semi. 32000
171 pub const EM_NS32K: u16 = 97;
172 /// Tenor Network TPC
173 pub const EM_TPC: u16 = 98;
174 /// Trebia SNP 1000
175 pub const EM_SNP1K: u16 = 99;
176 /// STMicroelectronics ST200
177 pub const EM_ST200: u16 = 100;
178 /// Ubicom IP2xxx
179 pub const EM_IP2K: u16 = 101;
180 /// MAX processor
181 pub const EM_MAX: u16 = 102;
182 /// National Semi. CompactRISC
183 pub const EM_CR: u16 = 103;
184 /// Fujitsu F2MC16
185 pub const EM_F2MC16: u16 = 104;
186 /// Texas Instruments msp430
187 pub const EM_MSP430: u16 = 105;
188 /// Analog Devices Blackfin DSP
189 pub const EM_BLACKFIN: u16 = 106;
190 /// Seiko Epson S1C33 family
191 pub const EM_SE_C33: u16 = 107;
192 /// Sharp embedded microprocessor
193 pub const EM_SEP: u16 = 108;
194 /// Arca RISC
195 pub const EM_ARCA: u16 = 109;
196 /// PKU-Unity & MPRC Peking Uni. mc series
197 pub const EM_UNICORE: u16 = 110;
198 /// eXcess configurable cpu
199 pub const EM_EXCESS: u16 = 111;
200 /// Icera Semi. Deep Execution Processor
201 pub const EM_DXP: u16 = 112;
202 /// Altera Nios II
203 pub const EM_ALTERA_NIOS2: u16 = 113;
204 /// National Semi. CompactRISC CRX
205 pub const EM_CRX: u16 = 114;
206 /// Motorola XGATE
207 pub const EM_XGATE: u16 = 115;
208 /// Infineon C16x/XC16x
209 pub const EM_C166: u16 = 116;
210 /// Renesas M16C
211 pub const EM_M16C: u16 = 117;
212 /// Microchip Technology dsPIC30F
213 pub const EM_DSPIC30F: u16 = 118;
214 /// Freescale Communication Engine RISC
215 pub const EM_CE: u16 = 119;
216 /// Renesas M32C
217 pub const EM_M32C: u16 = 120;
218 // reserved 121-130
219 /// Altium TSK3000
220 pub const EM_TSK3000: u16 = 131;
221 /// Freescale RS08
222 pub const EM_RS08: u16 = 132;
223 /// Analog Devices SHARC family
224 pub const EM_SHARC: u16 = 133;
225 /// Cyan Technology eCOG2
226 pub const EM_ECOG2: u16 = 134;
227 /// Sunplus S+core7 RISC
228 pub const EM_SCORE7: u16 = 135;
229 /// New Japan Radio (NJR) 24-bit DSP
230 pub const EM_DSP24: u16 = 136;
231 /// Broadcom VideoCore III
232 pub const EM_VIDEOCORE3: u16 = 137;
233 /// RISC for Lattice FPGA
234 pub const EM_LATTICEMICO32: u16 = 138;
235 /// Seiko Epson C17
236 pub const EM_SE_C17: u16 = 139;
237 /// Texas Instruments TMS320C6000 DSP
238 pub const EM_TI_C6000: u16 = 140;
239 /// Texas Instruments TMS320C2000 DSP
240 pub const EM_TI_C2000: u16 = 141;
241 /// Texas Instruments TMS320C55x DSP
242 pub const EM_TI_C5500: u16 = 142;
243 /// Texas Instruments App. Specific RISC
244 pub const EM_TI_ARP32: u16 = 143;
245 /// Texas Instruments Prog. Realtime Unit
246 pub const EM_TI_PRU: u16 = 144;
247 // reserved 145-159
248 /// STMicroelectronics 64bit VLIW DSP
249 pub const EM_MMDSP_PLUS: u16 = 160;
250 /// Cypress M8C
251 pub const EM_CYPRESS_M8C: u16 = 161;
252 /// Renesas R32C
253 pub const EM_R32C: u16 = 162;
254 /// NXP Semi. TriMedia
255 pub const EM_TRIMEDIA: u16 = 163;
256 /// QUALCOMM DSP6
257 pub const EM_QDSP6: u16 = 164;
258 /// Intel 8051 and variants
259 pub const EM_8051: u16 = 165;
260 /// STMicroelectronics STxP7x
261 pub const EM_STXP7X: u16 = 166;
262 /// Andes Tech. compact code emb. RISC
263 pub const EM_NDS32: u16 = 167;
264 /// Cyan Technology eCOG1X
265 pub const EM_ECOG1X: u16 = 168;
266 /// Dallas Semi. MAXQ30 mc
267 pub const EM_MAXQ30: u16 = 169;
268 /// New Japan Radio (NJR) 16-bit DSP
269 pub const EM_XIMO16: u16 = 170;
270 /// M2000 Reconfigurable RISC
271 pub const EM_MANIK: u16 = 171;
272 /// Cray NV2 vector architecture
273 pub const EM_CRAYNV2: u16 = 172;
274 /// Renesas RX
275 pub const EM_RX: u16 = 173;
276 /// Imagination Tech. META
277 pub const EM_METAG: u16 = 174;
278 /// MCST Elbrus
279 pub const EM_MCST_ELBRUS: u16 = 175;
280 /// Cyan Technology eCOG16
281 pub const EM_ECOG16: u16 = 176;
282 /// National Semi. CompactRISC CR16
283 pub const EM_CR16: u16 = 177;
284 /// Freescale Extended Time Processing Unit
285 pub const EM_ETPU: u16 = 178;
286 /// Infineon Tech. SLE9X
287 pub const EM_SLE9X: u16 = 179;
288 /// Intel L10M
289 pub const EM_L10M: u16 = 180;
290 /// Intel K10M
291 pub const EM_K10M: u16 = 181;
292 // reserved 182
293 /// ARM AARCH64
294 pub const EM_AARCH64: u16 = 183;
295 // reserved 184
296 /// Amtel 32-bit microprocessor
297 pub const EM_AVR32: u16 = 185;
298 /// STMicroelectronics STM8
299 pub const EM_STM8: u16 = 186;
300 /// Tileta TILE64
301 pub const EM_TILE64: u16 = 187;
302 /// Tilera TILEPro
303 pub const EM_TILEPRO: u16 = 188;
304 /// Xilinx MicroBlaze
305 pub const EM_MICROBLAZE: u16 = 189;
306 /// NVIDIA CUDA
307 pub const EM_CUDA: u16 = 190;
308 /// Tilera TILE-Gx
309 pub const EM_TILEGX: u16 = 191;
310 /// CloudShield
311 pub const EM_CLOUDSHIELD: u16 = 192;
312 /// KIPO-KAIST Core-A 1st gen.
313 pub const EM_COREA_1ST: u16 = 193;
314 /// KIPO-KAIST Core-A 2nd gen.
315 pub const EM_COREA_2ND: u16 = 194;
316 /// Synopsys ARCompact V2
317 pub const EM_ARC_COMPACT2: u16 = 195;
318 /// Open8 RISC
319 pub const EM_OPEN8: u16 = 196;
320 /// Renesas RL78
321 pub const EM_RL78: u16 = 197;
322 /// Broadcom VideoCore V
323 pub const EM_VIDEOCORE5: u16 = 198;
324 /// Renesas 78KOR
325 pub const EM_78KOR: u16 = 199;
326 /// Freescale 56800EX DSC
327 pub const EM_56800EX: u16 = 200;
328 /// Beyond BA1
329 pub const EM_BA1: u16 = 201;
330 /// Beyond BA2
331 pub const EM_BA2: u16 = 202;
332 /// XMOS xCORE
333 pub const EM_XCORE: u16 = 203;
334 /// Microchip 8-bit PIC(r)
335 pub const EM_MCHP_PIC: u16 = 204;
336 // reserved 205-209
337 /// KM211 KM32
338 pub const EM_KM32: u16 = 210;
339 /// KM211 KMX32
340 pub const EM_KMX32: u16 = 211;
341 /// KM211 KMX16
342 pub const EM_EMX16: u16 = 212;
343 /// KM211 KMX8
344 pub const EM_EMX8: u16 = 213;
345 /// KM211 KVARC
346 pub const EM_KVARC: u16 = 214;
347 /// Paneve CDP
348 pub const EM_CDP: u16 = 215;
349 /// Cognitive Smart Memory Processor
350 pub const EM_COGE: u16 = 216;
351 /// Bluechip CoolEngine
352 pub const EM_COOL: u16 = 217;
353 /// Nanoradio Optimized RISC
354 pub const EM_NORC: u16 = 218;
355 /// CSR Kalimba
356 pub const EM_CSR_KALIMBA: u16 = 219;
357 /// Zilog Z80
358 pub const EM_Z80: u16 = 220;
359 /// Controls and Data Services VISIUMcore
360 pub const EM_VISIUM: u16 = 221;
361 /// FTDI Chip FT32
362 pub const EM_FT32: u16 = 222;
363 /// Moxie processor
364 pub const EM_MOXIE: u16 = 223;
365 /// AMD GPU
366 pub const EM_AMDGPU: u16 = 224;
367 // reserved 225-242
368 /// RISC-V
369 pub const EM_RISCV: u16 = 243;
370 
371 /// Linux BPF -- in-kernel virtual machine
372 pub const EM_BPF: u16 = 247;
373 
374 pub const EM_NUM: u16 = 248;
375 
376 /// Convert machine to str representation
machine_to_str(machine: u16) -> &'static str377 pub fn machine_to_str (machine: u16) -> &'static str {
378     match machine {
379         EM_M32 => "M32",
380         EM_SPARC => "SPARC",
381         EM_386 => "386",
382         EM_68K => "68K",
383         EM_88K => "88K",
384         EM_IAMCU => "IAMCU",
385         EM_860 => "860",
386         EM_MIPS => "MIPS",
387         EM_S370 => "S370",
388         EM_MIPS_RS3_LE => "MIPS_RS3_LE",
389         EM_PARISC => "PARISC",
390         EM_VPP500 => "VPP500",
391         EM_SPARC32PLUS => "SPARC32PLUS",
392         EM_960 => "960",
393         EM_PPC => "PPC",
394         EM_PPC64 => "PPC64",
395         EM_S390 => "S390",
396         EM_SPU => "SPU",
397         EM_V800 => "V800",
398         EM_FR20 => "FR20",
399         EM_RH32 => "RH32",
400         EM_RCE => "RCE",
401         EM_ARM => "ARM",
402         EM_FAKE_ALPHA => "FAKE_ALPHA",
403         EM_SH => "SH",
404         EM_SPARCV9 => "SPARCV9",
405         EM_TRICORE => "TRICORE",
406         EM_ARC => "ARC",
407         EM_H8_300 => "H8_300",
408         EM_H8_300H => "H8_300H",
409         EM_H8S => "H8S",
410         EM_H8_500 => "H8_500",
411         EM_IA_64 => "IA_64",
412         EM_MIPS_X => "MIPS_X",
413         EM_COLDFIRE => "COLDFIRE",
414         EM_68HC12 => "68HC12",
415         EM_MMA => "MMA",
416         EM_PCP => "PCP",
417         EM_NCPU => "NCPU",
418         EM_NDR1 => "NDR1",
419         EM_STARCORE => "STARCORE",
420         EM_ME16 => "ME16",
421         EM_ST100 => "ST100",
422         EM_TINYJ => "TINYJ",
423         EM_X86_64 => "X86_64",
424         EM_PDSP => "PDSP",
425         EM_PDP10 => "PDP10",
426         EM_PDP11 => "PDP11",
427         EM_FX66 => "FX66",
428         EM_ST9PLUS => "ST9PLUS",
429         EM_ST7 => "ST7",
430         EM_68HC16 => "68HC16",
431         EM_68HC11 => "68HC11",
432         EM_68HC08 => "68HC08",
433         EM_68HC05 => "68HC05",
434         EM_SVX => "SVX",
435         EM_ST19 => "ST19",
436         EM_VAX => "VAX",
437         EM_CRIS => "CRIS",
438         EM_JAVELIN => "JAVELIN",
439         EM_FIREPATH => "FIREPATH",
440         EM_ZSP => "ZSP",
441         EM_MMIX => "MMIX",
442         EM_HUANY => "HUANY",
443         EM_PRISM => "PRISM",
444         EM_AVR => "AVR",
445         EM_FR30 => "FR30",
446         EM_D10V => "D10V",
447         EM_D30V => "D30V",
448         EM_V850 => "V850",
449         EM_M32R => "M32R",
450         EM_MN10300 => "MN10300",
451         EM_MN10200 => "MN10200",
452         EM_PJ => "PJ",
453         EM_OPENRISC => "OPENRISC",
454         EM_ARC_COMPACT => "ARC_COMPACT",
455         EM_XTENSA => "XTENSA",
456         EM_VIDEOCORE => "VIDEOCORE",
457         EM_TMM_GPP => "TMM_GPP",
458         EM_NS32K => "NS32K",
459         EM_TPC => "TPC",
460         EM_SNP1K => "SNP1K",
461         EM_ST200 => "ST200",
462         EM_IP2K => "IP2K",
463         EM_MAX => "MAX",
464         EM_CR => "CR",
465         EM_F2MC16 => "F2MC16",
466         EM_MSP430 => "MSP430",
467         EM_BLACKFIN => "BLACKFIN",
468         EM_SE_C33 => "SE_C33",
469         EM_SEP => "SEP",
470         EM_ARCA => "ARCA",
471         EM_UNICORE => "UNICORE",
472         EM_EXCESS => "EXCESS",
473         EM_DXP => "DXP",
474         EM_ALTERA_NIOS2 => "ALTERA_NIOS2",
475         EM_CRX => "CRX",
476         EM_XGATE => "XGATE",
477         EM_C166 => "C166",
478         EM_M16C => "M16C",
479         EM_DSPIC30F => "DSPIC30F",
480         EM_CE => "CE",
481         EM_M32C => "M32C",
482         EM_TSK3000 => "TSK3000",
483         EM_RS08 => "RS08",
484         EM_SHARC => "SHARC",
485         EM_ECOG2 => "ECOG2",
486         EM_SCORE7 => "SCORE7",
487         EM_DSP24 => "DSP24",
488         EM_VIDEOCORE3 => "VIDEOCORE3",
489         EM_LATTICEMICO32 => "LATTICEMICO32",
490         EM_SE_C17 => "SE_C17",
491         EM_TI_C6000 => "TI_C6000",
492         EM_TI_C2000 => "TI_C2000",
493         EM_TI_C5500 => "TI_C5500",
494         EM_TI_ARP32 => "TI_ARP32",
495         EM_TI_PRU => "TI_PRU",
496         EM_MMDSP_PLUS => "MMDSP_PLUS",
497         EM_CYPRESS_M8C => "CYPRESS_M8C",
498         EM_R32C => "R32C",
499         EM_TRIMEDIA => "TRIMEDIA",
500         EM_QDSP6 => "QDSP6",
501         EM_8051 => "8051",
502         EM_STXP7X => "STXP7X",
503         EM_NDS32 => "NDS32",
504         EM_ECOG1X => "ECOG1X",
505         EM_MAXQ30 => "MAXQ30",
506         EM_XIMO16 => "XIMO16",
507         EM_MANIK => "MANIK",
508         EM_CRAYNV2 => "CRAYNV2",
509         EM_RX => "RX",
510         EM_METAG => "METAG",
511         EM_MCST_ELBRUS => "MCST_ELBRUS",
512         EM_ECOG16 => "ECOG16",
513         EM_CR16 => "CR16",
514         EM_ETPU => "ETPU",
515         EM_SLE9X => "SLE9X",
516         EM_L10M => "L10M",
517         EM_K10M => "K10M",
518         EM_AARCH64 => "AARCH64",
519         EM_AVR32 => "AVR32",
520         EM_STM8 => "STM8",
521         EM_TILE64 => "TILE64",
522         EM_TILEPRO => "TILEPRO",
523         EM_MICROBLAZE => "MICROBLAZE",
524         EM_CUDA => "CUDA",
525         EM_TILEGX => "TILEGX",
526         EM_CLOUDSHIELD => "CLOUDSHIELD",
527         EM_COREA_1ST => "COREA_1ST",
528         EM_COREA_2ND => "COREA_2ND",
529         EM_ARC_COMPACT2 => "ARC_COMPACT2",
530         EM_OPEN8 => "OPEN8",
531         EM_RL78 => "RL78",
532         EM_VIDEOCORE5 => "VIDEOCORE5",
533         EM_78KOR => "78KOR",
534         EM_56800EX => "56800EX",
535         EM_BA1 => "BA1",
536         EM_BA2 => "BA2",
537         EM_XCORE => "XCORE",
538         EM_MCHP_PIC => "MCHP_PIC",
539         EM_KM32 => "KM32",
540         EM_KMX32 => "KMX32",
541         EM_EMX16 => "EMX16",
542         EM_EMX8 => "EMX8",
543         EM_KVARC => "KVARC",
544         EM_CDP => "CDP",
545         EM_COGE => "COGE",
546         EM_COOL => "COOL",
547         EM_NORC => "NORC",
548         EM_CSR_KALIMBA => "CSR_KALIMBA",
549         EM_Z80 => "Z80",
550         EM_VISIUM => "VISIUM",
551         EM_FT32 => "FT32",
552         EM_MOXIE => "MOXIE",
553         EM_AMDGPU => "AMDGPU",
554         EM_RISCV => "RISCV",
555         EM_BPF => "BPF",
556         _val => "EM_UNKNOWN",
557     }
558 }
559