# HG changeset patch # User Phillip Rulon # Date 939424108 0 # Node ID 3d7b096fb0866ef8a6219f4da96edaffb8e5f1c0 # Parent a4a38fbd1bae9b096313ef33e2462d937144254d (unexec): Don't get confused by a short section just before the bss section. diff -r a4a38fbd1bae -r 3d7b096fb086 src/unexelf.c --- a/src/unexelf.c Fri Oct 08 23:06:15 1999 +0000 +++ b/src/unexelf.c Fri Oct 08 23:08:28 1999 +0000 @@ -926,9 +926,15 @@ >= 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, + /* The idea of this is that the bss section's sh_offset + may need rounding up to compare with new_data2_offset. + So we cannot simply compare the sh_offset. + However, another small section could exist just before + the bss section, and we need to know that is before. */ + if (round_up (NEW_SECTION_H (nn).sh_offset + + NEW_SECTION_H (nn).sh_size, OLD_SECTION_H (old_bss_index).sh_addralign) - >= new_data2_offset) + > new_data2_offset) NEW_SECTION_H (nn).sh_offset += new_data2_size; #endif /* Any section that was originally placed after the section