This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Power and MIPS attributes patch


This patch, intended to be applied after my generic patch 
<http://sourceware.org/ml/binutils/2007-06/msg00278.html>, makes use of 
the generic attributes infrastructure that patch provides to tag the 
floating-point argument-passing and function-return ABIs used on Power and 
MIPS.

For Power this is only relevant for 32-bit, and there are two ABIs 
(hard-float and soft-float; E500 floating-point uses the soft-float ABI) 
to be distinguished by this tag.  For MIPS, it's relevant for all of O32, 
N32 and N64, and at Richard's suggestion the tag is a tristate, with two 
versions of hard float (-msingle-float and -mdouble-float), while other 
aspects of the MIPS ABI may go in other tags in due course.

Tested with crosses to powerpc-linux-gnu and mips-linux-gnu.  OK to 
commit?

bfd:
2007-06-28  Joseph Myers  <joseph@codesourcery.com>

	* elf32-ppc.c (ppc_elf_merge_obj_attributes): New.
	(ppc_elf_merge_private_bfd_data): Call it.
	* elfxx-mips.c (mips_elf_merge_obj_attributes): New.
	(_bfd_mips_elf_merge_private_bfd_data): Call it.

binutils:
2007-06-28  Joseph Myers  <joseph@codesourcery.com>

	* readelf.c (display_power_gnu_attribute,
	display_mips_gnu_attribute, process_power_specific): New.
	(process_mips_specific): Call process_attributes.
	(process_arch_specific): Call process_power_specific.

include/elf:
2007-06-28  Joseph Myers  <joseph@codesourcery.com>

	* mips.h (Tag_GNU_MIPS_ABI_FP): Define.
	* ppc.h (Tag_GNU_Power_ABI_FP): Define.

ld/testsuite:
2007-06-28  Joseph Myers  <joseph@codesourcery.com>

	* ld-mips-elf/attr-gnu-4-0.s, ld-mips-elf/attr-gnu-4-00.d,
	ld-mips-elf/attr-gnu-4-01.d, ld-mips-elf/attr-gnu-4-02.d,
	ld-mips-elf/attr-gnu-4-03.d, ld-mips-elf/attr-gnu-4-1.s,
	ld-mips-elf/attr-gnu-4-10.d, ld-mips-elf/attr-gnu-4-11.d,
	ld-mips-elf/attr-gnu-4-12.d, ld-mips-elf/attr-gnu-4-13.d,
	ld-mips-elf/attr-gnu-4-14.d, ld-mips-elf/attr-gnu-4-2.s,
	ld-mips-elf/attr-gnu-4-20.d, ld-mips-elf/attr-gnu-4-21.d,
	ld-mips-elf/attr-gnu-4-22.d, ld-mips-elf/attr-gnu-4-23.d,
	ld-mips-elf/attr-gnu-4-3.s, ld-mips-elf/attr-gnu-4-30.d,
	ld-mips-elf/attr-gnu-4-31.d, ld-mips-elf/attr-gnu-4-32.d,
	ld-mips-elf/attr-gnu-4-33.d, ld-mips-elf/attr-gnu-4-4.s,
	ld-mips-elf/attr-gnu-4-41.d: New.
	* ld-mips-elf/mips-elf.exp: Run these new tests.
	* ld-powerpc/attr-gnu-4-0.s, ld-powerpc/attr-gnu-4-00.d,
	ld-powerpc/attr-gnu-4-01.d, ld-powerpc/attr-gnu-4-02.d,
	ld-powerpc/attr-gnu-4-1.s, ld-powerpc/attr-gnu-4-10.d,
	ld-powerpc/attr-gnu-4-11.d, ld-powerpc/attr-gnu-4-12.d,
	ld-powerpc/attr-gnu-4-13.d, ld-powerpc/attr-gnu-4-2.s,
	ld-powerpc/attr-gnu-4-20.d, ld-powerpc/attr-gnu-4-21.d,
	ld-powerpc/attr-gnu-4-22.d, ld-powerpc/attr-gnu-4-3.s,
	ld-powerpc/attr-gnu-4-31.d: New.
	* ld-powerpc/powerpc.exp: Run these new tests.

