aboutsummaryrefslogtreecommitdiff
path: root/gdb/NEWS
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@ericsson.com>2019-03-13 15:13:03 -0400
committerSimon Marchi <simon.marchi@efficios.com>2019-03-13 15:14:36 -0400
commitb4be1b0648608a2578bbed39841c8ee411773edd (patch)
treee1ed7575ff16e451a9076c7cabcf057c17d43b51 /gdb/NEWS
parent8e5e5494f8653dd83ce1413d141e26c09dddab7b (diff)
downloadgdb-b4be1b0648608a2578bbed39841c8ee411773edd.zip
gdb-b4be1b0648608a2578bbed39841c8ee411773edd.tar.gz
gdb-b4be1b0648608a2578bbed39841c8ee411773edd.tar.bz2
Fix MI output for multi-location breakpoints
New in v2: - Addressed comments about doc, updated the MI version table - New doc for the Breakpoint information format - New -fix-multi-location-breakpoint-output command, with associated doc, test and NEWS updated accordingly - Fixed the output, the locations list is now actually in the tuple representing the breakpoint. Various MI commands or events related to breakpoints output invalid MI records when printing information about a multi-location breakpoint. For example: -break-insert allo ^done,bkpt={...,addr="<MULTIPLE>",...},{number="1.1",...},{number="1.2",...} The problem is that according to the syntax [1], the top-level elements are of type "result" and should be of the form "variable=value". This patch changes the output to wrap the locations in a list: ^done,bkpt={...,addr="<MULTIPLE>",locations=[{number="1.1",...},{number="1.2",...}]} The events =breakpoint-created, =breakpoint-modified, as well as the -break-info command also suffer from this (and maybe others I didn't find). Since this is a breaking change for MI, we have to deal somehow with backwards compatibility. The approach taken by this patch is to bump the MI version, use the new syntax in MI3 while retaining the old syntax in MI2. Frontends are expected to use a precise MI version (-i=mi2), so if they do that they should be unaffected. The patch also adds the command -fix-multi-location-breakpoint-output, which front ends can use to enable this behavior with MI <= 2. [1] https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Output-Syntax.html#GDB_002fMI-Output-Syntax gdb/ChangeLog: * NEWS: Mention that the new default MI version is 3. Mention changes to the output of commands and events that deal with multi-location breakpoints. * breakpoint.c: Include "mi/mi-out.h". (print_one_breakpoint): Change output syntax if using MI version >= 3. * mi/mi-main.h (mi_cmd_fix_multi_location_breakpoint_output): New. (mi_multi_location_breakpoint_output_fixed): New. * mi/mi-main.c (fix_multi_location_breakpoint_output): New. (mi_cmd_fix_multi_location_breakpoint_output): New. (mi_multi_location_breakpoint_output_fixed): New. * mi/mi-cmds.c (mi_cmds): Register command -fix-multi-location-breakpoint-output. * mi/mi-out.c (mi_out_new): Instantiate version 3 when using interpreter "mi". gdb/testsuite/ChangeLog: * mi-breakpoint-location-ena-dis.exp: Rename to ... * mi-breakpoint-multiple-locations.exp: ... this. (make_breakpoints_pattern): New proc. (do_test): Add mi_version parameter, test -break-insert, -break-info and =breakpoint-created. gdb/doc/ChangeLog: * gdb.texinfo (Mode Options): Mention mi3. (Interpreters): Likewise. (GDB/MI Development and Front Ends): Add entry for MI 3 in version table. Document -fix-multi-location-breakpoint-output. (GDB/MI Breakpoint Information): Document format of breakpoint location output.
Diffstat (limited to 'gdb/NEWS')
-rw-r--r--gdb/NEWS14
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/NEWS b/gdb/NEWS
index 88ce9a7..53d1c6e 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -162,6 +162,8 @@ set style address intensity VALUE
* MI changes
+ ** The default version of the MI interpreter is now 3 (-i=mi3).
+
** 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
@@ -171,6 +173,18 @@ set style address intensity VALUE
** Command responses and notifications that include a frame now include
the frame's architecture in a new "arch" attribute.
+ ** 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.
+
* New native configurations
GNU/Linux/RISC-V riscv*-*-linux*