OSDN Git Service

2010-05-10 Andrew Stubbs <ams@codesourcery.com>
authornickc <nickc>
Tue, 11 May 2010 17:36:25 +0000 (17:36 +0000)
committernickc <nickc>
Tue, 11 May 2010 17:36:25 +0000 (17:36 +0000)
        gas/
        * config/tc-arm.c (aeabi_set_public_attributes): Set Tag_DIV_use.

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

        ld/testsuite/
        * ld-arm/attr-merge-2.attr: Add Tag_DIV_use.
        * ld-arm/attr-merge-2a.s: Likewise.
        * ld-arm/attr-merge-2b.s: Likewise.
        * ld-arm/attr-merge-3a.s: Likewise.
        * ld-arm/attr-merge-3b.s: Likewise.
        * ld-arm/attr-merge-4.attr: Likewise.
        * ld-arm/attr-merge-5.attr: Likewise.
        * ld-arm/attr-merge-6.attr: Likewise.
        * ld-arm/attr-merge-7.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-vfp-1.d: Likewise.
        * ld-arm/attr-merge-vfp-1r.d: Likewise.
        * ld-arm/attr-merge-vfp-2.d: Likewise.
        * ld-arm/attr-merge-vfp-2r.d: Likewise.
        * ld-arm/attr-merge-vfp-3.d: Likewise.
        * ld-arm/attr-merge-vfp-3r.d: Likewise.
        * ld-arm/attr-merge-vfp-4.d: Likewise.
        * ld-arm/attr-merge-vfp-4r.d: Likewise.
        * ld-arm/attr-merge-vfp-5.d: Likewise.
        * ld-arm/attr-merge-vfp-5r.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.

2010-04-07  Jie Zhang  <jie@codesourcery.com>

        gas/
        * config/tc-arm.c (aeabi_set_public_attributes): Set
        Tag_ABI_HardFP_use to 1 if a single precision FPU is selected.

        gas/testsuite/
        * gas/arm/attr-mfpu-vfpxd.d: New test.

        bfd/
        * elf32-arm.c (elf32_arm_merge_eabi_attributes): Merge
        Tag_ABI_HardFP_use correctly.

        ld/testsuite/
        * ld-arm/attr-merge-vfp-6.d: New test.
        * ld-arm/attr-merge-vfp-6r.d: New test.
        * ld-arm/attr-merge-vfpv3xd.s: New test.
        * ld-arm/arm-elf.exp: Add attr-merge-vfp-6 and attr-merge-vfp-6r.

2010-05-11  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

        * arm-dis.c (thumb_opcodes): Update ldmia entry to use new %W
        format.
        (print_insn_thumb16): Add support for new %W format.

        * gas/arm/thumb32.d: Fix expected disassembly of ldmia
          instruction.

