Allow the use of the ORIGIN and LENGTH attributes in expressions inside MEMORY regions.
authorNick Bowler <nbowler@draconx.ca>
Wed, 6 Mar 2019 15:20:29 +0000 (15:20 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 6 Mar 2019 15:20:29 +0000 (15:20 +0000)
PR 24289
* ldexp.c (fold_name): Allow lookups of the LENGTH and ORIGIN
attributes during the first phase.

ld/ChangeLog
ld/ldexp.c

index 1877a1c16167d6fc5101d8006290661c00673330..c2cbe87947e20ba3133a152a6bb208587a4e47b9 100644 (file)
@@ -1,3 +1,9 @@
+2019-03-06  Nick Bowler  <nbowler@draconx.ca>
+
+       PR 24289
+       * ldexp.c (fold_name): Allow lookups of the LENGTH and ORIGIN
+       attributes during the first phase.
+
 2019-03-01  Andreas Krebbel  <krebbel@linux.ibm.com>
 
        This reverts commit 5a12586d44fa8d5dfc74cbca4f2f36a273a16335.
index 60b17ef5764a2a0bcc6fed82e420f91ad0b60441..daf0f2e38235851f0f289b09073a09c008ab2825 100644 (file)
@@ -864,34 +864,30 @@ fold_name (etree_type *tree)
 
     case LENGTH:
       {
-      if (expld.phase != lang_first_phase_enum)
-       {
-         lang_memory_region_type *mem;
-
-         mem = lang_memory_region_lookup (tree->name.name, FALSE);
-         if (mem != NULL)
-           new_number (mem->length);
-         else
-           einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
-                    " referenced in expression\n"),
-                  tree, tree->name.name);
-       }
+       lang_memory_region_type *mem;
+
+       mem = lang_memory_region_lookup (tree->name.name, FALSE);
+       if (mem != NULL)
+         new_number (mem->length);
+       else
+         einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
+                  " referenced in expression\n"),
+                tree, tree->name.name);
       }
       break;
 
     case ORIGIN:
-      if (expld.phase != lang_first_phase_enum)
-       {
-         lang_memory_region_type *mem;
-
-         mem = lang_memory_region_lookup (tree->name.name, FALSE);
-         if (mem != NULL)
-           new_rel_from_abs (mem->origin);
-         else
-           einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
-                    " referenced in expression\n"),
-                  tree, tree->name.name);
-       }
+      {
+       lang_memory_region_type *mem;
+
+       mem = lang_memory_region_lookup (tree->name.name, FALSE);
+       if (mem != NULL)
+         new_rel_from_abs (mem->origin);
+       else
+         einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
+                  " referenced in expression\n"),
+                tree, tree->name.name);
+      }
       break;
 
     case CONSTANT: