258 ELFYAML::ELF_EF &
Value) {
260 assert(Object &&
"The IO context is not initialized");
261#define BCase(X) IO.bitSetCase(Value, #X, ELF::X)
262#define BCaseMask(X, M) IO.maskedBitSetCase(Value, #X, ELF::X, ELF::M)
263 switch (Object->getMachine()) {
265 BCase(EF_ARM_SOFT_FLOAT);
266 BCase(EF_ARM_VFP_FLOAT);
267 BCaseMask(EF_ARM_EABI_UNKNOWN, EF_ARM_EABIMASK);
268 BCaseMask(EF_ARM_EABI_VER1, EF_ARM_EABIMASK);
269 BCaseMask(EF_ARM_EABI_VER2, EF_ARM_EABIMASK);
270 BCaseMask(EF_ARM_EABI_VER3, EF_ARM_EABIMASK);
271 BCaseMask(EF_ARM_EABI_VER4, EF_ARM_EABIMASK);
272 BCaseMask(EF_ARM_EABI_VER5, EF_ARM_EABIMASK);
276 BCase(EF_MIPS_NOREORDER);
280 BCase(EF_MIPS_32BITMODE);
282 BCase(EF_MIPS_NAN2008);
283 BCase(EF_MIPS_MICROMIPS);
284 BCase(EF_MIPS_ARCH_ASE_M16);
285 BCase(EF_MIPS_ARCH_ASE_MDMX);
288 BCaseMask(EF_MIPS_ABI_EABI32, EF_MIPS_ABI);
289 BCaseMask(EF_MIPS_ABI_EABI64, EF_MIPS_ABI);
290 BCaseMask(EF_MIPS_MACH_3900, EF_MIPS_MACH);
291 BCaseMask(EF_MIPS_MACH_4010, EF_MIPS_MACH);
292 BCaseMask(EF_MIPS_MACH_4100, EF_MIPS_MACH);
293 BCaseMask(EF_MIPS_MACH_4650, EF_MIPS_MACH);
294 BCaseMask(EF_MIPS_MACH_4120, EF_MIPS_MACH);
295 BCaseMask(EF_MIPS_MACH_4111, EF_MIPS_MACH);
296 BCaseMask(EF_MIPS_MACH_SB1, EF_MIPS_MACH);
297 BCaseMask(EF_MIPS_MACH_OCTEON, EF_MIPS_MACH);
298 BCaseMask(EF_MIPS_MACH_XLR, EF_MIPS_MACH);
299 BCaseMask(EF_MIPS_MACH_OCTEON2, EF_MIPS_MACH);
300 BCaseMask(EF_MIPS_MACH_OCTEON3, EF_MIPS_MACH);
301 BCaseMask(EF_MIPS_MACH_5400, EF_MIPS_MACH);
302 BCaseMask(EF_MIPS_MACH_5900, EF_MIPS_MACH);
303 BCaseMask(EF_MIPS_MACH_5500, EF_MIPS_MACH);
304 BCaseMask(EF_MIPS_MACH_9000, EF_MIPS_MACH);
305 BCaseMask(EF_MIPS_MACH_LS2E, EF_MIPS_MACH);
306 BCaseMask(EF_MIPS_MACH_LS2F, EF_MIPS_MACH);
307 BCaseMask(EF_MIPS_MACH_LS3A, EF_MIPS_MACH);
313 BCaseMask(EF_MIPS_ARCH_32, EF_MIPS_ARCH);
314 BCaseMask(EF_MIPS_ARCH_64, EF_MIPS_ARCH);
315 BCaseMask(EF_MIPS_ARCH_32R2, EF_MIPS_ARCH);
316 BCaseMask(EF_MIPS_ARCH_64R2, EF_MIPS_ARCH);
317 BCaseMask(EF_MIPS_ARCH_32R6, EF_MIPS_ARCH);
318 BCaseMask(EF_MIPS_ARCH_64R6, EF_MIPS_ARCH);
320 case ELF::EM_HEXAGON:
321 BCaseMask(EF_HEXAGON_MACH_V2, EF_HEXAGON_MACH);
322 BCaseMask(EF_HEXAGON_MACH_V3, EF_HEXAGON_MACH);
323 BCaseMask(EF_HEXAGON_MACH_V4, EF_HEXAGON_MACH);
324 BCaseMask(EF_HEXAGON_MACH_V5, EF_HEXAGON_MACH);
325 BCaseMask(EF_HEXAGON_MACH_V55, EF_HEXAGON_MACH);
326 BCaseMask(EF_HEXAGON_MACH_V60, EF_HEXAGON_MACH);
327 BCaseMask(EF_HEXAGON_MACH_V61, EF_HEXAGON_MACH);
328 BCaseMask(EF_HEXAGON_MACH_V62, EF_HEXAGON_MACH);
329 BCaseMask(EF_HEXAGON_MACH_V65, EF_HEXAGON_MACH);
330 BCaseMask(EF_HEXAGON_MACH_V66, EF_HEXAGON_MACH);
331 BCaseMask(EF_HEXAGON_MACH_V67, EF_HEXAGON_MACH);
332 BCaseMask(EF_HEXAGON_MACH_V67T, EF_HEXAGON_MACH);
333 BCaseMask(EF_HEXAGON_MACH_V68, EF_HEXAGON_MACH);
334 BCaseMask(EF_HEXAGON_MACH_V69, EF_HEXAGON_MACH);
335 BCaseMask(EF_HEXAGON_MACH_V71, EF_HEXAGON_MACH);
336 BCaseMask(EF_HEXAGON_MACH_V71T, EF_HEXAGON_MACH);
337 BCaseMask(EF_HEXAGON_MACH_V73, EF_HEXAGON_MACH);
338 BCaseMask(EF_HEXAGON_MACH_V75, EF_HEXAGON_MACH);
339 BCaseMask(EF_HEXAGON_MACH_V77, EF_HEXAGON_MACH);
340 BCaseMask(EF_HEXAGON_MACH_V79, EF_HEXAGON_MACH);
341 BCaseMask(EF_HEXAGON_MACH_V81, EF_HEXAGON_MACH);
342 BCaseMask(EF_HEXAGON_MACH_V83, EF_HEXAGON_MACH);
343 BCaseMask(EF_HEXAGON_MACH_V85, EF_HEXAGON_MACH);
344 BCaseMask(EF_HEXAGON_MACH_V87, EF_HEXAGON_MACH);
345 BCaseMask(EF_HEXAGON_MACH_V89, EF_HEXAGON_MACH);
346 BCaseMask(EF_HEXAGON_MACH_V91, EF_HEXAGON_MACH);
347 BCaseMask(EF_HEXAGON_MACH_V93, EF_HEXAGON_MACH);
348 BCaseMask(EF_HEXAGON_ISA_V2, EF_HEXAGON_ISA);
349 BCaseMask(EF_HEXAGON_ISA_V3, EF_HEXAGON_ISA);
350 BCaseMask(EF_HEXAGON_ISA_V4, EF_HEXAGON_ISA);
351 BCaseMask(EF_HEXAGON_ISA_V5, EF_HEXAGON_ISA);
352 BCaseMask(EF_HEXAGON_ISA_V55, EF_HEXAGON_ISA);
353 BCaseMask(EF_HEXAGON_ISA_V60, EF_HEXAGON_ISA);
354 BCaseMask(EF_HEXAGON_ISA_V61, EF_HEXAGON_ISA);
355 BCaseMask(EF_HEXAGON_ISA_V62, EF_HEXAGON_ISA);
356 BCaseMask(EF_HEXAGON_ISA_V65, EF_HEXAGON_ISA);
357 BCaseMask(EF_HEXAGON_ISA_V66, EF_HEXAGON_ISA);
358 BCaseMask(EF_HEXAGON_ISA_V67, EF_HEXAGON_ISA);
359 BCaseMask(EF_HEXAGON_ISA_V68, EF_HEXAGON_ISA);
360 BCaseMask(EF_HEXAGON_ISA_V69, EF_HEXAGON_ISA);
361 BCaseMask(EF_HEXAGON_ISA_V71, EF_HEXAGON_ISA);
362 BCaseMask(EF_HEXAGON_ISA_V73, EF_HEXAGON_ISA);
363 BCaseMask(EF_HEXAGON_ISA_V75, EF_HEXAGON_ISA);
364 BCaseMask(EF_HEXAGON_ISA_V77, EF_HEXAGON_ISA);
365 BCaseMask(EF_HEXAGON_ISA_V79, EF_HEXAGON_ISA);
366 BCaseMask(EF_HEXAGON_ISA_V81, EF_HEXAGON_ISA);
367 BCaseMask(EF_HEXAGON_ISA_V83, EF_HEXAGON_ISA);
368 BCaseMask(EF_HEXAGON_ISA_V85, EF_HEXAGON_ISA);
369 BCaseMask(EF_HEXAGON_ISA_V87, EF_HEXAGON_ISA);
370 BCaseMask(EF_HEXAGON_ISA_V89, EF_HEXAGON_ISA);
371 BCaseMask(EF_HEXAGON_ISA_V91, EF_HEXAGON_ISA);
372 BCaseMask(EF_HEXAGON_ISA_V93, EF_HEXAGON_ISA);
375 BCaseMask(EF_AVR_ARCH_AVR1, EF_AVR_ARCH_MASK);
376 BCaseMask(EF_AVR_ARCH_AVR2, EF_AVR_ARCH_MASK);
377 BCaseMask(EF_AVR_ARCH_AVR25, EF_AVR_ARCH_MASK);
378 BCaseMask(EF_AVR_ARCH_AVR3, EF_AVR_ARCH_MASK);
379 BCaseMask(EF_AVR_ARCH_AVR31, EF_AVR_ARCH_MASK);
380 BCaseMask(EF_AVR_ARCH_AVR35, EF_AVR_ARCH_MASK);
381 BCaseMask(EF_AVR_ARCH_AVR4, EF_AVR_ARCH_MASK);
382 BCaseMask(EF_AVR_ARCH_AVR5, EF_AVR_ARCH_MASK);
383 BCaseMask(EF_AVR_ARCH_AVR51, EF_AVR_ARCH_MASK);
384 BCaseMask(EF_AVR_ARCH_AVR6, EF_AVR_ARCH_MASK);
385 BCaseMask(EF_AVR_ARCH_AVRTINY, EF_AVR_ARCH_MASK);
386 BCaseMask(EF_AVR_ARCH_XMEGA1, EF_AVR_ARCH_MASK);
387 BCaseMask(EF_AVR_ARCH_XMEGA2, EF_AVR_ARCH_MASK);
388 BCaseMask(EF_AVR_ARCH_XMEGA3, EF_AVR_ARCH_MASK);
389 BCaseMask(EF_AVR_ARCH_XMEGA4, EF_AVR_ARCH_MASK);
390 BCaseMask(EF_AVR_ARCH_XMEGA5, EF_AVR_ARCH_MASK);
391 BCaseMask(EF_AVR_ARCH_XMEGA6, EF_AVR_ARCH_MASK);
392 BCaseMask(EF_AVR_ARCH_XMEGA7, EF_AVR_ARCH_MASK);
393 BCase(EF_AVR_LINKRELAX_PREPARED);
395 case ELF::EM_LOONGARCH:
396 BCaseMask(EF_LOONGARCH_ABI_SOFT_FLOAT, EF_LOONGARCH_ABI_MODIFIER_MASK);
397 BCaseMask(EF_LOONGARCH_ABI_SINGLE_FLOAT, EF_LOONGARCH_ABI_MODIFIER_MASK);
398 BCaseMask(EF_LOONGARCH_ABI_DOUBLE_FLOAT, EF_LOONGARCH_ABI_MODIFIER_MASK);
399 BCaseMask(EF_LOONGARCH_OBJABI_V0, EF_LOONGARCH_OBJABI_MASK);
400 BCaseMask(EF_LOONGARCH_OBJABI_V1, EF_LOONGARCH_OBJABI_MASK);
404 BCaseMask(EF_RISCV_FLOAT_ABI_SOFT, EF_RISCV_FLOAT_ABI);
405 BCaseMask(EF_RISCV_FLOAT_ABI_SINGLE, EF_RISCV_FLOAT_ABI);
406 BCaseMask(EF_RISCV_FLOAT_ABI_DOUBLE, EF_RISCV_FLOAT_ABI);
407 BCaseMask(EF_RISCV_FLOAT_ABI_QUAD, EF_RISCV_FLOAT_ABI);
411 case ELF::EM_SPARC32PLUS:
412 BCase(EF_SPARC_32PLUS);
413 BCase(EF_SPARC_SUN_US1);
414 BCase(EF_SPARC_SUN_US3);
415 BCase(EF_SPARC_HAL_R1);
417 case ELF::EM_SPARCV9:
418 BCase(EF_SPARC_SUN_US1);
419 BCase(EF_SPARC_SUN_US3);
420 BCase(EF_SPARC_HAL_R1);
421 BCaseMask(EF_SPARCV9_RMO, EF_SPARCV9_MM);
422 BCaseMask(EF_SPARCV9_PSO, EF_SPARCV9_MM);
423 BCaseMask(EF_SPARCV9_TSO, EF_SPARCV9_MM);
426 BCase(EF_XTENSA_XT_INSN);
427 BCaseMask(EF_XTENSA_MACH_NONE, EF_XTENSA_MACH);
428 BCase(EF_XTENSA_XT_LIT);
431 BCaseMask(EF_AMDGPU_MACH_NONE, EF_AMDGPU_MACH);
432#define X(NUM, ENUM, NAME) BCaseMask(ENUM, EF_AMDGPU_MACH);
435 switch (Object->Header.ABIVersion) {
440 BCase(EF_AMDGPU_FEATURE_XNACK_V3);
441 BCase(EF_AMDGPU_FEATURE_SRAMECC_V3);
446 std::string
Key =
"EF_AMDGPU_GENERIC_VERSION_V" + std::to_string(
K);
454 BCaseMask(EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4,
455 EF_AMDGPU_FEATURE_XNACK_V4);
456 BCaseMask(EF_AMDGPU_FEATURE_XNACK_ANY_V4,
457 EF_AMDGPU_FEATURE_XNACK_V4);
458 BCaseMask(EF_AMDGPU_FEATURE_XNACK_OFF_V4,
459 EF_AMDGPU_FEATURE_XNACK_V4);
461 EF_AMDGPU_FEATURE_XNACK_V4);
462 BCaseMask(EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4,
463 EF_AMDGPU_FEATURE_SRAMECC_V4);
464 BCaseMask(EF_AMDGPU_FEATURE_SRAMECC_ANY_V4,
465 EF_AMDGPU_FEATURE_SRAMECC_V4);
466 BCaseMask(EF_AMDGPU_FEATURE_SRAMECC_OFF_V4,
467 EF_AMDGPU_FEATURE_SRAMECC_V4);
468 BCaseMask(EF_AMDGPU_FEATURE_SRAMECC_ON_V4,
469 EF_AMDGPU_FEATURE_SRAMECC_V4);