121 files changed:
bfd/ChangeLog
bfd/elf32-arm.c
gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/attr-cpu-directive.d
gas/testsuite/gas/arm/attr-default.d
gas/testsuite/gas/arm/attr-march-armv1.d
gas/testsuite/gas/arm/attr-march-armv2.d
gas/testsuite/gas/arm/attr-march-armv2a.d
gas/testsuite/gas/arm/attr-march-armv2s.d
gas/testsuite/gas/arm/attr-march-armv3.d
gas/testsuite/gas/arm/attr-march-armv3m.d
gas/testsuite/gas/arm/attr-march-armv4.d
gas/testsuite/gas/arm/attr-march-armv4t.d
gas/testsuite/gas/arm/attr-march-armv4txm.d
gas/testsuite/gas/arm/attr-march-armv4xm.d
gas/testsuite/gas/arm/attr-march-armv5.d
gas/testsuite/gas/arm/attr-march-armv5t.d
gas/testsuite/gas/arm/attr-march-armv5te.d
gas/testsuite/gas/arm/attr-march-armv5tej.d
gas/testsuite/gas/arm/attr-march-armv5texp.d
gas/testsuite/gas/arm/attr-march-armv5txm.d
gas/testsuite/gas/arm/attr-march-armv6-m.d
gas/testsuite/gas/arm/attr-march-armv6.d
gas/testsuite/gas/arm/attr-march-armv6j.d
gas/testsuite/gas/arm/attr-march-armv6k.d
gas/testsuite/gas/arm/attr-march-armv6kt2.d
gas/testsuite/gas/arm/attr-march-armv6t2.d
gas/testsuite/gas/arm/attr-march-armv6z.d
gas/testsuite/gas/arm/attr-march-armv6zk.d
gas/testsuite/gas/arm/attr-march-armv6zkt2.d
gas/testsuite/gas/arm/attr-march-armv6zt2.d
gas/testsuite/gas/arm/attr-march-armv7-a.d
gas/testsuite/gas/arm/attr-march-armv7.d
gas/testsuite/gas/arm/attr-march-armv7a.d
gas/testsuite/gas/arm/attr-march-iwmmxt.d
gas/testsuite/gas/arm/attr-march-iwmmxt2.d
gas/testsuite/gas/arm/attr-march-xscale.d
gas/testsuite/gas/arm/attr-mcpu.d
gas/testsuite/gas/arm/attr-mfpu-arm1020e.d
gas/testsuite/gas/arm/attr-mfpu-arm1020t.d
gas/testsuite/gas/arm/attr-mfpu-arm1136jf-s.d
gas/testsuite/gas/arm/attr-mfpu-arm1136jfs.d
gas/testsuite/gas/arm/attr-mfpu-arm7500fe.d
gas/testsuite/gas/arm/attr-mfpu-fpa.d
gas/testsuite/gas/arm/attr-mfpu-fpa10.d
gas/testsuite/gas/arm/attr-mfpu-fpa11.d
gas/testsuite/gas/arm/attr-mfpu-fpe.d
gas/testsuite/gas/arm/attr-mfpu-fpe2.d
gas/testsuite/gas/arm/attr-mfpu-fpe3.d
gas/testsuite/gas/arm/attr-mfpu-maverick.d
gas/testsuite/gas/arm/attr-mfpu-neon-fp16.d
gas/testsuite/gas/arm/attr-mfpu-neon.d
gas/testsuite/gas/arm/attr-mfpu-softfpa.d
gas/testsuite/gas/arm/attr-mfpu-softvfp+vfp.d
gas/testsuite/gas/arm/attr-mfpu-softvfp.d
gas/testsuite/gas/arm/attr-mfpu-vfp.d
gas/testsuite/gas/arm/attr-mfpu-vfp10-r0.d
gas/testsuite/gas/arm/attr-mfpu-vfp10.d
gas/testsuite/gas/arm/attr-mfpu-vfp3.d
gas/testsuite/gas/arm/attr-mfpu-vfp9.d
gas/testsuite/gas/arm/attr-mfpu-vfpv2.d
gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d
gas/testsuite/gas/arm/attr-mfpu-vfpv3.d
gas/testsuite/gas/arm/attr-mfpu-vfpv4-d16.d
gas/testsuite/gas/arm/attr-mfpu-vfpv4.d
gas/testsuite/gas/arm/attr-mfpu-vfpxd.d
gas/testsuite/gas/arm/attr-order.d
gas/testsuite/gas/arm/attr-override-cpu-directive.d
gas/testsuite/gas/arm/attr-override-mcpu.d
gas/testsuite/gas/arm/eabi_attr_1.d
gas/testsuite/gas/arm/thumb32.d
ld/testsuite/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/attr-merge-2.attr
ld/testsuite/ld-arm/attr-merge-2a.s
ld/testsuite/ld-arm/attr-merge-2b.s
ld/testsuite/ld-arm/attr-merge-3a.s
ld/testsuite/ld-arm/attr-merge-3b.s
ld/testsuite/ld-arm/attr-merge-4.attr
ld/testsuite/ld-arm/attr-merge-5.attr
ld/testsuite/ld-arm/attr-merge-6.attr
ld/testsuite/ld-arm/attr-merge-7.attr
ld/testsuite/ld-arm/attr-merge-arch-1.attr
ld/testsuite/ld-arm/attr-merge-arch-2.attr
ld/testsuite/ld-arm/attr-merge-unknown-2.d
ld/testsuite/ld-arm/attr-merge-unknown-2r.d
ld/testsuite/ld-arm/attr-merge-unknown-3.d
ld/testsuite/ld-arm/attr-merge-vfp-1.d
ld/testsuite/ld-arm/attr-merge-vfp-1r.d
ld/testsuite/ld-arm/attr-merge-vfp-2.d
ld/testsuite/ld-arm/attr-merge-vfp-2r.d
ld/testsuite/ld-arm/attr-merge-vfp-3.d
ld/testsuite/ld-arm/attr-merge-vfp-3r.d
ld/testsuite/ld-arm/attr-merge-vfp-4.d
ld/testsuite/ld-arm/attr-merge-vfp-4r.d
ld/testsuite/ld-arm/attr-merge-vfp-5.d
ld/testsuite/ld-arm/attr-merge-vfp-5r.d
ld/testsuite/ld-arm/attr-merge-vfp-6.d [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-vfp-6r.d [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-vfpv3xd.s [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-wchar-00-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-00.d
ld/testsuite/ld-arm/attr-merge-wchar-02-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-02.d
ld/testsuite/ld-arm/attr-merge-wchar-04-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-04.d
ld/testsuite/ld-arm/attr-merge-wchar-20-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-20.d
ld/testsuite/ld-arm/attr-merge-wchar-22-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-22.d
ld/testsuite/ld-arm/attr-merge-wchar-24-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-40-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-40.d
ld/testsuite/ld-arm/attr-merge-wchar-42-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-44-nowarn.d
ld/testsuite/ld-arm/attr-merge-wchar-44.d
ld/testsuite/ld-arm/attr-merge.attr
opcodes/ChangeLog
opcodes/arm-dis.c

index 5cfcc87..cbfe6af 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-11  Jie Zhang  <jie@codesourcery.com>
+
+       * elf32-arm.c (elf32_arm_merge_eabi_attributes): Merge
+       Tag_ABI_HardFP_use correctly.
+
 2010-05-11  Alan Modra  <amodra@gmail.com>
 
        * coffcode.h (coff_write_object_contents): Enclose all occurrences
index 18fddc6..df25977 100644 (file)
@@ -10106,6 +10106,11 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
          break;
        case Tag_FP_arch:
            {
+             /* Tag_ABI_HardFP_use is handled along with Tag_FP_arch since
+                the meaning of Tag_ABI_HardFP_use depends on Tag_FP_arch
+                when it's 0.  It might mean absence of FP hardware if
+                Tag_FP_arch is zero, otherwise it is effectively SP + DP.  */
+
              static const struct
              {
                  int ver;
@@ -10124,6 +10129,40 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
              int regs;
              int newval;
 
+             /* If the output has no requirement about FP hardware,
+                follow the requirement of the input.  */
+             if (out_attr[i].i == 0)
+               {
+                 BFD_ASSERT (out_attr[Tag_ABI_HardFP_use].i == 0);
+                 out_attr[i].i = in_attr[i].i;
+                 out_attr[Tag_ABI_HardFP_use].i
+                   = in_attr[Tag_ABI_HardFP_use].i;
+                 break;
+               }
+             /* If the input has no requirement about FP hardware, do
+                nothing.  */
+             else if (in_attr[i].i == 0)
+               {
+                 BFD_ASSERT (in_attr[Tag_ABI_HardFP_use].i == 0);
+                 break;
+               }
+
+             /* Both the input and the output have nonzero Tag_FP_arch.
+                So Tag_ABI_HardFP_use is (SP & DP) when it's zero.  */
+
+             /* If both the input and the output have zero Tag_ABI_HardFP_use,
+                do nothing.  */
+             if (in_attr[Tag_ABI_HardFP_use].i == 0
+                 && out_attr[Tag_ABI_HardFP_use].i == 0)
+               ;
+             /* If the input and the output have different Tag_ABI_HardFP_use,
+                the combination of them is 3 (SP & DP).  */
+             else if (in_attr[Tag_ABI_HardFP_use].i
+                      != out_attr[Tag_ABI_HardFP_use].i)
+               out_attr[Tag_ABI_HardFP_use].i = 3;
+
+             /* Now we can handle Tag_FP_arch.  */
+
              /* Values greater than 6 aren't defined, so just pick the
                 biggest */
              if (in_attr[i].i > 6 && in_attr[i].i > out_attr[i].i)
@@ -10244,12 +10283,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
          /* Merged in target-independent code.  */
          break;
        case Tag_ABI_HardFP_use:
-         /* 1 (SP) and 2 (DP) conflict, so combine to 3 (SP & DP).  */
-         if ((in_attr[i].i == 1 && out_attr[i].i == 2)
-             || (in_attr[i].i == 2 && out_attr[i].i == 1))
-           out_attr[i].i = 3;
-         else if (in_attr[i].i > out_attr[i].i)
-           out_attr[i].i = in_attr[i].i;
+         /* This is handled along with Tag_FP_arch.  */
          break;
        case Tag_ABI_FP_16bit_format:
          if (in_attr[i].i != 0 && out_attr[i].i != 0)
index 1ab09e8..0ec4f60 100644 (file)
@@ -1,3 +1,12 @@
+2010-05-11  Andrew Stubbs  <ams@codesourcery.com>
+
+       * config/tc-arm.c (aeabi_set_public_attributes): Set Tag_DIV_use.
+
+2010-05-11  Jie Zhang  <jie@codesourcery.com>
+
+       * config/tc-arm.c (aeabi_set_public_attributes): Set
+       Tag_ABI_HardFP_use to 1 if a single precision FPU is selected.
+
 2010-05-07  Tristan Gingold  <gingold@adacore.com>
 
        * Makefile.in: Regenerate with automake 1.11.1.
index a50ac1d..8c9b33b 100644 (file)
@@ -22856,6 +22856,11 @@ aeabi_set_public_attributes (void)
            || ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v1xd))
     aeabi_set_attribute_int (Tag_VFP_arch, 1);
 
+  /* Tag_ABI_HardFP_use.  */
+  if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v1xd)
+      && !ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v1))
+    aeabi_set_attribute_int (Tag_ABI_HardFP_use, 1);
+
   /* Tag_WMMX_arch.  */
   if (ARM_CPU_HAS_FEATURE (flags, arm_cext_iwmmxt2))
     aeabi_set_attribute_int (Tag_WMMX_arch, 2);
@@ -22871,6 +22876,15 @@ aeabi_set_public_attributes (void)
   /* Tag_VFP_HP_extension (formerly Tag_NEON_FP16_arch).  */
   if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_fp16))
     aeabi_set_attribute_int (Tag_VFP_HP_extension, 1);
+
+  /* Tag_DIV_use.  */
+  if (ARM_CPU_HAS_FEATURE (flags, arm_ext_div))
+    aeabi_set_attribute_int (Tag_DIV_use, 0);
+  /* Fill this in when gas supports v7a sdiv/udiv.
+    else if (... v7a with div extension used ...)
+      aeabi_set_attribute_int (Tag_DIV_use, 2);  */
+  else
+    aeabi_set_attribute_int (Tag_DIV_use, 1);
 }
 
 /* Add the default contents for the .ARM.attributes section.  */
index bed67b5..c267d2c 100644 (file)
@@ -1,3 +1,83 @@
+2010-05-11  Andrew Stubbs  <ams@codesourcery.com>
+
+       * gas/arm/attr-cpu-directive.d: Add Tag_DIV_use.
+       * gas/arm/attr-default.d: Likewise.
+       * gas/arm/attr-march-armv1.d: Likewise.
+       * gas/arm/attr-march-armv2.d: Likewise.
+       * gas/arm/attr-march-armv2a.d: Likewise.
+       * gas/arm/attr-march-armv2s.d: Likewise.
+       * gas/arm/attr-march-armv3.d: Likewise.
+       * gas/arm/attr-march-armv3m.d: Likewise.
+       * gas/arm/attr-march-armv4.d: Likewise.
+       * gas/arm/attr-march-armv4t.d: Likewise.
+       * gas/arm/attr-march-armv4txm.d: Likewise.
+       * gas/arm/attr-march-armv4xm.d: Likewise.
+       * gas/arm/attr-march-armv5.d: Likewise.
+       * gas/arm/attr-march-armv5t.d: Likewise.
+       * gas/arm/attr-march-armv5te.d: Likewise.
+       * gas/arm/attr-march-armv5tej.d: Likewise.
+       * gas/arm/attr-march-armv5texp.d: Likewise.
+       * gas/arm/attr-march-armv5txm.d: Likewise.
+       * gas/arm/attr-march-armv6-m.d: Likewise.
+       * gas/arm/attr-march-armv6.d: Likewise.
+       * gas/arm/attr-march-armv6j.d: Likewise.
+       * gas/arm/attr-march-armv6k.d: Likewise.
+       * gas/arm/attr-march-armv6kt2.d: Likewise.
+       * gas/arm/attr-march-armv6t2.d: Likewise.
+       * gas/arm/attr-march-armv6z.d: Likewise.
+       * gas/arm/attr-march-armv6zk.d: Likewise.
+       * gas/arm/attr-march-armv6zkt2.d: Likewise.
+       * gas/arm/attr-march-armv6zt2.d: Likewise.
+       * gas/arm/attr-march-armv7-a.d: Likewise.
+       * gas/arm/attr-march-armv7.d: Likewise.
+       * gas/arm/attr-march-armv7a.d: Likewise.
+       * gas/arm/attr-march-iwmmxt.d: Likewise.
+       * gas/arm/attr-march-iwmmxt2.d: Likewise.
+       * gas/arm/attr-march-marvell-f.d: Likewise.
+       * gas/arm/attr-march-xscale.d: Likewise.
+       * gas/arm/attr-mcpu.d: Likewise.
+       * gas/arm/attr-mfpu-arm1020e.d: Likewise.
+       * gas/arm/attr-mfpu-arm1020t.d: Likewise.
+       * gas/arm/attr-mfpu-arm1136jf-s.d: Likewise.
+       * gas/arm/attr-mfpu-arm1136jfs.d: Likewise.
+       * gas/arm/attr-mfpu-arm7500fe.d: Likewise.
+       * gas/arm/attr-mfpu-fpa.d: Likewise.
+       * gas/arm/attr-mfpu-fpa10.d: Likewise.
+       * gas/arm/attr-mfpu-fpa11.d: Likewise.
+       * gas/arm/attr-mfpu-fpe.d: Likewise.
+       * gas/arm/attr-mfpu-fpe2.d: Likewise.
+       * gas/arm/attr-mfpu-fpe3.d: Likewise.
+       * gas/arm/attr-mfpu-maverick.d: Likewise.
+       * gas/arm/attr-mfpu-neon-fp16.d: Likewise.
+       * gas/arm/attr-mfpu-neon.d: Likewise.
+       * gas/arm/attr-mfpu-softfpa.d: Likewise.
+       * gas/arm/attr-mfpu-softvfp+vfp.d: Likewise.
+       * gas/arm/attr-mfpu-softvfp.d: Likewise.
+       * gas/arm/attr-mfpu-vfp.d: Likewise.
+       * gas/arm/attr-mfpu-vfp10-r0.d: Likewise.
+       * gas/arm/attr-mfpu-vfp10.d: Likewise.
+       * gas/arm/attr-mfpu-vfp3.d: Likewise.
+       * gas/arm/attr-mfpu-vfp9.d: Likewise.
+       * gas/arm/attr-mfpu-vfpv2.d: Likewise.
+       * gas/arm/attr-mfpu-vfpv3-d16.d: Likewise.
+       * gas/arm/attr-mfpu-vfpv3.d: Likewise.
+       * gas/arm/attr-mfpu-vfpv4-d16.d: Likewise.
+       * gas/arm/attr-mfpu-vfpv4.d: Likewise.
+       * gas/arm/attr-mfpu-vfpxd.d: Likewise.
+       * gas/arm/attr-order.d: Likewise.
+       * gas/arm/attr-override-cpu-directive.d: Likewise.
+       * gas/arm/attr-override-mcpu.d: Likewise.
+       * gas/arm/eabi_attr_1.d: Likewise.
+
+2010-05-11  Jie Zhang  <jie@codesourcery.com>
+
+       * gas/arm/attr-mfpu-vfpxd.d: New test.
+
+2010-05-11  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
+
+       * gas/arm/thumb32.d: Fix expected disassembly of ldmia
+       instruction.
+
 2010-05-05  Nathan Sidwell  <nathan@codesourcery.com>
 
        * gas/all/byte.s: New.
