* ldexp.c (fold_name <SIZEOF>): Return 0 for non-existent section.
authorAlan Modra <amodra@gmail.com>
Wed, 7 Sep 2005 06:27:36 +0000 (06:27 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 7 Sep 2005 06:27:36 +0000 (06:27 +0000)
(exp_fold_tree_1): Print assert message only in final stage of
linking.  Trigger assertion failure if expression cannot be
evaluated.

ld/ChangeLog
ld/ldexp.c

index f703b31..067f660 100644 (file)
@@ -1,3 +1,10 @@
+2005-09-07  Alan Modra  <amodra@bigpond.net.au>
+
+       * ldexp.c (fold_name <SIZEOF>): Return 0 for non-existent section.
+       (exp_fold_tree_1): Print assert message only in final stage of
+       linking.  Trigger assertion failure if expression cannot be
+       evaluated.
+
 2005-09-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/1263
index d0ecb0c..8ae7446 100644 (file)
@@ -590,7 +590,9 @@ fold_name (etree_type *tree)
          lang_output_section_statement_type *os;
 
          os = lang_output_section_find (tree->name.name);
-         if (os != NULL && os->processed > 0)
+         if (os == NULL)
+           new_abs (0);
+         else if (os->processed > 0)
            new_abs (os->bfd_section->size / opb);
        }
       break;
@@ -655,15 +657,8 @@ exp_fold_tree_1 (etree_type *tree)
 
     case etree_assert:
       exp_fold_tree_1 (tree->assert_s.child);
-      if (expld.result.valid_p)
-       {
-         if (expld.phase == lang_mark_phase_enum)
-           /* We don't care if assert fails or not when we are just
-              marking if a section is used or not.  */
-           expld.result.value = 1;
-         else if (!expld.result.value)
-           einfo ("%X%P: %s\n", tree->assert_s.message);
-       }
+      if (expld.phase == lang_final_phase_enum && !expld.result.value)
+       einfo ("%X%P: %s\n", tree->assert_s.message);
       break;
 
     case etree_unary: