Commit Graph

39888 Commits

Author SHA1 Message Date
Tom Tromey b95de2b7ae Remove set_batch_flag_and_make_cleanup_restore_page_info
This removes set_batch_flag_and_make_cleanup_restore_page_info and
make_cleanup_restore_page_info in favor of a new RAII class.  This
then allows for the removal of make_cleanup_restore_uinteger and
make_cleanup_restore_integer

ChangeLog
2017-10-03  Tom Tromey  <tom@tromey.com>

	* guile/scm-ports.c (ioscm_with_output_to_port_worker): Update.
	* top.c (execute_command_to_string): Update.
	* utils.c (make_cleanup_restore_page_info): Remove.
	(do_restore_page_info_cleanup): Remove.
	(set_batch_flag_and_restore_page_info):
	New.
	(make_cleanup_restore_page_info): Remove.
	(set_batch_flag_and_make_cleanup_restore_page_info): Remove.
	(~set_batch_flag_and_restore_page_info): New
	(make_cleanup_restore_uinteger): Remove.
	(make_cleanup_restore_integer): Remove.
	(struct restore_integer_closure): Remove.
	(restore_integer): Remove.
	* utils.h (struct set_batch_flag_and_restore_page_info): New
	class.
	(set_batch_flag_and_make_cleanup_restore_page_info): Remove.
	(make_cleanup_restore_page_info): Remove.
	(make_cleanup_restore_uinteger) Remove.
	(make_cleanup_restore_integer) Remove.
2017-10-03 05:33:45 -06:00
Tom Tromey 070365117b Change record_full_gdb_operation_disable_set not to return a cleanup
This changes record_full_gdb_operation_disable_set to return a
scoped_restore rather than a cleanup, and fixes all the users.

ChangeLog
2017-10-03  Tom Tromey  <tom@tromey.com>

	* record-full.h (record_full_gdb_operation_disable_set): Return
	scoped_restore_tmpl<int>.
	* infrun.c (adjust_pc_after_break): Update.
	(handle_signal_stop): Update.
	* record-full.c (record_full_gdb_operation_disable_set): Return
	scoped_restore_tmpl<int>.
	(record_full_wait_1, record_full_insert_breakpoint)
	(record_full_remove_breakpoint, record_full_save)
	(record_full_goto_insn): Update.
2017-10-03 05:33:44 -06:00
Tom Tromey 45320ffa04 Fix &str printing in Rust
Printing a string slice ("&str") in Rust would print until the
terminating \0; but that is incorrect because a slice has a length.
This fixes &str printing, and arranges to preserve the type name when
slicing a slice, so that printing a slice of an "&str" works as well.

This is PR rust/22236.

2017-10-02  Tom Tromey  <tom@tromey.com>

	PR rust/22236:
	* rust-lang.c (rust_val_print_str): New function.
	(val_print_struct): Call it.
	(rust_subscript): Preserve name of slice type.

2017-10-02  Tom Tromey  <tom@tromey.com>

	PR rust/22236:
	* gdb.rust/simple.rs (main): New variable "fslice".
	* gdb.rust/simple.exp: Add slice tests.  Update string tests.
2017-10-02 14:06:48 -06:00
Tom Tromey b3e3859bc5 Fix ptype of Rust slices
Something like "ptype &x[..]" (where "x" was a slice) would crash gdb.
rust_subscript wasn't handling slicing in the EVAL_AVOID_SIDE_EFFECTS
case.

2017-10-02  Tom Tromey  <tom@tromey.com>

	* rust-lang.c (rust_subscript): Handle slices in
	EVAL_AVOID_SIDE_EFFECTS case.

2017-10-02  Tom Tromey  <tom@tromey.com>

	* gdb.rust/simple.exp: Test ptype of a slice.
2017-10-02 14:06:48 -06:00
Tom Tromey 01af5e0d09 Allow indexing of &str in Rust
rust_slice_type_p was not recognizing &str as a slice type, so indexing
into (or making a slice of) a slice was not working.

2017-10-02  Tom Tromey  <tom@tromey.com>

	* rust-lang.c (rust_slice_type_p): Recognize &str as a slice type.

2017-10-02  Tom Tromey  <tom@tromey.com>

	* gdb.rust/simple.exp: Test index of slice.
2017-10-02 14:06:43 -06:00
Tom Tromey 888e3ddb20 Add missing "extern" in rust-lang.h
I noticed that one function in rust-lang.h was not declared using
"extern".  In the interested of uniformity, this patch adds it.

Tested by rebuilding.

2017-10-02  Tom Tromey  <tom@tromey.com>

	* rust-lang.h (rust_slice_type): Add "extern".
2017-10-02 08:33:24 -06:00
Pedro Alves cc536b2167 Fix GDB build with G++ 4.8
G++ 4.8 trips on:

  In file included from /opt/gcc-4.8/include/c++/4.8.5/algorithm:62:0,
		   from ../../src/gdb/ada-lang.c:65:
  /opt/gcc-4.8/include/c++/4.8.5/bits/stl_algo.h: In instantiation of ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, const _Tp&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<ada_exc_info*, std::vector<ada_exc_info> >; _Tp = ada_exc_info]’:
  /opt/gcc-4.8/include/c++/4.8.5/bits/stl_algo.h:2283:70:   required from ‘_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<ada_exc_info*, std::vector<ada_exc_info> >]’
  /opt/gcc-4.8/include/c++/4.8.5/bits/stl_algo.h:2315:54:   required from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<ada_exc_info*, std::vector<ada_exc_info> >; _Size = long int]’
  /opt/gcc-4.8/include/c++/4.8.5/bits/stl_algo.h:5461:36:   required from ‘void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<ada_exc_info*, std::vector<ada_exc_info> >]’
  ../../src/gdb/ada-lang.c:13153:61:   required from here
  /opt/gcc-4.8/include/c++/4.8.5/bits/stl_algo.h:2245:19: error: passing ‘const ada_exc_info’ as ‘this’ argument of ‘bool ada_exc_info::operator<(const ada_exc_info&)’ discards qualifiers [-fpermissive]
      while (__pivot < *__last)
		     ^

Seems to be a libstdc++ bug meanwhile fixed by:
  https://gcc.gnu.org/ml/libstdc++/2012-04/msg00074.

In any case, there's no reason these methods can't be const.

gdb/ChangeLog:
2017-10-02  Tom Tromey  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* ada-lang.h (ada_exc_info::operator<): Make const.
	(ada_exc_info::operator==): Make const.
	* ada-lang.c (ada_exc_info::operator<, ada_exc_info::operator==):
	Make const.
2017-10-02 10:18:30 +01:00
Simon Marchi 289a6840c1 nto & lynx x86: call init_target_desc
In gdbserver, target descriptions need to be initialized by calling
init_target_desc.  Because i386_create_target_description is shared with
GDB, it doesn't do that, the callers must take care of it.  These two
platforms currently don't.

I am not able to build them, so I couldn't test.

gdb/gdbserver/ChangeLog:

	* lynx-i386-low.c (lynx_i386_arch_setup): Call init_target_desc.
	* nto-x86-low.c (nto_x86_arch_setup): Likewise.
2017-10-02 11:00:30 +02:00
Tom Tromey 386c8614d5 Remove free_memory_read_result_vector
This changes read_memory_robust to return a std::vector, allowing the
removal of free_memory_read_result_vector and associated cleanups.
This patch also changes the functions it touches to be a bit more
robust with regards to deallocation; it's perhaps possible that
read_memory_robust could have leaked in some situations.

This patch is based on my earlier series to remove some MI cleanups.
Regression tested by the buildbot.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* target.c (read_whatever_is_readable): Change type of "result".
	Update.
	(free_memory_read_result_vector): Remove.
	(read_memory_robust): Change return type.  Update.
	* mi/mi-main.c (mi_cmd_data_read_memory_bytes): Update.  Use
	bin2hex, std::string.
	* target.h (memory_read_result_s): Remove typedef.
	(free_memory_read_result_vector): Remove.
	(read_memory_robust): Return std::vector.
2017-09-29 21:12:19 -06:00
Tom Tromey 789c4b5ea1 Change captured_mi_execute_command to use scoped_restore
Change captured_mi_execute_command to use a scoped_restore, removing a
cleanup.  The old code copied the current token, but I don't believe
that is necessary.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mi/mi-main.c (captured_mi_execute_command): Use scope_restore.
2017-09-29 21:12:18 -06:00
Tom Tromey ab816a2745 Use a std::vector for ada_exceptions_list
Change ada_exceptions_list to return a std::vector and fix up the
users.  This allows removing a cleanup in MI.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions): Update.
	* ada-lang.h (struct ada_exc_info): Remove typedef.  Declare
	operator< and operator==.
	(ada_exceptions_list): Return a std::vector.
	* ada-lang.c (ada_exc_info::operator<): Rename from
	compare_ada_exception_info.
	(ada_exc_info::operator==): New.
	(sort_remove_dups_ada_exceptions_list): Change type of
	"exceptions".
	(ada_add_standard_exceptions, ada_add_exceptions_from_frame)
	(ada_add_global_exceptions): Likewise.
	(ada_exceptions_list_1): Return a std::vector.
	(ada_exceptions_list): Likewise.
2017-09-29 21:12:17 -06:00
Tom Tromey 52f9abe4c7 Use std::set in mi-main.c
Change a couple of spots in mi-main.c to use std::set.  This
simplifies the code and removes some cleanups.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mi/mi-main.c (struct print_one_inferior_data) <inferiors>: Now a
	'std::set *'.
	(print_one_inferior): Update.
	(free_vector_of_ints): Remove.
	(list_available_thread_groups): Change "ids" to std::set.
	(mi_cmd_list_thread_groups): Update.
	(struct collect_cores_data) <core>: Now a std::set.
	(collect_cores): Update.
	(unique): Remove.
	(print_one_inferior): Update.
2017-09-29 21:12:16 -06:00
Tom Tromey dcd5ddccd7 Use std::string in mi-main.c
Change a couple of spots in mi-main.c to use std::string, and change
one place to use field_fmt.  This removes some cleanups.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mi/mi-main.c (mi_execute_cli_command): Use std::string.
	(mi_execute_async_cli_command): Likewise.
	(mi_cmd_trace_frame_collected): Use field_fmt.
2017-09-29 21:12:16 -06:00
Tom Tromey 45d288cc64 Use gdb::byte_vector in mi_cmd_data_write_memory_bytes
This changes mi_cmd_data_write_memory_bytes to use gdb::byte_vector,
removing some cleanups.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mi/mi-main.c (mi_cmd_data_write_memory_bytes): Use
	gdb::byte_vector.
2017-09-29 21:12:15 -06:00
Tom Tromey 6afe2f4a39 Remove unused declaration
There was a leftover cleanup declaration in mi_parse.  Remove it.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mi/mi-parse.c (mi_parse): Remove unused declaration.
2017-09-29 21:12:13 -06:00
Tom Tromey 9813429a72 Don't copy a string in mi_cmd_disassemble
This string copy in mi_cmd_disassemble seems not to be needed, so
don't do it.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Don't copy "oarg".
2017-09-29 21:12:13 -06:00
Tom Tromey 2d6960b456 Remove cleanups from mi-cmd-var.c
This removes some cleanups from mi-cmd-var.c.  varobj_gen_name now
returns a string, simplifying mi_cmd_var_create.  In
mi_cmd_var_delete, a string copy is apparently unnecessary, so it's
simply removed.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* varobj.h (varobj_gen_name): Return std::string.
	* varobj.c (varobj_gen_name): Return std::string.
	* mi/mi-cmd-var.c (mi_cmd_var_create): Use std::string.
	(mi_cmd_var_delete): Don't copy "name".
2017-09-29 21:12:12 -06:00
Tom Tromey 784c453a4f Remove cleanups from mi_cmd_break_insert_1
This changes mi_argv_to_format to return a string, allowing the
removal of some cleanups.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mi/mi-cmd-break.c (mi_argv_to_format): Return std::string.
	(mi_cmd_break_insert_1): Update.
2017-09-29 21:12:11 -06:00
Tom Tromey a9bc57b978 Remove make_cleanup_defer_target_commit_resume
This removes make_cleanup_defer_target_commit_resume in favor of using
scoped_restore.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* target.h (make_scoped_defer_target_commit_resume): Update.
	* target.c (make_scoped_defer_target_commit_resume): Rename from
	make_cleanup_defer_target_commit_resume.  Return a
	scoped_restore.
	* infrun.c (proceed): Use make_scoped_defer_target_commit_resume.
2017-09-29 21:12:10 -06:00
Tom Tromey 9754d8c4c4 Remove some unused declarations
This removes a couple of unused cleanup-related declarations.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* main.c (captured_main_1): Remove unused declaration.
	* spu-multiarch.c (parse_spufs_run): Remove unused declaration.
2017-09-29 20:46:45 -06:00
Tom Tromey 99ef965c6e Remove a cleanup from symtab.c
This removes an unused outer cleanup from symtab.c, and an unused
cleanup declaration as well.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* symtab.c (search_symbols): Remove unused outer cleanup.
	(make_source_files_completion_list): Remove unused declaration.
