2000-11-15 Kazu Hirata <kazu@hxi.com>
* coff-arm.c: Fix formatting. * coff-ppc.c: Likewise. * coff-rs6000.c: Likewise.
This commit is contained in:
parent
b095261a94
commit
c5930ee6b4
4 changed files with 349 additions and 352 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2000-11-15 Kazu Hirata <kazu@hxi.com>
|
||||||
|
|
||||||
|
* coff-arm.c: Fix formatting.
|
||||||
|
* coff-ppc.c: Likewise.
|
||||||
|
* coff-rs6000.c: Likewise.
|
||||||
|
|
||||||
2000-11-15 Richard Henderson <rth@redhat.com>
|
2000-11-15 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* elf64-alpha.c (elf64_alpha_check_relocs): Create the reloc
|
* elf64-alpha.c (elf64_alpha_check_relocs): Create the reloc
|
||||||
|
|
|
@ -985,7 +985,7 @@ insert_thumb_branch (br_insn, rel_off)
|
||||||
else if ((br_insn & HI_LOW_ORDER) == HI_LOW_ORDER)
|
else if ((br_insn & HI_LOW_ORDER) == HI_LOW_ORDER)
|
||||||
br_insn = HI_LOW_ORDER | (high_bits << 16) | low_bits;
|
br_insn = HI_LOW_ORDER | (high_bits << 16) | low_bits;
|
||||||
else
|
else
|
||||||
abort(); /* error - not a valid branch instruction form */
|
abort (); /* error - not a valid branch instruction form */
|
||||||
|
|
||||||
/* FIXME: abort is probably not the right call. krk@cygnus.com */
|
/* FIXME: abort is probably not the right call. krk@cygnus.com */
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ extern void dump_toc PARAMS ((PTR));
|
||||||
fprintf(stderr,\
|
fprintf(stderr,\
|
||||||
_("File %s, line %d, Hash check failure, bad eye %8s\n"), \
|
_("File %s, line %d, Hash check failure, bad eye %8s\n"), \
|
||||||
__FILE__, __LINE__, addr->eye_catcher); \
|
__FILE__, __LINE__, addr->eye_catcher); \
|
||||||
abort(); \
|
abort (); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -925,7 +925,7 @@ ppc_record_toc_entry(abfd, info, sec, sym, toc_kind)
|
||||||
/* allocate a table */
|
/* allocate a table */
|
||||||
local_syms =
|
local_syms =
|
||||||
(int *) bfd_zalloc (abfd,
|
(int *) bfd_zalloc (abfd,
|
||||||
obj_raw_syment_count(abfd) * sizeof(int));
|
obj_raw_syment_count(abfd) * sizeof (int));
|
||||||
if (local_syms == 0)
|
if (local_syms == 0)
|
||||||
return false;
|
return false;
|
||||||
obj_coff_local_toc_table(abfd) = local_syms;
|
obj_coff_local_toc_table(abfd) = local_syms;
|
||||||
|
@ -1151,7 +1151,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
if (r_type == IMAGE_REL_PPC_IMGLUE && h == 0)
|
if (r_type == IMAGE_REL_PPC_IMGLUE && h == 0)
|
||||||
{
|
{
|
||||||
/* An IMGLUE reloc must have a name. Something is very wrong. */
|
/* An IMGLUE reloc must have a name. Something is very wrong. */
|
||||||
abort();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
sec = NULL;
|
sec = NULL;
|
||||||
|
@ -1219,7 +1219,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
if ( toc_section == NULL )
|
if ( toc_section == NULL )
|
||||||
{
|
{
|
||||||
/* There is no toc section. Something is very wrong. */
|
/* There is no toc section. Something is very wrong. */
|
||||||
abort();
|
abort ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1495,7 +1495,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
if (myh == 0)
|
if (myh == 0)
|
||||||
{
|
{
|
||||||
/* Missing magic cookies. Something is very wrong. */
|
/* Missing magic cookies. Something is very wrong. */
|
||||||
abort();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
val = myh->root.u.def.value +
|
val = myh->root.u.def.value +
|
||||||
|
@ -1702,14 +1702,14 @@ ppc_allocate_toc_section (info)
|
||||||
if (bfd_of_toc_owner == 0)
|
if (bfd_of_toc_owner == 0)
|
||||||
{
|
{
|
||||||
/* No toc owner? Something is very wrong. */
|
/* No toc owner? Something is very wrong. */
|
||||||
abort();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
s = bfd_get_section_by_name ( bfd_of_toc_owner , TOC_SECTION_NAME);
|
s = bfd_get_section_by_name ( bfd_of_toc_owner , TOC_SECTION_NAME);
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
{
|
{
|
||||||
/* No toc section? Something is very wrong. */
|
/* No toc section? Something is very wrong. */
|
||||||
abort();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
foo = (bfd_byte *) bfd_alloc(bfd_of_toc_owner, global_toc_size);
|
foo = (bfd_byte *) bfd_alloc(bfd_of_toc_owner, global_toc_size);
|
||||||
|
@ -1752,7 +1752,7 @@ ppc_process_before_allocation (abfd, info)
|
||||||
i=_bfd_coff_read_internal_relocs(abfd,sec,1,0,0,0);
|
i=_bfd_coff_read_internal_relocs(abfd,sec,1,0,0,0);
|
||||||
|
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
abort();
|
abort ();
|
||||||
|
|
||||||
for (rel=i;rel<i+sec->reloc_count;++rel)
|
for (rel=i;rel<i+sec->reloc_count;++rel)
|
||||||
{
|
{
|
||||||
|
@ -2004,7 +2004,7 @@ ppc_imglue_reloc (abfd,
|
||||||
|
|
||||||
|
|
||||||
#define MAX_RELOC_INDEX \
|
#define MAX_RELOC_INDEX \
|
||||||
(sizeof(ppc_coff_howto_table) / sizeof(ppc_coff_howto_table[0]) - 1)
|
(sizeof (ppc_coff_howto_table) / sizeof (ppc_coff_howto_table[0]) - 1)
|
||||||
|
|
||||||
/* FIXME: There is a possiblity that when we read in a reloc from a file,
|
/* FIXME: There is a possiblity that when we read in a reloc from a file,
|
||||||
that there are some bits encoded in the upper portion of the
|
that there are some bits encoded in the upper portion of the
|
||||||
|
@ -2036,11 +2036,11 @@ ppc_coff_rtype2howto (relent, internal)
|
||||||
|
|
||||||
/* the masking process only slices off the bottom byte for r_type. */
|
/* the masking process only slices off the bottom byte for r_type. */
|
||||||
if ( r_type > MAX_RELOC_INDEX )
|
if ( r_type > MAX_RELOC_INDEX )
|
||||||
abort();
|
abort ();
|
||||||
|
|
||||||
/* check for absolute crap */
|
/* check for absolute crap */
|
||||||
if ( junk != 0 )
|
if ( junk != 0 )
|
||||||
abort();
|
abort ();
|
||||||
|
|
||||||
switch(r_type)
|
switch(r_type)
|
||||||
{
|
{
|
||||||
|
@ -2107,11 +2107,11 @@ coff_ppc_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
|
||||||
|
|
||||||
/* the masking process only slices off the bottom byte for r_type. */
|
/* the masking process only slices off the bottom byte for r_type. */
|
||||||
if ( r_type > MAX_RELOC_INDEX )
|
if ( r_type > MAX_RELOC_INDEX )
|
||||||
abort();
|
abort ();
|
||||||
|
|
||||||
/* check for absolute crap */
|
/* check for absolute crap */
|
||||||
if ( junk != 0 )
|
if ( junk != 0 )
|
||||||
abort();
|
abort ();
|
||||||
|
|
||||||
switch(r_type)
|
switch(r_type)
|
||||||
{
|
{
|
||||||
|
@ -2278,7 +2278,7 @@ ppc_coff_swap_sym_in_hook (abfd, ext1, in1)
|
||||||
|| !bfd_set_section_alignment (abfd, s, 2))
|
|| !bfd_set_section_alignment (abfd, s, 2))
|
||||||
{
|
{
|
||||||
/* FIXME: set appropriate bfd error */
|
/* FIXME: set appropriate bfd error */
|
||||||
abort();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* save the bfd for later allocation */
|
/* save the bfd for later allocation */
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
Using the following chars caused a compiler warning on HIUX (so I replaced
|
Using the following chars caused a compiler warning on HIUX (so I replaced
|
||||||
them with octal escapes), and isn't useful without an understanding of what
|
them with octal escapes), and isn't useful without an understanding of what
|
||||||
character set it is.
|
character set it is.
|
||||||
Written by Metin G. Ozisik, Mimi Ph\373\364ng-Th\345o V\365,
|
Written by Metin G. Ozisik, Mimi Ph\373\364ng-Th\345o V\365,
|
||||||
and John Gilmore.
|
and John Gilmore.
|
||||||
Archive support from Damon A. Permezel.
|
Archive support from Damon A. Permezel.
|
||||||
Contributed by IBM Corporation and Cygnus Support.
|
Contributed by IBM Corporation and Cygnus Support.
|
||||||
|
@ -26,7 +26,6 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
|
||||||
#include "bfd.h"
|
#include "bfd.h"
|
||||||
#include "sysdep.h"
|
#include "sysdep.h"
|
||||||
#include "libbfd.h"
|
#include "libbfd.h"
|
||||||
|
@ -37,7 +36,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
#define TARGET_SYM rs6000coff_vec
|
#define TARGET_SYM rs6000coff_vec
|
||||||
#include "xcoff-target.h"
|
#include "xcoff-target.h"
|
||||||
|
|
||||||
|
|
||||||
/* The main body of code is in coffcode.h. */
|
/* The main body of code is in coffcode.h. */
|
||||||
|
|
||||||
static const char *normalize_filename PARAMS ((bfd *));
|
static const char *normalize_filename PARAMS ((bfd *));
|
||||||
|
@ -133,7 +131,6 @@ _bfd_xcoff_is_local_label_name (abfd, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_bfd_xcoff_swap_sym_in (abfd, ext1, in1)
|
_bfd_xcoff_swap_sym_in (abfd, ext1, in1)
|
||||||
bfd *abfd;
|
bfd *abfd;
|
||||||
|
@ -143,19 +140,18 @@ _bfd_xcoff_swap_sym_in (abfd, ext1, in1)
|
||||||
SYMENT *ext = (SYMENT *)ext1;
|
SYMENT *ext = (SYMENT *)ext1;
|
||||||
struct internal_syment *in = (struct internal_syment *)in1;
|
struct internal_syment *in = (struct internal_syment *)in1;
|
||||||
|
|
||||||
|
|
||||||
if(ext->e.e_name[0] != 0)
|
if(ext->e.e_name[0] != 0)
|
||||||
{
|
{
|
||||||
memcpy(in->_n._n_name, ext->e.e_name, SYMNMLEN);
|
memcpy(in->_n._n_name, ext->e.e_name, SYMNMLEN);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
in->_n._n_n._n_zeroes = 0;
|
in->_n._n_n._n_zeroes = 0;
|
||||||
in->_n._n_n._n_offset =
|
in->_n._n_n._n_offset =
|
||||||
bfd_h_get_32(abfd, (bfd_byte *) ext->e.e.e_offset);
|
bfd_h_get_32(abfd, (bfd_byte *) ext->e.e.e_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
in->n_value = bfd_h_get_32(abfd, (bfd_byte *) ext->e_value);
|
in->n_value = bfd_h_get_32(abfd, (bfd_byte *) ext->e_value);
|
||||||
in->n_scnum = bfd_h_get_16(abfd, (bfd_byte *) ext->e_scnum);
|
in->n_scnum = bfd_h_get_16(abfd, (bfd_byte *) ext->e_scnum);
|
||||||
in->n_type = bfd_h_get_16(abfd, (bfd_byte *) ext->e_type);
|
in->n_type = bfd_h_get_16(abfd, (bfd_byte *) ext->e_type);
|
||||||
in->n_sclass = bfd_h_get_8(abfd, ext->e_sclass);
|
in->n_sclass = bfd_h_get_8(abfd, ext->e_sclass);
|
||||||
|
@ -178,7 +174,7 @@ _bfd_xcoff_swap_sym_out (abfd, inp, extp)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bfd_h_put_32(abfd, 0, (bfd_byte *) ext->e.e.e_zeroes);
|
bfd_h_put_32(abfd, 0, (bfd_byte *) ext->e.e.e_zeroes);
|
||||||
bfd_h_put_32(abfd, in->_n._n_n._n_offset,
|
bfd_h_put_32(abfd, in->_n._n_n._n_offset,
|
||||||
(bfd_byte *) ext->e.e.e_offset);
|
(bfd_byte *) ext->e.e.e_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +210,7 @@ _bfd_xcoff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
||||||
case C_FILE:
|
case C_FILE:
|
||||||
if (ext->x_file.x_fname[0] == 0) {
|
if (ext->x_file.x_fname[0] == 0) {
|
||||||
in->x_file.x_n.x_zeroes = 0;
|
in->x_file.x_n.x_zeroes = 0;
|
||||||
in->x_file.x_n.x_offset =
|
in->x_file.x_n.x_offset =
|
||||||
bfd_h_get_32(abfd, (bfd_byte *) ext->x_file.x_n.x_offset);
|
bfd_h_get_32(abfd, (bfd_byte *) ext->x_file.x_n.x_offset);
|
||||||
} else {
|
} else {
|
||||||
if (numaux > 1)
|
if (numaux > 1)
|
||||||
|
@ -235,7 +231,7 @@ _bfd_xcoff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
||||||
case C_HIDEXT:
|
case C_HIDEXT:
|
||||||
if (indx + 1 == numaux)
|
if (indx + 1 == numaux)
|
||||||
{
|
{
|
||||||
in->x_csect.x_scnlen.l =
|
in->x_csect.x_scnlen.l =
|
||||||
bfd_h_get_32 (abfd, ext->x_csect.x_scnlen);
|
bfd_h_get_32 (abfd, ext->x_csect.x_scnlen);
|
||||||
in->x_csect.x_parmhash = bfd_h_get_32 (abfd,
|
in->x_csect.x_parmhash = bfd_h_get_32 (abfd,
|
||||||
ext->x_csect.x_parmhash);
|
ext->x_csect.x_parmhash);
|
||||||
|
@ -255,11 +251,11 @@ _bfd_xcoff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
||||||
case C_LEAFSTAT:
|
case C_LEAFSTAT:
|
||||||
case C_HIDDEN:
|
case C_HIDDEN:
|
||||||
if (type == T_NULL) {
|
if (type == T_NULL) {
|
||||||
in->x_scn.x_scnlen = bfd_h_get_32(abfd,
|
in->x_scn.x_scnlen = bfd_h_get_32(abfd,
|
||||||
(bfd_byte *) ext->x_scn.x_scnlen);
|
(bfd_byte *) ext->x_scn.x_scnlen);
|
||||||
in->x_scn.x_nreloc = bfd_h_get_16(abfd,
|
in->x_scn.x_nreloc = bfd_h_get_16(abfd,
|
||||||
(bfd_byte *) ext->x_scn.x_nreloc);
|
(bfd_byte *) ext->x_scn.x_nreloc);
|
||||||
in->x_scn.x_nlinno = bfd_h_get_16(abfd,
|
in->x_scn.x_nlinno = bfd_h_get_16(abfd,
|
||||||
(bfd_byte *) ext->x_scn.x_nlinno);
|
(bfd_byte *) ext->x_scn.x_nlinno);
|
||||||
/* PE defines some extra fields; we zero them out for
|
/* PE defines some extra fields; we zero them out for
|
||||||
safety. */
|
safety. */
|
||||||
|
@ -305,12 +301,10 @@ _bfd_xcoff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
||||||
|
|
||||||
end: ;
|
end: ;
|
||||||
/* the semicolon is because MSVC doesn't like labels at
|
/* the semicolon is because MSVC doesn't like labels at
|
||||||
end of block. */
|
end of block. */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
_bfd_xcoff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
|
_bfd_xcoff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
|
||||||
bfd *abfd;
|
bfd *abfd;
|
||||||
|
@ -377,9 +371,9 @@ _bfd_xcoff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
|
||||||
|
|
||||||
if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
|
if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
|
||||||
{
|
{
|
||||||
bfd_h_put_32(abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,
|
bfd_h_put_32(abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,
|
||||||
(bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
|
(bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
|
||||||
PUTWORD(abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l,
|
PUTWORD(abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l,
|
||||||
(bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_endndx);
|
(bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_endndx);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -399,9 +393,9 @@ _bfd_xcoff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
|
||||||
(bfd_byte *) ext->x_sym.x_misc.x_fsize);
|
(bfd_byte *) ext->x_sym.x_misc.x_fsize);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bfd_h_put_16(abfd, in->x_sym.x_misc.x_lnsz.x_lnno,
|
bfd_h_put_16(abfd, in->x_sym.x_misc.x_lnsz.x_lnno,
|
||||||
(bfd_byte *)ext->x_sym.x_misc.x_lnsz.x_lnno);
|
(bfd_byte *)ext->x_sym.x_misc.x_lnsz.x_lnno);
|
||||||
bfd_h_put_16(abfd, in->x_sym.x_misc.x_lnsz.x_size,
|
bfd_h_put_16(abfd, in->x_sym.x_misc.x_lnsz.x_size,
|
||||||
(bfd_byte *)ext->x_sym.x_misc.x_lnsz.x_size);
|
(bfd_byte *)ext->x_sym.x_misc.x_lnsz.x_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,7 +403,6 @@ end:
|
||||||
return bfd_coff_auxesz (abfd);
|
return bfd_coff_auxesz (abfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* The XCOFF reloc table. Actually, XCOFF relocations specify the
|
/* The XCOFF reloc table. Actually, XCOFF relocations specify the
|
||||||
bitsize and whether they are signed or not, along with a
|
bitsize and whether they are signed or not, along with a
|
||||||
|
@ -424,344 +417,344 @@ end:
|
||||||
reloc_howto_type xcoff_howto_table[] =
|
reloc_howto_type xcoff_howto_table[] =
|
||||||
{
|
{
|
||||||
/* Standard 32 bit relocation. */
|
/* Standard 32 bit relocation. */
|
||||||
HOWTO (0, /* type */
|
HOWTO (0, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_POS", /* name */
|
"R_POS", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* 32 bit relocation, but store negative value. */
|
/* 32 bit relocation, but store negative value. */
|
||||||
HOWTO (1, /* type */
|
HOWTO (1, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
-2, /* size (0 = byte, 1 = short, 2 = long) */
|
-2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_NEG", /* name */
|
"R_NEG", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* 32 bit PC relative relocation. */
|
/* 32 bit PC relative relocation. */
|
||||||
HOWTO (2, /* type */
|
HOWTO (2, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
true, /* pc_relative */
|
true, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_signed, /* complain_on_overflow */
|
complain_overflow_signed, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_REL", /* name */
|
"R_REL", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* 16 bit TOC relative relocation. */
|
/* 16 bit TOC relative relocation. */
|
||||||
HOWTO (3, /* type */
|
HOWTO (3, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_TOC", /* name */
|
"R_TOC", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* I don't really know what this is. */
|
/* I don't really know what this is. */
|
||||||
HOWTO (4, /* type */
|
HOWTO (4, /* type */
|
||||||
1, /* rightshift */
|
1, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RTB", /* name */
|
"R_RTB", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* External TOC relative symbol. */
|
/* External TOC relative symbol. */
|
||||||
HOWTO (5, /* type */
|
HOWTO (5, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_GL", /* name */
|
"R_GL", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Local TOC relative symbol. */
|
/* Local TOC relative symbol. */
|
||||||
HOWTO (6, /* type */
|
HOWTO (6, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_TCL", /* name */
|
"R_TCL", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
EMPTY_HOWTO (7),
|
EMPTY_HOWTO (7),
|
||||||
|
|
||||||
/* Non modifiable absolute branch. */
|
/* Non modifiable absolute branch. */
|
||||||
HOWTO (8, /* type */
|
HOWTO (8, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
26, /* bitsize */
|
26, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_BA", /* name */
|
"R_BA", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0x3fffffc, /* src_mask */
|
0x3fffffc, /* src_mask */
|
||||||
0x3fffffc, /* dst_mask */
|
0x3fffffc, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
EMPTY_HOWTO (9),
|
EMPTY_HOWTO (9),
|
||||||
|
|
||||||
/* Non modifiable relative branch. */
|
/* Non modifiable relative branch. */
|
||||||
HOWTO (0xa, /* type */
|
HOWTO (0xa, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
26, /* bitsize */
|
26, /* bitsize */
|
||||||
true, /* pc_relative */
|
true, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_signed, /* complain_on_overflow */
|
complain_overflow_signed, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_BR", /* name */
|
"R_BR", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0x3fffffc, /* src_mask */
|
0x3fffffc, /* src_mask */
|
||||||
0x3fffffc, /* dst_mask */
|
0x3fffffc, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
EMPTY_HOWTO (0xb),
|
EMPTY_HOWTO (0xb),
|
||||||
|
|
||||||
/* Indirect load. */
|
/* Indirect load. */
|
||||||
HOWTO (0xc, /* type */
|
HOWTO (0xc, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RL", /* name */
|
"R_RL", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Load address. */
|
/* Load address. */
|
||||||
HOWTO (0xd, /* type */
|
HOWTO (0xd, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RLA", /* name */
|
"R_RLA", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
EMPTY_HOWTO (0xe),
|
EMPTY_HOWTO (0xe),
|
||||||
|
|
||||||
/* Non-relocating reference. */
|
/* Non-relocating reference. */
|
||||||
HOWTO (0xf, /* type */
|
HOWTO (0xf, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_REF", /* name */
|
"R_REF", /* name */
|
||||||
false, /* partial_inplace */
|
false, /* partial_inplace */
|
||||||
0, /* src_mask */
|
0, /* src_mask */
|
||||||
0, /* dst_mask */
|
0, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
EMPTY_HOWTO (0x10),
|
EMPTY_HOWTO (0x10),
|
||||||
EMPTY_HOWTO (0x11),
|
EMPTY_HOWTO (0x11),
|
||||||
|
|
||||||
/* TOC relative indirect load. */
|
/* TOC relative indirect load. */
|
||||||
HOWTO (0x12, /* type */
|
HOWTO (0x12, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_TRL", /* name */
|
"R_TRL", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* TOC relative load address. */
|
/* TOC relative load address. */
|
||||||
HOWTO (0x13, /* type */
|
HOWTO (0x13, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_TRLA", /* name */
|
"R_TRLA", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Modifiable relative branch. */
|
/* Modifiable relative branch. */
|
||||||
HOWTO (0x14, /* type */
|
HOWTO (0x14, /* type */
|
||||||
1, /* rightshift */
|
1, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RRTBI", /* name */
|
"R_RRTBI", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Modifiable absolute branch. */
|
/* Modifiable absolute branch. */
|
||||||
HOWTO (0x15, /* type */
|
HOWTO (0x15, /* type */
|
||||||
1, /* rightshift */
|
1, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RRTBA", /* name */
|
"R_RRTBA", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Modifiable call absolute indirect. */
|
/* Modifiable call absolute indirect. */
|
||||||
HOWTO (0x16, /* type */
|
HOWTO (0x16, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_CAI", /* name */
|
"R_CAI", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Modifiable call relative. */
|
/* Modifiable call relative. */
|
||||||
HOWTO (0x17, /* type */
|
HOWTO (0x17, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_CREL", /* name */
|
"R_CREL", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Modifiable branch absolute. */
|
/* Modifiable branch absolute. */
|
||||||
HOWTO (0x18, /* type */
|
HOWTO (0x18, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
26, /* bitsize */
|
26, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RBA", /* name */
|
"R_RBA", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Modifiable branch absolute. */
|
/* Modifiable branch absolute. */
|
||||||
HOWTO (0x19, /* type */
|
HOWTO (0x19, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RBAC", /* name */
|
"R_RBAC", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Modifiable branch relative. */
|
/* Modifiable branch relative. */
|
||||||
HOWTO (0x1a, /* type */
|
HOWTO (0x1a, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
26, /* bitsize */
|
26, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_signed, /* complain_on_overflow */
|
complain_overflow_signed, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RBR", /* name */
|
"R_RBR", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* Modifiable branch absolute. */
|
/* Modifiable branch absolute. */
|
||||||
HOWTO (0x1b, /* type */
|
HOWTO (0x1b, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_RBRC", /* name */
|
"R_RBRC", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffff, /* src_mask */
|
0xffff, /* src_mask */
|
||||||
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
HOWTO (0, /* type */
|
HOWTO (0, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
|
@ -783,51 +776,51 @@ reloc_howto_type xcoff_howto_table[] =
|
||||||
static reloc_howto_type xcoff_howto_table_16[] =
|
static reloc_howto_type xcoff_howto_table_16[] =
|
||||||
{
|
{
|
||||||
/* Standard 16 bit relocation. */
|
/* Standard 16 bit relocation. */
|
||||||
HOWTO (0, /* type */
|
HOWTO (0, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_POS_16", /* name */
|
"R_POS_16", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* 16 bit relocation, but store negative value. */
|
/* 16 bit relocation, but store negative value. */
|
||||||
HOWTO (1, /* type */
|
HOWTO (1, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
-2, /* size (0 = byte, 1 = short, 2 = long) */
|
-2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
16, /* bitsize */
|
16, /* bitsize */
|
||||||
false, /* pc_relative */
|
false, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_bitfield, /* complain_on_overflow */
|
complain_overflow_bitfield, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_NEG_16", /* name */
|
"R_NEG_16", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false), /* pcrel_offset */
|
false), /* pcrel_offset */
|
||||||
|
|
||||||
/* 16 bit PC relative relocation. */
|
/* 16 bit PC relative relocation. */
|
||||||
HOWTO (2, /* type */
|
HOWTO (2, /* type */
|
||||||
0, /* rightshift */
|
0, /* rightshift */
|
||||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||||
32, /* bitsize */
|
32, /* bitsize */
|
||||||
true, /* pc_relative */
|
true, /* pc_relative */
|
||||||
0, /* bitpos */
|
0, /* bitpos */
|
||||||
complain_overflow_signed, /* complain_on_overflow */
|
complain_overflow_signed, /* complain_on_overflow */
|
||||||
0, /* special_function */
|
0, /* special_function */
|
||||||
"R_REL_16", /* name */
|
"R_REL_16", /* name */
|
||||||
true, /* partial_inplace */
|
true, /* partial_inplace */
|
||||||
0xffffffff, /* src_mask */
|
0xffffffff, /* src_mask */
|
||||||
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
||||||
false) /* pcrel_offset */
|
false) /* pcrel_offset */
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
_bfd_xcoff_rtype2howto (relent, internal)
|
_bfd_xcoff_rtype2howto (relent, internal)
|
||||||
arelent *relent;
|
arelent *relent;
|
||||||
|
@ -836,18 +829,18 @@ _bfd_xcoff_rtype2howto (relent, internal)
|
||||||
relent->howto = xcoff_howto_table + internal->r_type;
|
relent->howto = xcoff_howto_table + internal->r_type;
|
||||||
|
|
||||||
if (relent->howto->bitsize != ((unsigned int) internal->r_size & 0x1f) + 1
|
if (relent->howto->bitsize != ((unsigned int) internal->r_size & 0x1f) + 1
|
||||||
&& (internal->r_type
|
&& (internal->r_type
|
||||||
< sizeof(xcoff_howto_table_16)/sizeof(xcoff_howto_table_16[0])))
|
< sizeof (xcoff_howto_table_16)/sizeof (xcoff_howto_table_16[0])))
|
||||||
relent->howto = xcoff_howto_table_16 + internal->r_type;
|
relent->howto = xcoff_howto_table_16 + internal->r_type;
|
||||||
|
|
||||||
/* The r_size field of an XCOFF reloc encodes the bitsize of the
|
/* The r_size field of an XCOFF reloc encodes the bitsize of the
|
||||||
relocation, as well as indicating whether it is signed or not.
|
relocation, as well as indicating whether it is signed or not.
|
||||||
Doublecheck that the relocation information gathered from the
|
Doublecheck that the relocation information gathered from the
|
||||||
type matches this information. The bitsize is not significant
|
type matches this information. The bitsize is not significant
|
||||||
for R_REF relocs. */
|
for R_REF relocs. */
|
||||||
if (relent->howto->dst_mask != 0
|
if (relent->howto->dst_mask != 0
|
||||||
&& (relent->howto->bitsize
|
&& (relent->howto->bitsize
|
||||||
!= ((unsigned int) internal->r_size & 0x3f) + 1))
|
!= ((unsigned int) internal->r_size & 0x3f) + 1))
|
||||||
abort ();
|
abort ();
|
||||||
#if 0
|
#if 0
|
||||||
if ((internal->r_size & 0x80) != 0
|
if ((internal->r_size & 0x80) != 0
|
||||||
|
@ -992,7 +985,6 @@ struct xcoff_ar_file_hdr_big
|
||||||
|
|
||||||
#define SIZEOF_AR_FILE_HDR_BIG (6 * 20 + SXCOFFARMAG)
|
#define SIZEOF_AR_FILE_HDR_BIG (6 * 20 + SXCOFFARMAG)
|
||||||
|
|
||||||
|
|
||||||
/* Each XCOFF archive member starts with this (printable) structure. */
|
/* Each XCOFF archive member starts with this (printable) structure. */
|
||||||
|
|
||||||
struct xcoff_ar_hdr
|
struct xcoff_ar_hdr
|
||||||
|
@ -1069,7 +1061,6 @@ struct xcoff_ar_hdr_big
|
||||||
|
|
||||||
#define SIZEOF_AR_HDR_BIG (3 * 20 + 4 * 12 + 4)
|
#define SIZEOF_AR_HDR_BIG (3 * 20 + 4 * 12 + 4)
|
||||||
|
|
||||||
|
|
||||||
/* We often have to distinguish between the old and big file format.
|
/* We often have to distinguish between the old and big file format.
|
||||||
Make it a bit cleaner. We can use `xcoff_ardata' here because the
|
Make it a bit cleaner. We can use `xcoff_ardata' here because the
|
||||||
`hdr' member has the same size and position in both formats. */
|
`hdr' member has the same size and position in both formats. */
|
||||||
|
@ -1146,18 +1137,18 @@ _bfd_xcoff_slurp_armap (abfd)
|
||||||
|
|
||||||
/* The symbol table starts with a four byte count. */
|
/* The symbol table starts with a four byte count. */
|
||||||
c = bfd_h_get_32 (abfd, contents);
|
c = bfd_h_get_32 (abfd, contents);
|
||||||
|
|
||||||
if (c * 4 >= sz)
|
if (c * 4 >= sz)
|
||||||
{
|
{
|
||||||
bfd_set_error (bfd_error_bad_value);
|
bfd_set_error (bfd_error_bad_value);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bfd_ardata (abfd)->symdefs = ((carsym *)
|
bfd_ardata (abfd)->symdefs = ((carsym *)
|
||||||
bfd_alloc (abfd, c * sizeof (carsym)));
|
bfd_alloc (abfd, c * sizeof (carsym)));
|
||||||
if (bfd_ardata (abfd)->symdefs == NULL)
|
if (bfd_ardata (abfd)->symdefs == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* After the count comes a list of four byte file offsets. */
|
/* After the count comes a list of four byte file offsets. */
|
||||||
for (i = 0, arsym = bfd_ardata (abfd)->symdefs, p = contents + 4;
|
for (i = 0, arsym = bfd_ardata (abfd)->symdefs, p = contents + 4;
|
||||||
i < c;
|
i < c;
|
||||||
|
@ -1209,12 +1200,12 @@ _bfd_xcoff_slurp_armap (abfd)
|
||||||
bfd_set_error (bfd_error_bad_value);
|
bfd_set_error (bfd_error_bad_value);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bfd_ardata (abfd)->symdefs = ((carsym *)
|
bfd_ardata (abfd)->symdefs = ((carsym *)
|
||||||
bfd_alloc (abfd, c * sizeof (carsym)));
|
bfd_alloc (abfd, c * sizeof (carsym)));
|
||||||
if (bfd_ardata (abfd)->symdefs == NULL)
|
if (bfd_ardata (abfd)->symdefs == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* After the count comes a list of eight byte file offsets. */
|
/* After the count comes a list of eight byte file offsets. */
|
||||||
for (i = 0, arsym = bfd_ardata (abfd)->symdefs, p = contents + 8;
|
for (i = 0, arsym = bfd_ardata (abfd)->symdefs, p = contents + 8;
|
||||||
i < c;
|
i < c;
|
||||||
|
@ -1791,13 +1782,13 @@ xcoff_write_armap_big (abfd, elength, map, orl_count, stridx)
|
||||||
}
|
}
|
||||||
object_bfd = ob;
|
object_bfd = ob;
|
||||||
}
|
}
|
||||||
/* A quick sanity check... */
|
/* A quick sanity check... */
|
||||||
BFD_ASSERT (orl_count_64 + orl_count_32 == orl_count);
|
BFD_ASSERT (orl_count_64 + orl_count_32 == orl_count);
|
||||||
BFD_ASSERT (stridx_64 + stridx_32 == stridx);
|
BFD_ASSERT (stridx_64 + stridx_32 == stridx);
|
||||||
|
|
||||||
/* Now write out each map. */
|
/* Now write out each map. */
|
||||||
if (! xcoff_write_one_armap_big (abfd, map, orl_count, orl_count_32,
|
if (! xcoff_write_one_armap_big (abfd, map, orl_count, orl_count_32,
|
||||||
stridx_32, false,
|
stridx_32, false,
|
||||||
xcoff_ardata_big (abfd)->memoff,
|
xcoff_ardata_big (abfd)->memoff,
|
||||||
xcoff_ardata_big (abfd)->symoff))
|
xcoff_ardata_big (abfd)->symoff))
|
||||||
return false;
|
return false;
|
||||||
|
@ -1806,7 +1797,7 @@ xcoff_write_armap_big (abfd, elength, map, orl_count, stridx)
|
||||||
xcoff_ardata_big (abfd)->symoff,
|
xcoff_ardata_big (abfd)->symoff,
|
||||||
xcoff_ardata_big (abfd)->symoff64))
|
xcoff_ardata_big (abfd)->symoff64))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue