This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] ARM attributes and user intent


Hi,

The ARM ABI requires that the attributes are set according to the intent of the user, not the state of the binary (the two must be compatible, of course).

With this patch, the attributes are now set according to the following rules:

1. If no options or directives are present, then the assembler assumes the user intends no specific architecture, but assumes the user intends that both ARM and Thumb are permitted. (This is the assumption made by the assembler when validating the input.)

2. If no directives are present, but command line options are given, then the user intentions are specified by the options.

3. If directives are present, then those encode the user intentions, regardless of the command line options, or code content.

4. The .eabi_attributes set the output values of the attributes, and override .cpu, .arch, .fpu, and command line settings (i.e. any auto-magical settings). The .cpu, .arch, .fpu, and command line settings continue to control the assembler's validation checks.

5. Attributes not set explicitly are inferred (where possible) from the user intentions determined above.

Note that the compiler passes the user intentions through as .cpu and .fpu directives.


In the process of this work I also found and fixed a number of bugs:


* The iwmmxt2 was not set correctly.

* The FPU was settings for VFPv3 and VFPv3-D16 were inverted.

* -march=armv5t resulted in v5te


The patch adds a test case for every possible -march and -mfpu to ensure that the attributes are set correctly, and a number of test cases to ensure that the precedence rules above are obeyed. I have also updated the expected results for all affected existing tests.


OK?

Andrew