2017-09-29 20:46:45 -06:00
Tom Tromey 42518ba746 Remove cleanup from mt-tdep.c
Remove a cleanup from mt-tdep.c, using gdb::byte_vector.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* mt-tdep.c (mt_push_dummy_call): Use gdb::byte_vector.
2017-09-29 20:46:44 -06:00
Tom Tromey 726b2169b4 Remove cleanup from xstormy16-tdep.c
This removes a cleanup from xstormy16-tdep.c, using gdb::byte_vector.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* xstormy16-tdep.c (xstormy16_push_dummy_call): Use
	gdb::byte_vector.
2017-09-29 20:46:44 -06:00
Tom Tromey 55b064321e Remove cleanup from complaints.c
This removes a cleanup from complaints.c by using std::string.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* complaints.c (vcomplaint): Use std::string.
2017-09-29 20:46:44 -06:00
Tom Tromey 8abcee9173 Remove some cleanups from tracepoint.c
This removes some cleanups from tracepoint.c by using std::string.  It
also removes some unused cleanup declarations.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* tracepoint.c (trace_variable_command): Use std::string.
	(encode_actions_1): Remove unused declarations.
	(create_tsv_from_upload): Use std::string.
2017-09-29 20:46:44 -06:00
Tom Tromey 6ad94bc766 Remove cleanups from cp-support.c
This removes some cleanups from cp-support.c, using std::string.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* cp-support.c (gdb_demangle): Use std::string.
2017-09-29 20:46:44 -06:00
Tom Tromey 2003f3d839 Remove some cleanups from stack.c
This removes some cleanups from stack.c by using std::string or
gdb::unique_xmalloc_ptr.  One cleanup remains in this file; I did not
remove it here because it is handled in another patch series that has
yet to be resolved.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* stack.c (parse_frame_specification): Use std::string
	(info_frame_command): Use gdb::unique_xmalloc_ptr.
2017-09-29 20:46:43 -06:00
Tom Tromey 8f8accb580 Remove cleanup from tilegx-tdep.c
This removes a cleanup from tilegx-tdep.c, by using gdb::byte_vector.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* tilegx-tdep.c (tilegx_push_dummy_call): Use gdb::byte_vector.
2017-09-29 20:46:43 -06:00
Tom Tromey 200aa7b154 Remove cleanups from utils.c
This removes a couple of cleanups from utils.c through the use of
std::string.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* utils.c (vfprintf_maybe_filtered): Use std::string.
	(vfprintf_unfiltered): Likewise.
2017-09-29 20:46:43 -06:00
Tom Tromey 606aae8a73 Remove cleanup from display_gdb_prompt
This removes a cleanup from display_gdb_prompt by using std::string.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* event-top.c (top_level_prompt): Return std::string.
	(display_gdb_prompt): Update.
2017-09-29 20:46:43 -06:00
Tom Tromey bd413795d3 Introduce string_vprintf
This adds string_vprintf, a va_list variant of string_printf.  This
will be used in later patches.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* unittests/common-utils-selftests.c (format): New function.
	(string_vprintf_tests): New function.
	(_initialize_common_utils_selftests): Register new tests.
	* common/common-utils.c (string_vprintf): New function.
	* common/common-utils.h (string_vprintf): Declare.
2017-09-29 20:46:42 -06:00
Pedro Alves 256642e857 Constify unpack_varlen_hex & fix fallout
I ran into non-const unpack_varlen_hex while working on something
else, and decided to just fix it first.  Ends up constifying a good
deal of remote packet parsing.

gdb/ChangeLog:
2017-09-29  Pedro Alves  <palves@redhat.com>

	* common/rsp-low.c (unpack_varlen_hex): Constify.
	* common/rsp-low.h (unpack_varlen_hex): Constify.
	* linux-nat.c (linux_child_static_tracepoint_markers_by_strid):
	Constify.
	* remote.c (remote_set_permissions, read_ptid)
	(remote_current_thread, remote_get_threads_with_qthreadinfo)
	(remote_static_tracepoint_marker_at)
	(remote_static_tracepoint_markers_by_strid)
	(stop_reply_extract_thread, remote_parse_stop_reply): Constify.
	* tracepoint.c (parse_trace_status, parse_tracepoint_status)
	(parse_tracepoint_definition, parse_tsv_definition)
	(parse_static_tracepoint_marker_definition): Constify.
	* tracepoint.h (parse_static_tracepoint_marker_definition)
	(parse_trace_status, parse_tracepoint_status)
	(parse_tracepoint_definition, parse_tsv_definition): Constify.

gdb/gdbserver/ChangeLog:
2017-09-29  Pedro Alves  <palves@redhat.com>

	* ax.c (gdb_parse_agent_expr): Constify.
	* ax.h (gdb_parse_agent_expr): Constify.
	* mem-break.c (add_breakpoint_condition, add_breakpoint_commands):
	Constify.
	* mem-break.h (add_breakpoint_condition, add_breakpoint_commands): Constify.
	* remote-utils.c (hex_or_minus_one, read_ptid): Constify.
	* remote-utils.h (read_ptid): Constify.
	* server.c (handle_qxfer_exec_file, handle_query, handle_v_cont)
	(process_point_options, process_serial_event): Constify.
	* tracepoint.c (add_tracepoint_action, cmd_qtdp, cmd_qtdpsrc)
	(cmd_qtdv, cmd_qtenable_disable, cmd_qtro, cmd_qtframe, cmd_qtp)
	(cmd_qtbuffer): Constify.
2017-09-29 17:15:36 +01:00
Pedro Alves b6bb34680b gdb/remote.c: Eliminate target_buf/target_buf_size hack
This finally eliminates an old hack left in place when tracepoint RSP
support was migrated from tracepoint.c to remote.c, back in
35b1e5cca0 ("Make tracepoint operations go through target vector.")
over 7 years ago.

Tested on x86_64 GNU/Linux.

gdb/ChangeLog:
2017-09-29  Pedro Alves  <palves@redhat.com>

	* remote.c (target_buf, target_buf_size): Delete.
	(remote_get_noisy_reply): Remove buf_p and sizeof_buf parameters.
	Use the connection's packet buffer instead.
	All callers adjusted.
	(_initialize_remote): Remove references to target_buf and
	target_buf_size.
2017-09-29 17:09:05 +01:00
Pedro Alves 5b9ca4d43b gdbserver/libthread_db: Don't ignore memory reading failures
If we had this in place before, then the regression fixed by the
previous commit would have been been visible is all test runs.  E.g.:

  Running src/gdb/testsuite/gdb.threads/multi-create-ns-info-thr.exp ...
  FAIL: gdb.threads/multi-create-ns-info-thr.exp: continue to breakpoint 6

Debugging manually we'd see this:
  gdbserver: Cannot get thread handle for LWP 1467: generic error

Instead of:
  gdbserver: PID mismatch!  Expected 27472, got 27471

which is misleading - gdbserver didn't 27471, that was stale stack
data from previous function invocations.

gdb/gdbserver/ChangeLog:
2017-09-29  Pedro Alves  <palves@redhat.com>

	* proc-service.c (ps_pdread): Return PS_ERR if reading memory
	fails.
2017-09-29 13:10:39 +01:00
Pedro Alves 94c207e097 Fix gdbserver regression exposed by gdb.threads/multi-create-ns-info-thr.exp
Commit 8629910955 ("Add thread_db_notice_clone to gdbserver")
introduced calls into libthread_db without making sure that the
current thread is pointing to a know-stopped thread.  This resulted in
sometimes thread_db_notice_clone failing->find_one_thread failing like
this, as seen when running gdb.threads/multi-create-ns-info-thr.exp:

~~~
  Thread <6> executing
  Thread <7> executing
  gdbserver: PID mismatch!  Expected 27472, got 27471
  gdbserver: Cannot find thread after clone.

  Thread <1000> executing
  Thread <1001> executing
~~~

Things go south from here and sometimes that ends up resulting in
gdbserver crashing and the test failing.

gdb/gdbserver/ChangeLog:
2017-09-29  Pedro Alves  <palves@redhat.com>

	* linux-low.c (handle_extended_wait): Pass parent thread instead
	of process to thread_db_notice_clone.
	* linux-low.h (thread_db_notice_clone): Replace parent process
	parameter with parent thread parameter.
	* thread-db.c (find_one_thread): Add comment.
	(thread_db_notice_clone): Replace parent process parameter with
	parent thread parameter.  Temporarily switch to the parent thread.
2017-09-29 13:06:34 +01:00
Pedro Alves b2f8eb7a30 Move utils-selftests.c -> gdb/unittests/
This file was only under gdb/ currently because it predates the
gdb/unittests/ directory.

gdb/ChangeLog:
2017-09-28  Pedro Alves  <palves@redhat.com>

	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
	unittests/common-utils-selftests.c.
	(SUBDIR_UNITTESTS_OBS): Add common-utils-selftests.o.
	(COMMON_OBS): Remove utils-selftests.o.
	* utils-selftests.c: Move to ...
	* unittests/common-utils-selftests.c: ... here and rename self
	test to "string_printf".
2017-09-28 22:31:42 +01:00
Doug Evans 08302ed2cb (open_and_init_dwp_file): Protect against some segvs
This is a "tiny patch", no assignment required.

2017-09-28  Alexander Shaposhnikov <alexander.v.shaposhnikov@gmail.com>

	* dwarf2read.c (open_and_init_dwp_file): Protect against dwp_file
	having NULL cus or tus.
2017-09-28 09:24:48 -07:00
Ulrich Weigand 96a5a1d378 Complete tdep move to convert_typed_floating
Many tdep files need to perform conversions between two floating-point
types, usually when accessing FP registers.  Most targets now use the
convert_typed_floating helper routine to do so.  However, a small number
still use the old method of converting via a DOUBLEST.  Since we want
to get rid of DOUBLEST, these targets need to be moved to the new
method as well.

The main obstacle is that for convert_typed_floating we need an actual
*type*, not just a floatformat.

In arm-tdep.c, this is very straightforward, since there is already a
type using the ARM extended floatformat.

For sh-tdep.c and sh64-tdep.c, no such type already exists, so I've
added one to the gdbarch_tdep struct as done on other targets.

gdb/ChangeLog
2017-09-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* arm-tdep.c: (convert_from_extended): Remove.
	(convert_to_extended): Likewise.
	(arm_extract_return_value): Use convert_typed_floating.
	(arm_store_return_value): Likewise.

	* sh-tdep.h (struct gdbarch_tdep): Add sh_littlebyte_bigword_type.
	* sh-tdep.c: Do not include "floatformat.h".
	(sh_littlebyte_bigword_type): New function.
	(sh_register_convert_to_virtual): Use convert_typed_floating.
	(sh_register_convert_to_raw): Likewise.
	* sh64-tdep.c: (struct gdbarch_tdep): Add sh_littlebyte_bigword_type.
	(sh64_littlebyte_bigword_type): New function.
	(sh64_extract_return_value): Use convert_typed_floating.
	(sh64_register_convert_to_virtual): Likewise.
	(sh64_register_convert_to_raw): Likewise.
2017-09-27 19:05:21 +02:00
Ulrich Weigand 0db7851f9f Simplify floatformat_from_type
For historical reasons, the TYPE_FLOATFORMAT element is still set to hold
an array of two floatformat structs, one for big-endian and the other for
little-endian.  When accessing the element via floatformat_from_type,
the code would check the type's byte order and return the appropriate
floatformat.

However, these days this is quite unnecessary, since the type's byte order
is already known at the time the type is allocated and the floatformat is
installed into TYPE_FLOATFORMAT.  Therefore, we can just install the correct
version here.

Also, moves the (now trivially simple) floatformat_from_type accessor to
gdbtypes.{c,h}, since it doesn't really need to be in doublest.c now.

gdb/ChangeLog
2017-09-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* doublest.h (floatformat_from_type): Move to gdbtypes.h.
	* doublest.c (floatformat_from_type): Move to gdbtypes.c.

	* gdbtypes.h (union type_specific): Make field floatformat hold
	just a single struct floatformat, not an array.
	(floatformat_from_type): Move here.
	* gdbtypes.c (floatformat_from_type): Move here.  Update to
	changed TYPE_FLOATFORMAT definition.
	(verify_floatformat): Update to changed TYPE_FLOATFORMAT.
	(recursive_dump_type): Likewise.
	(init_float_type): Install correct floatformat for byte order.
	(arch_float_type): Likewise.
2017-09-27 19:03:36 +02:00
Ulrich Weigand 77b7c781e9 Make init_type/arch_type take a size in bits
This changes the interfaces to init_type and arch_type to take the
type length in bits as input (instead of as bytes).  The routines
assert that the length is a multiple of TARGET_CHAR_BIT.

For consistency, arch_flags_type is changed likewise, so that now
all type creation interfaces always use length in bits.

All callers are updated in the straightforward manner.

The assert actually found a bug in read_range_type, where the
init_integer_type routine was called with a wrong argument (probably
a bug introduced with the conversion to use init_integer_type).

