diff options
Diffstat (limited to 'src/analysis')
-rwxr-xr-x | src/analysis/Makefile.am | 7 | ||||
-rw-r--r-- | src/analysis/binary.h | 1 | ||||
-rw-r--r-- | src/analysis/exporter-int.h | 70 | ||||
-rw-r--r-- | src/analysis/exporter.c | 281 | ||||
-rw-r--r-- | src/analysis/exporter.h | 70 | ||||
-rw-r--r-- | src/analysis/line-int.h | 86 | ||||
-rw-r--r-- | src/analysis/line.c | 717 | ||||
-rw-r--r-- | src/analysis/line.h | 151 | ||||
-rw-r--r-- | src/analysis/line_code.c | 334 | ||||
-rw-r--r-- | src/analysis/line_code.h | 62 | ||||
-rw-r--r-- | src/analysis/line_comment.c | 248 | ||||
-rw-r--r-- | src/analysis/line_comment.h | 58 | ||||
-rw-r--r-- | src/analysis/line_prologue.c | 202 | ||||
-rw-r--r-- | src/analysis/line_prologue.h | 60 |
14 files changed, 0 insertions, 2347 deletions
diff --git a/src/analysis/Makefile.am b/src/analysis/Makefile.am index 1c3950f..f58ddca 100755 --- a/src/analysis/Makefile.am +++ b/src/analysis/Makefile.am @@ -3,13 +3,6 @@ noinst_LTLIBRARIES = libanalysis.la libanalysis_la_SOURCES = \ binary.h binary.c \ - exporter-int.h \ - exporter.h exporter.c \ - line-int.h \ - line.h line.c \ - line_code.h line_code.c \ - line_comment.h line_comment.c \ - line_prologue.h line_prologue.c \ roptions.h roptions.c \ routine.h routine.c \ type-int.h \ diff --git a/src/analysis/binary.h b/src/analysis/binary.h index eb042c6..073c546 100644 --- a/src/analysis/binary.h +++ b/src/analysis/binary.h @@ -29,7 +29,6 @@ #include <stdbool.h> -#include "line.h" #include "../arch/processor.h" #include "../common/xml.h" #include "../format/executable.h" diff --git a/src/analysis/exporter-int.h b/src/analysis/exporter-int.h deleted file mode 100644 index ec75bcc..0000000 --- a/src/analysis/exporter-int.h +++ /dev/null @@ -1,70 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * exporter-int.h - prototypes pour la traduction humaine des lignes de rendus - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef _ANALYSIS_EXPORTER_INT_H -#define _ANALYSIS_EXPORTER_INT_H - - -#include "exporter.h" - - - -/* Ajoute du texte simple à un fichier ouvert en écriture. */ -typedef void (* add_text_fc) (GContentExporter *, GRenderingOptions *, MainRendering, FILE *); - -/* Ajoute à un texte GTK le contenu de la ligne de rendu. */ -typedef void (* export_buffer_fc) (GContentExporter *, GBufferLine *, GRenderingOptions *); - - - -/* Exportation de contenu (instance) */ -struct _GContentExporter -{ - GObject parent; /* A laisser en premier */ - - add_text_fc add_text; /* Remplissage simple */ - export_buffer_fc export_buffer; /* Constitution du texte GLib */ - -}; - - -/* Exportation de contenu (classe) */ -struct _GContentExporterClass -{ - GObjectClass parent; /* A laisser en premier */ - - PangoContext *context; /* Contexte graphique Pango */ - PangoAttrList *attribs[RTT_COUNT]; /* Décorateurs pour tampons */ - -}; - - -/* Ajoute du texte simple à un fichier ouvert en écriture. */ -void g_content_exporter_insert_text(GContentExporter *, FILE *, const char *, size_t, RenderingTagType); - -/* Ajoute du texte à un tampon de code via l'instance spécifiée. */ -void g_content_exporter_insert_into_buffer(GContentExporter *, GBufferLine *, BufferLineColumn, const char *, size_t, RenderingTagType); - - - -#endif /* _ANALYSIS_EXPORTER_INT_H */ diff --git a/src/analysis/exporter.c b/src/analysis/exporter.c deleted file mode 100644 index 40e9fe1..0000000 --- a/src/analysis/exporter.c +++ /dev/null @@ -1,281 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * exporter.c - traduction humaine des lignes de rendus - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "exporter.h" - - -#include "exporter-int.h" - - - -/* Indique le type défini pour une exportation de contenu. */ -G_DEFINE_TYPE(GContentExporter, g_content_exporter, G_TYPE_OBJECT); - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des lignes de représentation. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_content_exporter_class_init(GContentExporterClass *klass) -{ - GdkScreen *screen; /* Ecran pour GDK */ - PangoFontDescription *font_desc; /* Police de caractère */ - PangoAttribute *attrib; /* Propriété de rendu */ - - /* Exportation vers un tampon de code */ - - screen = gdk_screen_get_default(); - - font_desc = pango_font_description_from_string("mono 10"); - - klass->context = gdk_pango_context_get_for_screen(screen); - - pango_context_set_font_description(klass->context, font_desc); - pango_context_set_base_dir(klass->context, PANGO_DIRECTION_LTR); - pango_context_set_language(klass->context, gtk_get_default_language()); - - /* RTT_RAW */ - - klass->attribs[RTT_RAW] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(0, 0, 0); - pango_attr_list_insert(klass->attribs[RTT_RAW], attrib); - - /* RTT_COMMENT */ - - klass->attribs[RTT_COMMENT] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(14335, 45311, 23551); - pango_attr_list_insert(klass->attribs[RTT_COMMENT], attrib); - - /* RTT_RAW_CODE */ - - klass->attribs[RTT_RAW_CODE] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(48895, 48895, 48895); - pango_attr_list_insert(klass->attribs[RTT_RAW_CODE], attrib); - - /* RTT_INSTRUCTION */ - - klass->attribs[RTT_INSTRUCTION] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(0, 0, 0); - pango_attr_list_insert(klass->attribs[RTT_INSTRUCTION], attrib); - - /* RTT_IMMEDIATE */ - - klass->attribs[RTT_IMMEDIATE] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(41215, 8447, 61695); - pango_attr_list_insert(klass->attribs[RTT_IMMEDIATE], attrib); - - /* RTT_REGISTER */ - - klass->attribs[RTT_REGISTER] = pango_attr_list_new(); - - //attrib = pango_attr_foreground_new(23551, 23551, 51455); - attrib = pango_attr_foreground_new(16895, 16895, 53759); - pango_attr_list_insert(klass->attribs[RTT_REGISTER], attrib); - - /* RTT_HOOK */ - - klass->attribs[RTT_HOOK] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(0, 0, 0); - pango_attr_list_insert(klass->attribs[RTT_HOOK], attrib); - - attrib = pango_attr_weight_new(PANGO_WEIGHT_BOLD); - pango_attr_list_insert(klass->attribs[RTT_HOOK], attrib); - - /* RTT_SIGNS */ - - klass->attribs[RTT_SIGNS] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(0, 0, 0); - pango_attr_list_insert(klass->attribs[RTT_SIGNS], attrib); - - attrib = pango_attr_weight_new(PANGO_WEIGHT_SEMIBOLD); - pango_attr_list_insert(klass->attribs[RTT_SIGNS], attrib); - - /* RTT_LTGT */ - - klass->attribs[RTT_LTGT] = pango_attr_list_new(); - - /* RTT_SECTION */ - - klass->attribs[RTT_SECTION] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(51200, 2560, 2560); - pango_attr_list_insert(klass->attribs[RTT_SECTION], attrib); - - /* - attrib = pango_attr_foreground_new(56832, 26880, 43008); - pango_attr_list_insert(klass->attribs[RTT_SECTION], attrib); - - attrib = pango_attr_weight_new(PANGO_WEIGHT_BOLD); - pango_attr_list_insert(klass->attribs[RTT_SECTION], attrib); - */ - - /* RTT_SEGMENT */ - - klass->attribs[RTT_SEGMENT] = pango_attr_list_new(); - - /* RTT_STRING */ - - klass->attribs[RTT_STRING] = pango_attr_list_new(); - - attrib = pango_attr_foreground_new(52224, 32256, 0); - pango_attr_list_insert(klass->attribs[RTT_STRING], attrib); - - /* RTT_VAR_NAME */ - - klass->attribs[RTT_VAR_NAME] = pango_attr_list_new(); - -} - - -/****************************************************************************** -* * -* Paramètres : exporter = instance à initialiser. * -* * -* Description : Initialise une instance de ligne de représentation. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_content_exporter_init(GContentExporter *exporter) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : exporter = instance sachant exporter son contenu. * -* stream = flux ouvert en écriture. * -* text = texte à insérer dans l'existant. * -* length = taille du texte à traiter. * -* tag = type de décorateur à utiliser. * -* * -* Description : Ajoute du texte simple à un fichier ouvert en écriture. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_content_exporter_insert_text(GContentExporter *exporter, FILE *stream, const char *text, size_t length, RenderingTagType tag) -{ - size_t ret; /* Quantité d'octets écrite */ - - ret = fwrite(text, sizeof(char), length, stream); - if (ret != length) perror("fwrite"); - -} - - -/****************************************************************************** -* * -* Paramètres : exporter = instance sachant exporter son contenu. * -* buffer = espace où placer ledit contenu. * -* column = colonne de la ligne visée par l'insertion. * -* text = texte à insérer dans l'existant. * -* length = taille du texte à traiter. * -* type = type de décorateur à utiliser. * -* * -* Description : Ajoute du texte à un tampon de code via l'instance spécifiée.* -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_content_exporter_insert_into_buffer(GContentExporter *exporter, GBufferLine *buffer, BufferLineColumn column, const char *text, size_t length, RenderingTagType type) -{ - GContentExporterClass *class; /* Stockage de briques de base */ - GBufferSegment *segment; /* Portion de texte à ajouter */ - - class = G_CONTENT_EXPORTER_GET_CLASS(exporter); - - segment = g_buffer_segment_new(class->context, class->attribs[type], text, length); - g_buffer_line_add_segment(buffer, column, segment); - -} - - -/****************************************************************************** -* * -* Paramètres : exporter = instance sachant exporter son contenu. * -* options = options de rendu. * -* rendering = support effectif final des lignes de code. * -* stream = flux ouvert en écriture. * -* * -* Description : Ajoute du texte simple à un fichier ouvert en écriture. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_content_exporter_add_text(GContentExporter *exporter, GRenderingOptions *options, MainRendering rendering, FILE *stream) -{ - if (exporter->add_text != NULL) - exporter->add_text(exporter, options, rendering, stream); - -} - - -/****************************************************************************** -* * -* Paramètres : exporter = instance sachant exporter son contenu. * -* line = espace où placer ledit contenu. * -* options = options de rendu. * -* * -* Description : Ajoute à un tampon GLib le contenu de l'instance spécifiée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_content_exporter_to_buffer(GContentExporter *exporter, GBufferLine *line, GRenderingOptions *options) -{ - if (exporter->export_buffer != NULL) - exporter->export_buffer(exporter, line, options); - -} diff --git a/src/analysis/exporter.h b/src/analysis/exporter.h deleted file mode 100644 index 1c87c2d..0000000 --- a/src/analysis/exporter.h +++ /dev/null @@ -1,70 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * exporter.h - prototypes pour la traduction humaine des lignes de rendus - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef _ANALYSIS_EXPORTER_H -#define _ANALYSIS_EXPORTER_H - - -#include <glib-object.h> -#include <stdio.h> -#include <gtk/gtktextbuffer.h> - - -#include "roptions.h" -#include "../glibext/gbufferline.h" - - - -#define G_TYPE_CONTENT_EXPORTER g_content_exporter_get_type() -#define G_CONTENT_EXPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_content_exporter_get_type(), GContentExporter)) -#define G_IS_CONTENT_EXPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_content_exporter_get_type())) -#define G_CONTENT_EXPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_CONTENT_EXPORTER, GContentExporterClass)) -#define G_IS_CONTENT_EXPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_CONTENT_EXPORTER)) -#define G_CONTENT_EXPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_CONTENT_EXPORTER, GContentExporterClass)) - - -/* Exportation de contenu (instance) */ -typedef struct _GContentExporter GContentExporter; - -/* Exportation de contenu (classe) */ -typedef struct _GContentExporterClass GContentExporterClass; - - - -/* Indique le type défini pour une exportation de contenu. */ -GType g_content_exporter_get_type(void); - -/* Définit et/ou renvoie le singleton pour les marques de texte. */ -GtkTextTagTable *_get_gtk_tag_table(GtkTextTagTable *); - -#define get_gtk_tag_table() _get_gtk_tag_table(NULL) - -/* Ajoute du texte simple à un fichier ouvert en écriture. */ -void g_content_exporter_add_text(GContentExporter *, GRenderingOptions *, MainRendering, FILE *); - -/* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */ -void g_content_exporter_to_buffer(GContentExporter *, GBufferLine *, GRenderingOptions *); - - - -#endif /* _ANALYSIS_EXPORTER_H */ diff --git a/src/analysis/line-int.h b/src/analysis/line-int.h deleted file mode 100644 index 5027a1a..0000000 --- a/src/analysis/line-int.h +++ /dev/null @@ -1,86 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line-int.h - prototypes pour l'interface des représentations des lignes de rendu - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef _ANALYSIS_LINE_INT_H -#define _ANALYSIS_LINE_INT_H - - -#include "line.h" - - -#include "exporter-int.h" -#include "../common/dllist.h" - - - -/* Ligne de représentation générique (instance) */ -struct _GRenderingLine -{ - GContentExporter parent; /* A laisser en premier */ - - DL_LIST_ITEM(link); /* Maillon de liste chaînée */ - - vmpa_t offset; /* Position en mémoire/physique*/ - off_t length; /* Nombre d'adresses associées */ - - char *comment; /* Texte à afficher */ - - RenderingLineType type; /* Type de représentation */ - RenderingLineFlag flags; /* Extension d'informations */ - - GRenderingLine **from; /* Origines des références */ - size_t from_count; /* Nombre de ces origines */ - GRenderingLine **to; /* Eventuelles lignes visées */ - InstructionLinkType *links_type; /* Type des liens de dest. */ - size_t to_count; /* Nombre de ces destinations */ - -}; - - -#define lines_list_last(head) dl_list_last(head, GRenderingLine, link) -#define lines_list_next_iter(iter, head) dl_list_next_iter(iter, head, GRenderingLine, link) -#define lines_list_prev_iter(iter, head) dl_list_prev_iter(iter, head, GRenderingLine, link) -#define lines_list_add_before(new, head, pos) dl_list_add_before(new, head, pos, link) -#define lines_list_add_tail(new, head) dl_list_add_tail(new, head, GRenderingLine, link) -#define lines_list_del(item, head) dl_list_del(item, head, GRenderingLine, link) -#define lines_list_merge(head1, head2) dl_list_merge(head1, head2, GRenderingLine, link) -#define lines_list_for_each(pos, head) dl_list_for_each(pos, head, GRenderingLine, link) -#define lines_list_for_each_safe(pos, head, next) dl_list_for_each_safe(pos, head, next, GRenderingLine, link) - - -/* Ligne de représentation générique (classe) */ -struct _GRenderingLineClass -{ - GContentExporterClass parent; /* A laisser en premier */ - - GtkStyle *style; /* Style GTK commun aux lignes */ - - /* Signaux */ - - void (* rendering_line_flags_changed) (GRenderingLine *); - -}; - - - -#endif /* _ANALYSIS_LINE_INT_H */ diff --git a/src/analysis/line.c b/src/analysis/line.c deleted file mode 100644 index 560b683..0000000 --- a/src/analysis/line.c +++ /dev/null @@ -1,717 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line.c - représentation des lignes de rendu - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "line.h" - - -#include "line-int.h" - - - -#include <malloc.h> -#include <stdio.h> -#include <string.h> -#include <sys/param.h> - - -#include "line_code.h" -#include "../common/dllist.h" - - - -/* ------------------------ TRAITEMENT INDIVIDUEL DES LIGNES ------------------------ */ - - -/* Initialise la classe des lignes de représentation. */ -static void g_rendering_line_class_init(GRenderingLineClass *); - -/* Initialise une instance de ligne de représentation. */ -static void g_rendering_line_init(GRenderingLine *); - -/* Etablit un lien entre deux lignes de représentation. */ -static void g_rendering_line_add_link_reference(GRenderingLine *, GRenderingLine *); - - - -/* ---------------------------------------------------------------------------------- */ -/* TRAITEMENT INDIVIDUEL DES LIGNES */ -/* ---------------------------------------------------------------------------------- */ - - -/* Indique le type définit pour une ligne de représentation. */ -G_DEFINE_TYPE(GRenderingLine, g_rendering_line, G_TYPE_CONTENT_EXPORTER); - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des lignes de représentation. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_rendering_line_class_init(GRenderingLineClass *klass) -{ - klass->style = gtk_style_new(); - - g_signal_new("rendering-line-flags-changed", - G_TYPE_RENDERING_LINE, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(GRenderingLineClass, rendering_line_flags_changed), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0, NULL); - -} - - -/****************************************************************************** -* * -* Paramètres : line = instance à initialiser. * -* * -* Description : Initialise une instance de ligne de représentation. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_rendering_line_init(GRenderingLine *line) -{ - DL_LIST_ITEM_INIT(&line->link); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* * -* Description : Fournit l'adresse physique ou en mémoire d'une ligne. * -* * -* Retour : Position physique ou en mémoire associée à la ligne. * -* * -* Remarques : - * -* * -******************************************************************************/ - -vmpa_t get_rendering_line_address(const GRenderingLine *line) -{ - return line->offset; - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* * -* Description : Fournit la longueur du code représenté par une ligne. * -* * -* Retour : Taille du code représenté (0 si aucun). * -* * -* Remarques : - * -* * -******************************************************************************/ - -off_t get_rendering_line_length(const GRenderingLine *line) -{ - return line->length; - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* * -* Description : Fournit le commentaire associé à la ligne s'il existe. * -* * -* Retour : Chaîne de caractères ou NULL. * -* * -* Remarques : - * -* * -******************************************************************************/ - -const char *get_rendering_line_comment(const GRenderingLine *line) -{ - return line->comment; - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* comment = nouveau commentaire à insérer ou NULL. * -* * -* Description : Définit ou supprime un commentaire pour la ligne indiquée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void set_rendering_line_comment(GRenderingLine *line, const char *comment) -{ - if (line->comment != NULL) - free(line->comment); - - if (comment == NULL) line->comment = NULL; - else line->comment = strdup(comment); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* * -* Description : Fournit le type d'une ligne. * -* * -* Retour : Type de la ligne fournie. * -* * -* Remarques : - * -* * -******************************************************************************/ - -RenderingLineType get_rendering_line_type(const GRenderingLine *line) -{ - return line->type; - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à mettre à jour. * -* flag = extension d'information à ajouter. * -* * -* Description : Ajoute une information supplémentaire à une ligne. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_add_flag(GRenderingLine *line, RenderingLineFlag flag) -{ - line->flags |= flag; - - g_signal_emit_by_name(line, "rendering-line-flags-changed"); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à mettre à jour. * -* flag = extension d'information à retirer. * -* * -* Description : Retire une information supplémentaire sur d'une ligne. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_remove_flag(GRenderingLine *line, RenderingLineFlag flag) -{ - line->flags &= ~flag; - - g_signal_emit_by_name(line, "rendering-line-flags-changed"); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à mettre à jour. * -* flag = extension d'information à ajouter ou retirer. * -* * -* Description : Bascule l'état d'une information sur d'une ligne. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_toggle_flag(GRenderingLine *line, RenderingLineFlag flag) -{ - line->flags = (line->flags & ~flag) | (line->flags ^ flag); - - g_signal_emit_by_name(line, "rendering-line-flags-changed"); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* * -* Description : Fournit les informations supplémentaires d'une ligne. * -* * -* Retour : Extensions d'informations courantes. * -* * -* Remarques : - * -* * -******************************************************************************/ - -RenderingLineFlag g_rendering_line_get_flags(const GRenderingLine *line) -{ - return line->flags; - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* src = ligne visée par la liaison (côté origine). * -* * -* Description : Etablit un lien entre deux lignes de représentation. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_add_link_reference(GRenderingLine *line, GRenderingLine *src) -{ - line->from = (GRenderingLine **)realloc(line->from, ++line->from_count * sizeof(GRenderingLine *)); - - line->from[line->from_count - 1] = src; - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* dest = ligne visée par la liaison (côté destination). * -* type = type de lien à construire. * -* * -* Description : Etablit un lien entre deux lignes de représentation. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_link_with(GRenderingLine *line, GRenderingLine *dest, InstructionLinkType type) -{ - g_rendering_line_add_link_reference(dest, line); - - line->to_count++; - - line->to = (GRenderingLine **)realloc(line->to, line->to_count * sizeof(GRenderingLine *)); - line->links_type = (InstructionLinkType *)realloc(line->links_type, line->to_count * sizeof(InstructionLinkType)); - - line->to[line->to_count - 1] = dest; - line->links_type[line->to_count - 1] = type; - - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* * -* Description : Indique si la ligne a une ou plusieurs origines. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool g_rendering_line_has_sources(const GRenderingLine *line) -{ - return (line->from_count > 0); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* * -* Description : Indique si la ligne a une suite autre que la ligne suivante. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool g_rendering_line_has_destinations(const GRenderingLine *line) -{ - return (line->to_count > 1 || (line->to_count == 1 && line->links_type[0] != ILT_CALL)); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne dont les informations sont à consulter. * -* lines = liste des lignes de destination. [OUT] * -* types = liste des types de liens présents. [OUT] * -* * -* Description : Fournit la ligne de code de destination du lien de la ligne. * -* * -* Retour : Ligne à l'autre extrémité du lien. * -* * -* Remarques : - * -* * -******************************************************************************/ - -size_t g_rendering_line_get_destinations(const GRenderingLine *line, GRenderingLine ***lines, InstructionLinkType **types) -{ - *lines = line->to; - *types = line->links_type; - - return line->to_count; - -} - - - -/* ---------------------------------------------------------------------------------- */ -/* TRAITEMENT DES LIGNES PAR GROUPE */ -/* ---------------------------------------------------------------------------------- */ - - -/****************************************************************************** -* * -* Paramètres : lines = liste de lignes à compléter, ou NULL. * -* line = nouvelle ligne à intégrer à l'ensemble. * -* * -* Description : Ajoute une ligne à un ensemble existant. * -* * -* Retour : - * -* * -* Remarques : La ligne est considérée comme étant insérée au bon endroit. * -* * -******************************************************************************/ - -void g_rendering_line_add_to_lines(GRenderingLine **lines, GRenderingLine *line) -{ - lines_list_add_tail(line, lines); - -} - - -/****************************************************************************** -* * -* Paramètres : lines = liste de lignes à compléter, ou NULL. * -* line = nouvelle ligne à intégrer à l'ensemble. * -* first = position de la ligne en cas d'adresse partagée. * -* * -* Description : Insère une ligne dans un ensemble existant. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_insert_into_lines(GRenderingLine **lines, GRenderingLine *line, bool first) -{ - GRenderingLine *iter; /* Boucle de parcours */ - - lines_list_for_each(iter, *lines) - { - if (first && iter->offset >= line->offset) break; - else if (!first) - { - /* TODO */; - } - - } - - if (iter == NULL) - lines_list_add_tail(line, lines); - - else - { - if (first) - lines_list_add_before(line, lines, iter); - else - /* TODO */; - } - -} - - -/****************************************************************************** -* * -* Paramètres : lines = liste de lignes à compléter, ou NULL. * -* new = nouvelles lignes à intégrer à l'ensemble. * -* * -* Description : Insère des lignes dans un ensemble existant. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_insert_lines(GRenderingLine **lines, GRenderingLine **new) -{ - GRenderingLine *iter; /* Boucle de parcours */ - GRenderingLine *next; /* Ligne suivante à traiter */ - - lines_list_for_each_safe(iter, new, next) - { - lines_list_del(iter, new); - g_rendering_line_insert_into_lines(lines, iter, true); - } - -} - - -/****************************************************************************** -* * -* Paramètres : lines = liste de lignes à traiter. * -* start = borne inférieure de l'intervalle (incluse). * -* end = borne supérieure de l'intervalle (incluse). * -* * -* Description : Supprime une série de lignes comprises dans un intervalle. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_remove_range(GRenderingLine **lines, vmpa_t start, vmpa_t end) -{ - GRenderingLine *first; /* Première ligne à traiter */ - GRenderingLine *last; /* Dernière ligne à traiter */ - GRenderingLine *iter; /* Boucle de parcours */ - GRenderingLine *next; /* Ligne suivante à traiter */ - - first = g_rendering_line_find_by_address(*lines, NULL, start); - last = g_rendering_line_find_by_address(*lines, NULL, end); - - for (iter = first; iter != NULL; iter = next) - { - next = g_rendering_line_get_next_iter(*lines, iter, last); - - lines_list_del(iter, lines); - g_object_unref(G_OBJECT(iter)); - - } - -} - - -/****************************************************************************** -* * -* Paramètres : lines1 = première liste à fusionner. * -* lines2 = seconde liste à intégrer à la première. * -* * -* Description : Fusionne deux listes de lignes de rendu. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_rendering_line_merge(GRenderingLine **lines1, GRenderingLine **lines2) -{ - lines_list_merge(lines1, lines2); - -} - - -/****************************************************************************** -* * -* Paramètres : lines = liste de lignes de représentation à actualiser. * -* : iter = position actuelle dans la liste. * -* last = dernière élément imposé du parcours ou NULL. * -* * -* Description : Fournit l'élement suivant un autre pour un parcours. * -* * -* Retour : Elément suivant ou NULL si aucun. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GRenderingLine *g_rendering_line_get_next_iter(GRenderingLine *lines, const GRenderingLine *iter, const GRenderingLine *last) -{ - GRenderingLine *result; /* Elément suivant à renvoyer */ - - if (iter == NULL) iter = lines; - - if (iter == last) result = NULL; - else result = lines_list_next_iter(iter, lines); - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : lines = liste de lignes de représentation à actualiser. * -* : iter = position actuelle dans la liste. * -* last = dernière élément imposé du parcours ou NULL. * -* * -* Description : Fournit l'élement précédant un autre pour un parcours. * -* * -* Retour : Elément suivant ou NULL si aucun. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GRenderingLine *g_rendering_line_get_prev_iter(GRenderingLine *lines, const GRenderingLine *iter, const GRenderingLine *last) -{ - GRenderingLine *result; /* Elément suivant à renvoyer */ - - if (iter == NULL) - { - if (last != NULL) iter = last; - else iter = lines_list_last(lines); - } - - if (iter == lines) result = NULL; - else result = lines_list_prev_iter(iter, lines); - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : lines = liste de lignes de représentation à actualiser. * -* last = dernière élément imposé du parcours ou NULL. * -* * -* Description : Fournit le dernier élément d'une liste de lignes. * -* * -* Retour : Dernier élément de la liste. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GRenderingLine *g_rendering_line_get_last_iter(GRenderingLine *lines, GRenderingLine *last) -{ - return (last != NULL ? last : lines_list_last(lines)); - -} - - -/****************************************************************************** -* * -* Paramètres : lines = liste de lignes à parcourir. * -* last = dernière élément imposé du parcours ou NULL. * -* addr = position en mémoire ou physique à chercher. * -* * -* Description : Recherche une ligne d'après sa position en mémoire/physique. * -* * -* Retour : Ligne représentant l'adresse donnée, NULL si aucune trouvée. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GRenderingLine *g_rendering_line_find_by_address(GRenderingLine *lines, const GRenderingLine *last, vmpa_t addr) -{ - GRenderingLine *result; /* Trouvaille à retourner */ - - lines_list_for_each(result, lines) - { - if (result->offset <= addr && addr < (result->offset + result->length)) break; - - if (result == last) - { - result = NULL; - break; - } - - } - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : start = première ligne de l'ensemble à parcourir. * -* last = dernière élément imposé du parcours ou NULL. * -* * -* Description : Donne la première ligne de code correspondant à une adresse. * -* * -* Retour : Ligne de code pour l'adresse donnée, NULL si aucune trouvée. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GRenderingLine *g_rendering_line_loop_for_code(GRenderingLine *start, const GRenderingLine *last) -{ - GRenderingLine *result; /* Trouvaille à retourner */ - vmpa_t reference; /* Adresse à conserver */ - - result = start; - reference = start->offset; - - lines_list_for_each(result, start) - { - if (G_IS_CODE_LINE(result)) break; - - if (result->offset != reference) - { - result = NULL; - break; - } - - if (result == last) - { - result = NULL; - break; - } - - } - - return result; - -} diff --git a/src/analysis/line.h b/src/analysis/line.h deleted file mode 100644 index 39b3f24..0000000 --- a/src/analysis/line.h +++ /dev/null @@ -1,151 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line.h - prototypes pour la représentation des lignes de rendu - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef _ANALYSIS_LINE_H -#define _ANALYSIS_LINE_H - - -#include <gtk/gtk.h> - - -#include "roptions.h" - - - -/* ------------------------ TRAITEMENT INDIVIDUEL DES LIGNES ------------------------ */ - - -/* Définitions des types de ligne */ -typedef enum _RenderingLineType -{ - RLT_PROLOGUE, /* Description de l'analyse */ - RLT_PROTOTYPE, /* Prototype de fonction */ - RLT_CODE /* Code en langage machine */ - -} RenderingLineType; - -/* Image à afficher en marge de ligne */ -typedef enum _RenderingLineFlag -{ - RLF_NONE = (0 << 0), /* Ligne commune */ - RLF_ENTRY_POINT = (1 << 0), /* Point d'entrée du prgm. */ - RLF_BREAK_POINT = (1 << 1), /* Point d'arrêt */ - RLF_RUNNING_BP = (1 << 2) /* Point d'arrêt activé */ - -} RenderingLineFlag; - - -#define G_TYPE_RENDERING_LINE g_rendering_line_get_type() -#define G_RENDERING_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_rendering_line_get_type(), GRenderingLine)) -#define G_IS_RENDERING_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_rendering_line_get_type())) -#define G_RENDERING_LINE_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_rendering_line_get_type(), GRenderingLineIface)) -#define G_RENDERING_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_RENDERING_LINE, GRenderingLineClass)) - - -/* Ligne de représentation générique (instance) */ -typedef struct _GRenderingLine GRenderingLine; - -/* Ligne de représentation générique (classe) */ -typedef struct _GRenderingLineClass GRenderingLineClass; - - -/* Indique le type définit pour une ligne de représentation. */ -GType g_rendering_line_get_type(void); - -/* Fournit l'adresse physique ou en mémoire d'une ligne. */ -vmpa_t get_rendering_line_address(const GRenderingLine *); - -/* Fournit la longueur du code représenté par une ligne. */ -off_t get_rendering_line_length(const GRenderingLine *); - -/* Fournit le commentaire associé à la ligne s'il existe. */ -const char *get_rendering_line_comment(const GRenderingLine *); - -/* Définit ou supprime un commentaire pour la ligne indiquée. */ -void set_rendering_line_comment(GRenderingLine *, const char *); - -/* Fournit le type d'une ligne. */ -RenderingLineType get_rendering_line_type(const GRenderingLine *); - -/* Ajoute une information supplémentaire à une ligne. */ -void g_rendering_line_add_flag(GRenderingLine *, RenderingLineFlag); - -/* Retire une information supplémentaire d'une ligne. */ -void g_rendering_line_remove_flag(GRenderingLine *, RenderingLineFlag); - -/* Bascule l'état d'une information sur d'une ligne. */ -void g_rendering_line_toggle_flag(GRenderingLine *, RenderingLineFlag); - -/* Fournit les informations supplémentaires d'une ligne. */ -RenderingLineFlag g_rendering_line_get_flags(const GRenderingLine *); - -/* Etablit un lien entre deux lignes de représentation. */ -void g_rendering_line_link_with(GRenderingLine *, GRenderingLine *, InstructionLinkType); - -/* Indique si la ligne a une ou plusieurs origines. */ -bool g_rendering_line_has_sources(const GRenderingLine *); - -/* Indique si la ligne a une suite autre que la ligne suivante. */ -bool g_rendering_line_has_destinations(const GRenderingLine *); - -/* Fournit la ligne de code de destination du lien de la ligne. */ -size_t g_rendering_line_get_destinations(const GRenderingLine *, GRenderingLine ***, InstructionLinkType **); - - - -/* ------------------------ TRAITEMENT DES LIGNES PAR GROUPE ------------------------ */ - - -/* Ajoute une ligne à un ensemble existant. */ -void g_rendering_line_add_to_lines(GRenderingLine **, GRenderingLine *); - -/* Insère une ligne dans un ensemble existant. */ -void g_rendering_line_insert_into_lines(GRenderingLine **, GRenderingLine *, bool); - -/* Insère des lignes dans un ensemble existant. */ -void g_rendering_line_insert_lines(GRenderingLine **, GRenderingLine **); - -/* Supprime une série de lignes comprises dans un intervalle. */ -void g_rendering_line_remove_range(GRenderingLine **, vmpa_t, vmpa_t); - -/* Fusionne deux listes de lignes de rendu. */ -void g_rendering_line_merge(GRenderingLine **, GRenderingLine **); - -/* Fournit l'élement suivant un autre pour un parcours. */ -GRenderingLine *g_rendering_line_get_next_iter(GRenderingLine *, const GRenderingLine *, const GRenderingLine *); - -/* Fournit l'élement précédant un autre pour un parcours. */ -GRenderingLine *g_rendering_line_get_prev_iter(GRenderingLine *, const GRenderingLine *, const GRenderingLine *); - -/* Fournit le dernier élément d'une liste de lignes. */ -GRenderingLine *g_rendering_line_get_last_iter(GRenderingLine *, GRenderingLine *); - -/* Recherche une ligne d'après sa position en mémoire/physique. */ -GRenderingLine *g_rendering_line_find_by_address(GRenderingLine *, const GRenderingLine *, vmpa_t); - -/* Donne la première ligne de code correspondant à une adresse. */ -GRenderingLine *g_rendering_line_loop_for_code(GRenderingLine *, const GRenderingLine *); - - - -#endif /* _ANALYSIS_LINE_H */ diff --git a/src/analysis/line_code.c b/src/analysis/line_code.c deleted file mode 100644 index 6a1ed51..0000000 --- a/src/analysis/line_code.c +++ /dev/null @@ -1,334 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line_code.c - représentation des lignes de code binaire. - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "line_code.h" - - -#include <malloc.h> -#include <string.h> - - -#include "line-int.h" -#include "../format/format.h" - - - -/* Ligne de représentation de code binaire (instance) */ -struct _GCodeLine -{ - GRenderingLine parent; /* Instance parente */ - - GArchInstruction *instr; /* Instruction représentée */ - const GRenderingOptions *options; /* Options de représentation */ - -}; - - -/* Ligne de représentation de code binaire (classe) */ -struct _GCodeLineClass -{ - GRenderingLineClass parent; /* Classe parente */ - -}; - - -/* Initialise la classe des lignes de code binaire. */ -static void g_code_line_class_init(GCodeLineClass *); - -/* Initialise la classe des lignes de code binaire. */ -static void g_code_line_init(GCodeLine *); - -/* Ajoute du texte simple à un fichier ouvert en écriture. */ -static void g_code_line_add_text(GCodeLine *, GRenderingOptions *, MainRendering, FILE *); - -/* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */ -static void g_code_line_to_buffer(GCodeLine *, GBufferLine *, GRenderingOptions *); - - - -/* Indique le type définit par la GLib pour la ligne. */ -G_DEFINE_TYPE(GCodeLine, g_code_line, G_TYPE_RENDERING_LINE); - - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des lignes de code binaire. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_code_line_class_init(GCodeLineClass *klass) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : line = instance à initialiser. * -* * -* Description : Initialise la classe des lignes de code binaire. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_code_line_init(GCodeLine *line) -{ - GContentExporter *exporter_parent; /* Instance parente #1 */ - GRenderingLine *line_parent; /* Instance parente #2 */ - - exporter_parent = G_CONTENT_EXPORTER(line); - - exporter_parent->add_text = (add_text_fc)g_code_line_add_text; - exporter_parent->export_buffer = (export_buffer_fc)g_code_line_to_buffer; - - line_parent = G_RENDERING_LINE(line); - - line_parent->type = RLT_CODE; - -} - - - -/****************************************************************************** -* * -* Paramètres : line = ligne de représentation à représenter. * -* options = options de rendu. * -* rendering = support effectif final des lignes de code. * -* stream = flux ouvert en écriture. * -* * -* Description : Ajoute du texte simple à un fichier ouvert en écriture. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_code_line_add_text(GCodeLine *line, GRenderingOptions *options, MainRendering rendering, FILE *stream) -{ - GContentExporter *exporter; /* Autre vision de la ligne #1 */ - GRenderingLine *basic; /* Autre vision de la ligne #2 */ - bool show_address; /* Affichage de l'adresse ? */ - bool show_code; /* Affichage du code brut ? */ - MemoryDataSize msize; /* Taille du bus d'adresses */ - char address[VMPA_MAX_SIZE]; /* Adresse au format texte */ - size_t len; /* Taille de l'élément inséré */ - const bin_t *content; /* Contenu binaire global */ - off_t bin_offset; /* Début de l'instruction */ - off_t bin_len; /* Taille d'instruction */ - char *bin_code; /* Tampon du code binaire */ - off_t i; /* Boucle de parcours */ - - exporter = G_CONTENT_EXPORTER(line); - basic = G_RENDERING_LINE(line); - - show_address = g_rendering_options_has_to_show_address(options, rendering); - show_code = g_rendering_options_has_to_show_code(options, rendering); - - /* Eventuelle adresse virtuelle ou physique */ - - if (show_address) - { - msize = g_arch_processor_get_memory_size(g_rendering_options_get_processor(options)); - - len = vmpa_to_string(G_RENDERING_LINE(line)->offset, msize, address); - - g_content_exporter_insert_text(exporter, stream, address, len, RTT_NONE); - g_content_exporter_insert_text(exporter, stream, "\t", 1, RTT_NONE); - - } - - /* Eventuel code brut */ - - if (show_code) - { - content = g_binary_format_get_content(G_BIN_FORMAT(g_rendering_options_get_format(options)), NULL); - g_arch_instruction_get_location(line->instr, &bin_offset, &bin_len, NULL); - - bin_code = (char *)calloc(bin_len * 3, sizeof(char)); - - for (i = 0; i < bin_len; i++) - { - if ((i + 1) < bin_len) - snprintf(&bin_code[i * (2 + 1)], 4, "%02hhx ", content[bin_offset + i]); - else - snprintf(&bin_code[i * (2 + 1)], 3, "%02hhx", content[bin_offset + i]); - } - - g_content_exporter_insert_text(exporter, stream, bin_code, bin_len * 3 - 1, RTT_RAW_CODE); - - free(bin_code); - - g_content_exporter_insert_text(exporter, stream, "\t", 1, RTT_NONE); - - } - - /* Instruction proprement dite */ - - g_content_exporter_add_text(G_CONTENT_EXPORTER(line->instr), options, rendering, stream); - - /* Commentaire ? */ - - if (basic->comment != NULL) - { - g_content_exporter_insert_text(exporter, stream, "\t", 1, RTT_NONE); - g_content_exporter_insert_text(exporter, stream, "; ", 2, RTT_COMMENT); - g_content_exporter_insert_text(exporter, stream, basic->comment, - strlen(basic->comment), RTT_COMMENT); - } - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne de représentation à représenter. * -* buffer = espace où placer ledit contenu. * -* options = options de rendu. * -* * -* Description : Ajoute à un tampon GLib le contenu de l'instance spécifiée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_code_line_to_buffer(GCodeLine *line, GBufferLine *buffer, GRenderingOptions *options) -{ - GContentExporter *exporter; /* Autre vision de la ligne #1 */ - GRenderingLine *basic; /* Autre vision de la ligne #2 */ - MemoryDataSize msize; /* Taille du bus d'adresses */ - char address[VMPA_MAX_SIZE]; /* Adresse au format texte */ - size_t len; /* Taille de l'élément inséré */ - const bin_t *content; /* Contenu binaire global */ - off_t bin_offset; /* Début de l'instruction */ - off_t bin_len; /* Taille d'instruction */ - char *bin_code; /* Tampon du code binaire */ - off_t i; /* Boucle de parcours */ - - exporter = G_CONTENT_EXPORTER(line); - basic = G_RENDERING_LINE(line); - - /* Eventuelle adresse virtuelle ou physique */ - - msize = g_arch_processor_get_memory_size(g_rendering_options_get_processor(line->options)); - - len = vmpa_to_string(G_RENDERING_LINE(line)->offset, msize, address); - - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_ADDRESS, address, len, RTT_RAW); - - /* Eventuel code brut */ - - content = g_binary_format_get_content(G_BIN_FORMAT(g_rendering_options_get_format(line->options)), NULL); - g_arch_instruction_get_location(line->instr, &bin_offset, &bin_len, NULL); - - bin_code = (char *)calloc(bin_len * 3, sizeof(char)); - - for (i = 0; i < bin_len; i++) - { - if ((i + 1) < bin_len) - snprintf(&bin_code[i * (2 + 1)], 4, "%02hhx ", content[bin_offset + i]); - else - snprintf(&bin_code[i * (2 + 1)], 3, "%02hhx", content[bin_offset + i]); - } - - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_BINARY, - bin_code, bin_len * 3 - 1, RTT_RAW_CODE); - - free(bin_code); - - /* Instruction proprement dite */ - - g_content_exporter_to_buffer(G_CONTENT_EXPORTER(line->instr), buffer, options); - - /* Commentaire ? */ - - if (basic->comment != NULL) - { - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_COMMENTS, "; ", 2, RTT_COMMENT); - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_COMMENTS, - basic->comment, strlen(basic->comment), RTT_COMMENT); - } - -} - - -/****************************************************************************** -* * -* Paramètres : offset = emplacement physique ou en mémoire. * -* instr = instruction à représenter. * -* options = paramétrage du rendu. * -* * -* Description : Crée une ligne de code binaire. * -* * -* Retour : Adresse de la structure mise en place. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GRenderingLine *g_code_line_new(uint64_t offset, GArchInstruction *instr, const GRenderingOptions *options) -{ - GCodeLine *result; /* Structure à retourner */ - - result = g_object_new(G_TYPE_CODE_LINE, NULL); - - G_RENDERING_LINE(result)->offset = offset; - g_arch_instruction_get_location(instr, NULL, &G_RENDERING_LINE(result)->length, NULL); - - result->instr = instr; - result->options = options; - - return G_RENDERING_LINE(result); - -} - - -/****************************************************************************** -* * -* Paramètres : line = line de rendu à consulter. * -* * -* Description : Fournit l'instruction associée à la ligne de code binaire. * -* * -* Retour : Adresse de l'instruction associée. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GArchInstruction *g_code_line_get_instruction(const GCodeLine *line) -{ - return line->instr; - -} diff --git a/src/analysis/line_code.h b/src/analysis/line_code.h deleted file mode 100644 index 326d183..0000000 --- a/src/analysis/line_code.h +++ /dev/null @@ -1,62 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line_code.h - prototypes pour la représentation de code binaire - * - * Copyright (C) 2009 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef _ANALYSIS_LINE_CODE_H -#define _ANALYSIS_LINE_CODE_H - - -#include <glib-object.h> - - -#include "line.h" -#include "../arch/processor.h" - - - -#define G_TYPE_CODE_LINE (g_code_line_get_type()) -#define G_CODE_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_CODE_LINE, GCodeLine)) -#define G_IS_CODE_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_CODE_LINE)) -#define G_CODE_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_CODE_LINE, GCodeLineClass)) -#define G_IS_CODE_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_CODE_LINE)) -#define G_CODE_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_CODE_LINE, GCodeLineClass)) - - -/* Ligne de représentation de code binaire (instance) */ -typedef struct _GCodeLine GCodeLine; - -/* Ligne de représentation de code binaire (classe) */ -typedef struct _GCodeLineClass GCodeLineClass; - - -/* Indique le type définit par la GLib pour la ligne. */ -GType g_code_line_get_type(void); - -/* Crée une ligne de code binaire. */ -GRenderingLine *g_code_line_new(uint64_t, GArchInstruction *, const GRenderingOptions *); - -/* Fournit l'instruction associée à la ligne de code binaire. */ -GArchInstruction *g_code_line_get_instruction(const GCodeLine *); - - - -#endif /* _ANALYSIS_LINE_CODE_H */ diff --git a/src/analysis/line_comment.c b/src/analysis/line_comment.c deleted file mode 100644 index 2156ce4..0000000 --- a/src/analysis/line_comment.c +++ /dev/null @@ -1,248 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line_comment.c - représentation des lignes commentaires entières - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "line_comment.h" - - -#include <malloc.h> -#include <string.h> - - -#include "line-int.h" - - - -/* Ligne de représentation de commentaires entière (instance) */ -struct _GCommentLine -{ - GRenderingLine parent; /* Instance parente */ - - char *comment; /* Texte à afficher */ - const GRenderingOptions *options; /* Options de représentation */ - -}; - - -/* Ligne de représentation de commentaires entière (classe) */ -struct _GCommentLineClass -{ - GRenderingLineClass parent; /* Classe parente */ - -}; - - -/* Initialise la classe des lignes de commentaires entière. */ -static void g_comment_line_class_init(GCommentLineClass *); - -/* Initialise la classe des lignes de commentaires entière. */ -static void g_comment_line_init(GCommentLine *); - -/* Ajoute du texte simple à un fichier ouvert en écriture. */ -static void g_comment_line_add_text(GCommentLine *, GRenderingOptions *, MainRendering, FILE *); - -/* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */ -static void g_comment_line_to_buffer(GCommentLine *, GBufferLine *, GRenderingOptions *); - - -/* Indique le type définit par la GLib pour la ligne. */ -G_DEFINE_TYPE(GCommentLine, g_comment_line, G_TYPE_RENDERING_LINE); - - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des lignes de commentaires entière. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_comment_line_class_init(GCommentLineClass *klass) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : line = instance à initialiser. * -* * -* Description : Initialise la classe des lignes de commentaires entière. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_comment_line_init(GCommentLine *line) -{ - GContentExporter *exporter_parent; /* Instance parente #1 */ - GRenderingLine *line_parent; /* Instance parente #2 */ - - exporter_parent = G_CONTENT_EXPORTER(line); - - exporter_parent->add_text = (add_text_fc)g_comment_line_add_text; - exporter_parent->export_buffer = (export_buffer_fc)g_comment_line_to_buffer; - - line_parent = G_RENDERING_LINE(line); - - line_parent->type = RLT_PROTOTYPE/* TODO */; - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne de représentation à actualiser. * -* options = options de rendu. * -* rendering = support effectif final des lignes de code. * -* stream = flux ouvert en écriture. * -* * -* Description : Ajoute du texte simple à un fichier ouvert en écriture. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_comment_line_add_text(GCommentLine *line, GRenderingOptions *options, MainRendering rendering, FILE *stream) -{ - GContentExporter *exporter; /* Autre vision de la ligne */ - bool show_address; /* Affichage de l'adresse ? */ - bool show_code; /* Affichage du code brut ? */ - MemoryDataSize msize; /* Taille du bus d'adresses */ - char address[VMPA_MAX_SIZE]; /* Adresse au format texte */ - size_t len; /* Taille de l'élément inséré */ - - exporter = G_CONTENT_EXPORTER(line); - - show_address = g_rendering_options_has_to_show_address(options, rendering); - show_code = g_rendering_options_has_to_show_code(options, rendering); - - /* Eventuelle adresse virtuelle ou physique */ - - if (show_address) - { - msize = g_arch_processor_get_memory_size(g_rendering_options_get_processor(options)); - - len = vmpa_to_string(G_RENDERING_LINE(line)->offset, msize, address); - - g_content_exporter_insert_text(exporter, stream, address, len, RTT_NONE); - g_content_exporter_insert_text(exporter, stream, "\t", 1, RTT_NONE); - - } - - /* Eventuel code brut (sauté) */ - - if (show_code) - g_content_exporter_insert_text(exporter, stream, "\t", 1, RTT_NONE); - - /* Commentaire proprement dit */ - - g_content_exporter_insert_text(exporter, stream, "; ", 2, RTT_COMMENT); - - len = strlen(line->comment); - - g_content_exporter_insert_text(exporter, stream, line->comment, len, RTT_COMMENT); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne de représentation à représenter. * -* buffer = espace où placer ledit contenu. * -* options = options de rendu. * -* * -* Description : Ajoute à un tampon GLib le contenu de l'instance spécifiée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_comment_line_to_buffer(GCommentLine *line, GBufferLine *buffer, GRenderingOptions *options) -{ - GContentExporter *exporter; /* Autre vision de la ligne */ - MemoryDataSize msize; /* Taille du bus d'adresses */ - char address[VMPA_MAX_SIZE]; /* Adresse au format texte */ - size_t len; /* Taille de l'élément inséré */ - - exporter = G_CONTENT_EXPORTER(line); - - g_buffer_line_start_merge_at(buffer, BLC_ASSEMBLY_HEAD); - - /* Eventuelle adresse virtuelle ou physique */ - - msize = g_arch_processor_get_memory_size(g_rendering_options_get_processor(line->options)); - - len = vmpa_to_string(G_RENDERING_LINE(line)->offset, msize, address); - - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_ADDRESS, address, len, RTT_RAW); - - /* Commentaire ? */ - - len = strlen(line->comment); - - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_COMMENTS, "; ", 2, RTT_COMMENT); - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_COMMENTS, - line->comment, len, RTT_COMMENT); - -} - - -/****************************************************************************** -* * -* Paramètres : offset = emplacement physique ou en mémoire. * -* comment = texte à afficher au final. * -* options = paramétrage du rendu. * -* * -* Description : Crée une ligne de commentaires entière. * -* * -* Retour : Adresse de la structure mise en place. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GRenderingLine *g_comment_line_new(uint64_t offset, const char *comment, const GRenderingOptions *options) -{ - GCommentLine *result; /* Structure à retourner */ - - result = g_object_new(G_TYPE_COMMENT_LINE, NULL); - - G_RENDERING_LINE(result)->offset = offset; - - result->comment = strdup(comment); - result->options = options; - - return G_RENDERING_LINE(result); - -} diff --git a/src/analysis/line_comment.h b/src/analysis/line_comment.h deleted file mode 100644 index 20aa16f..0000000 --- a/src/analysis/line_comment.h +++ /dev/null @@ -1,58 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line_comment.h - prototypes pour la représentation des lignes commentaires entières - * - * Copyright (C) 2009 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef _ANALYSIS_LINE_COMMENT_H -#define _ANALYSIS_LINE_COMMENT_H - - -#include <glib-object.h> - - -#include "line.h" - - - -#define G_TYPE_COMMENT_LINE (g_comment_line_get_type()) -#define G_COMMENT_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_COMMENT_LINE, GCommentLine)) -#define G_IS_COMMENT_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_COMMENT_LINE)) -#define G_COMMENT_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_COMMENT_LINE, GCommentLineClass)) -#define G_IS_COMMENT_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_COMMENT_LINE)) -#define G_COMMENT_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_COMMENT_LINE, GCommentLineClass)) - - -/* Ligne de représentation de commentaires entière (instance) */ -typedef struct _GCommentLine GCommentLine; - -/* Ligne de représentation de commentaires entière (classe) */ -typedef struct _GCommentLineClass GCommentLineClass; - - -/* Indique le type définit par la GLib pour la ligne. */ -GType g_comment_line_get_type(void); - -/* Crée une ligne de commentaires entière. */ -GRenderingLine *g_comment_line_new(uint64_t, const char *, const GRenderingOptions *); - - - -#endif /* _ANALYSIS_LINE_COMMENT_H */ diff --git a/src/analysis/line_prologue.c b/src/analysis/line_prologue.c deleted file mode 100644 index 508ddfc..0000000 --- a/src/analysis/line_prologue.c +++ /dev/null @@ -1,202 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line_prologue.c - représentation des lignes d'en-tête de désassemblage - * - * Copyright (C) 2009-2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "line_prologue.h" - - -#include <malloc.h> -#include <string.h> - - -#include "line-int.h" - - - -/* Ligne de représentation de descriptions initiales (instance) */ -struct _GPrologueLine -{ - GRenderingLine parent; /* Instance parente */ - - char *comment; /* Texte à afficher */ - -}; - - -/* Ligne de représentation de descriptions initiales (classe) */ -struct _GPrologueLineClass -{ - GRenderingLineClass parent; /* Classe parente */ - -}; - - -/* Initialise la classe des lignes de descriptions initiales. */ -static void g_prologue_line_class_init(GPrologueLineClass *); - -/* Initialise la classe des lignes de descriptions initiales. */ -static void g_prologue_line_init(GPrologueLine *); - -/* Ajoute du texte simple à un fichier ouvert en écriture. */ -static void g_prologue_line_add_text(GPrologueLine *, GRenderingOptions *, MainRendering, FILE *); - -/* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */ -static void g_prologue_line_to_buffer(GPrologueLine *, GBufferLine *, GRenderingOptions *); - - -/* Indique le type définit par la GLib pour la ligne. */ -G_DEFINE_TYPE(GPrologueLine, g_prologue_line, G_TYPE_RENDERING_LINE); - - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des lignes de descriptions initiales. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_prologue_line_class_init(GPrologueLineClass *klass) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : line = instance à initialiser. * -* * -* Description : Initialise la classe des lignes de descriptions initiales. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_prologue_line_init(GPrologueLine *line) -{ - GContentExporter *exporter_parent; /* Instance parente #1 */ - GRenderingLine *line_parent; /* Instance parente #2 */ - - exporter_parent = G_CONTENT_EXPORTER(line); - - exporter_parent->add_text = (add_text_fc)g_prologue_line_add_text; - exporter_parent->export_buffer = (export_buffer_fc)g_prologue_line_to_buffer; - - line_parent = G_RENDERING_LINE(line); - - line_parent->type = RLT_PROLOGUE; - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne de représentation à actualiser. * -* options = options de rendu. * -* rendering = support effectif final des lignes de code. * -* stream = flux ouvert en écriture. * -* * -* Description : Ajoute du texte simple à un fichier ouvert en écriture. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_prologue_line_add_text(GPrologueLine *line, GRenderingOptions *options, MainRendering rendering, FILE *stream) -{ - GContentExporter *exporter; /* Autre vision de la ligne */ - size_t len; /* Taille de l'élément inséré */ - - exporter = G_CONTENT_EXPORTER(line); - - len = strlen(line->comment); - - g_content_exporter_insert_text(exporter, stream, "; ", 2, RTT_COMMENT); - g_content_exporter_insert_text(exporter, stream, line->comment, len, RTT_COMMENT); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne de représentation à représenter. * -* buffer = espace où placer ledit contenu. * -* options = options de rendu. * -* * -* Description : Ajoute à un tampon GLib le contenu de l'instance spécifiée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_prologue_line_to_buffer(GPrologueLine *line, GBufferLine *buffer, GRenderingOptions *options) -{ - GContentExporter *exporter; /* Autre vision de la ligne */ - size_t len; /* Taille de l'élément inséré */ - - exporter = G_CONTENT_EXPORTER(line); - - g_buffer_line_start_merge_at(buffer, BLC_ADDRESS); - - len = strlen(line->comment); - - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_COMMENTS, "; ", 2, RTT_COMMENT); - g_content_exporter_insert_into_buffer(exporter, buffer, BLC_COMMENTS, - line->comment, len, RTT_COMMENT); - -} - - -/****************************************************************************** -* * -* Paramètres : comment = texte à afficher au final. * -* * -* Description : Crée une des lignes de descriptions initiales. * -* * -* Retour : Adresse de la structure mise en place. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GRenderingLine *g_prologue_line_new(const char *comment) -{ - GPrologueLine *result; /* Structure à retourner */ - - result = g_object_new(G_TYPE_PROLOGUE_LINE, NULL); - - result->comment = strdup(comment); - - return G_RENDERING_LINE(result); - -} diff --git a/src/analysis/line_prologue.h b/src/analysis/line_prologue.h deleted file mode 100644 index c5ebb15..0000000 --- a/src/analysis/line_prologue.h +++ /dev/null @@ -1,60 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * line_prologue.h - prototypes pour la représentation des lignes d'en-tête de désassemblage - * - * Copyright (C) 2009 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef _ANALYSIS_LINE_PROLOGUE_H -#define _ANALYSIS_LINE_PROLOGUE_H - - -#include <glib-object.h> - - -#include "line.h" - - - -#define G_TYPE_PROLOGUE_LINE (g_prologue_line_get_type()) -#define G_PROLOGUE_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_PROLOGUE_LINE, GPrologueLine)) -#define G_IS_PROLOGUE_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_PROLOGUE_LINE)) -#define G_PROLOGUE_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_PROLOGUE_LINE, GPrologueLineClass)) -#define G_IS_PROLOGUE_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_PROLOGUE_LINE)) -#define G_PROLOGUE_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_PROLOGUE_LINE, GPrologueLineClass)) - - - -/* Ligne de représentation de descriptions initiales (instance) */ -typedef struct _GPrologueLine GPrologueLine; - -/* Ligne de représentation de descriptions initiales (classe) */ -typedef struct _GPrologueLineClass GPrologueLineClass; - - - -/* Indique le type définit par la GLib pour la ligne. */ -GType g_prologue_line_get_type(void); - -/* Crée une des lignes de descriptions initiales. */ -GRenderingLine *g_prologue_line_new(const char *); - - - -#endif /* _ANALYSIS_LINE_PROLOGUE_H */ |