2009-01-21  Andrew Stubbs  <ams@codesourcery.com>

	gas/
	* config/tc-arm.c (attributes_set_explicitly): New array.
	(s_arm_eabi_attribute): Check return value from s_vendor_attribute.
	(cpu_arch): Add ARM_ARCH_V5T.
	(aeabi_set_attribute_int): New function.
	(aeabi_set_attribute_string): New function.
	(aeabi_set_public_attributes): Set attributes according to the user's
	intentions, rather than the actual state of the binary.
	Use aeabi_set_attribute_int and aeabi_set_attribute_string instead of
	bfd_elf_add_proc_attr_int and bfd_elf_add_proc_attr_string.
	Support WMMXv2. Use attribute names instead of numbers.
	* read.c (s_vendor_attribute): Change return type to int.
	Return the tag number that was set.
	* read.h (s_vendor_attribute): Change return type to int.

	gas/testsuite/
	* gas/arm/attr-cpu-directive.d: New file.
	* gas/arm/attr-cpu-directive.s: New file.
	* gas/arm/attr-default.d: New file.
	* gas/arm/attr-march-all.d: New file.
	* gas/arm/attr-march-armv1.d: New file.
	* gas/arm/attr-march-armv2.d: New file.
	* gas/arm/attr-march-armv2a.d: New file.
	* gas/arm/attr-march-armv2s.d: New file.
	* gas/arm/attr-march-armv3.d: New file.
	* gas/arm/attr-march-armv3m.d: New file.
	* gas/arm/attr-march-armv4.d: New file.
	* gas/arm/attr-march-armv4t.d: New file.
	* gas/arm/attr-march-armv4txm.d: New file.
	* gas/arm/attr-march-armv4xm.d: New file.
	* gas/arm/attr-march-armv5.d: New file.
	* gas/arm/attr-march-armv5t.d: New file.
	* gas/arm/attr-march-armv5te.d: New file.
	* gas/arm/attr-march-armv5tej.d: New file.
	* gas/arm/attr-march-armv5texp.d: New file.
	* gas/arm/attr-march-armv5txm.d: New file.
	* gas/arm/attr-march-armv6-m.d: New file.
	* gas/arm/attr-march-armv6.d: New file.
	* gas/arm/attr-march-armv6j.d: New file.
	* gas/arm/attr-march-armv6k.d: New file.
	* gas/arm/attr-march-armv6kt2.d: New file.
	* gas/arm/attr-march-armv6t2.d: New file.
	* gas/arm/attr-march-armv6z.d: New file.
	* gas/arm/attr-march-armv6zk.d: New file.
	* gas/arm/attr-march-armv6zkt2.d: New file.
	* gas/arm/attr-march-armv6zt2.d: New file.
	* gas/arm/attr-march-armv7-a.d: New file.
	* gas/arm/attr-march-armv7-m.d: New file.
	* gas/arm/attr-march-armv7-r.d: New file.
	* gas/arm/attr-march-armv7.d: New file.
	* gas/arm/attr-march-armv7a.d: New file.
	* gas/arm/attr-march-armv7m.d: New file.
	* gas/arm/attr-march-armv7r.d: New file.
	* gas/arm/attr-march-iwmmxt.d: New file.
	* gas/arm/attr-march-iwmmxt2.d: New file.
	* gas/arm/attr-march-xscale.d: New file.
	* gas/arm/attr-mcpu.d: New file.
	* gas/arm/attr-mfpu-arm1020e.d: New file.
	* gas/arm/attr-mfpu-arm1020t.d: New file.
	* gas/arm/attr-mfpu-arm1136jf-s.d: New file.
	* gas/arm/attr-mfpu-arm1136jfs.d: New file.
	* gas/arm/attr-mfpu-arm7500fe.d: New file.
	* gas/arm/attr-mfpu-fpa.d: New file.
	* gas/arm/attr-mfpu-fpa10.d: New file.
	* gas/arm/attr-mfpu-fpa11.d: New file.
	* gas/arm/attr-mfpu-fpe.d: New file.
	* gas/arm/attr-mfpu-fpe2.d: New file.
	* gas/arm/attr-mfpu-fpe3.d: New file.
	* gas/arm/attr-mfpu-maverick.d: New file.
	* gas/arm/attr-mfpu-neon-fp16.d: New file.
	* gas/arm/attr-mfpu-neon.d: New file.
	* gas/arm/attr-mfpu-softfpa.d: New file.
	* gas/arm/attr-mfpu-softvfp+vfp.d: New file.
	* gas/arm/attr-mfpu-softvfp.d: New file.
	* gas/arm/attr-mfpu-vfp.d: New file.
	* gas/arm/attr-mfpu-vfp10-r0.d: New file.
	* gas/arm/attr-mfpu-vfp10.d: New file.
	* gas/arm/attr-mfpu-vfp3.d: New file.
	* gas/arm/attr-mfpu-vfp9.d: New file.
	* gas/arm/attr-mfpu-vfpv2.d: New file.
	* gas/arm/attr-mfpu-vfpv3-d16.d: New file.
	* gas/arm/attr-mfpu-vfpv3.d: New file.
	* gas/arm/attr-mfpu-vfpxd.d: New file.
	* gas/arm/attr-order.d: Update Tag_ARM_ISA_use and Tag_THUMB_ISA_use.
	* gas/arm/attr-override-cpu-directive.d: New file.
	* gas/arm/attr-override-cpu-directive.s: New file.
	* gas/arm/attr-override-mcpu.d: New file.
	* gas/arm/attr-override-mcpu.s: New file.
	* gas/arm/blank.s: New file.
	* gas/arm/eabi_attr_1.d: Update Tag_ARM_ISA_use and Tag_THUMB_ISA_use.

	ld/testsuite/
	* ld-arm/attr-merge-3.attr: Update following gas change.
	* ld-arm/attr-merge-2.attr: Update Tag_ARM_ISA_use and
	Tag_THUMB_ISA_use following gas changes.
	* ld-arm/attr-merge-4.attr: Likewise.
	* ld-arm/attr-merge-5.attr: Likewise.
	* ld-arm/attr-merge-arch-1.attr: Likewise.
	* ld-arm/attr-merge-arch-2.attr: Likewise.
	* ld-arm/attr-merge-unknown-2.d: Likewise.
	* ld-arm/attr-merge-unknown-2r.d: Likewise.
	* ld-arm/attr-merge-unknown-3.d: Likewise.
	* ld-arm/attr-merge-wchar-00-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-00.d: Likewise.
	* ld-arm/attr-merge-wchar-02-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-02.d: Likewise.
	* ld-arm/attr-merge-wchar-04-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-04.d: Likewise.
	* ld-arm/attr-merge-wchar-20-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-20.d: Likewise.
	* ld-arm/attr-merge-wchar-22-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-22.d: Likewise.
	* ld-arm/attr-merge-wchar-24-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-40-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-40.d: Likewise.
	* ld-arm/attr-merge-wchar-42-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-44-nowarn.d: Likewise.
	* ld-arm/attr-merge-wchar-44.d: Likewise.
	* ld-arm/attr-merge.attr: Likewise.


