gas, bfd, gold: Rename Arm v8/v9 architecture tags

Message ID 20260527141948.683770-1-sivan.shani@arm.com
State New
Headers
Series gas, bfd, gold: Rename Arm v8/v9 architecture tags |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_binutils_check--master-arm success Test passed
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 success Test passed

Commit Message

Sivan Shani May 27, 2026, 2:19 p.m. UTC
  Rename the Arm AEABI CPU architecture tag constants and macro definitions to include the
profile suffix for A-profile architectures. This makes the naming
consistent with existing v8-R and v8-M tag names, while preserving the
existing numeric tag values.

v1
Update BFD, GAS and Gold usage accordingly, including attribute combination
tables, architecture checks, and mach selection.

v2
Formating
---
 bfd/archures.c      |   4 +-
 bfd/bfd-in2.h       |   4 +-
 bfd/cpu-arm.c       |  46 ++++++++---------
 bfd/elf32-arm.c     | 120 ++++++++++++++++++++++----------------------
 elfcpp/arm.h        |  12 ++---
 gas/config/tc-arm.c |  38 +++++++-------
 gold/arm.cc         |  32 ++++++------
 include/elf/arm.h   |  12 ++---
 opcodes/arm-dis.c   |   4 +-
 9 files changed, 136 insertions(+), 136 deletions(-)
  

Comments

Richard Earnshaw (foss) May 28, 2026, 9:05 a.m. UTC | #1
On 27/05/2026 15:19, Sivan Shani wrote:
> Rename the Arm AEABI CPU architecture tag constants and macro definitions to include the
> profile suffix for A-profile architectures. This makes the naming
> consistent with existing v8-R and v8-M tag names, while preserving the
> existing numeric tag values.
> 
> v1
> Update BFD, GAS and Gold usage accordingly, including attribute combination
> tables, architecture checks, and mach selection.
> 
> v2
> Formating
> ---
>  bfd/archures.c      |   4 +-
>  bfd/bfd-in2.h       |   4 +-
>  bfd/cpu-arm.c       |  46 ++++++++---------
>  bfd/elf32-arm.c     | 120 ++++++++++++++++++++++----------------------
>  elfcpp/arm.h        |  12 ++---
>  gas/config/tc-arm.c |  38 +++++++-------
>  gold/arm.cc         |  32 ++++++------
>  include/elf/arm.h   |  12 ++---
>  opcodes/arm-dis.c   |   4 +-
>  9 files changed, 136 insertions(+), 136 deletions(-)
> 

> --- a/bfd/cpu-arm.c
> +++ b/bfd/cpu-arm.c

[...]

> @@ -262,12 +262,12 @@ static const bfd_arch_info_type arch_info_struct[] =
>    N (bfd_mach_arm_6M,        "armv6-m",        false, & arch_info_struct[19]),
>    N (bfd_mach_arm_6SM,       "armv6s-m",       false, & arch_info_struct[20]),
>    N (bfd_mach_arm_7EM,       "armv7e-m",       false, & arch_info_struct[21]),
> -  N (bfd_mach_arm_8,         "armv8-a",        false, & arch_info_struct[22]),
> +  N (bfd_mach_arm_8A,         "armv8-a",        false, & arch_info_struct[22]),

Please check the indentation here of the second and third elements; they should be aligned in the columns.

>    N (bfd_mach_arm_8R,        "armv8-r",        false, & arch_info_struct[23]),
>    N (bfd_mach_arm_8M_BASE,   "armv8-m.base",   false, & arch_info_struct[24]),
>    N (bfd_mach_arm_8M_MAIN,   "armv8-m.main",   false, & arch_info_struct[25]),
>    N (bfd_mach_arm_8_1M_MAIN, "armv8.1-m.main", false, & arch_info_struct[26]),
> -  N (bfd_mach_arm_9,         "armv9-a",        false, & arch_info_struct[27]),
> +  N (bfd_mach_arm_9A,         "armv9-a",        false, & arch_info_struct[27]),

and here.

OK once that's sorted.

R.
  

Patch

diff --git a/bfd/archures.c b/bfd/archures.c
index 8cfc81eebb9..0e919246673 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -327,12 +327,12 @@  DESCRIPTION
 .#define bfd_mach_arm_6M        20
 .#define bfd_mach_arm_6SM       21
 .#define bfd_mach_arm_7EM       22
