binutils-gdb/gdb/testsuite/gdb.python
Simon Marchi 8588b35692 python: Make gdb.execute("show commands") work (PR 23669)
Since commit

  56bcdbea2b ("Let gdb.execute handle multi-line commands")

trying to use a command like gdb.execute("show commands") in Python
fails.  GDB ends up trying to run the "commands" command.

The reason is that GDB gets confused with the special "commands"
command.  In process_next_line, the lookup_cmd_1 function returns the
cmd_list_element representing the "commands" sub-command of "show".
Lower, we check the cmd_list_element to see if it matches various
control commands by name, including the "commands" command.  This is
where we wrongfully conclude that the executed command must be
"commands", when in reality it was "show commands".

The fix proposed in this patch removes the comparisons by name, instead
comparing the cmd_list_element object by pointer with the objects
created at initialization time.

Tested on the buildbot, though on a single builder (Fedora-x86_64-m64).

gdb/ChangeLog:

	PR python/23669
	* breakpoint.c (commands_cmd_element): New.
	(_initialize_breakpoint): Assign commands_cmd_element.
	* breakpoint.h (commands_cmd_element): New.
	* cli/cli-script.c (while_cmd_element, if_command,
	define_cmd_element): New.
	(command_name_equals): Remove.
	(process_next_line): Compare commands by pointer, not by name.
	(_initialize_cli_script): Assign the various cmd_list_element
	variables.
	* compile/compile.c (compile_cmd_element): New.
	(_initialize_compile): Assign compile_cmd_element.
	* compile/compile.h (compile_cmd_element): New.
	* guile/guile.c (guile_cmd_element): New.
	(install_gdb_commands): Assign guile_cmd_element.
	* guile/guile.h (guile_cmd_element): New.
	* python/python.c (python_cmd_element): New.
	(_initialize_python): Assign python_cmd_element.
	* python/python.h (python_cmd_element): New.
	* tracepoint.c (while_stepping_cmd_element): New.
	(_initialize_tracepoint): Assign while_stepping_cmd_element.
	* tracepoint.h (while_stepping_cmd_element): New.

gdb/testsuite/ChangeLog:

	PR python/23669
	* gdb.python/python.exp: Test gdb.execute("show commands").
2018-09-17 08:26:24 -04:00
..
amd64-py-framefilter-invalidarg.S Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
lib-types.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
lib-types.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-arch.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-arch.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-as-string.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-as-string.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-bad-printers.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-bad-printers.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-bad-printers.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-block.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-block.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-breakpoint-create-fail.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-breakpoint-create-fail.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-breakpoint-create-fail.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-breakpoint.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-breakpoint.exp Allow breakpoint commands to be set from Python 2018-05-04 15:58:09 -06:00
py-caller-is.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-caller-is.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-cmd.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-cmd.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-completion.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-completion.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-error.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-error.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-events-shlib.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-events.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-events.exp Testsuite: fully migrate to use_gdb_stub convenience func 2018-03-23 10:38:23 +01:00
py-events.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-evsignal.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-evthreads.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-evthreads.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-explore-cc.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-explore.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-explore.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-explore.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-finish-breakpoint.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-finish-breakpoint.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-finish-breakpoint.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-finish-breakpoint2.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-finish-breakpoint2.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-finish-breakpoint2.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-frame-args.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-frame-args.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-frame-args.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-frame-inline.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-frame-inline.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-frame.c
py-frame.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-framefilter-gdb.py.in Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-framefilter-invalidarg-gdb.py.in Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-framefilter-invalidarg.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-framefilter-invalidarg.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-framefilter-mi.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-framefilter-mi.exp MI: Fix printing of frame architecture with Python frame filters enabled 2018-08-27 17:12:41 -04:00
py-framefilter.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-framefilter.exp Throw a "quit" on a KeyboardException in py-framefilter.c 2018-03-26 21:57:12 -06:00
py-framefilter.py Throw a "quit" on a KeyboardException in py-framefilter.c 2018-03-26 21:57:12 -06:00
py-function.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-inferior.c
py-inferior.exp python: Add Inferior.progspace property 2018-09-13 15:42:12 -04:00
py-infthread.c
py-infthread.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-lazy-string.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-lazy-string.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-linetable.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-linetable.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-linetable.S Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-lookup-type.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-mi-events-gdb.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-mi-events.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-mi-events.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-mi-objfile-gdb.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-mi-objfile.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-mi-objfile.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-mi-var-info-path-expression.c Fix segfault when invoking -var-info-path-expression on a dynamic varobj 2018-07-31 10:13:41 -04:00
py-mi-var-info-path-expression.exp Fix segfault when invoking -var-info-path-expression on a dynamic varobj 2018-07-31 10:13:41 -04:00
py-mi-var-info-path-expression.py Fix segfault when invoking -var-info-path-expression on a dynamic varobj 2018-07-31 10:13:41 -04:00
py-mi.exp MI: Allow non-raw varobj evaluation 2018-02-02 14:03:25 -05:00
py-objfile-script-gdb.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-objfile-script.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-objfile-script.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-objfile.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-objfile.exp python: Provide textual representation for Inferior and Objfile 2018-09-13 11:54:38 -04:00
py-parameter.exp Fix "set" handling of Python parameters 2018-05-31 15:02:01 -06:00
py-pp-integral.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-integral.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-integral.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-maint.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-maint.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-maint.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-re-notag.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-re-notag.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-re-notag.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-registration.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-registration.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-pp-registration.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-prettyprint.c Allow a pretty-printer without a to_string method 2018-09-08 20:49:15 -06:00
py-prettyprint.exp Make py-prettyprint.exp test names unique 2018-09-08 21:47:53 -06:00
py-prettyprint.py Allow a pretty-printer without a to_string method 2018-09-08 20:49:15 -06:00
py-progspace.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-progspace.exp python: Add Progspace.objfiles method 2018-09-13 15:42:12 -04:00
py-prompt.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-prompt.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-rbreak-func2.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-rbreak.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-rbreak.exp [gdb/testsuite] Fix regexp in py-rbreak.exp 2018-08-04 11:40:18 +02:00
py-record-btrace-threads.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-btrace-threads.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-btrace.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-btrace.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-full.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-full.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-recurse-unwind.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-recurse-unwind.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-recurse-unwind.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-rvalue-ref-value-cc.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-rvalue-ref-value-cc.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-section-script.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-section-script.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-section-script.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-shared-sl.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-shared.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-shared.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-strfns.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-strfns.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-symbol.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-symbol.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-symtab.exp python: Provide textual representation for Inferior and Objfile 2018-09-13 11:54:38 -04:00
py-sync-interp.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-sync-interp.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-template.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-template.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-thrhandle.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-thrhandle.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-type.c Expose type alignment on gdb.Type 2018-04-30 11:25:31 -06:00
py-type.exp Expose type alignment on gdb.Type 2018-04-30 11:25:31 -06:00
py-typeprint.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-typeprint.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-typeprint.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-unwind-maint.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-unwind-maint.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-unwind-maint.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-unwind.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-unwind.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-unwind.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-value-cc.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-value-cc.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-value.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-value.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-xmethods.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-xmethods.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-xmethods.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
python-1.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
python.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
python.exp python: Make gdb.execute("show commands") work (PR 23669) 2018-09-17 08:26:24 -04:00
source1 Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
source2.py Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00