[ARM]Update for Tag_ABI_HardFP_use per EABI doc
authorTerry Guo <terry.guo@arm.com>
Thu, 26 Feb 2015 06:11:41 +0000 (14:11 +0800)
committerTerry Guo <terry.guo@arm.com>
Thu, 26 Feb 2015 06:11:41 +0000 (14:11 +0800)
Updated how we merge and display this attribute per the latest
EABI documents.

bfd/ChangeLog
* elf32-arm.c (elf32_arm_merge_eabi_attributes): Update how we
merge Tag_ABI_HardFP_use.

binutils/ChangeLog
* readelf.c (arm_attr_tag_ABI_HardFP_use): Update how we
display it.

ld/testsuite/ChangeLog
* ld-arm/attr-merge-3.attr: Remove Tag_ABI_HardFP_use.
* ld-arm/attr-merge-vfp-10.d: Likewise.
* ld-arm/attr-merge-vfp-10r.d: Likewise.
* ld-arm/attr-merge-vfp-12.d: Likewise.
* ld-arm/attr-merge-vfp-12r.d: Likewise.
* ld-arm/attr-merge-vfp-13.d: Likewise.
* ld-arm/attr-merge-vfp-13r.d: Likewise.
* ld-arm/attr-merge-vfp-14.d: Likewise.
* ld-arm/attr-merge-vfp-14r.d: Likewise.
* ld-arm/attr-merge-vfp-6.d: Likewise.
* ld-arm/attr-merge-vfp-6r.d: Likewise.
* ld-arm/attr-merge-vfp-7.d: Likewise.
* ld-arm/attr-merge-vfp-7r.d: Likewise.
* ld-arm/attr-merge-vfp-8.d: Likewise.
* ld-arm/attr-merge-vfp-8r.d: Likewise.