index 0eeab8c..4e884ef 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_CPU_arch_profile: Application
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index 4439180..93d5bf6 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 4867087..8c09564 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "1"
   Tag_CPU_arch: v4
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index 352e38f..0ed663a 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "2"
   Tag_CPU_arch: v4
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index 956f6fd..862ec74 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "2A"
   Tag_CPU_arch: v4
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index 67ba746..6db9d34 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "2S"
   Tag_CPU_arch: v4
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index e3b606c..aea9cf7 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "3"
   Tag_CPU_arch: v4
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index b3878cd..a7df5a2 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "3M"
   Tag_CPU_arch: v4
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index c0c3b92..649d02c 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "4"
   Tag_CPU_arch: v4
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index c2a5d98..0ac758f 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v4T
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 2b29db5..260e6a6 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v4T
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index b196601..dea944b 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "4XM"
   Tag_CPU_arch: v4
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index 2ed81c9..c21d80b 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "5"
   Tag_CPU_arch: v5T
   Tag_ARM_ISA_use: Yes
+  Tag_DIV_use: Not allowed
index 23e1324..1270fd4 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v5T
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 2569995..2601545 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v5TE
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 780a9f9..3b4b636 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v5TEJ
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 4f3a75f..67a7730 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v5TE
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index e78ca3f..e4d75c2 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v5T
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index ad79347..36ac3c8 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6-M
   Tag_CPU_arch_profile: Microcontroller
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index f509d5f..a8561e1 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index d8b37ec..627986c 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 4ff7057..321ecf2 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6K
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 43db36b..db2fe9a 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6T2
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index d0074f1..ac2aa23 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6T2
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index 5993737..f3eff4d 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6KZ
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 0b2ab0e..2a41110 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6K
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index e360f1e..5021d23 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6T2
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index 4b80a4d..92e6d45 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v6T2
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index da687a7..3a6fb3b 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_CPU_arch_profile: Application
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index 8ca9e7d..57e021e 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "7"
   Tag_CPU_arch: v7
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index 055b3cf..6ce60ef 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_CPU_arch_profile: Application
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index ccc4961..b647147 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_WMMX_arch: WMMXv1
+  Tag_DIV_use: Not allowed
index be46d22..69c3ef8 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_WMMX_arch: WMMXv2
+  Tag_DIV_use: Not allowed
index 5c80a6d..7b17617 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v5TE
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 4e8f321..86c8fe7 100644 (file)
@@ -14,3 +14,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-2
   Tag_FP_arch: VFPv3
   Tag_Advanced_SIMD_arch: NEONv1
