diff options
Diffstat (limited to 'src/libelfu/modelops/fromFile.c')
-rw-r--r-- | src/libelfu/modelops/fromFile.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libelfu/modelops/fromFile.c b/src/libelfu/modelops/fromFile.c index 2b47be0..ef7add9 100644 --- a/src/libelfu/modelops/fromFile.c +++ b/src/libelfu/modelops/fromFile.c @@ -445,7 +445,12 @@ ElfuElf* elfu_mFromElf(Elf *e) if (ms->shdr.sh_addr == 0) { ms->shdr.sh_addr = shaddr; } else { - assert(ms->shdr.sh_addr == shaddr); + if (ms->shdr.sh_type != SHT_NOBITS) { + assert(ms->shdr.sh_addr == shaddr); + } else if (ms->shdr.sh_addr > shaddr) { + parent->phdr.p_filesz = MAX(parent->phdr.p_filesz, + ms->shdr.sh_addr - parent->phdr.p_vaddr); + } } CIRCLEQ_INSERT_TAIL(&parent->childScnList, ms, elemChildScn); |