2ea126fa78
... when trying to execute an undefined GDB/MI command. When trying to execute a GDB/MI command which does not exist, the current error result record looks like this: -unsupported ^error,msg="Undefined MI command: unsupported" The only indication that the command does not exist is the error message. It would be a little fragile for a consumer to rely solely on the contents of the error message in order to determine whether a command exists or not. This patch improves the situation by adding concept of error code, starting with one well-defined error code ("undefined-command") identifying errors due to a non-existant command. Here is the new output: -unsupported ^error,msg="Undefined MI command: unsupported",code="undefined-command" This error code is only displayed when the corresponding error condition is met. Otherwise, the error record remains unchanged. For instance: -symbol-list-lines foo.adb ^error,msg="-symbol-list-lines: Unknown source file name." For frontends to be able to know whether they can rely on this variable, a new entry "undefined-command-error-code" has been added to the "-list-features" command. Another option would be to always generate an error="..." variable (for the default case, we could decide for instance that the error code is the empty string). But it seems more efficient to provide that info in "-list-features" and then only add the error code when meaningful. gdb/ChangeLog: (from Pedro Alves <palves@redhat.com>) (from Joel Brobecker <brobecker@adacore.com>) * exceptions.h (enum_errors) <UNDEFINED_COMMAND_ERROR>: New enum. * mi/mi-parse.c (mi_parse): Throw UNDEFINED_COMMAND_ERROR instead of a regular error when the GDB/MI command does not exist. * mi/mi-main.c (mi_cmd_list_features): Add "undefined-command-error-code". (mi_print_exception): Print an "undefined-command" error code if EXCEPTION.ERROR is UNDEFINED_COMMAND_ERROR. * NEWS: Add entry documenting the new "code" variable in "^error" result records. gdb/doc/ChangeLog: * gdb.texinfo (GDB/MI Result Records): Fix the syntax of the "^error" result record concerning the error message. Document the error code that may also be part of that result record. (GDB/MI Miscellaneous Commands): Document the "undefined-command-error-code" element in the output of the "-list-features" GDB/MI command. gdb/testsuite/ChangeLog: * gdb.mi/mi-undefined-cmd.exp: New testcase. |
||
---|---|---|
.. | ||
array.f | ||
basics.c | ||
ChangeLog-1999-2003 | ||
dw2-ref-missing-frame-func.c | ||
dw2-ref-missing-frame-main.c | ||
dw2-ref-missing-frame.exp | ||
dw2-ref-missing-frame.S | ||
gdb669.exp | ||
gdb680.exp | ||
gdb701.c | ||
gdb701.exp | ||
gdb792.cc | ||
gdb792.exp | ||
gdb2549.exp | ||
Makefile.in | ||
mi-async.exp | ||
mi-basics.exp | ||
mi-break.exp | ||
mi-breakpoint-changed.exp | ||
mi-catch-load-so.c | ||
mi-catch-load.c | ||
mi-catch-load.exp | ||
mi-cli.exp | ||
mi-cmd-param-changed.exp | ||
mi-console.c | ||
mi-console.exp | ||
mi-disassemble.exp | ||
mi-dprintf.c | ||
mi-dprintf.exp | ||
mi-eval.exp | ||
mi-file-transfer.exp | ||
mi-file.exp | ||
mi-fill-memory.exp | ||
mi-fullname-deleted.exp | ||
mi-hack-cli.exp | ||
mi-i-cmd.exp | ||
mi-info-os.exp | ||
mi-inheritance-syntax-error.cc | ||
mi-inheritance-syntax-error.exp | ||
mi-language.exp | ||
mi-logging.exp | ||
mi-memory-changed.exp | ||
mi-nonstop-exit.exp | ||
mi-nonstop.exp | ||
mi-ns-stale-regcache.exp | ||
mi-nsintrall.exp | ||
mi-nsmoribund.exp | ||
mi-nsthrexec.exp | ||
mi-pending.c | ||
mi-pending.exp | ||
mi-pendshr.c | ||
mi-pthreads.exp | ||
mi-read-memory.c | ||
mi-read-memory.exp | ||
mi-record-changed.exp | ||
mi-reg-undefined.c | ||
mi-reg-undefined.exp | ||
mi-reg-undefined.S | ||
mi-regs.exp | ||
mi-return.exp | ||
mi-reverse.exp | ||
mi-simplerun.exp | ||
mi-solib.exp | ||
mi-stack.c | ||
mi-stack.exp | ||
mi-start.c | ||
mi-start.exp | ||
mi-stepi.exp | ||
mi-stepn.c | ||
mi-stepn.exp | ||
mi-syn-frame.c | ||
mi-syn-frame.exp | ||
mi-undefined-cmd.exp | ||
mi-until.exp | ||
mi-var-block.exp | ||
mi-var-child-f.exp | ||
mi-var-child.c | ||
mi-var-child.exp | ||
mi-var-cmd.exp | ||
mi-var-cp.cc | ||
mi-var-cp.exp | ||
mi-var-create-rtti.c | ||
mi-var-create-rtti.exp | ||
mi-var-display.exp | ||
mi-var-invalidate.exp | ||
mi-var-rtti.cc | ||
mi-var-rtti.exp | ||
mi-watch-nonstop.exp | ||
mi-watch.exp | ||
mi2-amd64-entry-value.c | ||
mi2-amd64-entry-value.exp | ||
mi2-amd64-entry-value.s | ||
mi2-prompt.exp | ||
mi2-var-child.exp | ||
non-stop-exit.c | ||
non-stop.c | ||
ns-stale-regcache.c | ||
nsintrall.c | ||
nsmoribund.c | ||
nsthrexec.c | ||
pending.c | ||
pendshr1.c | ||
pendshr2.c | ||
pr11022.c | ||
pr11022.exp | ||
pthreads.c | ||
solib-lib.c | ||
solib-main.c | ||
testcmds | ||
until.c | ||
var-cmd.c | ||
watch-nonstop.c |