* coff-rs6000.c: Formatting fixes.

(xcoff_calculate_relocation): Use PARAMS in declaration.
	(xcoff_complain_overflow): Likewise.
	(xcoff_ppc_relocate_section): Use old-style function pointer call.
	(bfd_xcoff_backend_data): Remove useless comments.
	(rs6000coff_vec): Likewise.
	(bfd_pmac_xcoff_backend_data): Likewise.
	(pmac_xcoff_vec): Likewise.
	* coff64-rs6000.c: Formatting fixes.
	(xcoff64_calculate_relocation): Use PARAMS in declaration.
	(xcoff64_ppc_relocate_section): Use old-style function pointer call.
	(bfd_xcoff_backend_data): Remove useless comments.
	(rs6000coff64_vec): Likewise.
	(bfd_xcoff_aix5_backend_data): Likewise.
	(aix5coff64_vec): Likewise.
This commit is contained in:
Alan Modra
2002-08-06 05:52:29 +00:00
parent a78eab4eaf
commit cf9ab45bc0
3 changed files with 1663 additions and 1707 deletions

View File

@ -1,3 +1,21 @@
2002-08-06 Alan Modra <amodra@bigpond.net.au>
* coff-rs6000.c: Formatting fixes.
(xcoff_calculate_relocation): Use PARAMS in declaration.
(xcoff_complain_overflow): Likewise.
(xcoff_ppc_relocate_section): Use old-style function pointer call.
(bfd_xcoff_backend_data): Remove useless comments.
(rs6000coff_vec): Likewise.
(bfd_pmac_xcoff_backend_data): Likewise.
(pmac_xcoff_vec): Likewise.
* coff64-rs6000.c: Formatting fixes.
(xcoff64_calculate_relocation): Use PARAMS in declaration.
(xcoff64_ppc_relocate_section): Use old-style function pointer call.
(bfd_xcoff_backend_data): Remove useless comments.
(rs6000coff64_vec): Likewise.
(bfd_xcoff_aix5_backend_data): Likewise.
(aix5coff64_vec): Likewise.
2002-08-06 Alan Modra <amodra@bigpond.net.au>
* coff-rs6000.c (xcoff_howto_table): Revert some of last change to

View File

