summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/model/dump.c9
-rw-r--r--src/model/fromFile.c3
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);
}
}