# HG changeset patch # User Richard M. Stallman # Date 1058046808 0 # Node ID 2ba0fcfcd670ade1f18fa00d4ca0e839898932ff # Parent 898f5f935d4b054736715a27fb9fe5dfcb48bc57 (unexec): Consider a section to precede the .bss section if its addresses overlap that of .bss. diff -r 898f5f935d4b -r 2ba0fcfcd670 src/unexelf.c --- a/src/unexelf.c Sat Jul 12 21:48:07 2003 +0000 +++ b/src/unexelf.c Sat Jul 12 21:53:28 2003 +0000 @@ -950,8 +950,13 @@ } 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 @@ >= 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