What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 11
+*** Changes since GDB 12
+
+* GDB now supports dumping memory tag data for AArch64 MTE. It also supports
+ reading memory tag data for AArch64 MTE from core files generated by
+ the gcore command or the Linux kernel.
+
+ When a process uses memory-mapped pages protected by memory tags (for
+ example, AArch64 MTE), this additional information will be recorded in
+ the core file in the event of a crash or if GDB generates a core file
+ from the current process state. GDB will show this additional information
+ automatically, or through one of the memory-tag subcommands.
+
+* "info breakpoints" now displays enabled breakpoint locations of
+ disabled breakpoints as in the "y-" state. For example:
+
+ (gdb) info breakpoints
+ Num Type Disp Enb Address What
+ 1 breakpoint keep n <MULTIPLE>
+ 1.1 y- 0x00000000000011b6 in ...
+ 1.2 y- 0x00000000000011c2 in ...
+ 1.3 n 0x00000000000011ce in ...
+
+* Support for Thread Local Storage (TLS) variables on FreeBSD arm and
+ aarch64 architectures.
+
+* GDB now supports hardware watchpoints on FreeBSD/Aarch64.
+
+* Remove support for building against Python 2, it is now only possible to
+ build GDB against Python 3.
+
+* DBX mode has been removed.
+
+* GDB now honours the DWARF prologue_end line-table entry flag the compiler can
+ emit to indicate where a breakpoint should be placed to break in a function
+ past its prologue.
+
+* Completion now also offers "NUMBER" for "set" commands that accept
+ a numeric argument and the "unlimited" keyword. For example:
+
+ (gdb) set width <TAB>
+ NUMBER unlimited
+
+ and consequently:
+
+ (gdb) complete set width
+ set width NUMBER
+ set width unlimited
+
+* Disassembler styling using libopcodes. GDB now supports
+ disassembler styling using libopcodes. This is only available for
+ some targets (currently x86 and RISC-V). For unsupported targets
+ Python Pygments is still used. For supported targets, libopcodes
+ styling is used by default.
+
+* The Windows native target now supports target async.
+
+* New commands
+
+maintenance set ignore-prologue-end-flag on|off
+maintenance show ignore-prologue-end-flag
+ This setting, which is off by default, controls whether GDB ignores the
+ PROLOGUE-END flag from the line-table when skipping prologue. This can be
+ used to force GDB to use prologue analyzers if the line-table is constructed
+ from erroneous debug information.
+
+set print nibbles [on|off]
+show print nibbles
+ This controls whether the 'print/t' command will display binary values
+ in groups of four bits, known as "nibbles". The default is 'off'.
+
+maintenance set libopcodes-styling on|off
+maintenance show libopcodes-styling
+ These can be used to force off libopcodes based styling, the Python
+ Pygments styling will then be used instead.
+
+set style disassembler comment
+show style disassembler comment
+set style disassembler immediate
+show style disassembler immediate
+set style disassembler mnemonic
+show style disassembler mnemonic
+set style disassembler register
+show style disassembler register
+set style disassembler address
+show style disassembler address
+set style disassembler symbol
+show style disassembler symbol
+ For targets that support libopcodes based styling, these settings
+ control how various aspects of the disassembler output are styled.
+ The 'disassembler address' and 'disassembler symbol' styles are
+ aliases for the 'address' and 'function' styles respectively.
+
+maintenance print frame-id [ LEVEL ]
+ Print GDB's internal frame-id for the frame at LEVEL. If LEVEL is
+ not given, then print the frame-id for the currently selected frame.
+
+* Changed commands
+
+document user-defined
+ It is now possible to document user-defined aliases.
+ When a user-defined alias is documented, the help and apropos commands
+ use the provided documentation instead of the documentation of the
+ aliased command.
+ Documenting a user-defined alias is particularly useful when the alias
+ is a set of nested 'with' commands to avoid showing the help of
+ the with command for an alias that will in fact launch the
+ last command given in the nested commands.
+
+maintenance info line-table
+ Add a PROLOGUE-END column to the output which indicates that an
+ entry corresponds to an address where a breakpoint should be placed
+ to be at the first instruction past a function's prologue.
+
+* New targets
+
+GNU/Linux/LoongArch (gdbserver) loongarch*-*-linux*
+
+GNU/Linux/CSKY (gdbserver) csky*-*linux*
+
+* Python API
+
+ ** GDB will now reformat the doc string for gdb.Command and
+ gdb.Parameter sub-classes to remove unnecessary leading
+ whitespace from each line before using the string as the help
+ output.
+
+ ** New function gdb.format_address(ADDRESS, PROGSPACE, ARCHITECTURE),
+ that formats ADDRESS as 'address <symbol+offset>', where symbol is
+ looked up in PROGSPACE, and ARCHITECTURE is used to format address.
+ This is the same format that GDB uses when printing address, symbol,
+ and offset information from the disassembler.
+
+ ** New function gdb.current_language that returns the name of the
+ current language. Unlike gdb.parameter('language'), this will
+ never return 'auto'.
+
+ ** New method gdb.Frame.language that returns the name of the
+ frame's language.
+
+ ** New Python API for wrapping GDB's disassembler:
+
+ - gdb.disassembler.register_disassembler(DISASSEMBLER, ARCH).
+ DISASSEMBLER is a sub-class of gdb.disassembler.Disassembler.
+ ARCH is either None or a string containing a bfd architecture
+ name. DISASSEMBLER is registered as a disassembler for
+ architecture ARCH, or for all architectures if ARCH is None.
+ The previous disassembler registered for ARCH is returned, this
+ can be None if no previous disassembler was registered.
+
+ - gdb.disassembler.Disassembler is the class from which all
+ disassemblers should inherit. Its constructor takes a string,
+ a name for the disassembler, which is currently only used in
+ some debug output. Sub-classes should override the __call__
+ method to perform disassembly, invoking __call__ on this base
+ class will raise an exception.
+
+ - gdb.disassembler.DisassembleInfo is the class used to describe
+ a single disassembly request from GDB. An instance of this
+ class is passed to the __call__ method of
+ gdb.disassembler.Disassembler and has the following read-only
+ attributes: 'address', and 'architecture', as well as the
+ following method: 'read_memory'.
+
+ - gdb.disassembler.builtin_disassemble(INFO, MEMORY_SOURCE),
+ calls GDB's builtin disassembler on INFO, which is a
+ gdb.disassembler.DisassembleInfo object. MEMORY_SOURCE is
+ optional, its default value is None. If MEMORY_SOURCE is not
+ None then it must be an object that has a 'read_memory' method.
+
+ - gdb.disassembler.DisassemblerResult is a class that can be used
+ to wrap the result of a call to a Disassembler. It has
+ read-only attributes 'length' and 'string'.
+
+ ** gdb.Objfile now has an attribute named "is_file". This is True
+ if the objfile comes from a file, and False otherwise.
+
+ ** New function gdb.print_options that returns a dictionary of the
+ prevailing print options, in the form accepted by
+ gdb.Value.format_string.
+
+ ** gdb.Value.format_string now uses the format provided by 'print',
+ if it is called during a 'print' or other similar operation.
+
+ ** gdb.Value.format_string now accepts the 'summary' keyword. This
+ can be used to request a shorter representation of a value, the
+ way that 'set print frame-arguments scalars' does.
+
+ ** New Python type gdb.BreakpointLocation.
+ The new attribute 'locations' of gdb.Breakpoint returns a list of
+ gdb.BreakpointLocation objects specifying the locations where the
+ breakpoint is inserted into the debuggee.
+
+* New features in the GDB remote stub, GDBserver
+
+ ** GDBserver is now supported on LoongArch GNU/Linux.
+
+ ** GDBserver is now supported on CSKY GNU/Linux.
+
+* LoongArch floating-point support
+
+GDB now supports floating-point on LoongArch GNU/Linux.
+
+*** Changes in GDB 12
+
+* DBX mode is deprecated, and will be removed in GDB 13
+
+* GDB 12 is the last release of GDB that will support building against
+ Python 2. From GDB 13, it will only be possible to build GDB itself
+ with Python 3 support.
+
+* The disable-randomization setting now works on Windows.
+
+* Improved C++ template support
+
+ GDB now treats functions/types involving C++ templates like it does function
+ overloads. Users may omit parameter lists to set breakpoints on families of
+ template functions, including types/functions composed of multiple template types:
+
+ (gdb) break template_func(template_1, int)
+
+ The above will set breakpoints at every function `template_func' where
+ the first function parameter is any template type named `template_1' and
+ the second function parameter is `int'.
+
+ TAB completion also gains similar improvements.
+
+* The FreeBSD native target now supports async mode.
* Configure changes
debug lin-lwp' respectively. Turning this setting on prints debug
messages relating to GDB's handling of native Linux inferiors.
+maint flush source-cache
+ Flush the contents of the source code cache.
+
+maint set gnu-source-highlight enabled on|off
+maint show gnu-source-highlight enabled
+ Whether GDB should use the GNU Source Highlight library for adding
+ styling to source code. When off, the library will not be used, even
+ when available. When GNU Source Highlight isn't used, or can't add
+ styling to a particular source file, then the Python Pygments
+ library will be used instead.
+
+set suppress-cli-notifications (on|off)
+show suppress-cli-notifications
+ This controls whether printing the notifications is suppressed for CLI.
+ CLI notifications occur when you change the selected context
+ (i.e., the current inferior, thread and/or the frame), or when
+ the program being debugged stops (e.g., because of hitting a
+ breakpoint, completing source-stepping, an interrupt, etc.).
+
+set style disassembler enabled on|off
+show style disassembler enabled
+ If GDB is compiled with Python support, and the Python Pygments
+ package is available, then, when this setting is on, disassembler
+ output will have styling applied.
+
+set ada source-charset
+show ada source-charset
+ Set the character set encoding that is assumed for Ada symbols. Valid
+ values for this follow the values that can be passed to the GNAT
+ compiler via the '-gnati' option. The default is ISO-8859-1.
+
+tui layout
+tui focus
+tui refresh
+tui window height
+ These are the new names for the old 'layout', 'focus', 'refresh',
+ and 'winheight' tui commands respectively. The old names still
+ exist as aliases to these new commands.
+
+tui window width
+winwidth
+ The new command 'tui window width', and the alias 'winwidth' allow
+ the width of a tui window to be adjusted when windows are laid out
+ in horizontal mode.
+
+set debug tui on|off
+show debug tui
+ Control the display of debug output about GDB's tui.
+
* Changed commands
+print
+ Printing of floating-point values with base-modifying formats like
+ /x has been changed to display the underlying bytes of the value in
+ the desired base. This was GDB's documented behavior, but was never
+ implemented correctly.
+
maint packet
This command can now print a reply, if the reply includes
non-printable characters. Any non-printable characters are printed
debug linux-nat' and 'show debug linux-nat' should be used
instead.
+info win
+ This command now includes information about the width of the tui
+ windows in its output.
+
+layout
+focus
+refresh
+winheight
+ These commands are now aliases for the 'tui layout', 'tui focus',
+ 'tui refresh', and 'tui window height' commands respectively.
+
+* GDB's Ada parser now supports an extension for specifying the exact
+ byte contents of a floating-point literal. This can be useful for
+ setting floating-point registers to a precise value without loss of
+ precision. The syntax is an extension of the based literal syntax.
+ Use, e.g., "16lf#0123abcd#" -- the number of "l"s controls the width
+ of the floating-point type, and the "f" is the marker for floating
+ point.
+
+* MI changes
+
+ ** The '-add-inferior' with no option flags now inherits the
+ connection of the current inferior, this restores the behaviour of
+ GDB as it was prior to GDB 10.
+
+ ** The '-add-inferior' command now accepts a '--no-connection'
+ option, which causes the new inferior to start without a
+ connection.
+
+ ** The default version of the MI interpreter is now 4 (-i=mi4).
+
+ ** The "script" field in breakpoint output (which is syntactically
+ incorrect in MI 3 and below) has changed in MI 4 to become a list.
+ This affects the following commands and events:
+
+ - -break-insert
+ - -break-info
+ - =breakpoint-created
+ - =breakpoint-modified
+
+ The -fix-breakpoint-script-output command can be used to enable
+ this behavior with previous MI versions.
+
+* New targets
+
+GNU/Linux/LoongArch loongarch*-*-linux*
+
+* Removed targets
+
+S+core score-*-*
+
* Python API
** New function gdb.add_history(), which takes a gdb.Value object
integer, the index of the new item in the history list, is
returned.
+ ** New function gdb.history_count(), which returns the number of
+ values in GDB's value history.
+
** New gdb.events.gdb_exiting event. This event is called with a
gdb.GdbExitingEvent object which has the read-only attribute
'exit_code', which contains the value of the GDB exit code. This
is equivalent to the existing 'maint packet' CLI command; it
allows a user specified packet to be sent to the remote target.
+ ** New function gdb.host_charset(), returns a string, which is the
+ name of the current host charset.
+
+ ** New gdb.set_parameter(NAME, VALUE). This sets the gdb parameter
+ NAME to VALUE.
+
+ ** New gdb.with_parameter(NAME, VALUE). This returns a context
+ manager that temporarily sets the gdb parameter NAME to VALUE,
+ then resets it when the context is exited.
+
+ ** The gdb.Value.format_string method now takes a 'styling'
+ argument, which is a boolean. When true, the returned string can
+ include escape sequences to apply styling. The styling will only
+ be present if styling is otherwise turned on in GDB (see 'help
+ set styling'). When false, which is the default if the argument
+ is not given, then no styling is applied to the returned string.
+
+ ** New read-only attribute gdb.InferiorThread.details, which is
+ either a string, containing additional, target specific thread
+ state information, or None, if there is no such additional
+ information.
+
+ ** New read-only attribute gdb.Type.is_scalar, which is True for
+ scalar types, and False for all other types.
+
+ ** New read-only attribute gdb.Type.is_signed. This attribute
+ should only be read when Type.is_scalar is True, and will be True
+ for signed types, and False for all other types. Attempting to
+ read this attribute for non-scalar types will raise a ValueError.
+
+ ** It is now possible to add GDB/MI commands implemented in Python.
+
* New features in the GDB remote stub, GDBserver
** GDBserver is now supported on OpenRISC GNU/Linux.
the current CPSR value for instructions without symbols; previous
versions of GDB behaved as if "set arm fallback-mode arm".
+set arm unwind-secure-frames
+ Enable unwinding from Non-secure to Secure mode on Cortex-M with
+ Security extension.
+ This can trigger security exceptions when unwinding exception stacks.
+
set disable-randomization
show disable-randomization
Standalone programs run with the virtual address space randomization enabled