From eaeb0a9d5c65fd8dc19878b068e17f90a93a19c2 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 10 Aug 2009 07:50:56 +0000 Subject: PR 10474 * ldemul.c (after_allocation_default): Run lang_relax_sections. * ldlang.h (lang_relax_sections): Declare. * ldlang.c (relax_sections): Delete. (lang_relax_sections): New function. (lang_process): Don't relax directly from here. * emultempl/alphaelf.em (alpha_finish): Call finish_default. * emultempl/armelf.em (arm_elf_after_allocation): Delete. Move body.. (gld${EMULATION_NAME}_finish): ..to here. Move existing code.. (gld${EMULATION_NAME}_after_allocation): ..to here. New function. (LDEMUL_AFTER_ALLOCATION): Update. * emultempl/avrelf.em (avr_elf_finish, LDEMUL_FINISH): Delete. (avr_elf_after_allocation): New function. (LDEMUL_AFTER_ALLOCATION): Define. * emultempl/elf-generic.em (gld${EMULATION_NAME}_map_segments): Call lang_relax_sections. * emultempl/elf32.em (gld${EMULATION_NAME}_finish): Delete. Move.. (gld${EMULATION_NAME}_after_allocation): ..code to here. New function. (LDEMUL_AFTER_ALLOCATION, LDEMUL_FINISH): Update. * emultempl/genelf.em (gld${EMULATION_NAME}_finish): Delete. Move.. (gld${EMULATION_NAME}_after_allocation): ..code to here. New function. (LDEMUL_FINISH): Delete. (LDEMUL_AFTER_ALLOCATION): Define. * emultempl/hppaelf.em (gld${EMULATION_NAME}_finish): Delete. Move.. (gld${EMULATION_NAME}_after_allocation): ..to here. New function. (LDEMUL_FINISH): Delete. (LDEMUL_AFTER_ALLOCATION): Define. * emultempl/m68hc1xelf.em (m68hc11elf_finish): Delete. Move.. (m68hc11elf_after_allocation): ..to here. New function. (LDEMUL_FINISH): Delete. (LDEMUL_AFTER_ALLOCATION): Define. * emultempl/m68kelf.em (m68k_elf_after_allocation): Call gld${EMULATION_NAME}_after_allocation. * emultempl/mmix-elfnmmo.em (mmix_after_allocation): Call gld${EMULATION_NAME}_after_allocation. * emultempl/mmo.em (mmo_finish): Delete. Move body.. (gld${EMULATION_NAME}_after_allocation): ..to here. New function. (LDEMUL_FINISH): Define. * emultempl/ppc64elf.em (ppc_layout_sections_again): Set elf_gp. (gld${EMULATION_NAME}_finish): Move code sizing sections.. (gld${EMULATION_NAME}_after_allocation): ..to here. * emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_after_allocation): Call gld${EMULATION_NAME}_after_allocation. * emultempl/spuelf.em (gld${EMULATION_NAME}_finish): Delete bfd_elf_discard_info and map_segments call. --- ld/emultempl/mmix-elfnmmo.em | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'ld/emultempl/mmix-elfnmmo.em') diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em index 909c3c4..be4a279 100644 --- a/ld/emultempl/mmix-elfnmmo.em +++ b/ld/emultempl/mmix-elfnmmo.em @@ -56,11 +56,11 @@ mmix_before_allocation (void) static void mmix_after_allocation (void) { - asection *sec - = bfd_get_section_by_name (link_info.output_bfd, - MMIX_REG_CONTENTS_SECTION_NAME); + asection *sec; bfd_signed_vma regvma; + gld${EMULATION_NAME}_after_allocation (); + /* If there's no register section, we don't need to do anything. On the other hand, if there's a non-standard linker-script without a mapping from MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME when that section is @@ -72,6 +72,8 @@ mmix_after_allocation (void) that's expected when you play tricks with linker scripts. The "NOCROSSREFS 2" test does not run the output so it does not matter there. */ + sec = bfd_get_section_by_name (link_info.output_bfd, + MMIX_REG_CONTENTS_SECTION_NAME); if (sec == NULL) sec = bfd_get_section_by_name (link_info.output_bfd, -- cgit v1.1