-.#define bfd_mach_arm_8         23
+.#define bfd_mach_arm_8A        23
 .#define bfd_mach_arm_8R        24
 .#define bfd_mach_arm_8M_BASE   25
 .#define bfd_mach_arm_8M_MAIN   26
 .#define bfd_mach_arm_8_1M_MAIN 27
-.#define bfd_mach_arm_9         28
+.#define bfd_mach_arm_9A        28
 .  bfd_arch_nds32,     {* Andes NDS32.  *}
 .#define bfd_mach_n1		1
 .#define bfd_mach_n1h		2
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 4d157611217..e177b2a4023 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1571,12 +1571,12 @@  enum bfd_architecture
 #define bfd_mach_arm_6M        20
 #define bfd_mach_arm_6SM       21
 #define bfd_mach_arm_7EM       22
-#define bfd_mach_arm_8         23
+#define bfd_mach_arm_8A        23
 #define bfd_mach_arm_8R        24
 #define bfd_mach_arm_8M_BASE   25
 #define bfd_mach_arm_8M_MAIN   26
 #define bfd_mach_arm_8_1M_MAIN 27
-#define bfd_mach_arm_9         28
+#define bfd_mach_arm_9A        28
   bfd_arch_nds32,     /* Andes NDS32.  */
 #define bfd_mach_n1            1
 #define bfd_mach_n1h           2
diff --git a/bfd/cpu-arm.c b/bfd/cpu-arm.c
index dba7ad4c5ce..603a976a664 100644
--- a/bfd/cpu-arm.c
+++ b/bfd/cpu-arm.c
@@ -139,20 +139,20 @@  processors[] =
   { bfd_mach_arm_7,	  "cortex-a12"	    },
   { bfd_mach_arm_7,	  "cortex-a15"	    },
   { bfd_mach_arm_7,	  "cortex-a17"	    },
-  { bfd_mach_arm_8,	  "cortex-a32"	    },
-  { bfd_mach_arm_8,	  "cortex-a35"	    },
-  { bfd_mach_arm_8,	  "cortex-a53"	    },
-  { bfd_mach_arm_8,	  "cortex-a55"	    },
-  { bfd_mach_arm_8,	  "cortex-a57"	    },
-  { bfd_mach_arm_8,	  "cortex-a72"	    },
-  { bfd_mach_arm_8,	  "cortex-a73"	    },
-  { bfd_mach_arm_8,	  "cortex-a75"	    },
-  { bfd_mach_arm_8,	  "cortex-a76"	    },
-  { bfd_mach_arm_8,	  "cortex-a76ae"    },
-  { bfd_mach_arm_8,	  "cortex-a77"	    },
-  { bfd_mach_arm_8,	  "cortex-a78"	    },
-  { bfd_mach_arm_8,	  "cortex-a78ae"    },
-  { bfd_mach_arm_8,	  "cortex-a78c"     },
+  { bfd_mach_arm_8A,	  "cortex-a32"	    },
+  { bfd_mach_arm_8A,	  "cortex-a35"	    },
+  { bfd_mach_arm_8A,	  "cortex-a53"	    },
+  { bfd_mach_arm_8A,	  "cortex-a55"	    },
+  { bfd_mach_arm_8A,	  "cortex-a57"	    },
+  { bfd_mach_arm_8A,	  "cortex-a72"	    },
+  { bfd_mach_arm_8A,	  "cortex-a73"	    },
+  { bfd_mach_arm_8A,	  "cortex-a75"	    },
+  { bfd_mach_arm_8A,	  "cortex-a76"	    },
+  { bfd_mach_arm_8A,	  "cortex-a76ae"    },
+  { bfd_mach_arm_8A,	  "cortex-a77"	    },
+  { bfd_mach_arm_8A,	  "cortex-a78"	    },
+  { bfd_mach_arm_8A,	  "cortex-a78ae"    },
+  { bfd_mach_arm_8A,	  "cortex-a78c"     },
   { bfd_mach_arm_6SM,	  "cortex-m0"	    },
   { bfd_mach_arm_6SM,	  "cortex-m0plus"   },
   { bfd_mach_arm_6SM,	  "cortex-m1"	    },
