aboutsummaryrefslogtreecommitdiff
path: root/zlib
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2022-04-05 11:06:16 +0100
committerAndrew Burgess <aburgess@redhat.com>2022-07-11 12:02:01 +0100
commit81384924cdcc9eb2676dd9084b76845d7d0e0759 (patch)
tree7b1d35fc1b6c46e60a07550b37fb6e01a1aa56a8 /zlib
parent53a7a7e17c5d21b7b182ddf6bd8bfc092af196f5 (diff)
downloadgdb-81384924cdcc9eb2676dd9084b76845d7d0e0759.zip
gdb-81384924cdcc9eb2676dd9084b76845d7d0e0759.tar.gz
gdb-81384924cdcc9eb2676dd9084b76845d7d0e0759.tar.bz2
gdb: have gdb_disassemble_info carry 'this' in its stream pointer
The gdb_disassemble_info class is a wrapper around the libopcodes disassemble_info struct. The 'stream' field of disassemble_info is passed as an argument to the fprintf_func and fprintf_styled_func callbacks when the disassembler wants to print anything. Previously, GDB would store a pointer to a ui_file object in the 'stream' field, then, when the disassembler wanted to print anything, the content would be written to the ui_file object. An example of an fprintf_func callback, from gdb/disasm.c is: int gdb_disassembler::dis_asm_fprintf (void *stream, const char *format, ...) { /* Write output to STREAM here. */ } This is fine, but has one limitation, within the print callbacks we only have access to STREAM, we can't access any additional state stored within the gdb_disassemble_info object. Right now this isn't a problem, but in a future commit this will become an issue, how we style the output being written to STREAM will depend on the state of the gdb_disassemble_info object, and this state might need to be updated, depending on what is being printed. In this commit I propose changing the 'stream' field of the disassemble_info to carry a pointer to the gdb_disassemble_info sub-class, rather than the stream itself. We then have the two sub-classes of gdb_disassemble_info to consider, the gdb_non_printing_disassembler class never cared about the stream, previously, for this class, the stream was nullptr. With the change to make stream be a gdb_disassemble_info pointer, no further updates are needed for gdb_non_printing_disassembler. The other sub-class is gdb_printing_disassembler. In this case the sub-class now carries around a pointer to the stream object. The print callbacks are updated to cast the incoming stream object back to a gdb_printing_disassembler, and then extract the stream. This is purely a refactoring commit. A later commit will add additional state to the gdb_printing_disassembler, and update the print callbacks to access this state. There should be no user visible changes after this commit.
Diffstat (limited to 'zlib')
0 files changed, 0 insertions, 0 deletions