e8a9c015ee4f70fc7e3799dbc9771ea26b63c118
[centaur.git] / include / libelfu / modeltypes.h
1 #ifndef __LIBELFU_MODELTYPES_H__
2 #define __LIBELFU_MODELTYPES_H__
3
4 #include <sys/queue.h>
5
6 #include <elf.h>
7 #include <libelf/gelf.h>
8
9
10 typedef struct ElfuScn {
11   GElf_Shdr shdr;
12
13   Elf_Data data;
14
15   struct ElfuScn *linkptr;
16   struct ElfuScn *infoptr;
17
18   CIRCLEQ_ENTRY(ElfuScn) elemChildScn;
19   CIRCLEQ_ENTRY(ElfuScn) elem;
20 } ElfuScn;
21
22
23 typedef struct ElfuPhdr {
24   GElf_Phdr phdr;
25
26   CIRCLEQ_HEAD(ChildScnList, ElfuScn) childScnList;
27   CIRCLEQ_HEAD(ChildPhdrList, ElfuPhdr) childPhdrList;
28
29   CIRCLEQ_ENTRY(ElfuPhdr) elemChildPhdr;
30   CIRCLEQ_ENTRY(ElfuPhdr) elem;
31 } ElfuPhdr;
32
33
34 typedef struct {
35   int elfclass;
36   GElf_Ehdr ehdr;
37
38   CIRCLEQ_HEAD(ScnList, ElfuScn) scnList;
39   CIRCLEQ_HEAD(PhdrList, ElfuPhdr) phdrList;
40
41   ElfuScn *shstrtab;
42 } ElfuElf;
43
44
45 #endif