summaryrefslogtreecommitdiff
path: root/src/copy/section.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/copy/section.c')
-rw-r--r--src/copy/section.c75
1 files changed, 0 insertions, 75 deletions
diff --git a/src/copy/section.c b/src/copy/section.c
deleted file mode 100644
index 6fd08e2..0000000
--- a/src/copy/section.c
+++ /dev/null
@@ -1,75 +0,0 @@
-#include <stdio.h>
-
-#include <libelf.h>
-#include <gelf.h>
-
-#include <libelfu/libelfu.h>
-
-
-void elfu_copySection(Elf *eo, Elf_Scn *scn)
-{
- Elf_Scn *scnOut;
- Elf_Data *data;
- GElf_Shdr shdr, shdrOut;
-
- scnOut = elf_newscn(eo);
- if (!scnOut) {
- fprintf(stderr, "elf_newscn() failed: %s\n", elf_errmsg(-1));
- return;
- }
-
- if (gelf_getshdr(scn, &shdr) != &shdr) {
- fprintf(stderr, "gelf_getshdr() failed: %s\n", elf_errmsg(-1));
- }
-
-
- /* Copy section header */
- if (gelf_getshdr(scnOut, &shdrOut) != &shdrOut) {
- fprintf(stderr, "gelf_getshdr() failed: %s\n", elf_errmsg(-1));
- }
-
- shdrOut.sh_name = shdr.sh_name;
- shdrOut.sh_type = shdr.sh_type;
- shdrOut.sh_flags = shdr.sh_flags;
- shdrOut.sh_addr = shdr.sh_addr;
- /* sh_offset */
- /* sh_size */
- shdrOut.sh_link = shdr.sh_link;
- shdrOut.sh_info = shdr.sh_info;
- shdrOut.sh_addralign = shdr.sh_addralign;
- shdrOut.sh_entsize = shdr.sh_entsize;
-
- if (!gelf_update_shdr(scnOut, &shdrOut)) {
- fprintf(stderr, "gelf_update_shdr() failed: %s\n", elf_errmsg(-1));
- }
-
-
- //elf_flagshdr(scnOut, ELF_C_SET, ELF_F_DIRTY);
- //elf_flagscn(scnOut, ELF_C_SET, ELF_F_DIRTY);
-
-
- /* Copy each data part in source segment */
- data = elf_rawdata(scn, NULL);
- while (data) {
- Elf_Data *dataOut = elf_newdata(scnOut);
- if (!dataOut) {
- fprintf(stderr, "elf_newdata() failed: %s\n", elf_errmsg(-1));
- }
-
- //dataOut->d_align = data->d_align;
- dataOut->d_align = shdr.sh_addralign;
- dataOut->d_buf = data->d_buf;
- /* dataOut->d_off = data->d_off; */
- dataOut->d_type = data->d_type;
- dataOut->d_size = data->d_size;
- dataOut->d_version = data->d_version;
-
- //elf_flagdata(dataOut, ELF_C_SET, ELF_F_DIRTY);
-
- data = elf_rawdata(scn, data);
- }
-
- // ehf_newdata() should flag the entire section dirty
- //elf_flagshdr(scnOut, ELF_C_SET, ELF_F_DIRTY);
- //elf_flagscn(scnOut, ELF_C_SET, ELF_F_DIRTY);
-}