@@ -166,13 +166,13 @@  processors[] =
   { bfd_mach_arm_7,	  "cortex-r4f"	    },
   { bfd_mach_arm_7,	  "cortex-r5"	    },
   { bfd_mach_arm_8R,	  "cortex-r52"	    },
-  { bfd_mach_arm_8R,	  "cortex-r52plus"	    },
+  { bfd_mach_arm_8R,	  "cortex-r52plus"  },
   { bfd_mach_arm_7,	  "cortex-r7"	    },
   { bfd_mach_arm_7,	  "cortex-r8"	    },
-  { bfd_mach_arm_8,	  "cortex-x1"	    },
-  { bfd_mach_arm_8,	  "cortex-x1c"	    },
+  { bfd_mach_arm_8A,	  "cortex-x1"	    },
+  { bfd_mach_arm_8A,	  "cortex-x1c"	    },
   { bfd_mach_arm_4T,	  "ep9312"	    },
-  { bfd_mach_arm_8,	  "exynos-m1"	    },
+  { bfd_mach_arm_8A,	  "exynos-m1"	    },
   { bfd_mach_arm_4,	  "fa526"	    },
   { bfd_mach_arm_5TE,	  "fa606te"	    },
   { bfd_mach_arm_5TE,	  "fa616te"	    },
@@ -192,9 +192,9 @@  processors[] =
   { bfd_mach_arm_4,	  "strongarm1100"   },
   { bfd_mach_arm_4,	  "strongarm1110"   },
   { bfd_mach_arm_XScale,  "xscale"	    },
-  { bfd_mach_arm_8,	  "xgene1"	    },
-  { bfd_mach_arm_8,	  "xgene2"	    },
-  { bfd_mach_arm_9,	  "cortex-a710"	    },
+  { bfd_mach_arm_8A,	  "xgene1"	    },
+  { bfd_mach_arm_8A,	  "xgene2"	    },
+  { bfd_mach_arm_9A,	  "cortex-a710"	    },
   { bfd_mach_arm_iWMMXt,  "iwmmxt"	    },
   { bfd_mach_arm_iWMMXt2, "iwmmxt2"	    },
   { bfd_mach_arm_unknown, "arm_any"	    }
@@ -262,12 +262,12 @@  static const bfd_arch_info_type arch_info_struct[] =
   N (bfd_mach_arm_6M,        "armv6-m",        false, & arch_info_struct[19]),
   N (bfd_mach_arm_6SM,       "armv6s-m",       false, & arch_info_struct[20]),
   N (bfd_mach_arm_7EM,       "armv7e-m",       false, & arch_info_struct[21]),
-  N (bfd_mach_arm_8,         "armv8-a",        false, & arch_info_struct[22]),
+  N (bfd_mach_arm_8A,         "armv8-a",        false, & arch_info_struct[22]),
   N (bfd_mach_arm_8R,        "armv8-r",        false, & arch_info_struct[23]),
   N (bfd_mach_arm_8M_BASE,   "armv8-m.base",   false, & arch_info_struct[24]),
   N (bfd_mach_arm_8M_MAIN,   "armv8-m.main",   false, & arch_info_struct[25]),
   N (bfd_mach_arm_8_1M_MAIN, "armv8.1-m.main", false, & arch_info_struct[26]),
-  N (bfd_mach_arm_9,         "armv9-a",        false, & arch_info_struct[27]),
+  N (bfd_mach_arm_9A,         "armv9-a",        false, & arch_info_struct[27]),
   N (bfd_mach_arm_unknown,   "arm_any",        false, NULL)
 };
 
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index bb0a24127ab..0447d60de7b 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -3876,7 +3876,7 @@  using_thumb2 (struct elf32_arm_link_hash_table *globals)
   return (arch == TAG_CPU_ARCH_V6T2
 	  || arch == TAG_CPU_ARCH_V7
 	  || arch == TAG_CPU_ARCH_V7E_M
-	  || arch == TAG_CPU_ARCH_V8
+	  || arch == TAG_CPU_ARCH_V8A
 	  || arch == TAG_CPU_ARCH_V8R
 	  || arch == TAG_CPU_ARCH_V8M_MAIN
 	  || arch == TAG_CPU_ARCH_V8_1M_MAIN);
@@ -3891,7 +3891,7 @@  using_thumb2_bl (struct elf32_arm_link_hash_table *globals)
     bfd_elf_get_obj_attr_int (globals->obfd, OBJ_ATTR_PROC, Tag_CPU_arch);
 
   /* Force return logic to be reviewed for each new architecture.  */
