diff options
author | norly <ny-git@enpas.org> | 2013-05-24 07:23:41 +0100 |
---|---|---|
committer | norly <ny-git@enpas.org> | 2013-05-24 07:23:41 +0100 |
commit | 264965b9323f90f1a834fb2d80c362aa91fbb5e5 (patch) | |
tree | 09fbfa898d674060970f5658b0c93b9a502d1693 /src/main.c | |
parent | b7ab2674931f1bb9a7e6da594f587ae84c293238 (diff) |
Object file injection, first part
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 26 |
1 files changed, 24 insertions, 2 deletions
@@ -76,11 +76,33 @@ int main(int argc, char **argv) } if (opts.insertBeforeSz) { - elfu_mInsertBefore(me, opts.insertBeforeOffs, opts.insertBeforeSz); + elfu_mInsertSpaceBefore(me, opts.insertBeforeOffs, opts.insertBeforeSz); } if (opts.insertAfterSz) { - elfu_mInsertAfter(me, opts.insertAfterOffs, opts.insertAfterSz); + elfu_mInsertSpaceAfter(me, opts.insertAfterOffs, opts.insertAfterSz); + } + + if (opts.fnReladd) { + ELFHandles hRel = { 0 }; + ElfuElf *mrel = NULL; + + openElf(&hRel, opts.fnReladd, ELF_C_READ); + if (!hRel.e) { + printf("--reladd: Failed to open file for --reladd, skipping operation.\n"); + } else { + mrel = elfu_mFromElf(hRel.e); + closeElf(&hRel); + if (!me) { + printf("--reladd: Failed to load model for --reladd, skipping operation.\n"); + } else { + printf("--reladd: Model successfully loaded.\n"); + elfu_mCheck(mrel); + printf("--reladd: Input model checked.\n"); + elfu_mReladd(me, mrel); + } + } + } elfu_mCheck(me); |