4 #include <libelfu/libelfu.h>
8 * Allocation, destruction
11 ElfuElf* elfu_mElfAlloc()
15 me = malloc(sizeof(ElfuElf));
17 ELFU_WARN("mElfAlloc: malloc() failed for ElfuElf.\n");
21 memset(me, 0, sizeof(*me));
23 CIRCLEQ_INIT(&me->phdrList);
24 CIRCLEQ_INIT(&me->orphanScnList);
30 void elfu_mElfDestroy(ElfuElf* me)
34 if (!CIRCLEQ_EMPTY(&me->phdrList)) {
37 nextmp = CIRCLEQ_FIRST(&me->phdrList);
38 while ((void*)nextmp != (void*)&me->phdrList) {
39 ElfuPhdr *curmp = nextmp;
40 nextmp = CIRCLEQ_NEXT(curmp, elem);
41 CIRCLEQ_REMOVE(&me->phdrList, curmp, elem);
42 elfu_mPhdrDestroy(curmp);
46 if (!CIRCLEQ_EMPTY(&me->orphanScnList)) {
49 nextms = CIRCLEQ_FIRST(&me->orphanScnList);
50 while ((void*)nextms != (void*)&me->orphanScnList) {
51 ElfuScn *curms = nextms;
52 nextms = CIRCLEQ_NEXT(curms, elemChildScn);
53 CIRCLEQ_REMOVE(&me->orphanScnList, curms, elemChildScn);
54 elfu_mScnDestroy(curms);