gdb/ChangeLog
2017-09-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* gdbtypes.c (init_type): Change incoming argument from
	length-in-bytes to length-in-bits.  Assert length is a
	multiple of TARGET_CHAR_BITS.
	(arch_type, arch_flags_type): Likewise.
	(init_integer_type): Update call to init_type.
	(init_character_type): Likewise.
	(init_boolean_type): Likewise.
	(init_float_type): Likewise.
	(init_decfloat_type): Likewise.
	(init_complex_type): Likewise.
	(init_pointer_type): Likewise.
	(objfile_type): Likewise.
	(arch_integer_type): Update call to arch_type.
	(arch_character_type): Likewise.
	(arch_boolean_type): Likewise.
	(arch_float_type): Likewise.
	(arch_decfloat_type): Likewise.
	(arch_complex_type): Likewise.
	(arch_pointer_type): Likewise.
	(gdbtypes_post_init): Likewise.

	* dwarf2read.c (dwarf2_init_float_type): Update call to init_type.
	(read_base_type): Likewise.
	* mdebugread.c (basic_type): Likewise.
	* stabsread.c (dbx_init_float_type): Likewise.
	(rs6000_builtin_type): Likewise.
	(read_range_type): Likewise.  Also, fix call to init_integer_type
	with erroneous length argument.

	* ada-lang.c (ada_language_arch_info): Update call to arch_type.
	* d-lang.c (build_d_types): Likewise.
	* f-lang.c (build_fortran_types): Likewise.
	* go-lang.c (build_go_types): Likewise.
	* opencl-lang.c (build_opencl_types): Likewise.
	* jit.c (finalize_symtab): Likewise.
	* gnu-v3-abi.c (build_gdb_vtable_type): Likewise.
	(build_std_type_info_type): Likewise.
	* target-descriptions.c (tdesc_gdb_type): Likewise.  Also,
	update call to arch_flags_type.

	* linux-tdep.c (linux_get_siginfo_type_with_fields): Update call to
	arch_type.
	* fbsd-tdep.c (fbsd_get_siginfo_type): Likewise.
	* windows-tdep.c (windows_get_tlb_type): Likewise.

	* avr-tdep.c (avr_gdbarch_init): Update call to arch_type.
	* ft32-tdep.c (ft32_gdbarch_init): Likewise.
	* m32c-tdep.c (make_types): Likewise.
	* rl78-tdep.c (rl78_gdbarch_init): Likewise.
	(rl78_psw_type): Update call to arch_flags_type.
	* m68k-tdep.c (m68k_ps_type): Update call to arch_flags_type.
	* rx-tdep.c (rx_psw_type): Likewise.
	(rx_fpsw_type): Likewise.
	* sparc-tdep.c (sparc_psr_type): Likewise.
	(sparc_fsr_type): Likewise.
	* sparc64-tdep.c (sparc64_pstate_type): Likewise.
	(sparc64_ccr_type): Likewise.
	(sparc64_fsr_type): Likewise.
	(sparc64_fprs_type): Likewise.
2017-09-27 19:02:00 +02:00
Tom Tromey f21b4d5c59 Constify find_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* findcmd.c (find_command): Constify.
2017-09-27 08:45:11 -06:00
Tom Tromey 643c2ffafe Constify some commands in ada-tasks.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* ada-tasks.c (task_command_1, task_command): Constify.
2017-09-27 08:45:10 -06:00
Tom Tromey 510e5e5627 Constify some commands in symtab.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* symtab.c (maintenance_print_symbol_cache)
	(maintenance_flush_symbol_cache)
	(maintenance_print_symbol_cache_statistics): Constify.
2017-09-27 08:45:09 -06:00
Tom Tromey e503b1919b Constify some commands in inferior.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* inferior.c (detach_inferior_command, kill_inferior_command)
	(inferior_command): Constify.
2017-09-27 08:45:08 -06:00
Tom Tromey 4e00131263 Constify some commands in regcache.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* regcache.c (regcache_print, maintenance_print_registers)
	(maintenance_print_raw_registers)
	(maintenance_print_cooked_registers)
	(maintenance_print_register_groups)
	(maintenance_print_remote_registers): Constify.
2017-09-27 08:45:07 -06:00
Tom Tromey 7776370010 Constify some commands in printcmd.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* printcmd.c (map_display_numbers, undisplay_command)
	(enable_disable_display_command, enable_display_command)
	(disable_display_command): Constify.
2017-09-27 08:45:06 -06:00
Tom Tromey 4495129abd Constify some commands in breakpoint.c
This also makes delete_command static; but now I wonder if it is used
in Insight and should not be touched.

gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* breakpoint.h (delete_command): Don't declare.
	* breakpoint.c (delete_command, enable_once_command)
	(enable_count_command, enable_delete_command, breakpoint_1)
	(maintenance_info_breakpoints, stopin_command, stopat_command)
	(delete_command, delete_trace_command, save_breakpoints)
	(save_breakpoints_command, save_tracepoints_command): Constify.
2017-09-27 08:45:05 -06:00
Tom Tromey 3088cf40a5 Constify some commands in macrocmd.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* macrocmd.c (macro_expand_command, macro_expand_once_command)
	(skip_ws, extract_identifier, macro_define_command)
	(macro_undef_command, macro_list_command): Constify.
2017-09-27 08:45:04 -06:00
Tom Tromey 69f476a36f Constify some commands in infcmd.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* infcmd.c (environment_info, set_environment_command)
	(unset_environment_command, path_info, info_proc_cmd_1)
	(info_proc_cmd_mappings, info_proc_cmd_stat)
	(info_proc_cmd_status, info_proc_cmd_cwd, info_proc_cmd_cmdline)
	(info_proc_cmd_exe, info_proc_cmd_all): Constify.
2017-09-27 08:45:03 -06:00
Tom Tromey c4a3e68e33 Constify some commands in i386-tdep.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* i386-tdep.c (i386_mpx_info_bounds, i386_mpx_set_bounds):
	Constify.
2017-09-27 08:45:03 -06:00
Tom Tromey c9d31bd657 Constify add_symbol_file_from_memory_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* symfile-mem.c (add_symbol_file_from_memory_command): Constify.
2017-09-27 08:45:02 -06:00
Tom Tromey 1f3f85eba6 Constify demangle_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* demangle.c (demangle_command): Constify.
2017-09-27 08:45:01 -06:00
Tom Tromey 9c504b5d34 Constify maintenance_info_program_spaces_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* progspace.c (maintenance_info_program_spaces_command):
	Constify.
2017-09-27 08:45:00 -06:00
Tom Tromey 6663cf9161 Constify some commands in compile.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* compile/compile.c (check_raw_argument, compile_file_command)
	(compile_code_command, compile_print_command): Constify.
2017-09-27 08:44:59 -06:00
Tom Tromey 34e5fa26b7 Constify maintenance_print_reggroups
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* reggroups.c (maintenance_print_reggroups): Constify.
2017-09-27 08:44:58 -06:00
Tom Tromey 8384c35618 Constify save_gdb_index_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* dwarf2read.c (save_gdb_index_command): Constify.
2017-09-27 08:44:57 -06:00
Tom Tromey 884beb0c41 Constify info_probes_stap_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* stap-probe.c (info_probes_stap_command): Constify.
2017-09-27 08:44:57 -06:00
Tom Tromey e0b2930cdc Constify unset_exec_wrapper_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* fork-child.c (unset_exec_wrapper_command): Constify.
2017-09-27 08:44:56 -06:00
Tom Tromey f938677d42 Constify some commands in btrace.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* btrace.c (get_uint, get_context_size, no_chunk)
	(maint_btrace_packet_history_cmd)
	(maint_btrace_clear_packet_history_cmd, maint_btrace_clear_cmd)
	(maint_info_btrace_cmd): Constify.
2017-09-27 08:44:55 -06:00
Tom Tromey 8949cb878d Constify delete_bookmark_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* reverse.c (delete_bookmark_command): Constify.
2017-09-27 08:44:54 -06:00
Tom Tromey ac88e2de83 Constify some commands in remote.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* remote.c (set_memory_packet_size)
	(set_memory_write_packet_size, show_memory_write_packet_size)
	(set_memory_read_packet_size, show_memory_read_packet_size)
	(compare_sections_command, packet_command, remote_put_command)
	(remote_get_command, remote_delete_command): Constify.
2017-09-27 08:44:53 -06:00
Tom Tromey bd4c9dfe67 Constify some commands in mips-tdep.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* mips-tdep.c (show_mipsfpu_command, set_mipsfpu_single_command)
	(set_mipsfpu_double_command, set_mipsfpu_none_command)
	(set_mipsfpu_auto_command): Constify.
2017-09-27 08:44:52 -06:00
Tom Tromey 5e93d4c64b Constify cd_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cli/cli-cmds.h (cd_command): Constify.
	* cli/cli-cmds.c (cd_command): Constify.
2017-09-27 08:44:51 -06:00
Tom Tromey fc41a75bee Constify some commands in thread.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* thread.c (thread_name_command, thread_find_command): Constify.
2017-09-27 08:44:51 -06:00
Tom Tromey 6781007668 Constify some commands in probes.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* probe.c (enable_probes_command, disable_probes_command):
	Constify.
2017-09-27 08:44:50 -06:00
Tom Tromey 1d8b34a7a2 Constify some commands in exec.c, plus symbol_file_command
Note that this commit also changes deprecated_file_changed_hook -- not
used in the tree, but Insight will require a (presumably minor)
change.

gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* symfile.c (symbol_file_command): Constify.
	* gdbcore.h (deprecated_file_changed_hook): Constify.
	* exec.c (deprecated_file_changed_hook, exec_file_command)
	(file_command): Constify.
	* defs.h (symbol_file_command): Constify.
2017-09-27 08:44:49 -06:00
Tom Tromey 442019e118 Constify some commands in remote-fileio.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* remote-fileio.c (set_system_call_allowed)
	(show_system_call_allowed): Constify.
2017-09-27 08:44:48 -06:00
Tom Tromey 2983f7cbdb Constify some commands in tracepoint.c
In addition to the constification, this fixes a command-repeat bug.

gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* tracepoint.c (delete_trace_variable_command)
	(tfind_end_command, tfind_start_command, tfind_pc_command)
	(tfind_tracepoint_command, tfind_line_command)
	(tfind_range_command, tfind_outside_command): Constify.
2017-09-27 08:44:47 -06:00
Tom Tromey 4fd41b2486 Constify some commands in ax-gdb.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* ax-gdb.c (maint_agent_printf_command, agent_command)
	(agent_eval_command): Constify.
2017-09-27 08:44:46 -06:00
Tom Tromey f2fc30156c Constify some linespec functions
This changes a few linespec functions to work on "const char *" and
then fixes up all the callers.  This allows further constification
elsewhere.

gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* tracepoint.c (info_scope_command): Constify.
	* python/python.c (gdbpy_decode_line): Constify.
	* python/py-breakpoint.c (bppy_init): Constify.
	* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Constify.
	* location.h: (new_linespec_location)
	(string_to_event_location_basic, string_to_event_location):
	Constify.
	* location.c (new_linespec_location)
	(string_to_event_location_basic, string_to_event_location):
	Constify.
	* linespec.h (decode_line_with_current_source)
	(decode_line_with_last_displayed, linespec_lex_to_end): Constify.
	* linespec.c (linespec_lex_to_end)
	(decode_line_with_current_source)
	(decode_line_with_last_displayed): Constify.
	* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x):
	Constify.
	* cli/cli-cmds.c (edit_command, list_command): Constify.
	* breakpoint.h (until_break_command, watch_command_wrapper)
	(awatch_command_wrapper, rwatch_command_wrapper)
	(init_ada_exception_breakpoint): Constify.
	* breakpoint.c (break_command_1, dprintf_command)
	(break_range_command, watch_command_wrapper)
	(rwatch_command_wrapper, awatch_command_wrapper)
	(until_break_command, init_ada_exception_breakpoint)
	(strace_marker_create_sals_from_location, trace_command)
	(ftrace_command, strace_command, struct tracepoint): Constify.
	* ax-gdb.c (agent_command_1): Constify.
	* ada-lang.c (ada_exception_sal): Constify.
2017-09-27 08:44:45 -06:00
Tom Tromey 8c2f95f434 Constify some commands in record.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* record.c (cmd_record_delete, cmd_record_stop, cmd_record_save)
	(cmd_record_goto_begin, cmd_record_goto_end, get_insn_number)
	(get_context_size, no_chunk, get_insn_history_modifiers)
	(cmd_record_insn_history, get_call_history_modifiers)
	(cmd_record_call_history): Constify.
2017-09-27 08:44:44 -06:00
Tom Tromey a0d65762f1 Constify some commands in source.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* source.c (show_substitute_path_command)
	(unset_substitute_path_command, set_substitute_path_command):
	Constify.
2017-09-27 08:44:43 -06:00
Tom Tromey 5897114462 Constify commands maint.c, plus maintenance_print_type
In addition to the constification, this fixes a command-repeat bug.

gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* typeprint.c (maintenance_print_type): Constify.
	* maint.c (maintenance_dump_me, maintenance_demangle)
	(maintenance_time_display, maintenance_info_sections)
	(maintenance_print_statistics, maintenance_deprecate)
	(maintenance_undeprecate): Constify.
	(maintenance_do_deprecate): Constify.  Use std::string.
	(maintenance_selftest): Constify.
	* gdbtypes.h (maintenance_print_type): Constify.