-  BFD_ASSERT (arch <= TAG_CPU_ARCH_V9);
+  BFD_ASSERT (arch <= TAG_CPU_ARCH_V9A);
 
   /* Architecture was introduced after ARMv6T2 (eg. ARMv6-M).  */
   return (arch == TAG_CPU_ARCH_V6T2
@@ -4032,14 +4032,14 @@  arch_has_arm_nop (struct elf32_arm_link_hash_table *globals)
 					     Tag_CPU_arch);
 
   /* Force return logic to be reviewed for each new architecture.  */
-  BFD_ASSERT (arch <= TAG_CPU_ARCH_V9);
+  BFD_ASSERT (arch <= TAG_CPU_ARCH_V9A);
 
   return (arch == TAG_CPU_ARCH_V6T2
 	  || arch == TAG_CPU_ARCH_V6K
 	  || arch == TAG_CPU_ARCH_V7
-	  || arch == TAG_CPU_ARCH_V8
+	  || arch == TAG_CPU_ARCH_V8A
 	  || arch == TAG_CPU_ARCH_V8R
-	  || arch == TAG_CPU_ARCH_V9);
+	  || arch == TAG_CPU_ARCH_V9A);
 }
 
 static bool
@@ -13767,8 +13767,8 @@  bfd_arm_get_mach_from_attributes (bfd * abfd)
 	return bfd_mach_arm_6SM;
     case TAG_CPU_ARCH_V7E_M:
 	return bfd_mach_arm_7EM;
-    case TAG_CPU_ARCH_V8:
-	return bfd_mach_arm_8;
+    case TAG_CPU_ARCH_V8A:
+	return bfd_mach_arm_8A;
     case TAG_CPU_ARCH_V8R:
 	return bfd_mach_arm_8R;
     case TAG_CPU_ARCH_V8M_BASE:
@@ -13777,8 +13777,8 @@  bfd_arm_get_mach_from_attributes (bfd * abfd)
 	return bfd_mach_arm_8M_MAIN;
     case TAG_CPU_ARCH_V8_1M_MAIN:
 	return bfd_mach_arm_8_1M_MAIN;
-    case TAG_CPU_ARCH_V9:
-	return bfd_mach_arm_9;
+    case TAG_CPU_ARCH_V9A:
+	return bfd_mach_arm_9A;
 
     default:
       /* Force entry to be added for any new known Tag_CPU_arch value.  */
@@ -14111,28 +14111,28 @@  tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
     };
   static const int v8[] =
     {
-      T(V8),		/* PRE_V4.  */
-      T(V8),		/* V4.  */
-      T(V8),		/* V4T.  */
-      T(V8),		/* V5T.  */
-      T(V8),		/* V5TE.  */
-      T(V8),		/* V5TEJ.  */
-      T(V8),		/* V6.  */
-      T(V8),		/* V6KZ.  */
-      T(V8),		/* V6T2.  */
-      T(V8),		/* V6K.  */
-      T(V8),		/* V7.  */
-      T(V8),		/* V6_M.  */
-      T(V8),		/* V6S_M.  */
-      T(V8),		/* V7E_M.  */
-      T(V8),		/* V8.  */
-      T(V8),		/* V8-R.  */
-      T(V8),		/* V8-M.BASE.  */
-      T(V8),		/* V8-M.MAIN.  */
-      T(V8),		/* V8.1.  */
-      T(V8),		/* V8.2.  */
-      T(V8),		/* V8.3.  */
-      T(V8),		/* V8.1-M.MAIN.  */
+      T(V8A),		/* PRE_V4.  */
+      T(V8A),		/* V4.  */
+      T(V8A),		/* V4T.  */
+      T(V8A),		/* V5T.  */
+      T(V8A),		/* V5TE.  */
+      T(V8A),		/* V5TEJ.  */
+      T(V8A),		/* V6.  */
+      T(V8A),		/* V6KZ.  */
+      T(V8A),		/* V6T2.  */
+      T(V8A),		/* V6K.  */
+      T(V8A),		/* V7.  */
+      T(V8A),		/* V6_M.  */
+      T(V8A),		/* V6S_M.  */
+      T(V8A),		/* V7E_M.  */
+      T(V8A),		/* V8A.  */
+      T(V8A),		/* V8-R.  */
+      T(V8A),		/* V8-M.BASE.  */
+      T(V8A),		/* V8-M.MAIN.  */
+      T(V8A),		/* V8.1.  */
+      T(V8A),		/* V8.2.  */
+      T(V8A),		/* V8.3.  */
+      T(V8A),		/* V8.1-M.MAIN.  */
     };
   static const int v8r[] =
     {
@@ -14150,7 +14150,7 @@  tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
       T(V8R),		/* V6_M.  */
       T(V8R),		/* V6S_M.  */
       T(V8R),		/* V7E_M.  */
-      T(V8),		/* V8.  */
+      T(V8A),		/* V8A.  */
       T(V8R),		/* V8R.  */
     };
   static const int v8m_baseline[] =
