Patch is adding `armv9-a` to -march in Arm GAS. This patch also updates: + New value of Tag_CPU_arch EABI attribute (22) is added, see [0]. + Updated missing from code Tag_CPU_arch EABI attributes for "Arm v8.1-A", "Arm v8.2-A" and "Arm v8.3-A" entries, see [0]. + New test `armv9-a_arch.d` to demonstrate that (22) is recognised by readelf. + Commit [1] extends arm_feature_set.core array. A follow up change is done to e.g., initialize (with 0s) or other values existing ARM_FEATURE_x macros. New macro ARM_FEATURE_ALL is added set all fields of arm_feature_set.core array. + Various changes are made to align asserts with new V9 arch. + Updated how we combine archs 'v4t_plus_v6_m' as this mechanism must handle new Armv9 as well. [0] https://github.com/ARM-software/abi-aa/blob/main/addenda32/addenda32.rst#3352the-target-related-attributes [1] 2c6ccfcfdde1 (arm: Extend again arm_feature_set struct to provide more bits). Regression tested on `arm-none-eabi` cross Binutils and no issues. OK for master? bfd/ 2021-09-21 Przemyslaw Wirkus * archures.c: Define bfd_mach_arm_9. * bfd-in2.h (bfd_mach_arm_9): Define bfd_mach_arm_9. * cpu-arm.c: Add 'armv9-a' option to -march. * elf32-arm.c (using_thumb2_bl): Update assert check. (arch_has_arm_nop): Add TAG_CPU_ARCH_V9. (bfd_arm_get_mach_from_attributes): Add case for TAG_CPU_ARCH_V9. Update assert. (tag_cpu_arch_combine): Updated table. (tag_cpu_arch_combine): Updated table. (tag_cpu_arch_combine): Updated table. (v9): New table.. binutils/ 2021-09-21 Przemyslaw Wirkus * readelf.c (arm_attr_tag_CPU_arch): Update with elfcpp/ 2021-09-21 Przemyslaw Wirkus * arm.h: Update TAG_CPU_ARCH_ enums with currect values. gas/ 2021-09-21 Przemyslaw Wirkus * NEWS: Update docs. * config/tc-arm.c (get_aeabi_cpu_arch_from_fset): Return Armv9-a for -amarch=all. (aeabi_set_public_attributes): Update assert. * doc/c-arm.texi: Update docs. * testsuite/gas/arm/armv9-a_arch.d: New test. * testsuite/gas/arm/attr-march-all.d: Update test with v9. include/ 2021-09-21 Przemyslaw Wirkus * elf/arm.h Update TAG_CPU_ARCH_ defines with currect values. * opcode/arm.h (ARM_EXT3_V9A): New macro. (ARM_ARCH_NONE): Updated with arm_feature_set.core size. (FPU_NONE): Updated. (ARM_ANY): Updated. (ARM_ARCH_UNKNOWN): New macro. (ARM_FEATURE_LOW): Updated. (ARM_FEATURE_CORE): Updated. (ARM_FEATURE_CORE_LOW): Updated. (ARM_FEATURE_CORE_HIGH): Updated. (ARM_FEATURE_COPROC): Updated. (ARM_FEATURE): Updated. (ARM_FEATURE_ALL): New macro. opcodes/ 2021-09-21 Przemyslaw Wirkus * arm-dis.c (select_arm_features): Support bfd_mach_arm_9. Also Update bfd_mach_arm_unknown to use new macro ARM_ARCH_UNKNOWN.