From 4addee4bda6064926b24cd1ae929303003bd9ff1 Mon Sep 17 00:00:00 2001 From: norly Date: Thu, 30 May 2013 04:01:51 +0100 Subject: Redesign data structures, make basic reladd work. The memory ELF model is now a tree structure: ELF +--> PHDRs +--> PHDR +--> Section | | +--> Section | | ... | | \--> Section | | | +--> PHDR +--> Section | | ... | ... | \--> Orphaned sections +--> Section ... \--> Section This effectively introduces semantics into the binary blob we are editing, and allows us to re-layout its contents much more easily while keeping as close as possible to what is assumed to be the original semantics. As a side-effect, a first meta-function had to be introduced (elfu_mScnForall) in order to traverse all leaves of the tree. Much old code has been removed given the leaner environment available now, and automated insertion of .text and .data sections from object files into executables now works. However nothing else is inserted (such as string tables or .bss) and no relocation takes place yet. --- src/model/count.c | 55 ------------------------------------------------------- 1 file changed, 55 deletions(-) delete mode 100644 src/model/count.c (limited to 'src/model/count.c') diff --git a/src/model/count.c b/src/model/count.c deleted file mode 100644 index 671767e..0000000 --- a/src/model/count.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include - - -size_t elfu_mScnIndex(ElfuElf *me, ElfuScn *ms) -{ - ElfuScn *ms2; - size_t i = 1; - - assert(me); - assert(ms); - - CIRCLEQ_FOREACH(ms2, &me->scnList, elem) { - if (ms2 == ms) { - return i; - } - - i++; - } - - /* Section is not in ELF model. This means the calling code is broken. */ - assert(0); -} - - -/* NULL section is not counted! */ -size_t elfu_mCountScns(ElfuElf *me) -{ - ElfuScn *ms; - size_t i = 0; - - assert(me); - - CIRCLEQ_FOREACH(ms, &me->scnList, elem) { - i++; - } - - return i; -} - - -size_t elfu_mCountPhdrs(ElfuElf *me) -{ - ElfuPhdr *mp; - size_t i = 0; - - assert(me); - - CIRCLEQ_FOREACH(mp, &me->phdrList, elem) { - i++; - } - - return i; -} -- cgit v1.2.3