|
|
|
@ -50,10 +50,6 @@ static reloc_howto_type * tic54x_coff_reloc_type_lookup |
|
|
|
PARAMS ((bfd *, bfd_reloc_code_real_type)); |
|
|
|
static void tic54x_lookup_howto |
|
|
|
PARAMS ((arelent *, struct internal_reloc *)); |
|
|
|
static bfd_boolean ticoff0_bad_format_hook |
|
|
|
PARAMS ((bfd *, PTR)); |
|
|
|
static bfd_boolean ticoff1_bad_format_hook |
|
|
|
PARAMS ((bfd *, PTR)); |
|
|
|
static bfd_boolean ticoff_bfd_is_local_label_name |
|
|
|
PARAMS ((bfd *, const char *)); |
|
|
|
|
|
|
|
@ -323,32 +319,6 @@ coff_tic54x_rtype_to_howto (abfd, sec, rel, h, sym, addendp) |
|
|
|
return genrel.howto; |
|
|
|
} |
|
|
|
|
|
|
|
static bfd_boolean |
|
|
|
ticoff0_bad_format_hook (abfd, filehdr) |
|
|
|
bfd * abfd ATTRIBUTE_UNUSED; |
|
|
|
PTR filehdr; |
|
|
|
{ |
|
|
|
struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr; |
|
|
|
|
|
|
|
if (COFF0_BADMAG (*internal_f)) |
|
|
|
return FALSE; |
|
|
|
|
|
|
|
return TRUE; |
|
|
|
} |
|
|
|
|
|
|
|
static bfd_boolean |
|
|
|
ticoff1_bad_format_hook (abfd, filehdr) |
|
|
|
bfd * abfd ATTRIBUTE_UNUSED; |
|
|
|
PTR filehdr; |
|
|
|
{ |
|
|
|
struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr; |
|
|
|
|
|
|
|
if (COFF1_BADMAG (*internal_f)) |
|
|
|
return FALSE; |
|
|
|
|
|
|
|
return TRUE; |
|
|
|
} |
|
|
|
|
|
|
|
/* Replace the stock _bfd_coff_is_local_label_name to recognize TI COFF local
|
|
|
|
labels. */ |
|
|
|
|
|
|
|
@ -435,88 +405,6 @@ tic54x_reloc_processing (relent, reloc, symbols, abfd, section) |
|
|
|
tic54x_lookup_howto (relent, reloc); |
|
|
|
} |
|
|
|
|
|
|
|
/* COFF0 differs in file/section header size and relocation entry size. */ |
|
|
|
static const bfd_coff_backend_data ticoff0_swap_table = |
|
|
|
{ |
|
|
|
coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in, |
|
|
|
coff_SWAP_aux_out, coff_SWAP_sym_out, |
|
|
|
coff_SWAP_lineno_out, coff_SWAP_reloc_out, |
|
|
|
coff_SWAP_filehdr_out, coff_SWAP_aouthdr_out, |
|
|
|
coff_SWAP_scnhdr_out, |
|
|
|
FILHSZ_V0, AOUTSZ, SCNHSZ_V01, SYMESZ, AUXESZ, RELSZ_V0, LINESZ, FILNMLEN, |
|
|
|
#ifdef COFF_LONG_FILENAMES |
|
|
|
TRUE, |
|
|
|
#else |
|
|
|
FALSE, |
|
|
|
#endif |
|
|
|
#ifdef COFF_LONG_SECTION_NAMES |
|
|
|
TRUE, |
|
|
|
#else |
|
|
|
FALSE, |
|
|
|
#endif |
|
|
|
#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS |
|
|
|
TRUE, |
|
|
|
#else |
|
|
|
FALSE, |
|
|
|
#endif |
|
|
|
#ifdef COFF_DEBUG_STRING_WIDE_PREFIX |
|
|
|
4, |
|
|
|
#else |
|
|
|
2, |
|
|
|
#endif |
|
|
|
COFF_DEFAULT_SECTION_ALIGNMENT_POWER, |
|
|
|
coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in, |
|
|
|
coff_SWAP_reloc_in, ticoff0_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, coff_reloc16_extra_cases, coff_reloc16_estimate, |
|
|
|
coff_classify_symbol, coff_compute_section_file_positions, |
|
|
|
coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, |
|
|
|
coff_adjust_symndx, coff_link_add_one_symbol, |
|
|
|
coff_link_output_has_begun, coff_final_link_postscript |
|
|
|
}; |
|
|
|
|
|
|
|
/* COFF1 differs in section header size. */ |
|
|
|
static const bfd_coff_backend_data ticoff1_swap_table = |
|
|
|
{ |
|
|
|
coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in, |
|
|
|
coff_SWAP_aux_out, coff_SWAP_sym_out, |
|
|
|
coff_SWAP_lineno_out, coff_SWAP_reloc_out, |
|
|
|
coff_SWAP_filehdr_out, coff_SWAP_aouthdr_out, |
|
|
|
coff_SWAP_scnhdr_out, |
|
|
|
FILHSZ, AOUTSZ, SCNHSZ_V01, SYMESZ, AUXESZ, RELSZ, LINESZ, FILNMLEN, |
|
|
|
#ifdef COFF_LONG_FILENAMES |
|
|
|
TRUE, |
|
|
|
#else |
|
|
|
FALSE, |
|
|
|
#endif |
|
|
|
#ifdef COFF_LONG_SECTION_NAMES |
|
|
|
TRUE, |
|
|
|
#else |
|
|
|
FALSE, |
|
|
|
#endif |
|
|
|
COFF_DEFAULT_SECTION_ALIGNMENT_POWER, |
|
|
|
#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS |
|
|
|
TRUE, |
|
|
|
#else |
|
|
|
FALSE, |
|
|
|
#endif |
|
|
|
#ifdef COFF_DEBUG_STRING_WIDE_PREFIX |
|
|
|
4, |
|
|
|
#else |
|
|
|
2, |
|
|
|
#endif |
|
|
|
coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in, |
|
|
|
coff_SWAP_reloc_in, ticoff1_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, coff_reloc16_extra_cases, coff_reloc16_estimate, |
|
|
|
coff_classify_symbol, coff_compute_section_file_positions, |
|
|
|
coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, |
|
|
|
coff_adjust_symndx, coff_link_add_one_symbol, |
|
|
|
coff_link_output_has_begun, coff_final_link_postscript |
|
|
|
}; |
|
|
|
|
|
|
|
/* TI COFF v0, DOS tools (little-endian headers). */ |
|
|
|
const bfd_target tic54x_coff0_vec = |
|
|
|
{ |
|
|
|
|