@@ -14169,7 +14169,7 @@  tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
       T(V8M_BASE),	/* V6_M.  */
       T(V8M_BASE),	/* V6S_M.  */
       -1,		/* V7E_M.  */
-      -1,		/* V8.  */
+      -1,		/* V8A.  */
       -1,		/* V8R.  */
       T(V8M_BASE)	/* V8-M BASELINE.  */
     };
@@ -14189,7 +14189,7 @@  tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
       T(V8M_MAIN),	/* V6_M.  */
       T(V8M_MAIN),	/* V6S_M.  */
       T(V8M_MAIN),	/* V7E_M.  */
-      -1,		/* V8.  */
+      -1,		/* V8A.  */
       -1,		/* V8R.  */
       T(V8M_MAIN),	/* V8-M BASELINE.  */
       T(V8M_MAIN)	/* V8-M MAINLINE.  */
@@ -14210,7 +14210,7 @@  tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
       T(V8_1M_MAIN),	/* V6_M.  */
       T(V8_1M_MAIN),	/* V6S_M.  */
       T(V8_1M_MAIN),	/* V7E_M.  */
-      -1,		/* V8.  */
+      -1,		/* V8A.  */
       -1,		/* V8R.  */
       T(V8_1M_MAIN),	/* V8-M BASELINE.  */
       T(V8_1M_MAIN),	/* V8-M MAINLINE.  */
@@ -14221,29 +14221,29 @@  tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
     };
   static const int v9[] =
     {
-      T(V9),		/* PRE_V4.  */
-      T(V9),		/* V4.  */
-      T(V9),		/* V4T.  */
-      T(V9),		/* V5T.  */
-      T(V9),		/* V5TE.  */
-      T(V9),		/* V5TEJ.  */
-      T(V9),		/* V6.  */
-      T(V9),		/* V6KZ.  */
-      T(V9),		/* V6T2.  */
-      T(V9),		/* V6K.  */
-      T(V9),		/* V7.  */
-      T(V9),		/* V6_M.  */
-      T(V9),		/* V6S_M.  */
-      T(V9),		/* V7E_M.  */
-      T(V9),		/* V8.  */
-      T(V9),		/* V8-R.  */
-      T(V9),		/* V8-M.BASE.  */
-      T(V9),		/* V8-M.MAIN.  */
-      T(V9),		/* V8.1.  */
-      T(V9),		/* V8.2.  */
-      T(V9),		/* V8.3.  */
-      T(V9),		/* V8.1-M.MAIN.  */
-      T(V9),		/* V9.  */
+      T(V9A),		/* PRE_V4.  */
+      T(V9A),		/* V4.  */
+      T(V9A),		/* V4T.  */
+      T(V9A),		/* V5T.  */
+      T(V9A),		/* V5TE.  */
+      T(V9A),		/* V5TEJ.  */
+      T(V9A),		/* V6.  */
+      T(V9A),		/* V6KZ.  */
+      T(V9A),		/* V6T2.  */
+      T(V9A),		/* V6K.  */
+      T(V9A),		/* V7.  */
+      T(V9A),		/* V6_M.  */
+      T(V9A),		/* V6S_M.  */
+      T(V9A),		/* V7E_M.  */
+      T(V9A),		/* V8A.  */
+      T(V9A),		/* V8-R.  */
+      T(V9A),		/* V8-M.BASE.  */
+      T(V9A),		/* V8-M.MAIN.  */
+      T(V9A),		/* V8.1.  */
+      T(V9A),		/* V8.2.  */
+      T(V9A),		/* V8.3.  */
+      T(V9A),		/* V8.1-M.MAIN.  */
+      T(V9A),		/* V9A.  */
      };
   static const int v4t_plus_v6_m[] =
     {
@@ -14261,7 +14261,7 @@  tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
       T(V6_M),		/* V6_M.  */
       T(V6S_M),		/* V6S_M.  */
       T(V7E_M),		/* V7E_M.  */
-      T(V8),		/* V8.  */
+      T(V8A),		/* V8A.  */
       -1,		/* V8R.  */
       T(V8M_BASE),	/* V8-M BASELINE.  */
       T(V8M_MAIN),	/* V8-M MAINLINE.  */
@@ -14269,7 +14269,7 @@  tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
       -1,		/* Unused (19).  */
       -1,		/* Unused (20).  */
       T(V8_1M_MAIN),	/* V8.1-M MAINLINE.  */
-      T(V9),		/* V9.  */
+      T(V9A),		/* V9A.  */
       T(V4T_PLUS_V6_M)	/* V4T plus V6_M.  */
     };
   static const int *const comb[] =
