binutils-gdb/gdb/python
Pedro Alves 6b1747cd13 invoke_xmethod & array_view
This replaces more pointer+length with gdb::array_view.  This time,
around invoke_xmethod, and then propagating the fallout around, which
inevitably leaks to the overload resolution code.

There are several places in the code that want to grab a slice of an
array, by advancing the array pointer, and decreasing the length
pointer.  This patch introduces a pair of new
gdb::array_view::slice(...) methods to make that convenient and clear.
Unit test included.

gdb/ChangeLog:
2018-11-21  Pedro Alves  <palves@redhat.com>

	* common/array-view.h (array_view::splice(size_type, size_t)): New.
	(array_view::splice(size_type)): New.
	* eval.c (eval_call, evaluate_funcall): Adjust to use array_view.
	* extension.c (xmethod_worker::get_arg_types): Adjust to return an
	std::vector.
	(xmethod_worker::get_result_type): Adjust to use gdb::array_view.
	* extension.h: Include "common/array-view.h".
	(xmethod_worker::invoke): Adjust to use gdb::array_view.
	(xmethod_worker::get_arg_types): Adjust to return an std::vector.
	(xmethod_worker::get_result_type): Adjust to use gdb::array_view.
	(xmethod_worker::do_get_arg_types): Adjust to use std::vector.
	(xmethod_worker::do_get_result_type): Adjust to use
	gdb::array_view.
	* gdbtypes.c (rank_function): Adjust to use gdb::array_view.
	* gdbtypes.h: Include "common/array-view.h".
	(rank_function): Adjust to use gdb::array_view.
	* python/py-xmethods.c (python_xmethod_worker::invoke)
	(python_xmethod_worker::do_get_arg_types)
	(python_xmethod_worker::do_get_result_type)
	(python_xmethod_worker::invoke): Adjust to new interfaces.
	* valarith.c (value_user_defined_cpp_op, value_user_defined_op)
	(value_x_binop, value_x_unop): Adjust to use gdb::array_view.
	* valops.c (find_overload_match, find_oload_champ_namespace)
	(find_oload_champ_namespace_loop, find_oload_champ): Adjust to use
	gdb:array_view and the new xmethod_worker interfaces.
	* value.c (result_type_of_xmethod, call_xmethod): Adjust to use
	gdb::array_view.
	* value.h (find_overload_match, result_type_of_xmethod)
	(call_xmethod): Adjust to use gdb::array_view.
	* unittests/array-view-selftests.c: Add slicing tests.
2018-11-21 12:06:20 +00:00
..
lib/gdb Fix output indentation for "info pretty-printers" 2018-11-08 16:17:01 -07:00
py-all-events.def
py-arch.c
py-auto-load.c
py-block.c Return gdbpy_ref from gdb_py_object_from_*longest 2018-11-04 08:01:00 -07:00
py-bpevent.c gdb/python: Use copy-initialization more when possible 2018-08-24 22:57:16 +01:00
py-breakpoint.c Return gdbpy_ref from some Python string functions 2018-11-04 08:01:01 -07:00
py-cmd.c gdb/python: Make cmdpy_completer_helper return gdbpy_ref<> 2018-10-25 12:20:18 +01:00
py-continueevent.c Change thread_to_thread_object to return a new reference 2018-09-16 07:25:57 -06:00
py-event-types.def
py-event.c
py-event.h Change thread_to_thread_object to return a new reference 2018-09-16 07:25:57 -06:00
py-events.h
py-evtregistry.c
py-evts.c
py-exitedevent.c gdb/python: Use copy-initialization more when possible 2018-08-24 22:57:16 +01:00
py-finishbreakpoint.c Use thread_info and inferior pointers more throughout 2018-06-21 17:09:31 +01:00
py-frame.c
py-framefilter.c MI: Fix printing of frame architecture with Python frame filters enabled 2018-08-27 17:12:41 -04:00
py-function.c gdb/python: Make convert_values_to_python return gdbpy_ref<> 2018-10-25 12:20:18 +01:00
py-gdb-readline.c Remove "repeat" argument from command_line_input 2018-08-17 16:39:06 -06:00
py-inferior.c Add Inferior.architecture method 2018-10-06 23:20:55 -06:00
py-infevents.c gdb/python: Use copy-initialization more when possible 2018-08-24 22:57:16 +01:00
py-infthread.c Change thread_to_thread_object to return a new reference 2018-09-16 07:25:57 -06:00
py-instruction.c
py-instruction.h
py-lazy-string.c
py-linetable.c Return gdbpy_ref from gdb_py_object_from_*longest 2018-11-04 08:01:00 -07:00
py-newobjfileevent.c Change objfile_to_objfile_object to return a new reference 2018-09-16 07:25:56 -06:00
py-objfile.c Return gdbpy_ref from some Python string functions 2018-11-04 08:01:01 -07:00
py-param.c Allow setting a parameter to raise gdb.GdbError 2018-09-23 23:15:12 -06:00
py-prettyprint.c Return gdbpy_ref from gdbpy_get_varobj_pretty_printer 2018-11-04 08:01:01 -07:00
py-progspace.c Return gdbpy_ref from some Python string functions 2018-11-04 08:01:01 -07:00
py-record-btrace.c [gdb/python] Fix cpychecker error in recpy_bt_goto 2018-10-05 00:20:07 +02:00
py-record-btrace.h
py-record-full.c
py-record-full.h
py-record.c Use thread_info and inferior pointers more throughout 2018-06-21 17:09:31 +01:00
py-record.h Use thread_info and inferior pointers more throughout 2018-06-21 17:09:31 +01:00
py-ref.h
py-signalevent.c gdb/python: Use copy-initialization more when possible 2018-08-24 22:57:16 +01:00
py-stopevent.c Change thread_to_thread_object to return a new reference 2018-09-16 07:25:57 -06:00
py-stopevent.h
py-symbol.c Update symbol domain and location values for Python 2018-10-06 23:20:55 -06:00
py-symtab.c Return gdbpy_ref from some Python string functions 2018-11-04 08:01:01 -07:00
py-threadevent.c Simplify uses of thread_to_thread_object 2018-09-16 23:36:54 -06:00
py-type.c Return gdbpy_ref from gdb_py_object_from_*longest 2018-11-04 08:01:00 -07:00
py-unwind.c Simple unused variable removals 2018-07-22 13:20:01 -06:00
py-utils.c Return gdbpy_ref from some Python string functions 2018-11-04 08:01:01 -07:00
py-value.c Use gdb:array_view in call_function_by_hand & friends 2018-11-21 11:55:11 +00:00
py-varobj.c Don't steal references in the gdb Python code 2018-09-16 23:48:21 -06:00
py-xmethods.c invoke_xmethod & array_view 2018-11-21 12:06:20 +00:00
python-config.py configure uses incorrect link order when testing libpython 2018-05-04 10:08:09 -04:00
python-internal.h Return gdbpy_ref from gdbpy_get_varobj_pretty_printer 2018-11-04 08:01:01 -07:00
python.c Return gdbpy_ref from some Python string functions 2018-11-04 08:01:01 -07:00
python.h python: Make gdb.execute("show commands") work (PR 23669) 2018-09-17 08:26:24 -04:00