OSDN Git Service

* ldlang.c (lang_record_phdrs): Give a fatal error if no sections
authoramodra <amodra>
Fri, 31 Aug 2007 00:39:53 +0000 (00:39 +0000)
committeramodra <amodra>
Fri, 31 Aug 2007 00:39:53 +0000 (00:39 +0000)
assigned to phdrs.  Avoid multiple forward scans for a section
with phdr assignment.

ld/ChangeLog
ld/ldlang.c

index a2bee5f..8a94b2e 100644 (file)
@@ -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>
 
index 1fcb991..f247a17 100644 (file)
@@ -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)