diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2024-11-15 10:01:42 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2024-11-15 10:01:42 (GMT) |
commit | 671f61ec87f5e8d762ea890aabbc62c777e1c4f9 (patch) | |
tree | 1517f5fc5d00c8fd04872b35571556b021866f14 /src/format/executable.h | |
parent | 3e21278480a25552401644cd0dc168e3588508dd (diff) |
Restore a skeleton of support for file formats.
Diffstat (limited to 'src/format/executable.h')
-rw-r--r-- | src/format/executable.h | 66 |
1 files changed, 34 insertions, 32 deletions
diff --git a/src/format/executable.h b/src/format/executable.h index 4f5abc7..6695b92 100644 --- a/src/format/executable.h +++ b/src/format/executable.h @@ -2,7 +2,7 @@ /* Chrysalide - Outil d'analyse de fichiers binaires * executable.h - prototypes pour le support des formats d'exécutables * - * Copyright (C) 2009-2019 Cyrille Bagard + * Copyright (C) 2009-2024 Cyrille Bagard * * This file is part of Chrysalide. * @@ -25,87 +25,89 @@ #define _FORMAT_EXECUTABLE_H -#include <glib-object.h> +#include "../glibext/helpers.h" -#include "debuggable.h" -#include "../glibext/gbinportion.h" +#define G_TYPE_EXECUTABLE_FORMAT (g_executable_format_get_type()) + +DECLARE_GTYPE(GExecutableFormat, g_executable_format, G, EXECUTABLE_FORMAT); -#define G_TYPE_EXE_FORMAT g_executable_format_get_type() -#define G_EXE_FORMAT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_EXE_FORMAT, GExeFormat)) -#define G_IS_EXE_FORMAT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_EXE_FORMAT)) -#define G_EXE_FORMAT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_EXE_FORMAT, GExeFormatClass)) -#define G_IS_EXE_FORMAT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_EXE_FORMAT)) -#define G_EXE_FORMAT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_EXE_FORMAT, GExeFormatClass)) +/* Indique le type d'architecture visée par le format. */ +char *g_executable_format_get_target_machine(const GExecutableFormat *); + -/* Format d'exécutable générique (instance) */ -typedef struct _GExeFormat GExeFormat; -/* Format d'exécutable générique (classe) */ -typedef struct _GExeFormatClass GExeFormatClass; + +#if 0 + + +/* +#include "debuggable.h" +#include "../glibext/gbinportion.h" +*/ -/* Indique le type défini pour un format d'exécutable générique. */ -GType g_executable_format_get_type(void); /* Rajoute des informations de débogage à un exécutable. */ -void g_exe_format_add_debug_info(GExeFormat *, GDbgFormat *); +void g_executable_format_add_debug_info(GExecutableFormat *, GDbgFormat *); /* Compte le nombre de formats de débogage liés à l'exécutable. */ -size_t g_exe_format_count_debug_info(const GExeFormat *); +size_t g_executable_format_count_debug_info(const GExecutableFormat *); /* Fournit un format de débogage attaché à l'exécutable. */ -GDbgFormat *g_exe_format_get_debug_info(const GExeFormat *, size_t); +GDbgFormat *g_executable_format_get_debug_info(const GExecutableFormat *, size_t); /* Indique le type d'architecture visée par le format. */ -const char *g_exe_format_get_target_machine(const GExeFormat *); +//const char *g_executable_format_get_target_machine(const GExecutableFormat *); /* Fournit l'adresse principale associée à un format. */ -bool g_exe_format_get_main_address(GExeFormat *, vmpa2t *); +bool g_executable_format_get_main_address(GExecutableFormat *, vmpa2t *); /* Enregistre une portion artificielle pour le format. */ -void g_exe_format_register_user_portion(GExeFormat *, GBinPortion *); +void g_executable_format_register_user_portion(GExecutableFormat *, GBinPortion *); /* Procède à l'enregistrement d'une portion dans un format. */ -void g_exe_format_include_portion(GExeFormat *, GBinPortion *, const vmpa2t *); +void g_executable_format_include_portion(GExecutableFormat *, GBinPortion *, const vmpa2t *); /* Fournit la première couche des portions composent le binaire. */ -GBinPortion *g_exe_format_get_portions(GExeFormat *); +GBinPortion *g_executable_format_get_portions(GExecutableFormat *); /* Fournit les espaces mémoires des portions exécutables. */ -mrange_t *g_exe_format_get_x_ranges(GExeFormat *, size_t *); +mrange_t *g_executable_format_get_x_ranges(GExecutableFormat *, size_t *); /* Fournit l'emplacement correspondant à une position physique. */ -bool g_exe_format_translate_offset_into_vmpa(GExeFormat *, phys_t, vmpa2t *); +bool g_executable_format_translate_offset_into_vmpa(GExecutableFormat *, phys_t, vmpa2t *); /* Fournit l'emplacement correspondant à une position physique. */ -bool g_exe_format_translate_address_into_vmpa(GExeFormat *, virt_t, vmpa2t *); +bool g_executable_format_translate_address_into_vmpa(GExecutableFormat *, virt_t, vmpa2t *); -#define g_exe_format_translate_offset_into_address(fmt, off, addr) \ +#define g_executable_format_translate_offset_into_address(fmt, off, addr) \ ({ \ bool __result; \ vmpa2t __pos; \ - __result = g_exe_format_translate_offset_into_vmpa(fmt, off, &__pos); \ + __result = g_executable_format_translate_offset_into_vmpa(fmt, off, &__pos); \ *addr = get_virt_addr(&__pos); \ __result; \ }) -#define g_exe_format_translate_address_into_offset(fmt, addr, off) \ +#define g_executable_format_translate_address_into_offset(fmt, addr, off) \ ({ \ bool __result; \ vmpa2t __pos; \ - __result = g_exe_format_translate_address_into_vmpa(fmt, addr, &__pos); \ + __result = g_executable_format_translate_address_into_vmpa(fmt, addr, &__pos); \ *off = get_phy_addr(&__pos); \ __result; \ }) /* Fournit l'emplacement d'une section donnée. */ -bool g_exe_format_get_section_range_by_name(const GExeFormat *, const char *, mrange_t *); +bool g_executable_format_get_section_range_by_name(const GExecutableFormat *, const char *, mrange_t *); + +#endif |