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/section.h | |
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/section.h')
-rw-r--r-- | src/format/elf/section.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/format/elf/section.h b/src/format/elf/section.h index b84fe76..6bc3a75 100644 --- a/src/format/elf/section.h +++ b/src/format/elf/section.h @@ -25,15 +25,47 @@ #define _FORMAT_ELF_SECTION_H +#include <elf.h> + + #include "e_elf.h" +/* En-tête de section ELF */ +typedef union _Elf_Shdr +{ + Elf32_Shdr section32; /* Version 32 bits */ + Elf64_Shdr section64; /* Version 64 bits */ + +} Elf_Shdr; + + +#define ELF_SIZEOF_SHDR(fmt) (fmt->is_32b ? sizeof(Elf32_Shdr) : sizeof(Elf64_Shdr)) + +#define ELF_SHDR(fmt, shdr, fld) (fmt->is_32b ? (shdr)->section32.fld : (shdr)->section64.fld) + + /* Charge en mémoire la liste humaine des sections. */ bool read_elf_section_names(elf_format *); -/* Recherche une section donnée au sein de binaire. */ -bool find_elf_section(const elf_format *, const char *, off_t *, off_t *, uint64_t *); +/* Recherche une section donnée au sein de binaire par nom. */ +bool find_elf_section_by_name(const elf_format *, const char *, Elf_Shdr *); + +/* Recherche une section donnée au sein de binaire par type. */ +bool find_elf_section_by_type(const elf_format *, uint16_t, Elf_Shdr **, size_t *); + +/* Recherche une section donnée au sein de binaire par indice. */ +bool find_elf_section_by_index(const elf_format *, uint16_t, Elf_Shdr *); + +/* Fournit les adresses et taille contenues dans une section. */ +void get_elf_section_content(const elf_format *, const Elf_Shdr *, off_t *, off_t *, uint64_t *); + +/* Recherche une zone donnée au sein de binaire par nom. */ +bool find_elf_section_content_by_name(const elf_format *, const char *, off_t *, off_t *, uint64_t *); + +/* Recherche une zone donnée au sein de binaire par indice. */ +bool find_elf_section_content_by_index(const elf_format *, uint16_t, off_t *, off_t *, uint64_t *); |