35 files changed:
bfd/ChangeLog
bfd/elf32-arm.c
binutils/ChangeLog
binutils/readelf.c
gas/testsuite/gas/arm/attr-abi-hardfp-use-0.d [new file with mode: 0644]
gas/testsuite/gas/arm/attr-abi-hardfp-use-0.s [new file with mode: 0644]
gas/testsuite/gas/arm/attr-abi-hardfp-use-1.d [new file with mode: 0644]
gas/testsuite/gas/arm/attr-abi-hardfp-use-1.s [new file with mode: 0644]
gas/testsuite/gas/arm/attr-abi-hardfp-use-2.d [new file with mode: 0644]
gas/testsuite/gas/arm/attr-abi-hardfp-use-2.s [new file with mode: 0644]
gas/testsuite/gas/arm/attr-abi-hardfp-use-3.d [new file with mode: 0644]
gas/testsuite/gas/arm/attr-abi-hardfp-use-3.s [new file with mode: 0644]
ld/testsuite/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/attr-merge-3.attr
ld/testsuite/ld-arm/attr-merge-hardfp-use-1.d [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-hardfp-use-1a.s [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-hardfp-use-1b.s [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-hardfp-use-2.d [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-hardfp-use-2a.s [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-hardfp-use-2b.s [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-vfp-10.d
ld/testsuite/ld-arm/attr-merge-vfp-10r.d
ld/testsuite/ld-arm/attr-merge-vfp-12.d
ld/testsuite/ld-arm/attr-merge-vfp-12r.d
ld/testsuite/ld-arm/attr-merge-vfp-13.d
ld/testsuite/ld-arm/attr-merge-vfp-13r.d
ld/testsuite/ld-arm/attr-merge-vfp-14.d
ld/testsuite/ld-arm/attr-merge-vfp-14r.d
ld/testsuite/ld-arm/attr-merge-vfp-6.d
ld/testsuite/ld-arm/attr-merge-vfp-6r.d
ld/testsuite/ld-arm/attr-merge-vfp-7.d
ld/testsuite/ld-arm/attr-merge-vfp-7r.d
ld/testsuite/ld-arm/attr-merge-vfp-8.d
ld/testsuite/ld-arm/attr-merge-vfp-8r.d

index bddd764..01b2d68 100644 (file)
@@ -1,3 +1,8 @@
+2015-02-26  Terry Guo  <terry.guo@arm.com>
+
+       * elf32-arm.c (elf32_arm_merge_eabi_attributes): Update how we
+       merge Tag_ABI_HardFP_use.
+
 2015-02-26  Alan Modra  <amodra@gmail.com>
 
        * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Heed -z nocopyreloc.
index 5801fe9..c9e314e 100644 (file)
@@ -11972,7 +11972,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
              /* 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.  */
+                Tag_FP_arch is zero.  */
 
 #define VFP_VERSION_COUNT 9
              static const struct
@@ -12014,7 +12014,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
                }
 
              /* Both the input and the output have nonzero Tag_FP_arch.
-                So Tag_ABI_HardFP_use is (SP & DP) when it's zero.  */
+                So Tag_ABI_HardFP_use is implied by Tag_FP_arch when it's zero.  */
 
              /* If both the input and the output have zero Tag_ABI_HardFP_use,
                 do nothing.  */
@@ -12022,10 +12022,10 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
                  && 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).  */
+                the combination of them is 0 (implied by Tag_FP_arch).  */
              else if (in_attr[Tag_ABI_HardFP_use].i
                       != out_attr[Tag_ABI_HardFP_use].i)
-               out_attr[Tag_ABI_HardFP_use].i = 3;
+               out_attr[Tag_ABI_HardFP_use].i = 0;
 
              /* Now we can handle Tag_FP_arch.  */
 
index 2ba2ad4..2d70760 100644 (file)
@@ -1,3 +1,8 @@
+2015-02-26  Terry Guo  <terry.guo@arm.com>
+
+       * readelf.c (arm_attr_tag_ABI_HardFP_use): Update how we
+       display it.
+
 2015-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * objcopy.c (init_section_add): New function.
index 559ab4b..da616b3 100644 (file)
@@ -12376,7 +12376,7 @@ static const char * arm_attr_tag_ABI_FP_number_model[] =
 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_FP_arch", "SP only", "DP only", "SP and DP"};
+  {"As Tag_FP_arch", "SP only", "Reserved", "Deprecated"};
 static const char * arm_attr_tag_ABI_VFP_args[] =
   {"AAPCS", "VFP registers", "custom", "compatible"};
 static const char * arm_attr_tag_ABI_WMMX_args[] =
diff --git a/gas/testsuite/gas/arm/attr-abi-hardfp-use-0.d b/gas/testsuite/gas/arm/attr-abi-hardfp-use-0.d
new file mode 100644 (file)
index 0000000..bf7ec97
--- /dev/null
@@ -0,0 +1,14 @@
+# name: EABI attribute Tag_ABI_HardFP_use with value 0
+# source: attr-abi-hardfp-use-0.s
+# as:
+# readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi* *-*-nacl*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M7"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
diff --git a/gas/testsuite/gas/arm/attr-abi-hardfp-use-0.s b/gas/testsuite/gas/arm/attr-abi-hardfp-use-0.s
new file mode 100644 (file)
index 0000000..649d0fe
--- /dev/null
@@ -0,0 +1,3 @@
+.cpu cortex-m7
+.fpu fpv5-d16
+.eabi_attribute 27, 0
diff --git a/gas/testsuite/gas/arm/attr-abi-hardfp-use-1.d b/gas/testsuite/gas/arm/attr-abi-hardfp-use-1.d
new file mode 100644 (file)
index 0000000..712bd6c
--- /dev/null
@@ -0,0 +1,15 @@
+# name: EABI attribute Tag_ABI_HardFP_use with value 1
+# source: attr-abi-hardfp-use-1.s
+# as:
+# readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi* *-*-nacl*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M7"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_ABI_HardFP_use: SP only
diff --git a/gas/testsuite/gas/arm/attr-abi-hardfp-use-1.s b/gas/testsuite/gas/arm/attr-abi-hardfp-use-1.s
new file mode 100644 (file)
index 0000000..adc7049
--- /dev/null
@@ -0,0 +1,3 @@
+.cpu cortex-m7
+.fpu fpv5-sp-d16
+.eabi_attribute 27, 1
diff --git a/gas/testsuite/gas/arm/attr-abi-hardfp-use-2.d b/gas/testsuite/gas/arm/attr-abi-hardfp-use-2.d
new file mode 100644 (file)
index 0000000..a06c8be
--- /dev/null
@@ -0,0 +1,15 @@
+# name: EABI attribute Tag_ABI_HardFP_use with value 2
+# source: attr-abi-hardfp-use-2.s
+# as:
+# readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi* *-*-nacl*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M7"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_ABI_HardFP_use: Reserved
diff --git a/gas/testsuite/gas/arm/attr-abi-hardfp-use-2.s b/gas/testsuite/gas/arm/attr-abi-hardfp-use-2.s
new file mode 100644 (file)
index 0000000..6723514
--- /dev/null
@@ -0,0 +1,3 @@
+.cpu cortex-m7
+.fpu fpv5-d16
+.eabi_attribute 27, 2
diff --git a/gas/testsuite/gas/arm/attr-abi-hardfp-use-3.d b/gas/testsuite/gas/arm/attr-abi-hardfp-use-3.d
new file mode 100644 (file)
index 0000000..3e42741
--- /dev/null
@@ -0,0 +1,15 @@
+# name: EABI attribute Tag_ABI_HardFP_use with value 3
+# source: attr-abi-hardfp-use-3.s
+# as:
+# readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi* *-*-nacl*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M7"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_ABI_HardFP_use: Deprecated
diff --git a/gas/testsuite/gas/arm/attr-abi-hardfp-use-3.s b/gas/testsuite/gas/arm/attr-abi-hardfp-use-3.s
new file mode 100644 (file)
index 0000000..55ed6be
--- /dev/null
@@ -0,0 +1,3 @@
+.cpu cortex-m7
+.fpu fpv5-d16
+.eabi_attribute 27, 3
index 3d7fcba..3235165 100644 (file)
@@ -1,3 +1,21 @@
+2015-02-26  Terry Guo  <terry.guo@arm.com>
+
+       * ld-arm/attr-merge-3.attr: Remove Tag_ABI_HardFP_use.
+       * ld-arm/attr-merge-vfp-10.d: Likewise.
+       * ld-arm/attr-merge-vfp-10r.d: Likewise.
+       * ld-arm/attr-merge-vfp-12.d: Likewise.
+       * ld-arm/attr-merge-vfp-12r.d: Likewise.
+       * ld-arm/attr-merge-vfp-13.d: Likewise.
+       * ld-arm/attr-merge-vfp-13r.d: Likewise.
+       * ld-arm/attr-merge-vfp-14.d: Likewise.
+       * ld-arm/attr-merge-vfp-14r.d: Likewise.
+       * ld-arm/attr-merge-vfp-6.d: Likewise.
+       * ld-arm/attr-merge-vfp-6r.d: Likewise.
+       * ld-arm/attr-merge-vfp-7.d: Likewise.
+       * ld-arm/attr-merge-vfp-7r.d: Likewise.
+       * ld-arm/attr-merge-vfp-8.d: Likewise.
+       * ld-arm/attr-merge-vfp-8r.d: Likewise.
+
 2015-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * ld-avr/avr-prop-1.d: New file.
index 9d946e0..28b41ca 100644 (file)
@@ -896,6 +896,8 @@ run_dump_test "attr-merge-vfp-14r"
 run_dump_test "attr-merge-incompatible"
 run_dump_test "attr-merge-arch-2"
 run_dump_test "attr-merge-nosection-1"
+run_dump_test "attr-merge-hardfp-use-1"
+run_dump_test "attr-merge-hardfp-use-2"
 run_dump_test "unresolved-1"
 if { ![istarget "arm*-*-nacl*"] } {
     run_dump_test "unresolved-1-dyn"
index 8d7d1c3..0a3939c 100644 (file)
@@ -22,7 +22,6 @@ File Attributes
   Tag_ABI_align_needed: 8-byte
   Tag_ABI_align_preserved: 8-byte, except leaf SP
   Tag_ABI_enum_size: small
-  Tag_ABI_HardFP_use: SP and DP
   Tag_ABI_VFP_args: VFP registers
   Tag_CPU_unaligned_access: v6
   Tag_FP_HP_extension: Allowed
diff --git a/ld/testsuite/ld-arm/attr-merge-hardfp-use-1.d b/ld/testsuite/ld-arm/attr-merge-hardfp-use-1.d
new file mode 100644 (file)
index 0000000..136ff41
--- /dev/null
@@ -0,0 +1,15 @@
+#source: attr-merge-hardfp-use-1a.s
+#source: attr-merge-hardfp-use-1b.s
+#as:
+#ld: -e main
+#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_CPU_name: "Cortex-M4"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
diff --git a/ld/testsuite/ld-arm/attr-merge-hardfp-use-1a.s b/ld/testsuite/ld-arm/attr-merge-hardfp-use-1a.s
new file mode 100644 (file)
index 0000000..8a52860
--- /dev/null
@@ -0,0 +1,12 @@
+        .syntax unified
+        .cpu cortex-m4
+        .fpu fpv4-sp-d16
+        .thumb
+        .text
+        .align  2
+        .global foo
+        .thumb
+        .thumb_func
+        .type   foo, %function
+foo:
+       bx lr
diff --git a/ld/testsuite/ld-arm/attr-merge-hardfp-use-1b.s b/ld/testsuite/ld-arm/attr-merge-hardfp-use-1b.s
new file mode 100644 (file)
index 0000000..3b3a05d
--- /dev/null
@@ -0,0 +1,16 @@
+       .thumb
+       .syntax unified
+       .cpu cortex-m7
+       .fpu fpv5-d16
+       .eabi_attribute 27, 3
+        .text
+        .align  2
+        .global main
+        .thumb
+        .thumb_func
+        .type   main, %function
+
+
+
+main:
+       bl foo
diff --git a/ld/testsuite/ld-arm/attr-merge-hardfp-use-2.d b/ld/testsuite/ld-arm/attr-merge-hardfp-use-2.d
new file mode 100644 (file)
index 0000000..b7975de
--- /dev/null
@@ -0,0 +1,15 @@
+#source: attr-merge-hardfp-use-2a.s
+#source: attr-merge-hardfp-use-2b.s
+#as:
+#ld: -e main
+#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_CPU_name: "Cortex-M4"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
diff --git a/ld/testsuite/ld-arm/attr-merge-hardfp-use-2a.s b/ld/testsuite/ld-arm/attr-merge-hardfp-use-2a.s
new file mode 100644 (file)
index 0000000..8a52860
--- /dev/null
@@ -0,0 +1,12 @@
+        .syntax unified
+        .cpu cortex-m4
+        .fpu fpv4-sp-d16
+        .thumb
+        .text
+        .align  2
+        .global foo
+        .thumb
+        .thumb_func
+        .type   foo, %function
+foo:
+       bx lr
diff --git a/ld/testsuite/ld-arm/attr-merge-hardfp-use-2b.s b/ld/testsuite/ld-arm/attr-merge-hardfp-use-2b.s
new file mode 100644 (file)
index 0000000..59913a3
--- /dev/null
@@ -0,0 +1,14 @@
+       .thumb
+       .syntax unified
+       .cpu cortex-m7
+       .fpu fpv5-d16
+       .eabi_attribute 27, 2
+        .text
+        .align  2
+        .global main
+        .thumb
+        .thumb_func
+        .type   main, %function
+
+main:
+       bl foo
index f32f119..a7e2fff 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FPv5/FP-D16 for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index 35e0f77..581d1b0 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FPv5/FP-D16 for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index f6dff81..c97b9cd 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FP for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index 1ce719d..139c608 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FP for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index b79f606..4724cf4 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FP for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index 4633d4e..cc192bb 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FP for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index b93ef50..865351a 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FP for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index 2563938..c9e1354 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FP for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index 54d063f..2e37b47 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3
-  Tag_ABI_HardFP_use: SP and DP
index f32d4fc..8c68442 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: VFPv3
-  Tag_ABI_HardFP_use: SP and DP
index 6b1f9c9..760a82f 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FP for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index 6b1f9c9..760a82f 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FP for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index 78b74af..22dee2a 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FPv5/FP-D16 for ARMv8
-  Tag_ABI_HardFP_use: SP and DP
index 1fd5d63..7a21318 100644 (file)
@@ -11,4 +11,3 @@ File Attributes
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-1
   Tag_FP_arch: FPv5/FP-D16 for ARMv8
-  Tag_ABI_HardFP_use: SP and DP