summaryrefslogtreecommitdiff
path: root/src/format/elf/section.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2008-10-29 20:14:05 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2008-10-29 20:14:05 (GMT)
commit8a30afc05eed869865ba4dc9c107119f7ec00fe4 (patch)
tree18743934be1c2355c99788e49efb7a7a43e335f1 /src/format/elf/section.h
parent2e5893f9261ba59e06fadcc6ddfa9a1253e286b3 (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.h36
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 *);