diff options
28 files changed, 259 insertions, 171 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 4e1d209..da0d7a0 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +2016-09-26 Alan Modra <amodra@gmail.com> + + * elf-bfd.h (_bfd_elf_ppc_merge_fp_attributes): Declare. + * elf32-ppc.c (_bfd_elf_ppc_merge_fp_attributes): New function. + (ppc_elf_merge_obj_attributes): Use it. Don't copy first file + attributes, merge them. Don't warn about undefined tag bits, + or copy unknown values to output. + * elf64-ppc.c (ppc64_elf_merge_private_bfd_data): Call + _bfd_elf_ppc_merge_fp_attributes. + 2016-09-23 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> PR ld/20595 diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index c58bd4f..ed2137e 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -2393,6 +2393,8 @@ extern unsigned int _bfd_elf_ppc_at_tprel_transform (unsigned int, unsigned int); /* PowerPC elf_object_p tweak. */ extern bfd_boolean _bfd_elf_ppc_set_arch (bfd *); +/* PowerPC .gnu.attributes handling common to both 32-bit and 64-bit. */ +extern void _bfd_elf_ppc_merge_fp_attributes (bfd *, bfd *); /* Exported interface for writing elf corefile notes. */ extern char *elfcore_write_note diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index e808cb5..dd56a95 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -4653,68 +4653,87 @@ ppc_elf_check_relocs (bfd *abfd, return TRUE; } - -/* Merge object attributes from IBFD into OBFD. Raise an error if - there are conflicting attributes. */ -static bfd_boolean -ppc_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd) +/* Warn for conflicting Tag_GNU_Power_ABI_FP attributes between IBFD + and OBFD, and merge non-conflicting ones. */ +void +_bfd_elf_ppc_merge_fp_attributes (bfd *ibfd, bfd *obfd) { obj_attribute *in_attr, *in_attrs; obj_attribute *out_attr, *out_attrs; - if (!elf_known_obj_attributes_proc (obfd)[0].i) - { - /* This is the first object. Copy the attributes. */ - _bfd_elf_copy_obj_attributes (ibfd, obfd); - - /* Use the Tag_null value to indicate the attributes have been - initialized. */ - elf_known_obj_attributes_proc (obfd)[0].i = 1; - - return TRUE; - } - in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU]; out_attrs = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU]; - /* Check for conflicting Tag_GNU_Power_ABI_FP attributes and merge - non-conflicting ones. */ in_attr = &in_attrs[Tag_GNU_Power_ABI_FP]; out_attr = &out_attrs[Tag_GNU_Power_ABI_FP]; + if (in_attr->i != out_attr->i) { - out_attr->type = 1; - if (out_attr->i == 0) - out_attr->i = in_attr->i; - else if (in_attr->i == 0) + int in_fp = in_attr->i & 3; + int out_fp = out_attr->i & 3; + + if (in_fp == 0) ; - else if (out_attr->i == 1 && in_attr->i == 2) + else if (out_fp == 0) + { + out_attr->type = 1; + out_attr->i ^= in_fp; + } + else if (out_fp != 2 && in_fp == 2) _bfd_error_handler (_("Warning: %B uses hard float, %B uses soft float"), obfd, ibfd); - else if (out_attr->i == 1 && in_attr->i == 3) + else if (out_fp == 2 && in_fp != 2) _bfd_error_handler - (_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"), - obfd, ibfd); - else if (out_attr->i == 3 && in_attr->i == 1) + (_("Warning: %B uses hard float, %B uses soft float"), ibfd, obfd); + else if (out_fp == 1 && in_fp == 3) _bfd_error_handler - (_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"), - ibfd, obfd); - else if (out_attr->i == 3 && in_attr->i == 2) + (_("Warning: %B uses double-precision hard float, " + "%B uses single-precision hard float"), obfd, ibfd); + else if (out_fp == 3 && in_fp == 1) _bfd_error_handler - (_("Warning: %B uses soft float, %B uses single-precision hard float"), - ibfd, obfd); - else if (out_attr->i == 2 && (in_attr->i == 1 || in_attr->i == 3)) + (_("Warning: %B uses double-precision hard float, " + "%B uses single-precision hard float"), ibfd, obfd); + + in_fp = in_attr->i & 0xc; + out_fp = out_attr->i & 0xc; + if (in_fp == 0) + ; + else if (out_fp == 0) + { + out_attr->type = 1; + out_attr->i ^= in_fp; + } + else if (out_fp != 2 * 4 && in_fp == 2 * 4) _bfd_error_handler - (_("Warning: %B uses hard float, %B uses soft float"), ibfd, obfd); - else if (in_attr->i > 3) + (_("Warning: %B uses 64-bit long double, " + "%B uses 128-bit long double"), ibfd, obfd); + else if (in_fp != 2 * 4 && out_fp == 2 * 4) _bfd_error_handler - (_("Warning: %B uses unknown floating point ABI %d"), ibfd, - in_attr->i); - else + (_("Warning: %B uses 64-bit long double, " + "%B uses 128-bit long double"), obfd, ibfd); + else if (out_fp == 1 * 4 && in_fp == 3 * 4) + _bfd_error_handler + (_("Warning: %B uses IBM long double, " + "%B uses IEEE long double"), ibfd, obfd); + else if (out_fp == 3 * 4 && in_fp == 1 * 4) _bfd_error_handler - (_("Warning: %B uses unknown floating point ABI %d"), obfd, - out_attr->i); + (_("Warning: %B uses IBM long double, " + "%B uses IEEE long double"), obfd, ibfd); } +} + +/* Merge object attributes from IBFD into OBFD. Warn if + there are conflicting attributes. */ +static bfd_boolean +ppc_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd) +{ + obj_attribute *in_attr, *in_attrs; + obj_attribute *out_attr, *out_attrs; + + _bfd_elf_ppc_merge_fp_attributes (ibfd, obfd); + + in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU]; + out_attrs = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU]; /* Check for conflicting Tag_GNU_Power_ABI_Vector attributes and merge non-conflicting ones. */ @@ -4722,48 +4741,36 @@ ppc_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd) out_attr = &out_attrs[Tag_GNU_Power_ABI_Vector]; if (in_attr->i != out_attr->i) { - const char *in_abi = NULL, *out_abi = NULL; - - switch (in_attr->i) - { - case 1: in_abi = "generic"; break; - case 2: in_abi = "AltiVec"; break; - case 3: in_abi = "SPE"; break; - } + int in_vec = in_attr->i & 3; + int out_vec = out_attr->i & 3; - switch (out_attr->i) + if (in_vec == 0) + ; + else if (out_vec == 0) { - case 1: out_abi = "generic"; break; - case 2: out_abi = "AltiVec"; break; - case 3: out_abi = "SPE"; break; + out_attr->type = 1; + out_attr->i = in_vec; } - - out_attr->type = 1; - if (out_attr->i == 0) - out_attr->i = in_attr->i; - else if (in_attr->i == 0) - ; /* For now, allow generic to transition to AltiVec or SPE without a warning. If GCC marked files with their stack alignment and used don't-care markings for files which are not affected by the vector ABI, we could warn about this case too. */ - else if (out_attr->i == 1) - out_attr->i = in_attr->i; - else if (in_attr->i == 1) + else if (in_vec == 1) ; - else if (in_abi == NULL) - _bfd_error_handler - (_("Warning: %B uses unknown vector ABI %d"), ibfd, - in_attr->i); - else if (out_abi == NULL) + else if (out_vec == 1) + { + out_attr->type = 1; + out_attr->i = in_vec; + } + else if (out_vec < in_vec) _bfd_error_handler - (_("Warning: %B uses unknown vector ABI %d"), obfd, - in_attr->i); - else + (_("Warning: %B uses AltiVec vector ABI, %B uses SPE vector ABI"), + obfd, ibfd); + else if (out_vec > in_vec) _bfd_error_handler - (_("Warning: %B uses vector ABI \"%s\", %B uses \"%s\""), - ibfd, obfd, in_abi, out_abi); + (_("Warning: %B uses AltiVec vector ABI, %B uses SPE vector ABI"), + ibfd, obfd); } /* Check for conflicting Tag_GNU_Power_ABI_Struct_Return attributes @@ -4772,25 +4779,24 @@ ppc_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd) out_attr = &out_attrs[Tag_GNU_Power_ABI_Struct_Return]; if (in_attr->i != out_attr->i) { - out_attr->type = 1; - if (out_attr->i == 0) - out_attr->i = in_attr->i; - else if (in_attr->i == 0) + int in_struct = in_attr->i & 3; + int out_struct = out_attr->i & 3; + + if (in_struct == 0 || in_struct == 3) ; - else if (out_attr->i == 1 && in_attr->i == 2) - _bfd_error_handler - (_("Warning: %B uses r3/r4 for small structure returns, %B uses memory"), obfd, ibfd); - else if (out_attr->i == 2 && in_attr->i == 1) - _bfd_error_handler - (_("Warning: %B uses r3/r4 for small structure returns, %B uses memory"), ibfd, obfd); - else if (in_attr->i > 2) - _bfd_error_handler - (_("Warning: %B uses unknown small structure return convention %d"), ibfd, - in_attr->i); - else - _bfd_error_handler - (_("Warning: %B uses unknown small structure return convention %d"), obfd, - out_attr->i); + else if (out_struct == 0) + { + out_attr->type = 1; + out_attr->i = in_struct; + } + else if (out_struct < in_struct) + _bfd_error_handler + (_("Warning: %B uses r3/r4 for small structure returns, " + "%B uses memory"), obfd, ibfd); + else if (out_struct > in_struct) + _bfd_error_handler + (_("Warning: %B uses r3/r4 for small structure returns, " + "%B uses memory"), ibfd, obfd); } /* Merge Tag_compatibility attributes and any common GNU ones. */ diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index eeb68e5..d6acc1f3 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -6030,6 +6030,8 @@ ppc64_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) return FALSE; } + _bfd_elf_ppc_merge_fp_attributes (ibfd, obfd); + /* Merge Tag_compatibility attributes and any common GNU ones. */ _bfd_elf_merge_object_attributes (ibfd, obfd); diff --git a/binutils/ChangeLog b/binutils/ChangeLog index edb8cd6..0b4d1a5 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,5 +1,12 @@ 2016-09-26 Alan Modra <amodra@gmail.com> + * readelf.c (display_power_gnu_attribute): Catch truncated section + for all powerpc attributes. Display long double ABI. Don't + capitalize words, except for names. Show known bits of tag values + when some unknown bits are present. Whitespace fixes. + +2016-09-26 Alan Modra <amodra@gmail.com> + * nm.c (get_elf_symbol_type): Don't use sprintf with translated strings, use asprintf instead. (get_coff_symbol_type): Likewise. diff --git a/binutils/readelf.c b/binutils/readelf.c index 899afdb..ca7ed3f 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -13382,47 +13382,77 @@ display_power_gnu_attribute (unsigned char * p, const unsigned char * const end) { unsigned int len; - int val; + unsigned int val; if (tag == Tag_GNU_Power_ABI_FP) { val = read_uleb128 (p, &len, end); p += len; printf (" Tag_GNU_Power_ABI_FP: "); + if (len == 0) + { + printf (_("<corrupt>\n")); + return p; + } - switch (val) + if (val > 15) + printf ("(%#x), ", val); + + switch (val & 3) { case 0: - printf (_("Hard or soft float\n")); + printf (_("unspecified hard/soft float, ")); break; case 1: - printf (_("Hard float\n")); + printf (_("hard float, ")); break; case 2: - printf (_("Soft float\n")); + printf (_("soft float, ")); break; case 3: - printf (_("Single-precision hard float\n")); + printf (_("single-precision hard float, ")); break; - default: - printf ("??? (%d)\n", val); + } + + switch (val & 0xC) + { + case 0: + printf (_("unspecified long double\n")); + break; + case 4: + printf (_("128-bit IBM long double\n")); + break; + case 8: + printf (_("64-bit long double\n")); + break; + case 12: + printf (_("128-bit IEEE long double\n")); break; } return p; - } + } if (tag == Tag_GNU_Power_ABI_Vector) { val = read_uleb128 (p, &len, end); p += len; printf (" Tag_GNU_Power_ABI_Vector: "); - switch (val) + if (len == 0) + { + printf (_("<corrupt>\n")); + return p; + } + + if (val > 3) + printf ("(%#x), ", val); + + switch (val & 3) { case 0: - printf (_("Any\n")); + printf (_("unspecified\n")); break; case 1: - printf (_("Generic\n")); + printf (_("generic\n")); break; case 2: printf ("AltiVec\n"); @@ -13430,39 +13460,39 @@ display_power_gnu_attribute (unsigned char * p, case 3: printf ("SPE\n"); break; - default: - printf ("??? (%d)\n", val); - break; } return p; - } + } if (tag == Tag_GNU_Power_ABI_Struct_Return) { - if (p == end) + val = read_uleb128 (p, &len, end); + p += len; + printf (" Tag_GNU_Power_ABI_Struct_Return: "); + if (len == 0) { - warn (_("corrupt Tag_GNU_Power_ABI_Struct_Return\n")); + printf (_("<corrupt>\n")); return p; } - val = read_uleb128 (p, &len, end); - p += len; - printf (" Tag_GNU_Power_ABI_Struct_Return: "); - switch (val) - { - case 0: - printf (_("Any\n")); - break; - case 1: - printf ("r3/r4\n"); - break; - case 2: - printf (_("Memory\n")); - break; - default: - printf ("??? (%d)\n", val); - break; - } + if (val > 2) + printf ("(%#x), ", val); + + switch (val & 3) + { + case 0: + printf (_("unspecified\n")); + break; + case 1: + printf ("r3/r4\n"); + break; + case 2: + printf (_("memory\n")); + break; + case 3: + printf ("???\n"); + break; + } return p; } diff --git a/gas/ChangeLog b/gas/ChangeLog index 408a287..f5f2298 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2016-09-26 Alan Modra <amodra@gmail.com> + + * config/tc-ppc.c (ppc_elf_gnu_attribute): New function. + (md_pseudo_table <ELF>): Handle "gnu_attribute". + 2016-09-22 Thomas Preud'homme <thomas.preudhomme@arm.com> * config/tc-arm.c (v7m_psrs): Remove BASEPRI_MASK MRS/MSR special diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index 1417c26..d2b5316 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -133,6 +133,7 @@ static void ppc_elf_rdata (int); static void ppc_elf_lcomm (int); static void ppc_elf_localentry (int); static void ppc_elf_abiversion (int); +static void ppc_elf_gnu_attribute (int); #endif #ifdef TE_PE @@ -270,6 +271,7 @@ const pseudo_typeS md_pseudo_table[] = { "lcomm", ppc_elf_lcomm, 0 }, { "localentry", ppc_elf_localentry, 0 }, { "abiversion", ppc_elf_abiversion, 0 }, + { "gnu_attribute", ppc_elf_gnu_attribute, 0}, #endif #ifdef TE_PE @@ -2314,6 +2316,28 @@ ppc_elf_abiversion (int ignore ATTRIBUTE_UNUSED) demand_empty_rest_of_line (); } +/* Parse a .gnu_attribute directive. */ +static void +ppc_elf_gnu_attribute (int ignored ATTRIBUTE_UNUSED) +{ + int tag = obj_elf_vendor_attribute (OBJ_ATTR_GNU); + + /* Check validity of defined powerpc tags. */ + if (tag == Tag_GNU_Power_ABI_FP + || tag == Tag_GNU_Power_ABI_Vector + || tag == Tag_GNU_Power_ABI_Struct_Return) + { + unsigned int val; + + val = bfd_elf_get_obj_attr_int (stdoutput, OBJ_ATTR_GNU, tag); + + if ((tag == Tag_GNU_Power_ABI_FP && val > 15) + || (tag == Tag_GNU_Power_ABI_Vector && val > 3) + || (tag == Tag_GNU_Power_ABI_Struct_Return && val > 2)) + as_warn (_("unknown .gnu_attribute value")); + } +} + /* Set ABI version in output file. */ void ppc_elf_end (void) diff --git a/include/ChangeLog b/include/ChangeLog index 0c2fc11..28ab891 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2016-09-26 Alan Modra <amodra@gmail.com> + + * elf/ppc.h (Tag_GNU_Power_ABI_FP): Comment on new values. + 2016-09-21 Richard Sandiford <richard.sandiford@arm.com> * opcode/aarch64.h (aarch64_cond): Bump array size to 4. diff --git a/include/elf/ppc.h b/include/elf/ppc.h index f4a6bbd..5f94a34 100644 --- a/include/elf/ppc.h +++ b/include/elf/ppc.h @@ -219,11 +219,18 @@ END_RELOC_NUMBERS (R_PPC_max) enum { /* 0-3 are generic. */ - Tag_GNU_Power_ABI_FP = 4, /* Value 1 for hard-float, 2 for - soft-float, 3 for single=precision - hard-float; 0 for not tagged or not - using any ABIs affected by the - differences. */ + + /* FP ABI, low 2 bits: + 1 for double precision hard-float, + 2 for soft-float, + 3 for single precision hard-float. + 0 for not tagged or not using any ABIs affected by the differences. + Next 2 bits: + 1 for ibm long double + 2 for 64-bit long double + 3 for IEEE long double. + 0 for not tagged or not using any ABIs affected by the differences. */ + Tag_GNU_Power_ABI_FP = 4, /* Value 1 for general purpose registers only, 2 for AltiVec registers, 3 for SPE registers; 0 for not tagged or not using any diff --git a/ld/ChangeLog b/ld/ChangeLog index 56e6133..3f43b64 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,23 @@ +2016-09-26 Alan Modra <amodra@gmail.com> + + * testsuite/ld-powerpc/attr-gnu-4-4.s: Delete. + * testsuite/ld-powerpc/attr-gnu-4-14.d: Delete. + * testsuite/ld-powerpc/attr-gnu-4-24.d: Delete. + * testsuite/ld-powerpc/attr-gnu-4-34.d: Delete. + * testsuite/ld-powerpc/attr-gnu-4-41.d: Delete. + * testsuite/ld-powerpc/attr-gnu-4-32.d: Adjust expected warning. + * testsuite/ld-powerpc/attr-gnu-8-23.d: Likewise. + * testsuite/ld-powerpc/attr-gnu-4-01.d: Adjust expected output. + * testsuite/ld-powerpc/attr-gnu-4-02.d: Likewise. + * testsuite/ld-powerpc/attr-gnu-4-03.d: Likewise. + * testsuite/ld-powerpc/attr-gnu-4-10.d: Likewise. + * testsuite/ld-powerpc/attr-gnu-4-11.d: Likewise. + * testsuite/ld-powerpc/attr-gnu-4-20.d: Likewise. + * testsuite/ld-powerpc/attr-gnu-4-22.d: Likewise. + * testsuite/ld-powerpc/attr-gnu-4-33.d: Likewise. + * testsuite/ld-powerpc/attr-gnu-8-11.d: Likewise. + * testsuite/ld-powerpc/powerpc.exp: Don't run deleted tests. + 2016-09-23 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> PR ld/20595 diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-01.d b/ld/testsuite/ld-powerpc/attr-gnu-4-01.d index 212e0c4..62dbec0 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-01.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-01.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_FP: Hard float + Tag_GNU_Power_ABI_FP: hard float, unspecified long double diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-02.d b/ld/testsuite/ld-powerpc/attr-gnu-4-02.d index 9bd42b5..ae270f1 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-02.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-02.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_FP: Soft float + Tag_GNU_Power_ABI_FP: soft float, unspecified long double diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-03.d b/ld/testsuite/ld-powerpc/attr-gnu-4-03.d index 03b0c3c..d79febf 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-03.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-03.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_FP: Single-precision hard float + Tag_GNU_Power_ABI_FP: single-precision hard float, unspecified long double diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-10.d b/ld/testsuite/ld-powerpc/attr-gnu-4-10.d index 93297c2..1e01549 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-10.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-10.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_FP: Hard float + Tag_GNU_Power_ABI_FP: hard float, unspecified long double diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-11.d b/ld/testsuite/ld-powerpc/attr-gnu-4-11.d index fb2b76e..5027b78 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-11.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-11.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_FP: Hard float + Tag_GNU_Power_ABI_FP: hard float, unspecified long double diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-14.d b/ld/testsuite/ld-powerpc/attr-gnu-4-14.d deleted file mode 100644 index 3bb6661..0000000 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-14.d +++ /dev/null @@ -1,6 +0,0 @@ -#source: attr-gnu-4-1.s -#source: attr-gnu-4-4.s -#as: -a32 -#ld: -r -melf32ppc -#warning: Warning: .* uses unknown floating point ABI 4 -#target: powerpc*-*-* diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-20.d b/ld/testsuite/ld-powerpc/attr-gnu-4-20.d index 3d83893..fca9de6 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-20.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-20.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_FP: Soft float + Tag_GNU_Power_ABI_FP: soft float, unspecified long double diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-22.d b/ld/testsuite/ld-powerpc/attr-gnu-4-22.d index f6bd198..80a209c 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-22.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-22.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_FP: Soft float + Tag_GNU_Power_ABI_FP: soft float, unspecified long double diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-24.d b/ld/testsuite/ld-powerpc/attr-gnu-4-24.d deleted file mode 100644 index fc17f91..0000000 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-24.d +++ /dev/null @@ -1,6 +0,0 @@ -#source: attr-gnu-4-2.s -#source: attr-gnu-4-4.s -#as: -a32 -#ld: -r -melf32ppc -#warning: Warning: .* uses unknown floating point ABI 4 -#target: powerpc*-*-* diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-32.d b/ld/testsuite/ld-powerpc/attr-gnu-4-32.d index 3b7cb29..924a3af 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-32.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-32.d @@ -2,5 +2,5 @@ #source: attr-gnu-4-2.s #as: -a32 #ld: -r -melf32ppc -#warning: Warning: .* uses soft float, .* uses single-precision hard float +#warning: Warning: .* uses hard float, .* uses soft float #target: powerpc*-*-* diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-33.d b/ld/testsuite/ld-powerpc/attr-gnu-4-33.d index 88367ae..6951b42 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-33.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-4-33.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_FP: Single-precision hard float + Tag_GNU_Power_ABI_FP: single-precision hard float, unspecified long double diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-34.d b/ld/testsuite/ld-powerpc/attr-gnu-4-34.d deleted file mode 100644 index 6f6e1fe..0000000 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-34.d +++ /dev/null @@ -1,6 +0,0 @@ -#source: attr-gnu-4-3.s -#source: attr-gnu-4-4.s -#as: -a32 -#ld: -r -melf32ppc -#warning: Warning: .* uses unknown floating point ABI 4 -#target: powerpc*-*-* diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-4.s b/ld/testsuite/ld-powerpc/attr-gnu-4-4.s deleted file mode 100644 index 3ff129a..0000000 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-4.s +++ /dev/null @@ -1 +0,0 @@ -.gnu_attribute 4,4 diff --git a/ld/testsuite/ld-powerpc/attr-gnu-4-41.d b/ld/testsuite/ld-powerpc/attr-gnu-4-41.d deleted file mode 100644 index b909476..0000000 --- a/ld/testsuite/ld-powerpc/attr-gnu-4-41.d +++ /dev/null @@ -1,6 +0,0 @@ -#source: attr-gnu-4-4.s -#source: attr-gnu-4-1.s -#as: -a32 -#ld: -r -melf32ppc -#warning: Warning: .* uses unknown floating point ABI 4 -#target: powerpc*-*-* diff --git a/ld/testsuite/ld-powerpc/attr-gnu-8-11.d b/ld/testsuite/ld-powerpc/attr-gnu-8-11.d index 7e49d4a..06d7e88 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-8-11.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-8-11.d @@ -7,4 +7,4 @@ Attribute Section: gnu File Attributes - Tag_GNU_Power_ABI_Vector: Generic + Tag_GNU_Power_ABI_Vector: generic diff --git a/ld/testsuite/ld-powerpc/attr-gnu-8-23.d b/ld/testsuite/ld-powerpc/attr-gnu-8-23.d index b22e4bd..b442884 100644 --- a/ld/testsuite/ld-powerpc/attr-gnu-8-23.d +++ b/ld/testsuite/ld-powerpc/attr-gnu-8-23.d @@ -2,5 +2,5 @@ #source: attr-gnu-8-3.s #as: -a32 #ld: -r -melf32ppc -#warning: Warning: .* uses vector ABI "SPE", .* uses "AltiVec" +#warning: Warning: .* uses AltiVec vector ABI, .* uses SPE vector ABI #target: powerpc*-*-* diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp index 37e53fd..07226c6 100644 --- a/ld/testsuite/ld-powerpc/powerpc.exp +++ b/ld/testsuite/ld-powerpc/powerpc.exp @@ -319,17 +319,13 @@ run_dump_test "attr-gnu-4-10" run_dump_test "attr-gnu-4-11" run_dump_test "attr-gnu-4-12" run_dump_test "attr-gnu-4-13" -run_dump_test "attr-gnu-4-14" run_dump_test "attr-gnu-4-20" run_dump_test "attr-gnu-4-21" run_dump_test "attr-gnu-4-22" run_dump_test "attr-gnu-4-23" -run_dump_test "attr-gnu-4-24" run_dump_test "attr-gnu-4-31" run_dump_test "attr-gnu-4-32" run_dump_test "attr-gnu-4-33" -run_dump_test "attr-gnu-4-34" -run_dump_test "attr-gnu-4-41" run_dump_test "attr-gnu-8-11" run_dump_test "attr-gnu-8-23" |