+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.
/* 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
}
/* 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. */
&& 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. */
+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.
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[] =
--- /dev/null
+# 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
--- /dev/null
+.cpu cortex-m7
+.fpu fpv5-d16
+.eabi_attribute 27, 0
--- /dev/null
+# 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
--- /dev/null
+.cpu cortex-m7
+.fpu fpv5-sp-d16
+.eabi_attribute 27, 1
--- /dev/null
+# 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
--- /dev/null
+.cpu cortex-m7
+.fpu fpv5-d16
+.eabi_attribute 27, 2
--- /dev/null
+# 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
--- /dev/null
+.cpu cortex-m7
+.fpu fpv5-d16
+.eabi_attribute 27, 3
+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.
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"
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
--- /dev/null
+#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
--- /dev/null
+ .syntax unified
+ .cpu cortex-m4
+ .fpu fpv4-sp-d16
+ .thumb
+ .text
+ .align 2
+ .global foo
+ .thumb
+ .thumb_func
+ .type foo, %function
+foo:
+ bx lr
--- /dev/null
+ .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
--- /dev/null
+#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
--- /dev/null
+ .syntax unified
+ .cpu cortex-m4
+ .fpu fpv4-sp-d16
+ .thumb
+ .text
+ .align 2
+ .global foo
+ .thumb
+ .thumb_func
+ .type foo, %function
+foo:
+ bx lr
--- /dev/null
+ .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
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
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
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: FP for ARMv8
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: FP for ARMv8
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: FP for ARMv8
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: FP for ARMv8
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: FP for ARMv8
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: FP for ARMv8
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: VFPv3
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: VFPv3
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: FP for ARMv8
- Tag_ABI_HardFP_use: SP and DP
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: FP for ARMv8
- Tag_ABI_HardFP_use: SP and DP
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
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