diff options
author | Andrew Burgess <aburgess@redhat.com> | 2023-01-23 15:31:28 +0000 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2023-05-16 10:30:46 +0100 |
commit | 0af2f233330024e0e9b4697d510c7030e518e64c (patch) | |
tree | 05d86455324863c179d309da8dbc6d7c55d38ffc /gdb/doc | |
parent | 56c1f748a5df6d0f7c75586204e3010fa3e164f9 (diff) | |
download | gdb-0af2f233330024e0e9b4697d510c7030e518e64c.zip gdb-0af2f233330024e0e9b4697d510c7030e518e64c.tar.gz gdb-0af2f233330024e0e9b4697d510c7030e518e64c.tar.bz2 |
gdb/python: rework how the disassembler API reads the result object
This commit is a refactor ahead of the next change which will make
disassembler styling available through the Python API.
Unfortunately, in order to make the styling support available, I think
the easiest solution is to make a very small change to the existing
API.
The current API relies on returning a DisassemblerResult object to
represent each disassembled instruction. Currently GDB allows the
DisassemblerResult class to be sub-classed, which could mean that a
user tries to override the various attributes that exist on the
DisassemblerResult object.
This commit removes this ability, effectively making the
DisassemblerResult class final.
Though this is a change to the existing API, I'm hoping this isn't
going to cause too many issues:
- The Python disassembler API was only added in the previous release
of GDB, so I don't expect it to be widely used yet, and
- It's not clear to me why a user would need to sub-class the
DisassemblerResult type, I allowed it in the original patch
because at the time I couldn't see any reason to NOT allow it.
Having prevented sub-classing I can now rework the tail end of the
gdbpy_print_insn function; instead of pulling the results out of the
DisassemblerResult object by calling back into Python, I now cast the
Python object back to its C++ type (disasm_result_object), and access
the fields directly from there. In later commits I will be reworking
the disasm_result_object type in order to hold information about the
styled disassembler output.
The tests that dealt with sub-classing DisassemblerResult have been
removed, and a new test that confirms that DisassemblerResult can't be
sub-classed has been added.
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Reviewed-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb/doc')
-rw-r--r-- | gdb/doc/python.texi | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index 1113591..a906c16 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -7032,6 +7032,8 @@ instance of this class should be returned from @w{@code{Disassembler.__call__}} (@pxref{Disassembler Class}) if an instruction was successfully disassembled. +It is not possible to sub-class the @code{DisassemblerResult} class. + The @code{DisassemblerResult} class has the following properties and methods: |