Go to file
Andrew Burgess 81384924cd 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.
2022-07-11 12:02:01 +01:00
bfd Automatic date update in version.in 2022-07-11 00:00:24 +00:00
binutils Regenerate with automake-1.15.1 2022-07-09 20:10:47 +09:30
config Add markers for 2.39 branch 2022-07-08 10:41:07 +01:00
contrib
cpu Add markers for 2.39 branch 2022-07-08 10:41:07 +01:00
elfcpp Add markers for 2.39 branch 2022-07-08 10:41:07 +01:00
etc
gas gas: tc-tic54x.c hash tables 2022-07-09 21:48:02 +09:30
gdb gdb: have gdb_disassemble_info carry 'this' in its stream pointer 2022-07-11 12:02:01 +01:00
gdbserver gdbserver: LoongArch: Add orig_a0 processing 2022-07-10 17:27:55 +08:00
gdbsupport [gdb] Block SIGTERM in worker threads 2022-06-30 13:31:06 +02:00
gnulib
gold Update version to 2.39.50 and regenerate files 2022-07-08 11:19:44 +01:00
gprof Regenerate with automake-1.15.1 2022-07-09 20:10:47 +09:30
gprofng Regenerate with automake-1.15.1 2022-07-09 20:10:47 +09:30
include Add markers for 2.39 branch 2022-07-08 10:41:07 +01:00
intl
ld Fix regeneration of ld configure and makefiles 2022-07-08 12:41:48 +01:00
libbacktrace
libctf Add markers for 2.39 branch 2022-07-08 10:41:07 +01:00
libdecnumber
libiberty Add markers for 2.39 branch 2022-07-08 10:41:07 +01:00
opcodes Regenerate with automake-1.15.1 2022-07-09 20:10:47 +09:30
readline
sim sim: fix BFD_VMA format arguments on 32-bit hosts [PR gdb/29184] 2022-06-15 23:12:56 +01:00
texinfo
zlib Regenerate with automake-1.15.1 2022-07-09 20:10:47 +09:30
.cvsignore
.editorconfig
.gitattributes
.gitignore
ar-lib
ChangeLog Add markers for 2.39 branch 2022-07-08 10:41:07 +01:00
compile
config-ml.in
config.guess
config.rpath
config.sub
configure [gdb/build] Fix build breaker with --enable-shared 2022-06-27 15:36:19 +02:00
configure.ac [gdb/build] Fix build breaker with --enable-shared 2022-06-27 15:36:19 +02:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def
Makefile.in
Makefile.tpl
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode
setup.com
src-release.sh
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.