diff --git a/elfcpp/arm.h b/elfcpp/arm.h
index 86f9ab0ed51..6f1c595af0e 100644
--- a/elfcpp/arm.h
+++ b/elfcpp/arm.h
@@ -253,16 +253,16 @@  enum
   TAG_CPU_ARCH_V6_M,
   TAG_CPU_ARCH_V6S_M,
   TAG_CPU_ARCH_V7E_M,
-  TAG_CPU_ARCH_V8,
+  TAG_CPU_ARCH_V8A,
   TAG_CPU_ARCH_V8R,
   TAG_CPU_ARCH_V8M_BASE,
   TAG_CPU_ARCH_V8M_MAIN,
-  TAG_CPU_ARCH_8_1A,
-  TAG_CPU_ARCH_8_2A,
-  TAG_CPU_ARCH_8_3A,
+  TAG_CPU_ARCH_V8_1A,
+  TAG_CPU_ARCH_V8_2A,
+  TAG_CPU_ARCH_V8_3A,
   TAG_CPU_ARCH_V8_1M_MAIN,
-  TAG_CPU_ARCH_V9,
-  MAX_TAG_CPU_ARCH = TAG_CPU_ARCH_V9,
+  TAG_CPU_ARCH_V9A,
+  MAX_TAG_CPU_ARCH = TAG_CPU_ARCH_V9A,
   // Pseudo-architecture to allow objects to be compatible with the subset of
   // armv4t and armv6-m.  This value should never be stored in object files.
   TAG_CPU_ARCH_V4T_PLUS_V6_M = (MAX_TAG_CPU_ARCH + 1)
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 392ae8d761d..3ff29542411 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -32100,26 +32100,26 @@  static const cpu_arch_ver_table cpu_arch_ver[] =
     {TAG_CPU_ARCH_V7,	      ARM_ARCH_V7M},
     {TAG_CPU_ARCH_V7,	      ARM_ARCH_V7VE},
     {TAG_CPU_ARCH_V7E_M,      ARM_ARCH_V7EM},
-    {TAG_CPU_ARCH_V8,	      ARM_ARCH_V8A},
-    {TAG_CPU_ARCH_V8,	      ARM_ARCH_V8_1A},
-    {TAG_CPU_ARCH_V8,	      ARM_ARCH_V8_2A},
-    {TAG_CPU_ARCH_V8,	      ARM_ARCH_V8_3A},
+    {TAG_CPU_ARCH_V8A,	      ARM_ARCH_V8A},
+    {TAG_CPU_ARCH_V8A,	      ARM_ARCH_V8_1A},
+    {TAG_CPU_ARCH_V8A,	      ARM_ARCH_V8_2A},
+    {TAG_CPU_ARCH_V8A,	      ARM_ARCH_V8_3A},
     {TAG_CPU_ARCH_V8M_BASE,   ARM_ARCH_V8M_BASE},
     {TAG_CPU_ARCH_V8M_MAIN,   ARM_ARCH_V8M_MAIN},
     {TAG_CPU_ARCH_V8R,	      ARM_ARCH_V8R},
