diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/fmtp/parser.c | 1 | ||||
-rw-r--r-- | plugins/pychrysa/arch/immediate.c | 81 |
2 files changed, 81 insertions, 1 deletions
diff --git a/plugins/fmtp/parser.c b/plugins/fmtp/parser.c index 2f469c1..b484a0e 100644 --- a/plugins/fmtp/parser.c +++ b/plugins/fmtp/parser.c @@ -95,7 +95,6 @@ static bool parse_field_definition(const fmt_field_def *def, GBinFormat *format, imm = G_IMM_OPERAND(g_arch_instruction_get_operand(instr, i)); g_imm_operand_set_default_display(&imm, def->disp_rules[i], G_SHARE_CONTAINER(instr)); - g_imm_operand_set_display(&imm, def->disp_rules[i], G_SHARE_CONTAINER(instr)); // TODO : unref(imm) diff --git a/plugins/pychrysa/arch/immediate.c b/plugins/pychrysa/arch/immediate.c index 363c3cc..69efa97 100644 --- a/plugins/pychrysa/arch/immediate.c +++ b/plugins/pychrysa/arch/immediate.c @@ -43,6 +43,12 @@ static PyObject *py_imm_operand_get_value(PyObject *, void *); /* Indique si l'affichage est complété avec des zéros. */ +static PyObject *py_imm_operand_get_padding_by_default(PyObject *self, void *); + +/* Précise si des zéro doivent compléter l'affichage ou non. */ +static int py_imm_operand_set_padding_by_default(PyObject *, PyObject *, void *); + +/* Indique si l'affichage est complété avec des zéros. */ static PyObject *py_imm_operand_get_padding(PyObject *self, void *); /* Précise si des zéro doivent compléter l'affichage ou non. */ @@ -195,6 +201,76 @@ static PyObject *py_imm_operand_get_value(PyObject *self, void *closure) * * ******************************************************************************/ +static PyObject *py_imm_operand_get_padding_by_default(PyObject *self, void *closure) +{ + PyObject *result; /* Instance Python à retourner */ + GImmOperand *operand; /* Version GLib de l'opérande */ + bool padding; /* Bourrage en préfixe ? */ + + operand = G_IMM_OPERAND(pygobject_get(self)); + assert(operand != NULL); + + padding = g_imm_operand_does_padding_by_default(operand); + + result = Py_BuildValue("p", padding); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* value = valeur fournie à intégrer ou prendre en compte. * +* closure = non utilisé ici. * +* * +* Description : Précise si des zéro doivent compléter l'affichage ou non. * +* * +* Retour : Bilan de l'opération pour Python. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static int py_imm_operand_set_padding_by_default(PyObject *self, PyObject *value, void *closure) +{ + bool padding; /* Bourrage en préfixe ? */ + GImmOperand *operand; /* Version GLib de l'opérande */ + + if (!PyBool_Check(value)) + { + PyErr_SetString(PyExc_TypeError, _("Invalid padding state")); + return -1; + } + + padding = (value == Py_True); + + operand = G_IMM_OPERAND(pygobject_get(self)); + assert(operand != NULL); + + g_imm_operand_pad_by_default(&operand, padding, NULL); + + pygobject_set(self, operand); + + return 0; + +} + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* closure = non utilisé ici. * +* * +* Description : Indique si l'affichage est complété avec des zéros. * +* * +* Retour : true si des zéro sont ajoutés à l'affichage, false sinon. * +* * +* Remarques : - * +* * +******************************************************************************/ + static PyObject *py_imm_operand_get_padding(PyObject *self, void *closure) { PyObject *result; /* Instance Python à retourner */ @@ -251,6 +327,7 @@ static int py_imm_operand_set_padding(PyObject *self, PyObject *value, void *clo } + /****************************************************************************** * * * Paramètres : self = objet Python concerné par l'appel. * @@ -562,6 +639,10 @@ PyTypeObject *get_python_imm_operand_type(void) "Status of padding with zeros in front of the textual representation.", NULL }, { + "default_padding", py_imm_operand_get_padding_by_default, py_imm_operand_set_padding_by_default, + "Status of default padding with zeros in front of the textual representation.", NULL + }, + { "default_display", py_imm_operand_get_default_display, py_imm_operand_set_default_display, "Definition of the immediate operand default textual representation.", NULL }, |