@ -149,9 +149,9 @@ static bfd_vma xcoff_loader_symbol_offset
static bfd_vma xcoff_loader_reloc_offset
PARAMS ((bfd *, struct internal_ldhdr *));
static boolean xcoff_generate_rtinit
PARAMS((bfd *, const char *, const char *, boolean));
static boolean do_pad PARAMS((bfd *, unsigned int));
static boolean do_copy PARAMS((bfd *, bfd *));
PARAMS ((bfd *, const char *, const char *, boolean));
static boolean do_pad PARAMS ((bfd *, unsigned int));
static boolean do_copy PARAMS ((bfd *, bfd *));
static boolean do_shared_object_padding PARAMS ((bfd *, bfd *, ufile_ptr *, int));
/* Relocation functions */
@ -167,7 +167,7 @@ static boolean xcoff_complain_overflow_unsigned_func
PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS));
boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
(XCOFF_RELOC_FUNCTION_ARGS) =
PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)) =
{
xcoff_reloc_type_pos, /* R_POS (0x00) */
xcoff_reloc_type_neg, /* R_NEG (0x01) */
@ -200,7 +200,7 @@ boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
};
boolean (*xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW])
(XCOFF_COMPLAIN_FUNCTION_ARGS) =
PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS)) =
{
xcoff_complain_overflow_dont_func,
xcoff_complain_overflow_bitfield_func,
@ -311,7 +311,7 @@ _bfd_xcoff_swap_sym_in (abfd, ext1, in1)
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
{
@ -337,7 +337,7 @@ _bfd_xcoff_swap_sym_out (abfd, inp, extp)
if (in->_n._n_name[0] != 0)
{
memcpy(ext->e.e_name, in->_n._n_name, SYMNMLEN);
memcpy (ext->e.e_name, in->_n._n_name, SYMNMLEN);
}
else
{
@ -483,7 +483,7 @@ _bfd_xcoff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
union internal_auxent *in = (union internal_auxent *)inp;
AUXENT *ext = (AUXENT *)extp;
memset((PTR)ext, 0, bfd_coff_auxesz (abfd));
memset ((PTR)ext, 0, bfd_coff_auxesz (abfd));
switch (class)
{
case C_FILE:
@ -998,8 +998,9 @@ xcoff_rtype2howto (relent, internal)
abort ();
/* Put a meaningful value in addend */
relent->addend = (internal->r_size & 0x80) ? - internal->r_vaddr
: internal->r_vaddr;
relent->addend = (internal->r_size & 0x80
? -internal->r_vaddr
: internal->r_vaddr);
}
reloc_howto_type *
@ -2184,9 +2185,9 @@ xcoff_write_archive_contents_old (abfd)
sprintf (fhdr.memoff, "%ld", (long) nextoff);
memset (&ahdr, 0, sizeof ahdr);
sprintf (ahdr.size, "%ld", (long) (XCOFFARMAG_ELEMENT_SIZE +
count * XCOFFARMAG_ELEMENT_SIZE +
total_namlen));
sprintf (ahdr.size, "%ld", (long) (XCOFFARMAG_ELEMENT_SIZE
+ count * XCOFFARMAG_ELEMENT_SIZE
+ total_namlen));
sprintf (ahdr.prevoff, "%ld", (long) prevoff);
sprintf (ahdr.date, "%d", 0);
sprintf (ahdr.uid, "%d", 0);
@ -2458,9 +2459,9 @@ xcoff_write_archive_contents_big (abfd)
hdr = (struct xcoff_ar_hdr_big *) member_table;
PRINT20 (hdr->size, (XCOFFARMAGBIG_ELEMENT_SIZE +
count * XCOFFARMAGBIG_ELEMENT_SIZE +
total_namlen + (total_namlen & 1)));
PRINT20 (hdr->size, (XCOFFARMAGBIG_ELEMENT_SIZE
+ count * XCOFFARMAGBIG_ELEMENT_SIZE
+ total_namlen + (total_namlen & 1)));
if (makemap && hasobjects)
PRINT20 (hdr->nextoff, nextoff + member_table_size);
else
@ -2497,7 +2498,7 @@ xcoff_write_archive_contents_big (abfd)
size_t namlen;
name = normalize_filename (current_bfd);
namlen = sprintf(mt, "%s", name);
namlen = sprintf (mt, "%s", name);
mt += namlen + 1;
}
@ -2823,8 +2824,8 @@ xcoff_reloc_type_rel (input_bfd, input_section, output_bfd, rel, sym, howto,
addend += input_section->vma;
*relocation = val + addend;
*relocation -= (input_section->output_section->vma +
input_section->output_offset);
*relocation -= (input_section->output_section->vma
+ input_section->output_offset);
return true;
}
@ -2866,8 +2867,8 @@ xcoff_reloc_type_toc (input_bfd, input_section, output_bfd, rel, sym, howto,
+ h->toc_section->output_offset);
}
*relocation = ((val - xcoff_data (output_bfd)->toc) -
(sym->n_value - xcoff_data (input_bfd)->toc));
*relocation = ((val - xcoff_data (output_bfd)->toc)
- (sym->n_value - xcoff_data (input_bfd)->toc));
return true;
}
@ -2923,8 +2924,8 @@ xcoff_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
cror. */
if (NULL != h
&& bfd_link_hash_defined == h->root.type
&& (rel->r_vaddr - input_section->vma + 8 <=
input_section->_cooked_size))
&& (rel->r_vaddr - input_section->vma + 8
<= input_section->_cooked_size))
{
bfd_byte *pnext;
unsigned long next;
@ -2941,7 +2942,8 @@ xcoff_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
|| next == 0x60000000) /* ori r0,r0,0 */
bfd_put_32 (input_bfd, 0x80410014, pnext); /* lwz r1,20(r1) */
} else
}
else
{
if (next == 0x80410014) /* lwz r1,20(r1) */
bfd_put_32 (input_bfd, 0x60000000, pnext); /* ori r0,r0,0 */
@ -2967,8 +2969,8 @@ xcoff_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
addend += input_section->vma;
*relocation = val + addend;
*relocation -= (input_section->output_section->vma +
input_section->output_offset);
*relocation -= (input_section->output_section->vma
+ input_section->output_offset);
return true;
}
@ -2994,8 +2996,8 @@ xcoff_reloc_type_crel (input_bfd, input_section, output_bfd, rel, sym, howto,
addend += input_section->vma;
*relocation = val + addend;
*relocation -= (input_section->output_section->vma +
input_section->output_offset);
*relocation -= (input_section->output_section->vma
+ input_section->output_offset);
return true;
}
@ -3343,12 +3345,13 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
howto.size = howto.bitsize > 16 ? 2 : 1;
howto.pc_relative = false;
howto.bitpos = 0;
howto.complain_on_overflow = rel->r_size & 0x80 ?
complain_overflow_signed : complain_overflow_bitfield;
howto.complain_on_overflow = (rel->r_size & 0x80
? complain_overflow_signed
: complain_overflow_bitfield);
howto.special_function = NULL;
howto.name = "internal";
howto.partial_inplace = true;
howto.src_mask = howto.dst_mask = N_ONES(howto.bitsize);
howto.src_mask = howto.dst_mask = N_ONES (howto.bitsize);
howto.pcrel_offset = false;
/* symbol */
@ -3413,7 +3416,7 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
}
if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION
|| (false == xcoff_calculate_relocation[rel->r_type]
|| !((*xcoff_calculate_relocation[rel->r_type])
(input_bfd, input_section, output_bfd, rel, sym, &howto, val,
addend, &relocation, contents)))
return false;
@ -3423,7 +3426,7 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
location = contents + address;
if (address > input_section->_raw_size)
abort();
abort ();
/* Get the value we are going to relocate. */
if (1 == howto.size)
@ -3438,11 +3441,11 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
operation, which would be tedious, or we must do the computations
in a type larger than bfd_vma, which would be inefficient. */
if ((unsigned int) howto.complain_on_overflow >=
XCOFF_MAX_COMPLAIN_OVERFLOW)
abort();
if ((unsigned int) howto.complain_on_overflow
>= XCOFF_MAX_COMPLAIN_OVERFLOW)
abort ();
if ((true == xcoff_complain_overflow[howto.complain_on_overflow]
if (((*xcoff_complain_overflow[howto.complain_on_overflow])
(input_bfd, value_to_relocate, relocation, &howto)))
{
const char *name;
@ -3472,9 +3475,9 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
}
/* Add RELOCATION to the right bits of VALUE_TO_RELOCATE. */
value_to_relocate = ((value_to_relocate & ~howto.dst_mask) |
(((value_to_relocate & howto.src_mask) +
relocation) & howto.dst_mask));
value_to_relocate = ((value_to_relocate & ~howto.dst_mask)
| (((value_to_relocate & howto.src_mask)
+ relocation) & howto.dst_mask));
/* Put the value back in the object file. */
if (1 == howto.size)
@ -3576,8 +3579,8 @@ xcoff_create_csect_from_smclas (abfd, aux, symbol_name)
".td", NULL, ".sv3264"
};
if ((19 >= aux->x_csect.x_smclas) &&
(NULL != names[aux->x_csect.x_smclas]))
if ((19 >= aux->x_csect.x_smclas)
&& (NULL != names[aux->x_csect.x_smclas]))
{
return_value = bfd_make_section_anyway
(abfd, names[aux->x_csect.x_smclas]);
@ -3620,7 +3623,7 @@ xcoff_loader_symbol_offset (abfd, ldhdr)
bfd *abfd;
struct internal_ldhdr *ldhdr ATTRIBUTE_UNUSED;
{
return bfd_xcoff_ldhdrsz(abfd);
return bfd_xcoff_ldhdrsz (abfd);
}
static bfd_vma
@ -3628,8 +3631,7 @@ xcoff_loader_reloc_offset (abfd, ldhdr)
bfd *abfd;
struct internal_ldhdr *ldhdr;
{
return bfd_xcoff_ldhdrsz(abfd) +
(ldhdr->l_nsyms * bfd_xcoff_ldsymsz(abfd));
return bfd_xcoff_ldhdrsz (abfd) + ldhdr->l_nsyms * bfd_xcoff_ldsymsz (abfd);
}
static boolean
@ -3953,81 +3955,81 @@ static unsigned long xcoff_glink_code[9] =
static const struct xcoff_backend_data_rec bfd_xcoff_backend_data =
{
{ /* COFF backend, defined in libcoff.h. */
_bfd_xcoff_swap_aux_in, /* _bfd_coff_swap_aux_in */
_bfd_xcoff_swap_sym_in, /* _bfd_coff_swap_sym_in */
coff_swap_lineno_in, /* _bfd_coff_swap_lineno_in */
_bfd_xcoff_swap_aux_out, /* _bfd_swap_aux_out */
_bfd_xcoff_swap_sym_out, /* _bfd_swap_sym_out */
coff_swap_lineno_out, /* _bfd_swap_lineno_out */
xcoff_swap_reloc_out, /* _bfd_swap_reloc_out */
coff_swap_filehdr_out, /* _bfd_swap_filehdr_out */
coff_swap_aouthdr_out, /* _bfd_swap_aouthdr_out */
coff_swap_scnhdr_out, /* _bfd_swap_scnhdr_out */
FILHSZ, /* _bfd_filhsz */
AOUTSZ, /* _bfd_aoutsz */
SCNHSZ, /* _bfd_scnhsz */
SYMESZ, /* _bfd_symesz */
AUXESZ, /* _bfd_auxesz */
RELSZ, /* _bfd_relsz */
LINESZ, /* _bfd_linesz */
FILNMLEN, /* _bfd_filnmlen */
_bfd_xcoff_swap_aux_in,
_bfd_xcoff_swap_sym_in,
coff_swap_lineno_in,
_bfd_xcoff_swap_aux_out,
_bfd_xcoff_swap_sym_out,
coff_swap_lineno_out,
xcoff_swap_reloc_out,
coff_swap_filehdr_out,
coff_swap_aouthdr_out,
coff_swap_scnhdr_out,
FILHSZ,
AOUTSZ,
SCNHSZ,
SYMESZ,
AUXESZ,
RELSZ,
LINESZ,
FILNMLEN,
true, /* _bfd_coff_long_filenames */
false, /* _bfd_coff_long_section_names */
(3), /* _bfd_coff_default_section_alignment_power */
3, /* _bfd_coff_default_section_alignment_power */
false, /* _bfd_coff_force_symnames_in_strings */
2, /* _bfd_coff_debug_string_prefix_length */
coff_swap_filehdr_in, /* _bfd_coff_swap_filehdr_in */
coff_swap_aouthdr_in, /* _bfd_swap_aouthdr_in */
coff_swap_scnhdr_in, /* _bfd_swap_scnhdr_in */
xcoff_swap_reloc_in, /* _bfd_reloc_in */
coff_bad_format_hook, /* _bfd_bad_format_hook */
coff_set_arch_mach_hook, /* _bfd_set_arch_mach_hook */
coff_mkobject_hook, /* _bfd_mkobject_hook */
styp_to_sec_flags, /* _bfd_syp_to_sec_flags */
coff_set_alignment_hook, /* _bfd_set_alignment_hook */
coff_slurp_symbol_table, /* _bfd_coff_slurp_symbol_table */
symname_in_debug_hook, /* _coff_symname_in_debug_hook */
coff_pointerize_aux_hook, /* _bfd_coff_pointerize_aux_hook */
coff_print_aux, /* bfd_coff_print_aux */
dummy_reloc16_extra_cases, /* _bfd_coff_reloc16_extra_cases */
dummy_reloc16_estimate, /* _bfd_coff_reloc16_estimate */
coff_swap_filehdr_in,
coff_swap_aouthdr_in,
coff_swap_scnhdr_in,
xcoff_swap_reloc_in,
coff_bad_format_hook,
coff_set_arch_mach_hook,
coff_mkobject_hook,
styp_to_sec_flags,
coff_set_alignment_hook,
coff_slurp_symbol_table,
symname_in_debug_hook,
coff_pointerize_aux_hook,
coff_print_aux,
dummy_reloc16_extra_cases,
dummy_reloc16_estimate,
NULL, /* bfd_coff_sym_is_global */
coff_compute_section_file_positions, /* _bfd_coff_compute_section_file_positions */
coff_compute_section_file_positions,
NULL, /* _bfd_coff_start_final_link */
xcoff_ppc_relocate_section, /* _bfd_coff_relocate_section */
coff_rtype_to_howto, /* _bfd_coff_rtype_to_howto */
NULL, /* _bfd_coff_addust_symndx */
_bfd_generic_link_add_one_symbol, /* _bfd_coff_add_one_symbol */
coff_link_output_has_begun, /* _bfd_coff_link_output_has_begun */
coff_final_link_postscript /* _bfd_coff_final_link_postscript */
xcoff_ppc_relocate_section,
coff_rtype_to_howto,
NULL, /* _bfd_coff_adjust_symndx */
_bfd_generic_link_add_one_symbol,
coff_link_output_has_begun,
coff_final_link_postscript
},
0x01DF, /* magic number */
bfd_arch_rs6000, /* architecture */
bfd_mach_rs6k, /* machine */
bfd_arch_rs6000,
bfd_mach_rs6k,
/* Function pointers to xcoff specific swap routines. */
xcoff_swap_ldhdr_in, /* _xcoff_swap_ldhdr_in */
xcoff_swap_ldhdr_out, /* _xcoff_swap_ldhdr_out */
xcoff_swap_ldsym_in, /* _xcoff_swap_ldsym_in */
xcoff_swap_ldsym_out, /* _xcoff_swap_ldsym_out */
xcoff_swap_ldrel_in, /* _xcoff_swap_ldrel_in */
xcoff_swap_ldrel_out, /* _xcoff_swap_ldrel_out */
xcoff_swap_ldhdr_in,
xcoff_swap_ldhdr_out,
xcoff_swap_ldsym_in,
xcoff_swap_ldsym_out,
xcoff_swap_ldrel_in,
xcoff_swap_ldrel_out,
/* Sizes. */
LDHDRSZ, /* _xcoff_ldhdrsz */
LDSYMSZ, /* _xcoff_ldsymsz */
LDRELSZ, /* _xcoff_ldrelsz */
LDHDRSZ,
LDSYMSZ,
LDRELSZ,
12, /* _xcoff_function_descriptor_size */
SMALL_AOUTSZ, /* _xcoff_small_aout_header_size */
SMALL_AOUTSZ,
/* Versions. */
1, /* _xcoff_ldhdr_version */
_bfd_xcoff_put_symbol_name, /* _xcoff_put_symbol_name */
_bfd_xcoff_put_ldsymbol_name, /* _xcoff_put_ldsymbol_name */
& xcoff_dynamic_reloc, /* dynamic reloc howto */
xcoff_create_csect_from_smclas, /* _xcoff_create_csect_from_smclas */
_bfd_xcoff_put_symbol_name,
_bfd_xcoff_put_ldsymbol_name,
&xcoff_dynamic_reloc,
xcoff_create_csect_from_smclas,
/* Lineno and reloc count overflow. */
xcoff_is_lineno_count_overflow,
@ -4037,52 +4039,51 @@ static const struct xcoff_backend_data_rec bfd_xcoff_backend_data =
xcoff_loader_reloc_offset,
/* glink. */
& xcoff_glink_code[0],
(36), /* _xcoff_glink_size */
&xcoff_glink_code[0],
36, /* _xcoff_glink_size */
/* rtinit */
64, /* _xcoff_rtinit_size */
xcoff_generate_rtinit, /* _xcoff_generate_rtinit */
};
xcoff_generate_rtinit,
};
/* The transfer vector that leads the outside world to all of the above. */
const bfd_target rs6000coff_vec =
{
{
"aixcoff-rs6000",
bfd_target_xcoff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG | DYNAMIC |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | DYNAMIC
| HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),
0, /* leading char */
'/', /* ar_pad_char */
15, /* ar_max_namelen??? FIXMEmgo */
15, /* ar_max_namelen */
/* data */
bfd_getb64, /* bfd_getx64 */
bfd_getb_signed_64, /* bfd_getx_signed_64 */
bfd_putb64, /* bfd_putx64 */
bfd_getb32, /* bfd_getx32 */
bfd_getb_signed_32, /* bfd_getx_signed_32 */
bfd_putb32, /* bfd_putx32 */
bfd_getb16, /* bfd_getx16 */
bfd_getb_signed_16, /* bfd_getx_signed_16 */
bfd_putb16, /* bfd_putx16 */
bfd_getb64,
bfd_getb_signed_64,
bfd_putb64,
bfd_getb32,
bfd_getb_signed_32,
bfd_putb32,
bfd_getb16,
bfd_getb_signed_16,
bfd_putb16,
/* hdrs */
bfd_getb64, /* bfd_h_getx64 */
bfd_getb_signed_64, /* bfd_h_getx_signed_64 */
bfd_putb64, /* bfd_h_putx64 */
bfd_getb32, /* bfd_h_getx32 */
bfd_getb_signed_32, /* bfd_h_getx_signed_32 */
bfd_putb32, /* bfd_h_putx32 */
bfd_getb16, /* bfd_h_getx16 */
bfd_getb_signed_16, /* bfd_h_getx_signed_16 */
bfd_putb16, /* bfd_h_putx16 */
bfd_getb64,
bfd_getb_signed_64,
bfd_putb64,
bfd_getb32,
bfd_getb_signed_32,
bfd_putb32,
bfd_getb16,
bfd_getb_signed_16,
bfd_putb16,
{ /* bfd_check_format */
_bfd_dummy_target,
@ -4106,246 +4107,225 @@ const bfd_target rs6000coff_vec =
},
/* Generic */
bfd_true, /* _close_and_cleanup */
bfd_true, /* _bfd_free_cached_info */
coff_new_section_hook, /* _new_section_hook */
_bfd_generic_get_section_contents, /* _bfd_get_section_contents */
/* _bfd_get_section_contents_in_window */
bfd_true,
bfd_true,
coff_new_section_hook,
_bfd_generic_get_section_contents,
_bfd_generic_get_section_contents_in_window,
/* Copy */
_bfd_xcoff_copy_private_bfd_data, /* _bfd_copy_private_bfd */
/* _bfd_merge_private_bfd_data */
_bfd_xcoff_copy_private_bfd_data,
((boolean (*) (bfd *, bfd *)) bfd_true),
/* _bfd_copy_pivate_section_data */
((boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true),
/* _bfd_copy_private_symbol_data */
((boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true),
((boolean (*) (bfd *, flagword)) bfd_true), /* _bfd_set_private_flags */
((boolean (*) (bfd *, void * )) bfd_true), /* _bfd_print_private_bfd_data */
((boolean (*) (bfd *, flagword)) bfd_true),
((boolean (*) (bfd *, void * )) bfd_true),
/* Core */
coff_core_file_failing_command, /* _core_file_failing_command */
coff_core_file_failing_signal, /* _core_file_failing_signal */
/* _core_file_matches_executable_p */
coff_core_file_failing_command,
coff_core_file_failing_signal,
coff_core_file_matches_executable_p,
/* Archive */
_bfd_xcoff_slurp_armap, /* _slurp_armap */
/* XCOFF archives do not have
anything which corresponds to
an extended name table. */
bfd_false, /* _slurp_extended_name_table */
/* _construct_extended_name_table */
_bfd_xcoff_slurp_armap,
bfd_false,
((boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false),
bfd_dont_truncate_arname, /* _truncate_arname */
_bfd_xcoff_write_armap, /* _write_armap */
_bfd_xcoff_read_ar_hdr, /* _read_ar_hdr */
_bfd_xcoff_openr_next_archived_file, /* _openr_next_archived_file */
_bfd_generic_get_elt_at_index, /* _get_elt_at_index */
_bfd_xcoff_stat_arch_elt, /* _generic_stat_arch_elt */
/* XCOFF archives do not have
a timestamp. */
bfd_true, /* _update_armap_timestamp */
bfd_dont_truncate_arname,
_bfd_xcoff_write_armap,
_bfd_xcoff_read_ar_hdr,
_bfd_xcoff_openr_next_archived_file,
_bfd_generic_get_elt_at_index,
_bfd_xcoff_stat_arch_elt,
bfd_true,
/* Symbols */
coff_get_symtab_upper_bound, /* _get_symtab_upper_bound */
coff_get_symtab, /* _get_symtab */
coff_make_empty_symbol, /* _make_empty_symbol */
coff_print_symbol, /* _print_symbol */
coff_get_symbol_info, /* _get_symbol_info */
_bfd_xcoff_is_local_label_name, /* _bfd_is_local_label_name */
coff_get_lineno, /* _get_lineno */
coff_find_nearest_line, /* _find_nearest_line */
coff_bfd_make_debug_symbol, /* _bfd_make_debug_symbol */
_bfd_generic_read_minisymbols, /* _read_minisymbols */
_bfd_generic_minisymbol_to_symbol, /* _minsymbol_to_symbol */
coff_get_symtab_upper_bound,
coff_get_symtab,
coff_make_empty_symbol,
coff_print_symbol,
coff_get_symbol_info,
_bfd_xcoff_is_local_label_name,
coff_get_lineno,
coff_find_nearest_line,
coff_bfd_make_debug_symbol,
_bfd_generic_read_minisymbols,
_bfd_generic_minisymbol_to_symbol,
/* Reloc */
coff_get_reloc_upper_bound, /* _get_reloc_upper_bound */
coff_canonicalize_reloc, /* _cononicalize_reloc */
_bfd_xcoff_reloc_type_lookup, /* _bfd_reloc_type_lookup */
coff_get_reloc_upper_bound,
coff_canonicalize_reloc,
_bfd_xcoff_reloc_type_lookup,
/* Write */
coff_set_arch_mach, /* _set_arch_mach */
coff_set_section_contents, /* _set_section_contents */
coff_set_arch_mach,
coff_set_section_contents,
/* Link */
_bfd_xcoff_sizeof_headers, /* _sizeof_headers */
/* _bfd_get_relocated_section_contents */
_bfd_xcoff_sizeof_headers,
bfd_generic_get_relocated_section_contents,
bfd_generic_relax_section, /* _bfd_relax_section */
_bfd_xcoff_bfd_link_hash_table_create, /* _bfd_link_hash_table_create */
_bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */
_bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */
_bfd_generic_link_just_syms, /* _bfd_link_just_syms */
_bfd_xcoff_bfd_final_link, /* _bfd_final_link */
_bfd_generic_link_split_section, /* _bfd_link_split_section */
bfd_generic_gc_sections, /* _bfd_gc_sections */
bfd_generic_merge_sections, /* _bfd_merge_sections */
bfd_generic_discard_group, /* _bfd_discard_group */
bfd_generic_relax_section,
_bfd_xcoff_bfd_link_hash_table_create,
_bfd_generic_link_hash_table_free,
_bfd_xcoff_bfd_link_add_symbols,
_bfd_generic_link_just_syms,
_bfd_xcoff_bfd_final_link,
_bfd_generic_link_split_section,
bfd_generic_gc_sections,
bfd_generic_merge_sections,
bfd_generic_discard_group,
/* Dynamic */
/* _get_dynamic_symtab_upper_bound */
_bfd_xcoff_get_dynamic_symtab_upper_bound,
_bfd_xcoff_canonicalize_dynamic_symtab, /* _cononicalize_dynamic_symtab */
_bfd_xcoff_get_dynamic_reloc_upper_bound,/* _get_dynamic_reloc_upper_bound */
_bfd_xcoff_canonicalize_dynamic_reloc, /* _cononicalize_dynamic_reloc */
_bfd_xcoff_canonicalize_dynamic_symtab,
_bfd_xcoff_get_dynamic_reloc_upper_bound,
_bfd_xcoff_canonicalize_dynamic_reloc,
/* Opposite endian version, none exists */
NULL,
/* back end data */
(void *) &bfd_xcoff_backend_data,
};
};
/*
* xcoff-powermac target
* Old target.
* Only difference between this target and the rs6000 target is the
* the default architecture and machine type used in coffcode.h
*
* PowerPC Macs use the same magic numbers as RS/6000
* (because that's how they were bootstrapped originally),
* but they are always PowerPC architecture.
*/
/* xcoff-powermac target
Old target.
Only difference between this target and the rs6000 target is the
the default architecture and machine type used in coffcode.h
PowerPC Macs use the same magic numbers as RS/6000
(because that's how they were bootstrapped originally),
but they are always PowerPC architecture. */
static const struct xcoff_backend_data_rec bfd_pmac_xcoff_backend_data =
{
{ /* COFF backend, defined in libcoff.h */
_bfd_xcoff_swap_aux_in, /* _bfd_coff_swap_aux_in */
_bfd_xcoff_swap_sym_in, /* _bfd_coff_swap_sym_in */
coff_swap_lineno_in, /* _bfd_coff_swap_lineno_in */
_bfd_xcoff_swap_aux_out, /* _bfd_swap_aux_out */
_bfd_xcoff_swap_sym_out, /* _bfd_swap_sym_out */
coff_swap_lineno_out, /* _bfd_swap_lineno_out */
xcoff_swap_reloc_out, /* _bfd_swap_reloc_out */
coff_swap_filehdr_out, /* _bfd_swap_filehdr_out */
coff_swap_aouthdr_out, /* _bfd_swap_aouthdr_out */
coff_swap_scnhdr_out, /* _bfd_swap_scnhdr_out */
FILHSZ, /* _bfd_filhsz */
AOUTSZ, /* _bfd_aoutsz */
SCNHSZ, /* _bfd_scnhsz */
SYMESZ, /* _bfd_symesz */
AUXESZ, /* _bfd_auxesz */
RELSZ, /* _bfd_relsz */
LINESZ, /* _bfd_linesz */
FILNMLEN, /* _bfd_filnmlen */
{
{ /* COFF backend, defined in libcoff.h. */
_bfd_xcoff_swap_aux_in,
_bfd_xcoff_swap_sym_in,
coff_swap_lineno_in,
_bfd_xcoff_swap_aux_out,
_bfd_xcoff_swap_sym_out,
coff_swap_lineno_out,
xcoff_swap_reloc_out,
coff_swap_filehdr_out,
coff_swap_aouthdr_out,
coff_swap_scnhdr_out,
FILHSZ,
AOUTSZ,
SCNHSZ,
SYMESZ,
AUXESZ,
RELSZ,
LINESZ,
FILNMLEN,
true, /* _bfd_coff_long_filenames */
false, /* _bfd_coff_long_section_names */
(3), /* _bfd_coff_default_section_alignment_power */
3, /* _bfd_coff_default_section_alignment_power */
false, /* _bfd_coff_force_symnames_in_strings */
2, /* _bfd_coff_debug_string_prefix_length */
coff_swap_filehdr_in, /* _bfd_coff_swap_filehdr_in */
coff_swap_aouthdr_in, /* _bfd_swap_aouthdr_in */
coff_swap_scnhdr_in, /* _bfd_swap_scnhdr_in */
xcoff_swap_reloc_in, /* _bfd_reloc_in */
coff_bad_format_hook, /* _bfd_bad_format_hook */
coff_set_arch_mach_hook, /* _bfd_set_arch_mach_hook */
coff_mkobject_hook, /* _bfd_mkobject_hook */
styp_to_sec_flags, /* _bfd_syp_to_sec_flags */
coff_set_alignment_hook, /* _bfd_set_alignment_hook */
coff_slurp_symbol_table, /* _bfd_coff_slurp_symbol_table */
symname_in_debug_hook, /* _coff_symname_in_debug_hook */
coff_pointerize_aux_hook, /* _bfd_coff_pointerize_aux_hook */
coff_print_aux, /* bfd_coff_print_aux */
dummy_reloc16_extra_cases, /* _bfd_coff_reloc16_extra_cases */
dummy_reloc16_estimate, /* _bfd_coff_reloc16_estimate */
coff_swap_filehdr_in,
coff_swap_aouthdr_in,
coff_swap_scnhdr_in,
xcoff_swap_reloc_in,
coff_bad_format_hook,
coff_set_arch_mach_hook,
coff_mkobject_hook,
styp_to_sec_flags,
coff_set_alignment_hook,
coff_slurp_symbol_table,
symname_in_debug_hook,
coff_pointerize_aux_hook,
coff_print_aux,
dummy_reloc16_extra_cases,
dummy_reloc16_estimate,
NULL, /* bfd_coff_sym_is_global */
/* _bfd_coff_compute_section_file_positions */
coff_compute_section_file_positions,
NULL, /* _bfd_coff_start_final_link */
xcoff_ppc_relocate_section, /* _bfd_coff_relocate_section */
coff_rtype_to_howto, /* _bfd_coff_rtype_to_howto */
NULL, /* _bfd_coff_addust_symndx */
_bfd_generic_link_add_one_symbol, /* _bfd_coff_add_one_symbol */
coff_link_output_has_begun, /* _bfd_coff_link_output_has_begun */
coff_final_link_postscript /* _bfd_coff_final_link_postscript */
xcoff_ppc_relocate_section,
coff_rtype_to_howto,
NULL, /* _bfd_coff_adjust_symndx */
_bfd_generic_link_add_one_symbol,
coff_link_output_has_begun,
coff_final_link_postscript
},
0x01DF, /* magic number */
bfd_arch_powerpc, /* architecture */
bfd_mach_ppc, /* machine */
bfd_arch_powerpc,
bfd_mach_ppc,
/* function pointers to xcoff specific swap routines */
xcoff_swap_ldhdr_in, /* _xcoff_swap_ldhdr_in */
xcoff_swap_ldhdr_out, /* _xcoff_swap_ldhdr_out */
xcoff_swap_ldsym_in, /* _xcoff_swap_ldsym_in */
xcoff_swap_ldsym_out, /* _xcoff_swap_ldsym_out */
xcoff_swap_ldrel_in, /* _xcoff_swap_ldrel_in */
xcoff_swap_ldrel_out, /* _xcoff_swap_ldrel_out */
/* Function pointers to xcoff specific swap routines. */
xcoff_swap_ldhdr_in,
xcoff_swap_ldhdr_out,
xcoff_swap_ldsym_in,
xcoff_swap_ldsym_out,
xcoff_swap_ldrel_in,
xcoff_swap_ldrel_out,
/* sizes */
LDHDRSZ, /* _xcoff_ldhdrsz */
LDSYMSZ, /* _xcoff_ldsymsz */
LDRELSZ, /* _xcoff_ldrelsz */
/* Sizes. */
LDHDRSZ,
LDSYMSZ,
LDRELSZ,
12, /* _xcoff_function_descriptor_size */
SMALL_AOUTSZ, /* _xcoff_small_aout_header_size */
SMALL_AOUTSZ,
/* versions */
/* Versions. */
1, /* _xcoff_ldhdr_version */
/* xcoff vs xcoff64 putting symbol names */
_bfd_xcoff_put_symbol_name, /* _xcoff_put_symbol_name */
_bfd_xcoff_put_ldsymbol_name, /* _xcoff_put_ldsymbol_name */
_bfd_xcoff_put_symbol_name,
_bfd_xcoff_put_ldsymbol_name,
&xcoff_dynamic_reloc,
xcoff_create_csect_from_smclas,
&xcoff_dynamic_reloc, /* dynamic reloc howto */
xcoff_create_csect_from_smclas, /* _xcoff_create_csect_from_smclas */
/* lineno and reloc count overflow */
/* Lineno and reloc count overflow. */
xcoff_is_lineno_count_overflow,
xcoff_is_reloc_count_overflow,
xcoff_loader_symbol_offset,
xcoff_loader_reloc_offset,
/* glink */
/* glink. */
&xcoff_glink_code[0],
(36), /* _xcoff_glink_size */
36, /* _xcoff_glink_size */
/* rtinit */
0, /* _xcoff_rtinit_size */
xcoff_generate_rtinit, /* _xcoff_generate_rtinit */
};
xcoff_generate_rtinit,
};
/* The transfer vector that leads the outside world to all of the above. */
const bfd_target pmac_xcoff_vec =
{
{
"xcoff-powermac",
bfd_target_xcoff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG | DYNAMIC |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | DYNAMIC
| HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),
0, /* leading char */
'/', /* ar_pad_char */
15, /* ar_max_namelen??? FIXMEmgo */
15, /* ar_max_namelen */
/* data */
bfd_getb64, /* bfd_getx64 */
bfd_getb_signed_64, /* bfd_getx_signed_64 */
bfd_putb64, /* bfd_putx64 */
bfd_getb32, /* bfd_getx32 */
bfd_getb_signed_32, /* bfd_getx_signed_32 */
bfd_putb32, /* bfd_putx32 */
bfd_getb16, /* bfd_getx16 */
bfd_getb_signed_16, /* bfd_getx_signed_16 */
bfd_putb16, /* bfd_putx16 */
bfd_getb64,
bfd_getb_signed_64,
bfd_putb64,
bfd_getb32,
bfd_getb_signed_32,
bfd_putb32,
bfd_getb16,
bfd_getb_signed_16,
bfd_putb16,
/* hdrs */
bfd_getb64, /* bfd_h_getx64 */
bfd_getb_signed_64, /* bfd_h_getx_signed_64 */
bfd_putb64, /* bfd_h_putx64 */
bfd_getb32, /* bfd_h_getx32 */
bfd_getb_signed_32, /* bfd_h_getx_signed_32 */
bfd_putb32, /* bfd_h_putx32 */
bfd_getb16, /* bfd_h_getx16 */
bfd_getb_signed_16, /* bfd_h_getx_signed_16 */
bfd_putb16, /* bfd_h_putx16 */
bfd_getb64,
bfd_getb_signed_64,
bfd_putb64,
bfd_getb32,
bfd_getb_signed_32,
bfd_putb32,
bfd_getb16,
bfd_getb_signed_16,
bfd_putb16,
{ /* bfd_check_format */
_bfd_dummy_target,
@ -4369,95 +4349,81 @@ const bfd_target pmac_xcoff_vec =
},
/* Generic */
bfd_true, /* _close_and_cleanup */
bfd_true, /* _bfd_free_cached_info */
coff_new_section_hook, /* _new_section_hook */
_bfd_generic_get_section_contents, /* _bfd_get_section_contents */
/* _bfd_get_section_contents_in_window */
bfd_true,
bfd_true,
coff_new_section_hook,
_bfd_generic_get_section_contents,
_bfd_generic_get_section_contents_in_window,
/* Copy */
_bfd_xcoff_copy_private_bfd_data, /* _bfd_copy_private_bfd */
/* _bfd_merge_private_bfd_data */
_bfd_xcoff_copy_private_bfd_data,
((boolean (*) (bfd *, bfd *)) bfd_true),
/* _bfd_copy_pivate_section_data */
((boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true),
/* _bfd_copy_private_symbol_data */
((boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true),
((boolean (*) (bfd *, flagword)) bfd_true), /* _bfd_set_private_flags */
((boolean (*) (bfd *, void * )) bfd_true), /* _bfd_print_private_bfd_data */
((boolean (*) (bfd *, flagword)) bfd_true),
((boolean (*) (bfd *, void * )) bfd_true),
/* Core */
coff_core_file_failing_command, /* _core_file_failing_command */
coff_core_file_failing_signal, /* _core_file_failing_signal */
/* _core_file_matches_executable_p */
coff_core_file_failing_command,
coff_core_file_failing_signal,
coff_core_file_matches_executable_p,
/* Archive */
_bfd_xcoff_slurp_armap, /* _slurp_armap */
/* XCOFF archives do not have
anything which corresponds to
an extended name table. */
bfd_false, /* _slurp_extended_name_table */
/* _construct_extended_name_table */
_bfd_xcoff_slurp_armap,
bfd_false,
((boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false),
bfd_dont_truncate_arname, /* _truncate_arname */
_bfd_xcoff_write_armap, /* _write_armap */
_bfd_xcoff_read_ar_hdr, /* _read_ar_hdr */
_bfd_xcoff_openr_next_archived_file, /* _openr_next_archived_file */
_bfd_generic_get_elt_at_index, /* _get_elt_at_index */
_bfd_xcoff_stat_arch_elt, /* _generic_stat_arch_elt */
/* XCOFF archives do not have
a timestamp. */
bfd_true, /* _update_armap_timestamp */
bfd_dont_truncate_arname,
_bfd_xcoff_write_armap,
_bfd_xcoff_read_ar_hdr,
_bfd_xcoff_openr_next_archived_file,
_bfd_generic_get_elt_at_index,
_bfd_xcoff_stat_arch_elt,
bfd_true,
/* Symbols */
coff_get_symtab_upper_bound, /* _get_symtab_upper_bound */
coff_get_symtab, /* _get_symtab */
coff_make_empty_symbol, /* _make_empty_symbol */
coff_print_symbol, /* _print_symbol */
coff_get_symbol_info, /* _get_symbol_info */
_bfd_xcoff_is_local_label_name, /* _bfd_is_local_label_name */
coff_get_lineno, /* _get_lineno */
coff_find_nearest_line, /* _find_nearest_line */
coff_bfd_make_debug_symbol, /* _bfd_make_debug_symbol */
_bfd_generic_read_minisymbols, /* _read_minisymbols */
_bfd_generic_minisymbol_to_symbol, /* _minsymbol_to_symbol */
coff_get_symtab_upper_bound,
coff_get_symtab,
coff_make_empty_symbol,
coff_print_symbol,
coff_get_symbol_info,
_bfd_xcoff_is_local_label_name,
coff_get_lineno,
coff_find_nearest_line,
coff_bfd_make_debug_symbol,
_bfd_generic_read_minisymbols,
_bfd_generic_minisymbol_to_symbol,
/* Reloc */
coff_get_reloc_upper_bound, /* _get_reloc_upper_bound */
coff_canonicalize_reloc, /* _cononicalize_reloc */
_bfd_xcoff_reloc_type_lookup, /* _bfd_reloc_type_lookup */
coff_get_reloc_upper_bound,
coff_canonicalize_reloc,
_bfd_xcoff_reloc_type_lookup,
/* Write */
coff_set_arch_mach, /* _set_arch_mach */
coff_set_section_contents, /* _set_section_contents */
coff_set_arch_mach,
coff_set_section_contents,
/* Link */
_bfd_xcoff_sizeof_headers, /* _sizeof_headers */
/* _bfd_get_relocated_section_contents */
_bfd_xcoff_sizeof_headers,
bfd_generic_get_relocated_section_contents,
bfd_generic_relax_section, /* _bfd_relax_section */
_bfd_xcoff_bfd_link_hash_table_create, /* _bfd_link_hash_table_create */
_bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */
_bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */
_bfd_generic_link_just_syms, /* _bfd_link_just_syms */
_bfd_xcoff_bfd_final_link, /* _bfd_final_link */
_bfd_generic_link_split_section, /* _bfd_link_split_section */
bfd_generic_gc_sections, /* _bfd_gc_sections */
bfd_generic_merge_sections, /* _bfd_merge_sections */
bfd_generic_discard_group, /* _bfd_discard_group */
bfd_generic_relax_section,
_bfd_xcoff_bfd_link_hash_table_create,
_bfd_generic_link_hash_table_free,
_bfd_xcoff_bfd_link_add_symbols,
_bfd_generic_link_just_syms,
_bfd_xcoff_bfd_final_link,
_bfd_generic_link_split_section,
bfd_generic_gc_sections,
bfd_generic_merge_sections,
bfd_generic_discard_group,
/* Dynamic */
/* _get_dynamic_symtab_upper_bound */
_bfd_xcoff_get_dynamic_symtab_upper_bound,
_bfd_xcoff_canonicalize_dynamic_symtab, /* _cononicalize_dynamic_symtab */
_bfd_xcoff_get_dynamic_reloc_upper_bound,/* _get_dynamic_reloc_upper_bound */
_bfd_xcoff_canonicalize_dynamic_reloc, /* _cononicalize_dynamic_reloc */
_bfd_xcoff_canonicalize_dynamic_symtab,
_bfd_xcoff_get_dynamic_reloc_upper_bound,
_bfd_xcoff_canonicalize_dynamic_reloc,
/* Opposite endian version, none exists */
NULL,
/* back end data */
(void *) &bfd_pmac_xcoff_backend_data,
};
};

View File

@ -156,7 +156,7 @@ static boolean xcoff64_bad_format_hook PARAMS ((bfd *, PTR ));
static boolean xcoff64_reloc_type_br PARAMS ((XCOFF_RELOC_FUNCTION_ARGS));
boolean (*xcoff64_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
(XCOFF_RELOC_FUNCTION_ARGS) =
PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)) =
{
xcoff_reloc_type_pos, /* R_POS (0x00) */
xcoff_reloc_type_neg, /* R_NEG (0x01) */
@ -214,7 +214,7 @@ boolean (*xcoff64_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
#ifdef AIX_CORE
extern const bfd_target * rs6000coff_core_p PARAMS ((bfd *abfd));
extern boolean rs6000coff_core_file_matches_executable_p
PARAMS((bfd *cbfd, bfd *ebfd));
PARAMS ((bfd *cbfd, bfd *ebfd));
extern char *rs6000coff_core_file_failing_command PARAMS ((bfd *abfd));
extern int rs6000coff_core_file_failing_signal PARAMS ((bfd *abfd));
#define CORE_FILE_P rs6000coff_core_p
@ -722,7 +722,7 @@ xcoff64_swap_ldrel_out (abfd, src, d)
static boolean
xcoff64_write_object_contents (abfd)
bfd * abfd;
bfd *abfd;
{
asection *current;
boolean hasrelocs = false;
@ -886,9 +886,11 @@ xcoff64_write_object_contents (abfd)
memset (&internal_a, 0, sizeof internal_a);
internal_f.f_magic = bfd_xcoff_magic_number (abfd);
internal_a.magic = (abfd->flags & D_PAGED) ? RS6K_AOUTHDR_ZMAGIC :
(abfd->flags & WP_TEXT) ? RS6K_AOUTHDR_NMAGIC :
RS6K_AOUTHDR_OMAGIC;
internal_a.magic = (abfd->flags & D_PAGED
? RS6K_AOUTHDR_ZMAGIC
: (abfd->flags & WP_TEXT
? RS6K_AOUTHDR_NMAGIC
: RS6K_AOUTHDR_OMAGIC));
/* FIXME: Does anybody ever set this to another value? */
internal_a.vstamp = 0;
@ -1054,7 +1056,7 @@ xcoff64_write_object_contents (abfd)
if (buff == NULL)
return false;
bfd_coff_swap_aouthdr_out (abfd, (PTR) & internal_a, (PTR) buff);
bfd_coff_swap_aouthdr_out (abfd, (PTR) &internal_a, (PTR) buff);
amount = bfd_bwrite ((PTR) buff, amount, abfd);
free (buff);
@ -1096,8 +1098,8 @@ xcoff64_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
cror. */
if (NULL != h
&& bfd_link_hash_defined == h->root.type
&& (rel->r_vaddr - input_section->vma + 8 <=
input_section->_cooked_size))
&& (rel->r_vaddr - input_section->vma + 8
<= input_section->_cooked_size))
{
bfd_byte *pnext;
unsigned long next;
@ -1139,8 +1141,8 @@ xcoff64_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
addend += input_section->vma;
*relocation = val + addend;
*relocation -= (input_section->output_section->vma +
input_section->output_offset);
*relocation -= (input_section->output_section->vma
+ input_section->output_offset);
return true;
}
@ -1191,12 +1193,13 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
howto.size = howto.bitsize > 16 ? (howto.bitsize > 32 ? 4 : 2) : 1;
howto.pc_relative = false;
howto.bitpos = 0;
howto.complain_on_overflow = rel->r_size & 0x80 ?
complain_overflow_signed : complain_overflow_bitfield;
howto.complain_on_overflow = (rel->r_size & 0x80
? complain_overflow_signed
: complain_overflow_bitfield);
howto.special_function = NULL;
howto.name = "internal";
howto.partial_inplace = true;
howto.src_mask = howto.dst_mask = N_ONES(howto.bitsize);
howto.src_mask = howto.dst_mask = N_ONES (howto.bitsize);
howto.pcrel_offset = false;
/* symbol */
@ -1260,7 +1263,7 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
}
if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION
|| (false == xcoff64_calculate_relocation[rel->r_type]
|| ((*xcoff64_calculate_relocation[rel->r_type])
(input_bfd, input_section, output_bfd, rel, sym, &howto, val,
addend, &relocation, contents)))
return false;
@ -1270,7 +1273,7 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
location = contents + address;
if (address > input_section->_raw_size)
abort();
abort ();
/* Get the value we are going to relocate. */
if (1 == howto.size)
@ -1287,11 +1290,11 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
operation, which would be tedious, or we must do the computations
in a type larger than bfd_vma, which would be inefficient. */
if ((unsigned int) howto.complain_on_overflow >=
XCOFF_MAX_COMPLAIN_OVERFLOW)
abort();
if ((unsigned int) howto.complain_on_overflow
>= XCOFF_MAX_COMPLAIN_OVERFLOW)
abort ();
if ((true == xcoff_complain_overflow[howto.complain_on_overflow]
if (((*xcoff_complain_overflow[howto.complain_on_overflow])
(input_bfd, value_to_relocate, relocation, &howto)))
{
const char *name;
@ -1321,9 +1324,9 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
}
/* Add RELOCATION to the right bits of VALUE_TO_RELOCATE. */
value_to_relocate = ((value_to_relocate & ~howto.dst_mask) |
(((value_to_relocate & howto.src_mask) +
relocation) & howto.dst_mask));
value_to_relocate = ((value_to_relocate & ~howto.dst_mask)
| (((value_to_relocate & howto.src_mask)
+ relocation) & howto.dst_mask));
/* Put the value back in the object file. */
if (1 == howto.size)
@ -1787,8 +1790,9 @@ xcoff64_rtype2howto (relent, internal)
abort ();
/* Put a meaningful value in addend */
relent->addend = (internal->r_size & 0x80) ? - internal->r_vaddr
: internal->r_vaddr;
relent->addend = (internal->r_size & 0x80
? -internal->r_vaddr
: internal->r_vaddr);
}
reloc_howto_type *
@ -2287,7 +2291,7 @@ xcoff64_generate_rtinit (abfd, init, fini, rtld)
string_table_size += strlen (rtinit_name) + 1;
string_table_size += initsz;
string_table_size += finisz;
if (true == rtld)
if (rtld)
string_table_size += strlen (rtld_name) + 1;
string_table = (bfd_byte *) bfd_zmalloc (string_table_size);
@ -2491,87 +2495,82 @@ static unsigned long xcoff64_glink_code[10] =
};
static const struct xcoff_backend_data_rec bfd_xcoff_backend_data =
{
{
{ /* COFF backend, defined in libcoff.h. */
_bfd_xcoff64_swap_aux_in, /* _bfd_coff_swap_aux_in */
_bfd_xcoff64_swap_sym_in, /* _bfd_coff_swap_sym_in */
_bfd_xcoff64_swap_lineno_in, /* _bfd_coff_swap_lineno_in */
_bfd_xcoff64_swap_aux_out, /* _bfd_swap_aux_out */
_bfd_xcoff64_swap_sym_out, /* _bfd_swap_sym_out */
_bfd_xcoff64_swap_lineno_out, /* _bfd_swap_lineno_out */
xcoff64_swap_reloc_out, /* _bfd_swap_reloc_out */
coff_swap_filehdr_out, /* _bfd_swap_filehdr_out */
coff_swap_aouthdr_out, /* _bfd_swap_aouthdr_out */
coff_swap_scnhdr_out, /* _bfd_swap_scnhdr_out */
FILHSZ, /* _bfd_filhsz */
AOUTSZ, /* _bfd_aoutsz */
SCNHSZ, /* _bfd_scnhsz */
SYMESZ, /* _bfd_symesz */
AUXESZ, /* _bfd_auxesz */
RELSZ, /* _bfd_relsz */
LINESZ, /* _bfd_linesz */
FILNMLEN, /* _bfd_filnmlen */
_bfd_xcoff64_swap_aux_in,
_bfd_xcoff64_swap_sym_in,
_bfd_xcoff64_swap_lineno_in,
_bfd_xcoff64_swap_aux_out,
_bfd_xcoff64_swap_sym_out,
_bfd_xcoff64_swap_lineno_out,
xcoff64_swap_reloc_out,
coff_swap_filehdr_out,
coff_swap_aouthdr_out,
coff_swap_scnhdr_out,
FILHSZ,
AOUTSZ,
SCNHSZ,
SYMESZ,
AUXESZ,
RELSZ,
LINESZ,
FILNMLEN,
true, /* _bfd_coff_long_filenames */
false, /* _bfd_coff_long_section_names */
(3), /* _bfd_coff_default_section_alignment_power */
3, /* _bfd_coff_default_section_alignment_power */
true, /* _bfd_coff_force_symnames_in_strings */
4, /* _bfd_coff_debug_string_prefix_length */
coff_swap_filehdr_in, /* _bfd_coff_swap_filehdr_in */
coff_swap_aouthdr_in, /* _bfd_swap_aouthdr_in */
coff_swap_scnhdr_in, /* _bfd_swap_scnhdr_in */
xcoff64_swap_reloc_in, /* _bfd_reloc_in */
xcoff64_bad_format_hook, /* _bfd_bad_format_hook */
coff_set_arch_mach_hook, /* _bfd_set_arch_mach_hook */
coff_mkobject_hook, /* _bfd_mkobject_hook */
styp_to_sec_flags, /* _bfd_syp_to_sec_flags */
coff_set_alignment_hook, /* _bfd_set_alignment_hook */
coff_slurp_symbol_table, /* _bfd_coff_slurp_symbol_table */
symname_in_debug_hook, /* _coff_symname_in_debug_hook */
coff_pointerize_aux_hook, /* _bfd_coff_pointerize_aux_hook */
coff_print_aux, /* bfd_coff_print_aux */
dummy_reloc16_extra_cases, /* _bfd_coff_reloc16_extra_cases */
dummy_reloc16_estimate, /* _bfd_coff_reloc16_estimate */
coff_swap_filehdr_in,
coff_swap_aouthdr_in,
coff_swap_scnhdr_in,
xcoff64_swap_reloc_in,
xcoff64_bad_format_hook,
coff_set_arch_mach_hook,
coff_mkobject_hook,
styp_to_sec_flags,
coff_set_alignment_hook,
coff_slurp_symbol_table,
symname_in_debug_hook,
coff_pointerize_aux_hook,
coff_print_aux,
dummy_reloc16_extra_cases,
dummy_reloc16_estimate,
NULL, /* bfd_coff_sym_is_global */
/* _bfd_coff_compute_section_file_positions */
coff_compute_section_file_positions,
NULL , /* _bfd_coff_start_final_link */
xcoff64_ppc_relocate_section, /* _bfd_coff_relocate_section */
coff_rtype_to_howto, /* _bfd_coff_rtype_to_howto */
NULL , /* _bfd_coff_addust_symndx */
_bfd_generic_link_add_one_symbol, /* _bfd_coff_add_one_symbol */
coff_link_output_has_begun, /* _bfd_coff_link_output_has_begun */
coff_final_link_postscript /* _bfd_coff_final_link_postscript */
NULL, /* _bfd_coff_start_final_link */
xcoff64_ppc_relocate_section,
coff_rtype_to_howto,
NULL, /* _bfd_coff_adjust_symndx */
_bfd_generic_link_add_one_symbol,
coff_link_output_has_begun,
coff_final_link_postscript
},
0x01EF, /* magic number */
bfd_arch_powerpc, /* architecture */
bfd_mach_ppc_620, /* machine */
bfd_arch_powerpc,
bfd_mach_ppc_620,
/* Function pointers to xcoff specific swap routines. */
xcoff64_swap_ldhdr_in, /* _xcoff_swap_ldhdr_in */
xcoff64_swap_ldhdr_out, /* _xcoff_swap_ldhdr_out */
xcoff64_swap_ldsym_in, /* _xcoff_swap_ldsym_in */
xcoff64_swap_ldsym_out, /* _xcoff_swap_ldsym_out */
xcoff64_swap_ldrel_in, /* _xcoff_swap_ldrel_in */
xcoff64_swap_ldrel_out, /* _xcoff_swap_ldrel_out */
xcoff64_swap_ldhdr_in,
xcoff64_swap_ldhdr_out,
xcoff64_swap_ldsym_in,
xcoff64_swap_ldsym_out,
xcoff64_swap_ldrel_in,
xcoff64_swap_ldrel_out,
/* Sizes. */
LDHDRSZ, /* _xcoff_ldhdrsz */
LDSYMSZ, /* _xcoff_ldsymsz */
LDRELSZ, /* _xcoff_ldrelsz */
LDHDRSZ,
LDSYMSZ,
LDRELSZ,
24, /* _xcoff_function_descriptor_size */
0, /* _xcoff_small_aout_header_size */
/* Versions. */
2, /* _xcoff_ldhdr_version */
/* xcoff vs xcoff64 putting symbol names. */
_bfd_xcoff64_put_symbol_name, /* _xcoff_put_symbol_name */
_bfd_xcoff64_put_ldsymbol_name, /* _xcoff_put_ldsymbol_name */
/* Dynamic reloc howto. */
_bfd_xcoff64_put_symbol_name,
_bfd_xcoff64_put_ldsymbol_name,
&xcoff64_dynamic_reloc,
xcoff64_create_csect_from_smclas,
/* Lineno and reloc count overflow. */
@ -2587,47 +2586,46 @@ static const struct xcoff_backend_data_rec bfd_xcoff_backend_data =
/* rtinit. */
88, /* _xcoff_rtinit_size */
xcoff64_generate_rtinit, /* _xcoff_generate_rtinit */
};
xcoff64_generate_rtinit,
};
/* The transfer vector that leads the outside world to all of the above. */
const bfd_target rs6000coff64_vec =
{
{
"aixcoff64-rs6000",
bfd_target_xcoff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG | DYNAMIC |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | DYNAMIC
| HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),
0, /* leading char */
'/', /* ar_pad_char */
15, /* ar_max_namelen??? FIXMEmgo */
15, /* ar_max_namelen */
/* data */
bfd_getb64, /* bfd_getx64 */
bfd_getb_signed_64, /* bfd_getx_signed_64 */
bfd_putb64, /* bfd_putx64 */
bfd_getb32, /* bfd_getx32 */
bfd_getb_signed_32, /* bfd_getx_signed_32 */
bfd_putb32, /* bfd_putx32 */
bfd_getb16, /* bfd_getx16 */
bfd_getb_signed_16, /* bfd_getx_signed_16 */
bfd_putb16, /* bfd_putx16 */
bfd_getb64,
bfd_getb_signed_64,
bfd_putb64,
bfd_getb32,
bfd_getb_signed_32,
bfd_putb32,
bfd_getb16,
bfd_getb_signed_16,
bfd_putb16,
/* hdrs */
bfd_getb64, /* bfd_h_getx64 */
bfd_getb_signed_64, /* bfd_h_getx_signed_64 */
bfd_putb64, /* bfd_h_putx64 */
bfd_getb32, /* bfd_h_getx32 */
bfd_getb_signed_32, /* bfd_h_getx_signed_32 */
bfd_putb32, /* bfd_h_putx32 */
bfd_getb16, /* bfd_h_getx16 */
bfd_getb_signed_16, /* bfd_h_getx_signed_16 */
bfd_putb16, /* bfd_h_putx16 */
bfd_getb64,
bfd_getb_signed_64,
bfd_putb64,
bfd_getb32,
bfd_getb_signed_32,
bfd_putb32,
bfd_getb16,
bfd_getb_signed_16,
bfd_putb16,
{ /* bfd_check_format */
_bfd_dummy_target,
@ -2651,180 +2649,166 @@ const bfd_target rs6000coff64_vec =
},
/* Generic */
bfd_true, /* _close_and_cleanup */
bfd_true, /* _bfd_free_cached_info */
coff_new_section_hook, /* _new_section_hook */
_bfd_generic_get_section_contents, /* _bfd_get_section_contents */
/* _bfd_get_section_contents_in_window */
bfd_true,
bfd_true,
coff_new_section_hook,
_bfd_generic_get_section_contents,
_bfd_generic_get_section_contents_in_window,
/* Copy */
_bfd_xcoff_copy_private_bfd_data, /* _bfd_copy_private_bfd */
/* _bfd_merge_private_bfd_data */
_bfd_xcoff_copy_private_bfd_data,
((boolean (*) (bfd *, bfd *)) bfd_true),
/* _bfd_copy_pivate_section_data */
((boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true),
/* _bfd_copy_private_symbol_data */
((boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true),
((boolean (*) (bfd *, flagword)) bfd_true), /* _bfd_set_private_flags */
((boolean (*) (bfd *, void * )) bfd_true), /* _bfd_print_private_bfd_data */
((boolean (*) (bfd *, flagword)) bfd_true),
((boolean (*) (bfd *, void * )) bfd_true),
/* Core */
coff_core_file_failing_command, /* _core_file_failing_command */
coff_core_file_failing_signal, /* _core_file_failing_signal */
coff_core_file_matches_executable_p, /* _core_file_matches_executable_p */
coff_core_file_failing_command,
coff_core_file_failing_signal,
coff_core_file_matches_executable_p,
/* Archive */
xcoff64_slurp_armap, /* _slurp_armap */
/* XCOFF archives do not have anything which corresponds to an
extended name table. */
bfd_false, /* _slurp_extended_name_table */
/* _construct_extended_name_table */
xcoff64_slurp_armap,
bfd_false,
((boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false),
bfd_dont_truncate_arname, /* _truncate_arname */
_bfd_xcoff_write_armap, /* _write_armap */
_bfd_xcoff_read_ar_hdr, /* _read_ar_hdr */
xcoff64_openr_next_archived_file, /* _openr_next_archived_file */
_bfd_generic_get_elt_at_index, /* _get_elt_at_index */
_bfd_xcoff_stat_arch_elt, /* _generic_stat_arch_elt */
/* XCOFF archives do not have a timestamp. */
bfd_true, /* _update_armap_timestamp */
bfd_dont_truncate_arname,
_bfd_xcoff_write_armap,
_bfd_xcoff_read_ar_hdr,
xcoff64_openr_next_archived_file,
_bfd_generic_get_elt_at_index,
_bfd_xcoff_stat_arch_elt,
bfd_true,
/* Symbols */
coff_get_symtab_upper_bound, /* _get_symtab_upper_bound */
coff_get_symtab, /* _get_symtab */
coff_make_empty_symbol, /* _make_empty_symbol */
coff_print_symbol, /* _print_symbol */
coff_get_symbol_info, /* _get_symbol_info */
_bfd_xcoff_is_local_label_name, /* _bfd_is_local_label_name */
coff_get_lineno, /* _get_lineno */
coff_find_nearest_line, /* _find_nearest_line */
coff_bfd_make_debug_symbol, /* _bfd_make_debug_symbol */
_bfd_generic_read_minisymbols, /* _read_minisymbols */
_bfd_generic_minisymbol_to_symbol, /* _minsymbol_to_symbol */
coff_get_symtab_upper_bound,
coff_get_symtab,
coff_make_empty_symbol,
coff_print_symbol,
coff_get_symbol_info,
_bfd_xcoff_is_local_label_name,
coff_get_lineno,
coff_find_nearest_line,
coff_bfd_make_debug_symbol,
_bfd_generic_read_minisymbols,
_bfd_generic_minisymbol_to_symbol,
/* Reloc */
coff_get_reloc_upper_bound, /* _get_reloc_upper_bound */
coff_canonicalize_reloc, /* _cononicalize_reloc */
xcoff64_reloc_type_lookup, /* _bfd_reloc_type_lookup */
coff_get_reloc_upper_bound,
coff_canonicalize_reloc,
xcoff64_reloc_type_lookup,
/* Write */
coff_set_arch_mach, /* _set_arch_mach */
coff_set_section_contents, /* _set_section_contents */
coff_set_arch_mach,
coff_set_section_contents,
/* Link */
xcoff64_sizeof_headers, /* _sizeof_headers */
/* _bfd_get_relocated_section_contents */
xcoff64_sizeof_headers,
bfd_generic_get_relocated_section_contents,
bfd_generic_relax_section, /* _bfd_relax_section */
_bfd_xcoff_bfd_link_hash_table_create,/* _bfd_link_hash_table_create */
_bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */
_bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */
_bfd_generic_link_just_syms, /* _bfd_link_just_syms */
_bfd_xcoff_bfd_final_link, /* _bfd_final_link */
_bfd_generic_link_split_section, /* _bfd_link_split_section */
bfd_generic_gc_sections, /* _bfd_gc_sections */
bfd_generic_merge_sections, /* _bfd_merge_sections */
bfd_generic_discard_group, /* _bfd_discard_group */
bfd_generic_relax_section,
_bfd_xcoff_bfd_link_hash_table_create,
_bfd_generic_link_hash_table_free,
_bfd_xcoff_bfd_link_add_symbols,
_bfd_generic_link_just_syms,
_bfd_xcoff_bfd_final_link,
_bfd_generic_link_split_section,
bfd_generic_gc_sections,
bfd_generic_merge_sections,
bfd_generic_discard_group,
/* Dynamic */
/* _get_dynamic_symtab_upper_bound */
_bfd_xcoff_get_dynamic_symtab_upper_bound,
_bfd_xcoff_canonicalize_dynamic_symtab, /* _cononicalize_dynamic_symtab */
_bfd_xcoff_get_dynamic_reloc_upper_bound,/* _get_dynamic_reloc_upper_bound */
_bfd_xcoff_canonicalize_dynamic_reloc, /* _cononicalize_dynamic_reloc */
_bfd_xcoff_canonicalize_dynamic_symtab,
_bfd_xcoff_get_dynamic_reloc_upper_bound,
_bfd_xcoff_canonicalize_dynamic_reloc,
/* Opposite endian version, none exists */
NULL,
/* back end data */
(void *) &bfd_xcoff_backend_data,
};
};
extern const bfd_target *xcoff64_core_p PARAMS ((bfd *));
extern boolean xcoff64_core_file_matches_executable_p PARAMS((bfd *, bfd *));
extern boolean xcoff64_core_file_matches_executable_p PARAMS ((bfd *, bfd *));
extern char *xcoff64_core_file_failing_command PARAMS ((bfd *));
extern int xcoff64_core_file_failing_signal PARAMS ((bfd *));
/* AIX 5 */
static const struct xcoff_backend_data_rec bfd_xcoff_aix5_backend_data =
{
{
{ /* COFF backend, defined in libcoff.h. */
_bfd_xcoff64_swap_aux_in, /* _bfd_coff_swap_aux_in */
_bfd_xcoff64_swap_sym_in, /* _bfd_coff_swap_sym_in */
_bfd_xcoff64_swap_lineno_in, /* _bfd_coff_swap_lineno_in */
_bfd_xcoff64_swap_aux_out, /* _bfd_swap_aux_out */
_bfd_xcoff64_swap_sym_out, /* _bfd_swap_sym_out */
_bfd_xcoff64_swap_lineno_out, /* _bfd_swap_lineno_out */
xcoff64_swap_reloc_out, /* _bfd_swap_reloc_out */
coff_swap_filehdr_out, /* _bfd_swap_filehdr_out */
coff_swap_aouthdr_out, /* _bfd_swap_aouthdr_out */
coff_swap_scnhdr_out, /* _bfd_swap_scnhdr_out */
FILHSZ, /* _bfd_filhsz */
AOUTSZ, /* _bfd_aoutsz */
SCNHSZ, /* _bfd_scnhsz */
SYMESZ, /* _bfd_symesz */
AUXESZ, /* _bfd_auxesz */
RELSZ, /* _bfd_relsz */
LINESZ, /* _bfd_linesz */
FILNMLEN, /* _bfd_filnmlen */
_bfd_xcoff64_swap_aux_in,
_bfd_xcoff64_swap_sym_in,
_bfd_xcoff64_swap_lineno_in,
_bfd_xcoff64_swap_aux_out,
_bfd_xcoff64_swap_sym_out,
_bfd_xcoff64_swap_lineno_out,
xcoff64_swap_reloc_out,
coff_swap_filehdr_out,
coff_swap_aouthdr_out,
coff_swap_scnhdr_out,
FILHSZ,
AOUTSZ,
SCNHSZ,
SYMESZ,
AUXESZ,
RELSZ,
LINESZ,
FILNMLEN,
true, /* _bfd_coff_long_filenames */
false, /* _bfd_coff_long_section_names */
(3), /* _bfd_coff_default_section_alignment_power */
3, /* _bfd_coff_default_section_alignment_power */
true, /* _bfd_coff_force_symnames_in_strings */
4, /* _bfd_coff_debug_string_prefix_length */
coff_swap_filehdr_in, /* _bfd_coff_swap_filehdr_in */
coff_swap_aouthdr_in, /* _bfd_swap_aouthdr_in */
coff_swap_scnhdr_in, /* _bfd_swap_scnhdr_in */
xcoff64_swap_reloc_in, /* _bfd_reloc_in */
xcoff64_bad_format_hook, /* _bfd_bad_format_hook */
coff_set_arch_mach_hook, /* _bfd_set_arch_mach_hook */
coff_mkobject_hook, /* _bfd_mkobject_hook */
styp_to_sec_flags, /* _bfd_syp_to_sec_flags */
coff_set_alignment_hook, /* _bfd_set_alignment_hook */
coff_slurp_symbol_table, /* _bfd_coff_slurp_symbol_table */
symname_in_debug_hook, /* _coff_symname_in_debug_hook */
coff_pointerize_aux_hook, /* _bfd_coff_pointerize_aux_hook */
coff_print_aux, /* bfd_coff_print_aux */
dummy_reloc16_extra_cases, /* _bfd_coff_reloc16_extra_cases */
dummy_reloc16_estimate, /* _bfd_coff_reloc16_estimate */
coff_swap_filehdr_in,
coff_swap_aouthdr_in,
coff_swap_scnhdr_in,
xcoff64_swap_reloc_in,
xcoff64_bad_format_hook,
coff_set_arch_mach_hook,
coff_mkobject_hook,
styp_to_sec_flags,
coff_set_alignment_hook,
coff_slurp_symbol_table,
symname_in_debug_hook,
coff_pointerize_aux_hook,
coff_print_aux,
dummy_reloc16_extra_cases,
dummy_reloc16_estimate,
NULL, /* bfd_coff_sym_is_global */
/* _bfd_coff_compute_section_file_positions */
coff_compute_section_file_positions,
NULL , /* _bfd_coff_start_final_link */
xcoff64_ppc_relocate_section, /* _bfd_coff_relocate_section */
coff_rtype_to_howto, /* _bfd_coff_rtype_to_howto */
NULL , /* _bfd_coff_addust_symndx */
_bfd_generic_link_add_one_symbol, /* _bfd_coff_add_one_symbol */
coff_link_output_has_begun, /* _bfd_coff_link_output_has_begun */
coff_final_link_postscript /* _bfd_coff_final_link_postscript */
NULL, /* _bfd_coff_start_final_link */
xcoff64_ppc_relocate_section,
coff_rtype_to_howto,
NULL, /* _bfd_coff_adjust_symndx */
_bfd_generic_link_add_one_symbol,
coff_link_output_has_begun,
coff_final_link_postscript
},
U64_TOCMAGIC, /* magic number */
bfd_arch_powerpc, /* architecture */
bfd_mach_ppc_620, /* machine */
bfd_arch_powerpc,
bfd_mach_ppc_620,
/* Function pointers to xcoff specific swap routines. */
xcoff64_swap_ldhdr_in, /* _xcoff_swap_ldhdr_in */
xcoff64_swap_ldhdr_out, /* _xcoff_swap_ldhdr_out */
xcoff64_swap_ldsym_in, /* _xcoff_swap_ldsym_in */
xcoff64_swap_ldsym_out, /* _xcoff_swap_ldsym_out */
xcoff64_swap_ldrel_in, /* _xcoff_swap_ldrel_in */
xcoff64_swap_ldrel_out, /* _xcoff_swap_ldrel_out */
xcoff64_swap_ldhdr_in,
xcoff64_swap_ldhdr_out,
xcoff64_swap_ldsym_in,
xcoff64_swap_ldsym_out,
xcoff64_swap_ldrel_in,
xcoff64_swap_ldrel_out,
/* Sizes. */
LDHDRSZ, /* _xcoff_ldhdrsz */
LDSYMSZ, /* _xcoff_ldsymsz */
LDRELSZ, /* _xcoff_ldrelsz */
LDHDRSZ,
LDSYMSZ,
LDRELSZ,
24, /* _xcoff_function_descriptor_size */
0, /* _xcoff_small_aout_header_size */
/* Versions. */
2, /* _xcoff_ldhdr_version */
_bfd_xcoff64_put_symbol_name, /* _xcoff_put_symbol_name */
_bfd_xcoff64_put_ldsymbol_name, /* _xcoff_put_ldsymbol_name */
/* Dynamic reloc howto. */
_bfd_xcoff64_put_symbol_name,
_bfd_xcoff64_put_ldsymbol_name,
&xcoff64_dynamic_reloc,
xcoff64_create_csect_from_smclas,
@ -2841,47 +2825,46 @@ static const struct xcoff_backend_data_rec bfd_xcoff_aix5_backend_data =
/* rtinit. */
88, /* _xcoff_rtinit_size */
xcoff64_generate_rtinit, /* _xcoff_generate_rtinit */
};
xcoff64_generate_rtinit,
};
/* The transfer vector that leads the outside world to all of the above. */
const bfd_target aix5coff64_vec =
{
{
"aix5coff64-rs6000",
bfd_target_xcoff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG | DYNAMIC |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | DYNAMIC
| HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),
0, /* leading char */
'/', /* ar_pad_char */
15, /* ar_max_namelen??? FIXMEmgo */
15, /* ar_max_namelen */
/* data */
bfd_getb64, /* bfd_getx64 */
bfd_getb_signed_64, /* bfd_getx_signed_64 */
bfd_putb64, /* bfd_putx64 */
bfd_getb32, /* bfd_getx32 */
bfd_getb_signed_32, /* bfd_getx_signed_32 */
bfd_putb32, /* bfd_putx32 */
bfd_getb16, /* bfd_getx16 */
bfd_getb_signed_16, /* bfd_getx_signed_16 */
bfd_putb16, /* bfd_putx16 */
bfd_getb64,
bfd_getb_signed_64,
bfd_putb64,
bfd_getb32,
bfd_getb_signed_32,
bfd_putb32,
bfd_getb16,
bfd_getb_signed_16,
bfd_putb16,
/* hdrs */
bfd_getb64, /* bfd_h_getx64 */
bfd_getb_signed_64, /* bfd_h_getx_signed_64 */
bfd_putb64, /* bfd_h_putx64 */
bfd_getb32, /* bfd_h_getx32 */
bfd_getb_signed_32, /* bfd_h_getx_signed_32 */
bfd_putb32, /* bfd_h_putx32 */
bfd_getb16, /* bfd_h_getx16 */
bfd_getb_signed_16, /* bfd_h_getx_signed_16 */
bfd_putb16, /* bfd_h_putx16 */
bfd_getb64,
bfd_getb_signed_64,
bfd_putb64,
bfd_getb32,
bfd_getb_signed_32,
bfd_putb32,
bfd_getb16,
bfd_getb_signed_16,
bfd_putb16,
{ /* bfd_check_format */
_bfd_dummy_target,
@ -2905,92 +2888,81 @@ const bfd_target aix5coff64_vec =
},
/* Generic */
bfd_true, /* _close_and_cleanup */
bfd_true, /* _bfd_free_cached_info */
coff_new_section_hook, /* _new_section_hook */
_bfd_generic_get_section_contents, /* _bfd_get_section_contents */
/* _bfd_get_section_contents_in_window */
bfd_true,
bfd_true,
coff_new_section_hook,
_bfd_generic_get_section_contents,
_bfd_generic_get_section_contents_in_window,
/* Copy */
_bfd_xcoff_copy_private_bfd_data, /* _bfd_copy_private_bfd */
/* _bfd_merge_private_bfd_data */
_bfd_xcoff_copy_private_bfd_data,
((boolean (*) (bfd *, bfd *)) bfd_true),
/* _bfd_copy_pivate_section_data */
((boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true),
/* _bfd_copy_private_symbol_data */
((boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true),
((boolean (*) (bfd *, flagword)) bfd_true), /* _bfd_set_private_flags */
((boolean (*) (bfd *, void * )) bfd_true), /* _bfd_print_private_bfd_data */
((boolean (*) (bfd *, flagword)) bfd_true),
((boolean (*) (bfd *, void * )) bfd_true),
/* Core */
xcoff64_core_file_failing_command, /* _core_file_failing_command */
xcoff64_core_file_failing_signal, /* _core_file_failing_signal */
xcoff64_core_file_matches_executable_p, /* _core_file_matches_executable_p */
xcoff64_core_file_failing_command,
xcoff64_core_file_failing_signal,
xcoff64_core_file_matches_executable_p,
/* Archive */
xcoff64_slurp_armap, /* _slurp_armap */
/* XCOFF archives do not have anything which corresponds to an
extended name table. */
bfd_false, /* _slurp_extended_name_table */
/* _construct_extended_name_table */
xcoff64_slurp_armap,
bfd_false,
((boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false),
bfd_dont_truncate_arname, /* _truncate_arname */
_bfd_xcoff_write_armap, /* _write_armap */
_bfd_xcoff_read_ar_hdr, /* _read_ar_hdr */
xcoff64_openr_next_archived_file, /* _openr_next_archived_file */
_bfd_generic_get_elt_at_index, /* _get_elt_at_index */
_bfd_xcoff_stat_arch_elt, /* _generic_stat_arch_elt */
/* XCOFF archives do not have a timestamp. */
bfd_true, /* _update_armap_timestamp */
bfd_dont_truncate_arname,
_bfd_xcoff_write_armap,
_bfd_xcoff_read_ar_hdr,
xcoff64_openr_next_archived_file,
_bfd_generic_get_elt_at_index,
_bfd_xcoff_stat_arch_elt,
bfd_true,
/* Symbols */
coff_get_symtab_upper_bound, /* _get_symtab_upper_bound */
coff_get_symtab, /* _get_symtab */
coff_make_empty_symbol, /* _make_empty_symbol */
coff_print_symbol, /* _print_symbol */
coff_get_symbol_info, /* _get_symbol_info */
_bfd_xcoff_is_local_label_name, /* _bfd_is_local_label_name */
coff_get_lineno, /* _get_lineno */
coff_find_nearest_line, /* _find_nearest_line */
coff_bfd_make_debug_symbol, /* _bfd_make_debug_symbol */
_bfd_generic_read_minisymbols, /* _read_minisymbols */
_bfd_generic_minisymbol_to_symbol, /* _minsymbol_to_symbol */
coff_get_symtab_upper_bound,
coff_get_symtab,
coff_make_empty_symbol,
coff_print_symbol,
coff_get_symbol_info,
_bfd_xcoff_is_local_label_name,
coff_get_lineno,
coff_find_nearest_line,
coff_bfd_make_debug_symbol,
_bfd_generic_read_minisymbols,
_bfd_generic_minisymbol_to_symbol,
/* Reloc */
coff_get_reloc_upper_bound, /* _get_reloc_upper_bound */
coff_canonicalize_reloc, /* _cononicalize_reloc */
xcoff64_reloc_type_lookup, /* _bfd_reloc_type_lookup */
coff_get_reloc_upper_bound,
coff_canonicalize_reloc,
xcoff64_reloc_type_lookup,
/* Write */
coff_set_arch_mach, /* _set_arch_mach */
coff_set_section_contents, /* _set_section_contents */
coff_set_arch_mach,
coff_set_section_contents,
/* Link */
xcoff64_sizeof_headers, /* _sizeof_headers */
/* _bfd_get_relocated_section_contents */
xcoff64_sizeof_headers,
bfd_generic_get_relocated_section_contents,
bfd_generic_relax_section, /* _bfd_relax_section */
_bfd_xcoff_bfd_link_hash_table_create,/* _bfd_link_hash_table_create */
_bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */
_bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */
_bfd_generic_link_just_syms, /* _bfd_link_just_syms */
_bfd_xcoff_bfd_final_link, /* _bfd_final_link */
_bfd_generic_link_split_section, /* _bfd_link_split_section */
bfd_generic_gc_sections, /* _bfd_gc_sections */
bfd_generic_merge_sections, /* _bfd_merge_sections */
bfd_generic_discard_group, /* _bfd_discard_group */
bfd_generic_relax_section,
_bfd_xcoff_bfd_link_hash_table_create,
_bfd_generic_link_hash_table_free,
_bfd_xcoff_bfd_link_add_symbols,
_bfd_generic_link_just_syms,
_bfd_xcoff_bfd_final_link,
_bfd_generic_link_split_section,
bfd_generic_gc_sections,
bfd_generic_merge_sections,
bfd_generic_discard_group,
/* Dynamic */
/* _get_dynamic_symtab_upper_bound */
_bfd_xcoff_get_dynamic_symtab_upper_bound,
_bfd_xcoff_canonicalize_dynamic_symtab, /* _cononicalize_dynamic_symtab */
_bfd_xcoff_get_dynamic_reloc_upper_bound,/* _get_dynamic_reloc_upper_bound */
_bfd_xcoff_canonicalize_dynamic_reloc, /* _cononicalize_dynamic_reloc */
_bfd_xcoff_canonicalize_dynamic_symtab,
_bfd_xcoff_get_dynamic_reloc_upper_bound,
_bfd_xcoff_canonicalize_dynamic_reloc,
/* Opposite endian version, none exists. */
NULL,
/* back end data */
(void *) & bfd_xcoff_aix5_backend_data,
};
};