2017-09-27 08:44:43 -06:00
Tom Tromey c482f52ccf Constify unwind_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* hppa-tdep.c (unwind_command): Constify.
2017-09-27 08:44:42 -06:00
Tom Tromey e100df1a2e Constify some commands in target-descriptions.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* target-descriptions.c (unset_tdesc_filename_cmd)
	(maint_print_c_tdesc_cmd, maintenance_check_xml_descriptions):
	Constify.
2017-09-27 08:44:41 -06:00
Tom Tromey 31d56ade0e Constify maintenance_print_dummy_frames
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* dummy-frame.c (maintenance_print_dummy_frames): Constify.
2017-09-27 08:44:40 -06:00
Tom Tromey b961da0bb0 Constify some commands in tui.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* tui/tui.c (tui_enable_command, tui_disable_command): Constify.
2017-09-27 08:44:39 -06:00
Tom Tromey e2d8ae16c0 Constify tui_reg_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* tui/tui-regs.c (tui_reg_command): Constify.
2017-09-27 08:44:38 -06:00
Tom Tromey 863779b0c6 Constify some commands in skip.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* skip.c (skip_file_command, skip_function_command)
	(skip_enable_command, skip_disable_command, skip_delete_command):
	Constify.
2017-09-27 08:44:37 -06:00
Tom Tromey cdb34d4a1c Constify some commands in record-btrace.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* record-btrace.c (cmd_record_btrace_bts_start)
	(cmd_record_btrace_pt_start): Constify.
2017-09-27 08:44:37 -06:00
Tom Tromey e99c83e741 Constify some commands in symmisc.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* symmisc.c (maintenance_print_symbols)
	(maintenance_print_msymbols, maintenance_print_objfiles)
	(maintenance_info_symtabs, maintenance_check_symtabs)
	(maintenance_expand_symtabs, maintenance_info_line_tables):
	Constify.
2017-09-27 08:44:36 -06:00
Tom Tromey 32faf971cd Constify new_ui_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* top.c (new_ui_command): Constify.
2017-09-27 08:44:35 -06:00
Tom Tromey 2cf311ebad Constify some commands in symfile.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* symfile.c (add_symbol_file_command)
	(remove_symbol_file_command, list_overlays_command)
	(map_overlay_command, unmap_overlay_command)
	(overlay_auto_command, overlay_manual_command)
	(overlay_off_command, overlay_load_command): Constify.
2017-09-27 08:44:34 -06:00
Tom Tromey e6738699f7 Constify some commands in spu-tdep.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* spu-tdep.c (info_spu_event_command, info_spu_signal_command)
	(info_spu_mailbox_command, info_spu_dma_command)
	(info_spu_proxydma_command): Constify.
2017-09-27 08:44:33 -06:00
Tom Tromey aa360cd5dd Constify some commands in cli-logging.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cli/cli-logging.c (set_logging_on, set_logging_off): Constify.
2017-09-27 08:44:32 -06:00
Tom Tromey 898241a5ba Constify user_defined_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cli/cli-script.c (user_defined_command): Constify.
2017-09-27 08:44:31 -06:00
Tom Tromey 2d0ac1068b Constify commands in cli-dump.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cli/cli-dump.c (dump_memory_command, dump_value_command)
	(dump_srec_memory, dump_srec_value, dump_ihex_memory)
	(dump_ihex_value, dump_verilog_memory, dump_verilog_value)
	(dump_tekhex_memory, dump_tekhex_value, dump_binary_memory)
	(dump_binary_value, append_binary_memory, append_binary_value):
	Constify.
	(struct dump_context) <func>: Constify.
	(add_dump_command): Update.
2017-09-27 08:44:31 -06:00
Tom Tromey dede02ce4d Constify some commands in cli-cmds.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cli/cli-cmds.c (show_version, show_configuration)
	(source_command, show_user): Constify.
2017-09-27 08:44:30 -06:00
Tom Tromey d3cb6b99c5 Constify maintenance_print_target_stack
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* target.c (maintenance_print_target_stack): Constify.
2017-09-27 08:44:29 -06:00
Tom Tromey 1970a12f32 Constify interpreter_exec_cmd
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* interps.c (interpreter_exec_cmd): Constify.
2017-09-27 08:44:28 -06:00
Tom Tromey 4124365135 Constify cmd_record_full_restore
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* record-full.c (cmd_record_full_restore): Constify.
2017-09-27 08:44:27 -06:00
Tom Tromey 4465d9db2f Constify some functions in memattr.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* memattr.c (enable_mem_command, disable_mem_command)
	(delete_mem_command): Constify.
2017-09-27 08:44:26 -06:00
Tom Tromey ad25e4234a Constify show_convenience
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* value.c (show_convenience): Constify.
2017-09-27 08:44:25 -06:00
Tom Tromey d64097b17c Constify core_file_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* gdbcore.h (core_file_command): Update.
	* corefile.c (core_file_command): Constify.
2017-09-27 08:44:25 -06:00
Tom Tromey 4d4589ef76 Constify maintenance_print_user_registers
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* user-regs.c (maintenance_print_user_registers): Constify.
2017-09-27 08:44:24 -06:00
Tom Tromey 32a7bf17c9 Constify maintenance_cplus_namespace
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cp-namespace.c (maintenance_cplus_namespace): Constify.
2017-09-27 08:44:23 -06:00
Tom Tromey 4a47555179 Constify first_component_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cp-support.c (first_component_command): Constify.
2017-09-27 08:44:22 -06:00
Tom Tromey 990b9f9f5a Constify some functions in psymtab.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* psymtab.c (maintenance_print_psymbols)
	(maintenance_info_psymtabs, maintenance_check_psymtabs):
	Constify.
2017-09-27 08:44:21 -06:00
Tom Tromey c281872eec Constify display_tib
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* windows-tdep.c (display_tib): Constify.
2017-09-27 08:44:20 -06:00
Tom Tromey 5b64bf744c Constify two functions in linux-fork.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* linux-fork.c (delete_checkpoint_command)
	(detach_checkpoint_command): Constify.
2017-09-27 08:44:19 -06:00
Tom Tromey 4ada038f6a Constify two functions in cp-abi.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cp-abi.c (set_cp_abi_cmd, show_cp_abi_cmd): Constify.
2017-09-27 08:44:19 -06:00
Tom Tromey 57f5a81bd2 Constify dump_arc_instruction_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* arc-tdep.c (dump_arc_instruction_command): Constify.
2017-09-27 08:44:18 -06:00
Tom Tromey b0a8e6c443 Constify two functions in valprint.c
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* valprint.c (set_radix, show_radix): Constify.
2017-09-27 08:44:17 -06:00
Tom Tromey 8d97dc1cea Constify info_probes_dtrace_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* dtrace-probe.c (info_probes_dtrace_command): Constify.
2017-09-27 08:44:16 -06:00
Tom Tromey eb7c454d73 Constify not_just_help_class_command
gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* command.h (not_just_help_class_command): Update.
	* cli/cli-decode.h (not_just_help_class_command): Update.
	* cli/cli-decode.c (not_just_help_class_command): Constify.
2017-09-27 08:44:15 -06:00
Tom Tromey e4e3333549 Constify add_cmd gdb_bfd.c
This constifies a command function in gdb_bfd.c.

gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* gdb_bfd.c (maintenance_info_bfds): Constify.
2017-09-27 08:44:14 -06:00
Tom Tromey 0450cc4ce8 Add add_cmd function overloads
This adds two add_cmd overloads: one whose callback takes a const char *,
and one that doesn't accept a function at all.  The no-function overload
was introduced to avoid ambiguity when NULL was passed as the function.

Long term the goal is for all commands to take const arguments, and
for the non-const variants to be removed entirely.

gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* cli/cli-decode.c (add_cmd, set_cmd_cfunc): New function
	overloads.
	(do_add_cmd): Rename from add_cmd.  Don't call set_cmd_cfunc.
	(do_const_cfunc): New function.
	(cmd_cfunc_eq): New overload.
	(cli_user_command_p): Check do_const_cfunc.
	* cli/cli-decode.h (struct cmd_list_element) <function>: New field
	const_cfunc.
	* command.h (add_cmd): Add const overload and no-function
	overload.
	(set_cmd_cfunc): Add const overload.
	(cmd_const_cfunc_ftype): Declare.
	(cmd_cfunc_eq): Add const overload.
	* breakpoint.c, cli-cmds.c, cli-dump.c, guile/scm-cmd.c,
	python/py-cmd.c, target.c, tracepoint.c: Use no-function add_cmd
	overload.
2017-09-27 08:44:14 -06:00
Tom Tromey a9bbfbd85f Add support for __VA_OPT__
C++2a adds a "__VA_OPT__" feature that can be used to control the
pesky "," emission when the final (variable) argument of a variadic
macro is empty.  This patch implements this feature for gdb.  (A patch
to implement it for gcc is pending.)

gdb/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* macroexp.c (get_next_token_for_substitution): New function.
	(substitute_args): Call it.  Check for __VA_OPT__.

gdb/testsuite/ChangeLog
2017-09-27  Tom Tromey  <tom@tromey.com>

	* gdb.base/macscp.exp: Add __VA_OPT__ tests.
2017-09-27 07:51:33 -06:00
Walfred Tedeschi 5230b05a94 dwarf2read: Restrict ICC workaround to ICC<14
GDB has a workaround for DWARF output by ICC, related to missing
DW_AT_declaration on incomplete types.  The bug was fixed in ICC 14,
so this commit adjusts GDB accordingly.

For the version check, this adds a new parser function for the ICC
producer string.  While at it, it also adds unit tests for the
producer parsing covering the new function and preexisting parsers.

gdb/ChangeLog:
2017-09-26  Walfred Tedeschi  <walfred.tedeschi@intel.com>
	    Pedro Alves <palves@redhat.com>

	* dwarf2read.c (dwarf2_cu): Remove field producer_is_icc and add
	producer_is_icc_lt_14.
	(producer_is_icc_lt_14): New function.
	(check_producer): Add code for checking version of ICC.
	(producer_is_icc): Move to producer.c.
	(read_structure_type): Restrict ICC workaround to ICC<14.
	* producer.c: Include selftest.h.
	(producer_is_icc, producer_parsing_tests, _initialize_producer):
	New functions.
	* producer.h (producer_is_icc): New declaration.
2017-09-26 18:32:00 +01:00
Walfred Tedeschi b32b108aba Move GDB producer parsing routines to a separate file
gdb/ChangeLog:
2017-09-26  Walfred Tedeschi  <walfred.tedeschi@intel.com>

	* Makefile.in (SFILES): Add producer.c.
	(COMMON_OBS): Add producer.o
	* amd64-tdep.c (producer.h): Add new include.
	* dwarf2read.c (producer.h): Add new include.
	* producer.c: New file.
	* producer.h: New file.
	* utils.c (producer_is_gcc, producer_is_gcc_ge_4): Move to
	producer.c.
	* utils.h (producer_is_gcc, producer_is_gcc_ge_4): Move to
	producer.h.
2017-09-26 18:26:41 +01:00
Sergio Durigan Junior 75352e283f Use "switch_to_thread" more thoroughly on gdbserver
This is a technical debt that I left when I ported "switch_to_thread"
to gdbserver.  It's a simple patch that converts occurences of:

  current_thread = find_thread_ptid (ptid);

to:

  switch_to_thread (ptid);

This patch also converts a simple "if" to a "gdb_assert" on
gdbserver's version of "switch_to_thread":

  gdb_assert (ptid != minus_one_ptid);

This change makes the code more similar to what GDB already does.

Regtested on BuildBot.

gdb/gdbserver/ChangeLog:
2017-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>

	* gdbthread.h: Include "common-gdbthread.h".
	* inferiors.c (switch_to_thread): Use "gdb_assert" instead of
	"if" when validating the ptid.
	* remote-utils.c: Include "gdbthread.h".
	(prepare_resume_reply): Use "switch_to_thread".
	* target.c (done_accessing_memory): Likewise.
2017-09-26 12:50:25 -04:00
Matthias Klose 5007d765ae Allow linking GDB with ncursesw
Triggered by https://launchpad.net/bugs/1275210, to be able to cope
with UTF-8 characters in gdbtui.

Reference:
  https://sourceware.org/ml/gdb-patches/2017-09/msg00356.html

gdb/ChangeLog:
2017-09-26  Matthias Klose  <doko@ubuntu.com>

	* configure.ac: Search ncursesw before ncurses.
	Check ncursesw/ncurses.h before ncurses/ncurses.h.
	* gdb_curses.h: Include <ncursesw/ncurses.h>
	* config.in, configure: Regenerate.
2017-09-26 16:23:19 +01:00
Rainer Orth 281c444773 Remove support for Solaris < 10 (PR gdb/22185)
Given that GCC has obsoleted/removed support for Solaris 9 in GCC 4.9/5 in 2013:

    https://gcc.gnu.org/gcc-4.9/changes.html
    https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html

and the last gdb version that can be compiled with gcc 4.9 is 7.12.1 only when
configured with --disable-build-with-cxx, it's time to obsolete/remove support
for Solaris < 10.

This patch does this, simplifying configure.nat along the way (only a single
sol2 configuration with variants for i386 and sparc).

Some configure checks for older Solaris versions can go, too, and the check
for libthread_db.so.1 removed:

* Since Solaris 10, dlopen has moved to libc and libdl.so is just a
  filter on ld.so.1, so no need to check.

