diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/model/dump.c | 9 | ||||
-rw-r--r-- | src/model/fromFile.c | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/model/dump.c b/src/model/dump.c index 882ba0a..67a498a 100644 --- a/src/model/dump.c +++ b/src/model/dump.c @@ -209,6 +209,15 @@ void elfu_mDumpElf(ElfuElf *me) ELFU_INFO("\n"); + ELFU_INFO("Orphaned sections:\n"); + CIRCLEQ_FOREACH(ms, &me->orphanScnList, elemChildScn) { + ELFU_INFO(" * %-17s @ %8jx\n", + elfu_mScnName(me, ms), + ms->shdr.sh_addr); + } + ELFU_INFO("\n"); + + ELFU_INFO("Sections:\n"); ELFU_INFO(" # Name sh_type sh_addr sh_offset sh_size ES Fl Al sh_link sh_info \n"); ELFU_INFO(" | | | | | | | | | | \n"); diff --git a/src/model/fromFile.c b/src/model/fromFile.c index fd6aba0..cb09352 100644 --- a/src/model/fromFile.c +++ b/src/model/fromFile.c @@ -167,6 +167,7 @@ ElfuElf* elfu_mFromElf(Elf *e) /* General stuff */ CIRCLEQ_INIT(&me->scnList); CIRCLEQ_INIT(&me->phdrList); + CIRCLEQ_INIT(&me->orphanScnList); me->shstrtab = NULL; me->elfclass = gelf_getclass(e); @@ -286,6 +287,8 @@ ElfuElf* elfu_mFromElf(Elf *e) if (parent) { CIRCLEQ_INSERT_TAIL(&parent->childScnList, ms, elemChildScn); + } else { + CIRCLEQ_INSERT_TAIL(&me->orphanScnList, ms, elemChildScn); } } |