[Patch]: complete coff/rs6000.h

Tristan Gingold gingold@adacore.com
Tue May 3 09:45:00 GMT 2011


On May 3, 2011, at 10:35 AM, Richard Sandiford wrote:
> x_ftype applies to both name encodings, so something like the syment
> definition would seem better.  (That'd mean changing the bfd code too,
> of course.)

[...]

> This part's OK though.  Please add the corresponding 64-bit definition
> to rs6k64.h while you're there, to keep the two in sync.

Thank you for the review.  Here is the updated version.

Simply checked by rebuilding binutils.

Ok for trunk ?

Tristan.

include/coff:
2011-04-28  Tristan Gingold  <gingold@adacore.com>

	* rs6000.h (union external_auxent): Add x_ftype field.
	(struct external_exceptab): New struct.
	(EXCEPTSZ): New macro.
	* rs6k64.h: (struct external_exceptab): New struct.
	(EXCEPTSZ): New macro.

bfd/
2011-04-28  Tristan Gingold  <gingold@adacore.com>
    
    	coff-rs6000.c (_bfd_xcoff_swap_aux_in): Adjust for x_file.
	(bfd_xcoff_swap_aux_out): Ditto.

diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 41bec09..21da658 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -463,23 +463,23 @@ _bfd_xcoff_swap_aux_in (bfd *abfd, PTR ext1, int type, int in_class,
   switch (in_class)
     {
     case C_FILE:
-      if (ext->x_file.x_fname[0] == 0)
+      if (ext->x_file.x_n.x_fname[0] == 0)
 	{
 	  in->x_file.x_n.x_zeroes = 0;
 	  in->x_file.x_n.x_offset =
-	    H_GET_32 (abfd, ext->x_file.x_n.x_offset);
+	    H_GET_32 (abfd, ext->x_file.x_n.x_n.x_offset);
 	}
       else
 	{
 	  if (numaux > 1)
 	    {
 	      if (indx == 0)
-		memcpy (in->x_file.x_fname, ext->x_file.x_fname,
+		memcpy (in->x_file.x_fname, ext->x_file.x_n.x_fname,
 			numaux * sizeof (AUXENT));
 	    }
 	  else
 	    {
-	      memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
+	      memcpy (in->x_file.x_fname, ext->x_file.x_n.x_fname, FILNMLEN);
 	    }
 	}
       goto end;
@@ -578,12 +578,13 @@ _bfd_xcoff_swap_aux_out (bfd *abfd, PTR inp, int type, int in_class,
     case C_FILE:
       if (in->x_file.x_fname[0] == 0)
 	{
-	  H_PUT_32 (abfd, 0, ext->x_file.x_n.x_zeroes);
-	  H_PUT_32 (abfd, in->x_file.x_n.x_offset, ext->x_file.x_n.x_offset);
+	  H_PUT_32 (abfd, 0, ext->x_file.x_n.x_n.x_zeroes);
+	  H_PUT_32 (abfd, in->x_file.x_n.x_offset,
+                    ext->x_file.x_n.x_n.x_offset);
 	}
       else
 	{
-	  memcpy (ext->x_file.x_fname, in->x_file.x_fname, FILNMLEN);
+	  memcpy (ext->x_file.x_n.x_fname, in->x_file.x_fname, FILNMLEN);
 	}
       goto end;
 
diff --git a/include/coff/rs6000.h b/include/coff/rs6000.h
index 960dd32..d5b2af2 100644
--- a/include/coff/rs6000.h
+++ b/include/coff/rs6000.h
@@ -168,13 +168,16 @@ union external_auxent {
 		char x_tvndx[2];		/* tv index */
 	} x_sym;
 
-	union {
-		char x_fname[E_FILNMLEN];
-		struct {
-			char x_zeroes[4];
-			char x_offset[4];
-		} x_n;
-	} x_file;
+        struct {
+                union {
+                        char x_fname[E_FILNMLEN];
+                        struct {
+                                char x_zeroes[4];
+                                char x_offset[4];
+                        } x_n;
+                } x_n;
+                char x_ftype[1];
+        } x_file;
 
 	struct {
 		char x_scnlen[4];			/* section length */
@@ -276,3 +279,15 @@ struct external_ldrel
 };
 
 #define LDRELSZ (2 * 4 + 2 * 2)
+
+struct external_exceptab
+{
+  union {
+    bfd_byte e_symndx[4];
+    bfd_byte e_paddr[4];
+  } e_addr;
+  bfd_byte e_lang[1];
+  bfd_byte e_reason[1];
+};
+
+#define EXCEPTSZ (4 + 2)
diff --git a/include/coff/rs6k64.h b/include/coff/rs6k64.h
index 516758b..ef91db4 100644
--- a/include/coff/rs6k64.h
+++ b/include/coff/rs6k64.h
@@ -259,3 +259,15 @@ struct external_ldrel
 };
 
 #define LDRELSZ (16)
+
+struct external_exceptab
+{
+  union {
+    bfd_byte e_symndx[4];
+    bfd_byte e_paddr[8];
+  } e_addr;
+  bfd_byte e_lang[1];
+  bfd_byte e_reason[1];
+};
+
+#define EXCEPTSZ (10)



More information about the Binutils mailing list