include/coff

2011-05-04  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.
This commit is contained in:
Tristan Gingold 2011-05-04 11:05:14 +00:00
parent ff46fb8f3a
commit 7f41df2e75
6 changed files with 49 additions and 29 deletions

View File

@ -1,3 +1,10 @@
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.
2011-05-04 Alan Modra <amodra@gmail.com>
PR ld/12727

View File

@ -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;

View File

@ -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;

View File

@ -1,3 +1,8 @@
2011-05-04 Tristan Gingold <gingold@adacore.com>
* rs6000.h (union external_auxent): Add x_ftype field.
* rs6k64.h: (struct external_auxent): Remap x_file field.
2011-05-04 Tristan Gingold <gingold@adacore.com>
* rs6000.h (struct external_exceptab): New struct.

View File

@ -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 */

View File

@ -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 {