---
 src/binutils-mainline/gas/config/tc-arm.c                                 |   87 ++++++----
 src/binutils-mainline/gas/read.c                                          |   16 +
 src/binutils-mainline/gas/read.h                                          |    2 
 src/binutils-mainline/gas/testsuite/gas/arm/attr-cpu-directive.d          |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-cpu-directive.s          |    1 
 src/binutils-mainline/gas/testsuite/gas/arm/attr-default.d                |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-all.d              |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv1.d            |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2.d            |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2a.d           |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2s.d           |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv3.d            |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv3m.d           |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4.d            |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4t.d           |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4txm.d         |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4xm.d          |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5.d            |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5t.d           |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5te.d          |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5tej.d         |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5texp.d        |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5txm.d         |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6-m.d          |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6.d            |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6j.d           |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6k.d           |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6kt2.d         |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6t2.d          |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6z.d           |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zk.d          |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zkt2.d        |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zt2.d         |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-a.d          |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-m.d          |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-r.d          |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7.d            |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7a.d           |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7m.d           |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7r.d           |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-iwmmxt.d           |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-iwmmxt2.d          |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-march-xscale.d           |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mcpu.d                   |   14 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1020e.d          |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1020t.d          |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1136jf-s.d       |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1136jfs.d        |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm7500fe.d         |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa.d               |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa10.d             |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa11.d             |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe.d               |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe2.d              |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe3.d              |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-maverick.d          |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-neon-fp16.d         |   12 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-neon.d              |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softfpa.d           |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softvfp+vfp.d       |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softvfp.d           |    9 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp.d               |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp10-r0.d          |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp10.d             |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp3.d              |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp9.d              |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv2.d             |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d         |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv3.d             |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpxd.d             |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-order.d                  |    2 
 src/binutils-mainline/gas/testsuite/gas/arm/attr-override-cpu-directive.d |   10 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-override-cpu-directive.s |    5 
 src/binutils-mainline/gas/testsuite/gas/arm/attr-override-mcpu.d          |   11 +
 src/binutils-mainline/gas/testsuite/gas/arm/attr-override-mcpu.s          |    2 
 src/binutils-mainline/gas/testsuite/gas/arm/blank.s                       |    1 
 src/binutils-mainline/gas/testsuite/gas/arm/eabi_attr_1.d                 |    1 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-2.attr               |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-3.attr               |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-4.attr               |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-5.attr               |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-arch-1.attr          |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-arch-2.attr          |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-2.d          |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-2r.d         |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-3.d          |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-00-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-00.d           |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-02-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-02.d           |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-04-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-04.d           |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-20-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-20.d           |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-22-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-22.d           |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-24-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-40-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-40.d           |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-42-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-44-nowarn.d    |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-44.d           |    2 
 src/binutils-mainline/ld/testsuite/ld-arm/attr-merge.attr                 |    2 
 103 files changed, 841 insertions(+), 41 deletions(-)

Index: src/binutils-mainline/gas/config/tc-arm.c
===================================================================
--- src/binutils-mainline/gas/config/tc-arm.c.orig
+++ src/binutils-mainline/gas/config/tc-arm.c
@@ -240,6 +240,8 @@ static int meabi_flags = EABI_DEFAULT;
 static int meabi_flags = EF_ARM_EABI_UNKNOWN;
 # endif
 
+static int attributes_set_explicitly[NUM_KNOWN_OBJ_ATTRIBUTES];
+
 bfd_boolean
 arm_is_eabi (void)
 {
@@ -3883,7 +3885,10 @@ s_arm_unwind_raw (int ignored ATTRIBUTE_
 static void
 s_arm_eabi_attribute (int ignored ATTRIBUTE_UNUSED)
 {
-  s_vendor_attribute (OBJ_ATTR_PROC);
+  int tag = s_vendor_attribute (OBJ_ATTR_PROC);
+
+  if (tag < NUM_KNOWN_OBJ_ATTRIBUTES)
+    attributes_set_explicitly[tag] = 1;
 }
 #endif /* OBJ_ELF */
 
@@ -20714,6 +20719,7 @@ static const cpu_arch_ver_table cpu_arch
     {1, ARM_ARCH_V4},
     {2, ARM_ARCH_V4T},
     {3, ARM_ARCH_V5},
+    {3, ARM_ARCH_V5T},
     {4, ARM_ARCH_V5TE},
     {5, ARM_ARCH_V5TEJ},
     {6, ARM_ARCH_V6},
@@ -20727,6 +20733,25 @@ static const cpu_arch_ver_table cpu_arch
     {0, ARM_ARCH_NONE}
 };
 
+/* Set an attribute if it has not already been set by the user.  */
+static void
+aeabi_set_attribute_int (int tag, int value)
+{
+  if (tag < 1
+      || tag >= NUM_KNOWN_OBJ_ATTRIBUTES
+      || !attributes_set_explicitly[tag])
+    bfd_elf_add_proc_attr_int (stdoutput, tag, value);
+}
+
+static void
+aeabi_set_attribute_string (int tag, const char *value)
+{
+  if (tag < 1
+      || tag >= NUM_KNOWN_OBJ_ATTRIBUTES
+      || !attributes_set_explicitly[tag])
+    bfd_elf_add_proc_attr_string (stdoutput, tag, value);
+}
+
 /* Set the public EABI object attributes.  */
 static void
 aeabi_set_public_attributes (void)
@@ -20773,49 +20798,47 @@ aeabi_set_public_attributes (void)
 	  for (i = 0; p[i]; i++)
 	    p[i] = TOUPPER (p[i]);
 	}
