X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf32-ip2k.c;h=c0c8b8ec9a71b2b381ab5e9adf17ab535459b6f8;hb=5f8989944880cad1bfffab3801214a0a9b67b72e;hp=3733ebb2fba2501e3d8e21a9661e98263da51aa9;hpb=219d1afa89d0d53ca93a684cac341f16470f3ca0;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf32-ip2k.c b/bfd/elf32-ip2k.c index 3733ebb2fb..c0c8b8ec9a 100644 --- a/bfd/elf32-ip2k.c +++ b/bfd/elf32-ip2k.c @@ -1,5 +1,5 @@ /* Ubicom IP2xxx specific support for 32-bit ELF - Copyright (C) 2000-2018 Free Software Foundation, Inc. + Copyright (C) 2000-2020 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -638,8 +638,7 @@ adjust_all_relocations (bfd *abfd, { if (!bfd_malloc_and_get_section (abfd, stab, &stabcontents)) { - if (stabcontents != NULL) - free (stabcontents); + free (stabcontents); return; } @@ -1210,29 +1209,25 @@ ip2k_elf_relax_section (bfd *abfd, } } - if (internal_relocs != NULL - && elf_section_data (sec)->relocs != internal_relocs) + if (elf_section_data (sec)->relocs != internal_relocs) free (internal_relocs); return TRUE; error_return: - if (isymbuf != NULL - && symtab_hdr->contents != (unsigned char *) isymbuf) + if (symtab_hdr->contents != (unsigned char *) isymbuf) free (isymbuf); - if (contents != NULL - && elf_section_data (sec)->this_hdr.contents != contents) + if (elf_section_data (sec)->this_hdr.contents != contents) free (contents); - if (internal_relocs != NULL - && elf_section_data (sec)->relocs != internal_relocs) + if (elf_section_data (sec)->relocs != internal_relocs) free (internal_relocs); return FALSE; } /* Set the howto pointer for a IP2K ELF reloc. */ -static void -ip2k_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, +static bfd_boolean +ip2k_info_to_howto_rela (bfd * abfd, arelent * cache_ptr, Elf_Internal_Rela * dst) { @@ -1242,10 +1237,13 @@ ip2k_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, if (r_type >= (unsigned int) R_IP2K_max) { /* xgettext:c-format */ - _bfd_error_handler (_("%B: invalid IP2K 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 = & ip2k_elf_howto_table [r_type]; + return TRUE; } /* Perform a single relocation. @@ -1295,9 +1293,11 @@ ip2k_final_link_relocate (reloc_howto_type * howto, ip2k_nominal_page_bits (input_bfd, input_section, rel->r_offset, contents)) /* xgettext:c-format */ - _bfd_error_handler (_("ip2k linker: missing page instruction at %#Lx (dest = %#Lx)"), - BASEADDR (input_section) + rel->r_offset, - relocation + rel->r_addend); + _bfd_error_handler + (_("ip2k linker: missing page instruction " + "at %#" PRIx64 " (dest = %#" PRIx64 ")"), + (uint64_t) (BASEADDR (input_section) + rel->r_offset), + (uint64_t) (relocation + rel->r_addend)); } else if (ip2k_relaxed) { @@ -1312,9 +1312,11 @@ ip2k_final_link_relocate (reloc_howto_type * howto, ip2k_nominal_page_bits (input_bfd, input_section, rel->r_offset - 2, contents))) /* xgettext:c-format */ - _bfd_error_handler (_("ip2k linker: redundant page instruction at %#Lx (dest = %#Lx)"), - page_addr, - relocation + rel->r_addend); + _bfd_error_handler + (_("ip2k linker: redundant page instruction " + "at %#" PRIx64 " (dest = %#" PRIx64 ")"), + (uint64_t) page_addr, + (uint64_t) (relocation + rel->r_addend)); } if ((relocation & IP2K_INSN_MASK) == IP2K_INSN_VALUE) relocation &= ~IP2K_INSN_MASK; @@ -1428,7 +1430,7 @@ ip2k_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, 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 {