diff -rupN binutils-mainline-attrgen/bfd/elf32-ppc.c binutils-mainline-mipsppc/bfd/elf32-ppc.c
--- binutils-mainline-attrgen/bfd/elf32-ppc.c	2007-05-15 13:55:53.000000000 +0000
+++ binutils-mainline-mipsppc/bfd/elf32-ppc.c	2007-06-26 18:35:39.000000000 +0000
@@ -3583,6 +3583,62 @@ 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)
+{
+  obj_attribute *in_attr;
+  obj_attribute *out_attr;
+
+  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;
+    }
+
+  /* Check for conflicting Tag_GNU_Power_ABI_FP attributes and merge
+     non-conflicting ones.  */
+  in_attr = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
+  out_attr = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
+  if (in_attr[Tag_GNU_Power_ABI_FP].i != out_attr[Tag_GNU_Power_ABI_FP].i)
+    {
+      out_attr[Tag_GNU_Power_ABI_FP].type = 1;
+      if (out_attr[Tag_GNU_Power_ABI_FP].i == 0)
+	out_attr[Tag_GNU_Power_ABI_FP].i = in_attr[Tag_GNU_Power_ABI_FP].i;
+      else if (in_attr[Tag_GNU_Power_ABI_FP].i == 0)
+	;
+      else if (out_attr[Tag_GNU_Power_ABI_FP].i == 1
+	       && in_attr[Tag_GNU_Power_ABI_FP].i == 2)
+	_bfd_error_handler
+	  (_("Warning: %B uses hard float, %B uses soft float"), obfd, ibfd);
+      else if (out_attr[Tag_GNU_Power_ABI_FP].i == 2
+	       && in_attr[Tag_GNU_Power_ABI_FP].i == 1)
+	_bfd_error_handler
+	  (_("Warning: %B uses hard float, %B uses soft float"), ibfd, obfd);
+      else if (in_attr[Tag_GNU_Power_ABI_FP].i > 2)
+	_bfd_error_handler
+	  (_("Warning: %B uses unknown floating point ABI %d"), ibfd,
+	   in_attr[Tag_GNU_Power_ABI_FP].i);
+      else
+	_bfd_error_handler
+	  (_("Warning: %B uses unknown floating point ABI %d"), obfd,
+	   out_attr[Tag_GNU_Power_ABI_FP].i);
+    }
+
+  /* Merge Tag_compatibility attributes and any common GNU ones.  */
+  _bfd_elf_merge_object_attributes (ibfd, obfd);
+
+  return TRUE;
+}
+
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
@@ -3601,6 +3657,9 @@ ppc_elf_merge_private_bfd_data (bfd *ibf
   if (! _bfd_generic_verify_endian_match (ibfd, obfd))
     return FALSE;
 
+  if (!ppc_elf_merge_obj_attributes (ibfd, obfd))
+    return FALSE;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
   if (!elf_flags_init (obfd))
diff -rupN binutils-mainline-attrgen/bfd/elfxx-mips.c binutils-mainline-mipsppc/bfd/elfxx-mips.c
--- binutils-mainline-attrgen/bfd/elfxx-mips.c	2007-05-31 20:22:56.000000000 +0000
+++ binutils-mainline-mipsppc/bfd/elfxx-mips.c	2007-06-27 17:38:40.000000000 +0000
@@ -10961,6 +10961,112 @@ mips_32bit_flags_p (flagword flags)
 }
 
 
