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]

Re: [Patch]: complete coff/rs6000.h


On May 3, 2011, at 3:07 PM, Richard Sandiford wrote:

> Tristan Gingold <gingold@adacore.com> writes:
>> 2011-04-28  Tristan Gingold  <gingold@adacore.com>
>> 
>> 	* rs6000.h (union external_auxent): Add x_ftype field.
> 
> Please make r6k64.h match here too.

Done, see patch below.
Checked by rebuilding for powerpc64-ibm-aix6.1

>> 	(struct external_exceptab): New struct.
>> 	(EXCEPTSZ): New macro.
>> 	* rs6k64.h: (struct external_exceptab): New struct.
>> 	(EXCEPTSZ): New macro.
> 
> This part's OK.  Please install separately.

I have just installed it.

Tristan.


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

	* rs6000.h (union external_auxent): Add x_ftype field.
	* rs6k64.h: (struct external_auxent): Remap x_file field.

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.
   	coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Ditto.
	(bfd_xcoff64_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/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c
index cb2f1cc..1887bb9 100644
--- a/bfd/coff64-rs6000.c
+++ b/bfd/coff64-rs6000.c
@@ -353,14 +353,15 @@ _bfd_xcoff64_swap_aux_in (bfd *abfd, void *ext1, int type, int in_class,
   switch (in_class)
     {
     case C_FILE:
-      if (ext->x_file.x_n.x_zeroes[0] == 0)
+      if (ext->x_file.x_n.x_n.x_zeroes[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);
+	  in->x_file.x_n.x_offset =
+            H_GET_32 (abfd, ext->x_file.x_n.x_n.x_offset);
 	}
       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;
 
@@ -444,12 +445,13 @@ _bfd_xcoff64_swap_aux_out (bfd *abfd, void *inp, int type, int in_class,
     case C_FILE:
       if (in->x_file.x_n.x_zeroes == 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);
 	}
       H_PUT_8 (abfd, _AUX_FILE, ext->x_auxtype.x_auxtype);
       goto end;
diff --git a/include/coff/rs6000.h b/include/coff/rs6000.h
index c72e6e9..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 */
diff --git a/include/coff/rs6k64.h b/include/coff/rs6k64.h
index ef91db4..453198a 100644
--- a/include/coff/rs6k64.h
+++ b/include/coff/rs6k64.h
@@ -152,15 +152,17 @@ union external_auxent
  	} x_fcnary;
     } x_sym;
          
-    union {
-	char x_fname[E_FILNMLEN];
-	struct {
-	    char x_zeroes[4];
-	    char x_offset[4];
-	    char          x_pad[6];
-	    unsigned char x_ftype[1];
-	    unsigned char x_resv[2];
-	} x_n;
+    struct {
+        union {
+            char x_fname[E_FILNMLEN];
+            struct {
+	        char x_zeroes[4];
+                char x_offset[4];
+	        char x_pad[6];
+            } x_n;
+        } x_n;
+        unsigned char x_ftype[1];
+        unsigned char x_resv[2];
     } x_file;
 
     struct {


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