Refactor mdoel-related code
authornorly <ny-git@enpas.org>
Sat, 23 Feb 2013 16:08:26 +0000 (16:08 +0000)
committernorly <ny-git@enpas.org>
Sat, 23 Feb 2013 16:09:15 +0000 (16:09 +0000)
include/libelfu/libelfu.h
include/libelfu/model.h [deleted file]
include/libelfu/modelops.h [new file with mode: 0644]
include/libelfu/modeltypes.h [new file with mode: 0644]
src/main.c
src/model/check.c
src/model/count.c
src/model/fromFile.c
src/model/section-name.c
src/model/toFile.c

index 3c62aad52126815718e5ffaa06fea11f582cfb37..1fc613ad097231e5d852d77235236fc0922fde09 100644 (file)
@@ -6,7 +6,8 @@
 
 #include <libelfu/generic.h>
 #include <libelfu/elfops.h>
-#include <libelfu/model.h>
+#include <libelfu/modeltypes.h>
+#include <libelfu/modelops.h>
 
 
 #endif
diff --git a/include/libelfu/model.h b/include/libelfu/model.h
deleted file mode 100644 (file)
index 588d57a..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef __LIBELFU_MODEL_H__
-#define __LIBELFU_MODEL_H__
-
-#include <sys/queue.h>
-
-#include <elf.h>
-#include <gelf.h>
-
-
-typedef struct ElfuData {
-  Elf_Data data;
-
-  CIRCLEQ_ENTRY(ElfuData) elem;
-} ElfuData;
-
-
-typedef struct ElfuScn {
-  GElf_Shdr shdr;
-
-  CIRCLEQ_HEAD(DataList, ElfuData) dataList;
-
-  CIRCLEQ_ENTRY(ElfuScn) elem;
-} ElfuScn;
-
-
-typedef struct ElfuPhdr {
-  GElf_Phdr phdr;
-
-  CIRCLEQ_ENTRY(ElfuPhdr) elem;
-} ElfuPhdr;
-
-
-typedef struct {
-  int elfclass;
-  GElf_Ehdr ehdr;
-
-  CIRCLEQ_HEAD(ScnList, ElfuScn) scnList;
-  CIRCLEQ_HEAD(PhdrList, ElfuPhdr) phdrList;
-
-  ElfuScn *shstrtab;
-} ElfuElf;
-
-
-
-size_t elfu_countSections(ElfuElf *me);
-size_t elfu_countPHDRs(ElfuElf *me);
-
-char* elfu_modelScnName(ElfuElf *me, ElfuScn *ms);
-
-int elfu_modelCheck(ElfuElf *me);
-
-ElfuPhdr* elfu_modelFromPhdr(GElf_Phdr *phdr);
-ElfuScn* elfu_modelFromSection(Elf_Scn *scn);
-ElfuElf* elfu_modelFromElf(Elf *e);
-
-void elfu_modelToElf(ElfuElf *me, Elf *e);
-
-#endif
diff --git a/include/libelfu/modelops.h b/include/libelfu/modelops.h
new file mode 100644 (file)
index 0000000..9475eba
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef __LIBELFU_MODELOPS_H__
+#define __LIBELFU_MODELOPS_H__
+
+#include <elf.h>
+#include <gelf.h>
+
+#include <libelfu/modeltypes.h>
+
+
+size_t elfu_mCountScns(ElfuElf *me);
+size_t elfu_mCountPhdrs(ElfuElf *me);
+
+char* elfu_mScnName(ElfuElf *me, ElfuScn *ms);
+
+int elfu_mCheck(ElfuElf *me);
+
+ElfuElf* elfu_mFromElf(Elf *e);
+    void elfu_mToElf(ElfuElf *me, Elf *e);
+
+#endif
diff --git a/include/libelfu/modeltypes.h b/include/libelfu/modeltypes.h
new file mode 100644 (file)
index 0000000..18f6671
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef __LIBELFU_MODELTYPES_H__
+#define __LIBELFU_MODELTYPES_H__
+
+#include <sys/queue.h>
+
+#include <elf.h>
+#include <gelf.h>
+
+typedef struct ElfuData {
+  Elf_Data data;
+
+  CIRCLEQ_ENTRY(ElfuData) elem;
+} ElfuData;
+
+
+typedef struct ElfuScn {
+  GElf_Shdr shdr;
+
+  CIRCLEQ_HEAD(DataList, ElfuData) dataList;
+
+  CIRCLEQ_ENTRY(ElfuScn) elem;
+} ElfuScn;
+
+
+typedef struct ElfuPhdr {
+  GElf_Phdr phdr;
+
+  CIRCLEQ_ENTRY(ElfuPhdr) elem;
+} ElfuPhdr;
+
+
+typedef struct {
+  int elfclass;
+  GElf_Ehdr ehdr;
+
+  CIRCLEQ_HEAD(ScnList, ElfuScn) scnList;
+  CIRCLEQ_HEAD(PhdrList, ElfuPhdr) phdrList;
+
+  ElfuScn *shstrtab;
+} ElfuElf;
+
+
+#endif
index eaf2709ccac412158cceeea297e083275fbe7352..991fe09423b20247cfc0a4765873f3707934d3d9 100644 (file)
@@ -63,15 +63,15 @@ int main(int argc, char **argv)
   if (opts.fnOutput) {
     ElfuElf *me;
 
-    me = elfu_modelFromElf(hIn.e);
+    me = elfu_mFromElf(hIn.e);
 
     if (me) {
       printf("Model successfully loaded.\n");
 
-      elfu_modelCheck(me);
+      elfu_mCheck(me);
       printf("Model checked.\n");
 
-      elfu_modelToElf(me, hOut.e);
+      elfu_mToElf(me, hOut.e);
 
       printf("Model converted to ELF, ready to be written.\n");
     } else {
index dd5e8eb90b0172a335d3d46625c6544ebc7f815f..c490d5d74df0dcafd9e0d2e553cdfd92a84db5cd 100644 (file)
@@ -43,7 +43,7 @@ static int cmpScnOffs(const void *ms1, const void *ms2)
 }
 
 
-int elfu_modelCheck(ElfuElf *me)
+int elfu_mCheck(ElfuElf *me)
 {
   ElfuScn *ms;
   size_t numSecs;
@@ -51,7 +51,7 @@ int elfu_modelCheck(ElfuElf *me)
   size_t i;
 
   /* Sort sections by offset in file */
-  numSecs = elfu_countSections(me);
+  numSecs = elfu_mCountScns(me);
   sortedSecs = malloc(numSecs * sizeof(*sortedSecs));
   if (!sortedSecs) {
     fprintf(stderr, "elfu_check: Failed to allocate memory.\n");
@@ -72,8 +72,8 @@ int elfu_modelCheck(ElfuElf *me)
     if (sortedSecs[i]->shdr.sh_offset + elfu_gScnSizeFile(&sortedSecs[i]->shdr)
         > sortedSecs[i+1]->shdr.sh_offset) {
       fprintf(stderr, "elfu_check: Found overlapping sections: %s and %s.\n",
-                      elfu_modelScnName(me, sortedSecs[i]),
-                      elfu_modelScnName(me, sortedSecs[i+1]));
+                      elfu_mScnName(me, sortedSecs[i]),
+                      elfu_mScnName(me, sortedSecs[i+1]));
     }
   }
 
@@ -82,7 +82,7 @@ int elfu_modelCheck(ElfuElf *me)
   for (i = 0; i < numSecs; i++) {
     if (sortedSecs[i]->shdr.sh_offset < me->ehdr.e_ehsize) {
       fprintf(stderr, "elfu_check: Found section overlapping with EHDR: %s.\n",
-                      elfu_modelScnName(me, sortedSecs[i]));
+                      elfu_mScnName(me, sortedSecs[i]));
     }
   }
 