+/* Merge object attributes from IBFD into OBFD.  Raise an error if
+   there are conflicting attributes.  */
+static bfd_boolean
+mips_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
+{
+  obj_attribute *in_attr;
+  obj_attribute *out_attr;
+
+  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;
+    }
+
+  /* Check for conflicting Tag_GNU_MIPS_ABI_FP attributes and merge
+     non-conflicting ones.  */
+  in_attr = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
+  out_attr = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
+  if (in_attr[Tag_GNU_MIPS_ABI_FP].i != out_attr[Tag_GNU_MIPS_ABI_FP].i)
+    {
+      out_attr[Tag_GNU_MIPS_ABI_FP].type = 1;
+      if (out_attr[Tag_GNU_MIPS_ABI_FP].i == 0)
+	out_attr[Tag_GNU_MIPS_ABI_FP].i = in_attr[Tag_GNU_MIPS_ABI_FP].i;
+      else if (in_attr[Tag_GNU_MIPS_ABI_FP].i == 0)
+	;
+      else if (in_attr[Tag_GNU_MIPS_ABI_FP].i > 3)
+	_bfd_error_handler
+	  (_("Warning: %B uses unknown floating point ABI %d"), ibfd,
+	   in_attr[Tag_GNU_MIPS_ABI_FP].i);
+      else if (out_attr[Tag_GNU_MIPS_ABI_FP].i > 3)
+	_bfd_error_handler
+	  (_("Warning: %B uses unknown floating point ABI %d"), obfd,
+	   out_attr[Tag_GNU_MIPS_ABI_FP].i);
+      else
+	switch (out_attr[Tag_GNU_MIPS_ABI_FP].i)
+	  {
+	  case 1:
+	    switch (in_attr[Tag_GNU_MIPS_ABI_FP].i)
+	      {
+	      case 2:
+		_bfd_error_handler
+		  (_("Warning: %B uses -msingle-float, %B uses -mdouble-float"),
+		   obfd, ibfd);
+
+	      case 3:
+		_bfd_error_handler
+		  (_("Warning: %B uses hard float, %B uses soft float"),
+		   obfd, ibfd);
+		break;
+
+	      default:
+		abort ();
+	      }
+	    break;
+
+	  case 2:
+	    switch (in_attr[Tag_GNU_MIPS_ABI_FP].i)
+	      {
+	      case 1:
+		_bfd_error_handler
+		  (_("Warning: %B uses -msingle-float, %B uses -mdouble-float"),
+		   ibfd, obfd);
+
+	      case 3:
+		_bfd_error_handler
+		  (_("Warning: %B uses hard float, %B uses soft float"),
+		   obfd, ibfd);
+		break;
+
+	      default:
+		abort ();
+	      }
+	    break;
+
+	  case 3:
+	    switch (in_attr[Tag_GNU_MIPS_ABI_FP].i)
+	      {
+	      case 1:
+	      case 2:
+		_bfd_error_handler
+		  (_("Warning: %B uses hard float, %B uses soft float"),
+		   ibfd, obfd);
+		break;
+
+	      default:
+		abort ();
+	      }
+	    break;
+
+	  default:
+	    abort ();
+	  }
+    }
+
+  /* Merge Tag_compatibility attributes and any common GNU ones.  */
+  _bfd_elf_merge_object_attributes (ibfd, obfd);
+
+  return TRUE;
+}
+
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
@@ -10994,6 +11100,9 @@ _bfd_mips_elf_merge_private_bfd_data (bf
       return FALSE;
     }
 
+  if (!mips_elf_merge_obj_attributes (ibfd, obfd))
+    return FALSE;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   elf_elfheader (obfd)->e_flags |= new_flags & EF_MIPS_NOREORDER;
   old_flags = elf_elfheader (obfd)->e_flags;
diff -rupN binutils-mainline-attrgen/binutils/readelf.c binutils-mainline-mipsppc/binutils/readelf.c
--- binutils-mainline-attrgen/binutils/readelf.c	2007-06-21 23:08:00.000000000 +0000
+++ binutils-mainline-mipsppc/binutils/readelf.c	2007-06-27 17:41:32.000000000 +0000
@@ -8346,6 +8346,111 @@ display_gnu_attribute (unsigned char *p,
   return p;
 }
 
