X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Felf-m10300.c;h=696514ab054c64824f6a81392748046b85608d33;hb=c95949892f6f1e2974a0fb8a5463d7b6432ac469;hp=795944eb33d35948b865868b4f9f13bd780ca632;hpb=2dcf00ce6c001c42c89e6f6baace708b706994f2;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c index 795944eb33..696514ab05 100644 --- a/bfd/elf-m10300.c +++ b/bfd/elf-m10300.c @@ -1,5 +1,5 @@ /* Matsushita 10300 specific support for 32-bit ELF - Copyright (C) 1996-2018 Free Software Foundation, Inc. + Copyright (C) 1996-2020 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -725,7 +725,7 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd, s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags); htab->splt = s; if (s == NULL - || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment)) + || !bfd_set_section_alignment (s, bed->plt_alignment)) return FALSE; /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the @@ -742,7 +742,7 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd, s = bfd_make_section_anyway_with_flags (abfd, ".got", flags); htab->sgot = s; if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) + || !bfd_set_section_alignment (s, ptralign)) return FALSE; if (bed->want_got_plt) @@ -750,7 +750,7 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd, s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags); htab->sgotplt = s; if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) + || !bfd_set_section_alignment (s, ptralign)) return FALSE; } @@ -798,8 +798,8 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, /* Set the howto pointer for an MN10300 ELF reloc. */ -static void -mn10300_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, +static bfd_boolean +mn10300_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst) { @@ -809,12 +809,13 @@ mn10300_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, if (r_type >= R_MN10300_MAX) { /* xgettext:c-format */ - _bfd_error_handler (_("%pB: unrecognised MN10300 reloc number: %d"), + _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r_type); bfd_set_error (bfd_error_bad_value); - r_type = R_MN10300_NONE; + return FALSE; } cache_ptr->howto = elf_mn10300_howto_table + r_type; + return TRUE; } static int @@ -1025,7 +1026,7 @@ mn10300_do_tls_transition (bfd * input_bfd, default: _bfd_error_handler /* xgettext:c-format */ - (_("%pB: Unsupported transition from %s to %s"), + (_("%pB: unsupported transition from %s to %s"), input_bfd, elf_mn10300_howto_table[r_type].name, elf_mn10300_howto_table[tls_r_type].name); @@ -1135,9 +1136,7 @@ mn10300_elf_check_relocs (bfd *abfd, /* This relocation describes which C++ vtable entries are actually used. Record for later use during GC. */ case R_MN10300_GNU_VTENTRY: - BFD_ASSERT (h != NULL); - if (h != NULL - && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend)) + if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend)) goto fail; break; @@ -1373,7 +1372,7 @@ mn10300_elf_check_relocs (bfd *abfd, result = TRUE; fail: - if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf) + if (symtab_hdr->contents != (unsigned char *) isymbuf) free (isymbuf); return result; @@ -2126,7 +2125,7 @@ mn10300_elf_relocate_section (bfd *output_bfd, name = (bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name)); if (name == NULL || *name == '\0') - name = bfd_section_name (input_bfd, sec); + name = bfd_section_name (sec); } switch (r) @@ -2744,7 +2743,7 @@ mn10300_elf_relax_section (bfd *abfd, /* A local symbol. */ Elf_Internal_Sym *isym; struct elf_link_hash_table *elftab; - bfd_size_type amt; + size_t amt; isym = isymbuf + r_index; if (isym->st_shndx == SHN_UNDEF) @@ -2845,7 +2844,7 @@ mn10300_elf_relax_section (bfd *abfd, && ELF_ST_TYPE (isym->st_info) == STT_FUNC) { struct elf_link_hash_table *elftab; - bfd_size_type amt; + size_t amt; struct elf_link_hash_entry **lhashes = hashes; /* Skip a local symbol if it aliases a @@ -2913,8 +2912,7 @@ mn10300_elf_relax_section (bfd *abfd, } /* Cache or free any memory we allocated for the relocs. */ - if (internal_relocs != NULL - && elf_section_data (section)->relocs != internal_relocs) + if (elf_section_data (section)->relocs != internal_relocs) free (internal_relocs); internal_relocs = NULL; @@ -3070,7 +3068,7 @@ mn10300_elf_relax_section (bfd *abfd, const char *sym_name; char *new_name; struct elf_link_hash_table *elftab; - bfd_size_type amt; + size_t amt; if (isym->st_shndx != sec_shndx) continue; @@ -3223,8 +3221,7 @@ mn10300_elf_relax_section (bfd *abfd, } /* Cache or free any memory we allocated for the relocs. */ - if (internal_relocs != NULL - && elf_section_data (section)->relocs != internal_relocs) + if (elf_section_data (section)->relocs != internal_relocs) free (internal_relocs); internal_relocs = NULL; @@ -4392,21 +4389,17 @@ mn10300_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 (section)->this_hdr.contents != contents) + if (elf_section_data (section)->this_hdr.contents != contents) free (contents); - if (internal_relocs != NULL - && elf_section_data (section)->relocs != internal_relocs) + if (elf_section_data (section)->relocs != internal_relocs) free (internal_relocs); return FALSE; @@ -4495,9 +4488,8 @@ mn10300_elf_get_relocated_section_contents (bfd *output_bfd, isymbuf, sections)) goto error_return; - if (sections != NULL) - free (sections); - if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf) + free (sections); + if (symtab_hdr->contents != (unsigned char *) isymbuf) free (isymbuf); if (internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); @@ -4506,12 +4498,10 @@ mn10300_elf_get_relocated_section_contents (bfd *output_bfd, return data; error_return: - if (sections != NULL) - free (sections); - if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf) + free (sections); + if (symtab_hdr->contents != (unsigned char *) isymbuf) free (isymbuf); - if (internal_relocs != NULL - && internal_relocs != elf_section_data (input_section)->relocs) + if (internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); return NULL; } @@ -4603,7 +4593,7 @@ static struct bfd_link_hash_table * elf32_mn10300_link_hash_table_create (bfd *abfd) { struct elf32_mn10300_link_hash_table *ret; - bfd_size_type amt = sizeof (* ret); + size_t amt = sizeof (* ret); ret = bfd_zmalloc (amt); if (ret == NULL) @@ -4668,9 +4658,8 @@ elf_mn10300_mach (flagword flags) file. This gets the MN10300 architecture right based on the machine number. */ -static void -_bfd_mn10300_elf_final_write_processing (bfd *abfd, - bfd_boolean linker ATTRIBUTE_UNUSED) +static bfd_boolean +_bfd_mn10300_elf_final_write_processing (bfd *abfd) { unsigned long val; @@ -4692,6 +4681,7 @@ _bfd_mn10300_elf_final_write_processing (bfd *abfd, elf_elfheader (abfd)->e_flags &= ~ (EF_MN10300_MACH); elf_elfheader (abfd)->e_flags |= val; + return _bfd_elf_final_write_processing (abfd); } static bfd_boolean @@ -4822,7 +4812,7 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) flags | SEC_READONLY); htab->root.srelplt = s; if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) + || !bfd_set_section_alignment (s, ptralign)) return FALSE; if (! _bfd_mn10300_elf_create_got_section (abfd, info)) @@ -4859,7 +4849,7 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) ? ".rela.bss" : ".rel.bss"), flags | SEC_READONLY); if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) + || !bfd_set_section_alignment (s, ptralign)) return FALSE; } } @@ -5074,7 +5064,7 @@ _bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd, /* It's OK to base decisions on the section name, because none of the dynobj section names depend upon the input files. */ - name = bfd_get_section_name (dynobj, s); + name = bfd_section_name (s); if (streq (name, ".plt")) { @@ -5100,8 +5090,7 @@ _bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd, entry. The entries in the .rela.plt section really apply to the .got section, which we created ourselves and so know is not readonly. */ - outname = bfd_get_section_name (output_bfd, - s->output_section); + outname = bfd_section_name (s->output_section); target = bfd_get_section_by_name (output_bfd, outname + 5); if (target != NULL && (target->flags & SEC_READONLY) != 0 @@ -5544,7 +5533,7 @@ mn10300_elf_mkobject (bfd *abfd) #endif #define elf_info_to_howto mn10300_info_to_howto -#define elf_info_to_howto_rel 0 +#define elf_info_to_howto_rel NULL #define elf_backend_can_gc_sections 1 #define elf_backend_rela_normal 1 #define elf_backend_check_relocs mn10300_elf_check_relocs