-      bfd_elf_add_proc_attr_string (stdoutput, 5, p);
+      aeabi_set_attribute_string (Tag_CPU_name, p);
     }
   /* Tag_CPU_arch.  */
-  bfd_elf_add_proc_attr_int (stdoutput, 6, arch);
+  aeabi_set_attribute_int (Tag_CPU_arch, arch);
   /* Tag_CPU_arch_profile.  */
   if (ARM_CPU_HAS_FEATURE (flags, arm_ext_v7a))
-    bfd_elf_add_proc_attr_int (stdoutput, 7, 'A');
+    aeabi_set_attribute_int (Tag_CPU_arch_profile, 'A');
   else if (ARM_CPU_HAS_FEATURE (flags, arm_ext_v7r))
-    bfd_elf_add_proc_attr_int (stdoutput, 7, 'R');
+    aeabi_set_attribute_int (Tag_CPU_arch_profile, 'R');
   else if (ARM_CPU_HAS_FEATURE (flags, arm_ext_m))
-    bfd_elf_add_proc_attr_int (stdoutput, 7, 'M');
+    aeabi_set_attribute_int (Tag_CPU_arch_profile, 'M');
   /* Tag_ARM_ISA_use.  */
-  if (ARM_CPU_HAS_FEATURE (arm_arch_used, arm_arch_full))
-    bfd_elf_add_proc_attr_int (stdoutput, 8, 1);
+  if (ARM_CPU_HAS_FEATURE (flags, arm_ext_v1)
+      || arch == 0)
+    aeabi_set_attribute_int (Tag_ARM_ISA_use, 1);
   /* Tag_THUMB_ISA_use.  */
-  if (ARM_CPU_HAS_FEATURE (thumb_arch_used, arm_arch_full))
-    bfd_elf_add_proc_attr_int (stdoutput, 9,
-	ARM_CPU_HAS_FEATURE (thumb_arch_used, arm_arch_t2) ? 2 : 1);
+  if (ARM_CPU_HAS_FEATURE (flags, arm_ext_v4t)
+      || arch == 0)
+    aeabi_set_attribute_int (Tag_THUMB_ISA_use,
+	ARM_CPU_HAS_FEATURE (flags, arm_arch_t2) ? 2 : 1);
   /* Tag_VFP_arch.  */
-  if (ARM_CPU_HAS_FEATURE (thumb_arch_used, fpu_vfp_ext_d32)
-      || ARM_CPU_HAS_FEATURE (arm_arch_used, fpu_vfp_ext_d32))
-    bfd_elf_add_proc_attr_int (stdoutput, 10, 4);
-  else if (ARM_CPU_HAS_FEATURE (thumb_arch_used, fpu_vfp_ext_v3)
-      || ARM_CPU_HAS_FEATURE (arm_arch_used, fpu_vfp_ext_v3))
-    bfd_elf_add_proc_attr_int (stdoutput, 10, 3);
-  else if (ARM_CPU_HAS_FEATURE (thumb_arch_used, fpu_vfp_ext_v2)
-           || ARM_CPU_HAS_FEATURE (arm_arch_used, fpu_vfp_ext_v2))
-    bfd_elf_add_proc_attr_int (stdoutput, 10, 2);
-  else if (ARM_CPU_HAS_FEATURE (thumb_arch_used, fpu_vfp_ext_v1)
-           || ARM_CPU_HAS_FEATURE (arm_arch_used, fpu_vfp_ext_v1)
-           || ARM_CPU_HAS_FEATURE (thumb_arch_used, fpu_vfp_ext_v1xd)
-           || ARM_CPU_HAS_FEATURE (arm_arch_used, fpu_vfp_ext_v1xd))
-    bfd_elf_add_proc_attr_int (stdoutput, 10, 1);
+  if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_d32))
+    aeabi_set_attribute_int (Tag_VFP_arch, 3);
+  else if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v3))
+    aeabi_set_attribute_int (Tag_VFP_arch, 4);
+  else if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v2))
+    aeabi_set_attribute_int (Tag_VFP_arch, 2);
+  else if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v1)
+           || ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v1xd))
+    aeabi_set_attribute_int (Tag_VFP_arch, 1);
   /* Tag_WMMX_arch.  */
-  if (ARM_CPU_HAS_FEATURE (thumb_arch_used, arm_cext_iwmmxt)
-      || ARM_CPU_HAS_FEATURE (arm_arch_used, arm_cext_iwmmxt))
-    bfd_elf_add_proc_attr_int (stdoutput, 11, 1);
-  /* Tag_NEON_arch.  */
+  if (ARM_CPU_HAS_FEATURE (flags, arm_cext_iwmmxt2))
+    aeabi_set_attribute_int (Tag_WMMX_arch, 2);
+  else if (ARM_CPU_HAS_FEATURE (flags, arm_cext_iwmmxt))
+    aeabi_set_attribute_int (Tag_WMMX_arch, 1);
+  /* Tag_Advanced_SIMD_arch (formerly Tag_NEON_arch).  */
   if (ARM_CPU_HAS_FEATURE (flags, fpu_neon_ext_v1))
