Make symtab and reltab resident in ElfuScn
[centaur.git] / include / libelfu / types.h
index b216e53a7ee03364dfa312d83cea2cfb7ef8fe16..46fbc6924092ba9c5c15830bdbda33f5870853b7 100644 (file)
@@ -7,49 +7,6 @@
 #include <gelf.h>
 
 
-typedef struct ElfuScn {
-  GElf_Shdr shdr;
-
-  Elf_Data data;
-
-  struct ElfuScn *linkptr;
-  struct ElfuScn *infoptr;
-
-  struct ElfuScn *oldptr;
-
-  struct ElfuSymtab *symtab;
-  struct ElfuReltab *reltab;
-
-  CIRCLEQ_ENTRY(ElfuScn) elemChildScn;
-  CIRCLEQ_ENTRY(ElfuScn) elem;
-} 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;
-
-
-typedef struct {
-  int elfclass;
-  GElf_Ehdr ehdr;
-
-  CIRCLEQ_HEAD(PhdrList, ElfuPhdr) phdrList;
-  CIRCLEQ_HEAD(OrphanScnList, ElfuScn) orphanScnList;
-
-  ElfuScn *shstrtab;
-} ElfuElf;
-
-
-
-
-
 typedef struct ElfuSym {
   char *name;
 
@@ -60,7 +17,7 @@ typedef struct ElfuSym {
   unsigned char type;
   unsigned char other;
 
-  ElfuScn *scnptr;
+  struct ElfuScn *scnptr;
   int shndx;
 
   CIRCLEQ_ENTRY(ElfuSym) elem;
@@ -94,4 +51,47 @@ typedef struct ElfuReltab {
 } ElfuReltab;
 
 
+
+
+
+
+typedef struct ElfuScn {
+  GElf_Shdr shdr;
+
+  Elf_Data data;
+
+  struct ElfuScn *linkptr;
+  struct ElfuScn *infoptr;
+
+  struct ElfuScn *oldptr;
+
+  struct ElfuSymtab symtab;
+  struct ElfuReltab reltab;
+
+  CIRCLEQ_ENTRY(ElfuScn) elemChildScn;
+  CIRCLEQ_ENTRY(ElfuScn) elem;
+} 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;
+
+
+typedef struct {
+  int elfclass;
+  GElf_Ehdr ehdr;
+
+  CIRCLEQ_HEAD(PhdrList, ElfuPhdr) phdrList;
+  CIRCLEQ_HEAD(OrphanScnList, ElfuScn) orphanScnList;
+
+  ElfuScn *shstrtab;
+} ElfuElf;
+
 #endif