8sa1-binutils-gdb/gdb/testsuite/gdb.python
Sergio Durigan Junior 51ed89aa0d PR cli/21688: Fix multi-line/inline command differentiation
This bug is a regression caused by the following commit:

  604c4576fd is the first bad commit
  commit 604c4576fd
  Author: Jerome Guitton <guitton@adacore.com>
  Date:   Tue Jan 10 15:15:53 2017 +0100

The problem happens because, on cli/cli-script.c:process_next_line,
GDB is not using the command line string to identify which command to
run, but it instead using the 'struct cmd_list_element *' that is
obtained by using the mentioned string.  The problem with that is that
the 'struct cmd_list_element *' doesn't have any information on
whether the command issued by the user is a multi-line or inline one.

A multi-line command is a command that will necessarily be composed of
more than 1 line.  For example:

  (gdb) if 1
  >python
   >print ('hello')
   >end
  >end

As can be seen in the example above, the 'python' command actually
"opens" a new command line (represented by the change in the
indentation) that will then be used to enter Python code.  OTOH, an
inline command is a command that is "self-contained" in a single line,
for example:

  (gdb) if 1
  >python print ('hello')
  >end

This Python command is a one-liner, and therefore there is no other
Python code that can be entered for this same block.  There is also no
change in the indentation.

So, the fix is somewhat simple: we have to revert the change and use
the full command line string passed to process_next_line in order to
identify whether we're dealing with a multi-line or an inline command.
This commit does just that.  As can be seen, this regression also
affects other languages, like guile or the compile framework.  To make
things clearer, I decided to create a new helper function responsible
for identifying a non-inline command.

Testcase is attached.

gdb/ChangeLog:
2017-06-30  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR cli/21688
	* cli/cli-script.c (command_name_equals_not_inline): New function.
	(process_next_line): Adjust 'if' clauses for "python", "compile"
	and "guile" to use command_name_equals_not_inline.

gdb/testsuite/ChangeLog:
2017-06-30  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR cli/21688
	* gdb.python/py-cmd.exp (test_python_inline_or_multiline): New
	procedure.  Call it.
2017-06-30 07:14:29 -04:00
..
amd64-py-framefilter-invalidarg.S update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
lib-types.cc update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
lib-types.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-arch.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-arch.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-as-string.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-as-string.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-bad-printers.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-bad-printers.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-bad-printers.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-block.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-block.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-breakpoint-create-fail.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-breakpoint-create-fail.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-breakpoint-create-fail.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-breakpoint.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-breakpoint.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-caller-is.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-caller-is.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-cmd.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-cmd.exp PR cli/21688: Fix multi-line/inline command differentiation 2017-06-30 07:14:29 -04:00
py-completion.exp gdb: Fix a few unstable test names 2017-03-08 12:46:44 +00:00
py-completion.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-error.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-error.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-events-shlib.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-events.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-events.exp PR python/13598 - add before_prompt event 2017-02-14 10:38:56 -07:00
py-events.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-evsignal.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-evthreads.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-evthreads.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-explore-cc.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-explore.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-explore.cc update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-explore.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-finish-breakpoint2.cc update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-finish-breakpoint2.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-finish-breakpoint2.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-finish-breakpoint.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-finish-breakpoint.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-finish-breakpoint.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-frame-args.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-frame-args.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-frame-args.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-frame-inline.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-frame-inline.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-frame.c
py-frame.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-framefilter-gdb.py.in update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-framefilter-invalidarg-gdb.py.in update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-framefilter-invalidarg.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-framefilter-invalidarg.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-framefilter-mi.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-framefilter-mi.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-framefilter.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-framefilter.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-framefilter.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-function.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-inferior.c
py-inferior.exp gdb/testsuite: Add "get_endianness" convenience proc 2017-06-13 15:20:26 +02:00
py-infthread.c
py-infthread.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-lazy-string.c gdb.python/py-lazy-string (pointer): Really add new typedef. 2017-03-16 10:43:21 -07:00
py-lazy-string.exp Fix various python lazy string bugs. 2017-03-16 09:28:11 -07:00
py-linetable.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-linetable.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-linetable.S update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-lookup-type.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-mi-events-gdb.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-mi-events.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-mi-events.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-mi-objfile-gdb.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-mi-objfile.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-mi-objfile.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-mi.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-objfile-script-gdb.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-objfile-script.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-objfile-script.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-objfile.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-objfile.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-parameter.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-integral.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-integral.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-integral.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-maint.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-maint.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-pp-maint.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-re-notag.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-re-notag.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-re-notag.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-registration.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-pp-registration.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-pp-registration.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-prettyprint.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-prettyprint.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-prettyprint.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-progspace.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-progspace.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-prompt.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-prompt.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-record-btrace-threads.c Python: Use correct ptid in btrace recording 2017-05-02 11:35:54 +02:00
py-record-btrace-threads.exp Fix gdb.python/py-record-btrace-threads.exp with Python 3 2017-05-04 16:02:36 +01:00
py-record-btrace.c python: Add tests for record Python bindings 2017-02-14 10:57:56 +01:00
py-record-btrace.exp Python: Move and rename gdb.BtraceFunction 2017-05-02 11:35:54 +02:00
py-record-full.c python: Add tests for record Python bindings 2017-02-14 10:57:56 +01:00
py-record-full.exp python: Add tests for record Python bindings 2017-02-14 10:57:56 +01:00
py-recurse-unwind.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-recurse-unwind.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-recurse-unwind.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-rvalue-ref-value-cc.cc Add rvalue reference tests and docs 2017-03-20 13:47:59 -07:00
py-rvalue-ref-value-cc.exp Add rvalue reference tests and docs 2017-03-20 13:47:59 -07:00
py-section-script.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-section-script.exp Fix warning: Invalid entry in .debug_gdb_scripts section 2017-03-29 21:53:43 +02:00
py-section-script.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-shared-sl.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-shared.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-shared.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-strfns.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-strfns.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-symbol.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-symbol.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-symtab.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-sync-interp.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-sync-interp.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-template.cc update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-template.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-type.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-type.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-typeprint.cc update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-typeprint.exp Change method of loading .py files in Python tests 2017-01-26 16:12:12 -05:00
py-typeprint.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-unwind-maint.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-unwind-maint.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-unwind-maint.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-unwind.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-unwind.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-unwind.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-value-cc.cc update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-value-cc.exp update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-value.c Fix various python lazy string bugs. 2017-03-16 09:28:11 -07:00
py-value.exp Fix various python lazy string bugs. 2017-03-16 09:28:11 -07:00
py-xmethods.cc update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
py-xmethods.exp Fix Python test to use lowercase command 2017-02-10 12:24:35 -07:00
py-xmethods.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
python-1.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
python.c update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
python.exp Make gdb.python/python.exp more robust 2017-01-20 13:15:36 -06:00
source1 update copyright year range in GDB files 2017-01-01 10:52:34 +04:00
source2.py update copyright year range in GDB files 2017-01-01 10:52:34 +04:00