-    bfd_elf_add_proc_attr_int (stdoutput, 12, 1);
-  /* Tag_NEON_FP16_arch.  */
+    aeabi_set_attribute_int (Tag_Advanced_SIMD_arch, 1);
+  /* Tag_VFP_HP_extension (formerly Tag_NEON_FP16_arch).  */
   if (ARM_CPU_HAS_FEATURE (flags, fpu_neon_fp16))
-    bfd_elf_add_proc_attr_int (stdoutput, 36, 1);
+    aeabi_set_attribute_int (Tag_VFP_HP_extension, 1);
 }
 
 /* Add the default contents for the .ARM.attributes section.  */
Index: src/binutils-mainline/gas/read.c
===================================================================
--- src/binutils-mainline/gas/read.c.orig
+++ src/binutils-mainline/gas/read.c
@@ -2060,8 +2060,9 @@ skip_past_char (char ** str, char c)
 }
 #define skip_past_comma(str) skip_past_char (str, ',')
 
-/* Parse an attribute directive for VENDOR.  */
-void
+/* Parse an attribute directive for VENDOR.
+   Returns the attribute number read, or zero on error.  */
+int
 s_vendor_attribute (int vendor)
 {
   expressionS exp;
@@ -2104,7 +2105,7 @@ s_vendor_attribute (int vendor)
 	{
 	  as_bad (_("Attribute name not recognised: %s"), name);
 	  ignore_rest_of_line ();
-	  return;
+	  return 0;
 	}
     }
 
@@ -2119,7 +2120,7 @@ s_vendor_attribute (int vendor)
 	{
 	  as_bad (_("expected numeric constant"));
 	  ignore_rest_of_line ();
-	  return;
+	  return 0;
 	}
       i = exp.X_add_number;
     }
@@ -2128,7 +2129,7 @@ s_vendor_attribute (int vendor)
     {
       as_bad (_("expected comma"));
       ignore_rest_of_line ();
-      return;
+      return 0;
     }
   if (type & 2)
     {
@@ -2156,14 +2157,15 @@ s_vendor_attribute (int vendor)
     }
 
   demand_empty_rest_of_line ();
-  return;
+  return tag;
 bad_string:
   as_bad (_("bad string constant"));
   ignore_rest_of_line ();
-  return;
+  return 0;
 bad:
   as_bad (_("expected <tag> , <value>"));
   ignore_rest_of_line ();
+  return 0;
 }
 
 /* Parse a .gnu_attribute directive.  */
Index: src/binutils-mainline/gas/read.h
===================================================================
--- src/binutils-mainline/gas/read.h.orig
+++ src/binutils-mainline/gas/read.h
@@ -186,5 +186,5 @@ extern void stringer (int append_zero);
 extern void s_xstab (int what);
 extern void s_rva (int);
 extern void s_incbin (int);
