summaryrefslogtreecommitdiff
path: root/src/format/executable.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2024-11-15 10:01:42 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2024-11-15 10:01:42 (GMT)
commit671f61ec87f5e8d762ea890aabbc62c777e1c4f9 (patch)
tree1517f5fc5d00c8fd04872b35571556b021866f14 /src/format/executable.h
parent3e21278480a25552401644cd0dc168e3588508dd (diff)
Restore a skeleton of support for file formats.
Diffstat (limited to 'src/format/executable.h')
-rw-r--r--src/format/executable.h66
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