Implement orphaned sections
[centaur.git] / include / libelfu / modeltypes.h
index 18f66717cc77f9954aaa3f5a3fcc9ea742f3302d..bea93222f358088a38696aac2f0f1aa80c456bb1 100644 (file)
@@ -4,20 +4,18 @@
 #include <sys/queue.h>
 
 #include <elf.h>
-#include <gelf.h>
-
-typedef struct ElfuData {
-  Elf_Data data;
-
-  CIRCLEQ_ENTRY(ElfuData) elem;
-} ElfuData;
+#include <libelf/gelf.h>
 
 
 typedef struct ElfuScn {
   GElf_Shdr shdr;
 
-  CIRCLEQ_HEAD(DataList, ElfuData) dataList;
+  Elf_Data data;
+
+  struct ElfuScn *linkptr;
+  struct ElfuScn *infoptr;
 
+  CIRCLEQ_ENTRY(ElfuScn) elemChildScn;
   CIRCLEQ_ENTRY(ElfuScn) elem;
 } ElfuScn;
 
@@ -25,6 +23,10 @@ typedef struct ElfuScn {
 typedef struct ElfuPhdr {
   GElf_Phdr phdr;
 
+  CIRCLEQ_HEAD(ChildScnList, ElfuScn) childScnList;
+  CIRCLEQ_HEAD(ChildPhdrList, ElfuPhdr) childPhdrList;
+
+  CIRCLEQ_ENTRY(ElfuPhdr) elemChildPhdr;
   CIRCLEQ_ENTRY(ElfuPhdr) elem;
 } ElfuPhdr;
 
@@ -35,6 +37,7 @@ typedef struct {
 
   CIRCLEQ_HEAD(ScnList, ElfuScn) scnList;
   CIRCLEQ_HEAD(PhdrList, ElfuPhdr) phdrList;
+  CIRCLEQ_HEAD(OrphanScnList, ElfuScn) orphanScnList;
 
   ElfuScn *shstrtab;
 } ElfuElf;