mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-11 09:56:23 +08:00
ld:
* ldlang.c (entry_symbol_default): New file-scope global. (lang_finish): Use it, not a hardwired "start". (lang_default_entry): Set it. * ldlang.h: Declare lang_default_entry. * emultempl/beos.em, emultempl/pe.em: Use lang_default_entry, not lang_add_entry, to override default entry point symbol. ld/testsuite: * ld-scripts/align.exp: Mark align1 XFAIL on PECOFF targets. * ld-scripts/data.exp: Mark data UNSUPPORTED on a.out targets. * ld-scripts/provide.exp, ld-scripts/size.exp: Mark all tests UNSUPPORTED on a.out targets. Tidy.
This commit is contained in:
@ -216,23 +216,8 @@ set_pe_subsystem (void)
|
||||
set_pe_name ("__subsystem__", v[i].value);
|
||||
|
||||
/* If the subsystem is windows, we use a different entry
|
||||
point. We also register the entry point as an undefined
|
||||
symbol. from lang_add_entry() The reason we do
|
||||
this is so that the user
|
||||
doesn't have to because they would have to use the -u
|
||||
switch if they were specifying an entry point other than
|
||||
_mainCRTStartup. Specifically, if creating a windows
|
||||
application, entry point _WinMainCRTStartup must be
|
||||
specified. What I have found for non console
|
||||
applications (entry not _mainCRTStartup) is that the .obj
|
||||
that contains mainCRTStartup is brought in since 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, adding -u with the entry point
|
||||
name specified forces the correct .obj to be used. We
|
||||
can avoid making the user do this by always adding the
|
||||
entry point name as an undefined symbol. */
|
||||
lang_add_entry (v[i].entry, 1);
|
||||
point. */
|
||||
lang_default_entry (v[i].entry);
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -139,9 +139,9 @@ gld_${EMULATION_NAME}_before_parse (void)
|
||||
|
||||
#if (PE_DEF_SUBSYSTEM == 9) || (PE_DEF_SUBSYSTEM == 2)
|
||||
#if defined TARGET_IS_mipspe || defined TARGET_IS_armpe
|
||||
lang_add_entry ("WinMainCRTStartup", FALSE);
|
||||
lang_default_entry ("WinMainCRTStartup");
|
||||
#else
|
||||
lang_add_entry ("_WinMainCRTStartup", FALSE);
|
||||
lang_default_entry ("_WinMainCRTStartup");
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -457,7 +457,7 @@ set_pe_subsystem (void)
|
||||
{
|
||||
char *alc_entry;
|
||||
|
||||
/* lang_add_entry expects its argument to be permanently
|
||||
/* lang_default_entry expects its argument to be permanently
|
||||
allocated, so we don't free this string. */
|
||||
alc_entry = xmalloc (strlen (initial_symbol_char)
|
||||
+ strlen (entry)
|
||||
@ -467,7 +467,7 @@ set_pe_subsystem (void)
|
||||
entry = alc_entry;
|
||||
}
|
||||
|
||||
lang_add_entry (entry, FALSE);
|
||||
lang_default_entry (entry);
|
||||
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user