]> git.eshelyaron.com Git - emacs.git/commitdiff
(unexec): Consider a section to precede the .bss
authorRichard M. Stallman <rms@gnu.org>
Sat, 12 Jul 2003 21:53:28 +0000 (21:53 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 12 Jul 2003 21:53:28 +0000 (21:53 +0000)
section if its addresses overlap that of .bss.

src/unexelf.c

index b3075f08b2f6e72d8768637fd682d4339578b1f6..d88b8ec37c062b10d1bcd9337518a4f2c378feee 100644 (file)
@@ -950,8 +950,13 @@ unexec (new_name, old_name, data_start, bss_start, entry_address)
        }
       else
        {
-         /* Any section that was original placed AFTER the bss
-            section should now be off by NEW_DATA2_SIZE. */
+         /* Any section that was originally placed after the .bss
+            section should now be off by NEW_DATA2_SIZE.  If a
+            section overlaps the .bss section, consider it to be
+            placed after the .bss section.  Overlap can occur if the
+            section just before .bss has less-strict alignment; this
+            was observed between .symtab and .bss on Solaris 2.5.1
+            (sparc) with GCC snapshot 960602.  */
 #ifdef SOLARIS_POWERPC
          /* On PPC Reference Platform running Solaris 2.5.1
             the plt section is also of type NOBI like the bss section.
@@ -965,9 +970,8 @@ unexec (new_name, old_name, data_start, bss_start, entry_address)
              >= OLD_SECTION_H (old_bss_index-1).sh_offset)
            NEW_SECTION_H (nn).sh_offset += new_data2_size;
 #else
-         if (round_up (NEW_SECTION_H (nn).sh_offset,
-                       OLD_SECTION_H (old_bss_index).sh_addralign)
-             >= new_data2_offset)
+         if (NEW_SECTION_H (nn).sh_offset + NEW_SECTION_H (nn).sh_size
+             > new_data2_offset)
            NEW_SECTION_H (nn).sh_offset += new_data2_size;
 #endif
          /* Any section that was originally placed after the section