X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Fcoff-tic54x.c;h=994203fcde56f06d699822903997f2055bcbce0d;hb=aa1f7fb133a5a4f95af8286f58b689d6ae131488;hp=f059694bda7a29ea93f173cfa4748e7ecbcb37be;hpb=695344c018c8e462280c47a644df02ea472b0a4e;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/coff-tic54x.c b/bfd/coff-tic54x.c index f059694bda..994203fcde 100644 --- a/bfd/coff-tic54x.c +++ b/bfd/coff-tic54x.c @@ -1,5 +1,5 @@ /* BFD back-end for TMS320C54X coff binaries. - Copyright (C) 1999-2016 Free Software Foundation, Inc. + Copyright (C) 1999-2020 Free Software Foundation, Inc. Contributed by Timothy Wall (twall@cygnus.com) This file is part of BFD, the Binary File Descriptor library. @@ -82,14 +82,14 @@ tic54x_getl_signed_32 (const void *p) #define coff_get_section_load_page bfd_ticoff_get_section_load_page #define coff_set_section_load_page bfd_ticoff_set_section_load_page -void +static void bfd_ticoff_set_section_load_page (asection *sect, int page) { sect->lma = (sect->lma & ADDR_MASK) | PG_TO_FLAG(page); } -int +static int bfd_ticoff_get_section_load_page (asection *sect) { int page; @@ -138,8 +138,8 @@ tic54x_relocation (bfd *abfd ATTRIBUTE_UNUSED, if (output_bfd != (bfd *) NULL) { /* This is a partial relocation, and we want to apply the - relocation to the reloc entry rather than the raw data. - Modify the reloc inplace to reflect what we now know. */ + relocation to the reloc entry rather than the raw data. + Modify the reloc inplace to reflect what we now know. */ reloc_entry->address += input_section->output_offset; return bfd_reloc_ok; } @@ -260,7 +260,8 @@ tic54x_coff_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, Called after some initial checking by the tic54x_rtype_to_howto fn below. */ static void -tic54x_lookup_howto (arelent *internal, +tic54x_lookup_howto (bfd *abfd, + arelent *internal, struct internal_reloc *dst) { unsigned i; @@ -275,8 +276,8 @@ tic54x_lookup_howto (arelent *internal, } } - _bfd_error_handler (_("Unrecognized reloc type 0x%x"), - (unsigned int) dst->r_type); + _bfd_error_handler (_("%pB: unsupported relocation type %#x"), + abfd, (unsigned int) dst->r_type); abort (); } @@ -286,7 +287,7 @@ tic54x_lookup_howto (arelent *internal, #define coff_rtype_to_howto coff_tic54x_rtype_to_howto static reloc_howto_type * -coff_tic54x_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED, +coff_tic54x_rtype_to_howto (bfd *abfd, asection *sec, struct internal_reloc *rel, struct coff_link_hash_entry *h ATTRIBUTE_UNUSED, @@ -303,7 +304,7 @@ coff_tic54x_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED, *addendp = (sec->output_section->vma + sec->output_offset) - sec->vma; } - tic54x_lookup_howto (&genrel, rel); + tic54x_lookup_howto (abfd, &genrel, rel); return genrel.howto; } @@ -342,7 +343,7 @@ tic54x_set_section_contents (bfd *abfd, bfd_size_type bytes_to_do) { return coff_set_section_contents (abfd, section, location, - offset, bytes_to_do); + offset, bytes_to_do); } static void @@ -359,20 +360,20 @@ tic54x_reloc_processing (arelent *relent, if (reloc->r_symndx != -1) { if (reloc->r_symndx < 0 || reloc->r_symndx >= obj_conv_table_size (abfd)) - { - _bfd_error_handler + { + _bfd_error_handler /* xgettext: c-format */ - (_("%B: warning: illegal symbol index %ld in relocs"), - abfd, reloc->r_symndx); - relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; - ptr = NULL; - } + (_("%pB: warning: illegal symbol index %ld in relocs"), + abfd, reloc->r_symndx); + relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; + ptr = NULL; + } else - { - relent->sym_ptr_ptr = (symbols - + obj_convert (abfd)[reloc->r_symndx]); - ptr = *(relent->sym_ptr_ptr); - } + { + relent->sym_ptr_ptr = (symbols + + obj_convert (abfd)[reloc->r_symndx]); + ptr = *(relent->sym_ptr_ptr); + } } else { @@ -394,24 +395,24 @@ tic54x_reloc_processing (arelent *relent, /* !! relent->section = (asection *) NULL;*/ /* Fill in the relent->howto field from reloc->r_type. */ - tic54x_lookup_howto (relent, reloc); + tic54x_lookup_howto (abfd, relent, reloc); } /* TI COFF v0, DOS tools (little-endian headers). */ const bfd_target tic54x_coff0_vec = { - "coff0-c54x", /* name */ + "coff0-c54x", /* name */ bfd_target_coff_flavour, BFD_ENDIAN_LITTLE, /* data byte order is little */ BFD_ENDIAN_LITTLE, /* header byte order is little (DOS tools) */ - (HAS_RELOC | EXEC_P | /* object flags */ - HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | WP_TEXT ), + (HAS_RELOC | EXEC_P /* object flags */ + | HAS_LINENO | HAS_DEBUG + | HAS_SYMS | HAS_LOCALS | WP_TEXT ), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ - '_', /* leading symbol underscore */ - '/', /* ar_pad_char */ + '_', /* leading symbol underscore */ + '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 0, /* match priority. */ bfd_getl64, bfd_getl_signed_64, bfd_putl64, @@ -421,12 +422,24 @@ const bfd_target tic54x_coff0_vec = bfd_getl32, bfd_getl_signed_32, bfd_putl32, bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */ - {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ - bfd_generic_archive_p, _bfd_dummy_target}, - {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ - bfd_false}, - {bfd_false, coff_write_object_contents, /* bfd_write_contents */ - _bfd_write_archive_contents, bfd_false}, + { /* bfd_check_format */ + _bfd_dummy_target, + coff_object_p, + bfd_generic_archive_p, + _bfd_dummy_target + }, + { /* bfd_set_format */ + _bfd_bool_bfd_false_error, + coff_mkobject, + _bfd_generic_mkarchive, + _bfd_bool_bfd_false_error + }, + { /* bfd_write_contents */ + _bfd_bool_bfd_false_error, + coff_write_object_contents, + _bfd_write_archive_contents, + _bfd_bool_bfd_false_error + }, BFD_JUMP_TABLE_GENERIC (coff), BFD_JUMP_TABLE_COPY (coff), @@ -439,24 +452,24 @@ const bfd_target tic54x_coff0_vec = BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), NULL, - & ticoff0_swap_table + &ticoff0_swap_table }; /* TI COFF v0, SPARC tools (big-endian headers). */ const bfd_target tic54x_coff0_beh_vec = { - "coff0-beh-c54x", /* name */ + "coff0-beh-c54x", /* name */ bfd_target_coff_flavour, BFD_ENDIAN_LITTLE, /* data byte order is little */ BFD_ENDIAN_BIG, /* header byte order is big */ - (HAS_RELOC | EXEC_P | /* object flags */ - HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | WP_TEXT ), + (HAS_RELOC | EXEC_P /* object flags */ + | HAS_LINENO | HAS_DEBUG + | HAS_SYMS | HAS_LOCALS | WP_TEXT ), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ - '_', /* leading symbol underscore */ - '/', /* ar_pad_char */ + '_', /* leading symbol underscore */ + '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 0, /* match priority. */ bfd_getl64, bfd_getl_signed_64, bfd_putl64, @@ -466,12 +479,24 @@ const bfd_target tic54x_coff0_beh_vec = bfd_getb32, bfd_getb_signed_32, bfd_putb32, bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ - {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ - bfd_generic_archive_p, _bfd_dummy_target}, - {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ - bfd_false}, - {bfd_false, coff_write_object_contents, /* bfd_write_contents */ - _bfd_write_archive_contents, bfd_false}, + { /* bfd_check_format */ + _bfd_dummy_target, + coff_object_p, + bfd_generic_archive_p, + _bfd_dummy_target + }, + { /* bfd_set_format */ + _bfd_bool_bfd_false_error, + coff_mkobject, + _bfd_generic_mkarchive, + _bfd_bool_bfd_false_error + }, + { /* bfd_write_contents */ + _bfd_bool_bfd_false_error, + coff_write_object_contents, + _bfd_write_archive_contents, + _bfd_bool_bfd_false_error + }, BFD_JUMP_TABLE_GENERIC (coff), BFD_JUMP_TABLE_COPY (coff), @@ -483,26 +508,26 @@ const bfd_target tic54x_coff0_beh_vec = BFD_JUMP_TABLE_LINK (coff), BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), - & tic54x_coff0_vec, + &tic54x_coff0_vec, - & ticoff0_swap_table + &ticoff0_swap_table }; /* TI COFF v1, DOS tools (little-endian headers). */ const bfd_target tic54x_coff1_vec = { - "coff1-c54x", /* name */ + "coff1-c54x", /* name */ bfd_target_coff_flavour, BFD_ENDIAN_LITTLE, /* data byte order is little */ BFD_ENDIAN_LITTLE, /* header byte order is little (DOS tools) */ - (HAS_RELOC | EXEC_P | /* object flags */ - HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | WP_TEXT ), + (HAS_RELOC | EXEC_P /* object flags */ + | HAS_LINENO | HAS_DEBUG + | HAS_SYMS | HAS_LOCALS | WP_TEXT ), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ - '_', /* leading symbol underscore */ - '/', /* ar_pad_char */ + '_', /* leading symbol underscore */ + '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 0, /* match priority. */ bfd_getl64, bfd_getl_signed_64, bfd_putl64, @@ -512,12 +537,24 @@ const bfd_target tic54x_coff1_vec = bfd_getl32, bfd_getl_signed_32, bfd_putl32, bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */ - {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ - bfd_generic_archive_p, _bfd_dummy_target}, - {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ - bfd_false}, - {bfd_false, coff_write_object_contents, /* bfd_write_contents */ - _bfd_write_archive_contents, bfd_false}, + { /* bfd_check_format */ + _bfd_dummy_target, + coff_object_p, + bfd_generic_archive_p, + _bfd_dummy_target + }, + { /* bfd_set_format */ + _bfd_bool_bfd_false_error, + coff_mkobject, + _bfd_generic_mkarchive, + _bfd_bool_bfd_false_error + }, + { /* bfd_write_contents */ + _bfd_bool_bfd_false_error, + coff_write_object_contents, + _bfd_write_archive_contents, + _bfd_bool_bfd_false_error + }, BFD_JUMP_TABLE_GENERIC (coff), BFD_JUMP_TABLE_COPY (coff), @@ -529,26 +566,26 @@ const bfd_target tic54x_coff1_vec = BFD_JUMP_TABLE_LINK (coff), BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), - & tic54x_coff0_beh_vec, + &tic54x_coff0_beh_vec, - & ticoff1_swap_table + &ticoff1_swap_table }; /* TI COFF v1, SPARC tools (big-endian headers). */ const bfd_target tic54x_coff1_beh_vec = { - "coff1-beh-c54x", /* name */ + "coff1-beh-c54x", /* name */ bfd_target_coff_flavour, BFD_ENDIAN_LITTLE, /* data byte order is little */ BFD_ENDIAN_BIG, /* header byte order is big */ - (HAS_RELOC | EXEC_P | /* object flags */ - HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | WP_TEXT ), + (HAS_RELOC | EXEC_P /* object flags */ + | HAS_LINENO | HAS_DEBUG + | HAS_SYMS | HAS_LOCALS | WP_TEXT ), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ - '_', /* leading symbol underscore */ - '/', /* ar_pad_char */ + '_', /* leading symbol underscore */ + '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 0, /* match priority. */ bfd_getl64, bfd_getl_signed_64, bfd_putl64, @@ -558,12 +595,24 @@ const bfd_target tic54x_coff1_beh_vec = bfd_getb32, bfd_getb_signed_32, bfd_putb32, bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ - {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ - bfd_generic_archive_p, _bfd_dummy_target}, - {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ - bfd_false}, - {bfd_false, coff_write_object_contents, /* bfd_write_contents */ - _bfd_write_archive_contents, bfd_false}, + { /* bfd_check_format */ + _bfd_dummy_target, + coff_object_p, + bfd_generic_archive_p, + _bfd_dummy_target + }, + { /* bfd_set_format */ + _bfd_bool_bfd_false_error, + coff_mkobject, + _bfd_generic_mkarchive, + _bfd_bool_bfd_false_error + }, + { /* bfd_write_contents */ + _bfd_bool_bfd_false_error, + coff_write_object_contents, + _bfd_write_archive_contents, + _bfd_bool_bfd_false_error + }, BFD_JUMP_TABLE_GENERIC (coff), BFD_JUMP_TABLE_COPY (coff), @@ -575,26 +624,26 @@ const bfd_target tic54x_coff1_beh_vec = BFD_JUMP_TABLE_LINK (coff), BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), - & tic54x_coff1_vec, + &tic54x_coff1_vec, - & ticoff1_swap_table + &ticoff1_swap_table }; /* TI COFF v2, TI DOS tools output (little-endian headers). */ const bfd_target tic54x_coff2_vec = { - "coff2-c54x", /* name */ + "coff2-c54x", /* name */ bfd_target_coff_flavour, BFD_ENDIAN_LITTLE, /* data byte order is little */ BFD_ENDIAN_LITTLE, /* header byte order is little (DOS tools) */ - (HAS_RELOC | EXEC_P | /* object flags */ - HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | WP_TEXT ), + (HAS_RELOC | EXEC_P /* object flags */ + | HAS_LINENO | HAS_DEBUG + | HAS_SYMS | HAS_LOCALS | WP_TEXT ), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ - '_', /* leading symbol underscore */ - '/', /* ar_pad_char */ + '_', /* leading symbol underscore */ + '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 0, /* match priority. */ bfd_getl64, bfd_getl_signed_64, bfd_putl64, @@ -604,12 +653,24 @@ const bfd_target tic54x_coff2_vec = bfd_getl32, bfd_getl_signed_32, bfd_putl32, bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */ - {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ - bfd_generic_archive_p, _bfd_dummy_target}, - {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ - bfd_false}, - {bfd_false, coff_write_object_contents, /* bfd_write_contents */ - _bfd_write_archive_contents, bfd_false}, + { /* bfd_check_format */ + _bfd_dummy_target, + coff_object_p, + bfd_generic_archive_p, + _bfd_dummy_target + }, + { /* bfd_set_format */ + _bfd_bool_bfd_false_error, + coff_mkobject, + _bfd_generic_mkarchive, + _bfd_bool_bfd_false_error + }, + { /* bfd_write_contents */ + _bfd_bool_bfd_false_error, + coff_write_object_contents, + _bfd_write_archive_contents, + _bfd_bool_bfd_false_error + }, BFD_JUMP_TABLE_GENERIC (coff), BFD_JUMP_TABLE_COPY (coff), @@ -621,7 +682,7 @@ const bfd_target tic54x_coff2_vec = BFD_JUMP_TABLE_LINK (coff), BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), - & tic54x_coff1_beh_vec, + &tic54x_coff1_beh_vec, COFF_SWAP_TABLE }; @@ -629,18 +690,18 @@ const bfd_target tic54x_coff2_vec = /* TI COFF v2, TI SPARC tools output (big-endian headers). */ const bfd_target tic54x_coff2_beh_vec = { - "coff2-beh-c54x", /* name */ + "coff2-beh-c54x", /* name */ bfd_target_coff_flavour, BFD_ENDIAN_LITTLE, /* data byte order is little */ BFD_ENDIAN_BIG, /* header byte order is big */ - (HAS_RELOC | EXEC_P | /* object flags */ - HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | WP_TEXT ), + (HAS_RELOC | EXEC_P /* object flags */ + | HAS_LINENO | HAS_DEBUG + | HAS_SYMS | HAS_LOCALS | WP_TEXT ), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ - '_', /* leading symbol underscore */ - '/', /* ar_pad_char */ + '_', /* leading symbol underscore */ + '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 0, /* match priority. */ bfd_getl64, bfd_getl_signed_64, bfd_putl64, @@ -650,12 +711,24 @@ const bfd_target tic54x_coff2_beh_vec = bfd_getb32, bfd_getb_signed_32, bfd_putb32, bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ - {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ - bfd_generic_archive_p, _bfd_dummy_target}, - {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ - bfd_false}, - {bfd_false, coff_write_object_contents, /* bfd_write_contents */ - _bfd_write_archive_contents, bfd_false}, + { /* bfd_check_format */ + _bfd_dummy_target, + coff_object_p, + bfd_generic_archive_p, + _bfd_dummy_target + }, + { /* bfd_set_format */ + _bfd_bool_bfd_false_error, + coff_mkobject, + _bfd_generic_mkarchive, + _bfd_bool_bfd_false_error + }, + { /* bfd_write_contents */ + _bfd_bool_bfd_false_error, + coff_write_object_contents, + _bfd_write_archive_contents, + _bfd_bool_bfd_false_error + }, BFD_JUMP_TABLE_GENERIC (coff), BFD_JUMP_TABLE_COPY (coff), @@ -667,7 +740,7 @@ const bfd_target tic54x_coff2_beh_vec = BFD_JUMP_TABLE_LINK (coff), BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), - & tic54x_coff2_vec, + &tic54x_coff2_vec, COFF_SWAP_TABLE };