aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/ldlang.c13
2 files changed, 14 insertions, 5 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index a2bee5f..8a94b2e 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-31 Alan Modra <amodra@bigpond.net.au>
+
+ * ldlang.c (lang_record_phdrs): Give a fatal error if no sections
+ assigned to phdrs. Avoid multiple forward scans for a section
+ with phdr assignment.
+
2007-08-28 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 1fcb991..f247a17 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -6263,9 +6263,7 @@ lang_record_phdrs (void)
|| (os->bfd_section->flags & SEC_ALLOC) == 0)
continue;
- if (last)
- pl = last;
- else
+ if (last == NULL)
{
lang_output_section_statement_type * tmp_os;
@@ -6279,9 +6277,14 @@ lang_record_phdrs (void)
http://sourceware.org/ml/binutils/2007-02/msg00291.html */
for (tmp_os = os; tmp_os; tmp_os = tmp_os->next)
if (tmp_os->phdrs)
- break;
- pl = tmp_os->phdrs;
+ {
+ last = tmp_os->phdrs;
+ break;
+ }
+ if (last == NULL)
+ einfo (_("%F%P: no sections assigned to phdrs\n"));
}
+ pl = last;
}
if (os->bfd_section == NULL)