summaryrefslogtreecommitdiff
path: root/src/debug/break.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug/break.h')
-rw-r--r--src/debug/break.h90
1 files changed, 34 insertions, 56 deletions
diff --git a/src/debug/break.h b/src/debug/break.h
index 5946ad2..77d959a 100644
--- a/src/debug/break.h
+++ b/src/debug/break.h
@@ -25,80 +25,58 @@
#define _DEBUG_BREAK_H
-#include <glib-object.h>
-#include <stdbool.h>
+#include "misc.h"
+#include "../arch/vmpa.h"
-#include "../arch/archbase.h"
-#include "../glibext/proto.h"
+/* Origine des points d'arrêt en place */
+typedef enum _RawBpOrigin
+{
+ RBO_INVALID = (0 << 0), /* Existance illégale */
+ RBO_USER = (1 << 0), /* Point d'arrêt utilisateur */
+ //RBO_COMPUTED = (1 << 1), /* Arrêt sur un point spécial */
+ RBO_INTERNAL = (1 << 2), /* Restauration transparente */
+ RBO_STEP = (1 << 3), /* Mise en place éphémère */
+ RBO_COUNT
-/* --------------------------- GESTION DES POINTS D'ARRET --------------------------- */
+} RawBpOrigin;
-#define G_TYPE_BREAK_POINT g_break_point_get_type()
-#define G_BREAK_POINT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_break_point_get_type(), GBreakPoint))
-#define G_IS_BREAK_POINT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_break_point_get_type()))
-#define G_BREAK_POINT_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_break_point_get_type(), GBreakPointIface))
-#define G_BREAK_POINT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_BREAK_POINT, GBreakPointClass))
+/* Définition d'un point d'arrêt appliqué */
+typedef struct _raw_breakpoint raw_breakpoint;
-/* Propriétés d'un point d'arrêt (instance) */
-typedef struct _GBreakPoint GBreakPoint;
+/* Libère le coeur d'un point d'arrêt. */
+void fini_raw_breakpoint(raw_breakpoint *);
-/* Propriétés d'un point d'arrêt (classe) */
-typedef struct _GBreakPointClass GBreakPointClass;
+/* Indique l'adresse du point d'arrêt dans la mémoire ciblée. */
+virt_t get_raw_breakpoint_addr(const raw_breakpoint *);
+/* Fournit l'adresse d'origine d'un point d'arrêt de pas à pas. */
+virt_t get_raw_breakpoint_prev_addr(const raw_breakpoint *);
-/* Indique le type défini pour des propriétés d'un point d'arrêt. */
-GType g_break_point_get_type(void);
+/* Effectue une comparaison entre adresse et point d'arrêt. */
+int compare_raw_breakpoint_with_addr(const virt_t *, const raw_breakpoint **);
-/* Construit un nouveau point d'arrêt. */
-GBreakPoint *g_break_point_new(vmpa_t);
+/* Effectue une comparaison entre deux points d'arrêt. */
+int compare_raw_breakpoints(const raw_breakpoint **, const raw_breakpoint **);
-/* Fournit l'adresse associée à un point d'arrêt. */
-vmpa_t g_break_point_get_address(const GBreakPoint *);
+/* Enregistre la source d'un point d'arrêt posé. */
+void set_raw_breakpoint_origin(raw_breakpoint *, RawBpOrigin, dbg_thread_id_t, virt_t);
+/* Oublie la source d'un point d'arrêt posé. */
+void unset_raw_breakpoint_origin(raw_breakpoint *, RawBpOrigin, dbg_thread_id_t);
+/* Indique si le point d'arrêt correspond à une source donnée. */
+bool has_raw_breakpoint_origin(const raw_breakpoint *, RawBpOrigin, dbg_thread_id_t);
-/* ---------------------------- GROUPE DE POINTS D'ARRET ---------------------------- */
+/* Indique si le point d'arrêt correspond à une origine donnée. */
+bool has_raw_breakpoint_previous_address(const raw_breakpoint *, RawBpOrigin, dbg_thread_id_t, virt_t);
-
-#define G_TYPE_BREAK_GROUP g_break_group_get_type()
-#define G_BREAK_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_break_group_get_type(), GBreakGroup))
-#define G_IS_BREAK_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_break_group_get_type()))
-#define G_BREAK_GROUP_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_break_group_get_type(), GBreakGroupIface))
-#define G_BREAK_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_BREAK_GROUP, GBreakGroupClass))
-
-
-/* Propriétés d'un groupe de points d'arrêt (instance) */
-typedef struct _GBreakGroup GBreakGroup;
-
-/* Propriétés d'un groupe de points d'arrêt (classe) */
-typedef struct _GBreakGroupClass GBreakGroupClass;
-
-
-/* Indique le type défini pour les groupes de points d'errêt. */
-GType g_break_group_get_type(void);
-
-/* Construit un nouveau groupe de points d'arrêt. */
-GBreakGroup *g_break_group_new(void);
-
-/* Fournit la désignation humaine associée à un groupe. */
-const char *g_break_group_get_name(const GBreakGroup *);
-
-/* Définit la désignation humaine à associer à un groupe. */
-void g_break_group_set_name(GBreakGroup *, const char *);
-
-/* Indique si une adresse donnée est gérée dans un groupe. */
-bool g_break_group_has_address(const GBreakGroup *, vmpa_t);
-
-/* Ajoute ou supprime un point d'arrêt dans un groupe. */
-void g_break_group_toggle_breakpoint(GBreakGroup *, vmpa_t);
-
-/* Parcourt l'ensemble des points d'arrêt d'un groupe donné. */
-void g_break_group_for_each(GBreakGroup *, GExtFunc, gpointer);
+/* Indique si un point d'arrêt a encore une utilité. */
+bool is_breakpoint_useless(const raw_breakpoint *);