summaryrefslogtreecommitdiff
path: root/src/libelfu/model/phdr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libelfu/model/phdr.c')
-rw-r--r--src/libelfu/model/phdr.c26
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;
+}