Relax restrictions on NOBITS sections
[centaur.git] / src / libelfu / modelops / fromFile.c
index 2b47be029fcce1099bc2f637ec1990340ab0ebd9..ef7add9a17ab7fcbd6152437b6748f53c7038b48 100644 (file)
@@ -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);