+static unsigned char *
+display_power_gnu_attribute (unsigned char *p, int tag)
+{
+  int type;
+  unsigned int len;
+  int val;
+
+  if (tag == Tag_GNU_Power_ABI_FP)
+    {
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_GNU_Power_ABI_FP: ");
+      switch (val)
+	{
+	case 0:
+	  printf ("Hard or soft float\n");
+	  break;
+	case 1:
+	  printf ("Hard float\n");
+	  break;
+	case 2:
+	  printf ("Soft float\n");
+	  break;
+	default:
+	  printf ("??? (%d)\n", val);
+	  break;
+	}
+      return p;
+   }
+
+  if (tag & 1)
+    type = 1; /* String.  */
+  else
+    type = 2; /* uleb128.  */
+  printf ("  Tag_unknown_%d: ", tag);
+
+  if (type == 1)
+    {
+      printf ("\"%s\"\n", p);
+      p += strlen ((char *)p) + 1;
+    }
+  else
+    {
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("%d (0x%x)\n", val, val);
+    }
+
+  return p;
+}
+
+static unsigned char *
+display_mips_gnu_attribute (unsigned char *p, int tag)
+{
+  int type;
+  unsigned int len;
+  int val;
+
+  if (tag == Tag_GNU_MIPS_ABI_FP)
+    {
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("  Tag_GNU_MIPS_ABI_FP: ");
+      switch (val)
+	{
+	case 0:
+	  printf ("Hard or soft float\n");
+	  break;
+	case 1:
+	  printf ("Hard float (-mdouble-float)\n");
+	  break;
+	case 2:
+	  printf ("Hard float (-msingle-float)\n");
+	  break;
+	case 3:
+	  printf ("Soft float\n");
+	  break;
+	default:
+	  printf ("??? (%d)\n", val);
+	  break;
+	}
+      return p;
+   }
+
+  if (tag & 1)
+    type = 1; /* String.  */
+  else
+    type = 2; /* uleb128.  */
+  printf ("  Tag_unknown_%d: ", tag);
+
+  if (type == 1)
+    {
+      printf ("\"%s\"\n", p);
+      p += strlen ((char *)p) + 1;
+    }
+  else
+    {
+      val = read_uleb128 (p, &len);
+      p += len;
+      printf ("%d (0x%x)\n", val, val);
+    }
+
+  return p;
+}
+
 static int
 process_attributes (FILE *file, const char *public_name,
 		    unsigned int proc_type,
@@ -8486,6 +8591,13 @@ process_arm_specific (FILE *file)
 }
 
 static int
+process_power_specific (FILE *file)
+{
+  return process_attributes (file, NULL, SHT_GNU_ATTRIBUTES, NULL,
+			     display_power_gnu_attribute);
+}
+
+static int
 process_mips_specific (FILE *file)
 {
   Elf_Internal_Dyn *entry;
@@ -8495,6 +8607,9 @@ process_mips_specific (FILE *file)
   size_t options_offset = 0;
   size_t conflicts_offset = 0;
 
+  process_attributes (file, NULL, SHT_GNU_ATTRIBUTES, NULL,
+		      display_mips_gnu_attribute);
+
   /* We have a lot of special sections.  Thanks SGI!  */
   if (dynamic_section == NULL)
     /* No information available.  */
@@ -9260,6 +9375,9 @@ process_arch_specific (FILE *file)
     case EM_MIPS_RS3_LE:
       return process_mips_specific (file);
       break;
+    case EM_PPC:
+      return process_power_specific (file);
+      break;
     default:
       break;
     }
diff -rupN binutils-mainline-attrgen/include/elf/mips.h binutils-mainline-mipsppc/include/elf/mips.h
--- binutils-mainline-attrgen/include/elf/mips.h	2006-10-28 10:13:49.000000000 +0000
+++ binutils-mainline-mipsppc/include/elf/mips.h	2007-06-27 17:33:33.000000000 +0000
@@ -1006,4 +1006,15 @@ extern void bfd_mips_elf64_swap_reginfo_
 #define OHWA0_R4KEOP_CLEAN	0x00000002
 
 
+/* Object attribute tags.  */
+enum
+{
+  /* 0-3 are generic.  */
+  Tag_GNU_MIPS_ABI_FP = 4, /* Value 1 for hard-float -mdouble-float, 2
+			      for hard-float -msingle-float, 3 for
+			      soft-float; 0 for not tagged or not
+			      using any ABIs affected by the
+			      differences.  */
+};
+
 #endif /* _ELF_MIPS_H */
diff -rupN binutils-mainline-attrgen/include/elf/ppc.h binutils-mainline-mipsppc/include/elf/ppc.h
--- binutils-mainline-attrgen/include/elf/ppc.h	2005-05-14 05:07:15.000000000 +0000
+++ binutils-mainline-mipsppc/include/elf/ppc.h	2007-06-25 22:13:27.000000000 +0000
@@ -171,4 +171,15 @@ END_RELOC_NUMBERS (R_PPC_max)
 						   builds when those objects \
 						   are not to be furhter \
 						   relocated.  */