-    {TAG_CPU_ARCH_V8,	      ARM_ARCH_V8_4A},
-    {TAG_CPU_ARCH_V8,	      ARM_ARCH_V8_5A},
+    {TAG_CPU_ARCH_V8A,	      ARM_ARCH_V8_4A},
+    {TAG_CPU_ARCH_V8A,	      ARM_ARCH_V8_5A},
     {TAG_CPU_ARCH_V8_1M_MAIN, ARM_ARCH_V8_1M_MAIN},
-    {TAG_CPU_ARCH_V8,	    ARM_ARCH_V8_6A},
-    {TAG_CPU_ARCH_V8,	    ARM_ARCH_V8_7A},
-    {TAG_CPU_ARCH_V8,	    ARM_ARCH_V8_8A},
-    {TAG_CPU_ARCH_V8,	    ARM_ARCH_V8_9A},
-    {TAG_CPU_ARCH_V9,	    ARM_ARCH_V9A},
-    {TAG_CPU_ARCH_V9,	    ARM_ARCH_V9_1A},
-    {TAG_CPU_ARCH_V9,	    ARM_ARCH_V9_2A},
-    {TAG_CPU_ARCH_V9,	    ARM_ARCH_V9_3A},
-    {TAG_CPU_ARCH_V9,	    ARM_ARCH_V9_4A},
-    {TAG_CPU_ARCH_V9,	    ARM_ARCH_V9_5A},
+    {TAG_CPU_ARCH_V8A,	    ARM_ARCH_V8_6A},
+    {TAG_CPU_ARCH_V8A,	    ARM_ARCH_V8_7A},
+    {TAG_CPU_ARCH_V8A,	    ARM_ARCH_V8_8A},
+    {TAG_CPU_ARCH_V8A,	    ARM_ARCH_V8_9A},
+    {TAG_CPU_ARCH_V9A,	    ARM_ARCH_V9A},
+    {TAG_CPU_ARCH_V9A,	    ARM_ARCH_V9_1A},
+    {TAG_CPU_ARCH_V9A,	    ARM_ARCH_V9_2A},
+    {TAG_CPU_ARCH_V9A,	    ARM_ARCH_V9_3A},
+    {TAG_CPU_ARCH_V9A,	    ARM_ARCH_V9_4A},
+    {TAG_CPU_ARCH_V9A,	    ARM_ARCH_V9_5A},
     {-1,		    ARM_ARCH_NONE}
 };
 
