--- gdb/doc/gdb.texinfo (/mirrors/gdb_mainline) (revision 4740) +++ gdb/doc/gdb.texinfo (/patches/gdb/list_features) (revision 4740) @@ -21236,6 +21236,37 @@ default shows this information when you (gdb) @end smallexample +@subheading The @code{-list-features} Command +@findex -list-features + +Returns a list of particular features of the MI protocol that +this version of gdb implements. A feature can be a command, +or a new field in an output of some command, or even an +important bugfix. While a frontend can sometimes detect presence +of a feature at runtime, it is easier to perform detection at debugger +startup. + +The command returns a list of strings, with each string naming an +available feature. Each returned string is just a name, it does not +have any internal structure. The list of possible feature names +is given below. + +Example output: + +@smallexample +(gdb) -list-features +^done,result=["feature1","feature2"] +@end smallexample + +The current list of features is: + +@itemize @minus +@item +@samp{frozen-varobjs}---indicates presence of the +@code{-var-set-frozen} command, as well as possible presense of the +@code{frozen} field in the output of @code{-varobj-create}. +@end itemize + @subheading The @code{-interpreter-exec} Command @findex -interpreter-exec --- gdb/mi/mi-cmds.h (/mirrors/gdb_mainline) (revision 4740) +++ gdb/mi/mi-cmds.h (/patches/gdb/list_features) (revision 4740) @@ -91,6 +91,7 @@ extern mi_cmd_argv_ftype mi_cmd_gdb_exit extern mi_cmd_argv_ftype mi_cmd_inferior_tty_set; extern mi_cmd_argv_ftype mi_cmd_inferior_tty_show; extern mi_cmd_argv_ftype mi_cmd_interpreter_exec; +extern mi_cmd_argv_ftype mi_cmd_list_features; extern mi_cmd_argv_ftype mi_cmd_stack_info_depth; extern mi_cmd_argv_ftype mi_cmd_stack_info_frame; extern mi_cmd_argv_ftype mi_cmd_stack_list_args; --- gdb/mi/mi-main.c (/mirrors/gdb_mainline) (revision 4740) +++ gdb/mi/mi-main.c (/patches/gdb/list_features) (revision 4740) @@ -1075,6 +1075,25 @@ mi_cmd_enable_timings (char *command, ch return MI_CMD_ERROR; } +enum mi_cmd_result +mi_cmd_list_features (char *command, char **argv, int argc) +{ + if (argc == 0) + { + struct cleanup *cleanup = NULL; + cleanup = make_cleanup_ui_out_list_begin_end (uiout, "features"); + + ui_out_field_string (uiout, NULL, "frozen-varobjs"); + + do_cleanups (cleanup); + + return MI_CMD_DONE; + } + + error ("-list-features should be passed no arguments"); + return MI_CMD_ERROR; +} + /* Execute a command within a safe environment. Return <0 for error; >=0 for ok. --- gdb/mi/mi-cmds.c (/mirrors/gdb_mainline) (revision 4740) +++ gdb/mi/mi-cmds.c (/patches/gdb/list_features) (revision 4740) @@ -88,6 +88,7 @@ struct mi_cmd mi_cmds[] = { "inferior-tty-set", { NULL, 0 }, NULL, mi_cmd_inferior_tty_set}, { "inferior-tty-show", { NULL, 0 }, NULL, mi_cmd_inferior_tty_show}, { "interpreter-exec", { NULL, 0 }, 0, mi_cmd_interpreter_exec}, + { "list-features", { NULL, 0 }, 0, mi_cmd_list_features}, { "overlay-auto", { NULL, 0 }, NULL, NULL }, { "overlay-list-mapping-state", { NULL, 0 }, NULL, NULL }, { "overlay-list-overlays", { NULL, 0 }, NULL, NULL }, Property changes on: ___________________________________________________________________ Name: svk:merge +e7755896-6108-0410-9592-8049d3e74e28:/mirrors/gdb/trunk:181223