forked from Imagelibrary/binutils-gdb
* 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.
This commit is contained in:
@@ -10003,27 +10003,26 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
|
||||
case Tag_ABI_FP_exceptions:
|
||||
case Tag_ABI_FP_user_exceptions:
|
||||
case Tag_ABI_FP_number_model:
|
||||
case Tag_VFP_HP_extension:
|
||||
case Tag_FP_HP_extension:
|
||||
case Tag_CPU_unaligned_access:
|
||||
case Tag_T2EE_use:
|
||||
case Tag_Virtualization_use:
|
||||
case Tag_MPextension_use:
|
||||
/* Use the largest value specified. */
|
||||
if (in_attr[i].i > out_attr[i].i)
|
||||
out_attr[i].i = in_attr[i].i;
|
||||
break;
|
||||
|
||||
case Tag_ABI_align8_preserved:
|
||||
case Tag_ABI_align_preserved:
|
||||
case Tag_ABI_PCS_RO_data:
|
||||
/* Use the smallest value specified. */
|
||||
if (in_attr[i].i < out_attr[i].i)
|
||||
out_attr[i].i = in_attr[i].i;
|
||||
break;
|
||||
|
||||
case Tag_ABI_align8_needed:
|
||||
case Tag_ABI_align_needed:
|
||||
if ((in_attr[i].i > 0 || out_attr[i].i > 0)
|
||||
&& (in_attr[Tag_ABI_align8_preserved].i == 0
|
||||
|| out_attr[Tag_ABI_align8_preserved].i == 0))
|
||||
&& (in_attr[Tag_ABI_align_preserved].i == 0
|
||||
|| out_attr[Tag_ABI_align_preserved].i == 0))
|
||||
{
|
||||
/* This error message should be enabled once all non-conformant
|
||||
binaries in the toolchain have had the attributes set
|
||||
@@ -10044,6 +10043,27 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
|
||||
out_attr[i].i = in_attr[i].i;
|
||||
break;
|
||||
|
||||
case Tag_Virtualization_use:
|
||||
/* The virtualization tag effectively stores two bits of
|
||||
information: the intended use of TrustZone (in bit 0), and the
|
||||
intended use of Virtualization (in bit 1). */
|
||||
if (out_attr[i].i == 0)
|
||||
out_attr[i].i = in_attr[i].i;
|
||||
else if (in_attr[i].i != 0
|
||||
&& in_attr[i].i != out_attr[i].i)
|
||||
{
|
||||
if (in_attr[i].i <= 3 && out_attr[i].i <= 3)
|
||||
out_attr[i].i = 3;
|
||||
else
|
||||
{
|
||||
_bfd_error_handler
|
||||
(_("error: %B: unable to merge virtualization attributes "
|
||||
"with %B"),
|
||||
obfd, ibfd);
|
||||
result = FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case Tag_CPU_arch_profile:
|
||||
if (out_attr[i].i != in_attr[i].i)
|
||||
@@ -10071,7 +10091,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Tag_VFP_arch:
|
||||
case Tag_FP_arch:
|
||||
{
|
||||
static const struct
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user