* $RDYNAMIC is already handled above (and is a no-op with Solaris ld
  anyway).

Both proc-service.c and sol-thread.c lose support for (Solaris-only)
PROC_SERVICE_IS_OLD.

The attached revised patch has been tested on sparcv9-sun-solaris2.10,
sparcv9-sun-solaris2.11.4, amd64-pc-solaris2.10, amd64-pc-solaris2.11.4,
and x86_64-pc-linux-gnu.

I've also started an i386-pc-solaris2.9 build to check that it really
stops as expected.

	PR gdb/22185
	* configure.host <*-*-solaris2.[01], *-*-solaris2.[2-9]*>: Mark as
	obsolete.
	Use gdb_host sol2 for i[34567]86-*-solaris2*, x86_64-*-solaris2*.
	Remove i386sol2 support.
	* configure.nat <i386sol2>: Remove.
	<sol2-64>: Fold into ...
	<sol2>: ... this.
	Move common settings to default section.
	Add sol-thread.o.
	* configure.tgt <i[34567]86-*-solaris2.1[0-9]*,
	x86_64-*-solaris2.1[0-9]*>: Rename to ...
	<i[34567]86-*-solaris2*, x86_64-*-solaris2*>: ... this.
	<i[34567]86-*-solaris*>: Remove.
	<sparc-*-solaris2.[0-6], sparc-*-solaris2.[0-6].*>: Remove.

	* configure.ac: Remove wctype in libw check.
	(_MSE_INT_H): Don't define on Solaris 7-9.
	<solaris*>: Remove libthread_db.so.1 check.
	* configure: Regenerate.
	* config.in: Regenerate.

	* proc-service.c: Remove PROC_SERVICE_IS_OLD handling.
	(gdb_ps_prochandle_t, gdb_ps_read_buf_t, gdb_ps_write_buf_t)
	(gdb_ps_size_t): Remove.
	Use base types in users.
	* sol-thread.c: Likewise, also for gdb_ps_addr_t.

	* NEWS (Changes since GDB 8.0): Document Solaris 2.0-9 removal.
2017-09-26 15:19:10 +02:00
Rainer Orth 39b06c208f Fix gdb 8.1 Solaris/SPARC compilation (PR build/22206)
When testing my Solaris < 10 removal patch on Solaris/SPARC, I found
that gdb mainline is currently broken there due to the recent SPARC M7
ADI patches:

/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:1876:0: error: "PSR_ICC" redefined [-Werror]
 #define PSR_ICC  0x00f00000
 ^
In file included from /usr/include/v7/sys/privregs.h:24:0,
                 from /usr/include/sys/regset.h:420,
                 from /usr/include/sys/ucontext.h:21,
                 from /usr/include/sys/signal.h:231,
                 from /usr/include/sys/procset.h:23,
                 from /usr/include/sys/wait.h:25,
                 from /usr/include/stdlib.h:21,
                 from build-gnulib/import/stdlib.h:36,
                 from /vol/src/gnu/gdb/gdb/local/gdb/common/common-defs.h:53,
                 from /vol/src/gnu/gdb/gdb/local/gdb/defs.h:28,
                 from /vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:20:
/usr/include/v7/sys/psr.h:35:0: note: this is the location of the previous definition
 #define PSR_ICC  0x00F00000 /* integer condition codes */
 ^
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:1878:0: error: "PSR_IMPL" redefined [-Werror]
 #define PSR_IMPL 0xf0000000
 ^
In file included from /usr/include/v7/sys/privregs.h:24:0,
                 from /usr/include/sys/regset.h:420,
                 from /usr/include/sys/ucontext.h:21,
                 from /usr/include/sys/signal.h:231,
                 from /usr/include/sys/procset.h:23,
                 from /usr/include/sys/wait.h:25,
                 from /usr/include/stdlib.h:21,
                 from build-gnulib/import/stdlib.h:36,
                 from /vol/src/gnu/gdb/gdb/local/gdb/common/common-defs.h:53,
                 from /vol/src/gnu/gdb/gdb/local/gdb/defs.h:28,
                 from /vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:20:
/usr/include/v7/sys/psr.h:41:0: note: this is the location of the previous definition
 #define PSR_IMPL 0xF0000000 /* implementation */
 ^

Comparing Solaris 11.4 <v7/sys/psr.h> and sparc64-tdep.c, there are more
inconsistencies:

<v7/sys/psr.h>:

#define	PSR_S		0x00000080	/* supervisor mode */
#define	PSR_ICC		0x00F00000	/* integer condition codes */
#define	PSR_VER		0x0F000000	/* mask version */
#define	PSR_IMPL	0xF0000000	/* implementation */
#define	PSR_RSV		0x000FC000	/* reserved */

sparc64-tdep.c:

#define PSR_S		0x00000080
#define PSR_ICC		0x00f00000
#define PSR_VERS	0x0f000000
#define PSR_IMPL	0xf0000000
#define PSR_V8PLUS	0xff000000
#define PSR_XCC		0x000f0000

Apart from the capitalization differences that trip g++, the names
differ (PSR_VER vs. PSR_VERS), PSR_XCC is included in Solaris' PSR_RSV,
and there's no PSR_V8PLUS on Solaris either.

/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c: In function `int adi_tag_fd()':
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:296:63: error: format `%d' expects argument of type `int', but argument 4 has type `pid_t {aka long int}' [-Werror=format=]
   snprintf (cl_name, sizeof(cl_name), "/proc/%d/adi/tags", pid);
                                                               ^
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c: In function `bool adi_is_addr_mapped(CORE_ADDR, std::size_t)':
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:314:64: error: format `%d' expects argument of type `int', but argument 4 has type `pid_t {aka long int}' [-Werror=format=]
   snprintf (filename, sizeof filename, "/proc/%d/adi/maps", pid);
                                                                ^

You cannot always print a pid_t, which can be either int or long on
Solaris, as an int.

Obviously, the ADI patch which modifies code shared between all SPARC
targets, hasn't been tested on anything but Linux/SPARC.

The patch below includes the minimal fixes necessary to unbreak the
Solaris/SPARC build.

However, as detailed in the PR, there's more breakage here: apart from
not bothering to implement ADI support on Solaris, the code contains
several more changes to shared/common SPARC code that are simply wrong
on anything but Linux/SPARC.

The patch was tested on sparcv9-sun-solaris2.10 and
sparcv9-sun-solaris2.11.4 (build and gdb/gdb gdb/gdb smoke test only).

	PR build/22206
	* sparc64-tdep.c (adi_tag_fd): Print pid as long.
	(adi_is_addr_mapped): Likewise.
	(PSR_ICC): Don't redefine.
	(PSR_IMPL): Likewise.
2017-09-26 14:58:53 +02:00
Thomas Preud'homme df8899e5c8 Fix FAILs in compare-sections.exp
compare-sections.exp has two cases that are not handled appropriately:
1) value read with msb set
2) error while patching that section

This patch adapts the "get value of read-only section" test to print
the value as an unsigned integer to fix 1) and test for the error
message to not set the written variable if read-only section cannot
be written to so as to solve 2).

2017-09-26  Thomas Preud'homme  <thomas.preudhomme@arm.com>
	    Pedro Alves  <palves@redhat.com>

gdb/testsuite/
	* gdb.base/compare-sections.exp (get value of read-only section): Read
	as unsigned value.
	(corrupt read-only section): Likewise and don't set written if patching
	failed.
2017-09-26 09:57:18 +01:00
Tom Tromey 6c3e20f177 Remove the last cleanup from regcache.c
This removes the last cleanup from regcache.c by changing one function
to use std::string.

gdb/ChangeLog
2017-09-25  Tom Tromey  <tom@tromey.com>

	* regcache.c (regcache::dump): Use string_printf.
2017-09-25 19:54:09 -06:00
Tom Tromey b292235f66 Remove make_cleanup_regcache_invalidate
This removes make_cleanup_regcache_invalidate in favor of a simple
RAII class that handles register invalidation.

gdb/ChangeLog
2017-09-25  Tom Tromey  <tom@tromey.com>

	* regcache.c (class regcache_invalidator): New.
	(struct register_to_invalidate): Remove.
	(make_cleanup_regcache_invalidate): Remove.
	(regcache::raw_write): Use regcache_invalidator.
2017-09-25 19:54:08 -06:00
Tom Tromey 9ac86b52da Remove make_cleanup_regcache_xfree
This removes make_cleanup_regcache_xfree in favor of using
std::unique_ptr as the return type of frame_save_as_regcache.

gdb/ChangeLog
2017-09-25  Tom Tromey  <tom@tromey.com>

	* spu-tdep.c (spu2ppu_sniffer): Update.
	* regcache.h (make_cleanup_regcache_xfree): Don't declare.
	* regcache.c (do_regcache_xfree, make_cleanup_regcache_xfree):
	Remove.
	* ppc-linux-tdep.c (ppu2spu_sniffer): Update.
	* mi/mi-main.c (mi_cmd_data_list_changed_registers): Update.
	* frame.h (frame_save_as_regcache): Return std::unique_ptr.
	* frame.c (frame_save_as_regcache): Return std::unique_ptr.
	(frame_pop): Update.
2017-09-25 19:54:07 -06:00
Tom Tromey c0e383c638 Remove regcache_xfree
This removes regcache_xfree in favor of plain "delete".

gdb/ChangeLog
2017-09-25  Tom Tromey  <tom@tromey.com>

	* spu-tdep.c (spu2ppu_dealloc_cache): Use delete.
	* regcache.h (regcache_xfree): Don't declare.
	* regcache.c (regcache_xfree): Remove.
	(do_regcache_xfree): Use delete.
	* ppc-linux-tdep.c (ppu2spu_dealloc_cache): Use delete.
	* linux-fork.c (free_fork): Use delete.
	(fork_save_infrun_state): Likewise.
	* jit.c (jit_dealloc_cache): Use delete.
	* infrun.c (discard_infcall_suspend_state): Use delete.
2017-09-25 19:54:06 -06:00
Tom Tromey 791199cc75 Remove regcache_xmalloc
This patch removes regcache_xmalloc in favor of plain "new".

gdb/ChangeLog
2017-09-25  Tom Tromey  <tom@tromey.com>

	* regcache.h (regcache_xmalloc): Don't declare.
	(regcache_raw_set_cached_value): Update comment.
	* regcache.c (regcache_xmalloc): Remove.
	* ppc-linux-tdep.c (ppu2spu_sniffer): Use new.
	* jit.c (jit_frame_sniffer): Use new.
	* frame.c (frame_save_as_regcache): Use new.
2017-09-25 19:54:05 -06:00
Andreas Arnez 289e23aa03 S390: Document guarded-storage register support
This documents the newly added support for guarded-storage registers on
IBM z.

gdb/ChangeLog:

	* NEWS: Advertise support for guarded-storage registers on IBM z.

gdb/doc/ChangeLog:

	* gdb.texinfo (S/390 and System z Features): Document the new
	features org.gnu.gdb.s390.gs and org.gnu.gdb.s390.gsbc.
2017-09-25 16:02:24 +02:00
Andreas Arnez ad3396348e S390: Add guarded-storage register support to gdbserver
Enable gdbserver to deal with the new guarded-storage register sets.

gdb/gdbserver/ChangeLog:

	* configure.srv (s390*-*-linux*): Add s390-gs-linux64.o and
	s390x-gs-linux64.o to srv_regobj.  Add s390-gs-linux64.xml,
	s390x-gs-linux64.xml, s390-gs.xml, and s390-gsbc.xml to
	srv_xmlfiles.  Add s390-gs-linux64-ipa.o and
	s390x-gs-linux64-ipa.o to ipa_obj.
	* linux-s390-low.c (HWCAP_S390_GS): New define.
	(s390_fill_gs, s390_store_gs, s390_fill_gsbc, s390_store_gsbc):
	New functions.
	(s390_regsets): Add regsets for NT_S390_GS_CB and NT_S390_GS_BC.
	(s390_arch_setup): Check for guarded-storage support and choose
	appropriate tdesc.
	(initialize_low_arch): Invoke init_registers_s390_gs_linux64 and
	init_registers_s390x_gs_linux64.
	* linux-s390-tdesc.h (enum s390_linux_tdesc) <S390_TDESC_GS>: New
	enum value.
	(init_registers_s390x_gs_linux64, tdesc_s390x_gs_linux64)
	(init_registers_s390_gs_linux64, tdesc_s390_gs_linux64): Declare.
2017-09-25 16:02:23 +02:00
Andreas Arnez 1b63490c91 S390: Add guarded-storage register support to GDB
Recognize targets with the new guarded-storage feature and then present
the guarded-storage registers and the Linux-specific guarded-storage
broadcast control block appropriately.