-extern void s_vendor_attribute (int);
+extern int s_vendor_attribute (int);
 extern void s_weakref (int);
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-cpu-directive.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-cpu-directive.d
@@ -0,0 +1,12 @@
+# name: EABI attributes from directives
+# source: attr-cpu-directive.s
+# as:
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "CORTEX-A8"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-cpu-directive.s
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-cpu-directive.s
@@ -0,0 +1 @@
+	.cpu cortex-a8
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-default.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-default.d
@@ -0,0 +1,9 @@
+# name: EABI attribute defaults
+# source: blank.s
+# as:
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-all.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-all.d
@@ -0,0 +1,12 @@
+# name: attributes for -march=all
+# source: blank.s
+# as: -march=all
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "all"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv1.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv1.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv1
+# source: blank.s
+# as: -march=armv1
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "1"
+  Tag_CPU_arch: v4
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv2
+# source: blank.s
+# as: -march=armv2
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "2"
+  Tag_CPU_arch: v4
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2a.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2a.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv2a
+# source: blank.s
+# as: -march=armv2a
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "2A"
+  Tag_CPU_arch: v4
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2s.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv2s.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv2s
+# source: blank.s
+# as: -march=armv2s
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "2S"
+  Tag_CPU_arch: v4
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv3.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv3.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv3
+# source: blank.s
+# as: -march=armv3
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "3"
+  Tag_CPU_arch: v4
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv3m.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv3m.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv3m
+# source: blank.s
+# as: -march=armv3m
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "3M"
+  Tag_CPU_arch: v4
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv4
+# source: blank.s
+# as: -march=armv4
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "4"
+  Tag_CPU_arch: v4
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4t.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4t.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv4t
+# source: blank.s
+# as: -march=armv4t
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "4T"
+  Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4txm.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4txm.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv4txm
+# source: blank.s
+# as: -march=armv4txm
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "4TXM"
+  Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4xm.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv4xm.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv4xm
+# source: blank.s
+# as: -march=armv4xm
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "4XM"
+  Tag_CPU_arch: v4
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv5
+# source: blank.s
+# as: -march=armv5
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "5"
+  Tag_CPU_arch: v5T
+  Tag_ARM_ISA_use: Yes
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5t.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5t.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv5t
+# source: blank.s
+# as: -march=armv5t
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "5T"
+  Tag_CPU_arch: v5T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5te.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5te.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv5te
+# source: blank.s
+# as: -march=armv5te
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "5TE"
+  Tag_CPU_arch: v5TE
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5tej.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5tej.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv5tej
+# source: blank.s
+# as: -march=armv5tej
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "5TEJ"
+  Tag_CPU_arch: v5TEJ
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5texp.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5texp.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv5texp
+# source: blank.s
+# as: -march=armv5texp
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "5TEXP"
+  Tag_CPU_arch: v5TE
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5txm.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv5txm.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv5txm
+# source: blank.s
+# as: -march=armv5txm
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "5TXM"
+  Tag_CPU_arch: v5T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6-m.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6-m.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6-m
+# source: blank.s
+# as: -march=armv6-m
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6-M"
+  Tag_CPU_arch: v6-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6
+# source: blank.s
+# as: -march=armv6
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6"
+  Tag_CPU_arch: v6
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6j.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6j.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6j
+# source: blank.s
+# as: -march=armv6j
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6J"
+  Tag_CPU_arch: v6
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6k.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6k.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6k
+# source: blank.s
+# as: -march=armv6k
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6K"
+  Tag_CPU_arch: v6K
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6kt2.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6kt2.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6kt2
+# source: blank.s
+# as: -march=armv6kt2
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6KT2"
+  Tag_CPU_arch: v6T2
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6t2.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6t2.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6t2
+# source: blank.s
+# as: -march=armv6t2
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6T2"
+  Tag_CPU_arch: v6T2
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6z.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6z.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6z
+# source: blank.s
+# as: -march=armv6z
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6Z"
+  Tag_CPU_arch: v6KZ
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zk.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zk.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6zk
+# source: blank.s
+# as: -march=armv6zk
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6ZK"
+  Tag_CPU_arch: v6K
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zkt2.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zkt2.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6zkt2
+# source: blank.s
+# as: -march=armv6zkt2
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6ZKT2"
+  Tag_CPU_arch: v6T2
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zt2.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv6zt2.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv6zt2
+# source: blank.s
+# as: -march=armv6zt2
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "6ZT2"
+  Tag_CPU_arch: v6T2
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-a.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-a.d
@@ -0,0 +1,12 @@
+# name: attributes for -march=armv7-a
+# source: blank.s
+# as: -march=armv7-a
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "7-A"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-m.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-m.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv7-m
+# source: blank.s
+# as: -march=armv7-m
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "7-M"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-r.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7-r.d
@@ -0,0 +1,12 @@
+# name: attributes for -march=armv7-r
+# source: blank.s
+# as: -march=armv7-r
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "7-R"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7.d
@@ -0,0 +1,10 @@
+# name: attributes for -march=armv7
+# source: blank.s
+# as: -march=armv7
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "7"
+  Tag_CPU_arch: v7
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7a.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7a.d
@@ -0,0 +1,12 @@
+# name: attributes for -march=armv7a
+# source: blank.s
+# as: -march=armv7a
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "7A"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7m.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7m.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=armv7m
+# source: blank.s
+# as: -march=armv7m
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "7M"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7r.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-armv7r.d
@@ -0,0 +1,12 @@
+# name: attributes for -march=armv7r
+# source: blank.s
+# as: -march=armv7r
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "7R"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-iwmmxt.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-iwmmxt.d
@@ -0,0 +1,12 @@
+# name: attributes for -march=iwmmxt
+# source: blank.s
+# as: -march=iwmmxt
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "iwmmxt"
+  Tag_CPU_arch: v5TE
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_WMMX_arch: WMMXv1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-iwmmxt2.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-iwmmxt2.d
@@ -0,0 +1,12 @@
+# name: attributes for -march=iwmmxt2
+# source: blank.s
+# as: -march=iwmmxt2
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "iwmmxt2"
+  Tag_CPU_arch: v5TE
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_WMMX_arch: WMMXv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-march-xscale.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-march-xscale.d
@@ -0,0 +1,11 @@
+# name: attributes for -march=xscale
+# source: blank.s
+# as: -march=xscale
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "xscale"
+  Tag_CPU_arch: v5TE
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mcpu.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mcpu.d
@@ -0,0 +1,14 @@
+# name: EABI attributes from command line
+# source: blank.s
+# as: -mcpu=cortex-a8
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "CORTEX-A8"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_VFP_arch: VFPv3
+  Tag_Advanced_SIMD_arch: NEONv1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1020e.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1020e.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=arm1020e
+# source: blank.s
+# as: -mfpu=arm1020e
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1020t.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1020t.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=arm1020t
+# source: blank.s
+# as: -mfpu=arm1020t
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1136jf-s.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1136jf-s.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=arm1136jf-s
+# source: blank.s
+# as: -mfpu=arm1136jf-s
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1136jfs.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm1136jfs.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=arm1136jfs
+# source: blank.s
+# as: -mfpu=arm1136jfs
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm7500fe.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-arm7500fe.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=arm7500fe
+# source: blank.s
+# as: -mfpu=arm7500fe
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=fpa
+# source: blank.s
+# as: -mfpu=fpa
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa10.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa10.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=fpa10
+# source: blank.s
+# as: -mfpu=fpa10
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa11.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpa11.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=fpa11
+# source: blank.s
+# as: -mfpu=fpa11
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=fpe
+# source: blank.s
+# as: -mfpu=fpe
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe2.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe2.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=fpe2
+# source: blank.s
+# as: -mfpu=fpe2
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe3.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-fpe3.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=fpe3
+# source: blank.s
+# as: -mfpu=fpe3
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-maverick.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-maverick.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=maverick
+# source: blank.s
+# as: -mfpu=maverick
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-neon-fp16.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-neon-fp16.d
@@ -0,0 +1,12 @@
+# name: attributes for -mfpu=neon-fp16
+# source: blank.s
+# as: -mfpu=neon-fp16
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv3
+  Tag_Advanced_SIMD_arch: NEONv1
+  Tag_VFP_HP_extension: Allowed
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-neon.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-neon.d
@@ -0,0 +1,11 @@
+# name: attributes for -mfpu=neon
+# source: blank.s
+# as: -mfpu=neon
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv3
+  Tag_Advanced_SIMD_arch: NEONv1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softfpa.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softfpa.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=softfpa
+# source: blank.s
+# as: -mfpu=softfpa
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softvfp+vfp.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softvfp+vfp.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=softvfp+vfp
+# source: blank.s
+# as: -mfpu=softvfp+vfp
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softvfp.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-softvfp.d
@@ -0,0 +1,9 @@
+# name: attributes for -mfpu=softvfp
+# source: blank.s
+# as: -mfpu=softvfp
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfp
+# source: blank.s
+# as: -mfpu=vfp
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp10-r0.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp10-r0.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfp10-r0
+# source: blank.s
+# as: -mfpu=vfp10-r0
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp10.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp10.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfp10
+# source: blank.s
+# as: -mfpu=vfp10
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp3.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp3.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfp3
+# source: blank.s
+# as: -mfpu=vfp3
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv3
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp9.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfp9.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfp9
+# source: blank.s
+# as: -mfpu=vfp9
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv2.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv2.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfpv2
+# source: blank.s
+# as: -mfpu=vfpv2
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv2
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfpv3-d16
+# source: blank.s
+# as: -mfpu=vfpv3-d16
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv3-D16
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv3.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpv3.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfpv3
+# source: blank.s
+# as: -mfpu=vfpv3
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv3
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpxd.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-mfpu-vfpxd.d
@@ -0,0 +1,10 @@
+# name: attributes for -mfpu=vfpxd
+# source: blank.s
+# as: -mfpu=vfpxd
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_VFP_arch: VFPv1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-order.d
===================================================================
--- src/binutils-mainline/gas/testsuite/gas/arm/attr-order.d.orig
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-order.d
@@ -9,6 +9,8 @@ File Attributes
   Tag_nodefaults: True
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_unknown_63: "val"
   Tag_also_compatible_with: v6-M
   Tag_T2EE_use: Allowed
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-override-cpu-directive.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-override-cpu-directive.d
@@ -0,0 +1,10 @@
+# name: EABI attributes .eabi_attribute overrides .cpu
+# source: attr-override-cpu-directive.s
+# as:
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "custom name"
+  Tag_CPU_arch: v7
+  Tag_THUMB_ISA_use: \?\?\? \(10\)
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-override-cpu-directive.s
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-override-cpu-directive.s
@@ -0,0 +1,5 @@
+	.cpu arm7tdmi
+	.eabi_attribute Tag_CPU_name, "custom name"
+	.eabi_attribute Tag_CPU_arch, 10
+	.eabi_attribute Tag_ARM_ISA_use, 0
+	.eabi_attribute Tag_THUMB_ISA_use, 10
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-override-mcpu.d
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-override-mcpu.d
@@ -0,0 +1,11 @@
+# name: EABI attributes .cpu overrides -mcpu
+# source: attr-override-mcpu.s
+# as: -mcpu=cortex-a8
+# readelf: -A
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "ARM7TDMI"
+  Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/gas/testsuite/gas/arm/attr-override-mcpu.s
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/attr-override-mcpu.s
@@ -0,0 +1,2 @@
+	.cpu arm7tdmi
+	.fpu softfpa
Index: src/binutils-mainline/gas/testsuite/gas/arm/blank.s
===================================================================
--- /dev/null
+++ src/binutils-mainline/gas/testsuite/gas/arm/blank.s
@@ -0,0 +1 @@
+@ this file left intentionally blank
Index: src/binutils-mainline/gas/testsuite/gas/arm/eabi_attr_1.d
===================================================================
--- src/binutils-mainline/gas/testsuite/gas/arm/eabi_attr_1.d.orig
+++ src/binutils-mainline/gas/testsuite/gas/arm/eabi_attr_1.d
@@ -7,6 +7,7 @@ File Attributes
   Tag_CPU_name: "ARM1136JF-S"
   Tag_CPU_arch: v6
   Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_VFP_args: VFP registers
   Tag_compatibility: flag = 3, vendor = GNU
   Tag_unknown_128: 1234 \(0x4d2\)
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-2.attr
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-2.attr.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-2.attr
@@ -2,6 +2,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-3.attr
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-3.attr.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-3.attr
@@ -2,7 +2,7 @@ Attribute Section: aeabi
 File Attributes
   Tag_nodefaults: True
   Tag_CPU_name: "ARM9E"