@@ -32207,9 +32207,9 @@  get_aeabi_cpu_arch_from_fset (const arm_feature_set *arch_ext_fset,
   if (ARM_FEATURE_EQUAL (*arch_ext_fset, arm_arch_any))
     {
       /* Force revisiting of decision for each new architecture.  */
-      gas_assert (MAX_TAG_CPU_ARCH <= TAG_CPU_ARCH_V9);
+      gas_assert (MAX_TAG_CPU_ARCH <= TAG_CPU_ARCH_V9A);
       *profile = 'A';
-      return TAG_CPU_ARCH_V9;
+      return TAG_CPU_ARCH_V9A;
     }
 
   ARM_CLEAR_FEATURE (arch_fset, *arch_ext_fset, *ext_fset);
@@ -32485,7 +32485,7 @@  aeabi_set_public_attributes (void)
      by the base architecture.
 
      For new architectures we will have to check these tests.  */
-  gas_assert (arch <= TAG_CPU_ARCH_V9);
+  gas_assert (arch <= TAG_CPU_ARCH_V9A);
   if (ARM_CPU_HAS_FEATURE (flags, arm_ext_v8)
       || ARM_CPU_HAS_FEATURE (flags, arm_ext_v8m))
     aeabi_set_attribute_int (Tag_DIV_use, 0);
diff --git a/gold/arm.cc b/gold/arm.cc
index b2a73d67291..86abd6de0ad 100644
--- a/gold/arm.cc
+++ b/gold/arm.cc
@@ -11065,21 +11065,21 @@  Target_arm<big_endian>::tag_cpu_arch_combine(
     };
   static const int v8[] =
     {
-      T(V8),   // PRE_V4.
-      T(V8),   // V4.
-      T(V8),   // V4T.
-      T(V8),   // V5T.
-      T(V8),   // V5TE.
-      T(V8),   // V5TEJ.
-      T(V8),   // V6.
-      T(V8),   // V6KZ.
-      T(V8),   // V6T2.
-      T(V8),   // V6K.
-      T(V8),   // V7.
-      T(V8),   // V6_M.
-      T(V8),   // V6S_M.
-      T(V8),   // V7E_M.
-      T(V8)    // V8.
+      T(V8A),   // PRE_V4.
+      T(V8A),   // V4.
+      T(V8A),   // V4T.
+      T(V8A),   // V5T.
+      T(V8A),   // V5TE.
+      T(V8A),   // V5TEJ.
+      T(V8A),   // V6.
+      T(V8A),   // V6KZ.
+      T(V8A),   // V6T2.
+      T(V8A),   // V6K.
+      T(V8A),   // V7.
+      T(V8A),   // V6_M.
+      T(V8A),   // V6S_M.
+      T(V8A),   // V7E_M.
+      T(V8A)    // V8.
     };
   static const int v4t_plus_v6_m[] =
     {
@@ -11097,7 +11097,7 @@  Target_arm<big_endian>::tag_cpu_arch_combine(
       T(V6_M),		// V6_M.
       T(V6S_M),		// V6S_M.
       T(V7E_M),		// V7E_M.
-      T(V8),		// V8.
+      T(V8A),		// V8.
       T(V4T_PLUS_V6_M)	// V4T plus V6_M.
     };
   static const int* comb[] =
diff --git a/include/elf/arm.h b/include/elf/arm.h
index 091eea5d5d8..2b7af723968 100644
--- a/include/elf/arm.h
+++ b/include/elf/arm.h
@@ -108,16 +108,16 @@ 
 #define TAG_CPU_ARCH_V6_M	11
 #define TAG_CPU_ARCH_V6S_M	12
 #define TAG_CPU_ARCH_V7E_M	13
-#define TAG_CPU_ARCH_V8		14
+#define TAG_CPU_ARCH_V8A	14
 #define TAG_CPU_ARCH_V8R	15
 #define TAG_CPU_ARCH_V8M_BASE	16
 #define TAG_CPU_ARCH_V8M_MAIN	17
-#define TAG_CPU_ARCH_8_1A       18
-#define TAG_CPU_ARCH_8_2A       19
-#define TAG_CPU_ARCH_8_3A       20
+#define TAG_CPU_ARCH_V8_1A      18
+#define TAG_CPU_ARCH_V8_2A      19
+#define TAG_CPU_ARCH_V8_3A      20
 #define TAG_CPU_ARCH_V8_1M_MAIN 21
-#define TAG_CPU_ARCH_V9         22
-#define MAX_TAG_CPU_ARCH	TAG_CPU_ARCH_V9
+#define TAG_CPU_ARCH_V9A        22
+#define MAX_TAG_CPU_ARCH	TAG_CPU_ARCH_V9A
 /* Pseudo-architecture to allow objects to be compatible with the subset of
    armv4t and armv6-m.  This value should never be stored in object files.  */
 #define TAG_CPU_ARCH_V4T_PLUS_V6_M (MAX_TAG_CPU_ARCH + 1)
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index aa8167d37e7..ef4d3835d95 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -12301,7 +12301,7 @@  select_arm_features (unsigned long mach,
     case bfd_mach_arm_6M:	 ARM_SET_FEATURES (ARM_ARCH_V6M); break;
     case bfd_mach_arm_6SM:	 ARM_SET_FEATURES (ARM_ARCH_V6SM); break;
     case bfd_mach_arm_7EM:	 ARM_SET_FEATURES (ARM_ARCH_V7EM); break;
-    case bfd_mach_arm_8:
+    case bfd_mach_arm_8A:
 	{
 	  /* Add bits for extensions that Armv8.6-A recognizes.  */
 	  arm_feature_set armv8_6_ext_fset
@@ -12320,7 +12320,7 @@  select_arm_features (unsigned long mach,
       ARM_MERGE_FEATURE_SETS (arch_fset, arch_fset, mve_all);
       force_thumb = 1;
       break;
-    case bfd_mach_arm_9:         ARM_SET_FEATURES (ARM_ARCH_V9A); break;
+    case bfd_mach_arm_9A:         ARM_SET_FEATURES (ARM_ARCH_V9A); break;
       /* If the machine type is unknown allow all architecture types and all
 	 extensions, with the exception of MVE as that clashes with NEON.  */
     case bfd_mach_arm_unknown: