summaryrefslogtreecommitdiff
path: root/src/format/executable.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/format/executable.h')
-rw-r--r--src/format/executable.h84
1 files changed, 26 insertions, 58 deletions
diff --git a/src/format/executable.h b/src/format/executable.h
index 4f5abc7..da71d66 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,88 +25,56 @@
#define _FORMAT_EXECUTABLE_H
-#include <glib-object.h>
+#include <stdbool.h>
-#include "debuggable.h"
-#include "../glibext/gbinportion.h"
+#include "../glibext/helpers.h"
+#include "../glibext/portion.h"
-#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))
+#define G_TYPE_EXECUTABLE_FORMAT (g_executable_format_get_type())
+DECLARE_GTYPE(GExecutableFormat, g_executable_format, G, EXECUTABLE_FORMAT);
-/* Format d'exécutable générique (instance) */
-typedef struct _GExeFormat GExeFormat;
-
-/* Format d'exécutable générique (classe) */
-typedef struct _GExeFormatClass GExeFormatClass;
-
-
-/* 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 *);
-
-/* Compte le nombre de formats de débogage liés à l'exécutable. */
-size_t g_exe_format_count_debug_info(const GExeFormat *);
-
-/* Fournit un format de débogage attaché à l'exécutable. */
-GDbgFormat *g_exe_format_get_debug_info(const GExeFormat *, size_t);
/* Indique le type d'architecture visée par le format. */
-const char *g_exe_format_get_target_machine(const GExeFormat *);
+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 *);
-
-/* Enregistre une portion artificielle pour le format. */
-void g_exe_format_register_user_portion(GExeFormat *, GBinPortion *);
+bool g_executable_format_get_main_address(GExecutableFormat *, vmpa2t *);
/* Procède à l'enregistrement d'une portion dans un format. */
-void g_exe_format_include_portion(GExeFormat *, GBinPortion *, const vmpa2t *);
+bool g_executable_format_include_portion(GExecutableFormat *, GBinaryPortion *, const vmpa2t *);
/* Fournit la première couche des portions composent le binaire. */
-GBinPortion *g_exe_format_get_portions(GExeFormat *);
-
-/* Fournit les espaces mémoires des portions exécutables. */
-mrange_t *g_exe_format_get_x_ranges(GExeFormat *, size_t *);
+GBinaryPortion *g_executable_format_get_portions(GExecutableFormat *);
/* 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) \
- ({ \
- bool __result; \
- vmpa2t __pos; \
- __result = g_exe_format_translate_offset_into_vmpa(fmt, off, &__pos); \
- *addr = get_virt_addr(&__pos); \
- __result; \
+#define g_executable_format_translate_offset_into_address(fmt, off, addr) \
+ ({ \
+ bool __result; \
+ vmpa2t __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) \
- ({ \
- bool __result; \
- vmpa2t __pos; \
- __result = g_exe_format_translate_address_into_vmpa(fmt, addr, &__pos); \
- *off = get_phy_addr(&__pos); \
- __result; \
+#define g_executable_format_translate_address_into_offset(fmt, addr, off) \
+ ({ \
+ bool __result; \
+ vmpa2t __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 *);
-
-
#endif /* _FORMAT_EXECUTABLE_H */