mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-14 00:29:24 +08:00
gdb/python: implement DisassemblerResult.__str__ method
Add the DisassemblerResult.__str__ method. This gives the same result as the DisassemblerResult.string attribute, but can be useful sometimes depending on how the user is trying to print the object. There's a test for the new functionality.
This commit is contained in:
@ -608,6 +608,21 @@ gdbpy_disassembler::read_memory_func (bfd_vma memaddr, gdb_byte *buff,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Implement __str__ for the DisassemblerResult type. */
|
||||
|
||||
static PyObject *
|
||||
disasmpy_result_str (PyObject *self)
|
||||
{
|
||||
disasm_result_object *obj = (disasm_result_object *) self;
|
||||
|
||||
gdb_assert (obj->content != nullptr);
|
||||
gdb_assert (obj->content->size () > 0);
|
||||
gdb_assert (obj->length > 0);
|
||||
return PyUnicode_Decode (obj->content->c_str (),
|
||||
obj->content->size (),
|
||||
host_charset (), nullptr);
|
||||
}
|
||||
|
||||
/* Implement DisassemblerResult.length attribute, return the length of the
|
||||
disassembled instruction. */
|
||||
|
||||
@ -624,14 +639,7 @@ disasmpy_result_length (PyObject *self, void *closure)
|
||||
static PyObject *
|
||||
disasmpy_result_string (PyObject *self, void *closure)
|
||||
{
|
||||
disasm_result_object *obj = (disasm_result_object *) self;
|
||||
|
||||
gdb_assert (obj->content != nullptr);
|
||||
gdb_assert (obj->content->size () > 0);
|
||||
gdb_assert (obj->length > 0);
|
||||
return PyUnicode_Decode (obj->content->c_str (),
|
||||
obj->content->size (),
|
||||
host_charset (), nullptr);
|
||||
return disasmpy_result_str (self);
|
||||
}
|
||||
|
||||
/* Implement DisassemblerResult.__init__. Takes two arguments, an
|
||||
@ -1147,7 +1155,7 @@ PyTypeObject disasm_result_object_type = {
|
||||
0, /*tp_as_mapping*/
|
||||
0, /*tp_hash */
|
||||
0, /*tp_call*/
|
||||
0, /*tp_str*/
|
||||
disasmpy_result_str, /*tp_str*/
|
||||
0, /*tp_getattro*/
|
||||
0, /*tp_setattro*/
|
||||
0, /*tp_as_buffer*/
|
||||
|
Reference in New Issue
Block a user