diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2008-10-29 20:14:05 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2008-10-29 20:14:05 (GMT) |
commit | 8a30afc05eed869865ba4dc9c107119f7ec00fe4 (patch) | |
tree | 18743934be1c2355c99788e49efb7a7a43e335f1 /src/format/elf/e_elf.c | |
parent | 2e5893f9261ba59e06fadcc6ddfa9a1253e286b3 (diff) |
Do not relied on section names anymore.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@39 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/format/elf/e_elf.c')
-rw-r--r-- | src/format/elf/e_elf.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/format/elf/e_elf.c b/src/format/elf/e_elf.c index c2e49b1..a9eacea 100644 --- a/src/format/elf/e_elf.c +++ b/src/format/elf/e_elf.c @@ -71,7 +71,7 @@ elf_format *load_elf(const uint8_t *content, off_t length) EXE_FORMAT(result)->length = length; EXE_FORMAT(result)->get_def_parts = (get_def_parts_fc)get_elf_default_code_parts; - EXE_FORMAT(result)->find_section = (find_section_fc)find_elf_section; + EXE_FORMAT(result)->find_section = (find_section_fc)find_elf_section_content_by_name; EXE_FORMAT(result)->get_symbols = (get_symbols_fc)get_elf_symbols; EXE_FORMAT(result)->resolve_symbol = (resolve_symbol_fc)resolve_elf_symbol; @@ -142,7 +142,7 @@ bin_part **get_elf_default_code_parts(const elf_format *format, size_t *count) if (format->sec_size > 0) { - if (find_elf_section(format, ".plt", &offset, &size, &voffset)) + if (find_elf_section_content_by_name(format, ".plt", &offset, &size, &voffset)) { part = create_bin_part(); @@ -154,7 +154,7 @@ bin_part **get_elf_default_code_parts(const elf_format *format, size_t *count) } - if (find_elf_section(format, ".init", &offset, &size, &voffset)) + if (find_elf_section_content_by_name(format, ".init", &offset, &size, &voffset)) { part = create_bin_part(); @@ -166,7 +166,7 @@ bin_part **get_elf_default_code_parts(const elf_format *format, size_t *count) } - if (find_elf_section(format, ".text", &offset, &size, &voffset)) + if (find_elf_section_content_by_name(format, ".text", &offset, &size, &voffset)) { part = create_bin_part(); @@ -178,7 +178,7 @@ bin_part **get_elf_default_code_parts(const elf_format *format, size_t *count) } - if (find_elf_section(format, ".fini", &offset, &size, &voffset)) + if (find_elf_section_content_by_name(format, ".fini", &offset, &size, &voffset)) { part = create_bin_part(); @@ -202,15 +202,15 @@ bin_part **get_elf_default_code_parts(const elf_format *format, size_t *count) memcpy(&shdr, &EXE_FORMAT(format)->content[offset], format->header.e_shentsize); - if (ELF_SHDR(format, shdr, sh_flags) & SHF_EXECINSTR) + if (ELF_SHDR(format, &shdr, sh_flags) & SHF_EXECINSTR) { part = create_bin_part(); /* TODO : nom */ - set_bin_part_values(part, ELF_SHDR(format, shdr, sh_offset), - ELF_SHDR(format, shdr, sh_size), - ELF_SHDR(format, shdr, sh_addr)); + set_bin_part_values(part, ELF_SHDR(format, &shdr, sh_offset), + ELF_SHDR(format, &shdr, sh_size), + ELF_SHDR(format, &shdr, sh_addr)); result = (bin_part **)realloc(result, ++(*count) * sizeof(bin_part *)); result[*count - 1] = part; |