From e2caaa1f59dc766dfe414ff3742b077c079a459b Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 26 Nov 2012 23:26:35 +0000 Subject: [PATCH] ld/ * emultempl/aarch64elf.em (gld${EMULATION_NAME}_before_parse): Copy last elf32.em here too. * emultempl/armelf.em (gld${EMULATION_NAME}_before_parse): Likewise. * emultempl/mmixelf.em (gld${EMULATION_NAME}_before_parse): Likewise. * emultempl/scoreelf.em (gld${EMULATION_NAME}_before_parse): Likewise. --- ld/ChangeLog | 8 ++++++++ ld/emultempl/aarch64elf.em | 1 + ld/emultempl/armelf.em | 25 +++++++++++++------------ ld/emultempl/mmixelf.em | 4 +++- ld/emultempl/scoreelf.em | 2 +- 5 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 66b9762cd00..5bde061af19 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2012-11-26 Roland McGrath + + * emultempl/aarch64elf.em (gld${EMULATION_NAME}_before_parse): + Copy last elf32.em here too. + * emultempl/armelf.em (gld${EMULATION_NAME}_before_parse): Likewise. + * emultempl/mmixelf.em (gld${EMULATION_NAME}_before_parse): Likewise. + * emultempl/scoreelf.em (gld${EMULATION_NAME}_before_parse): Likewise. + 2012-11-21 Roland McGrath * ld.h (ld_config_type): New flag member separate_code. diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em index 4c03ffd4490..25935d0bc21 100644 --- a/ld/emultempl/aarch64elf.em +++ b/ld/emultempl/aarch64elf.em @@ -39,6 +39,7 @@ gld${EMULATION_NAME}_before_parse (void) #endif /* not TARGET_ */ input_flags.dynamic = ${DYNAMIC_LINK-TRUE}; config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`; + config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`; } static void diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em index 3b881dd24d5..7f7d2cc00f6 100644 --- a/ld/emultempl/armelf.em +++ b/ld/emultempl/armelf.em @@ -52,6 +52,7 @@ gld${EMULATION_NAME}_before_parse (void) #endif /* not TARGET_ */ input_flags.dynamic = ${DYNAMIC_LINK-TRUE}; config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`; + config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`; } static void @@ -254,19 +255,19 @@ compare_output_sec_vma (const void *a, const void *b) asection *asec = *(asection **) a, *bsec = *(asection **) b; asection *aout = asec->output_section, *bout = bsec->output_section; bfd_vma avma, bvma; - + /* If there's no output section for some reason, compare equal. */ if (!aout || !bout) return 0; - + avma = aout->vma + asec->output_offset; bvma = bout->vma + bsec->output_offset; - + if (avma > bvma) return 1; else if (avma < bvma) return -1; - + return 0; } @@ -286,10 +287,10 @@ gld${EMULATION_NAME}_after_allocation (void) { bfd *abfd = is->the_bfd; asection *sec; - + if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0) continue; - + for (sec = abfd->sections; sec != NULL; sec = sec->next) { asection *out_sec = sec->output_section; @@ -305,7 +306,7 @@ gld${EMULATION_NAME}_after_allocation (void) if (sec_count == list_size) { list_size *= 2; - sec_list = (asection **) + sec_list = (asection **) xrealloc (sec_list, list_size * sizeof (asection *)); } @@ -313,13 +314,13 @@ gld${EMULATION_NAME}_after_allocation (void) } } } - + qsort (sec_list, sec_count, sizeof (asection *), &compare_output_sec_vma); - + if (elf32_arm_fix_exidx_coverage (sec_list, sec_count, &link_info, merge_exidx_entries)) need_laying_out = 1; - + free (sec_list); } @@ -465,7 +466,7 @@ arm_elf_create_output_section_statements (void) target2_type, fix_v4bx, use_blx, vfp11_denorm_fix, no_enum_size_warning, no_wchar_size_warning, - pic_veneer, fix_cortex_a8, + pic_veneer, fix_cortex_a8, fix_arm1176); stub_file = lang_add_input_file ("linker stubs", @@ -480,7 +481,7 @@ arm_elf_create_output_section_statements (void) einfo ("%X%P: can not create BFD %E\n"); return; } - + stub_file->the_bfd->flags |= BFD_LINKER_CREATED; ldlang_add_file (stub_file); diff --git a/ld/emultempl/mmixelf.em b/ld/emultempl/mmixelf.em index a875a5c10d9..89c60c98786 100644 --- a/ld/emultempl/mmixelf.em +++ b/ld/emultempl/mmixelf.em @@ -1,5 +1,5 @@ # This shell script emits a C file. -*- C -*- -# Copyright 2001, 2002, 2003, 2005, 2007 Free Software Foundation, Inc. +# Copyright 2001, 2002, 2003, 2005, 2007, 2012 Free Software Foundation, Inc. # # This file is part of the GNU Binutils. # @@ -38,6 +38,8 @@ elfmmix_before_parse (void) full system with shared libraries and demand paging, you will want to exclude this file. */ config.magic_demand_paged = FALSE; + + config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`; } EOF diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em index 94aa5af17a1..8556b40488c 100644 --- a/ld/emultempl/scoreelf.em +++ b/ld/emultempl/scoreelf.em @@ -38,6 +38,7 @@ gld${EMULATION_NAME}_before_parse () #endif /* not TARGET_ */ input_flags.dynamic = ${DYNAMIC_LINK-TRUE}; config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`; + config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`; } static void @@ -74,4 +75,3 @@ LDEMUL_AFTER_OPEN=score_elf_after_open # Replace the elf before_parse function with our own. LDEMUL_BEFORE_PARSE=gld"${EMULATION_NAME}"_before_parse - -- 2.30.2