gdb/ChangeLog:

	* s390-linux-nat.c (have_regset_gs): New static variable.
	(s390_linux_fetch_inferior_registers): Handle guarded-storage
	control block and guarded-storage broadcast control regsets.
	(s390_read_description): Detect whether the target has
	guarded-storage support, return appropriate tdesc.
	* s390-linux-tdep.c (features/s390-gs-linux64.c): New include.
	(features/s390x-gs-linux64.c): Likewise.
	(struct gdbarch_tdep) <have_gs>: New field.
	(s390_regmap_gs, s390_regmap_gsbc, s390_gs_regset)
	(s390_gsbc_regset): New variables.
	(s390_iterate_over_regset_sections): Iterate over s390_gs_regset
	and s390_gsbc_regset, if applicable.
	(s390_core_read_description): Check whether core file was from a
	target with guarded-storage support; include appropriate regsets.
	(s390_gdbarch_init): Add registers for guarded-storage support.
	(_initialize_s390_tdep): Initialize new target descriptions that
	include registers for guarded-storage support.
	* s390-linux-tdep.h (HWCAP_S390_GS, S390_GSD_REGNUM)
	(S390_GSSM_REGNUM, S390_GSEPLA_REGNUM)
	(S390_BC_GSD_REGNUM, S390_BC_GSSM_REGNUM): New defines.
	(S390_NUM_REGS): Adjust macro definition.
	(s390_gs_regset, s390_gsbc_regset, tdesc_s390_gs_linux64)
	(tdesc_s390x_gs_linux64): New declarations.
2017-09-25 16:02:23 +02:00
Andreas Arnez 96235dc1ac S390: Add guarded-storage register definitions and tdescs
Newer Linux kernel versions offer two new register sets in support of the
z/Architecture's guarded storage facility.  This patch adds XML
descriptions and the respective autogenerated .c and .dat files for
s390/s390x targets with this feature.

gdb/ChangeLog:

	* features/s390-gs-linux64.xml: New file.
	* features/s390-gs.xml: New file.
	* features/s390-gsbc.xml: New file.
	* features/s390x-gs-linux64.xml: New file.
	* features/Makefile (WHICH): Add s390-gs-linux64 and
	s390x-gs-linux64.
	(s390-gs-linux64-expedite, s390x-gs-linux64-expedite): New macros.
	(XMLTOC): Add s390-gs-linux64.xml and s390x-linux64.xml.
	* features/s390-gs-linux64.c: New generated file.
	* features/s390x-gs-linux64.c: New file.
	* regformats/s390-gs-linux64.dat: New file.
	* regformats/s390x-gs-linux64.dat: New file.
2017-09-25 16:02:23 +02:00
Tom Tromey b4a7c69968 Removed unused declaration
An earlier patch of mine removed make_cleanup_override_quit_handler,
but neglected to remove the declaration.  This patch removes it.
Tested by rebuilding.  I'm committing this as obvious.

ChangeLog
2017-09-23  Tom Tromey  <tom@tromey.com>

	* defs.h (make_cleanup_override_quit_handler): Don't declare.
2017-09-23 14:13:12 -06:00
Tom Tromey c2f97536b7 Change type of scoped_input_handler::m_quit_handler
Simon pointed out that scoped_input_handler::m_quit_handler must have
the correct scoped_restore_tmpl type, to avoid binding to a temporary.
This patch fixes the problem.

gdb/ChangeLog
2017-09-22  Tom Tromey  <tom@tromey.com>

	* utils.c (class scoped_input_handler) <m_quit_handler>: Change
	type to scoped_restore_tmpl.
	<scoped_input_handler>: Initialize m_quit_handler directly.

Reviewed-By: Pedro Alves <palves@redhat.com>
2017-09-22 15:51:28 -06:00
Sergio Durigan Junior 43573013c9 Get rid of "gdb_dirbuf" and use "getcwd (NULL, 0)"
Currently we have "current_directory" and "gdb_dirbuf" globals, which
means that we basically have two possible places to consult when we
want to know GDB's current working directory.

This is not ideal and can lead to confusion.  Moreover, the way we're
using "gdb_difbuf" along with "getcwd" is problematic because we
declare the buffer with "1024" elements hardcoded, which does not take
into account longer pathnames that are possible in many filesystems.
Using "PATH_MAX" would also not be a solution because of portability
problems.  Therefore, the best solution is to rely on the fact that
"getcwd (NULL, 0)" will "do the right thing" and return a
heap-allocated string containing the full path.  With the new "getcwd"
module from gnulib, it is now possible to do that without worrying
about breaking some host.

With this patch "current_directory" is now the only place to check for
GDB's cwd.

Reviewed-by: Pedro Alves <palves@redhat.com>

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

	* cli/cli-cmds.c (pwd_command): Use "getcwd (NULL, 0)".
	(cd_command): Likewise.  Free "current_directory" before
	assigning to it.
	* main.c (captured_main_1): Use "getcwd (NULL, 0)".
	* mi/mi-cmd-env.c (mi_cmd_env_pwd): Likewise.
	* top.c (gdb_dirbuf): Remove global declaration.
	* top.h (gdb_dirbuf): Likewise.
2017-09-22 13:28:16 -04:00
Sergio Durigan Junior 6ec2e0f5bd Import "glob" and "getcwd" modules from gnulib
These two modules are necessary because of the rework that will be
done in the "change directory" logic on GDB/gdbserver in the next
commits.

First, we will get rid of the "gdb_dirbuf" global variable and instead
rely on the fact that "getcwd (NULL, 0)", which is a GNU extension,
returns a heap-allocated string with the necessary bytes to hold the
full path.  This is a good practice not only because globals are not
ideal but also because there is no good way to know beforehand the
size of the full pathname allowed in the filesystem ("PATH_MAX" is not
portable and does not reflect all the possible filesystems out there).

We will also have a way to "cd" to a directory also on gdbserver, but
in order to do that uniformly, there must be a way to do tilde
expansion on directories provided by the user.  Currently, GDB uses
"tilde_expand" from readline to do that, but gdbserver doesn't link
against readline and therefore cannot use this function.  The solution
is to use "glob" instead, which can perform tilde expansion as a GNU
extension.  Therefore, we need gnulib's version of "glob".

A special note is necessary for gdb/ser-tcp.c.  It defines "close" as
"closesocket" on Win32 targets.  If we leave the code as is, this
would conflict with gnulib's definition of "close".  Therefore, in
order to keep the same code path from before this import, I decided to
"#undef close" first, and then let the original (re)definition of it
take place.

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

	* gnulib/aclocal.m4: Regenerate.
	* gnulib/config.in: Regenerate.
	* gnulib/configure: Regenerate.
	* gnulib/import/Makefile.am: Regenerate.
	* gnulib/import/Makefile.in: Regenerate.
	* gnulib/import/assure.h: New file.
	* gnulib/import/at-func.c: Likewise
	* gnulib/import/chdir-long.c: New file.
	* gnulib/import/chdir-long.h: New file.
	* gnulib/import/cloexec.c: New file.
	* gnulib/import/cloexec.h: New file.
	* gnulib/import/close.c: New file.
	* gnulib/import/closedir.c: New file.
	* gnulib/import/dirent-private.h: New file.
	* gnulib/import/dup-safer.c: New file.
	* gnulib/import/dup.c: New file.
	* gnulib/import/dup2.c: New file.
	* gnulib/import/error.c: New file.
	* gnulib/import/error.h: New file.
	* gnulib/import/exitfail.c: New file.
	* gnulib/import/exitfail.h: New file.
	* gnulib/import/fchdir.c: New file.
	* gnulib/import/fcntl.c: New file.
	* gnulib/import/fcntl.in.h: New file.
	* gnulib/import/fd-hook.c: New file.
	* gnulib/import/fd-hook.h: New file.
	* gnulib/import/fd-safer.c: New file.
	* gnulib/import/fdopendir.c: New file.
	* gnulib/import/filename.h: New file.
	* gnulib/import/filenamecat-lgpl.c: New file.
	* gnulib/import/filenamecat.h: New file.
	* gnulib/import/fstat.c: New file.
	* gnulib/import/fstatat.c: New file.
	* gnulib/import/getcwd-lgpl.c: New file.
	* gnulib/import/getcwd.c: New file.
	* gnulib/import/getdtablesize.c: New file.
	* gnulib/import/getlogin_r.c: New file.
	* gnulib/import/getprogname.c: New file.
	* gnulib/import/getprogname.h: New file.
	* gnulib/import/gettext.h: New file.
	* gnulib/import/glob-libc.h: New file.
	* gnulib/import/glob.c: New file.
	* gnulib/import/glob.in.h: New file.
	* gnulib/import/intprops.h: New file.
	* gnulib/import/m4/chdir-long.m4: New file.
	* gnulib/import/m4/close.m4: New file.
	* gnulib/import/m4/closedir.m4: New file.
	* gnulib/import/m4/d-ino.m4: New file.
	* gnulib/import/m4/d-type.m4: New file.
	* gnulib/import/m4/dup.m4: New file.
	* gnulib/import/m4/dup2.m4: New file.
	* gnulib/import/m4/error.m4: New file.
	* gnulib/import/m4/fchdir.m4: New file.
	* gnulib/import/m4/fcntl.m4: New file.
	* gnulib/import/m4/fcntl_h.m4: New file.
	* gnulib/import/m4/fdopendir.m4: New file.
	* gnulib/import/m4/filenamecat.m4: New file.
	* gnulib/import/m4/fstat.m4: New file.
	* gnulib/import/m4/fstatat.m4: New file.
	* gnulib/import/m4/getcwd-abort-bug.m4: New file.
	* gnulib/import/m4/getcwd-path-max.m4: New file.
	* gnulib/import/m4/getcwd.m4: New file.
	* gnulib/import/m4/getdtablesize.m4: New file.
	* gnulib/import/m4/getlogin_r.m4: New file.
	* gnulib/import/m4/getprogname.m4: New file.
	* gnulib/import/m4/glob.m4: New file.
	* gnulib/import/m4/gnulib-cache.m4: Regenerate.
	* gnulib/import/m4/gnulib-comp.m4: Regenerate.
	* gnulib/import/m4/mempcpy.m4: New file.
	* gnulib/import/m4/memrchr.m4: New file.
	* gnulib/import/m4/mode_t.m4: New file.
	* gnulib/import/m4/msvc-inval.m4: New file.
	* gnulib/import/m4/msvc-nothrow.m4: New file.
	* gnulib/import/m4/open.m4: New file.
	* gnulib/import/m4/openat.m4: New file.
	* gnulib/import/m4/opendir.m4: New file.
	* gnulib/import/m4/readdir.m4: New file.
	* gnulib/import/m4/realloc.m4: New file.
	* gnulib/import/m4/rewinddir.m4: New file.
	* gnulib/import/m4/save-cwd.m4: New file.
	* gnulib/import/m4/strdup.m4: New file.
	* gnulib/import/m4/strerror.m4: New file.
	* gnulib/import/m4/unistd-safer.m4: New file.
	* gnulib/import/mempcpy.c: New file.
	* gnulib/import/memrchr.c: New file.
	* gnulib/import/msvc-inval.c: New file.
	* gnulib/import/msvc-inval.h: New file.
	* gnulib/import/msvc-nothrow.c: New file.
	* gnulib/import/msvc-nothrow.h: New file.
	* gnulib/import/open.c: New file.
	* gnulib/import/openat-die.c: New file.
	* gnulib/import/openat-priv.h: New file.
	* gnulib/import/openat-proc.c: New file.
	* gnulib/import/openat.c: New file.
	* gnulib/import/openat.h: New file.
	* gnulib/import/opendir.c: New file.
	* gnulib/import/pipe-safer.c: New file.
	* gnulib/import/readdir.c: New file.
	* gnulib/import/realloc.c: New file.
	* gnulib/import/rewinddir.c: New file.
	* gnulib/import/save-cwd.c: New file.
	* gnulib/import/save-cwd.h: New file.
	* gnulib/import/strdup.c: New file.
	* gnulib/import/strerror-override.c: New file.
	* gnulib/import/strerror-override.h: New file.
	* gnulib/import/strerror.c: New file.
	* gnulib/import/unistd--.h: New file.
	* gnulib/import/unistd-safer.h: New file.
	* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add
	"getcwd" and "glob".
	* ser-tcp.c: Undefine "close" before redefining it.
2017-09-22 13:28:03 -04:00
Simon Marchi cc4d742f4c gdbserver x86 on win32: call init_target_desc
When trying to run gdbserver compiled for x86 win32 under wine, I get:

  $ wine ./gdbserver/gdbserver.exe --once :1234 ./test
  /home/emaisin/src/binutils-gdb/gdb/gdbserver/regcache.c:177: A problem internal to GDBserver has been detected.
  regcache* new_register_cache(const target_desc*): Assertion `tdesc->registers_size != 0' failed.

It seems like on that platform, init_target_desc is never called, so
registers_size is never computed.

My first thought was to call init_target_desc somewhere in win32-low.c,
but it turns out that when using win32 on arm, the target description is
already initialized by the generated code.  My second thought was to
call it in {i386,amd64}_create_target_description, but those functions
are shared with GDB, and init_target_desc is gdbserver-specific.  So I
ended up with the simplest fix, calling it in i386_arch_setup.

Now I hit some other problem:

  $ wine ./gdbserver/gdbserver.exe --once :1234 ./test
  Killing process(es): 39
  No program to debug
  Exiting

but still, I think fixing the tdesc issue this is a step forward.

gdb/gdbserver/ChangeLog:

	* win32-i386-low.c (i386_arch_setup): Call init_target_desc.
2017-09-22 16:51:55 +02:00
Simon Marchi 432ae719d3 Fix sometimes-uninitialized warning in gdbscm_value_address
I am getting this warning with clang:

/home/emaisin/src/binutils-gdb/gdb/guile/scm-value.c:439:11: error: variable 'address' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
      if (res_val != NULL)
          ^~~~~~~~~~~~~~~
/home/emaisin/src/binutils-gdb/gdb/guile/scm-value.c:444:32: note: uninitialized use occurs here
      if (gdbscm_is_exception (address))
                               ^~~~~~~
/home/emaisin/src/binutils-gdb/gdb/guile/scm-value.c:439:7: note: remove the 'if' if its condition is always true
      if (res_val != NULL)
      ^~~~~~~~~~~~~~~~~~~~
/home/emaisin/src/binutils-gdb/gdb/guile/scm-value.c:427:18: note: initialize the variable 'address' to silence this warning
      SCM address;
                 ^
                  = nullptr

We can get rid of it with a small refactoring.  I think it's a bit
cleaner/safer to initialize address with a pessimistic value and assign
it on success.  Then there's no chance of using it uninitialized.  If I
understand correctly, the NULL check on res_val was to check whether
value_addr threw, and that if value_addr returns without throwing, the
result will never be NULL.  If that's true, we can skip the res_val
variable.

Tested by running gdb.guile/*.exp locally.

gdb/ChangeLog:

	* guile/scm-value.c (gdbscm_value_address): Initialize address,
	get rid of res_val.
2017-09-22 10:47:19 +02:00
Rainer Orth 4fa7574eec Fix gdb 8.1 Solaris compilation
I just tried to compile gdb trunk on Solaris 11.4 (formerly 12), and
failed for a couple of reasons:

*

In file included from /usr/include/python2.7/Python.h:128:0,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/python/python-internal.h:94,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/python/py-instruction.h:23,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/python/py-instruction.c:21:
/usr/include/python2.7/ceval.h:67:0: error: ignoring #pragma no_inline  [-Werror=unknown-pragmas]
 #pragma no_inline(PyEval_EvalFrameEx)
 ^

  New in Solaris 11.4: <python2.7/ceval.h> uses a Studio-only #pragma.
  I've disabled the warning in warnings.m4.

*

/vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c: In function ‘int pipe_open(serial*, const char*)’:
/vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c:77:9: error: ‘pid_t vfork()’ is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
   pid = vfork ();
         ^
/vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c:77:16: error: ‘pid_t vfork()’ is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
   pid = vfork ();
                ^

  Since Solaris 11, vfork () is marked deprecated in <unistd.h>.

  cf. vfork(2):

       The  vfork()  and vforkx() functions are deprecated. Their sole legiti-
       mate use as a prelude to an immediate call to a function from the  exec
       family can be achieved safely by posix_spawn(3C) or posix_spawnp(3C).

  Again, I've disabled the warning.

*

/vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c: In function ‘void shell_escape(const char*, int)’:
/vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c:750:14: error: ‘pid_t vfork()’ is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
   if ((pid = vfork ()) == 0)
              ^
/vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c:750:21: error: ‘pid_t vfork()’ is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
   if ((pid = vfork ()) == 0)
                     ^

  Same problem.

*

/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function ‘void procfs_init_inferior(target_ops*, int)’:
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:4380:30: error: ‘START_INFERIOR_TRAPS_EXPECTED’ was not declared in this scope
   gdb_startup_inferior (pid, START_INFERIOR_TRAPS_EXPECTED);
                              ^

  defined in nat/fork-inferior.h, need to include that header

/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function ‘void procfs_create_inferior(target_ops*, const char*, const string&, char**, int)’:
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:4605:38: error: ‘fork_inferior’ was not declared in this scope
          NULL, NULL, shell_file, NULL);
                                      ^

  likewise

/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function ‘void procfs_info_proc(target_ops*, const char*, info_proc_what)’:
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:5124:20: error: ‘argv’ was not declared in this scope
   for (char *arg : argv)
                    ^

  Typo, should be built_argv instead!

*

Undefined                       first referenced
 symbol                             in file
fork_inferior(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char**, void (*)(), void (*)(int), void (*)(), char const*, void (*)(char const*, char* const*, char* const*)) procfs.o
startup_inferior(int, int, target_waitstatus*, ptid_t*) fork-child.o
ld: fatal: symbol referencing errors
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:2249: gdb] Error 1

  Need to add fork-inferior.o to NATDEPFILES.

With the changes below, I can build gdb on sparcv9-sun-solaris2.11 and
amd64-pc-solaris2.11 and a simple smoke test (gdb/gdb gdb/gdb) works.
2017-09-22 10:42:45 +02:00
Kevin Buettner 757bf54bb4 Test case for Inferior.thread_from_thread_handle
As the title says, this is a test case for
Inferior.thread_from_thread_handle, a python method which will,
given a thread library dependent thread handle, find the GDB thread
which corresponds to that thread handle (in the inferior under
consideration).

The C file for this test case causes the thread handles for the
main thread and two child threads to be placed into an array.  The
test case runs to one of the functions (do_something()) at which point,
it retrieves the thread handles from the array and attempts to find the
corresponding thread in GDB's internal thread list.

I use barriers to make sure that both threads have actually started;
execution will stop when one of the threads breaks at do_something.

Thanks to Simon Marchi for suggestions for forcing the thread
numbering to be stable.

gdb/testsuite/ChangeLog:

	* gdb.python/py-thrhandle.c, gdb.python/py-thrhandle.exp: New
	files.
2017-09-21 11:49:48 -07:00
Kevin Buettner f2ff95c583 Documentation for qXfer:threads:read handle attribute
gdb/doc/ChangeLog:

	* gdb.texinfo (qXfer:threads:read): Add documentation for handle
	attribute.
2017-09-21 11:49:48 -07:00
Kevin Buettner f6327dcbf0 Add thread_handle_to_thread_info support for remote targets
This patch adds support to remote targets for converting a thread
handle to a thread_info struct pointer.

A thread handle is fetched via a "handle" attribute which has been
added to the qXfer:threads:read query packet.  An implementation is
provided in gdbserver for targets using the Linux kernel.

gdb/gdbserver/ChangeLog:

	* linux-low.h (struct lwp_info): Add new field, thread_handle.
	(thread_db_thread_handle): Declare.
	* linux-low.c (linux_target_ops): Initialize thread_handle.
	* server.c (handle_qxfer_threads_worker): Add support for
	"handle" attribute.
	* target.h (struct target_ops): Add new function pointer,
	thread_handle.
	(target_thread_handle): Define.
	* thread-db.c (find_one_thread, attach_thread): Set thread_handle
	field in lwp.
	(thread_db_thread_handle): New function.

gdb/ChangeLog:

	* remote.c (vector): Include.
	(struct private_thread_info): Add field, thread_handle.
	(free_private_thread_info): Deallocate storage associated with
	thread handle.
	(get_private_info_thread): Initialize `thread_handle' field.
	(struct thread_item): Add field, thread_handle.
	(clear_threads_listing_context): Deallocate storage associated
	with thread handle.
	(start_thread): Add support for "handle" attribute.
	(thread_attributes): Add "handle".
	(remote_get_threads_with_qthreadinfo): Initialize thread_handle
	field.
	(remote_update_thread_list): Update thread_handle.
	(remote_thread_handle_to_thread_info): New function.
	(init_remote_ops): Initialize to_thread_handle_to_thread_info.
2017-09-21 11:49:47 -07:00
Kevin Buettner 8629910955 Add thread_db_notice_clone to gdbserver
While working on a patch for fetching a thread handle in gdbserver, I
ran into a circumstance in which tests in gdb.mi/mi-nsmoribund.exp
would occasionally fail.  Over a large enough number of runs, it would
fail roughly 2% of the time.

That thread handle patch caused find_one_thread() to be called on
every stop.  find_one_thread() calls td_ta_map_lwp2thr() which, in
turn, can cause ps_get_thread_area() to be called.
ps_get_thread_area() makes a call to ptrace() for getting the thread
area address.  If this should happen when the thread is not stopped,
the call to ptrace will return error which in turn propogates back to
find_one_thread().  find_one_thread() calls error() in this instance
which causes the program to die.

This patch causes find_one_thread() to be called upon reciept of a
clone event.  Since the clone is stopped, the circumstances described
above cannot occur.

gdb/gdbserver/ChangeLog:

	* linux-low.c (handle_extended_wait): Call thread_db_notice_clone().
	* linux-low.h (thread_db_notice_clone): Declare.
	* thread-db.c (thread_db_notice_clone): New function.
2017-09-21 11:49:47 -07:00
Kevin Buettner da2c323bff Documentation for Inferior.thread_from_thread_handle
gdb/doc/ChangeLog:

	* python.texi (Inferiors In Python): Add description for method
	Inferior.thread_from_thread_handle.
2017-09-21 11:49:46 -07:00
Kevin Buettner fbbe5337a6 Add `thread_from_thread_handle' method to (Python) gdb.Inferior
gdb/ChangeLog:
	* python/py-inferior.c (gdbpy_thread_from_thread_handle): New
	function.
	(inferior_object_methods): Add gdbpy_thread_from_thread_handle.
	* python/python-internal.h (thread_object_type): Declare.
2017-09-21 11:20:51 -07:00
Kevin Buettner e04ee09e24 Add target method for converting thread handle to thread_info struct pointer
This patch adds a target method named `to_thread_handle_to_thread_info'.
It is intended to map a thread library specific thread handle (such as
pthread_t for the pthread library) to the corresponding GDB internal
thread_info struct (pointer).

An implementation is provided for Linux pthreads; see linux-thread-db.c.

gdb/ChangeLog:

	* target.h (struct target_ops): Add to_thread_handle_to_thread_info.
	(target_thread_handle_to_thread_info): Declare.
	* target.c (target_thread_handle_to_thread_info): New function.
	* target-delegates.c: Regenerate.
	* gdbthread.h (find_thread_by_handle): Declare.
	* thread.c (find_thread_by_handle): New function.
	* linux-thread-db.c (thread_db_thread_handle_to_thread_info): New
	function.
	(init_thread_db_ops): Register thread_db_thread_handle_to_thread_info.
