4 #include <libelfu/libelfu.h>
7 size_t elfu_mPhdrCount(ElfuElf *me)
14 CIRCLEQ_FOREACH(mp, &me->phdrList, elem) {
23 void elfu_mPhdrUpdateChildOffsets(ElfuPhdr *mp)
29 assert(mp->phdr.p_type == PT_LOAD);
31 CIRCLEQ_FOREACH(mpc, &mp->childPhdrList, elemChildPhdr) {
32 mpc->phdr.p_offset = mp->phdr.p_offset + (mpc->phdr.p_vaddr - mp->phdr.p_vaddr);
35 CIRCLEQ_FOREACH(ms, &mp->childScnList, elemChildScn) {
36 ms->shdr.sh_offset = mp->phdr.p_offset + (ms->shdr.sh_addr - mp->phdr.p_vaddr);
43 * Allocation, destruction
46 ElfuPhdr* elfu_mPhdrAlloc()
50 mp = malloc(sizeof(ElfuPhdr));
52 ELFU_WARN("mPhdrAlloc: malloc() failed for ElfuPhdr.\n");
56 memset(mp, 0, sizeof(*mp));
58 CIRCLEQ_INIT(&mp->childScnList);
59 CIRCLEQ_INIT(&mp->childPhdrList);