diff options
Diffstat (limited to 'src/format/elf/section.h')
-rw-r--r-- | src/format/elf/section.h | 40 |
1 files changed, 12 insertions, 28 deletions
diff --git a/src/format/elf/section.h b/src/format/elf/section.h index 6bc3a75..944fd7c 100644 --- a/src/format/elf/section.h +++ b/src/format/elf/section.h @@ -25,47 +25,31 @@ #define _FORMAT_ELF_SECTION_H -#include <elf.h> +#include "elf.h" +#include "elf_def.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 par indice. */ +bool find_elf_section_by_index(const GElfFormat *, uint16_t, elf_shdr *); /* Recherche une section donnée au sein de binaire par nom. */ -bool find_elf_section_by_name(const elf_format *, const char *, Elf_Shdr *); +bool find_elf_section_by_name(const GElfFormat *, 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 *); +bool find_elf_section_by_virtual_address(const GElfFormat *, uint32_t, elf_shdr *); -/* Recherche une section donnée au sein de binaire par indice. */ -bool find_elf_section_by_index(const elf_format *, uint16_t, Elf_Shdr *); +/* Recherche une section donnée au sein de binaire par type. */ +bool find_elf_sections_by_type(const GElfFormat *, uint32_t, elf_shdr **, size_t *); /* 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 *); +void get_elf_section_content(const GElfFormat *, const elf_shdr *, off_t *, off_t *, vmpa_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 *); +bool find_elf_section_content_by_name(const GElfFormat *, const char *, off_t *, off_t *, vmpa_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 *); +/* Identifie une chaîne de caractères dans une section adéquate. */ +const char *extract_name_from_elf_string_section(const GElfFormat *, const elf_shdr *, uint16_t); |