+  Tag_DIV_use: Not allowed
index 95ea725..b6db97d 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv2
+  Tag_DIV_use: Not allowed
index 19b001b..efc2cd5 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv1
+  Tag_DIV_use: Not allowed
index f25aebe..ed065e7 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv2
+  Tag_DIV_use: Not allowed
index 4b8fce6..f2de9be 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv2
+  Tag_DIV_use: Not allowed
index 5e14e3f..5f1ca30 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 425e44d..da56a7d 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 339daf0..6399fff 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 5b94ac5..1a4b9e7 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 416bb5b..87283b3 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index a34cc6f..bfcfb4a 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index c917454..a578f75 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index afbbc6c..994d4b6 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 3866572..6f401bf 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_FP_arch: VFPv3
   Tag_Advanced_SIMD_arch: NEONv1
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
index 1d7d33b..1dd33a5 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3
   Tag_Advanced_SIMD_arch: NEONv1
+  Tag_DIV_use: Not allowed
index d46115b..abe315a 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index d0524c2..462bc13 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv2
+  Tag_DIV_use: Not allowed
index bab19b6..8d9a894 100644 (file)
@@ -9,3 +9,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 331b81a..9c66044 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv2
+  Tag_DIV_use: Not allowed
index 6f89e6a..bc44861 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv1
+  Tag_DIV_use: Not allowed
index 37af075..6f16f12 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv2
+  Tag_DIV_use: Not allowed
index f02d2cd..5c0964c 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3
+  Tag_DIV_use: Not allowed
index 57f5df7..516b8b6 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv2
+  Tag_DIV_use: Not allowed
index 678eb9e..b259b82 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv2
+  Tag_DIV_use: Not allowed
index 36d9914..88d9ca7 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3-D16
+  Tag_DIV_use: Not allowed
index b6cf496..9b22499 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3
+  Tag_DIV_use: Not allowed
index 967e912..3ec64bd 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv4-D16
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
index fd92773..4d2726f 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv4
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
index 735860e..9a1a9f5 100644 (file)
@@ -10,3 +10,5 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv1
+  Tag_ABI_HardFP_use: SP only
+  Tag_DIV_use: Not allowed
index 83f9f68..99ecd7b 100644 (file)
@@ -13,6 +13,7 @@ File Attributes
   Tag_CPU_arch: v4T
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
   Tag_unknown_63: "val"
   Tag_also_compatible_with: v6-M
   Tag_T2EE_use: Allowed
