X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Felf32-mep.c;h=c5775de6496dfbf63d76d1f48134a4e6bff6f395;hb=a6dbf402de65fe66f4ec99b56527dfd00d077cb6;hp=d9d457b3f3310d2f00cbcec72169450f61fa583b;hpb=219d1afa89d0d53ca93a684cac341f16470f3ca0;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf32-mep.c b/bfd/elf32-mep.c index d9d457b3f3..c5775de649 100644 --- a/bfd/elf32-mep.c +++ b/bfd/elf32-mep.c @@ -1,5 +1,5 @@ /* MeP-specific support for 32-bit ELF. - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2020 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -30,7 +30,7 @@ /* Private relocation functions. */ #define MEPREL(type, size, bits, right, left, pcrel, overflow, mask) \ - {(unsigned)type, right, size, bits, pcrel, left, overflow, bfd_elf_generic_reloc, #type, FALSE, 0, mask, 0 } + HOWTO (type, right, size, bits, pcrel, left, overflow, bfd_elf_generic_reloc, #type, FALSE, 0, mask, 0) #define N complain_overflow_dont #define S complain_overflow_signed @@ -375,11 +375,10 @@ mep_final_link_relocate /* Set the howto pointer for a MEP ELF reloc. */ -static void -mep_info_to_howto_rela - (bfd * abfd ATTRIBUTE_UNUSED, - arelent * cache_ptr, - Elf_Internal_Rela * dst) +static bfd_boolean +mep_info_to_howto_rela (bfd * abfd, + arelent * cache_ptr, + Elf_Internal_Rela * dst) { unsigned int r_type; @@ -387,10 +386,13 @@ mep_info_to_howto_rela if (r_type >= R_MEP_max) { /* xgettext:c-format */ - _bfd_error_handler (_("%B: invalid MEP reloc number: %d"), abfd, r_type); - r_type = 0; + _bfd_error_handler (_("%pB: unsupported relocation type %#x"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + return FALSE; } cache_ptr->howto = & mep_elf_howto_table [r_type]; + return TRUE; } /* Relocate a MEP ELF section. @@ -475,7 +477,7 @@ mep_elf_relocate_section name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); - name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; + name = name == NULL ? bfd_section_name (sec) : name; } else { @@ -585,7 +587,7 @@ mep_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) old_flags = elf_elfheader (obfd)->e_flags; #ifdef DEBUG - _bfd_error_handler ("%B: old_flags = 0x%.8x, new_flags = 0x%.8x, init = %s", + _bfd_error_handler ("%pB: old_flags = 0x%.8x, new_flags = 0x%.8x, init = %s", ibfd, old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no"); #endif @@ -617,7 +619,7 @@ mep_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) else { /* xgettext:c-format */ - _bfd_error_handler (_("%B and %B are for different cores"), + _bfd_error_handler (_("%pB and %pB are for different cores"), last_ibfd, ibfd); bfd_set_error (bfd_error_invalid_target); return FALSE; @@ -636,7 +638,7 @@ mep_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) else { /* xgettext:c-format */ - _bfd_error_handler (_("%B and %B are for different configurations"), + _bfd_error_handler (_("%pB and %pB are for different configurations"), last_ibfd, ibfd); bfd_set_error (bfd_error_invalid_target); return FALSE; @@ -715,10 +717,10 @@ mep_elf_object_p (bfd * abfd) } static bfd_boolean -mep_elf_section_flags (flagword * flags, const Elf_Internal_Shdr * hdr) +mep_elf_section_flags (const Elf_Internal_Shdr *hdr) { if (hdr->sh_flags & SHF_MEP_VLIW) - * flags |= SEC_MEP_VLIW; + hdr->bfd_section->flags |= SEC_MEP_VLIW; return TRUE; }