mirror of
https://github.com/bminor/binutils-gdb.git
synced 2026-02-05 10:51:29 +00:00
48d2b03a7c17d02799c5a6f2b3db096b59c017e4
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>
…
…
…
…
…
…
…
…
…
…
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
Languages
C
50.4%
Makefile
22.7%
Assembly
13.2%
C++
5.9%
Roff
1.5%
Other
5.7%