PR25570, ld duplicate "warning: changing start of section"

PR 25570
	* ldlang.c (lang_size_sections_1): Delay emitting non-fatal
	errors/warnings until final pass.
	* ldexp.c (fold_name): Likewise.
This commit is contained in:
Alan Modra 2020-03-04 15:33:26 +10:30
parent 233bf4f847
commit 91114f7583
3 changed files with 10 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2020-03-04 Alan Modra <amodra@gmail.com>
PR 25570
* ldlang.c (lang_size_sections_1): Delay emitting non-fatal
errors/warnings until final pass.
* ldexp.c (fold_name): Likewise.
2020-03-03 Nick Clifton <nickc@redhat.com>
PR 25588

View File

@ -742,7 +742,7 @@ fold_name (etree_type *tree)
output_section = h->u.def.section->output_section;
if (output_section == NULL)
{
if (expld.phase <= lang_mark_phase_enum)
if (expld.phase != lang_final_phase_enum)
new_rel (h->u.def.value, h->u.def.section);
else
einfo (_("%X%P:%pS: unresolvable symbol `%s'"

View File

@ -5554,7 +5554,7 @@ lang_size_sections_1
&& (strcmp (lang_memory_region_list->name_list.name,
DEFAULT_MEMORY_REGION) != 0
|| lang_memory_region_list->next != NULL)
&& expld.phase != lang_mark_phase_enum)
&& expld.phase == lang_final_phase_enum)
{
/* By default this is an error rather than just a
warning because if we allocate the section to the
@ -5592,7 +5592,7 @@ lang_size_sections_1
if (dotdelta != 0
&& (config.warn_section_align
|| os->addr_tree != NULL)
&& expld.phase != lang_mark_phase_enum)
&& expld.phase == lang_final_phase_enum)
einfo (ngettext ("%P: warning: changing start of "
"section %s by %lu byte\n",
"%P: warning: changing start of "