index 54c5e37..9423392 100644 (file)
@@ -10,3 +10,4 @@ File Attributes
   Tag_CPU_name: "custom name"
   Tag_CPU_arch: v7
   Tag_THUMB_ISA_use: \?\?\? \(10\)
+  Tag_DIV_use: Not allowed
index cfa11b9..425f095 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_CPU_arch: v4T
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index e3e3982..a8762ff 100644 (file)
@@ -10,5 +10,6 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_ABI_VFP_args: VFP registers
   Tag_compatibility: flag = 3, vendor = GNU
+  Tag_DIV_use: Not allowed
   Tag_unknown_128: 1234 \(0x4d2\)
   Tag_unknown_129: "bar"
index d04ef6b..530b86b 100644 (file)
@@ -559,7 +559,7 @@ Disassembly of section .text:
 0[0-9a-f]+ <[^>]+> e854 1f81   ldrex   r1, \[r4, #516\].*
 0[0-9a-f]+ <[^>]+> e844 2181   strex   r1, r2, \[r4, #516\].*
 0[0-9a-f]+ <[^>]+> c80e        ldmia   r0!, \{r1, r2, r3\}
-0[0-9a-f]+ <[^>]+> ca07        ldmia   r2!, \{r0, r1, r2\}
+0[0-9a-f]+ <[^>]+> ca07        ldmia   r2, \{r0, r1, r2\}
 0[0-9a-f]+ <[^>]+> e892 0007   ldmia\.w        r2, \{r0, r1, r2\}
 0[0-9a-f]+ <[^>]+> e899 0007   ldmia\.w        r9, \{r0, r1, r2\}
 0[0-9a-f]+ <[^>]+> e890 0580   ldmia\.w        r0, \{r7, r8, sl\}
index 565a624..bafd3bb 100644 (file)
@@ -1,3 +1,54 @@
+2010-05-11  Andrew Stubbs  <ams@codesourcery.com>
+
+       * ld-arm/attr-merge-2.attr: Add Tag_DIV_use.
+       * ld-arm/attr-merge-2a.s: Likewise.
+       * ld-arm/attr-merge-2b.s: Likewise.
+       * ld-arm/attr-merge-3a.s: Likewise.
+       * ld-arm/attr-merge-3b.s: Likewise.
+       * ld-arm/attr-merge-4.attr: Likewise.
+       * ld-arm/attr-merge-5.attr: Likewise.
+       * ld-arm/attr-merge-6.attr: Likewise.
+       * ld-arm/attr-merge-7.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-vfp-1.d: Likewise.
+       * ld-arm/attr-merge-vfp-1r.d: Likewise.
+       * ld-arm/attr-merge-vfp-2.d: Likewise.
+       * ld-arm/attr-merge-vfp-2r.d: Likewise.
+       * ld-arm/attr-merge-vfp-3.d: Likewise.
+       * ld-arm/attr-merge-vfp-3r.d: Likewise.
+       * ld-arm/attr-merge-vfp-4.d: Likewise.
+       * ld-arm/attr-merge-vfp-4r.d: Likewise.
+       * ld-arm/attr-merge-vfp-5.d: Likewise.
+       * ld-arm/attr-merge-vfp-5r.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.
+
+2010-05-11  Jie Zhang  <jie@codesourcery.com>
+
+       * ld-arm/attr-merge-vfp-6.d: New test.
+       * ld-arm/attr-merge-vfp-6r.d: New test.
+       * ld-arm/attr-merge-vfpv3xd.s: New test.
+       * ld-arm/arm-elf.exp: Add attr-merge-vfp-6 and attr-merge-vfp-6r.
+
 2010-05-07  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * ld-arm/cortex-a8-fix-bl-rel-plt.d: New file.
index 6180393..c23da54 100644 (file)
@@ -518,4 +518,6 @@ run_dump_test "attr-merge-vfp-4"
 run_dump_test "attr-merge-vfp-4r"
 run_dump_test "attr-merge-vfp-5"
 run_dump_test "attr-merge-vfp-5r"
+run_dump_test "attr-merge-vfp-6"
+run_dump_test "attr-merge-vfp-6r"
 run_dump_test "attr-merge-incompatible"
index 578333b..e34111b 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Allowed in v7-A with integer division extension
index 0303163..9d9ae18 100644 (file)
@@ -7,4 +7,5 @@
        .eabi_attribute 25, 1
        .eabi_attribute 26, 1
        .eabi_attribute 30, 6
+       .eabi_attribute Tag_DIV_use, 1
        .file   "attr-merge-2a.s"
index 047890a..6aa8da9 100644 (file)
@@ -8,4 +8,5 @@
        .eabi_attribute 26, 1
        .eabi_attribute 30, 6
        .eabi_attribute 18, 4
+       .eabi_attribute Tag_DIV_use, 2
        .file   "attr-merge-2b.s"
index 789fcf1..bc7a0c1 100644 (file)
@@ -36,3 +36,4 @@
        .eabi_attribute Tag_conformance, "0"
        .eabi_attribute Tag_Virtualization_use, 0
        .eabi_attribute Tag_MPextension_use, 0
+        .eabi_attribute Tag_DIV_use, 0
index 73d6590..681f661 100644 (file)
@@ -36,3 +36,4 @@
        .eabi_attribute Tag_conformance, "2.08"
        .eabi_attribute Tag_Virtualization_use, 1
        .eabi_attribute Tag_MPextension_use, 1
+       .eabi_attribute Tag_DIV_use, 1
index 75fd063..c8fc7ec 100644 (file)
@@ -5,4 +5,5 @@ File Attributes
   Tag_CPU_arch_profile: Microcontroller
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
   Tag_also_compatible_with: v6-M
index 9d3e971..f016708 100644 (file)
@@ -3,3 +3,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_compatibility: flag = 1, vendor = gnu
+  Tag_DIV_use: Not allowed
index e996c93..02d2705 100644 (file)
@@ -6,4 +6,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
   Tag_MPextension_use: Allowed
-
+  Tag_DIV_use: Not allowed
index e996c93..02d2705 100644 (file)
@@ -6,4 +6,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
   Tag_MPextension_use: Allowed
-
+  Tag_DIV_use: Not allowed
index f69f1e7..b39634f 100644 (file)
@@ -4,3 +4,4 @@ File Attributes
   Tag_CPU_arch: v7
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Not allowed
index ac7679c..4f9c905 100644 (file)
@@ -5,3 +5,4 @@ File Attributes
   Tag_CPU_arch: v6K
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
index 851b2af..5755803 100644 (file)
@@ -11,4 +11,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
-
+  Tag_DIV_use: Not allowed
index 4914196..d950b3e 100644 (file)
@@ -11,4 +11,4 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
-
+  Tag_DIV_use: Not allowed
index 1d08bff..c210a06 100644 (file)
@@ -11,5 +11,5 @@ Attribute Section: aeabi
 File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
+  Tag_DIV_use: Not allowed
   Tag_unknown_82: 1 \(0x1\)
-
index 8625735..99fc8e4 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3-D16
+  Tag_DIV_use: Not allowed
index d7a15d7..42bfe99 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3-D16
+  Tag_DIV_use: Not allowed
index 6444bd0..3161e11 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3
+  Tag_DIV_use: Not allowed
index 1d36983..9c6367f 100644 (file)
@@ -11,3 +11,4 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3
+  Tag_DIV_use: Not allowed
index ee89384..9853879 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv4-D16
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
index d06bd27..24df972 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv4-D16
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
index c18d672..469fc9b 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv4
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
index 327e0c3..c84e508 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv4
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
index cd55a86..dc0c6ee 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv4
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
index 505c31b..5e1d23a 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv4
   Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Not allowed
diff --git a/ld/testsuite/ld-arm/attr-merge-vfp-6.d b/ld/testsuite/ld-arm/attr-merge-vfp-6.d
new file mode 100644 (file)
index 0000000..ca89181
--- /dev/null
@@ -0,0 +1,15 @@
+#source: attr-merge-vfp-3.s
+#source: attr-merge-vfpv3xd.s
+#as:
+#ld: -r
+#readelf: -A
+# This test is only valid on ELF based ports.
+# not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_FP_arch: VFPv3
+  Tag_ABI_HardFP_use: SP and DP
+  Tag_DIV_use: Not allowed
diff --git a/ld/testsuite/ld-arm/attr-merge-vfp-6r.d b/ld/testsuite/ld-arm/attr-merge-vfp-6r.d
new file mode 100644 (file)
index 0000000..f533632
--- /dev/null
@@ -0,0 +1,15 @@
+#source: attr-merge-vfpv3xd.s
+#source: attr-merge-vfp-3.s
+#as:
+#ld: -r
+#readelf: -A
+# This test is only valid on ELF based ports.
+# not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-1
+  Tag_FP_arch: VFPv3
+  Tag_ABI_HardFP_use: SP and DP
+  Tag_DIV_use: Not allowed
diff --git a/ld/testsuite/ld-arm/attr-merge-vfpv3xd.s b/ld/testsuite/ld-arm/attr-merge-vfpv3xd.s
new file mode 100644 (file)
index 0000000..295ca17
--- /dev/null
@@ -0,0 +1,2 @@
+.fpu vfpv3xd
+
index 8a01f2d..88e5d25 100644 (file)
@@ -19,3 +19,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index 4242822..73df821 100644 (file)
@@ -19,3 +19,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index f393516..f55bf52 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index f662120..500b6a9 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index 16cc469..c1d4efd 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index 41413b9..cd11980 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index c0b1248..b60e458 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index b81fb15..96738b1 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index e9a1e94..22539de 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index bf75660..c0e67dc 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index 0c9b33e..e7f2566 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index 54f0c54..efeafcc 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index 46be48c..39cb58a 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index cc72d3e..b989f35 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index 35eb756..988dd6e 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index c0fba85..acda7e7 100644 (file)
@@ -20,3 +20,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index 578333b..f07930e 100644 (file)
@@ -12,3 +12,4 @@ File Attributes
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
   Tag_ABI_optimization_goals: Aggressive Debug
+  Tag_DIV_use: Not allowed
index abc36cb..feea135 100644 (file)
@@ -1,3 +1,9 @@
+2010-05-11  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
+
+       * arm-dis.c (thumb_opcodes): Update ldmia entry to use new %W
+       format.
+       (print_insn_thumb16): Add support for new %W format.
+
 2010-05-07  Tristan Gingold  <gingold@adacore.com>
 
        * Makefile.in: Regenerate with automake 1.11.1.
index 1d53128..c5b00da 100644 (file)
@@ -1161,6 +1161,7 @@ static const struct opcode32 arm_opcodes[] =
    %x                  print warning if conditional an not at end of IT block"
    %X                  print "\t; unpredictable <IT:code>" if conditional
    %I                  print IT instruction suffix and operands
+   %W                  print Thumb Writeback indicator for LDMIA
    %<bitfield>r                print bitfield as an ARM register
    %<bitfield>d                print bitfield as a decimal
    %<bitfield>H         print (bitfield * 2) as a decimal
@@ -1274,7 +1275,7 @@ static const struct opcode16 thumb_opcodes[] =
   {ARM_EXT_V4T, 0xA800, 0xF800, "add%c\t%8-10r, sp, #%0-7W"},
   /* format 15 */
   {ARM_EXT_V4T, 0xC000, 0xF800, "stmia%c\t%8-10r!, %M"},
-  {ARM_EXT_V4T, 0xC800, 0xF800, "ldmia%c\t%8-10r!, %M"},
+  {ARM_EXT_V4T, 0xC800, 0xF800, "ldmia%c\t%8-10r%W, %M"},
   /* format 17 */
   {ARM_EXT_V4T, 0xDF00, 0xFF00, "svc%c\t%0-7d"},
   /* format 16 */
@@ -3438,6 +3439,14 @@ print_insn_thumb16 (bfd_vma pc, struct disassemble_info *info, long given)
                }
                break;
 
+             case 'W':
+               /* Print writeback indicator for a LDMIA.  We are doing a
+                  writeback if the base register is not in the register
+                  mask.  */
+               if ((given & (1 << ((given & 0x0700) >> 8))) == 0)
+                 func (stream, "!");
+               break;
+
              case 'b':
                /* Print ARM V6T2 CZB address: pc+4+6 bits.  */
                {