X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Femultempl%2Fmmix-elfnmmo.em;h=c05e4f1847c434efb3fc3f0c123ba0df750ac6c8;hb=c48acf6f26713427fb6870a8551a89ac12838e7b;hp=8ec604f6e3667da7716a72d773d9c859e417915f;hpb=b34976b65aea8f33690229600bbf4527ec3118e1;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em index 8ec604f6e3..c05e4f1847 100644 --- a/ld/emultempl/mmix-elfnmmo.em +++ b/ld/emultempl/mmix-elfnmmo.em @@ -1,11 +1,11 @@ # This shell script emits a C file. -*- C -*- -# Copyright 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # -# This file is part of GLD, the Gnu Linker. +# This file is part of the GNU Binutils. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, @@ -15,22 +15,29 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. # -# This file is sourced from elf32.em and mmo.em, used to define +# This file is sourced from elf.em and mmo.em, used to define # MMIX-specific things common to ELF and MMO. -cat >>e${EMULATION_NAME}.c <_raw_size - 8; + regvma = 256 * 8 - sec->size - 8; /* If we start on a local register, we have too many global registers. We treat this error as nonfatal (meaning processing will continue in @@ -87,38 +97,29 @@ mmix_after_allocation () as an undefined symbol. */ if (regvma < 32 * 8) { - einfo ("%X%P: Too many global registers: %u, max 223\n", - (unsigned) sec->_raw_size / 8); + einfo (_("%X%P: too many global registers: %u, max 223\n"), + (unsigned) sec->size / 8); regvma = 32 * 8; } /* Set vma to correspond to first such register number * 8. */ - bfd_set_section_vma (output_bfd, sec, (bfd_vma) regvma); - - /* ??? Why isn't the section size (_cooked_size) set? Doesn't it get - set regardless of presence of relocations? */ - if (sec->_cooked_size == 0 - && ! bfd_set_section_size (output_bfd, sec, sec->_raw_size)) - { - /* This is a fatal error; make the einfo call not return. */ - einfo ("%F%P: Can't set section %s size to %u\n", - MMIX_REG_CONTENTS_SECTION_NAME, (unsigned) sec->_raw_size); - } + bfd_set_section_vma (sec, (bfd_vma) regvma); /* Simplify symbol output for the register section (without contents; created for register symbols) by setting the output offset to 0. This section is only present when there are register symbols. */ - sec = bfd_get_section_by_name (output_bfd, MMIX_REG_SECTION_NAME); + sec = bfd_get_section_by_name (link_info.output_bfd, MMIX_REG_SECTION_NAME); if (sec != NULL) - bfd_set_section_vma (abfd, sec, 0); + bfd_set_section_vma (sec, 0); - if (!_bfd_mmix_finalize_linker_allocated_gregs (output_bfd, &link_info)) + if (!_bfd_mmix_after_linker_allocation (link_info.output_bfd, &link_info)) { /* This is a fatal error; make einfo call not return. */ - einfo ("%F%P: Can't finalize linker-allocated global registers\n"); + einfo (_("%F%P: can't finalize linker-allocated global registers\n")); } } EOF +LDEMUL_BEFORE_PARSE=mmix_before_parse LDEMUL_AFTER_ALLOCATION=mmix_after_allocation LDEMUL_BEFORE_ALLOCATION=mmix_before_allocation