diff options
Diffstat (limited to 'src/libelfu/model/phdr.c')
-rw-r--r-- | src/libelfu/model/phdr.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libelfu/model/phdr.c b/src/libelfu/model/phdr.c index d26eb77..ce395ec 100644 --- a/src/libelfu/model/phdr.c +++ b/src/libelfu/model/phdr.c @@ -1,4 +1,6 @@ #include <assert.h> +#include <stdlib.h> +#include <string.h> #include <libelfu/libelfu.h> @@ -34,3 +36,27 @@ void elfu_mPhdrUpdateChildOffsets(ElfuPhdr *mp) ms->shdr.sh_offset = mp->phdr.p_offset + (ms->shdr.sh_addr - mp->phdr.p_vaddr); } } + + + +/* + * Allocation, destruction + */ + +ElfuPhdr* elfu_mPhdrAlloc() +{ + ElfuPhdr *mp; + + mp = malloc(sizeof(ElfuPhdr)); + if (!mp) { + ELFU_WARN("mPhdrAlloc: malloc() failed for ElfuPhdr.\n"); + return NULL; + } + + memset(mp, 0, sizeof(*mp)); + + CIRCLEQ_INIT(&mp->childScnList); + CIRCLEQ_INIT(&mp->childPhdrList); + + return mp; +} |