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.
This commit is contained in:
parent
b80f948aeb
commit
e2caaa1f59
5 changed files with 26 additions and 14 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2012-11-26 Roland McGrath <mcgrathr@google.com>
|
||||||
|
|
||||||
|
* 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 <mcgrathr@google.com>
|
2012-11-21 Roland McGrath <mcgrathr@google.com>
|
||||||
|
|
||||||
* ld.h (ld_config_type): New flag member separate_code.
|
* ld.h (ld_config_type): New flag member separate_code.
|
||||||
|
|
|
@ -39,6 +39,7 @@ gld${EMULATION_NAME}_before_parse (void)
|
||||||
#endif /* not TARGET_ */
|
#endif /* not TARGET_ */
|
||||||
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
|
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
|
||||||
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
|
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
|
static void
|
||||||
|
|
|
@ -52,6 +52,7 @@ gld${EMULATION_NAME}_before_parse (void)
|
||||||
#endif /* not TARGET_ */
|
#endif /* not TARGET_ */
|
||||||
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
|
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
|
||||||
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
|
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
|
static void
|
||||||
|
@ -254,19 +255,19 @@ compare_output_sec_vma (const void *a, const void *b)
|
||||||
asection *asec = *(asection **) a, *bsec = *(asection **) b;
|
asection *asec = *(asection **) a, *bsec = *(asection **) b;
|
||||||
asection *aout = asec->output_section, *bout = bsec->output_section;
|
asection *aout = asec->output_section, *bout = bsec->output_section;
|
||||||
bfd_vma avma, bvma;
|
bfd_vma avma, bvma;
|
||||||
|
|
||||||
/* If there's no output section for some reason, compare equal. */
|
/* If there's no output section for some reason, compare equal. */
|
||||||
if (!aout || !bout)
|
if (!aout || !bout)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
avma = aout->vma + asec->output_offset;
|
avma = aout->vma + asec->output_offset;
|
||||||
bvma = bout->vma + bsec->output_offset;
|
bvma = bout->vma + bsec->output_offset;
|
||||||
|
|
||||||
if (avma > bvma)
|
if (avma > bvma)
|
||||||
return 1;
|
return 1;
|
||||||
else if (avma < bvma)
|
else if (avma < bvma)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,10 +287,10 @@ gld${EMULATION_NAME}_after_allocation (void)
|
||||||
{
|
{
|
||||||
bfd *abfd = is->the_bfd;
|
bfd *abfd = is->the_bfd;
|
||||||
asection *sec;
|
asection *sec;
|
||||||
|
|
||||||
if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
|
if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (sec = abfd->sections; sec != NULL; sec = sec->next)
|
for (sec = abfd->sections; sec != NULL; sec = sec->next)
|
||||||
{
|
{
|
||||||
asection *out_sec = sec->output_section;
|
asection *out_sec = sec->output_section;
|
||||||
|
@ -305,7 +306,7 @@ gld${EMULATION_NAME}_after_allocation (void)
|
||||||
if (sec_count == list_size)
|
if (sec_count == list_size)
|
||||||
{
|
{
|
||||||
list_size *= 2;
|
list_size *= 2;
|
||||||
sec_list = (asection **)
|
sec_list = (asection **)
|
||||||
xrealloc (sec_list, list_size * sizeof (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);
|
qsort (sec_list, sec_count, sizeof (asection *), &compare_output_sec_vma);
|
||||||
|
|
||||||
if (elf32_arm_fix_exidx_coverage (sec_list, sec_count, &link_info,
|
if (elf32_arm_fix_exidx_coverage (sec_list, sec_count, &link_info,
|
||||||
merge_exidx_entries))
|
merge_exidx_entries))
|
||||||
need_laying_out = 1;
|
need_laying_out = 1;
|
||||||
|
|
||||||
free (sec_list);
|
free (sec_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,7 +466,7 @@ arm_elf_create_output_section_statements (void)
|
||||||
target2_type, fix_v4bx, use_blx,
|
target2_type, fix_v4bx, use_blx,
|
||||||
vfp11_denorm_fix, no_enum_size_warning,
|
vfp11_denorm_fix, no_enum_size_warning,
|
||||||
no_wchar_size_warning,
|
no_wchar_size_warning,
|
||||||
pic_veneer, fix_cortex_a8,
|
pic_veneer, fix_cortex_a8,
|
||||||
fix_arm1176);
|
fix_arm1176);
|
||||||
|
|
||||||
stub_file = lang_add_input_file ("linker stubs",
|
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");
|
einfo ("%X%P: can not create BFD %E\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
stub_file->the_bfd->flags |= BFD_LINKER_CREATED;
|
stub_file->the_bfd->flags |= BFD_LINKER_CREATED;
|
||||||
ldlang_add_file (stub_file);
|
ldlang_add_file (stub_file);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# This shell script emits a C file. -*- C -*-
|
# 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.
|
# 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
|
full system with shared libraries and demand paging, you will want to
|
||||||
exclude this file. */
|
exclude this file. */
|
||||||
config.magic_demand_paged = FALSE;
|
config.magic_demand_paged = FALSE;
|
||||||
|
|
||||||
|
config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ gld${EMULATION_NAME}_before_parse ()
|
||||||
#endif /* not TARGET_ */
|
#endif /* not TARGET_ */
|
||||||
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
|
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
|
||||||
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
|
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
|
static void
|
||||||
|
@ -74,4 +75,3 @@ LDEMUL_AFTER_OPEN=score_elf_after_open
|
||||||
|
|
||||||
# Replace the elf before_parse function with our own.
|
# Replace the elf before_parse function with our own.
|
||||||
LDEMUL_BEFORE_PARSE=gld"${EMULATION_NAME}"_before_parse
|
LDEMUL_BEFORE_PARSE=gld"${EMULATION_NAME}"_before_parse
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue