PR ld/6766

* lexsup.c (parse_args <-e>): Revert 2009-03-18 change.
	* ldemul.c (after_parse_default): Add entry symbol as undef.
	* emultempl/alphaelf.em (alpha_after_parse): Call after_parse_default.
	* emultempl/cr16elf.em (cr16elf_after_parse): Likewise.
	* emultempl/crxelf.em (crxelf_after_parse): Likewise.
	* emultempl/hppaelf.em (hppaelf_after_parse): Likewise.
	* emultempl/ia64elf.em (gld${EMULATION_NAME}_after_parse): Likewise.
	* emultempl/pe.em (gld_${EMULATION_NAME}_after_parse): Call
	after_parse_default and delete now duplicate code.
	* emultempl/pep.em (gld_${EMULATION_NAME}_after_parse): Likewise.
	* scripttempl/elf32cr16.sc: No need to make entry extern.
	* scripttempl/elf32cr16c.sc: Likewise.
	* scripttempl/elf32crx.sc: Likewise.
	* scripttempl/elf32xc16xs.sc: Only provide ENTRY on final link.
This commit is contained in:
Alan Modra
2009-09-13 07:19:18 +00:00
parent b43b923a25
commit 97b11f4094
14 changed files with 62 additions and 55 deletions

View File

@ -80,6 +80,8 @@ alpha_after_parse (void)
exp_intop (ALPHA_TEXT_START_32BIT),
exp_nameop (SIZEOF_HEADERS, NULL)),
NULL);
after_parse_default ();
}
static void

View File

@ -1,5 +1,5 @@
# This shell script emits a C file. -*- C -*-
# Copyright 2007, 2008 Free Software Foundation, Inc.
# Copyright 2007, 2008, 2009 Free Software Foundation, Inc.
# Contributed by M R Swami Reddy <MR.Swami.Reddy@nsc.com>
#
# This file is part of the GNU Binutils.
@ -121,6 +121,8 @@ cr16elf_after_parse (void)
meaninful in CR16 embedded systems. Moreover, when magic_demand_paged
is true the link sometimes fails. */
config.magic_demand_paged = FALSE;
after_parse_default ();
}
/* This is called after the sections have been attached to output

View File

@ -1,5 +1,5 @@
# This shell script emits a C file. -*- C -*-
# Copyright 2004, 2005, 2007
# Copyright 2004, 2005, 2007, 2009
# Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
@ -45,6 +45,8 @@ crxelf_after_parse (void)
meaninful in CRX embedded systems. Moreover, when magic_demand_paged
is true the link sometimes fails. */
config.magic_demand_paged = FALSE;
after_parse_default ();
}
/* This is called after the sections have been attached to output

View File

@ -59,6 +59,8 @@ hppaelf_after_parse (void)
lang_input_file_is_l_enum,
NULL);
*/
after_parse_default ();
}
/* This is called before the input files are opened. We create a new

View File

@ -1,5 +1,5 @@
# This shell script emits a C file. -*- C -*-
# Copyright 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
# Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
@ -35,6 +35,8 @@ gld${EMULATION_NAME}_after_parse (void)
{
link_info.relax_pass = 2;
bfd_elf${ELFSIZE}_ia64_after_parse (itanium);
after_parse_default ();
}
EOF

View File

@ -877,27 +877,13 @@ gld_${EMULATION_NAME}_set_symbols (void)
static void
gld_${EMULATION_NAME}_after_parse (void)
{
/* The Windows libraries are designed for the linker to treat the
entry point as an undefined symbol. Otherwise, the .obj that
defines mainCRTStartup is brought in because it is the first
encountered in libc.lib and it has other symbols in it which will
be pulled in by the link process. To avoid this, we act as
though the user specified -u with the entry point symbol.
This function is called after the linker script and command line
options have been read, so at this point we know the right entry
point. This function is called before the input files are
opened, so registering the symbol as undefined will make a
difference. */
if (! link_info.relocatable && entry_symbol.name != NULL)
ldlang_add_undef (entry_symbol.name);
/* PR ld/6744: Warn the user if they have used an ELF-only
option hoping it will work on PE. */
if (link_info.export_dynamic)
einfo (_("%P: warning: --export-dynamic is not supported for PE "
"targets, did you mean --export-all-symbols?\n"));
after_parse_default ();
}
/* pe-dll.c directly accesses pe_data_import_dll,

View File

@ -814,27 +814,13 @@ gld_${EMULATION_NAME}_set_symbols (void)
static void
gld_${EMULATION_NAME}_after_parse (void)
{
/* The Windows libraries are designed for the linker to treat the
entry point as an undefined symbol. Otherwise, the .obj that
defines mainCRTStartup is brought in because it is the first
encountered in libc.lib and it has other symbols in it which will
be pulled in by the link process. To avoid this, we act as
though the user specified -u with the entry point symbol.
This function is called after the linker script and command line
options have been read, so at this point we know the right entry
point. This function is called before the input files are
opened, so registering the symbol as undefined will make a
difference. */
if (! link_info.relocatable && entry_symbol.name != NULL)
ldlang_add_undef (entry_symbol.name);
/* PR ld/6744: Warn the user if they have used an ELF-only
option hoping it will work on PE+. */
if (link_info.export_dynamic)
einfo (_("%P: warning: --export-dynamic is not supported for PE+ "
"targets, did you mean --export-all-symbols?\n"));
after_parse_default ();
}
/* pep-dll.c directly accesses pep_data_import_dll,