X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Felf64-mmix.c;h=69d57a2ce96120ddbb4c5be9f197aa5ba7b1f56d;hb=bc754168c7c3fc64e40bb7ddd97ea1ad07fb32d2;hp=126133bca18c2f6aec9b938e107cfd99abe04401;hpb=2dcf00ce6c001c42c89e6f6baace708b706994f2;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf64-mmix.c b/bfd/elf64-mmix.c index 126133bca1..69d57a2ce9 100644 --- a/bfd/elf64-mmix.c +++ b/bfd/elf64-mmix.c @@ -1,5 +1,5 @@ /* MMIX-specific support for 64-bit ELF. - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2019 Free Software Foundation, Inc. Contributed by Hans-Peter Nilsson This file is part of BFD, the Binary File Descriptor library. @@ -982,10 +982,10 @@ mmix_elf_perform_relocation (asection *isec, reloc_howto_type *howto, a verbose message. */ *error_message = _("invalid input relocation when producing" - " non-ELF, non-mmo format output." - "\n Please use the objcopy program to convert from" + " non-ELF, non-mmo format output;" + " please use the objcopy program to convert from" " ELF or mmo," - "\n or assemble using" + " or assemble using" " \"-no-expand\" (for gcc, \"-Wa,-no-expand\""); mmix_elf_section_data (isec)->has_warned_pushj = TRUE; return bfd_reloc_dangerous; @@ -1166,10 +1166,10 @@ mmix_elf_perform_relocation (asection *isec, reloc_howto_type *howto, a verbose message. */ *error_message = _("invalid input relocation when producing" - " non-ELF, non-mmo format output." - "\n Please use the objcopy program to convert from" + " non-ELF, non-mmo format output;" + " please use the objcopy program to convert from" " ELF or mmo," - "\n or compile using the gcc-option" + " or compile using the gcc-option" " \"-mno-base-addresses\"."); mmix_elf_section_data (isec)->has_warned_bpo = TRUE; return bfd_reloc_dangerous; @@ -1250,8 +1250,8 @@ mmix_elf_perform_relocation (asection *isec, reloc_howto_type *howto, /* Set the howto pointer for an MMIX ELF reloc (type RELA). */ -static void -mmix_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, +static bfd_boolean +mmix_info_to_howto_rela (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst) { @@ -1261,10 +1261,13 @@ mmix_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, if (r_type >= (unsigned int) R_MMIX_max) { /* xgettext:c-format */ - _bfd_error_handler (_("%pB: invalid MMIX 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 = &elf_mmix_howto_table[r_type]; + return TRUE; } /* Any MMIX-specific relocation gets here at assembly time or when linking @@ -1312,7 +1315,7 @@ mmix_elf_reloc (bfd *abfd, else relocation = symbol->value; - reloc_target_output_section = bfd_get_output_section (symbol); + reloc_target_output_section = bfd_asymbol_section (symbol)->output_section; /* Here the variable relocation holds the final address of the symbol we are relocating against, plus any addend. */ @@ -1411,7 +1414,7 @@ mmix_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, symtab_hdr->sh_link, sym->st_name); if (name == NULL) - name = bfd_section_name (input_bfd, sec); + name = bfd_section_name (sec); } else { @@ -1603,9 +1606,9 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section, return bfd_reloc_undefined; /* Check that we're not relocating against a register symbol. */ - if (strcmp (bfd_get_section_name (symsec->owner, symsec), + if (strcmp (bfd_section_name (symsec), MMIX_REG_CONTENTS_SECTION_NAME) == 0 - || strcmp (bfd_get_section_name (symsec->owner, symsec), + || strcmp (bfd_section_name (symsec), MMIX_REG_SECTION_NAME) == 0) { /* Note: This is separated out into two messages in order @@ -1638,7 +1641,7 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section, if (symsec == NULL) return bfd_reloc_undefined; - if (strcmp (bfd_get_section_name (symsec->owner, symsec), + if (strcmp (bfd_section_name (symsec), MMIX_REG_CONTENTS_SECTION_NAME) == 0) { if ((srel & 7) != 0 || srel < 32*8 || srel > 255*8) @@ -1649,7 +1652,7 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section, } srel /= 8; } - else if (strcmp (bfd_get_section_name (symsec->owner, symsec), + else if (strcmp (bfd_section_name (symsec), MMIX_REG_SECTION_NAME) == 0) { if (srel < 0 || srel > 255) @@ -1701,9 +1704,9 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section, accidentally handling it. */ if (!bfd_is_abs_section (symsec) && !bfd_is_und_section (symsec) - && strcmp (bfd_get_section_name (symsec->owner, symsec), + && strcmp (bfd_section_name (symsec), MMIX_REG_CONTENTS_SECTION_NAME) != 0 - && strcmp (bfd_get_section_name (symsec->owner, symsec), + && strcmp (bfd_section_name (symsec), MMIX_REG_SECTION_NAME) != 0) { _bfd_error_handler @@ -1719,10 +1722,8 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section, first_global = 255; else { - first_global - = bfd_get_section_vma (input_section->output_section->owner, - regsec) / 8; - if (strcmp (bfd_get_section_name (symsec->owner, symsec), + first_global = bfd_section_vma (regsec) / 8; + if (strcmp (bfd_section_name (symsec), MMIX_REG_CONTENTS_SECTION_NAME) == 0) { if ((srel & 7) != 0 || srel < 32*8 || srel > 255*8) @@ -1739,8 +1740,8 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section, _bfd_error_handler /* xgettext:c-format */ (_("%pB: LOCAL directive: " - "Register $%" PRId64 " is not a local register." - " First global register is $%" PRId64 "."), + "register $%" PRId64 " is not a local register;" + " first global register is $%" PRId64), input_section->owner, (int64_t) srel, (int64_t) first_global); return bfd_reloc_overflow; @@ -1873,9 +1874,7 @@ mmix_elf_check_common_relocs (bfd *abfd, those flags, as that is what currently happens for usual GREG allocations, and that works. */ if (allocated_gregs_section == NULL - || !bfd_set_section_alignment (bpo_greg_owner, - allocated_gregs_section, - 3)) + || !bfd_set_section_alignment (allocated_gregs_section, 3)) return FALSE; gregdata = (struct bpo_greg_section_info *) @@ -2001,9 +2000,7 @@ mmix_elf_check_relocs (bfd *abfd, /* This relocation describes which C++ vtable entries are actually used. Record for later use during GC. */ case R_MMIX_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)) return FALSE; break; } @@ -2122,7 +2119,7 @@ mmix_elf_section_from_bfd_section (bfd * abfd ATTRIBUTE_UNUSED, asection * sec, int * retval) { - if (strcmp (bfd_get_section_name (abfd, sec), MMIX_REG_SECTION_NAME) == 0) + if (strcmp (bfd_section_name (sec), MMIX_REG_SECTION_NAME) == 0) *retval = SHN_REGISTER; else return FALSE; @@ -2167,8 +2164,8 @@ mmix_elf_add_symbol_hook (bfd *abfd, h->u.def.section->owner is NULL. */ _bfd_error_handler /* xgettext:c-format */ - (_("%pB: Error: multiple definition of `%s'; start of %s " - "is set in a earlier linked file\n"), + (_("%pB: error: multiple definition of `%s'; start of %s " + "is set in a earlier linked file"), abfd, *namep, *namep + strlen (MMIX_LOC_SECTION_START_SYMBOL_PREFIX)); bfd_set_error (bfd_error_bad_value); @@ -2221,8 +2218,8 @@ mmix_elf_final_link (bfd *abfd, struct bfd_link_info *info) if (reg_section != NULL) { /* FIXME: Pass error state gracefully. */ - if (bfd_get_section_flags (abfd, reg_section) & SEC_HAS_CONTENTS) - _bfd_abort (__FILE__, __LINE__, _("Register section has contents\n")); + if (bfd_section_flags (reg_section) & SEC_HAS_CONTENTS) + _bfd_abort (__FILE__, __LINE__, _("register section has contents\n")); /* Really remove the section, if it hasn't already been done. */ if (!bfd_section_removed_from_list (abfd, reg_section)) @@ -2329,7 +2326,7 @@ _bfd_mmix_before_linker_allocation (bfd *abfd ATTRIBUTE_UNUSED, /* Set the zeroth-order estimate for the GREGs size. */ gregs_size = n_gregs * 8; - if (!bfd_set_section_size (bpo_greg_owner, bpo_gregs_section, gregs_size)) + if (!bfd_set_section_size (bpo_gregs_section, gregs_size)) return FALSE; /* Allocate and set up the GREG arrays. They're filled in at relaxation @@ -2412,8 +2409,8 @@ _bfd_mmix_after_linker_allocation (bfd *abfd ATTRIBUTE_UNUSED, { _bfd_error_handler /* xgettext:c-format */ - (_("Internal inconsistency: remaining %lu != max %lu.\n\ - Please report this bug."), + (_("internal inconsistency: remaining %lu != max %lu;" + " please report this bug"), (unsigned long) gregdata->n_remaining_bpo_relocs_this_relaxation_round, (unsigned long) gregdata->n_bpo_relocs); return FALSE;