421 ELFYAML::ELF_EF &
Value) {
423 assert(Object &&
"The IO context is not initialized");
424#define BCase(X) IO.bitSetCase(Value, #X, ELF::X)
425#define BCaseMask(X, M) IO.maskedBitSetCase(Value, #X, ELF::X, ELF::M)
426 switch (Object->getMachine()) {
428 BCase(EF_ARM_SOFT_FLOAT);
429 BCase(EF_ARM_VFP_FLOAT);
430 BCaseMask(EF_ARM_EABI_UNKNOWN, EF_ARM_EABIMASK);
431 BCaseMask(EF_ARM_EABI_VER1, EF_ARM_EABIMASK);
432 BCaseMask(EF_ARM_EABI_VER2, EF_ARM_EABIMASK);
433 BCaseMask(EF_ARM_EABI_VER3, EF_ARM_EABIMASK);
434 BCaseMask(EF_ARM_EABI_VER4, EF_ARM_EABIMASK);
435 BCaseMask(EF_ARM_EABI_VER5, EF_ARM_EABIMASK);
439 BCase(EF_MIPS_NOREORDER);
443 BCase(EF_MIPS_32BITMODE);
445 BCase(EF_MIPS_NAN2008);
446 BCase(EF_MIPS_MICROMIPS);
447 BCase(EF_MIPS_ARCH_ASE_M16);
448 BCase(EF_MIPS_ARCH_ASE_MDMX);
451 BCaseMask(EF_MIPS_ABI_EABI32, EF_MIPS_ABI);
452 BCaseMask(EF_MIPS_ABI_EABI64, EF_MIPS_ABI);
453 BCaseMask(EF_MIPS_MACH_3900, EF_MIPS_MACH);
454 BCaseMask(EF_MIPS_MACH_4010, EF_MIPS_MACH);
455 BCaseMask(EF_MIPS_MACH_4100, EF_MIPS_MACH);
456 BCaseMask(EF_MIPS_MACH_4650, EF_MIPS_MACH);
457 BCaseMask(EF_MIPS_MACH_4120, EF_MIPS_MACH);
458 BCaseMask(EF_MIPS_MACH_4111, EF_MIPS_MACH);
459 BCaseMask(EF_MIPS_MACH_SB1, EF_MIPS_MACH);
460 BCaseMask(EF_MIPS_MACH_OCTEON, EF_MIPS_MACH);
461 BCaseMask(EF_MIPS_MACH_XLR, EF_MIPS_MACH);
462 BCaseMask(EF_MIPS_MACH_OCTEON2, EF_MIPS_MACH);
463 BCaseMask(EF_MIPS_MACH_OCTEON3, EF_MIPS_MACH);
464 BCaseMask(EF_MIPS_MACH_5400, EF_MIPS_MACH);
465 BCaseMask(EF_MIPS_MACH_5900, EF_MIPS_MACH);
466 BCaseMask(EF_MIPS_MACH_5500, EF_MIPS_MACH);
467 BCaseMask(EF_MIPS_MACH_9000, EF_MIPS_MACH);
468 BCaseMask(EF_MIPS_MACH_LS2E, EF_MIPS_MACH);
469 BCaseMask(EF_MIPS_MACH_LS2F, EF_MIPS_MACH);
470 BCaseMask(EF_MIPS_MACH_LS3A, EF_MIPS_MACH);
476 BCaseMask(EF_MIPS_ARCH_32, EF_MIPS_ARCH);
477 BCaseMask(EF_MIPS_ARCH_64, EF_MIPS_ARCH);
478 BCaseMask(EF_MIPS_ARCH_32R2, EF_MIPS_ARCH);
479 BCaseMask(EF_MIPS_ARCH_64R2, EF_MIPS_ARCH);
480 BCaseMask(EF_MIPS_ARCH_32R6, EF_MIPS_ARCH);
481 BCaseMask(EF_MIPS_ARCH_64R6, EF_MIPS_ARCH);
484 BCaseMask(EF_HEXAGON_MACH_V2, EF_HEXAGON_MACH);
485 BCaseMask(EF_HEXAGON_MACH_V3, EF_HEXAGON_MACH);
486 BCaseMask(EF_HEXAGON_MACH_V4, EF_HEXAGON_MACH);
487 BCaseMask(EF_HEXAGON_MACH_V5, EF_HEXAGON_MACH);
488 BCaseMask(EF_HEXAGON_MACH_V55, EF_HEXAGON_MACH);
489 BCaseMask(EF_HEXAGON_MACH_V60, EF_HEXAGON_MACH);
490 BCaseMask(EF_HEXAGON_MACH_V61, EF_HEXAGON_MACH);
491 BCaseMask(EF_HEXAGON_MACH_V62, EF_HEXAGON_MACH);
492 BCaseMask(EF_HEXAGON_MACH_V65, EF_HEXAGON_MACH);
493 BCaseMask(EF_HEXAGON_MACH_V66, EF_HEXAGON_MACH);
494 BCaseMask(EF_HEXAGON_MACH_V67, EF_HEXAGON_MACH);
495 BCaseMask(EF_HEXAGON_MACH_V67T, EF_HEXAGON_MACH);
496 BCaseMask(EF_HEXAGON_MACH_V68, EF_HEXAGON_MACH);
497 BCaseMask(EF_HEXAGON_MACH_V69, EF_HEXAGON_MACH);
498 BCaseMask(EF_HEXAGON_MACH_V71, EF_HEXAGON_MACH);
499 BCaseMask(EF_HEXAGON_MACH_V71T, EF_HEXAGON_MACH);
500 BCaseMask(EF_HEXAGON_MACH_V73, EF_HEXAGON_MACH);
501 BCaseMask(EF_HEXAGON_MACH_V75, EF_HEXAGON_MACH);
502 BCaseMask(EF_HEXAGON_MACH_V77, EF_HEXAGON_MACH);
503 BCaseMask(EF_HEXAGON_MACH_V79, EF_HEXAGON_MACH);
504 BCaseMask(EF_HEXAGON_MACH_V81, EF_HEXAGON_MACH);
505 BCaseMask(EF_HEXAGON_MACH_V83, EF_HEXAGON_MACH);
506 BCaseMask(EF_HEXAGON_MACH_V85, EF_HEXAGON_MACH);
507 BCaseMask(EF_HEXAGON_MACH_V87, EF_HEXAGON_MACH);
508 BCaseMask(EF_HEXAGON_MACH_V89, EF_HEXAGON_MACH);
509 BCaseMask(EF_HEXAGON_MACH_V91, EF_HEXAGON_MACH);
510 BCaseMask(EF_HEXAGON_MACH_V93, EF_HEXAGON_MACH);
511 BCaseMask(EF_HEXAGON_ISA_V2, EF_HEXAGON_ISA);
512 BCaseMask(EF_HEXAGON_ISA_V3, EF_HEXAGON_ISA);
513 BCaseMask(EF_HEXAGON_ISA_V4, EF_HEXAGON_ISA);
514 BCaseMask(EF_HEXAGON_ISA_V5, EF_HEXAGON_ISA);
515 BCaseMask(EF_HEXAGON_ISA_V55, EF_HEXAGON_ISA);
516 BCaseMask(EF_HEXAGON_ISA_V60, EF_HEXAGON_ISA);
517 BCaseMask(EF_HEXAGON_ISA_V61, EF_HEXAGON_ISA);
518 BCaseMask(EF_HEXAGON_ISA_V62, EF_HEXAGON_ISA);
519 BCaseMask(EF_HEXAGON_ISA_V65, EF_HEXAGON_ISA);
520 BCaseMask(EF_HEXAGON_ISA_V66, EF_HEXAGON_ISA);
521 BCaseMask(EF_HEXAGON_ISA_V67, EF_HEXAGON_ISA);
522 BCaseMask(EF_HEXAGON_ISA_V68, EF_HEXAGON_ISA);
523 BCaseMask(EF_HEXAGON_ISA_V69, EF_HEXAGON_ISA);
524 BCaseMask(EF_HEXAGON_ISA_V71, EF_HEXAGON_ISA);
525 BCaseMask(EF_HEXAGON_ISA_V73, EF_HEXAGON_ISA);
526 BCaseMask(EF_HEXAGON_ISA_V75, EF_HEXAGON_ISA);
527 BCaseMask(EF_HEXAGON_ISA_V77, EF_HEXAGON_ISA);
528 BCaseMask(EF_HEXAGON_ISA_V79, EF_HEXAGON_ISA);
529 BCaseMask(EF_HEXAGON_ISA_V81, EF_HEXAGON_ISA);
530 BCaseMask(EF_HEXAGON_ISA_V83, EF_HEXAGON_ISA);
531 BCaseMask(EF_HEXAGON_ISA_V85, EF_HEXAGON_ISA);
532 BCaseMask(EF_HEXAGON_ISA_V87, EF_HEXAGON_ISA);
533 BCaseMask(EF_HEXAGON_ISA_V89, EF_HEXAGON_ISA);
534 BCaseMask(EF_HEXAGON_ISA_V91, EF_HEXAGON_ISA);
535 BCaseMask(EF_HEXAGON_ISA_V93, EF_HEXAGON_ISA);
538 BCaseMask(EF_AVR_ARCH_AVR1, EF_AVR_ARCH_MASK);
539 BCaseMask(EF_AVR_ARCH_AVR2, EF_AVR_ARCH_MASK);
540 BCaseMask(EF_AVR_ARCH_AVR25, EF_AVR_ARCH_MASK);
541 BCaseMask(EF_AVR_ARCH_AVR3, EF_AVR_ARCH_MASK);
542 BCaseMask(EF_AVR_ARCH_AVR31, EF_AVR_ARCH_MASK);
543 BCaseMask(EF_AVR_ARCH_AVR35, EF_AVR_ARCH_MASK);
544 BCaseMask(EF_AVR_ARCH_AVR4, EF_AVR_ARCH_MASK);
545 BCaseMask(EF_AVR_ARCH_AVR5, EF_AVR_ARCH_MASK);
546 BCaseMask(EF_AVR_ARCH_AVR51, EF_AVR_ARCH_MASK);
547 BCaseMask(EF_AVR_ARCH_AVR6, EF_AVR_ARCH_MASK);
548 BCaseMask(EF_AVR_ARCH_AVRTINY, EF_AVR_ARCH_MASK);
549 BCaseMask(EF_AVR_ARCH_XMEGA1, EF_AVR_ARCH_MASK);
550 BCaseMask(EF_AVR_ARCH_XMEGA2, EF_AVR_ARCH_MASK);
551 BCaseMask(EF_AVR_ARCH_XMEGA3, EF_AVR_ARCH_MASK);
552 BCaseMask(EF_AVR_ARCH_XMEGA4, EF_AVR_ARCH_MASK);
553 BCaseMask(EF_AVR_ARCH_XMEGA5, EF_AVR_ARCH_MASK);
554 BCaseMask(EF_AVR_ARCH_XMEGA6, EF_AVR_ARCH_MASK);
555 BCaseMask(EF_AVR_ARCH_XMEGA7, EF_AVR_ARCH_MASK);
556 BCase(EF_AVR_LINKRELAX_PREPARED);
559 BCaseMask(EF_LOONGARCH_ABI_SOFT_FLOAT, EF_LOONGARCH_ABI_MODIFIER_MASK);
560 BCaseMask(EF_LOONGARCH_ABI_SINGLE_FLOAT, EF_LOONGARCH_ABI_MODIFIER_MASK);
561 BCaseMask(EF_LOONGARCH_ABI_DOUBLE_FLOAT, EF_LOONGARCH_ABI_MODIFIER_MASK);
562 BCaseMask(EF_LOONGARCH_OBJABI_V0, EF_LOONGARCH_OBJABI_MASK);
563 BCaseMask(EF_LOONGARCH_OBJABI_V1, EF_LOONGARCH_OBJABI_MASK);
567 BCaseMask(EF_RISCV_FLOAT_ABI_SOFT, EF_RISCV_FLOAT_ABI);
568 BCaseMask(EF_RISCV_FLOAT_ABI_SINGLE, EF_RISCV_FLOAT_ABI);
569 BCaseMask(EF_RISCV_FLOAT_ABI_DOUBLE, EF_RISCV_FLOAT_ABI);
570 BCaseMask(EF_RISCV_FLOAT_ABI_QUAD, EF_RISCV_FLOAT_ABI);
575 BCase(EF_SPARC_32PLUS);
576 BCase(EF_SPARC_SUN_US1);
577 BCase(EF_SPARC_SUN_US3);
578 BCase(EF_SPARC_HAL_R1);
581 BCase(EF_SPARC_SUN_US1);
582 BCase(EF_SPARC_SUN_US3);
583 BCase(EF_SPARC_HAL_R1);
584 BCaseMask(EF_SPARCV9_RMO, EF_SPARCV9_MM);
585 BCaseMask(EF_SPARCV9_PSO, EF_SPARCV9_MM);
586 BCaseMask(EF_SPARCV9_TSO, EF_SPARCV9_MM);
589 BCase(EF_XTENSA_XT_INSN);
590 BCaseMask(EF_XTENSA_MACH_NONE, EF_XTENSA_MACH);
591 BCase(EF_XTENSA_XT_LIT);
594 BCaseMask(EF_AMDGPU_MACH_NONE, EF_AMDGPU_MACH);
595#define X(NUM, ENUM, NAME) BCaseMask(ENUM, EF_AMDGPU_MACH);
598 switch (Object->Header.ABIVersion) {
603 BCase(EF_AMDGPU_FEATURE_XNACK_V3);
604 BCase(EF_AMDGPU_FEATURE_SRAMECC_V3);
609 std::string
Key =
"EF_AMDGPU_GENERIC_VERSION_V" + std::to_string(K);
617 BCaseMask(EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4,
618 EF_AMDGPU_FEATURE_XNACK_V4);
619 BCaseMask(EF_AMDGPU_FEATURE_XNACK_ANY_V4,
620 EF_AMDGPU_FEATURE_XNACK_V4);
621 BCaseMask(EF_AMDGPU_FEATURE_XNACK_OFF_V4,
622 EF_AMDGPU_FEATURE_XNACK_V4);
624 EF_AMDGPU_FEATURE_XNACK_V4);
625 BCaseMask(EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4,
626 EF_AMDGPU_FEATURE_SRAMECC_V4);
627 BCaseMask(EF_AMDGPU_FEATURE_SRAMECC_ANY_V4,
628 EF_AMDGPU_FEATURE_SRAMECC_V4);
629 BCaseMask(EF_AMDGPU_FEATURE_SRAMECC_OFF_V4,
630 EF_AMDGPU_FEATURE_SRAMECC_V4);
631 BCaseMask(EF_AMDGPU_FEATURE_SRAMECC_ON_V4,
632 EF_AMDGPU_FEATURE_SRAMECC_V4);