summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-03-04 15:33:26 +1030
committerAlan Modra <amodra@gmail.com>2020-03-04 15:35:59 +1030
commit91114f7583fac8fdf57c58a1f632839da62e43da (patch)
tree222ae22f69b7c4cccec98cba34388d69591ebe4c
parent233bf4f847b136705247e2f7f11bae41c72448a4 (diff)
downloadbinutils-gdb-91114f7583fac8fdf57c58a1f632839da62e43da.tar.gz
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.
-rw-r--r--ld/ChangeLog7
-rw-r--r--ld/ldexp.c2
-rw-r--r--ld/ldlang.c4
3 files changed, 10 insertions, 3 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 94fe79f6c24..9005459b563 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -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
diff --git a/ld/ldexp.c b/ld/ldexp.c
index 6d1457b929a..d2b1b43a5a9 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 be9ac36ede4..b089ac304b1 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 "