@@ -94,7 +94,7 @@ int elfu_modelCheck(ElfuElf *me)
                       me->ehdr.e_phoff,
                       me->ehdr.e_phentsize * me->ehdr.e_phnum)) {
       fprintf(stderr, "elfu_check: Found section overlapping with PHDRs: %s.\n",
-                      elfu_modelScnName(me, sortedSecs[i]));
+                      elfu_mScnName(me, sortedSecs[i]));
     }
   }
 
index 274b9d8f3d36f45d4116f7d2801dda00c0bb6c35..b7c80130d63778186bfdbde824d13f3afeea0d3a 100644 (file)
@@ -5,7 +5,7 @@
 
 
 /* NULL section is not counted! */
-size_t elfu_countSections(ElfuElf *me)
+size_t elfu_mCountScns(ElfuElf *me)
 {
   ElfuScn *ms;
   size_t i = 0;
@@ -20,7 +20,7 @@ size_t elfu_countSections(ElfuElf *me)
 }
 
 
-size_t elfu_countPHDRs(ElfuElf *me)
+size_t elfu_mCountPhdrs(ElfuElf *me)
 {
   ElfuPhdr *mp;
   size_t i = 0;
index 26ce6a7b11a2d7385ff70c7a1fb3f3ca59b4a360..dedbfa0c000e2518cf7e6c490227aa9e4bf72cb6 100644 (file)
@@ -1,14 +1,12 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/types.h>
-
 #include <libelf.h>
 #include <gelf.h>
-
 #include <libelfu/libelfu.h>
 
 
-ElfuPhdr* elfu_modelFromPhdr(GElf_Phdr *phdr)
+static ElfuPhdr* modelFromPhdr(GElf_Phdr *phdr)
 {
   ElfuPhdr *mp;
 
@@ -23,7 +21,7 @@ ElfuPhdr* elfu_modelFromPhdr(GElf_Phdr *phdr)
 }
 
 
-ElfuScn* elfu_modelFromSection(Elf_Scn *scn)
+static ElfuScn* modelFromSection(Elf_Scn *scn)
 {
   ElfuScn *ms;
   Elf_Data *data;
@@ -70,7 +68,7 @@ ElfuScn* elfu_modelFromSection(Elf_Scn *scn)
 
 
 
-ElfuElf* elfu_modelFromElf(Elf *e)
+ElfuElf* elfu_mFromElf(Elf *e)
 {
   ElfuElf *me;
   Elf_Scn *scn;
@@ -110,7 +108,7 @@ ElfuElf* elfu_modelFromElf(Elf *e)
   scn = elf_getscn(e, 1);
   i = 1;
   while (scn) {
-    ElfuScn *ms = elfu_modelFromSection(scn);
+    ElfuScn *ms = modelFromSection(scn);
 
     if (ms) {
       CIRCLEQ_INSERT_TAIL(&me->scnList, ms, elem);
@@ -143,7 +141,7 @@ ElfuElf* elfu_modelFromElf(Elf *e)
       break;
     }
 
-    mp = elfu_modelFromPhdr(&phdr);
+    mp = modelFromPhdr(&phdr);
 
     if (mp) {
       CIRCLEQ_INSERT_TAIL(&me->phdrList, mp, elem);
index 0e5d903817511b5691553ba3a330e2e217d88a75..2ecd5f0a07b00c66defa054da717873759c575ee 100644 (file)
@@ -1,14 +1,12 @@
 #include <assert.h>
 #include <stdlib.h>
-
 #include <libelf.h>
 #include <gelf.h>
-
 #include <libelfu/libelfu.h>
 
 
 
-char* elfu_modelScnName(ElfuElf *me, ElfuScn *ms)
+char* elfu_mScnName(ElfuElf *me, ElfuScn *ms)
 {
   assert(me);
   assert(ms);
index 399c25b6131fad0d7a285272fa1b68e0f5a7f208..0bfbd004468a6ef3f28cc8663f74d0a7ebd81a27 100644 (file)
@@ -1,14 +1,12 @@
 #include <stdio.h>
 #include <stdlib.h>
-
 #include <libelf.h>
 #include <gelf.h>
-
 #include <libelfu/libelfu.h>
 
 
 
-static void elfu_modelToPhdrs(ElfuElf *me, Elf *e)
+static void modelToPhdrs(ElfuElf *me, Elf *e)
 {
   ElfuPhdr *mp;
   size_t i;
@@ -36,7 +34,7 @@ static void elfu_modelToPhdrs(ElfuElf *me, Elf *e)
 
 
 
-static void elfu_modelToSection(ElfuScn *ms, Elf *e)
+static void modelToSection(ElfuScn *ms, Elf *e)
 {
   Elf_Scn *scnOut;
 
@@ -74,7 +72,7 @@ static void elfu_modelToSection(ElfuScn *ms, Elf *e)
 
 
 
-void elfu_modelToElf(ElfuElf *me, Elf *e)
+void elfu_mToElf(ElfuElf *me, Elf *e)
 {
   ElfuScn *ms;
 
@@ -95,12 +93,12 @@ void elfu_modelToElf(ElfuElf *me, Elf *e)
 
   /* Sections */
   CIRCLEQ_FOREACH(ms, &me->scnList, elem) {
-    elfu_modelToSection(ms, e);
+    modelToSection(ms, e);
   }
 
 
   /* PHDRs */
-  elfu_modelToPhdrs(me, e);
+  modelToPhdrs(me, e);
 
 
   elf_flagelf(e, ELF_C_SET, ELF_F_DIRTY);