Mercurial > emacs
changeset 10995:842974f9ab7d
(unexec): Adjust the file offset of sections located
after the section header table.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 13 Mar 1995 23:12:41 +0000 |
parents | d173d21f14e2 |
children | 356f658dbd65 |
files | src/unexelf.c |
diffstat | 1 files changed, 13 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/unexelf.c Mon Mar 13 22:50:35 1995 +0000 +++ b/src/unexelf.c Mon Mar 13 23:12:41 1995 +0000 @@ -719,11 +719,19 @@ NEW_SECTION_H (nn).sh_addralign = OLD_SECTION_H (nn).sh_addralign; NEW_SECTION_H (nn).sh_size = 0; } - /* Any section that was original placed AFTER the bss section should now - be off by NEW_DATA2_SIZE. */ - else if (NEW_SECTION_H (nn).sh_offset >= new_data2_offset) - NEW_SECTION_H (nn).sh_offset += new_data2_size; - + else + { + /* Any section that was original placed AFTER the bss + section should now be off by NEW_DATA2_SIZE. */ + if (NEW_SECTION_H (nn).sh_offset >= new_data2_offset) + NEW_SECTION_H (nn).sh_offset += new_data2_size; + /* Any section that was originally placed after the section + header table should now be off by the size of one section + header table entry. */ + if (NEW_SECTION_H (nn).sh_offset > new_file_h->e_shoff) + NEW_SECTION_H (nn).sh_offset += new_file_h->e_shentsize; + } + /* If any section hdr refers to the section after the new .data section, make it refer to next one because we have inserted a new section in between. */