Fix IA-64 linker failure reported by Andreas Schwab.
authorJim Wilson <wilson@tuliptree.org>
Wed, 19 Nov 2003 02:40:55 +0000 (02:40 +0000)
committerJim Wilson <wilson@tuliptree.org>
Wed, 19 Nov 2003 02:40:55 +0000 (02:40 +0000)
* ldlang.c (lang_process): Move lang_reset_memory_regions call after
lang_do_assignments call.

ld/ChangeLog
ld/ldlang.c

index 6bcd346..a83237d 100644 (file)
@@ -1,5 +1,8 @@
 2003-11-18  James E Wilson  <wilson@specifixinc.com>
 
+       * ldlang.c (lang_process): Move lang_reset_memory_regions call after
+       lang_do_assignments call.
+
        * emulparams/elf64_ia64.sh (OTHER_PLT_RELOC_SECTIONS): Include
        .rela.opd if -pie.
 
index 1dc2b1e..b7a11f8 100644 (file)
@@ -4240,8 +4240,6 @@ lang_process (void)
 
       do
        {
-         lang_reset_memory_regions ();
-
          relax_again = FALSE;
 
          /* Note: pe-dll.c does something like this also.  If you find
@@ -4253,6 +4251,10 @@ lang_process (void)
          lang_do_assignments (statement_list.head, abs_output_section,
                               NULL, 0);
 
+         /* We must do this after lang_do_assignments, because it uses
+            _raw_size.  */
+         lang_reset_memory_regions ();
+
          /* Perform another relax pass - this time we know where the
             globals are, so can make a better guess.  */
          lang_size_sections (statement_list.head, abs_output_section,
@@ -4269,8 +4271,8 @@ lang_process (void)
       while (relax_again);
 
       /* Final extra sizing to report errors.  */
-      lang_reset_memory_regions ();
       lang_do_assignments (statement_list.head, abs_output_section, NULL, 0);
+      lang_reset_memory_regions ();
       lang_size_sections (statement_list.head, abs_output_section,
                          &statement_list.head, 0, 0, NULL, TRUE);
     }