+
+/* Object attribute tags.  */
+enum
+{
+  /* 0-3 are generic.  */
+  Tag_GNU_Power_ABI_FP = 4, /* Value 1 for hard-float, 2 for
+			       soft-float; 0 for not tagged or not
+			       using any ABIs affected by the
+			       differences.  */
+};
+
 #endif /* _ELF_PPC_H */
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-0.s binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-0.s
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-0.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-0.s	2007-06-26 18:00:37.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,0
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-00.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-00.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-00.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-00.d	2007-06-26 19:27:51.000000000 +0000
@@ -0,0 +1,7 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-0.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-01.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-01.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-01.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-01.d	2007-06-27 17:53:30.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-1.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Hard float \(-mdouble-float\)
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-02.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-02.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-02.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-02.d	2007-06-27 17:53:38.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-2.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Hard float \(-msingle-float\)
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-03.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-03.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-03.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-03.d	2007-06-27 17:44:18.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-3.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Soft float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-1.s binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-1.s
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-1.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-1.s	2007-06-26 18:00:45.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,1
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-10.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-10.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-10.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-10.d	2007-06-27 17:53:46.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-0.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Hard float \(-mdouble-float\)
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-11.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-11.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-11.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-11.d	2007-06-27 17:53:55.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-1.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Hard float \(-mdouble-float\)
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-12.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-12.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-12.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-12.d	2007-06-27 17:49:57.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-2.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses -msingle-float, .* uses -mdouble-float
+#target: mips*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-13.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-13.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-13.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-13.d	2007-06-27 17:46:36.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-3.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses hard float, .* uses soft float
+#target: mips*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d	2007-06-27 17:46:00.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-4.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses unknown floating point ABI 4
+#target: mips*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-2.s binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-2.s
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-2.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-2.s	2007-06-26 18:00:54.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,2
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-20.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-20.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-20.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-20.d	2007-06-27 17:54:06.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-0.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Hard float \(-msingle-float\)
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-21.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-21.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-21.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-21.d	2007-06-27 17:50:09.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-1.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses -msingle-float, .* uses -mdouble-float
+#target: mips*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-22.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-22.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-22.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-22.d	2007-06-27 17:54:15.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-2.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Hard float \(-msingle-float\)
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-23.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-23.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-23.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-23.d	2007-06-27 17:48:54.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-3.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses hard float, .* uses soft float
+#target: mips*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-3.s binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-3.s
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-3.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-3.s	2007-06-26 18:56:35.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,3
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-30.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-30.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-30.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-30.d	2007-06-27 17:47:11.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-3.s
+#source: attr-gnu-4-0.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Soft float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-31.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-31.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-31.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-31.d	2007-06-27 17:46:50.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-3.s
+#source: attr-gnu-4-1.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses hard float, .* uses soft float
+#target: mips*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-32.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-32.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-32.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-32.d	2007-06-27 17:47:51.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-3.s
+#source: attr-gnu-4-2.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses hard float, .* uses soft float
+#target: mips*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-33.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-33.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-33.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-33.d	2007-06-27 17:47:22.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-3.s
+#source: attr-gnu-4-3.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_MIPS_ABI_FP: Soft float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-4.s binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-4.s
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-4.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-4.s	2007-06-27 17:39:39.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,4
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d	2007-06-27 17:46:07.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-4.s
+#source: attr-gnu-4-1.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses unknown floating point ABI 4
+#target: mips*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/mips-elf.exp binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/mips-elf.exp
--- binutils-mainline-attrgen/ld/testsuite/ld-mips-elf/mips-elf.exp	2007-04-12 19:26:09.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-mips-elf/mips-elf.exp	2007-06-27 17:40:31.000000000 +0000
@@ -269,3 +269,22 @@ set mips16_intermix_test {
 }
 
 run_ld_link_tests $mips16_intermix_test
