From 91114f7583fac8fdf57c58a1f632839da62e43da Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 4 Mar 2020 15:33:26 +1030 Subject: [PATCH] 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. --- ld/ChangeLog | 7 +++++++ ld/ldexp.c | 2 +- ld/ldlang.c | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 94fe79f6c2..9005459b56 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2020-03-04 Alan Modra + + 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 PR 25588 diff --git a/ld/ldexp.c b/ld/ldexp.c index 6d1457b929..d2b1b43a5a 100644 --- a/ld/ldexp.c +++ b/ld/ldexp.c @@ -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'" diff --git a/ld/ldlang.c b/ld/ldlang.c index be9ac36ede..b089ac304b 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -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 " -- 2.34.1