Restrict sh_link/sh_info evaluation where possible
[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) elemPhdrToScn;
19   CIRCLEQ_ENTRY(ElfuScn) elem;
20 } ElfuScn;
21
22
23 typedef struct ElfuPhdr {
24   GElf_Phdr phdr;
25
26   CIRCLEQ_HEAD(PhdrToScnList, ElfuScn) phdrToScnList;
27
28   CIRCLEQ_ENTRY(ElfuPhdr) elem;
29 } ElfuPhdr;
30
31
32 typedef struct {
33   int elfclass;
34   GElf_Ehdr ehdr;
35
36   CIRCLEQ_HEAD(ScnList, ElfuScn) scnList;
37   CIRCLEQ_HEAD(PhdrList, ElfuPhdr) phdrList;
38
39   ElfuScn *shstrtab;
40 } ElfuElf;
41
42
43 #endif