-  Tag_CPU_arch: v5TE
+  Tag_CPU_arch: v5T
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
   Tag_VFP_arch: VFPv3
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-4.attr
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-4.attr.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-4.attr
@@ -3,4 +3,6 @@ File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
   Tag_CPU_arch_profile: Microcontroller
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_also_compatible_with: v6-M
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-5.attr
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-5.attr.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-5.attr
@@ -1,3 +1,5 @@
 Attribute Section: aeabi
 File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_compatibility: flag = 1, vendor = gnu
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-arch-1.attr
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-arch-1.attr.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-arch-1.attr
@@ -2,3 +2,5 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM v7"
   Tag_CPU_arch: v7
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-arch-2.attr
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-arch-2.attr.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-arch-2.attr
@@ -3,3 +3,5 @@ File Attributes
   Tag_CPU_raw_name: "arch_v6k"
   Tag_CPU_name: "MPCORE"
   Tag_CPU_arch: v6K
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-2.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-2.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-2.d
@@ -7,4 +7,6 @@
 
 Attribute Section: aeabi
 File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
 
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-2r.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-2r.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-2r.d
@@ -7,4 +7,6 @@
 
 Attribute Section: aeabi
 File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
 
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-3.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-3.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-unknown-3.d
@@ -7,5 +7,7 @@
 
 Attribute Section: aeabi
 File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_unknown_82: 1 \(0x1\)
 
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-00-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-00-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-00-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
   Tag_ABI_FP_number_model: IEEE 754
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-00.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-00.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-00.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
   Tag_ABI_FP_number_model: IEEE 754
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-02-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-02-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-02-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 2
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-02.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-02.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-02.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 2
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-04-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-04-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-04-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-04.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-04.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-04.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-20-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-20-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-20-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 2
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-20.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-20.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-20.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 2
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-22-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-22-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-22-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 2
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-22.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-22.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-22.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 2
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-24-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-24-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-24-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 2
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-40-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-40-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-40-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-40.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-40.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-40.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-42-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-42-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-42-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-44-nowarn.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-44-nowarn.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-44-nowarn.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-44.d
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-44.d.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge-wchar-44.d
@@ -8,6 +8,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed
Index: src/binutils-mainline/ld/testsuite/ld-arm/attr-merge.attr
===================================================================
--- src/binutils-mainline/ld/testsuite/ld-arm/attr-merge.attr.orig
+++ src/binutils-mainline/ld/testsuite/ld-arm/attr-merge.attr
@@ -2,6 +2,8 @@ Attribute Section: aeabi
 File Attributes
   Tag_CPU_name: "ARM7TDMI"
   Tag_CPU_arch: v4T
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_PCS_wchar_t: 4
   Tag_ABI_FP_denormal: Needed
   Tag_ABI_FP_exceptions: Needed

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]