Nick Clifton 4e01b3
diff -rup binutils.orig/bfd/elf32-ppc.c binutils-2.27/bfd/elf32-ppc.c
Nick Clifton 4e01b3
--- binutils.orig/bfd/elf32-ppc.c	2017-02-17 12:43:45.252843756 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/bfd/elf32-ppc.c	2017-02-17 14:06:39.341735795 +0000
Nick Clifton 4e01b3
@@ -4646,68 +4646,87 @@ ppc_elf_check_relocs (bfd *abfd,
Nick Clifton 4e01b3
   return TRUE;
Nick Clifton 4e01b3
 }
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
-
Nick Clifton 4e01b3
-/* Merge object attributes from IBFD into OBFD.  Raise an error if
Nick Clifton 4e01b3
-   there are conflicting attributes.  */
Nick Clifton 4e01b3
-static bfd_boolean
Nick Clifton 4e01b3
-ppc_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
Nick Clifton 4e01b3
+/* Warn for conflicting Tag_GNU_Power_ABI_FP attributes between IBFD
Nick Clifton 4e01b3
+   and OBFD, and merge non-conflicting ones.  */
Nick Clifton 4e01b3
+void
Nick Clifton 4e01b3
+_bfd_elf_ppc_merge_fp_attributes (bfd *ibfd, bfd *obfd)
Nick Clifton 4e01b3
 {
Nick Clifton 4e01b3
   obj_attribute *in_attr, *in_attrs;
Nick Clifton 4e01b3
   obj_attribute *out_attr, *out_attrs;
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
-  if (!elf_known_obj_attributes_proc (obfd)[0].i)
Nick Clifton 4e01b3
-    {
Nick Clifton 4e01b3
-      /* This is the first object.  Copy the attributes.  */
Nick Clifton 4e01b3
-      _bfd_elf_copy_obj_attributes (ibfd, obfd);
Nick Clifton 4e01b3
-
Nick Clifton 4e01b3
-      /* Use the Tag_null value to indicate the attributes have been
Nick Clifton 4e01b3
-	 initialized.  */
Nick Clifton 4e01b3
-      elf_known_obj_attributes_proc (obfd)[0].i = 1;
Nick Clifton 4e01b3
-
Nick Clifton 4e01b3
-      return TRUE;
Nick Clifton 4e01b3
-    }
Nick Clifton 4e01b3
-
Nick Clifton 4e01b3
   in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
Nick Clifton 4e01b3
   out_attrs = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
-  /* Check for conflicting Tag_GNU_Power_ABI_FP attributes and merge
Nick Clifton 4e01b3
-     non-conflicting ones.  */
Nick Clifton 4e01b3
   in_attr = &in_attrs[Tag_GNU_Power_ABI_FP];
Nick Clifton 4e01b3
   out_attr = &out_attrs[Tag_GNU_Power_ABI_FP];
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
   if (in_attr->i != out_attr->i)
Nick Clifton 4e01b3
     {
Nick Clifton 4e01b3
-      out_attr->type = 1;
Nick Clifton 4e01b3
-      if (out_attr->i == 0)
Nick Clifton 4e01b3
-	out_attr->i = in_attr->i;
Nick Clifton 4e01b3
-      else if (in_attr->i == 0)
Nick Clifton 4e01b3
+      int in_fp = in_attr->i & 3;
Nick Clifton 4e01b3
+      int out_fp = out_attr->i & 3;
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      if (in_fp == 0)
Nick Clifton 4e01b3
 	;
Nick Clifton 4e01b3
-      else if (out_attr->i == 1 && in_attr->i == 2)
Nick Clifton 4e01b3
+      else if (out_fp == 0)
Nick Clifton 4e01b3
+	{
Nick Clifton 4e01b3
+	  out_attr->type = 1;
Nick Clifton 4e01b3
+	  out_attr->i ^= in_fp;
Nick Clifton 4e01b3
+	}
Nick Clifton 4e01b3
+      else if (out_fp != 2 && in_fp == 2)
Nick Clifton 4e01b3
 	_bfd_error_handler
Nick Clifton 4e01b3
 	  (_("Warning: %B uses hard float, %B uses soft float"), obfd, ibfd);
Nick Clifton 4e01b3
-      else if (out_attr->i == 1 && in_attr->i == 3)
Nick Clifton 4e01b3
-	_bfd_error_handler
Nick Clifton 4e01b3
-	  (_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"),
Nick Clifton 4e01b3
-	  obfd, ibfd);
Nick Clifton 4e01b3
-      else if (out_attr->i == 3 && in_attr->i == 1)
Nick Clifton 4e01b3
-	_bfd_error_handler
Nick Clifton 4e01b3
-	  (_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"),
Nick Clifton 4e01b3
-	  ibfd, obfd);
Nick Clifton 4e01b3
-      else if (out_attr->i == 3 && in_attr->i == 2)
Nick Clifton 4e01b3
-	_bfd_error_handler
Nick Clifton 4e01b3
-	  (_("Warning: %B uses soft float, %B uses single-precision hard float"),
Nick Clifton 4e01b3
-	  ibfd, obfd);
Nick Clifton 4e01b3
-      else if (out_attr->i == 2 && (in_attr->i == 1 || in_attr->i == 3))
Nick Clifton 4e01b3
+      else if (out_fp == 2 && in_fp != 2)
Nick Clifton 4e01b3
 	_bfd_error_handler
Nick Clifton 4e01b3
 	  (_("Warning: %B uses hard float, %B uses soft float"), ibfd, obfd);
Nick Clifton 4e01b3
-      else if (in_attr->i > 3)
Nick Clifton 4e01b3
+      else if (out_fp == 1 && in_fp == 3)
Nick Clifton 4e01b3
 	_bfd_error_handler
Nick Clifton 4e01b3
-	  (_("Warning: %B uses unknown floating point ABI %d"), ibfd,
Nick Clifton 4e01b3
-	   in_attr->i);
Nick Clifton 4e01b3
-      else
Nick Clifton 4e01b3
+	  (_("Warning: %B uses double-precision hard float, "
Nick Clifton 4e01b3
+	     "%B uses single-precision hard float"), obfd, ibfd);
Nick Clifton 4e01b3
+      else if (out_fp == 3 && in_fp == 1)
Nick Clifton 4e01b3
+	_bfd_error_handler
Nick Clifton 4e01b3
+	  (_("Warning: %B uses double-precision hard float, "
Nick Clifton 4e01b3
+	     "%B uses single-precision hard float"), ibfd, obfd);
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      in_fp = in_attr->i & 0xc;
Nick Clifton 4e01b3
+      out_fp = out_attr->i & 0xc;
Nick Clifton 4e01b3
+      if (in_fp == 0)
Nick Clifton 4e01b3
+	;
Nick Clifton 4e01b3
+      else if (out_fp == 0)
Nick Clifton 4e01b3
+	{
Nick Clifton 4e01b3
+	  out_attr->type = 1;
Nick Clifton 4e01b3
+	  out_attr->i ^= in_fp;
Nick Clifton 4e01b3
+	}
Nick Clifton 4e01b3
+      else if (out_fp != 2 * 4 && in_fp == 2 * 4)
Nick Clifton 4e01b3
 	_bfd_error_handler
Nick Clifton 4e01b3
-	  (_("Warning: %B uses unknown floating point ABI %d"), obfd,
Nick Clifton 4e01b3
-	   out_attr->i);
Nick Clifton 4e01b3
+	  (_("Warning: %B uses 64-bit long double, "
Nick Clifton 4e01b3
+	     "%B uses 128-bit long double"), ibfd, obfd);
Nick Clifton 4e01b3
+      else if (in_fp != 2 * 4 && out_fp == 2 * 4)
Nick Clifton 4e01b3
+	_bfd_error_handler
Nick Clifton 4e01b3
+	  (_("Warning: %B uses 64-bit long double, "
Nick Clifton 4e01b3
+	     "%B uses 128-bit long double"), obfd, ibfd);
Nick Clifton 4e01b3
+      else if (out_fp == 1 * 4 && in_fp == 3 * 4)
Nick Clifton 4e01b3
+	_bfd_error_handler
Nick Clifton 4e01b3
+	  (_("Warning: %B uses IBM long double, "
Nick Clifton 4e01b3
+	     "%B uses IEEE long double"), ibfd, obfd);
Nick Clifton 4e01b3
+      else if (out_fp == 3 * 4 && in_fp == 1 * 4)
Nick Clifton 4e01b3
+	_bfd_error_handler
Nick Clifton 4e01b3
+	  (_("Warning: %B uses IBM long double, "
Nick Clifton 4e01b3
+	     "%B uses IEEE long double"), obfd, ibfd);
Nick Clifton 4e01b3
     }
Nick Clifton 4e01b3
+}
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+/* Merge object attributes from IBFD into OBFD.  Warn if
Nick Clifton 4e01b3
+   there are conflicting attributes.  */
Nick Clifton 4e01b3
+static bfd_boolean
Nick Clifton 4e01b3
+ppc_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
Nick Clifton 4e01b3
+{
Nick Clifton 4e01b3
+  obj_attribute *in_attr, *in_attrs;
Nick Clifton 4e01b3
+  obj_attribute *out_attr, *out_attrs;
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+  _bfd_elf_ppc_merge_fp_attributes (ibfd, obfd);
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+  in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
Nick Clifton 4e01b3
+  out_attrs = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
   /* Check for conflicting Tag_GNU_Power_ABI_Vector attributes and
Nick Clifton 4e01b3
      merge non-conflicting ones.  */
Nick Clifton 4e01b3
@@ -4715,48 +4734,36 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
Nick Clifton 4e01b3
   out_attr = &out_attrs[Tag_GNU_Power_ABI_Vector];
Nick Clifton 4e01b3
   if (in_attr->i != out_attr->i)
Nick Clifton 4e01b3
     {
Nick Clifton 4e01b3
-      const char *in_abi = NULL, *out_abi = NULL;
Nick Clifton 4e01b3
-
Nick Clifton 4e01b3
-      switch (in_attr->i)
Nick Clifton 4e01b3
-	{
Nick Clifton 4e01b3
-	case 1: in_abi = "generic"; break;
Nick Clifton 4e01b3
-	case 2: in_abi = "AltiVec"; break;
Nick Clifton 4e01b3
-	case 3: in_abi = "SPE"; break;
Nick Clifton 4e01b3
-	}
Nick Clifton 4e01b3
+      int in_vec = in_attr->i & 3;
Nick Clifton 4e01b3
+      int out_vec = out_attr->i & 3;
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
-      switch (out_attr->i)
Nick Clifton 4e01b3
+      if (in_vec == 0)
Nick Clifton 4e01b3
+	;
Nick Clifton 4e01b3
+      else if (out_vec == 0)
Nick Clifton 4e01b3
 	{
Nick Clifton 4e01b3
-	case 1: out_abi = "generic"; break;
Nick Clifton 4e01b3
-	case 2: out_abi = "AltiVec"; break;
Nick Clifton 4e01b3
-	case 3: out_abi = "SPE"; break;
Nick Clifton 4e01b3
+	  out_attr->type = 1;
Nick Clifton 4e01b3
+	  out_attr->i = in_vec;
Nick Clifton 4e01b3
 	}
Nick Clifton 4e01b3
-
Nick Clifton 4e01b3
-      out_attr->type = 1;
Nick Clifton 4e01b3
-      if (out_attr->i == 0)
Nick Clifton 4e01b3
-	out_attr->i = in_attr->i;
Nick Clifton 4e01b3
-      else if (in_attr->i == 0)
Nick Clifton 4e01b3
-	;
Nick Clifton 4e01b3
       /* For now, allow generic to transition to AltiVec or SPE
Nick Clifton 4e01b3
 	 without a warning.  If GCC marked files with their stack
Nick Clifton 4e01b3
 	 alignment and used don't-care markings for files which are
Nick Clifton 4e01b3
 	 not affected by the vector ABI, we could warn about this
Nick Clifton 4e01b3
 	 case too.  */
Nick Clifton 4e01b3
-      else if (out_attr->i == 1)
Nick Clifton 4e01b3
-	out_attr->i = in_attr->i;
Nick Clifton 4e01b3
-      else if (in_attr->i == 1)
Nick Clifton 4e01b3
+      else if (in_vec == 1)
Nick Clifton 4e01b3
 	;
Nick Clifton 4e01b3
-      else if (in_abi == NULL)
Nick Clifton 4e01b3
+      else if (out_vec == 1)
Nick Clifton 4e01b3
+	{
Nick Clifton 4e01b3
+	  out_attr->type = 1;
Nick Clifton 4e01b3
+	  out_attr->i = in_vec;
Nick Clifton 4e01b3
+	}
Nick Clifton 4e01b3
+      else if (out_vec < in_vec)
Nick Clifton 4e01b3
 	_bfd_error_handler
Nick Clifton 4e01b3
-	  (_("Warning: %B uses unknown vector ABI %d"), ibfd,
Nick Clifton 4e01b3
-	   in_attr->i);
Nick Clifton 4e01b3
-      else if (out_abi == NULL)
Nick Clifton 4e01b3
-	_bfd_error_handler
Nick Clifton 4e01b3
-	  (_("Warning: %B uses unknown vector ABI %d"), obfd,
Nick Clifton 4e01b3
-	   in_attr->i);
Nick Clifton 4e01b3
-      else
Nick Clifton 4e01b3
+	  (_("Warning: %B uses AltiVec vector ABI, %B uses SPE vector ABI"),
Nick Clifton 4e01b3
+	   obfd, ibfd);
Nick Clifton 4e01b3
+      else if (out_vec > in_vec)
Nick Clifton 4e01b3
 	_bfd_error_handler
Nick Clifton 4e01b3
-	  (_("Warning: %B uses vector ABI \"%s\", %B uses \"%s\""),
Nick Clifton 4e01b3
-	   ibfd, obfd, in_abi, out_abi);
Nick Clifton 4e01b3
+	  (_("Warning: %B uses AltiVec vector ABI, %B uses SPE vector ABI"),
Nick Clifton 4e01b3
+	   ibfd, obfd);
Nick Clifton 4e01b3
     }
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
   /* Check for conflicting Tag_GNU_Power_ABI_Struct_Return attributes
Nick Clifton 4e01b3
@@ -4765,25 +4772,24 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
Nick Clifton 4e01b3
   out_attr = &out_attrs[Tag_GNU_Power_ABI_Struct_Return];
Nick Clifton 4e01b3
   if (in_attr->i != out_attr->i)
Nick Clifton 4e01b3
     {
Nick Clifton 4e01b3
-      out_attr->type = 1;
Nick Clifton 4e01b3
-      if (out_attr->i == 0)
Nick Clifton 4e01b3
-       out_attr->i = in_attr->i;
Nick Clifton 4e01b3
-      else if (in_attr->i == 0)
Nick Clifton 4e01b3
+      int in_struct = in_attr->i & 3;
Nick Clifton 4e01b3
+      int out_struct = out_attr->i & 3;
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      if (in_struct == 0 || in_struct == 3)
Nick Clifton 4e01b3
        ;
Nick Clifton 4e01b3
-      else if (out_attr->i == 1 && in_attr->i == 2)
Nick Clifton 4e01b3
-       _bfd_error_handler
Nick Clifton 4e01b3
-         (_("Warning: %B uses r3/r4 for small structure returns, %B uses memory"), obfd, ibfd);
Nick Clifton 4e01b3
-      else if (out_attr->i == 2 && in_attr->i == 1)
Nick Clifton 4e01b3
-       _bfd_error_handler
Nick Clifton 4e01b3
-         (_("Warning: %B uses r3/r4 for small structure returns, %B uses memory"), ibfd, obfd);
Nick Clifton 4e01b3
-      else if (in_attr->i > 2)
Nick Clifton 4e01b3
-       _bfd_error_handler
Nick Clifton 4e01b3
-         (_("Warning: %B uses unknown small structure return convention %d"), ibfd,
Nick Clifton 4e01b3
-          in_attr->i);
Nick Clifton 4e01b3
-      else
Nick Clifton 4e01b3
-       _bfd_error_handler
Nick Clifton 4e01b3
-         (_("Warning: %B uses unknown small structure return convention %d"), obfd,
Nick Clifton 4e01b3
-          out_attr->i);
Nick Clifton 4e01b3
+      else if (out_struct == 0)
Nick Clifton 4e01b3
+	{
Nick Clifton 4e01b3
+	  out_attr->type = 1;
Nick Clifton 4e01b3
+	  out_attr->i = in_struct;
Nick Clifton 4e01b3
+	}
Nick Clifton 4e01b3
+      else if (out_struct < in_struct)
Nick Clifton 4e01b3
+	_bfd_error_handler
Nick Clifton 4e01b3
+	  (_("Warning: %B uses r3/r4 for small structure returns, "
Nick Clifton 4e01b3
+	     "%B uses memory"), obfd, ibfd);
Nick Clifton 4e01b3
+      else if (out_struct > in_struct)
Nick Clifton 4e01b3
+	_bfd_error_handler
Nick Clifton 4e01b3
+	  (_("Warning: %B uses r3/r4 for small structure returns, "
Nick Clifton 4e01b3
+	     "%B uses memory"), ibfd, obfd);
Nick Clifton 4e01b3
     }
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
Nick Clifton 4e01b3
Only in binutils-2.27/bfd: elf32-ppc.c.orig
Nick Clifton 4e01b3
diff -rup binutils.orig/bfd/elf64-ppc.c binutils-2.27/bfd/elf64-ppc.c
Nick Clifton 4e01b3
--- binutils.orig/bfd/elf64-ppc.c	2017-02-17 12:43:45.257843692 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/bfd/elf64-ppc.c	2017-02-17 14:06:45.374655107 +0000
Nick Clifton 4e01b3
@@ -5988,6 +5988,8 @@ ppc64_elf_merge_private_bfd_data (bfd *i
Nick Clifton 4e01b3
       return FALSE;
Nick Clifton 4e01b3
     }
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
+  _bfd_elf_ppc_merge_fp_attributes (ibfd, obfd);
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
Nick Clifton 4e01b3
   _bfd_elf_merge_object_attributes (ibfd, obfd);
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
Only in binutils-2.27/bfd: elf64-ppc.c.orig
Nick Clifton 4e01b3
diff -rup binutils.orig/bfd/elf-bfd.h binutils-2.27/bfd/elf-bfd.h
Nick Clifton 4e01b3
--- binutils.orig/bfd/elf-bfd.h	2017-02-17 12:43:45.224844113 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/bfd/elf-bfd.h	2017-02-17 14:06:49.740596712 +0000
Nick Clifton 4e01b3
@@ -2377,6 +2377,8 @@ extern unsigned int _bfd_elf_ppc_at_tpre
Nick Clifton 4e01b3
   (unsigned int, unsigned int);
Nick Clifton 4e01b3
 /* PowerPC elf_object_p tweak.  */
Nick Clifton 4e01b3
 extern bfd_boolean _bfd_elf_ppc_set_arch (bfd *);
Nick Clifton 4e01b3
+/* PowerPC .gnu.attributes handling common to both 32-bit and 64-bit.  */
Nick Clifton 4e01b3
+extern void _bfd_elf_ppc_merge_fp_attributes (bfd *, bfd *);
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 /* Exported interface for writing elf corefile notes. */
Nick Clifton 4e01b3
 extern char *elfcore_write_note
Nick Clifton 4e01b3
Only in binutils-2.27/bfd: elf-bfd.h.orig
Nick Clifton 4e01b3
diff -rup binutils.orig/binutils/readelf.c binutils-2.27/binutils/readelf.c
Nick Clifton 4e01b3
--- binutils.orig/binutils/readelf.c	2017-02-17 12:43:45.289843284 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/binutils/readelf.c	2017-02-17 14:06:54.752529678 +0000
Nick Clifton 4e01b3
@@ -13243,47 +13243,77 @@ display_power_gnu_attribute (unsigned ch
Nick Clifton 4e01b3
 			     const unsigned char * const end)
Nick Clifton 4e01b3
 {
Nick Clifton 4e01b3
   unsigned int len;
Nick Clifton 4e01b3
-  int val;
Nick Clifton 4e01b3
+  unsigned int val;
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
   if (tag == Tag_GNU_Power_ABI_FP)
Nick Clifton 4e01b3
     {
Nick Clifton 4e01b3
       val = read_uleb128 (p, &len, end);
Nick Clifton 4e01b3
       p += len;
Nick Clifton 4e01b3
       printf ("  Tag_GNU_Power_ABI_FP: ");
Nick Clifton 4e01b3
+      if (len == 0)
Nick Clifton 4e01b3
+	{
Nick Clifton 4e01b3
+	  printf (_("<corrupt>\n"));
Nick Clifton 4e01b3
+	  return p;
Nick Clifton 4e01b3
+	}
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
-      switch (val)
Nick Clifton 4e01b3
+      if (val > 15)
Nick Clifton 4e01b3
+	printf ("(%#x), ", val);
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      switch (val & 3)
Nick Clifton 4e01b3
 	{
Nick Clifton 4e01b3
 	case 0:
Nick Clifton 4e01b3
-	  printf (_("Hard or soft float\n"));
Nick Clifton 4e01b3
+	  printf (_("unspecified hard/soft float, "));
Nick Clifton 4e01b3
 	  break;
Nick Clifton 4e01b3
 	case 1:
Nick Clifton 4e01b3
-	  printf (_("Hard float\n"));
Nick Clifton 4e01b3
+	  printf (_("hard float, "));
Nick Clifton 4e01b3
 	  break;
Nick Clifton 4e01b3
 	case 2:
Nick Clifton 4e01b3
-	  printf (_("Soft float\n"));
Nick Clifton 4e01b3
+	  printf (_("soft float, "));
Nick Clifton 4e01b3
 	  break;
Nick Clifton 4e01b3
 	case 3:
Nick Clifton 4e01b3
-	  printf (_("Single-precision hard float\n"));
Nick Clifton 4e01b3
+	  printf (_("single-precision hard float, "));
Nick Clifton 4e01b3
+	  break;
Nick Clifton 4e01b3
+	}
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      switch (val & 0xC)
Nick Clifton 4e01b3
+	{
Nick Clifton 4e01b3
+	case 0:
Nick Clifton 4e01b3
+	  printf (_("unspecified long double\n"));
Nick Clifton 4e01b3
 	  break;
Nick Clifton 4e01b3
-	default:
Nick Clifton 4e01b3
-	  printf ("??? (%d)\n", val);
Nick Clifton 4e01b3
+	case 4:
Nick Clifton 4e01b3
+	  printf (_("128-bit IBM long double\n"));
Nick Clifton 4e01b3
+	  break;
Nick Clifton 4e01b3
+	case 8:
Nick Clifton 4e01b3
+	  printf (_("64-bit long double\n"));
Nick Clifton 4e01b3
+	  break;
Nick Clifton 4e01b3
+	case 12:
Nick Clifton 4e01b3
+	  printf (_("128-bit IEEE long double\n"));
Nick Clifton 4e01b3
 	  break;
Nick Clifton 4e01b3
 	}
Nick Clifton 4e01b3
       return p;
Nick Clifton 4e01b3
-   }
Nick Clifton 4e01b3
+    }
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
   if (tag == Tag_GNU_Power_ABI_Vector)
Nick Clifton 4e01b3
     {
Nick Clifton 4e01b3
       val = read_uleb128 (p, &len, end);
Nick Clifton 4e01b3
       p += len;
Nick Clifton 4e01b3
       printf ("  Tag_GNU_Power_ABI_Vector: ");
Nick Clifton 4e01b3
-      switch (val)
Nick Clifton 4e01b3
+      if (len == 0)
Nick Clifton 4e01b3
+	{
Nick Clifton 4e01b3
+	  printf (_("<corrupt>\n"));
Nick Clifton 4e01b3
+	  return p;
Nick Clifton 4e01b3
+	}
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      if (val > 3)
Nick Clifton 4e01b3
+	printf ("(%#x), ", val);
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      switch (val & 3)
Nick Clifton 4e01b3
 	{
Nick Clifton 4e01b3
 	case 0:
Nick Clifton 4e01b3
-	  printf (_("Any\n"));
Nick Clifton 4e01b3
+	  printf (_("unspecified\n"));
Nick Clifton 4e01b3
 	  break;
Nick Clifton 4e01b3
 	case 1:
Nick Clifton 4e01b3
-	  printf (_("Generic\n"));
Nick Clifton 4e01b3
+	  printf (_("generic\n"));
Nick Clifton 4e01b3
 	  break;
Nick Clifton 4e01b3
 	case 2:
Nick Clifton 4e01b3
 	  printf ("AltiVec\n");
Nick Clifton 4e01b3
@@ -13291,39 +13321,39 @@ display_power_gnu_attribute (unsigned ch
Nick Clifton 4e01b3
 	case 3:
Nick Clifton 4e01b3
 	  printf ("SPE\n");
Nick Clifton 4e01b3
 	  break;
Nick Clifton 4e01b3
-	default:
Nick Clifton 4e01b3
-	  printf ("??? (%d)\n", val);
Nick Clifton 4e01b3
-	  break;
Nick Clifton 4e01b3
 	}
Nick Clifton 4e01b3
       return p;
Nick Clifton 4e01b3
-   }
Nick Clifton 4e01b3
+    }
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
   if (tag == Tag_GNU_Power_ABI_Struct_Return)
Nick Clifton 4e01b3
     {
Nick Clifton 4e01b3
-      if (p == end)
Nick Clifton 4e01b3
+      val = read_uleb128 (p, &len, end);
Nick Clifton 4e01b3
+      p += len;
Nick Clifton 4e01b3
+      printf ("  Tag_GNU_Power_ABI_Struct_Return: ");
Nick Clifton 4e01b3
+      if (len == 0)
Nick Clifton 4e01b3
 	{
Nick Clifton 4e01b3
-	  warn (_("corrupt Tag_GNU_Power_ABI_Struct_Return\n"));
Nick Clifton 4e01b3
+	  printf (_("<corrupt>\n"));
Nick Clifton 4e01b3
 	  return p;
Nick Clifton 4e01b3
 	}
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
-      val = read_uleb128 (p, &len, end);
Nick Clifton 4e01b3
-      p += len;
Nick Clifton 4e01b3
-      printf ("  Tag_GNU_Power_ABI_Struct_Return: ");
Nick Clifton 4e01b3
-      switch (val)
Nick Clifton 4e01b3
-       {
Nick Clifton 4e01b3
-       case 0:
Nick Clifton 4e01b3
-         printf (_("Any\n"));
Nick Clifton 4e01b3
-         break;
Nick Clifton 4e01b3
-       case 1:
Nick Clifton 4e01b3
-         printf ("r3/r4\n");
Nick Clifton 4e01b3
-         break;
Nick Clifton 4e01b3
-       case 2:
Nick Clifton 4e01b3
-         printf (_("Memory\n"));
Nick Clifton 4e01b3
-         break;
Nick Clifton 4e01b3
-       default:
Nick Clifton 4e01b3
-         printf ("??? (%d)\n", val);
Nick Clifton 4e01b3
-         break;
Nick Clifton 4e01b3
-       }
Nick Clifton 4e01b3
+      if (val > 2)
Nick Clifton 4e01b3
+	printf ("(%#x), ", val);
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      switch (val & 3)
Nick Clifton 4e01b3
+	{
Nick Clifton 4e01b3
+	case 0:
Nick Clifton 4e01b3
+	  printf (_("unspecified\n"));
Nick Clifton 4e01b3
+	  break;
Nick Clifton 4e01b3
+	case 1:
Nick Clifton 4e01b3
+	  printf ("r3/r4\n");
Nick Clifton 4e01b3
+	  break;
Nick Clifton 4e01b3
+	case 2:
Nick Clifton 4e01b3
+	  printf (_("memory\n"));
Nick Clifton 4e01b3
+	  break;
Nick Clifton 4e01b3
+	case 3:
Nick Clifton 4e01b3
+	  printf ("???\n");
Nick Clifton 4e01b3
+	  break;
Nick Clifton 4e01b3
+	}
Nick Clifton 4e01b3
       return p;
Nick Clifton 4e01b3
     }
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
Only in binutils-2.27/binutils: readelf.c.orig
Nick Clifton 4e01b3
diff -rup binutils.orig/gas/config/tc-ppc.c binutils-2.27/gas/config/tc-ppc.c
Nick Clifton 4e01b3
--- binutils.orig/gas/config/tc-ppc.c	2017-02-17 12:43:45.411841727 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/gas/config/tc-ppc.c	2017-02-17 14:07:00.702450099 +0000
Nick Clifton 4e01b3
@@ -133,6 +133,7 @@ static void ppc_elf_rdata (int);
Nick Clifton 4e01b3
 static void ppc_elf_lcomm (int);
Nick Clifton 4e01b3
 static void ppc_elf_localentry (int);
Nick Clifton 4e01b3
 static void ppc_elf_abiversion (int);
Nick Clifton 4e01b3
+static void ppc_elf_gnu_attribute (int);
Nick Clifton 4e01b3
 #endif
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 #ifdef TE_PE
Nick Clifton 4e01b3
@@ -270,6 +271,7 @@ const pseudo_typeS md_pseudo_table[] =
Nick Clifton 4e01b3
   { "lcomm",	ppc_elf_lcomm,	0 },
Nick Clifton 4e01b3
   { "localentry", ppc_elf_localentry,	0 },
Nick Clifton 4e01b3
   { "abiversion", ppc_elf_abiversion,	0 },
Nick Clifton 4e01b3
+  { "gnu_attribute", ppc_elf_gnu_attribute, 0},
Nick Clifton 4e01b3
 #endif
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 #ifdef TE_PE
Nick Clifton 4e01b3
@@ -2314,6 +2316,28 @@ ppc_elf_abiversion (int ignore ATTRIBUTE
Nick Clifton 4e01b3
   demand_empty_rest_of_line ();
Nick Clifton 4e01b3
 }
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
+/* Parse a .gnu_attribute directive.  */
Nick Clifton 4e01b3
+static void
Nick Clifton 4e01b3
+ppc_elf_gnu_attribute (int ignored ATTRIBUTE_UNUSED)
Nick Clifton 4e01b3
+{
Nick Clifton 4e01b3
+  int tag = obj_elf_vendor_attribute (OBJ_ATTR_GNU);
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+  /* Check validity of defined powerpc tags.  */
Nick Clifton 4e01b3
+  if (tag == Tag_GNU_Power_ABI_FP
Nick Clifton 4e01b3
+      || tag == Tag_GNU_Power_ABI_Vector
Nick Clifton 4e01b3
+      || tag == Tag_GNU_Power_ABI_Struct_Return)
Nick Clifton 4e01b3
+    {
Nick Clifton 4e01b3
+      unsigned int val;
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      val = bfd_elf_get_obj_attr_int (stdoutput, OBJ_ATTR_GNU, tag);
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+      if ((tag == Tag_GNU_Power_ABI_FP && val > 15)
Nick Clifton 4e01b3
+	  || (tag == Tag_GNU_Power_ABI_Vector && val > 3)
Nick Clifton 4e01b3
+	  || (tag == Tag_GNU_Power_ABI_Struct_Return && val > 2))
Nick Clifton 4e01b3
+	as_warn (_("unknown .gnu_attribute value"));
Nick Clifton 4e01b3
+    }
Nick Clifton 4e01b3
+}
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
 /* Set ABI version in output file.  */
Nick Clifton 4e01b3
 void
Nick Clifton 4e01b3
 ppc_elf_end (void)
Nick Clifton 4e01b3
diff -rup binutils.orig/include/elf/ppc.h binutils-2.27/include/elf/ppc.h
Nick Clifton 4e01b3
--- binutils.orig/include/elf/ppc.h	2017-02-17 12:43:45.573839660 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/include/elf/ppc.h	2017-02-17 14:07:05.868381007 +0000
Nick Clifton 4e01b3
@@ -219,11 +219,18 @@ END_RELOC_NUMBERS (R_PPC_max)
Nick Clifton 4e01b3
 enum
Nick Clifton 4e01b3
 {
Nick Clifton 4e01b3
   /* 0-3 are generic.  */
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP = 4, /* Value 1 for hard-float, 2 for
Nick Clifton 4e01b3
-			       soft-float, 3 for single=precision 
Nick Clifton 4e01b3
-			       hard-float; 0 for not tagged or not
Nick Clifton 4e01b3
-			       using any ABIs affected by the
Nick Clifton 4e01b3
-			       differences.  */
Nick Clifton 4e01b3
+
Nick Clifton 4e01b3
+  /* FP ABI, low 2 bits:
Nick Clifton 4e01b3
+     1 for double precision hard-float,
Nick Clifton 4e01b3
+     2 for soft-float,
Nick Clifton 4e01b3
+     3 for single precision hard-float.
Nick Clifton 4e01b3
+     0 for not tagged or not using any ABIs affected by the differences.
Nick Clifton 4e01b3
+     Next 2 bits:
Nick Clifton 4e01b3
+     1 for ibm long double
Nick Clifton 4e01b3
+     2 for 64-bit long double
Nick Clifton 4e01b3
+     3 for IEEE long double.
Nick Clifton 4e01b3
+     0 for not tagged or not using any ABIs affected by the differences.  */
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP = 4,
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
   /* Value 1 for general purpose registers only, 2 for AltiVec
Nick Clifton 4e01b3
      registers, 3 for SPE registers; 0 for not tagged or not using any
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-01.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-01.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-01.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-01.d	2017-02-17 14:07:19.229202307 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP: Hard float
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP: hard float, unspecified long double
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-02.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-02.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-02.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-02.d	2017-02-17 14:07:30.493051656 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP: Soft float
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP: soft float, unspecified long double
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-03.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-03.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-03.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-03.d	2017-02-17 14:07:36.925965615 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP: Single-precision hard float
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP: single-precision hard float, unspecified long double
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-10.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-10.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-10.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-10.d	2017-02-17 14:12:16.129231314 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP: Hard float
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP: hard float, unspecified long double
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-11.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-11.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-11.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-11.d	2017-02-17 14:07:58.111682262 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP: Hard float
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP: hard float, unspecified long double
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-20.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-20.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-20.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-20.d	2017-02-17 14:08:08.160547857 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP: Soft float
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP: soft float, unspecified long double
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-22.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-22.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-22.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-22.d	2017-02-17 14:08:15.552448993 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP: Soft float
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP: soft float, unspecified long double
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-32.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-32.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-32.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-32.d	2017-02-17 14:08:22.113361240 +0000
Nick Clifton 4e01b3
@@ -2,5 +2,5 @@
Nick Clifton 4e01b3
 #source: attr-gnu-4-2.s
Nick Clifton 4e01b3
 #as: -a32
Nick Clifton 4e01b3
 #ld: -r -melf32ppc
Nick Clifton 4e01b3
-#warning: Warning: .* uses soft float, .* uses single-precision hard float
Nick Clifton 4e01b3
+#warning: Warning: .* uses hard float, .* uses soft float
Nick Clifton 4e01b3
 #target: powerpc*-*-*
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-33.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-33.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-4-33.d	2017-02-17 12:43:45.370842251 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-4-33.d	2017-02-17 14:08:30.113254244 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_FP: Single-precision hard float
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_FP: single-precision hard float, unspecified long double
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-8-11.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-8-11.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-8-11.d	2017-02-17 12:43:45.371842238 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-8-11.d	2017-02-17 14:08:38.258145308 +0000
Nick Clifton 4e01b3
@@ -7,4 +7,4 @@
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 Attribute Section: gnu
Nick Clifton 4e01b3
 File Attributes
Nick Clifton 4e01b3
-  Tag_GNU_Power_ABI_Vector: Generic
Nick Clifton 4e01b3
+  Tag_GNU_Power_ABI_Vector: generic
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-8-23.d binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-8-23.d
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/attr-gnu-8-23.d	2017-02-17 12:43:45.371842238 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/attr-gnu-8-23.d	2017-02-17 14:08:46.755031663 +0000
Nick Clifton 4e01b3
@@ -2,5 +2,5 @@
Nick Clifton 4e01b3
 #source: attr-gnu-8-3.s
Nick Clifton 4e01b3
 #as: -a32
Nick Clifton 4e01b3
 #ld: -r -melf32ppc
Nick Clifton 4e01b3
-#warning: Warning: .* uses vector ABI "SPE", .* uses "AltiVec"
Nick Clifton 4e01b3
+#warning: Warning: .* uses AltiVec vector ABI, .* uses SPE vector ABI
Nick Clifton 4e01b3
 #target: powerpc*-*-*
Nick Clifton 4e01b3
diff -rup binutils.orig/ld/testsuite/ld-powerpc/powerpc.exp binutils-2.27/ld/testsuite/ld-powerpc/powerpc.exp
Nick Clifton 4e01b3
--- binutils.orig/ld/testsuite/ld-powerpc/powerpc.exp	2017-02-17 12:43:45.371842238 +0000
Nick Clifton 4e01b3
+++ binutils-2.27/ld/testsuite/ld-powerpc/powerpc.exp	2017-02-17 14:08:54.354930015 +0000
Nick Clifton 4e01b3
@@ -319,17 +319,13 @@ run_dump_test "attr-gnu-4-10"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-11"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-12"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-13"
Nick Clifton 4e01b3
-run_dump_test "attr-gnu-4-14"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-20"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-21"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-22"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-23"
Nick Clifton 4e01b3
-run_dump_test "attr-gnu-4-24"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-31"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-32"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-4-33"
Nick Clifton 4e01b3
-run_dump_test "attr-gnu-4-34"
Nick Clifton 4e01b3
-run_dump_test "attr-gnu-4-41"
Nick Clifton 4e01b3
 
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-8-11"
Nick Clifton 4e01b3
 run_dump_test "attr-gnu-8-23"