diff options
Diffstat (limited to 'plugins/pyoida/debug')
| -rw-r--r-- | plugins/pyoida/debug/Makefile.am | 17 | ||||
| -rw-r--r-- | plugins/pyoida/debug/debugger.c | 275 | ||||
| -rw-r--r-- | plugins/pyoida/debug/debugger.h | 45 | ||||
| -rw-r--r-- | plugins/pyoida/debug/module.c | 66 | ||||
| -rw-r--r-- | plugins/pyoida/debug/module.h | 39 | 
5 files changed, 0 insertions, 442 deletions
| diff --git a/plugins/pyoida/debug/Makefile.am b/plugins/pyoida/debug/Makefile.am deleted file mode 100644 index 4f01701..0000000 --- a/plugins/pyoida/debug/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ - -noinst_LTLIBRARIES = libpyoidadebug.la - -libpyoidadebug_la_SOURCES =			\ -	debugger.h debugger.c			\ -	module.h module.c - - -libpyoidadebug_la_LDFLAGS =  - - -INCLUDES = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_CFLAGS) $(LIBPYGOBJECT_CFLAGS) \ -	-I../../../src - -AM_CPPFLAGS =  - -AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS) diff --git a/plugins/pyoida/debug/debugger.c b/plugins/pyoida/debug/debugger.c deleted file mode 100644 index 3e42ab7..0000000 --- a/plugins/pyoida/debug/debugger.c +++ /dev/null @@ -1,275 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * debugger.c - instances Python de débogueurs - * - * Copyright (C) 2012 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 this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA - */ - - -#include "debugger.h" - - -#include <malloc.h> -#include <pygobject.h> - - -#include "../quirks.h" - - - -/*  Fournit les identifiants de tous les threads actifs. */ -static PyObject *py_binary_debugger_list_all_threads(PyObject *, PyObject *); - -/* Fournit la pile d'exécution courante via un débogueur. */ -static PyObject *py_binary_debugger_get_frames_stack(PyObject *, PyObject *); - - - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : type = type de l'objet à instancier.                         * -*                args = arguments fournis à l'appel.                          * -*                kwds = arguments de type key=val fournis.                    * -*                                                                             * -*  Description : Crée un nouvel objet Python de type 'py_rendering_options'.  * -*                                                                             * -*  Retour      : -                                                            * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -static PyObject *py_binary_debugger_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ -    PyObject *result;                       /* Instance à retourner        */ -    DebuggerType dtype;                     /* Type de débogueur à créer   */ -    int ret;                                /* Bilan de lecture des args.  */ -    GBinaryDebugger *debugger;              /* Version GLib du format      */ - -    ret = PyArg_ParseTuple(args, "l", &dtype); -    if (!ret) return Py_None; - -    debugger = g_new_binary_debugger(dtype, NULL/* FIXME */); - -    result = py_binary_debugger_from_c(debugger); -    g_object_unref(debugger); - -    return (PyObject *)result; - -} - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : debugger = instance existante GLib.                          * -*                                                                             * -*  Description : Crée un nouvel objet Python de type 'BinaryDebugger'.        * -*                                                                             * -*  Retour      : -                                                            * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -PyObject *py_binary_debugger_from_c(GBinaryDebugger *debugger) -{ -    PyObject *module;                       /* Module d'appartenance       */ -    PyTypeObject *type;                     /* Type Python correspondant   */ - -    module = PyImport_ImportModule("pyoida.debug"); -    type = (PyTypeObject*)PyObject_GetAttrString(module, "BinaryDebugger"); -    Py_DECREF(module); - -    pychrysalide_set_instance_data(G_OBJECT(debugger), type); - -    return pygobject_new(G_OBJECT(debugger)); - -} - - - - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : self = classe représentant un débogueur.                     * -*                args = arguments fournis à l'appel.                          * -*                                                                             * -*  Description : Fournit les identifiants de tous les threads actifs.         * -*                                                                             * -*  Retour      : Object Python représentant le résultat de l'opération.       * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -static PyObject *py_binary_debugger_list_all_threads(PyObject *self, PyObject *args) -{ -    PyObject *result;                       /* Trouvailles à retourner     */ -    GBinaryDebugger *debugger;              /* Version native              */ -    char **names;                           /* Noms associés aux threads   */ -    size_t count;                           /* Taille de cette liste       */ -    pid_t *threads;                         /* Liste des threads actifs    */ -    size_t i;                               /* Boucle de parcours          */ -    PyObject *thread;                       /* Détails sur un thread donné */ - -    debugger = G_BINARY_DEBUGGER(pygobject_get(self)); - -    threads = g_binary_debugger_list_all_threads(debugger, &names, &count); - -    result = PyTuple_New(count); - -    for (i = 0; i < count; i++) -    { -        thread = PyTuple_New(2); -        PyTuple_SetItem(result, i, thread); - -        PyTuple_SetItem(thread, 0, PyLong_FromLong(threads[i])); -        PyTuple_SetItem(thread, 1, PyString_FromString(names[i])); - -        free(names[i]); - -    } - -    if (names != NULL) -        free(names); - -    if (threads != NULL) -        free(threads); - -    return result; - -} - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : self = classe représentant un débogueur.                     * -*                args = arguments fournis à l'appel.                          * -*                                                                             * -*  Description : Fournit la pile d'exécution courante via un débogueur.       * -*                                                                             * -*  Retour      : Object Python représentant le résultat de l'opération.       * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -static PyObject *py_binary_debugger_get_frames_stack(PyObject *self, PyObject *args) -{ -    PyObject *result;                       /* Trouvailles à retourner     */ -    GBinaryDebugger *debugger;              /* Version native              */ -    unsigned long thread;                   /* Identifiant du thread visé  */ -    size_t count;                           /* Taille de cette liste       */ -    dbg_frame_t *frames;                    /* Frames courantes trouvées   */ -    size_t i;                               /* Boucle de parcours          */ -    PyObject *frame;                        /* Détails sur une frame       */ - -    debugger = G_BINARY_DEBUGGER(pygobject_get(self)); - -    if (!PyArg_ParseTuple(args, "k", &thread)) -        return Py_None; - -    frames = g_binary_debugger_get_frames_stack(debugger, thread, &count); - -    result = PyTuple_New(count); - -    for (i = 0; i < count; i++) -    { -        frame = PyTuple_New(1); -        PyTuple_SetItem(result, i, frame); - -        PyTuple_SetItem(frame, 0, PyLong_FromUnsignedLongLong(frames[i].addr)); - -    } - -    if (frames != NULL) -        free(frames); - -    return result; - -} - - - - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : module = module dont la définition est à compléter.          * -*                                                                             * -*  Description : Ajoute l'objet 'pychrysalide.debug.BinaryDebugger' au module.* -*                                                                             * -*  Retour      : -                                                            * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -bool register_python_binary_debugger(PyObject *module) -{ -    PyObject *pygobj_mod;                   /* Module Python-GObject       */ -    int ret;                                /* Bilan d'un appel            */ - -    static PyMethodDef py_binary_debugger_methods[] = { -        { -            "list_all_threads", (PyCFunction)py_binary_debugger_list_all_threads, -            METH_NOARGS, -            "List all current active threads." -        }, -        { -            "get_frames_stack", (PyCFunction)py_binary_debugger_get_frames_stack, -            METH_VARARGS, -            "Provide the current callstack using a debugger." -        }, -        { NULL } -    }; - -    static PyTypeObject py_binary_debugger_type = { - -        PyObject_HEAD_INIT(NULL) - -        .tp_name        = "pychrysalide.debug.BinaryDebugger", -        .tp_basicsize   = sizeof(PyGObject), - -        .tp_flags       = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - -        .tp_doc         = "PyChrysalide binary debugger", - -        .tp_methods     = py_binary_debugger_methods, -        .tp_new         = (newfunc)py_binary_debugger_new - -    }; - -    pygobj_mod = PyImport_ImportModule("gobject"); -    if (pygobj_mod == NULL) return false; - -    py_binary_debugger_type.tp_base = (PyTypeObject *)PyObject_GetAttrString(pygobj_mod, "GObject"); -    Py_DECREF(pygobj_mod); - -    if (PyType_Ready(&py_binary_debugger_type) < 0) -        return false; - -    Py_INCREF(&py_binary_debugger_type); -    ret = PyModule_AddObject(module, "BinaryDebugger", (PyObject *)&py_binary_debugger_type); - -    return (ret == 0); - -} diff --git a/plugins/pyoida/debug/debugger.h b/plugins/pyoida/debug/debugger.h deleted file mode 100644 index 5e5cc21..0000000 --- a/plugins/pyoida/debug/debugger.h +++ /dev/null @@ -1,45 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * debugger.h - prototypes pour les instances Python de débogueurs - * - * Copyright (C) 2012 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 this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA - */ - - -#ifndef _PLUGINS_PYOIDA_DEBUG_DEBUGGER_H -#define _PLUGINS_PYOIDA_DEBUG_DEBUGGER_H - - -#include <Python.h> -#include <stdbool.h> - - -#include <debug/debugger.h> - - - -/* Crée un nouvel objet Python de type 'BinaryDebugger'. */ -PyObject *py_binary_debugger_from_c(GBinaryDebugger *debugger); - -/* Ajoute l'objet 'pychrysalide.debug.BinaryDebugger' au module. */ -bool register_python_binary_debugger(PyObject *); - - - -#endif  /* _PLUGINS_PYOIDA_DEBUG_DEBUGGER_H */ diff --git a/plugins/pyoida/debug/module.c b/plugins/pyoida/debug/module.c deleted file mode 100644 index 7537dc7..0000000 --- a/plugins/pyoida/debug/module.c +++ /dev/null @@ -1,66 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * module.c - intégration du répertoire debug en tant que module - * - * Copyright (C) 2012 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 this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA - */ - - -#include "module.h" - - -#include "debugger.h" - - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : module = module dont la définition est à compléter.          * -*                                                                             * -*  Description : Ajoute le module 'debug' au module Python.                   * -*                                                                             * -*  Retour      : -                                                            * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -bool add_debug_module_to_python_module(PyObject *super) -{ -    bool result; -    PyObject *module; -    int ret;                                /* Bilan d'un appel            */ - -    static PyMethodDef py_debug_methods[] = { -        { NULL } -    }; - -    module = Py_InitModule("pyoida.debug", py_debug_methods); -    if (module == NULL) return false; - -    Py_INCREF(module); -    ret = PyModule_AddObject(super, "pyoida.debug", module); - -    result = (ret != 0); - -    result &= register_python_binary_debugger(module); - -    return result; - -} diff --git a/plugins/pyoida/debug/module.h b/plugins/pyoida/debug/module.h deleted file mode 100644 index d331621..0000000 --- a/plugins/pyoida/debug/module.h +++ /dev/null @@ -1,39 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * module.h - prototypes pour l'intégration du répertoire debug en tant que module - * - * Copyright (C) 2012 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 this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA - */ - - -#ifndef _PLUGINS_PYOIDA_DEBUG_MODULE_H -#define _PLUGINS_PYOIDA_DEBUG_MODULE_H - - -#include <Python.h> -#include <stdbool.h> - - - -/* Ajoute le module 'debug' au module Python. */ -bool add_debug_module_to_python_module(PyObject *); - - - -#endif  /* _PLUGINS_PYOIDA_DEBUG_MODULE_H */ | 
