Andrew Burgess 48d2b03a7c gdb: fix handling of raw ANSI escape sequences printed from Python
Bug PR gdb/33748 reports a regression with print styled output from
Python when using ANSI escape sequences to apply the styling.  This
regression was introduced by commit:

  commit 3825c972a6
  Date:   Wed Jun 18 15:02:29 2025 +0100

      gdb: allow gdb.Color to work correctly with pagination

Prior to this commit GDB would always forward any ANSI escape
sequences directly to the output stream, but this meant that GDB
didn't know which style was currently in effect.

The above commit changed GDB so that we would parse the ANSI escape
sequence, and then apply it to the output stream, this allowed GDB to
track which style was in use, which in turn meant that GDB could
correctly suspend the style and reapply it when the pager was
activated.

The problem though is that ANSI escape sequences can be built up in
parts.  For example, a user can emit the sequence to change the
foreground blue, and then later emit the sequence to change the text
to bold.  The result is output that is both blue and bold.

In the above commit, when parsing an incoming ANSI sequence, GDB was
always starting from the default styling state.  The result of parsing
the ANSI sequence was then being applied.  In our above example, this
meant that when parsing the sequence for bold text we would "forget"
that the current style had a blue foreground color.

This can be easily fixed by starting from the current style, rather
than the default style.

This fix was suggested by Patryk Sondej who originally reported the
bug.

Co-Authored-By: Patryk Sondej <patryk.sondej@gmail.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33748

Approved-By: Tom Tromey <tom@tromey.com>
2026-01-15 17:44:35 +00:00
2025-11-03 10:59:50 +10:30
2025-07-13 08:35:45 +01:00
2026-01-06 15:14:50 -05:00
2023-08-12 10:27:57 +09:30
2026-01-06 15:15:02 -05:00
2025-11-03 10:59:50 +10:30
2025-02-28 16:06:25 +00:00
2025-11-03 09:53:04 +00:00
2025-11-03 09:53:04 +00:00
2025-11-03 09:53:04 +00:00
2025-10-02 07:42:18 +08:00
2025-10-02 07:42:18 +08:00
2025-09-07 04:06:01 +01:00

		   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, and so on. 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.
Description
Unofficial mirror of sourceware binutils-gdb repository. Updated daily.
Readme 944 MiB
Languages
C 50.4%
Makefile 22.7%
Assembly 13.2%
C++ 5.9%
Roff 1.5%
Other 5.7%