aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorMatthew Gretton-Dann <matthew.gretton-dann@arm.com>2012-03-16 14:02:33 +0000
committerMatthew Gretton-Dann <matthew.gretton-dann@arm.com>2012-03-16 14:02:33 +0000
commit692392805ba027a851371ea6e8812a27b22d30d5 (patch)
treea5c655c2142011064de04ff6476214266c879631 /gas/config
parentd668828207c26bba844378d72a56c5a7b6373bac (diff)
downloadgdb-692392805ba027a851371ea6e8812a27b22d30d5.zip
gdb-692392805ba027a851371ea6e8812a27b22d30d5.tar.gz
gdb-692392805ba027a851371ea6e8812a27b22d30d5.tar.bz2
* gas/config/tc-arm.c (aeabi_set_public_attributes): Correct
handling of Tag_DIV_use. * gas/testsuite/gas/testsuite/gas/arm/any-idiv.d: New testcase. * gas/testsuite/gas/testsuite/gas/arm/any-idiv.s: Likewise. * gas/testsuite/gas/arm/attr-any-armv4t.d: Update expected output. * gas/testsuite/gas/arm/attr-any-thumbv6.d: Likewise. * gas/testsuite/gas/arm/attr-cpu-directive.d: Likewise. * gas/testsuite/gas/arm/attr-default.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv1.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv2.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv2a.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv2s.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv3.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv3m.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv4.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv4t.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv4txm.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv4xm.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv5.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv5t.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv5te.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv5tej.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv5texp.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv5txm.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6-m+os.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6-m.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6j.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6k+sec.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6k.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6kt2.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6s-m.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6t2.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6z.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6zk.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6zkt2.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv6zt2.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv7-a+mp.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv7-a+sec.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv7-a.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv7.d: Likewise. * gas/testsuite/gas/arm/attr-march-armv7a.d: Likewise. * gas/testsuite/gas/arm/attr-march-iwmmxt.d: Likewise. * gas/testsuite/gas/arm/attr-march-iwmmxt2.d: Likewise. * gas/testsuite/gas/arm/attr-march-xscale.d: Likewise. * gas/testsuite/gas/arm/attr-mcpu.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-arm1020e.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-arm1020t.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-arm1136jf-s.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-arm1136jfs.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-arm7500fe.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-fpa.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-fpa10.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-fpa11.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-fpe.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-fpe2.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-fpe3.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-maverick.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-neon-fp16.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-neon.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-softfpa.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-softvfp+vfp.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-softvfp.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfp.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfp10-r0.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfp10.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfp3.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfp9.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfpv2.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfpv3.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfpv4-d16.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfpv4.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-vfpxd.d: Likewise. * gas/testsuite/gas/arm/attr-order.d: Likewise. * gas/testsuite/gas/arm/attr-override-cpu-directive.d: Likewise. * gas/testsuite/gas/arm/attr-override-mcpu.d: Likewise. * gas/testsuite/gas/arm/eabi_attr_1.d: Likewise. * gas/testsuite/gas/arm/mov-highregs-any.d: Likewise. * gas/testsuite/gas/arm/mov-lowregs-any.d: Likewise. * gas/testsuite/gas/arm/pr12198-1.d: Likewise. * gas/testsuite/gas/arm/pr12198-2.d: Likewise. * ld/testsuite/ld-arm/arm-elf.exp: Add new testcases. * ld/testsuite/ld-arm/attr-merge-2.attr: Update ouput. * ld/testsuite/ld-arm/attr-merge-2a.s: Remove Tag_DIV_use test. * ld/testsuite/ld-arm/attr-merge-2b.s: Likewise. * ld/testsuite/ld-arm/attr-merge-3.attr: Updated expected output. * ld/testsuite/ld-arm/attr-merge-4.attr: Likewise. * ld/testsuite/ld-arm/attr-merge-5.attr: Likewise. * ld/testsuite/ld-arm/attr-merge-6.attr: Likewise. * ld/testsuite/ld-arm/attr-merge-7.attr: Likewise. * ld/testsuite/ld-arm/attr-merge-arch-1.attr: Likewise. * ld/testsuite/ld-arm/attr-merge-arch-2.attr: Likewise. * ld/testsuite/ld-arm/attr-merge-unknown-2.d: Likewise. * ld/testsuite/ld-arm/attr-merge-unknown-2r.d: Likewise. * ld/testsuite/ld-arm/attr-merge-unknown-3.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-1.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-1r.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-2.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-2r.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-3.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-3r.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-4.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-4r.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-5.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-5r.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-6.d: Likewise. * ld/testsuite/ld-arm/attr-merge-vfp-6r.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-00-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-00.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-02-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-02.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-04-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-04.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-20-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-20.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-22-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-22.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-24-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-40-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-40.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-42-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-44-nowarn.d: Likewise. * ld/testsuite/ld-arm/attr-merge-wchar-44.d: Likewise. * ld/testsuite/ld-arm/attr-merge.attr: Likewise. * ld/testsuite/ld-arm/attr-merge-div-0.s: New testcase. * ld/testsuite/ld-arm/attr-merge-div-00.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-01-m3.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-01.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-02.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-1.s: Likewise. * ld/testsuite/ld-arm/attr-merge-div-10-m3.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-10.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-11.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-12.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-120.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-2.s: Likewise. * ld/testsuite/ld-arm/attr-merge-div-20.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-21.d: Likewise. * ld/testsuite/ld-arm/attr-merge-div-22.d: Likewise.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-arm.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index b2e0d86..8b0f6da 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -23698,6 +23698,7 @@ static void
aeabi_set_public_attributes (void)
{
int arch;
+ char profile;
int virt_sec = 0;
arm_feature_set flags;
arm_feature_set tmp;
@@ -23775,11 +23776,16 @@ aeabi_set_public_attributes (void)
/* Tag_CPU_arch_profile. */
if (ARM_CPU_HAS_FEATURE (flags, arm_ext_v7a))
- aeabi_set_attribute_int (Tag_CPU_arch_profile, 'A');
+ profile = 'A';
else if (ARM_CPU_HAS_FEATURE (flags, arm_ext_v7r))
- aeabi_set_attribute_int (Tag_CPU_arch_profile, 'R');
+ profile = 'R';
else if (ARM_CPU_HAS_FEATURE (flags, arm_ext_m))
- aeabi_set_attribute_int (Tag_CPU_arch_profile, 'M');
+ profile = 'M';
+ else
+ profile = '\0';
+
+ if (profile != '\0')
+ aeabi_set_attribute_int (Tag_CPU_arch_profile, profile);
/* Tag_ARM_ISA_use. */
if (ARM_CPU_HAS_FEATURE (flags, arm_ext_v1)
@@ -23828,13 +23834,19 @@ aeabi_set_public_attributes (void)
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_adiv))
+ /* Tag_DIV_use.
+
+ We set Tag_DIV_use to two when integer divide instructions have been used
+ in ARM state, or when Thumb integer divide instructions have been used,
+ but we have no architecture profile set, nor have we any ARM instructions.
+
+ For new architectures we will have to check these tests. */
+ gas_assert (arch <= TAG_CPU_ARCH_V7E_M);
+ if (ARM_CPU_HAS_FEATURE (flags, arm_ext_adiv)
+ || (profile == '\0'
+ && ARM_CPU_HAS_FEATURE (flags, arm_ext_div)
+ && !ARM_CPU_HAS_FEATURE (arm_arch_used, arm_arch_any)))
aeabi_set_attribute_int (Tag_DIV_use, 2);
- else if (ARM_CPU_HAS_FEATURE (flags, arm_ext_div))
- aeabi_set_attribute_int (Tag_DIV_use, 0);
- else
- aeabi_set_attribute_int (Tag_DIV_use, 1);
/* Tag_MP_extension_use. */
if (ARM_CPU_HAS_FEATURE (flags, arm_ext_mp))