+
+run_dump_test "attr-gnu-4-00"
+run_dump_test "attr-gnu-4-01"
+run_dump_test "attr-gnu-4-02"
+run_dump_test "attr-gnu-4-03"
+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-30"
+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-41"
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-0.s binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-0.s
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-0.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-0.s	2007-06-26 18:00:37.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,0
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-00.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-00.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-00.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-00.d	2007-06-26 18:50:30.000000000 +0000
@@ -0,0 +1,7 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-0.s
+#as: -a32
+#ld: -r -melf32ppc
+#readelf: -A
+#target: powerpc*-*-*
+
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-01.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-01.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-01.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-01.d	2007-06-26 18:12:00.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-1.s
+#as: -a32
+#ld: -r -melf32ppc
+#readelf: -A
+#target: powerpc*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_Power_ABI_FP: Hard float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-02.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-02.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-02.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-02.d	2007-06-26 18:49:32.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-2.s
+#as: -a32
+#ld: -r -melf32ppc
+#readelf: -A
+#target: powerpc*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_Power_ABI_FP: Soft float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-1.s binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-1.s
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-1.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-1.s	2007-06-26 18:00:45.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,1
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-10.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-10.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-10.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-10.d	2007-06-26 18:48:54.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-0.s
+#as: -a32
+#ld: -r -melf32ppc
+#readelf: -A
+#target: powerpc*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_Power_ABI_FP: Hard float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-11.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-11.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-11.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-11.d	2007-06-26 18:51:17.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-1.s
+#as: -a32
+#ld: -r -melf32ppc
+#readelf: -A
+#target: powerpc*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_Power_ABI_FP: Hard float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-12.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-12.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-12.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-12.d	2007-06-26 18:53:23.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-2.s
+#as: -a32
+#ld: -r -melf32ppc
+#warning: Warning: .* uses hard float, .* uses soft float
+#target: powerpc*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-13.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-13.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-13.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-13.d	2007-06-26 18:57:09.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-3.s
+#as: -a32
+#ld: -r -melf32ppc
+#warning: Warning: .* uses unknown floating point ABI 3
+#target: powerpc*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-2.s binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-2.s
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-2.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-2.s	2007-06-26 18:00:54.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,2
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-20.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-20.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-20.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-20.d	2007-06-26 18:49:41.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-0.s
+#as: -a32
+#ld: -r -melf32ppc
+#readelf: -A
+#target: powerpc*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_Power_ABI_FP: Soft float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-21.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-21.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-21.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-21.d	2007-06-26 18:53:38.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-1.s
+#as: -a32
+#ld: -r -melf32ppc
+#warning: Warning: .* uses hard float, .* uses soft float
+#target: powerpc*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-22.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-22.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-22.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-22.d	2007-06-26 18:51:35.000000000 +0000
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-2.s
+#as: -a32
+#ld: -r -melf32ppc
+#readelf: -A
+#target: powerpc*-*-*
+
+Attribute Section: gnu
+File Attributes
+  Tag_GNU_Power_ABI_FP: Soft float
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-3.s binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-3.s
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-3.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-3.s	2007-06-26 18:56:35.000000000 +0000
@@ -0,0 +1 @@
+.gnu_attribute 4,3
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-31.d binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-31.d
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/attr-gnu-4-31.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/attr-gnu-4-31.d	2007-06-26 18:57:23.000000000 +0000
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-3.s
+#source: attr-gnu-4-1.s
+#as: -a32
+#ld: -r -melf32ppc
+#warning: Warning: .* uses unknown floating point ABI 3
+#target: powerpc*-*-*
diff -rupN binutils-mainline-attrgen/ld/testsuite/ld-powerpc/powerpc.exp binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/powerpc.exp
--- binutils-mainline-attrgen/ld/testsuite/ld-powerpc/powerpc.exp	2007-05-15 12:22:34.000000000 +0000
+++ binutils-mainline-mipsppc/ld/testsuite/ld-powerpc/powerpc.exp	2007-06-26 19:15:49.000000000 +0000
@@ -147,3 +147,15 @@ if [ supports_ppc64 ] then {
 }
 
 run_dump_test "plt1"
+
+run_dump_test "attr-gnu-4-00"
+run_dump_test "attr-gnu-4-01"
+run_dump_test "attr-gnu-4-02"
+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-20"
+run_dump_test "attr-gnu-4-21"
+run_dump_test "attr-gnu-4-22"
+run_dump_test "attr-gnu-4-31"

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]