X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=ld%2Femultempl%2Fm68kelf.em;h=570891f88374411d78344eff1db16baac598ece3;hb=618265039f697eab9e72bb58b95fc2d32925df58;hp=57a8f1d224716e9cb21de359bf2036fba1787165;hpb=7fb9f789e396b4653bba0ff56d786f5470a870c9;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em index 57a8f1d224..570891f883 100644 --- a/ld/emultempl/m68kelf.em +++ b/ld/emultempl/m68kelf.em @@ -1,5 +1,5 @@ # This shell script emits a C file. -*- C -*- -# Copyright 2000, 2001, 2003, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2000-2019 Free Software Foundation, Inc. # Written by Michael Sokolov , based on armelf.em # # This file is part of the GNU Binutils. @@ -20,9 +20,9 @@ # MA 02110-1301, USA. -# This file is sourced from elf32.em, and defines some extra routines for m68k +# This file is sourced from elf.em, and defines some extra routines for m68k # embedded systems using ELF and for some other systems using m68k ELF. While -# it is sourced from elf32.em for all m68k ELF configurations, here we include +# it is sourced from elf.em for all m68k ELF configurations, here we include # only the features we want depending on the configuration. case ${target} in @@ -45,6 +45,8 @@ esac fragment <link_next) + for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next) { asection *datasec; - /* As first-order business, make sure that each input BFD is either - COFF or ELF. We need to call a special BFD backend function to - generate the embedded relocs, and we have such functions only for - COFF and ELF. */ - if (bfd_get_flavour (abfd) != bfd_target_coff_flavour - && bfd_get_flavour (abfd) != bfd_target_elf_flavour) - einfo ("%F%B: all input objects must be COFF or ELF for --embedded-relocs\n"); + if (bfd_get_flavour (abfd) != bfd_target_elf_flavour) + einfo (_("%F%P: %pB: all input objects must be ELF " + "for --embedded-relocs\n")); datasec = bfd_get_section_by_name (abfd, ".data"); @@ -100,17 +98,15 @@ m68k_elf_after_open (void) { asection *relsec; - relsec = bfd_make_section (abfd, ".emreloc"); + relsec = bfd_make_section_with_flags (abfd, ".emreloc", + (SEC_ALLOC + | SEC_LOAD + | SEC_HAS_CONTENTS + | SEC_IN_MEMORY)); if (relsec == NULL - || ! bfd_set_section_flags (abfd, relsec, - (SEC_ALLOC - | SEC_LOAD - | SEC_HAS_CONTENTS - | SEC_IN_MEMORY)) - || ! bfd_set_section_alignment (abfd, relsec, 2) - || ! bfd_set_section_size (abfd, relsec, - datasec->reloc_count * 12)) - einfo ("%F%B: can not create .emreloc section: %E\n"); + || !bfd_set_section_alignment (relsec, 2) + || !bfd_set_section_size (relsec, datasec->reloc_count * 12)) + einfo (_("%F%P: %pB: can not create .emreloc section: %E\n")); } /* Double check that all other data sections are empty, as is @@ -128,11 +124,11 @@ m68k_elf_after_open (void) static void check_sections (bfd *abfd, asection *sec, void *datasec) { - if ((bfd_get_section_flags (abfd, sec) & SEC_DATA) + if ((bfd_section_flags (sec) & SEC_DATA) && sec != datasec && sec->reloc_count != 0) - einfo ("%B%X: section %s has relocs; can not use --embedded-relocs\n", - abfd, bfd_get_section_name (abfd, sec)); + einfo (_("%X%P: %pB: section %s has relocs; can not use --embedded-relocs\n"), + abfd, bfd_section_name (sec)); } #endif /* SUPPORT_EMBEDDED_RELOCS */ @@ -144,17 +140,17 @@ static void m68k_elf_after_allocation (void) { /* Call the standard elf routine. */ - after_allocation_default (); + gld${EMULATION_NAME}_after_allocation (); #ifdef SUPPORT_EMBEDDED_RELOCS if (command_line.embedded_relocs - && (! link_info.relocatable)) + && (!bfd_link_relocatable (&link_info))) { bfd *abfd; /* If we are generating embedded relocs, call a special BFD backend routine to do the work. */ - for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next) + for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next) { asection *datasec, *relsec; char *errmsg; @@ -167,31 +163,19 @@ m68k_elf_after_allocation (void) relsec = bfd_get_section_by_name (abfd, ".emreloc"); ASSERT (relsec != NULL); - if (bfd_get_flavour (abfd) == bfd_target_coff_flavour) - { - if (! bfd_m68k_coff_create_embedded_relocs (abfd, &link_info, - datasec, relsec, - &errmsg)) - { - if (errmsg == NULL) - einfo ("%B%X: can not create runtime reloc information: %E\n", - abfd); - else - einfo ("%X%B: can not create runtime reloc information: %s\n", - abfd, errmsg); - } - } - else if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) { if (! bfd_m68k_elf32_create_embedded_relocs (abfd, &link_info, datasec, relsec, &errmsg)) { if (errmsg == NULL) - einfo ("%B%X: can not create runtime reloc information: %E\n", + einfo (_("%X%P: %pB: can not create " + "runtime reloc information: %E\n"), abfd); else - einfo ("%X%B: can not create runtime reloc information: %s\n", + einfo (_("%X%P: %pB: can not create " + "runtime reloc information: %s\n"), abfd, errmsg); } } @@ -231,15 +215,15 @@ PARSE_AND_LIST_OPTIONS=' PARSE_AND_LIST_ARGS_CASES=' case OPTION_GOT: if (strcmp (optarg, "target") == 0) - got_handling = GOT_HANDLING_TARGET_DEFAULT; + got_handling = GOT_HANDLING_TARGET_DEFAULT; else if (strcmp (optarg, "single") == 0) - got_handling = 0; + got_handling = 0; else if (strcmp (optarg, "negative") == 0) - got_handling = 1; + got_handling = 1; else if (strcmp (optarg, "multigot") == 0) - got_handling = 2; + got_handling = 2; else - einfo (_("Unrecognized --got argument '\''%s'\''.\n"), optarg); + einfo (_("%P: unrecognized --got argument '\''%s'\''\n"), optarg); break; '