X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Fcoff-alpha.c;h=4b39bcc999dc0d49d3747bc9df5e80f5360a9fb8;hb=bb1183e25ae74ba21500fb4e39bc1ca9822e3086;hp=8ecba2f0d8f03fd7746adbee7ee718086ccb6b5e;hpb=2318686590bd252a47f494554dfc11bc18a3e58b;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c index 8ecba2f0d8..4b39bcc999 100644 --- a/bfd/coff-alpha.c +++ b/bfd/coff-alpha.c @@ -1,5 +1,5 @@ /* BFD back-end for ALPHA Extended-Coff files. - Copyright (C) 1993-2017 Free Software Foundation, Inc. + Copyright (C) 1993-2020 Free Software Foundation, Inc. Modified from coff-mips.c by Steve Chamberlain and Ian Lance Taylor . @@ -423,10 +423,10 @@ alpha_ecoff_object_p (bfd *abfd) { bfd_size_type size; - size = sec->line_filepos * 8; + size = (bfd_size_type) sec->line_filepos * 8; BFD_ASSERT (size == sec->size || size + 8 == sec->size); - if (! bfd_set_section_size (abfd, sec, size)) + if (!bfd_set_section_size (sec, size)) return NULL; } } @@ -447,8 +447,8 @@ alpha_ecoff_bad_format_hook (bfd *abfd ATTRIBUTE_UNUSED, if (ALPHA_ECOFF_COMPRESSEDMAG (*internal_f)) _bfd_error_handler - (_("%B: Cannot handle compressed Alpha binaries.\n" - " Use compiler flags, or objZ, to generate uncompressed binaries."), + (_("%pB: cannot handle compressed Alpha binaries; " + "use compiler flags, or objZ, to generate uncompressed binaries"), abfd); return FALSE; @@ -598,9 +598,8 @@ alpha_adjust_reloc_in (bfd *abfd, if (intern->r_type > ALPHA_R_GPVALUE) { /* xgettext:c-format */ - _bfd_error_handler - (_("%B: unknown/unsupported relocation type %d"), - abfd, intern->r_type); + _bfd_error_handler (_("%pB: unsupported relocation type %#x"), + abfd, intern->r_type); bfd_set_error (bfd_error_bad_value); rptr->addend = 0; rptr->howto = NULL; @@ -614,8 +613,8 @@ alpha_adjust_reloc_in (bfd *abfd, case ALPHA_R_SREL32: case ALPHA_R_SREL64: /* This relocs appear to be fully resolved when they are against - internal symbols. Against external symbols, BRADDR at least - appears to be resolved against the next instruction. */ + internal symbols. Against external symbols, BRADDR at least + appears to be resolved against the next instruction. */ if (! intern->r_extern) rptr->addend = 0; else @@ -1238,7 +1237,7 @@ alpha_convert_external_reloc (bfd *output_bfd ATTRIBUTE_UNUSED, /* Compute a new r_symndx value. */ hsec = h->root.u.def.section; - name = bfd_get_section_name (output_bfd, hsec->output_section); + name = bfd_section_name (hsec->output_section); r_symndx = (unsigned long) -1; switch (name[1]) @@ -1499,24 +1498,21 @@ alpha_relocate_section (bfd *output_bfd, switch (r_type) { case ALPHA_R_GPRELHIGH: - _bfd_error_handler - (_("%B: unsupported relocation: ALPHA_R_GPRELHIGH"), - input_bfd); + _bfd_error_handler (_("%pB: %s unsupported"), + input_bfd, "ALPHA_R_GPRELHIGH"); bfd_set_error (bfd_error_bad_value); continue; case ALPHA_R_GPRELLOW: - _bfd_error_handler - (_("%B: unsupported relocation: ALPHA_R_GPRELLOW"), - input_bfd); + _bfd_error_handler (_("%pB: %s unsupported"), + input_bfd, "ALPHA_R_GPRELLOW"); bfd_set_error (bfd_error_bad_value); continue; default: - _bfd_error_handler - /* xgettext:c-format */ - (_("%B: unknown relocation type %d"), - input_bfd, (int) r_type); + /* xgettext:c-format */ + _bfd_error_handler (_("%pB: unsupported relocation type %#x"), + input_bfd, (int) r_type); bfd_set_error (bfd_error_bad_value); continue; @@ -1932,8 +1928,7 @@ alpha_relocate_section (bfd *output_bfd, if (r_extern) name = sym_hashes[r_symndx]->root.root.string; else - name = bfd_section_name (input_bfd, - symndx_to_section[r_symndx]); + name = bfd_section_name (symndx_to_section[r_symndx]); (*info->callbacks->reloc_overflow) (info, NULL, name, alpha_howto_table[r_type].name, (bfd_vma) 0, input_bfd, input_section, @@ -2027,11 +2022,14 @@ alpha_ecoff_read_ar_hdr (bfd *abfd) bfd_byte ab[8]; /* This is a compressed file. We must set the size correctly. - The size is the eight bytes after the dummy file header. */ + The size is the eight bytes after the dummy file header. */ if (bfd_seek (abfd, (file_ptr) FILHSZ, SEEK_CUR) != 0 || bfd_bread (ab, (bfd_size_type) 8, abfd) != 8 || bfd_seek (abfd, (file_ptr) (- (FILHSZ + 8)), SEEK_CUR) != 0) - return NULL; + { + free (ret); + return NULL; + } ret->parsed_size = H_GET_64 (abfd, ab); } @@ -2187,7 +2185,7 @@ alpha_ecoff_openr_next_archived_file (bfd *archive, bfd *last_file) bfd_size_type size; /* We can't use arelt_size here, because that uses parsed_size, - which is the uncompressed size. We need the compressed size. */ + which is the uncompressed size. We need the compressed size. */ t = (struct areltdata *) last_file->arelt_data; h = (struct ar_hdr *) t->arch_header; size = strtol (h->ar_size, (char **) NULL, 10); @@ -2218,6 +2216,67 @@ alpha_ecoff_get_elt_at_index (bfd *abfd, symindex sym_index) entry = bfd_ardata (abfd)->symdefs + sym_index; return alpha_ecoff_get_elt_at_filepos (abfd, entry->file_offset); } + +static void +alpha_ecoff_swap_coff_aux_in (bfd *abfd ATTRIBUTE_UNUSED, + void *ext1 ATTRIBUTE_UNUSED, + int type ATTRIBUTE_UNUSED, + int in_class ATTRIBUTE_UNUSED, + int indx ATTRIBUTE_UNUSED, + int numaux ATTRIBUTE_UNUSED, + void *in1 ATTRIBUTE_UNUSED) +{ +} + +static void +alpha_ecoff_swap_coff_sym_in (bfd *abfd ATTRIBUTE_UNUSED, + void *ext1 ATTRIBUTE_UNUSED, + void *in1 ATTRIBUTE_UNUSED) +{ +} + +static void +alpha_ecoff_swap_coff_lineno_in (bfd *abfd ATTRIBUTE_UNUSED, + void *ext1 ATTRIBUTE_UNUSED, + void *in1 ATTRIBUTE_UNUSED) +{ +} + +static unsigned int +alpha_ecoff_swap_coff_aux_out (bfd *abfd ATTRIBUTE_UNUSED, + void *inp ATTRIBUTE_UNUSED, + int type ATTRIBUTE_UNUSED, + int in_class ATTRIBUTE_UNUSED, + int indx ATTRIBUTE_UNUSED, + int numaux ATTRIBUTE_UNUSED, + void *extp ATTRIBUTE_UNUSED) +{ + return 0; +} + +static unsigned int +alpha_ecoff_swap_coff_sym_out (bfd *abfd ATTRIBUTE_UNUSED, + void *inp ATTRIBUTE_UNUSED, + void *extp ATTRIBUTE_UNUSED) +{ + return 0; +} + +static unsigned int +alpha_ecoff_swap_coff_lineno_out (bfd *abfd ATTRIBUTE_UNUSED, + void *inp ATTRIBUTE_UNUSED, + void *extp ATTRIBUTE_UNUSED) +{ + return 0; +} + +static unsigned int +alpha_ecoff_swap_coff_reloc_out (bfd *abfd ATTRIBUTE_UNUSED, + void *inp ATTRIBUTE_UNUSED, + void *extp ATTRIBUTE_UNUSED) +{ + return 0; +} /* This is the ECOFF backend structure. The backend field of the target vector points to this. */ @@ -2226,13 +2285,10 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data = { /* COFF backend structure. */ { - (void (*) (bfd *,void *,int,int,int,int,void *)) bfd_void, /* aux_in */ - (void (*) (bfd *,void *,void *)) bfd_void, /* sym_in */ - (void (*) (bfd *,void *,void *)) bfd_void, /* lineno_in */ - (unsigned (*) (bfd *,void *,int,int,int,int,void *)) bfd_void,/*aux_out*/ - (unsigned (*) (bfd *,void *,void *)) bfd_void, /* sym_out */ - (unsigned (*) (bfd *,void *,void *)) bfd_void, /* lineno_out */ - (unsigned (*) (bfd *,void *,void *)) bfd_void, /* reloc_out */ + alpha_ecoff_swap_coff_aux_in, alpha_ecoff_swap_coff_sym_in, + alpha_ecoff_swap_coff_lineno_in, alpha_ecoff_swap_coff_aux_out, + alpha_ecoff_swap_coff_sym_out, alpha_ecoff_swap_coff_lineno_out, + alpha_ecoff_swap_coff_reloc_out, alpha_ecoff_swap_filehdr_out, alpha_ecoff_swap_aouthdr_out, alpha_ecoff_swap_scnhdr_out, FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE, @@ -2336,10 +2392,13 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data = #define _bfd_ecoff_bfd_gc_sections bfd_generic_gc_sections #define _bfd_ecoff_bfd_merge_sections bfd_generic_merge_sections #define _bfd_ecoff_bfd_is_group_section bfd_generic_is_group_section +#define _bfd_ecoff_bfd_group_name bfd_generic_group_name #define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group #define _bfd_ecoff_section_already_linked \ _bfd_coff_section_already_linked #define _bfd_ecoff_bfd_define_common_symbol bfd_generic_define_common_symbol +#define _bfd_ecoff_bfd_link_hide_symbol _bfd_generic_link_hide_symbol +#define _bfd_ecoff_bfd_define_start_stop bfd_generic_define_start_stop #define _bfd_ecoff_bfd_link_check_relocs _bfd_generic_link_check_relocs /* Installing internal relocations in a section is also generic. */ @@ -2352,9 +2411,9 @@ const bfd_target alpha_ecoff_le_vec = BFD_ENDIAN_LITTLE, /* data byte order is little */ BFD_ENDIAN_LITTLE, /* header byte order is little */ - (HAS_RELOC | EXEC_P | /* object flags */ - HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), + (HAS_RELOC | EXEC_P /* object flags */ + | HAS_LINENO | HAS_DEBUG + | HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA), 0, /* leading underscore */ @@ -2368,24 +2427,36 @@ const bfd_target alpha_ecoff_le_vec = bfd_getl32, bfd_getl_signed_32, bfd_putl32, bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */ - {_bfd_dummy_target, alpha_ecoff_object_p, /* bfd_check_format */ - bfd_generic_archive_p, _bfd_dummy_target}, - {bfd_false, _bfd_ecoff_mkobject, /* bfd_set_format */ - _bfd_generic_mkarchive, bfd_false}, - {bfd_false, _bfd_ecoff_write_object_contents, /* bfd_write_contents */ - _bfd_write_archive_contents, bfd_false}, - - BFD_JUMP_TABLE_GENERIC (_bfd_ecoff), - BFD_JUMP_TABLE_COPY (_bfd_ecoff), - BFD_JUMP_TABLE_CORE (_bfd_nocore), - BFD_JUMP_TABLE_ARCHIVE (alpha_ecoff), - BFD_JUMP_TABLE_SYMBOLS (_bfd_ecoff), - BFD_JUMP_TABLE_RELOCS (_bfd_ecoff), - BFD_JUMP_TABLE_WRITE (_bfd_ecoff), - BFD_JUMP_TABLE_LINK (_bfd_ecoff), - BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + { /* bfd_check_format */ + _bfd_dummy_target, + alpha_ecoff_object_p, + bfd_generic_archive_p, + _bfd_dummy_target + }, + { /* bfd_set_format */ + _bfd_bool_bfd_false_error, + _bfd_ecoff_mkobject, + _bfd_generic_mkarchive, + _bfd_bool_bfd_false_error + }, + { /* bfd_write_contents */ + _bfd_bool_bfd_false_error, + _bfd_ecoff_write_object_contents, + _bfd_write_archive_contents, + _bfd_bool_bfd_false_error + }, + + BFD_JUMP_TABLE_GENERIC (_bfd_ecoff), + BFD_JUMP_TABLE_COPY (_bfd_ecoff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (alpha_ecoff), + BFD_JUMP_TABLE_SYMBOLS (_bfd_ecoff), + BFD_JUMP_TABLE_RELOCS (_bfd_ecoff), + BFD_JUMP_TABLE_WRITE (_bfd_ecoff), + BFD_JUMP_TABLE_LINK (_bfd_ecoff), + BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), NULL, - & alpha_ecoff_backend_data + &alpha_ecoff_backend_data };