X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2FNEWS;h=4e4f12d8d13671b5fc7cf8c1bd302023d7e402f3;hb=65c574f6dd066a239a94c2df0e1e12d50eae06c9;hp=b9768159cd2371471d2e91e814d6e4309f48db9b;hpb=b268007c68ec2d4ebd7e1fa239f0444ff59620e2;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/NEWS b/gdb/NEWS index b9768159cd..1305eceeca 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -1,7 +1,1125 @@ What has changed in GDB? (Organized release by release) -*** Changes since GDB 7.12 +*** Changes since GDB 9 + +* Debugging MS-Windows processes now sets $_exitsignal when the + inferior is terminated by a signal, instead of setting $_exitcode. + +* Multithreaded symbol loading has now been enabled by default on systems + that support it (see entry for GDB 9, below), providing faster + performance for programs with many symbols. + +*** Changes in GDB 9 + +* 'thread-exited' event is now available in the annotations interface. + +* New built-in convenience variables $_gdb_major and $_gdb_minor + provide the GDB version. They are handy for conditionally using + features available only in or since specific GDB versions, in + scripts that should work error-free with many different versions, + such as in system-wide init files. + +* New built-in convenience functions $_gdb_setting, $_gdb_setting_str, + $_gdb_maint_setting and $_gdb_maint_setting_str provide access to values + of the GDB settings and the GDB maintenance settings. They are handy + for changing the logic of user defined commands depending on the + current GDB settings. + +* GDB now supports Thread Local Storage (TLS) variables on several + FreeBSD architectures (amd64, i386, powerpc, riscv). Other + architectures require kernel changes. TLS is not yet supported for + amd64 and i386 process core dumps. + +* Support for Pointer Authentication (PAC) on AArch64 Linux. Return + addresses that required unmasking are shown in the backtrace with the + postfix [PAC]. + +* Two new convenience functions $_cimag and $_creal that extract the + imaginary and real parts respectively from complex numbers. + +* New built-in convenience variables $_shell_exitcode and $_shell_exitsignal + provide the exitcode or exit status of the shell commands launched by + GDB commands such as "shell", "pipe" and "make". + +* The command define-prefix can now define user defined prefix commands. + User defined commands can now be defined using these user defined prefix + commands. + +* Command names can now use the . character. + +* The RX port now supports XML target descriptions. + +* GDB now shows the Ada task names at more places, e.g. in task switching + messages. + +* GDB can now be compiled with Python 3 on Windows. + +* New convenience variable $_ada_exception holds the address of the + Ada exception being thrown. This is set by Ada-related catchpoints. + +* GDB can now place breakpoints on nested functions and subroutines in + Fortran code. The '::' operator can be used between parent and + child scopes when placing breakpoints, for example: + + (gdb) break outer_function::inner_function + + The 'outer_function::' prefix is only needed if 'inner_function' is + not visible in the current scope. + +* In addition to the system-wide gdbinit file, if configured with + --with-system-gdbinit-dir, GDB will now also load files in that directory + as system gdbinit files, unless the -nx or -n flag is provided. Files + with extensions .gdb, .py and .scm are supported as long as GDB was + compiled with support for that language. + +* GDB now supports multithreaded symbol loading for higher performance. + This feature is still in testing, so it is disabled by default. You + can turn it on using 'maint set worker-threads unlimited'. + +* Multi-target debugging support + + GDB now supports debugging multiple target connections + simultaneously. For example, you can now have each inferior + connected to different remote servers running in different machines, + or have one inferior debugging a local native process, an inferior + debugging a core dump, etc. + + This support is experimental and comes with some limitations -- you + can only resume multiple targets simultaneously if all targets + support non-stop mode, and all remote stubs or servers must support + the same set of remote protocol features exactly. See also "info + connections" and "add-inferior -no-connection" below, and "maint set + target-non-stop" in the user manual. + +* Python API + + ** The gdb.Value type has a new method 'format_string' which returns a + string representing the value. The formatting is controlled by the + optional keyword arguments: 'raw', 'pretty_arrays', 'pretty_structs', + 'array_indexes', 'symbols', 'unions', 'deref_refs', 'actual_objects', + 'static_members', 'max_elements', 'repeat_threshold', and 'format'. + + ** gdb.Type has a new property 'objfile' which returns the objfile the + type was defined in. + + ** The frame information printed by the python frame filtering code + is now consistent with what the 'backtrace' command prints when + there are no filters, or when the 'backtrace' '-no-filters' option + is given. + + ** The new function gdb.lookup_static_symbol can be used to look up + symbols with static linkage. + + ** The new function gdb.lookup_static_symbols can be used to look up + all static symbols with static linkage. + + ** gdb.Objfile has new methods 'lookup_global_symbol' and + 'lookup_static_symbol' to lookup a symbol from this objfile only. + + ** gdb.Block now supports the dictionary syntax for accessing symbols in + this block (e.g. block['local_variable']). + +* New commands + +| [COMMAND] | SHELL_COMMAND +| -d DELIM COMMAND DELIM SHELL_COMMAND +pipe [COMMAND] | SHELL_COMMAND +pipe -d DELIM COMMAND DELIM SHELL_COMMAND + Executes COMMAND and sends its output to SHELL_COMMAND. + With no COMMAND, repeat the last executed command + and send its output to SHELL_COMMAND. + +define-prefix COMMAND + Define or mark a command as a user-defined prefix command. + +with SETTING [VALUE] [-- COMMAND] +w SETTING [VALUE] [-- COMMAND] + Temporarily set SETTING, run COMMAND, and restore SETTING. + Usage: with SETTING -- COMMAND + With no COMMAND, repeats the last executed command. + SETTING is any GDB setting you can change with the "set" + subcommands. For example, 'with language c -- print someobj' + temporarily switches to the C language in order to print someobj. + Settings can be combined: 'w lang c -- w print elements unlimited -- + usercmd' switches to the C language and runs usercmd with no limit + of array elements to print. + +maint with SETTING [VALUE] [-- COMMAND] + Like "with", but works with "maintenance set" settings. + +set may-call-functions [on|off] +show may-call-functions + This controls whether GDB will attempt to call functions in + the program, such as with expressions in the print command. It + defaults to on. Calling functions in the program being debugged + can have undesired side effects. It is now possible to forbid + such function calls. If function calls are forbidden, GDB will throw + an error when a command (such as print expression) calls a function + in the program. + +set print finish [on|off] +show print finish + This controls whether the `finish' command will display the value + that is returned by the current function. When `off', the value is + still entered into the value history, but it is not printed. The + default is `on'. + +set print max-depth +show print max-depth + Allows deeply nested structures to be simplified when printing by + replacing deeply nested parts (beyond the max-depth) with ellipses. + The default max-depth is 20, but this can be set to unlimited to get + the old behavior back. + +set print raw-values [on|off] +show print raw-values + By default, GDB applies the enabled pretty printers when printing a + value. This allows to ignore the enabled pretty printers for a series + of commands. The default is 'off'. + +set logging debugredirect [on|off] + By default, GDB debug output will go to both the terminal and the logfile. + Set if you want debug output to go only to the log file. + +set style title foreground COLOR +set style title background COLOR +set style title intensity VALUE + Control the styling of titles. + +set style highlight foreground COLOR +set style highlight background COLOR +set style highlight intensity VALUE + Control the styling of highlightings. + +maint set worker-threads +maint show worker-threads + Control the number of worker threads that can be used by GDB. The + default is 0. "unlimited" lets GDB choose a number that is + reasonable. Currently worker threads are only used when demangling + the names of linker symbols. + +set style tui-border foreground COLOR +set style tui-border background COLOR + Control the styling of TUI borders. + +set style tui-active-border foreground COLOR +set style tui-active-border background COLOR + Control the styling of the active TUI border. + +maint set test-settings KIND +maint show test-settings KIND + A set of commands used by the testsuite for exercising the settings + infrastructure. + +maint set tui-resize-message [on|off] +maint show tui-resize-message + Control whether GDB prints a message each time the terminal is + resized when in TUI mode. This is primarily useful for testing the + TUI. + +set print frame-info [short-location|location|location-and-address + |source-and-location|source-line|auto] +show print frame-info + This controls what frame information is printed by the commands printing + a frame. This setting will e.g. influence the behaviour of 'backtrace', + 'frame', 'stepi'. The python frame filtering also respect this setting. + The 'backtrace' '-frame-info' option can override this global setting. + +set tui compact-source +show tui compact-source + + Enable the "compact" display mode for the TUI source window. The + compact display uses only as much space as is needed for the line + numbers in the current file, and only a single space to separate the + line numbers from the source. + +info modules [-q] [REGEXP] + Return a list of Fortran modules matching REGEXP, or all modules if + no REGEXP is given. + +info module functions [-q] [-m MODULE_REGEXP] [-t TYPE_REGEXP] [REGEXP] + Return a list of functions within all modules, grouped by module. + The list of functions can be restricted with the optional regular + expressions. MODULE_REGEXP matches against the module name, + TYPE_REGEXP matches against the function type signature, and REGEXP + matches against the function name. + +info module variables [-q] [-m MODULE_REGEXP] [-t TYPE_REGEXP] [REGEXP] + Return a list of variables within all modules, grouped by module. + The list of variables can be restricted with the optional regular + expressions. MODULE_REGEXP matches against the module name, + TYPE_REGEXP matches against the variable type, and REGEXP matches + against the variable name. + +set debug remote-packet-max-chars +show debug remote-packet-max-chars + Controls the number of characters to output in a remote packet when using + "set debug remote". + The default is 512 bytes. + +info connections + Lists the target connections currently in use. + +* Changed commands + +help + The "help" command uses the title style to enhance the + readibility of its output by styling the classes and + command names. + +apropos [-v] REGEXP + Similarly to "help", the "apropos" command also uses the + title style for the command names. "apropos" accepts now + a flag "-v" (verbose) to show the full documentation + of matching commands and to use the highlight style to mark + the documentation parts matching REGEXP. + +printf +eval + The GDB printf and eval commands can now print C-style and Ada-style + string convenience variables without calling functions in the program. + This allows to do formatted printing of strings without having + a running inferior, or when debugging a core dump. + +info sources [-dirname | -basename] [--] [REGEXP] + This command has now optional arguments to only print the files + whose names match REGEXP. The arguments -dirname and -basename + allow to restrict matching respectively to the dirname and basename + parts of the files. + +show style + The "show style" and its subcommands are now styling + a style name in their output using its own style, to help + the user visualize the different styles. + +set print frame-arguments + The new value 'presence' indicates to only indicate the presence of + arguments using ..., instead of printing argument names and values. + +set print raw-frame-arguments +show print raw-frame-arguments + + These commands replace the similarly-named "set/show print raw + frame-arguments" commands (now with a dash instead of a space). The + old commands are now deprecated and may be removed in a future + release. + +add-inferior [-no-connection] + The add-inferior command now supports a "-no-connection" flag that + makes the new inferior start with no target connection associated. + By default, the new inferior inherits the target connection of the + current inferior. See also "info connections". + +info inferior + This command's output now includes a new "Connection" column + indicating which target connection an inferior is bound to. See + "info connections" above. + +maint test-options require-delimiter +maint test-options unknown-is-error +maint test-options unknown-is-operand +maint show test-options-completion-result + Commands used by the testsuite to validate the command options + framework. + +focus, winheight, +, -, >, < + These commands are now case-sensitive. + +* New command options, command completion + + GDB now has a standard infrastructure to support dash-style command + options ('-OPT'). One benefit is that commands that use it can + easily support completion of command line arguments. Try "CMD + -[TAB]" or "help CMD" to find options supported by a command. Over + time, we intend to migrate most commands to this infrastructure. A + number of commands got support for new command options in this + release: + + ** The "print" and "compile print" commands now support a number of + options that allow overriding relevant global print settings as + set by "set print" subcommands: + + -address [on|off] + -array [on|off] + -array-indexes [on|off] + -elements NUMBER|unlimited + -null-stop [on|off] + -object [on|off] + -pretty [on|off] + -raw-values [on|off] + -repeats NUMBER|unlimited + -static-members [on|off] + -symbol [on|off] + -union [on|off] + -vtbl [on|off] + + Note that because the "print"/"compile print" commands accept + arbitrary expressions which may look like options (including + abbreviations), if you specify any command option, then you must + use a double dash ("--") to mark the end of argument processing. + + ** The "backtrace" command now supports a number of options that + allow overriding relevant global print settings as set by "set + backtrace" and "set print" subcommands: + + -entry-values no|only|preferred|if-needed|both|compact|default + -frame-arguments all|scalars|none + -raw-frame-arguments [on|off] + -frame-info auto|source-line|location|source-and-location + |location-and-address|short-location + -past-main [on|off] + -past-entry [on|off] + + In addition, the full/no-filters/hide qualifiers are now also + exposed as command options too: + + -full + -no-filters + -hide + + ** The "frame apply", "tfaas" and "faas" commands similarly now + support the following options: + + -past-main [on|off] + -past-entry [on|off] + + ** The new "info sources" options -dirname and -basename options + are using the standard '-OPT' infrastructure. + + All options above can also be abbreviated. The argument of boolean + (on/off) options can be 0/1 too, and also the argument is assumed + "on" if omitted. This allows writing compact command invocations, + like for example: + + (gdb) p -ra -p -o 0 -- *myptr + + The above is equivalent to: + + (gdb) print -raw-values -pretty -object off -- *myptr + + ** The "info types" command now supports the '-q' flag to disable + printing of some header information in a similar fashion to "info + variables" and "info functions". + + ** The "info variables", "info functions", and "whereis" commands + now take a '-n' flag that excludes non-debug symbols (symbols + from the symbol table, not from the debug info such as DWARF) + from the results. + +* Completion improvements + + ** GDB can now complete the options of the "thread apply all" and + "taas" commands, and their "-ascending" option can now be + abbreviated. + + ** GDB can now complete the options of the "info threads", "info + functions", "info variables", "info locals", and "info args" + commands. + + ** GDB can now complete the options of the "compile file" and + "compile code" commands. The "compile file" command now + completes on filenames. + + ** GDB can now complete the backtrace command's + "full/no-filters/hide" qualifiers. + +* In settings, you can now abbreviate "unlimited". + + E.g., "set print elements u" is now equivalent to "set print + elements unlimited". + +* New MI commands + +-complete + This lists all the possible completions for the rest of the line, if it + were to be given as a command itself. This is intended for use by MI + frontends in cases when separate CLI and MI channels cannot be used. + +-catch-throw, -catch-rethrow, and -catch-catch + These can be used to catch C++ exceptions in a similar fashion to + the CLI commands 'catch throw', 'catch rethrow', and 'catch catch'. + +-symbol-info-functions, -symbol-info-types, and -symbol-info-variables + These commands are the MI equivalent of the CLI commands 'info + functions', 'info types', and 'info variables' respectively. + +-symbol-info-modules, this is the MI equivalent of the CLI 'info + modules' command. + +-symbol-info-module-functions and -symbol-info-module-variables. + These commands are the MI equivalent of the CLI commands 'info + module functions' and 'info module variables'. + +* Other MI changes + + ** The default version of the MI interpreter is now 3 (-i=mi3). + + ** The output of information about multi-location breakpoints (which is + syntactically incorrect in MI 2) has changed in MI 3. This affects + the following commands and events: + + - -break-insert + - -break-info + - =breakpoint-created + - =breakpoint-modified + + The -fix-multi-location-breakpoint-output command can be used to enable + this behavior with previous MI versions. + + ** Backtraces and frames include a new optional field addr_flags which is + given after the addr field. On AArch64 this contains PAC if the address + has been masked in the frame. On all other targets the field is not + present. + +* Testsuite + + The testsuite now creates the files gdb.cmd (containing the arguments + used to launch GDB) and gdb.in (containing all the commands sent to + GDB) in the output directory for each test script. Multiple invocations + are appended with .1, .2, .3 etc. + +* Building GDB and GDBserver now requires GNU make >= 3.82. + + Using another implementation of the make program or an earlier version of + GNU make to build GDB or GDBserver is not supported. + +* Building GDB now requires GNU readline >= 7.0. + + GDB now bundles GNU readline 8.0, but if you choose to use + --with-system-readline, only readline >= 7.0 can be used. + +* The TUI SingleKey keymap is now named "SingleKey". This can be used + from .inputrc to bind keys in this keymap. This feature is only + available when gdb is built against GNU readline 8.0 or later. + +* Removed targets and native configurations + + GDB no longer supports debugging the Cell Broadband Engine. This includes + both debugging standalone Cell/B.E. SPU applications and integrated debugging + of Cell/B.E. applications that use both the PPU and SPU architectures. + +* New Simulators + +TI PRU pru-*-elf + +* Removed targets and native configurations + +Solaris 10 i?86-*-solaris2.10, x86_64-*-solaris2.10, + sparc*-*-solaris2.10 + +*** Changes in GDB 8.3 + +* GDB and GDBserver now support access to additional registers on + PowerPC GNU/Linux targets: PPR, DSCR, TAR, EBB/PMU registers, and + HTM registers. + +* GDB now has experimental support for the compilation and injection of + C++ source code into the inferior. This beta release does not include + support for several language features, such as templates, constructors, + and operators. + + This feature requires GCC 7.1 or higher built with libcp1.so + (the C++ plug-in). + +* GDB and GDBserver now support IPv6 connections. IPv6 addresses + can be passed using the '[ADDRESS]:PORT' notation, or the regular + 'ADDRESS:PORT' method. + +* DWARF index cache: GDB can now automatically save indices of DWARF + symbols on disk to speed up further loading of the same binaries. + +* Ada task switching is now supported on aarch64-elf targets when + debugging a program using the Ravenscar Profile. For more information, + see the "Tasking Support when using the Ravenscar Profile" section + in the GDB user manual. + +* GDB in batch mode now exits with status 1 if the last command to be + executed failed. + +* The RISC-V target now supports target descriptions. + +* System call catchpoints now support system call aliases on FreeBSD. + When the ABI of a system call changes in FreeBSD, this is + implemented by leaving a compatibility system call using the old ABI + at the existing number and allocating a new system call number for + the new ABI. For example, FreeBSD 12 altered the layout of 'struct + kevent' used by the 'kevent' system call. As a result, FreeBSD 12 + kernels ship with both 'kevent' and 'freebsd11_kevent' system calls. + The 'freebsd11_kevent' system call is assigned an alias of 'kevent' + so that a system call catchpoint for the 'kevent' system call will + catch invocations of both the 'kevent' and 'freebsd11_kevent' + binaries. This ensures that 'kevent' system calls are caught for + binaries using either the old or new ABIs. + +* Terminal styling is now available for the CLI and the TUI. GNU + Source Highlight can additionally be used to provide styling of + source code snippets. See the "set style" commands, below, for more + information. + +* Removed support for old demangling styles arm, edg, gnu, hp and + lucid. + +* New commands + +set debug compile-cplus-types +show debug compile-cplus-types + Control the display of debug output about type conversion in the + C++ compile feature. Commands have no effect while compiliong + for other languages. + +set debug skip +show debug skip + Control whether debug output about files/functions skipping is + displayed. + +frame apply [all | COUNT | -COUNT | level LEVEL...] [FLAG]... COMMAND + Apply a command to some frames. + FLAG arguments allow to control what output to produce and how to handle + errors raised when applying COMMAND to a frame. + +taas COMMAND + Apply a command to all threads (ignoring errors and empty output). + Shortcut for 'thread apply all -s COMMAND'. + +faas COMMAND + Apply a command to all frames (ignoring errors and empty output). + Shortcut for 'frame apply all -s COMMAND'. + +tfaas COMMAND + Apply a command to all frames of all threads (ignoring errors and empty + output). + Shortcut for 'thread apply all -s frame apply all -s COMMAND'. + +maint set dwarf unwinders (on|off) +maint show dwarf unwinders + Control whether DWARF unwinders can be used. + +info proc files + Display a list of open files for a process. + +* Changed commands + +Changes to the "frame", "select-frame", and "info frame" CLI commands. + These commands all now take a frame specification which + is either a frame level, or one of the keywords 'level', 'address', + 'function', or 'view' followed by a parameter. Selecting a frame by + address, or viewing a frame outside the current backtrace now + requires the use of a keyword. Selecting a frame by level is + unchanged. The MI comment "-stack-select-frame" is unchanged. + +target remote FILENAME +target extended-remote FILENAME + If FILENAME is a Unix domain socket, GDB will attempt to connect + to this socket instead of opening FILENAME as a character device. + +info args [-q] [-t TYPEREGEXP] [NAMEREGEXP] +info functions [-q] [-t TYPEREGEXP] [NAMEREGEXP] +info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP] +info variables [-q] [-t TYPEREGEXP] [NAMEREGEXP] + These commands can now print only the searched entities + matching the provided regexp(s), giving a condition + on the entity names or entity types. The flag -q disables + printing headers or informations messages. + +info functions +info types +info variables +rbreak + These commands now determine the syntax for the shown entities + according to the language chosen by `set language'. In particular, + `set language auto' means to automatically choose the language of + the shown entities. + +thread apply [all | COUNT | -COUNT] [FLAG]... COMMAND + The 'thread apply' command accepts new FLAG arguments. + FLAG arguments allow to control what output to produce and how to handle + errors raised when applying COMMAND to a thread. + +set tui tab-width NCHARS +show tui tab-width NCHARS + "set tui tab-width" replaces the "tabset" command, which has been deprecated. + +set style enabled [on|off] +show style enabled + Enable or disable terminal styling. Styling is enabled by default + on most hosts, but disabled by default when in batch mode. + +set style sources [on|off] +show style sources + Enable or disable source code styling. Source code styling is + enabled by default, but only takes effect if styling in general is + enabled, and if GDB was linked with GNU Source Highlight. + +set style filename foreground COLOR +set style filename background COLOR +set style filename intensity VALUE + Control the styling of file names. + +set style function foreground COLOR +set style function background COLOR +set style function intensity VALUE + Control the styling of function names. + +set style variable foreground COLOR +set style variable background COLOR +set style variable intensity VALUE + Control the styling of variable names. + +set style address foreground COLOR +set style address background COLOR +set style address intensity VALUE + Control the styling of addresses. + +* MI changes + + ** The '-data-disassemble' MI command now accepts an '-a' option to + disassemble the whole function surrounding the given program + counter value or function name. Support for this feature can be + verified by using the "-list-features" command, which should + contain "data-disassemble-a-option". + + ** Command responses and notifications that include a frame now include + the frame's architecture in a new "arch" attribute. + +* New native configurations + +GNU/Linux/RISC-V riscv*-*-linux* +FreeBSD/riscv riscv*-*-freebsd* + +* New targets + +GNU/Linux/RISC-V riscv*-*-linux* +CSKY ELF csky*-*-elf +CSKY GNU/LINUX csky*-*-linux +FreeBSD/riscv riscv*-*-freebsd* +NXP S12Z s12z-*-elf +GNU/Linux/OpenRISC or1k*-*-linux* + +* Removed targets + +GDB no longer supports native debugging on versions of MS-Windows +before Windows XP. + +* Python API + + ** GDB no longer supports Python versions less than 2.6. + + ** The gdb.Inferior type has a new 'progspace' property, which is the program + space associated to that inferior. + + ** The gdb.Progspace type has a new 'objfiles' method, which returns the list + of objfiles associated to that program space. + + ** gdb.SYMBOL_LOC_COMMON_BLOCK, gdb.SYMBOL_MODULE_DOMAIN, and + gdb.SYMBOL_COMMON_BLOCK_DOMAIN were added to reflect changes to + the gdb core. + + ** gdb.SYMBOL_VARIABLES_DOMAIN, gdb.SYMBOL_FUNCTIONS_DOMAIN, and + gdb.SYMBOL_TYPES_DOMAIN are now deprecated. These were never + correct and did not work properly. + + ** The gdb.Value type has a new constructor, which is used to construct a + gdb.Value from a Python buffer object and a gdb.Type. + +* Configure changes + +--enable-ubsan + + Enable or disable the undefined behavior sanitizer. This is + disabled by default, but passing --enable-ubsan=yes or + --enable-ubsan=auto to configure will enable it. Enabling this can + cause a performance penalty. The undefined behavior sanitizer was + first introduced in GCC 4.9. + +*** Changes in GDB 8.2 + +* The 'set disassembler-options' command now supports specifying options + for the MIPS target. + +* The 'symbol-file' command now accepts an '-o' option to add a relative + offset to all sections. + +* Similarly, the 'add-symbol-file' command also accepts an '-o' option to add + a relative offset to all sections, but it allows to override the load + address of individual sections using '-s'. + +* The 'add-symbol-file' command no longer requires the second argument + (address of the text section). + +* The endianness used with the 'set endian auto' mode in the absence of + an executable selected for debugging is now the last endianness chosen + either by one of the 'set endian big' and 'set endian little' commands + or by inferring from the last executable used, rather than the startup + default. + +* The pager now allows a "c" response, meaning to disable the pager + for the rest of the current command. + +* The commands 'info variables/functions/types' now show the source line + numbers of symbol definitions when available. + +* 'info proc' now works on running processes on FreeBSD systems and core + files created on FreeBSD systems. + +* C expressions can now use _Alignof, and C++ expressions can now use + alignof. + +* Support for SVE on AArch64 Linux. Note that GDB does not detect changes to + the vector length while the process is running. + +* New commands + +set debug fbsd-nat +show debug fbsd-nat + Control display of debugging info regarding the FreeBSD native target. + +set|show varsize-limit + This new setting allows the user to control the maximum size of Ada + objects being printed when those objects have a variable type, + instead of that maximum size being hardcoded to 65536 bytes. + +set|show record btrace cpu + Controls the processor to be used for enabling errata workarounds for + branch trace decode. + +maint check libthread-db + Run integrity checks on the current inferior's thread debugging + library + +maint set check-libthread-db (on|off) +maint show check-libthread-db + Control whether to run integrity checks on inferior specific thread + debugging libraries as they are loaded. The default is not to + perform such checks. + +* Python API + + ** Type alignment is now exposed via the "align" attribute of a gdb.Type. + + ** The commands attached to a breakpoint can be set by assigning to + the breakpoint's "commands" field. + + ** gdb.execute can now execute multi-line gdb commands. + + ** The new functions gdb.convenience_variable and + gdb.set_convenience_variable can be used to get and set the value + of convenience variables. + + ** A gdb.Parameter will no longer print the "set" help text on an + ordinary "set"; instead by default a "set" will be silent unless + the get_set_string method returns a non-empty string. + +* New targets + +RiscV ELF riscv*-*-elf + +* Removed targets and native configurations + +m88k running OpenBSD m88*-*-openbsd* +SH-5/SH64 ELF sh64-*-elf*, SH-5/SH64 support in sh* +SH-5/SH64 running GNU/Linux SH-5/SH64 support in sh*-*-linux* +SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd* + +* Aarch64/Linux hardware watchpoints improvements + + Hardware watchpoints on unaligned addresses are now properly + supported when running Linux kernel 4.10 or higher: read and access + watchpoints are no longer spuriously missed, and all watchpoints + lengths between 1 and 8 bytes are supported. On older kernels, + watchpoints set on unaligned addresses are no longer missed, with + the tradeoff that there is a possibility of false hits being + reported. + +* Configure changes + +--enable-codesign=CERT + This can be used to invoke "codesign -s CERT" after building gdb. + This option is useful on macOS, where code signing is required for + gdb to work properly. + +--disable-gdbcli has been removed + This is now silently accepted, but does nothing. + +*** Changes in GDB 8.1 + +* GDB now supports dynamically creating arbitrary register groups specified + in XML target descriptions. This allows for finer grain grouping of + registers on systems with a large amount of registers. + +* The 'ptype' command now accepts a '/o' flag, which prints the + offsets and sizes of fields in a struct, like the pahole(1) tool. + +* New "--readnever" command line option instructs GDB to not read each + symbol file's symbolic debug information. This makes startup faster + but at the expense of not being able to perform symbolic debugging. + This option is intended for use cases where symbolic debugging will + not be used, e.g., when you only need to dump the debuggee's core. + +* GDB now uses the GNU MPFR library, if available, to emulate target + floating-point arithmetic during expression evaluation when the target + uses different floating-point formats than the host. At least version + 3.1 of GNU MPFR is required. + +* GDB now supports access to the guarded-storage-control registers and the + software-based guarded-storage broadcast control registers on IBM z14. + +* On Unix systems, GDB now supports transmitting environment variables + that are to be set or unset to GDBserver. These variables will + affect the environment to be passed to the remote inferior. + + To inform GDB of environment variables that are to be transmitted to + GDBserver, use the "set environment" command. Only user set + environment variables are sent to GDBserver. + + To inform GDB of environment variables that are to be unset before + the remote inferior is started by the GDBserver, use the "unset + environment" command. + +* Completion improvements + + ** GDB can now complete function parameters in linespecs and + explicit locations without quoting. When setting breakpoints, + quoting around functions names to help with TAB-completion is + generally no longer necessary. For example, this now completes + correctly: + + (gdb) b function(in[TAB] + (gdb) b function(int) + + Related, GDB is no longer confused with completing functions in + C++ anonymous namespaces: + + (gdb) b (anon[TAB] + (gdb) b (anonymous namespace)::[TAB][TAB] + (anonymous namespace)::a_function() + (anonymous namespace)::b_function() + + ** GDB now has much improved linespec and explicit locations TAB + completion support, that better understands what you're + completing and offers better suggestions. For example, GDB no + longer offers data symbols as possible completions when you're + setting a breakpoint. + + ** GDB now TAB-completes label symbol names. + + ** The "complete" command now mimics TAB completion accurately. + +* New command line options (gcore) + +-a + Dump all memory mappings. + +* Breakpoints on C++ functions are now set on all scopes by default + + By default, breakpoints on functions/methods are now interpreted as + specifying all functions with the given name ignoring missing + leading scopes (namespaces and classes). + + For example, assuming a C++ program with symbols named: + + A::B::func() + B::func() + + both commands "break func()" and "break B::func()" set a breakpoint + on both symbols. + + You can use the new flag "-qualified" to override this. This makes + GDB interpret the specified function name as a complete + fully-qualified name instead. For example, using the same C++ + program, the "break -q B::func" command sets a breakpoint on + "B::func", only. A parameter has been added to the Python + gdb.Breakpoint constructor to achieve the same result when creating + a breakpoint from Python. + +* Breakpoints on functions marked with C++ ABI tags + + GDB can now set breakpoints on functions marked with C++ ABI tags + (e.g., [abi:cxx11]). See here for a description of ABI tags: + https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/ + + Functions with a C++11 abi tag are demangled/displayed like this: + + function[abi:cxx11](int) + ^^^^^^^^^^^ + + You can now set a breakpoint on such functions simply as if they had + no tag, like: + + (gdb) b function(int) + + Or if you need to disambiguate between tags, like: + + (gdb) b function[abi:other_tag](int) + + Tab completion was adjusted accordingly as well. + +* Python Scripting + + ** New events gdb.new_inferior, gdb.inferior_deleted, and + gdb.new_thread are emitted. See the manual for further + description of these. + + ** A new function, "gdb.rbreak" has been added to the Python API. + This function allows the setting of a large number of breakpoints + via a regex pattern in Python. See the manual for further details. + + ** Python breakpoints can now accept explicit locations. See the + manual for a further description of this feature. + + +* New features in the GDB remote stub, GDBserver + + ** GDBserver is now able to start inferior processes with a + specified initial working directory. + + The user can set the desired working directory to be used from + GDB using the new "set cwd" command. + + ** New "--selftest" command line option runs some GDBserver self + tests. These self tests are disabled in releases. + + ** On Unix systems, GDBserver now does globbing expansion and variable + substitution in inferior command line arguments. + + This is done by starting inferiors using a shell, like GDB does. + See "set startup-with-shell" in the user manual for how to disable + this from GDB when using "target extended-remote". When using + "target remote", you can disable the startup with shell by using the + new "--no-startup-with-shell" GDBserver command line option. + + ** On Unix systems, GDBserver now supports receiving environment + variables that are to be set or unset from GDB. These variables + will affect the environment to be passed to the inferior. + +* When catching an Ada exception raised with a message, GDB now prints + the message in the catchpoint hit notification. In GDB/MI mode, that + information is provided as an extra field named "exception-message" + in the *stopped notification. + +* Trait objects can now be inspected When debugging Rust code. This + requires compiler support which will appear in Rust 1.24. + +* New remote packets + +QEnvironmentHexEncoded + Inform GDBserver of an environment variable that is to be passed to + the inferior when starting it. + +QEnvironmentUnset + Inform GDBserver of an environment variable that is to be unset + before starting the remote inferior. + +QEnvironmentReset + Inform GDBserver that the environment should be reset (i.e., + user-set environment variables should be unset). + +QStartupWithShell + Indicates whether the inferior must be started with a shell or not. + +QSetWorkingDir + Tell GDBserver that the inferior to be started should use a specific + working directory. + +* The "maintenance print c-tdesc" command now takes an optional + argument which is the file name of XML target description. + +* The "maintenance selftest" command now takes an optional argument to + filter the tests to be run. + +* The "enable", and "disable" commands now accept a range of + breakpoint locations, e.g. "enable 1.3-5". + +* New commands + +set|show cwd + Set and show the current working directory for the inferior. + +set|show compile-gcc + Set and show compilation command used for compiling and injecting code + with the 'compile' commands. + +set debug separate-debug-file +show debug separate-debug-file + Control the display of debug output about separate debug file search. + +set dump-excluded-mappings +show dump-excluded-mappings + Control whether mappings marked with the VM_DONTDUMP flag should be + dumped when generating a core file. + +maint info selftests + List the registered selftests. + +starti + Start the debugged program stopping at the first instruction. + +set|show debug or1k + Control display of debugging messages related to OpenRISC targets. + +set|show print type nested-type-limit + Set and show the limit of nesting level for nested types that the + type printer will show. + +* TUI Single-Key mode now supports two new shortcut keys: `i' for stepi and + `o' for nexti. + +* Safer/improved support for debugging with no debug info + + GDB no longer assumes functions with no debug information return + 'int'. + + This means that GDB now refuses to call such functions unless you + tell it the function's type, by either casting the call to the + declared return type, or by casting the function to a function + pointer of the right type, and calling that: + + (gdb) p getenv ("PATH") + 'getenv' has unknown return type; cast the call to its declared return type + (gdb) p (char *) getenv ("PATH") + $1 = 0x7fffffffe "/usr/local/bin:/"... + (gdb) p ((char * (*) (const char *)) getenv) ("PATH") + $2 = 0x7fffffffe "/usr/local/bin:/"... + + Similarly, GDB no longer assumes that global variables with no debug + info have type 'int', and refuses to print the variable's value + unless you tell it the variable's type: + + (gdb) p var + 'var' has unknown type; cast it to its declared type + (gdb) p (float) var + $3 = 3.14 + +* New native configurations + +FreeBSD/aarch64 aarch64*-*-freebsd* +FreeBSD/arm arm*-*-freebsd* + +* New targets + +FreeBSD/aarch64 aarch64*-*-freebsd* +FreeBSD/arm arm*-*-freebsd* +OpenRISC ELF or1k*-*-elf + +* Removed targets and native configurations + +Solaris 2.0-9 i?86-*-solaris2.[0-9], sparc*-*-solaris2.[0-9] + +*** Changes in GDB 8.0 + +* GDB now supports access to the PKU register on GNU/Linux. The register is + added by the Memory Protection Keys for Userspace feature which will be + available in future Intel CPUs. + +* GDB now supports C++11 rvalue references. + +* Python Scripting + + ** New functions to start, stop and access a running btrace recording. + ** Rvalue references are now supported in gdb.Type. + +* GDB now supports recording and replaying rdrand and rdseed Intel 64 + instructions. * Building GDB and GDBserver now requires a C++11 compiler. @@ -47,16 +1165,57 @@ end end +* Target descriptions can now describe registers for sparc32 and sparc64. + +* GDB now supports DWARF version 5 (debug information format). + Its .debug_names index is not yet supported. + * New native configurations FreeBSD/mips mips*-*-freebsd - * New targets Synopsys ARC arc*-*-elf32 FreeBSD/mips mips*-*-freebsd +* Removed targets and native configurations + +Alpha running FreeBSD alpha*-*-freebsd* +Alpha running GNU/kFreeBSD alpha*-*-kfreebsd*-gnu + +* New commands + +flash-erase + Erases all the flash memory regions reported by the target. + +maint print arc arc-instruction address + Print internal disassembler information about instruction at a given address. + +* New options + +set disassembler-options +show disassembler-options + Controls the passing of target specific information to the disassembler. + If it is necessary to specify more than one disassembler option then + multiple options can be placed together into a comma separated list. + The default value is the empty string. Currently, the only supported + targets are ARM, PowerPC and S/390. + +* New MI commands + +-target-flash-erase + Erases all the flash memory regions reported by the target. This is + equivalent to the CLI command flash-erase. + +-file-list-shared-libraries + List the shared libraries in the program. This is + equivalent to the CLI command "info shared". + +-catch-handlers + Catchpoints stopping the program when Ada exceptions are + handled. This is equivalent to the CLI command "catch handlers". + *** Changes in GDB 7.12 * GDB and GDBserver now build with a C++ compiler by default. @@ -354,6 +1513,9 @@ show max-value-size * Support for reading/writing memory and extracting values on architectures whose memory is addressable in units of any integral multiple of 8 bits. +catch handlers + Allows to break when an Ada exception is handled. + * New remote packets exec stop reason