2017-09-21 11:19:10 -07:00
Pedro Alves f557a88ab1 gdbserver: Remove traces of ancient Hc handling
Back in commit f0db101d98 ("gdbserver: don't pick a random thread if
the current thread dies"), a couple years ago, the last references to
set_desired_thread(0) [select the Hc thread] were removed, and all the
remaining calls to set_desired_thread pass '1', meaning general
thread.  This means we can simplify set_desired_thread.

gdb/gdbserver/ChangeLog:
2017-09-21  Pedro Alves  <palves@redhat.com>

	* server.c (gdb_read_memory, handle_status, process_serial_event)
	(handle_serial_event, handle_target_event): Adjust to
	set_desired_thread prototype change.
	* target.c (set_desired_thread): Remove 'use_general' parameter
	and adjust.
	* target.h (set_desired_thread): Remove 'use_general' parameter.
2017-09-21 16:52:33 +01:00
Simon Marchi 1e5b66ed42 linux-waitpid: Get rid of format string warning
Clang gives this warning:

/home/emaisin/src/binutils-gdb/gdb/gdbserver/../nat/linux-waitpid.c:45:25: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
      vfprintf (stderr, format, args);
                        ^~~~~~

Get rid of it by adding ATTRIBUTE_PRINTF.

gdb/ChangeLog:

	* nat/linux-waitpid.c (linux_debug): Add ATTRIBUTE_PRINTF.
2017-09-21 15:19:40 +02:00
Simon Marchi ebe48ba085 microblaze-tdep: Add ATTRIBUTE_PRINTF to microblaze_debug
I am getting this warning with clang:

/home/emaisin/src/binutils-gdb/gdb/microblaze-tdep.c:94:28: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
       vprintf_unfiltered (fmt, args);
                           ^~~

Adding ATTRIBUTE_PRINTF to microblaze_debug gets rid of it.  Strangely,
gcc doesn't warn about non-literal format strings when calling vprintf
(or a vprintf-style function, like vprintf_unfiltered).  I filed this
gcc bug:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82206

gdb/ChangeLog:

	* microblaze-tdep.c (microblaze_debug): Add ATTRIBUTE_PRINTF.
2017-09-21 14:09:33 +02:00
Yao Qi 0a0bf5dc14 Fix aarch64-freebsd build failure
I happen to see that fbsd-tdep.o is missing for target aarch64-freebsd,
and it causes the build failure,

aarch64-fbsd-tdep.o: In function `aarch64_fbsd_init_abi(gdbarch_info, gdbarch*)':
binutils-gdb/gdb/aarch64-fbsd-tdep.c:186: undefined reference to `fbsd_init_abi(gdbarch_info, gdbarch*)'
binutils-gdb/gdb/aarch64-fbsd-tdep.c:189: undefined reference to `svr4_lp64_fetch_link_map_offsets()'
binutils-gdb/gdb/aarch64-fbsd-tdep.c:189: undefined reference to `set_solib_svr4_fetch_link_map_offsets(gdbarch*, link_map_offsets* (*)())'

This patch fixed it.

gdb:

2017-09-21  Yao Qi  <yao.qi@linaro.org>

	* configure.tgt (aarch64*-*-freebsd*): Add fbsd-tdep.o solib-svr4.o
	to gdb_target_obs.
2017-09-21 09:20:05 +01:00
Tom Tromey d1b0a7bfd3 Change counted_command_line to a shared_ptr
This changes counted_command_line to be a typedef for std::shared_ptr
and removes the associated cleanups.  In the long run I believe that
cmd_list_element should also be changed to use a shared_ptr.

gdb/ChangeLog
2017-09-20  Tom Tromey  <tom@tromey.com>

	* breakpoint.c (struct counted_command_line): Remove.
	(breakpoint_commands): Update.
	(alloc_counted_command_line, incref_counted_command_line)
	(decref_counted_command_line, do_cleanup_counted_command_line)
	(make_cleanup_decref_counted_command_line): Remove.
	(breakpoint_set_commands, commands_command_1, ~bpstats, bpstats)
	(bpstat_clear_actions, bpstat_do_actions_1, watchpoint_check)
	(bpstat_stop_status, print_one_breakpoint_location, ~breakpoint)
	(save_breakpoints): Update.
	* breakpoint.h (counted_command_line): Now a typedef to
	shared_ptr.
	(struct breakpoint) <commands>: Now a counted_command_line.
	(struct bpstats) <command>: Likewise.
2017-09-20 22:05:16 -06:00
Tom Tromey 48649e1bfe Use function_view in a couple of places in breakpoint.c
This changes iterate_over_related_breakpoints and
map_breakpoint_numbers to take a function_view.  Then, it simplifies
the callers by using lambdas.  This then allows the removal of some
bookkeeping types.

gdb/ChangeLog
2017-09-20  Tom Tromey  <tom@tromey.com>

	* breakpoint.c (struct commands_info, do_map_commands_command):
	Remove.
	(commands_command_1): Update.
	(iterate_over_related_breakpoints): Take a function_view.
	(do_delete_breakpoint, do_map_delete_breakpoint): Remove.
	(delete_command): Update.
	(map_breakpoint_numbers): Take a function_view.
	(do_disable_breakpoint, do_map_delete_breakpoint): Remove.
	(disable_command): Update.
	(do_enable_breakpoint, do_map_enable_breakpoint): Remove.
	(enable_command): Update.
	(struct disp_data, do_enable_breakpoint_disp)
	(do_map_enable_once_breakpoint, do_map_enable_count_breakpoint)
	(do_map_enable_delete_breakpoint): Remove.
	(enable_once_command, enable_count_command, enable_delete_command)
	(delete_trace_variable_command): Update.
2017-09-20 22:05:15 -06:00
Tom Tromey 04afa70c8e Allocate bpstats with new
This changes struct bpstats to be allocated with new and freed with
delete, adding constructors and a destructor in the process.  This
allows the removal of one cleanup and clears the way for more to
follow.

gdb/ChangeLog
2017-09-20  Tom Tromey  <tom@tromey.com>

	* breakpoint.c (~bpstats): Rename from bpstat_free.  Update.
	(bpstat_clear): Use delete.
	(bpstats): New constructors.
	(bpstat_copy, bpstat_stop_status): Use new.
	(dprintf_after_condition_true): Update.
	* breakpoint.h (bpstats::bpstats): Add constructors.
	(bpstats::~bpstats): Add destructor.
2017-09-20 22:05:14 -06:00
Pedro Alves c83833f493 eval.c:evaluate_subexp_standard: Use RAII to avoid leaks
While working on the no-debug-info debugging improvements series, I
noticed these bare xfree calls, which lead to leaks if
evaluate_subexp_standard throws.

Fix that by reworking make_params as a RAII class.  Ends up
eliminating a couple heap allocations too.

gdb/ChangeLog:
2017-09-20  Pedro Alves  <palves@redhat.com>

	* eval.c (make_params): Delete, refactored as ...
	(class fake_method): ... this new type's ctor.
	(fake_method::~fake_method): New.
	(evaluate_subexp_standard): Use 'fake_method'.
2017-09-21 00:34:41 +01:00
Tom Tromey 223ffa714c Remove make_cleanup_restore_target_terminal
This removes make_cleanup_restore_target_terminal and generally
C++-ifies target terminal handling.  It changes all target_terminal_*
functions to be static members of a new target_terminal class and
changes the cleanup to be a scoped_* class.
make_cleanup_override_quit_handler is also removed in favor of simply
using scoped_restore.

Note that there are some files in this patch that I could not compile.
Considering that some of the rewrites were automated, and that none of
these files involed cleanups, I feel that this is relatively safe.

Regression tested by the buildbot.

gdb/ChangeLog
2017-09-20  Tom Tromey  <tom@tromey.com>

	* windows-nat.c (get_windows_debug_event, windows_wait)
	(do_initial_windows_stuff, windows_attach): Update.
	* utils.c (vwarning, internal_vproblem): Update.
	(ui_unregister_input_event_handler_cleanup)
	(prepare_to_handle_input): Remove.
	(class scoped_input_handler): New.
	(defaulted_query, prompt_for_continue): Update.
	* tui/tui-hooks.c (tui_refresh_frame_and_register_information):
	Update.
	* top.c (undo_terminal_modifications_before_exit): Update.
	* target/target.h (target_terminal_init, target_terminal_inferior)
	(target_terminal_ours): Don't declare.
	(class target_terminal): New.
	* target.h (target_terminal_is_inferior, target_terminal_is_ours)
	(target_terminal_ours_for_output)
	(make_cleanup_restore_target_terminal): Don't declare.
	(target_terminal_info): Remove.
	* target.c (enum terminal_state, terminal_state): Remove.
	(target_terminal::terminal_state): Define.
	(target_terminal::init): Rename from target_terminal_init.
	(target_terminal::inferior): Rename from
	target_terminal_inferior.
	(target_terminal::ours): Rename from target_terminal_ours.
	(target_terminal::ours_for_output): Rename from
	target_terminal_ours_for_output.
	(target_terminal::info): New method.
	(cleanup_restore_target_terminal)
	(make_cleanup_restore_target_terminal): Remove.
	* solib.c (handle_solib_event): Update.
	* remote.c (remote_serial_quit_handler): Update.
	(remote_terminal_inferior, remote_wait_as): Update.
	* record-full.c (record_full_wait_1): Update.
	* nto-procfs.c (procfs_create_inferior): Update.
	* nat/fork-inferior.c (startup_inferior): Update.
	* mi/mi-interp.c (mi_new_thread, mi_thread_exit)
	(mi_record_changed, mi_inferior_added, mi_inferior_appeared)
	(mi_inferior_exit, mi_inferior_removed, mi_traceframe_changed)
	(mi_tsv_created, mi_tsv_deleted, mi_tsv_modified)
	(mi_breakpoint_created, mi_breakpoint_deleted)
	(mi_breakpoint_modified, mi_on_resume, mi_solib_loaded)
	(mi_solib_unloaded, mi_command_param_changed, mi_memory_changed)
	(mi_user_selected_context_changed, report_initial_inferior):
	Update.
	* linux-nat.c (linux_nat_attach, linux_nat_terminal_ours)
	(linux_nat_terminal_inferior): Update.
	* infrun.c (follow_fork_inferior)
	(handle_vfork_child_exec_or_exit, do_target_resume)
	(check_curr_ui_sync_execution_done, handle_inferior_event_1)
	(handle_signal_stop, maybe_remove_breakpoints, normal_stop):
	Update.
	* inflow.c (child_terminal_init, info_terminal_command): Update.
	* infcmd.c (post_create_inferior, continue_1, prepare_one_step)
	(attach_command): Update.
	* infcall.c (call_thread_fsm_should_stop): Update.
	* gnu-nat.c (gnu_attach): Update.
	* extension.c (struct active_ext_lang_state)
	(restore_active_ext_lang): Update.
	* exceptions.c (print_flush): Update.
	* event-top.c (async_enable_stdin, default_quit_handler): Update.
	(struct quit_handler_cleanup_data, restore_quit_handler)
	(restore_quit_handler_dtor, make_cleanup_override_quit_handler):
	Remove.
	* cp-support.c (gdb_demangle): Update.
	* breakpoint.c (update_inserted_breakpoint_locations)
	(insert_breakpoint_locations, handle_jit_event)
	(disable_breakpoints_in_unloaded_shlib): Update.
	* annotate.c (annotate_breakpoints_invalid)
	(annotate_frames_invalid): Update.

gdb/gdbserver/ChangeLog
2017-09-20  Tom Tromey  <tom@tromey.com>

	* target.c (target_terminal::terminal_state): Define.
	(target_terminal::init): Rename from target_terminal_init.
	(target_terminal::inferior): Rename from
	target_terminal_inferior.
	(target_terminal::ours): Rename from target_terminal_ours.
	(target_terminal::ours_for_output, target_terminal::info): New.
2017-09-20 16:09:50 -06:00
Tom Tromey 013af3fc8e Overload catch_command_errors
This changes catch_command_errors_const to be an overload of
catch_command_errors, which may mildly help future constification
efforts.

Tested by rebuilding.

gdb/ChangeLog
2017-09-20  Tom Tromey  <tom@tromey.com>

	* main.c (catch_command_errors): Rename from
	catch_command_errors_const.
	(captured_main_1): Update.
2017-09-20 16:04:11 -06:00
Pedro Alves 06871ae840 Make "list ambiguous" show symbol names too
Currently, with an ambiguous "list first,last", we get:

  (gdb) list bar,main
  Specified first line 'bar' is ambiguous:
  file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 97
  file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 98

This commit makes gdb's output above a bit clearer by printing the
symbol name as well:

  (gdb) list bar,main
  Specified first line 'bar' is ambiguous:
  file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 97, symbol: "bar(A)"
  file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 98, symbol: "bar(B)"

And while at it, makes gdb print the symbol name when actually listing
multiple locations too.  I.e., before (with "set listsize 2"):

  (gdb) list bar
  file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 97
  96
  97      int bar (A) { return 11; }
  file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 98
  97      int bar (A) { return 11; }
  98      int bar (B) { return 22; }

After:

  (gdb) list bar
  file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 97, symbol: "bar(A)"
  96
  97      int bar (A) { return 11; }
  file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 98, symbol: "bar(B)"
  97      int bar (A) { return 11; }
  98      int bar (B) { return 22; }

Currently, the result of decoding a linespec loses information about
the original symbol that was found.  All we end up with is an address.
This makes it difficult to find the original symbol again to get at
its print name.  Fix that by storing a pointer to the symbol in the
sal.  We already store the symtab and obj_section, so it feels like a
natural progression to me.  This avoids having to do any extra symbol
lookup too.

gdb/ChangeLog:
2017-09-20  Pedro Alves  <palves@redhat.com>

	* cli/cli-cmds.c (list_command): Use print_sal_location.
	(print_sal_location): New function.
	(ambiguous_line_spec): Use print_sal_location.
	* linespec.c (symbol_to_sal): Record the symbol in the sal.
	* symtab.c (find_function_start_sal): Likewise.
	* symtab.h (symtab_and_line::symbol): New field.

gdb/testsuite/ChangeLog:
2017-09-20  Pedro Alves  <palves@redhat.com>

	* gdb.base/list-ambiguous.exp (test_list_ambiguous_symbol): Expect
	symbol names in gdb's output.
	* gdb.cp/overload.exp ("list all overloads"): Likewise.
2017-09-20 16:21:26 +01:00
Pedro Alves e5f25bc5d6 Fix "list ambiguous_variable"
The "list" command allows specifying the name of variables as
argument, not just functions, so that users can type "list
a_global_variable".

That support is a broken when it comes to ambiguous locations though.

If there's more than one such global variable in the program, e.g.,
static globals in different compilation units, GDB ends up listing the
source of the first variable it finds, only.

linespec.c does find both symbol and minsym locations for all the
globals.  The problem is that it ends up merging all the resulting
sals into one, because they all have address, zero.  I.e., all sals
end up with sal.pc == 0, so maybe_add_address returns false for all
but the first.

The zero addresses appear because:

- in the minsyms case, linespec.c:minsym_found incorrectly treats all
  minsyms as if they were function/text symbols.  In list mode we can
  end up with data symbols there, and we shouldn't be using
  find_pc_sect_line on data symbols.

- in the debug symbols case, symbol_to_sal misses recording an address
  (sal.pc) for non-block, non-label symbols.

gdb/ChangeLog:
2017-09-20  Pedro Alves  <palves@redhat.com>

	* linespec.c (minsym_found): Handle non-text minsyms.
	(symbol_to_sal): Record a sal.pc for non-block, non-label symbols.

gdb/testsuite/ChangeLog:
2017-09-20  Pedro Alves  <palves@redhat.com>

	* gdb.base/list-ambiguous.exp (test_list_ambiguous_function):
	Rename to ...
	(test_list_ambiguous_symbol): ... this and add a symbol name
	parameter.  Adjust.
	(test_list_ambiguous_function): Reimplement on top of
	test_list_ambiguous_symbol and also test listing ambiguous
	variables.
	* gdb.base/list-ambiguous0.c (ambiguous): Rename to ...
	(ambiguous_fun): ... this.
	(ambiguous_var): New.
	* gdb.base/list-ambiguous1.c (ambiguous): Rename to ...
	(ambiguous_fun): ... this.
	(ambiguous_var): New.
2017-09-20 16:12:54 +01:00