From 75375b3e00c282a6461d1a3df83582f624b18377 Mon Sep 17 00:00:00 2001 From: Matthew Gretton-Dann Date: Thu, 15 Apr 2010 10:56:39 +0000 Subject: * ld/testsuite/ld-arm/attr-merge-2.attr: Update for changes in attribute output. * ld/testsuite/ld-arm/attr-merge-3.attr: 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: Likeiwse. * 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-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. * binutils/readelf.c (arm_attr_tag_FP_arch): Rename from arm_attr_tag_VFP_arch. (arm_attr_tag_ABI_align8_needed): Remove. (arm_attr_tag_ABI_align8_preserved): Remove. (arm_attr_tag_ABI_HardFP_use): Update text strings. (arm_attr_public_tags): Add strings for ABI v2.08 attribute tags. (display_arm_attribute): Add decoding of ABI v2.08 attributes. * include/elf/arm.h (Tag_FP_arch, Tag_ABI_align_needed, Tag_ABI_align_preserved, Tag_FP_HP_extension): Add new ABI attribute tags. * gas/config/tc-arm.c (arm_convert_symbolic_attribute): Add support for new tag names in v2.08 of ARM ABI. * gas/doc/c-arm.texi: Document new tag names in ABI. * gas/testsuite/gas/arm/attr-mcpu.d: Update for new attribute tag names. * 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-neon-fp16.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-neon.d: Likewise. * gas/testsuite/gas/arm/attr-mfpu-softvfp+vfp.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-names.d: Add test to make sure all attribute names are recognised. * gas/testsuite/gas/arm/attr-names.s: Likewise. --- binutils/ChangeLog | 9 +++++++++ binutils/readelf.c | 56 ++++++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 55 insertions(+), 10 deletions(-) (limited to 'binutils') diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 72c4194..96c7724 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,12 @@ +2010-04-15 Matthew Gretton-Dann + + * readelf.c (arm_attr_tag_FP_arch): Rename from arm_attr_tag_VFP_arch. + (arm_attr_tag_ABI_align8_needed): Remove. + (arm_attr_tag_ABI_align8_preserved): Remove. + (arm_attr_tag_ABI_HardFP_use): Update text strings. + (arm_attr_public_tags): Add strings for ABI v2.08 attribute tags. + (display_arm_attribute): Add decoding of ABI v2.08 attributes. + 2010-04-13 Nick Clifton PR binutils/11419 diff --git a/binutils/readelf.c b/binutils/readelf.c index 4435eff..f086727 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -9801,7 +9801,7 @@ static const char * arm_attr_tag_CPU_arch[] = static const char * arm_attr_tag_ARM_ISA_use[] = {"No", "Yes"}; static const char * arm_attr_tag_THUMB_ISA_use[] = {"No", "Thumb-1", "Thumb-2"}; -static const char * arm_attr_tag_VFP_arch[] = +static const char * arm_attr_tag_FP_arch[] = {"No", "VFPv1", "VFPv2", "VFPv3", "VFPv3-D16", "VFPv4", "VFPv4-D16"}; static const char * arm_attr_tag_WMMX_arch[] = {"No", "WMMXv1", "WMMXv2"}; static const char * arm_attr_tag_Advanced_SIMD_arch[] = @@ -9826,13 +9826,10 @@ static const char * arm_attr_tag_ABI_FP_exceptions[] = {"Unused", "Needed"}; static const char * arm_attr_tag_ABI_FP_user_exceptions[] = {"Unused", "Needed"}; static const char * arm_attr_tag_ABI_FP_number_model[] = {"Unused", "Finite", "RTABI", "IEEE 754"}; -static const char * arm_attr_tag_ABI_align8_needed[] = {"No", "Yes", "4-byte"}; -static const char * arm_attr_tag_ABI_align8_preserved[] = - {"No", "Yes, except leaf SP", "Yes"}; static const char * arm_attr_tag_ABI_enum_size[] = {"Unused", "small", "int", "forced to int"}; static const char * arm_attr_tag_ABI_HardFP_use[] = - {"As Tag_VFP_arch", "SP only", "DP only", "SP and DP"}; + {"As Tag_FP_arch", "SP only", "DP only", "SP and DP"}; static const char * arm_attr_tag_ABI_VFP_args[] = {"AAPCS", "VFP registers", "custom"}; static const char * arm_attr_tag_ABI_WMMX_args[] = @@ -9844,7 +9841,7 @@ static const char * arm_attr_tag_ABI_FP_optimization_goals[] = {"None", "Prefer Speed", "Aggressive Speed", "Prefer Size", "Aggressive Size", "Prefer Accuracy", "Aggressive Accuracy"}; static const char * arm_attr_tag_CPU_unaligned_access[] = {"None", "v6"}; -static const char * arm_attr_tag_VFP_HP_extension[] = +static const char * arm_attr_tag_FP_HP_extension[] = {"Not Allowed", "Allowed"}; static const char * arm_attr_tag_ABI_FP_16bit_format[] = {"None", "IEEE 754", "Alternative Format"}; @@ -9870,7 +9867,7 @@ static arm_attr_public_tag arm_attr_public_tags[] = {7, "CPU_arch_profile", 0, NULL}, LOOKUP(8, ARM_ISA_use), LOOKUP(9, THUMB_ISA_use), - LOOKUP(10, VFP_arch), + LOOKUP(10, FP_arch), LOOKUP(11, WMMX_arch), LOOKUP(12, Advanced_SIMD_arch), LOOKUP(13, PCS_config), @@ -9884,8 +9881,8 @@ static arm_attr_public_tag arm_attr_public_tags[] = LOOKUP(21, ABI_FP_exceptions), LOOKUP(22, ABI_FP_user_exceptions), LOOKUP(23, ABI_FP_number_model), - LOOKUP(24, ABI_align8_needed), - LOOKUP(25, ABI_align8_preserved), + {24, "ABI_align_needed", 0, NULL}, + {25, "ABI_align_preserved", 0, NULL}, LOOKUP(26, ABI_enum_size), LOOKUP(27, ABI_HardFP_use), LOOKUP(28, ABI_VFP_args), @@ -9894,7 +9891,7 @@ static arm_attr_public_tag arm_attr_public_tags[] = LOOKUP(31, ABI_FP_optimization_goals), {32, "compatibility", 0, NULL}, LOOKUP(34, CPU_unaligned_access), - LOOKUP(36, VFP_HP_extension), + LOOKUP(36, FP_HP_extension), LOOKUP(38, ABI_FP_16bit_format), LOOKUP(42, MPextension_use), LOOKUP(44, DIV_use), @@ -9946,10 +9943,49 @@ display_arm_attribute (unsigned char * p) case 'A': printf ("Application\n"); break; case 'R': printf ("Realtime\n"); break; case 'M': printf ("Microcontroller\n"); break; + case 'S': printf ("Application or Realtime\n"); break; default: printf ("??? (%d)\n", val); break; } break; + case 24: /* Tag_align_needed. */ + val = read_uleb128 (p, &len); + p += len; + switch (val) + { + case 0: printf ("None\n"); break; + case 1: printf ("8-byte\n"); break; + case 2: printf ("4-byte\n"); break; + case 3: printf ("??? 3\n"); break; + default: + if (val <= 12) + printf ("8-byte and up to %d-byte extended\n", + 1 << val); + else + printf ("??? (%d)\n", val); + break; + } + break; + + case 25: /* Tag_align_preserved. */ + val = read_uleb128 (p, &len); + p += len; + switch (val) + { + case 0: printf ("None\n"); break; + case 1: printf ("8-byte, except leaf SP\n"); break; + case 2: printf ("8-byte\n"); break; + case 3: printf ("??? 3\n"); break; + default: + if (val <= 12) + printf ("8-byte and up to %d-byte extended\n", + 1 << val); + else + printf ("??? (%d)\n", val); + break; + } + break; + case 32: /* Tag_compatibility. */ val = read_uleb128 (p, &len); p += len; -- cgit v1.1