2017-04-13 00:15:14 +02:00
|
|
|
|
2017-04-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (tvariables_info_1)
|
|
|
|
|
(print_one_static_tracepoint_marker): Use ui_out_emit_tuple.
|
|
|
|
|
|
2017-04-13 00:10:02 +02:00
|
|
|
|
2017-04-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (print_frame_arg): Use ui_out_emit_tuple,
|
|
|
|
|
annotate_arg_emitter.
|
|
|
|
|
* breakpoint.c (print_mention_watchpoint)
|
|
|
|
|
(print_mention_masked_watchpoint): Use ui_out_emit_tuple.
|
|
|
|
|
* annotate.h (struct annotate_arg_emitter): New.
|
|
|
|
|
|
2017-04-12 16:23:08 +02:00
|
|
|
|
2017-04-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_insn_history)
|
|
|
|
|
(record_btrace_insn_history_range, record_btrace_call_history)
|
|
|
|
|
(record_btrace_call_history_range): Use ui_out_emit_tuple.
|
|
|
|
|
* thread.c (do_captured_list_thread_ids, print_thread_info_1): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* stack.c (print_frame_info): Use ui_out_emit_tuple.
|
|
|
|
|
* solib.c (info_sharedlibrary_command): Use ui_out_emit_tuple.
|
|
|
|
|
* skip.c (skip_info): Use ui_out_emit_tuple.
|
|
|
|
|
* remote.c (show_remote_cmd): Use ui_out_emit_tuple.
|
|
|
|
|
* progspace.c (print_program_space): Use ui_out_emit_tuple.
|
|
|
|
|
* probe.c (info_probes_for_ops): Use ui_out_emit_tuple.
|
|
|
|
|
* osdata.c (info_osdata): Use ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-main.c (print_one_inferior, list_available_thread_groups)
|
|
|
|
|
(output_register, mi_cmd_data_read_memory)
|
|
|
|
|
(mi_cmd_data_read_memory_bytes, mi_load_progress)
|
|
|
|
|
(mi_cmd_trace_frame_collected): Use ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-var.c (mi_cmd_var_list_children, varobj_update_one):
|
|
|
|
|
Use ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-stack.c (mi_cmd_stack_list_args): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions)
|
|
|
|
|
(mi_cmd_info_gdb_mi_command): Use ui_out_emit_tuple.
|
|
|
|
|
* linux-thread-db.c (info_auto_load_libthread_db): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* inferior.c (print_inferior): Use ui_out_emit_tuple.
|
|
|
|
|
* gdb_bfd.c (print_one_bfd): Use ui_out_emit_tuple.
|
|
|
|
|
* disasm.c (do_mixed_source_and_assembly_deprecated)
|
|
|
|
|
(do_mixed_source_and_assembly): Use ui_out_emit_tuple.
|
|
|
|
|
* cp-abi.c (list_cp_abis): Use ui_out_emit_tuple.
|
|
|
|
|
* cli/cli-setshow.c (cmd_show_list): Use ui_out_emit_tuple.
|
|
|
|
|
* breakpoint.c (print_one_breakpoint_location)
|
|
|
|
|
(print_one_breakpoint): Use ui_out_emit_tuple.
|
|
|
|
|
* auto-load.c (print_script, info_auto_load_cmd): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* ada-tasks.c (print_ada_task_info): Use ui_out_emit_tuple.
|
|
|
|
|
|
2017-04-22 03:45:15 +02:00
|
|
|
|
2017-04-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (print_thread_info_1): Remove dead code.
|
|
|
|
|
|
2017-04-21 16:14:37 +02:00
|
|
|
|
2017-04-21 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (selftests::aarch64_process_record_test): Make it #if
|
|
|
|
|
GDB_SELF_TEST.
|
|
|
|
|
* arm-tdep.c (selftests::arm_record_test): Likewise.
|
|
|
|
|
|
2017-04-21 15:59:27 +02:00
|
|
|
|
2017-04-21 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_restore): Remove argument 2. Replace
|
|
|
|
|
argument 3 with regcache. Get register status from
|
|
|
|
|
src->register_status and get register contents from
|
|
|
|
|
register_buffer (src, regnum).
|
|
|
|
|
(regcache_cpy): Update.
|
|
|
|
|
|
2017-04-19 14:16:05 +02:00
|
|
|
|
2017-04-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (thread): Add missing closing parenthesis in
|
|
|
|
|
comment.
|
|
|
|
|
|
Fix removing inferiors from within "thread apply" commands
This patch fixes an internal error exposed by a test that does
something like:
define kill-and-remove
kill inferiors 2
remove-inferiors 2
end
# Start one inferior.
start
# Start another inferior.
add-inferior 2
inferior 2
start
# Kill and remove inferior 1 while inferior 2 is selected.
thread apply 1.1 kill-and-remove
The internal error looks like this:
Thread 1.1 (Thread 0x7ffff7fc2700 (LWP 20677)):
[Switching to inferior 1 [process 20677] (gdb/testsuite/outputs/gdb.threads/threadapply/threadapply)]
[Switching to thread 1.1 (Thread 0x7ffff7fc2700 (LWP 20677))]
#0 main () at src/gdb/testsuite/gdb.threads/threadapply.c:38
38 for (i = 0; i < NUM; i++)
src/gdb/inferior.c:66: internal-error: void set_current_inferior(inferior*): Assertion `inf != NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/threadapply.exp: kill_and_remove_inferior: try kill-and-remove: thread apply 1.1 kill-and-remove (GDB internal error)
There are several problems around this area of the code. One is that
in do_restore_current_thread_cleanup, we do a look up of inferior by
ptid, which can find the wrong inferior if the previously selected
inferior exited and some other inferior was started with a reused pid
(rare, but still...).
The other problem is that the "remove-inferiors" command rejects
attempts to remove the current inferior, but when we get to
"remove-inferiors" in a "thread apply THR remove-inferiors 2" command,
the current inferior is the inferior of thread THR, not the previously
selected inferior, so if the previously selected inferior was inferior
2, that command still manages to wipe it, and then gdb restores the
old selected inferior, which is now a dangling pointer...
So the fix here is:
- Make make_cleanup_restore_current_thread store a pointer to the
previously selected inferior directly, and use it directly instead
of doing ptid look ups.
- Add a refcount to inferiors, very similar to thread_info's refcount,
that is incremented/decremented by
make_cleanup_restore_current_thread, and checked before deleting an
inferior. To avoid duplication, a new refcounted_object type is
added, that both thread_info and inferior inherit from.
gdb/ChangeLog:
2017-04-19 Pedro Alves <palves@redhat.com>
* common/refcounted-object.h: New file.
* gdbthread.h: Include "common/refcounted-object.h".
(thread_info): Inherit from refcounted_object and add comments.
(thread_info::incref, thread_info::decref)
(thread_info::m_refcount): Delete.
(thread_info::deletable): Use the refcounted_object::refcount()
method.
* inferior.c (current_inferior_): Add comment.
(set_current_inferior): Increment/decrement refcounts.
(prune_inferiors, remove_inferior_command): Skip inferiors marked
not-deletable instead of comparing with the current inferior.
(initialize_inferiors): Increment the initial inferior's refcount.
* inferior.h (struct inferior): Forward declare.
Include "common/refcounted-object.h".
(current_inferior, set_current_inferior): Move declaration to
before struct inferior's definition, and fix comment.
(inferior): Inherit from refcounted_object. Add comments.
* thread.c (switch_to_thread_no_regs): Reference the thread's
inferior pointer directly instead of doing a ptid lookup.
(switch_to_no_thread): New function.
(switch_to_thread(thread_info *)): New function, factored out
from ...
(switch_to_thread(ptid_t)): ... this.
(restore_current_thread): Delete.
(current_thread_cleanup): Remove 'inf_id' and 'was_removable'
fields, and add 'inf' field.
(do_restore_current_thread_cleanup): Check whether old->inf is
alive instead of looking up an inferior by ptid. Use
switch_to_thread and switch_to_no_thread.
(restore_current_thread_cleanup_dtor): Use old->inf directly
instead of lookup up an inferior by id. Decref the inferior.
Don't restore 'removable'.
(make_cleanup_restore_current_thread): Same the inferior pointer
in old, instead of the inferior number. Incref the inferior.
Don't save/clear 'removable'.
gdb/testsuite/ChangeLog:
2017-04-19 Pedro Alves <palves@redhat.com>
* gdb.threads/threadapply.exp (kill_and_remove_inferior): New
procedure.
(top level): Call it.
* lib/gdb.exp (gdb_define_cmd): New procedure.
2017-04-19 14:12:23 +02:00
|
|
|
|
2017-04-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/refcounted-object.h: New file.
|
|
|
|
|
* gdbthread.h: Include "common/refcounted-object.h".
|
|
|
|
|
(thread_info): Inherit from refcounted_object and add comments.
|
|
|
|
|
(thread_info::incref, thread_info::decref)
|
|
|
|
|
(thread_info::m_refcount): Delete.
|
|
|
|
|
(thread_info::deletable): Use the refcounted_object::refcount()
|
|
|
|
|
method.
|
|
|
|
|
* inferior.c (current_inferior_): Add comment.
|
|
|
|
|
(set_current_inferior): Increment/decrement refcounts.
|
|
|
|
|
(prune_inferiors, remove_inferior_command): Skip inferiors marked
|
|
|
|
|
not-deletable instead of comparing with the current inferior.
|
|
|
|
|
(initialize_inferiors): Increment the initial inferior's refcount.
|
|
|
|
|
* inferior.h (struct inferior): Forward declare.
|
|
|
|
|
Include "common/refcounted-object.h".
|
|
|
|
|
(current_inferior, set_current_inferior): Move declaration to
|
|
|
|
|
before struct inferior's definition, and fix comment.
|
|
|
|
|
(inferior): Inherit from refcounted_object. Add comments.
|
|
|
|
|
* thread.c (switch_to_thread_no_regs): Reference the thread's
|
|
|
|
|
inferior pointer directly instead of doing a ptid lookup.
|
|
|
|
|
(switch_to_no_thread): New function.
|
|
|
|
|
(switch_to_thread(thread_info *)): New function, factored out
|
|
|
|
|
from ...
|
|
|
|
|
(switch_to_thread(ptid_t)): ... this.
|
|
|
|
|
(restore_current_thread): Delete.
|
|
|
|
|
(current_thread_cleanup): Remove 'inf_id' and 'was_removable'
|
|
|
|
|
fields, and add 'inf' field.
|
|
|
|
|
(do_restore_current_thread_cleanup): Check whether old->inf is
|
|
|
|
|
alive instead of looking up an inferior by ptid. Use
|
|
|
|
|
switch_to_thread and switch_to_no_thread.
|
|
|
|
|
(restore_current_thread_cleanup_dtor): Use old->inf directly
|
|
|
|
|
instead of lookup up an inferior by id. Decref the inferior.
|
|
|
|
|
Don't restore 'removable'.
|
|
|
|
|
(make_cleanup_restore_current_thread): Same the inferior pointer
|
|
|
|
|
in old, instead of the inferior number. Incref the inferior.
|
|
|
|
|
Don't save/clear 'removable'.
|
|
|
|
|
|
Make inferior::detaching a bool, and introduce scoped_restore::release()
I left making inferior::detaching a bool to a separate patch, because
doing that makes a make_cleanup_restore_integer call in
infrun.c:prepare_for_detach no longer compile (passing a 'bool *' when
an 'int *' is expected). Since we want to get rid of cleanups anyway,
I looked at converting that to a scoped_restore. However,
prepare_for_detach wants to discard the cleanup on success, and
scoped_restore doesn't have an equivalent for that. So I added one --
I called it "release()" because it seems like a natural fit in the way
standard components call similarly-spirited methods, and, it's also
what the proposal for a generic scope guard calls it too, AFAICS:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4189.pdf
I've added some scoped_guard unit tests, while at it.
gdb/ChangeLog:
2017-04-19 Pedro Alves <palves@redhat.com>
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
unittests/scoped_restore-selftests.c.
(SUBDIR_UNITTESTS_OBS): Add scoped_restore-selftests.o.
* common/scoped_restore.h (scoped_restore_base): Make "class".
(scoped_restore_base::release): New public method.
(scoped_restore_base::scoped_restore_base): New protected ctor.
(scoped_restore_base::m_saved_var): New protected field.
(scoped_restore_tmpl::scoped_restore_tmpl(T*)): Initialize the
scoped_restore_base base class instead of m_saved_var directly.
(scoped_restore_tmpl::scoped_restore_tmpl(T*, T2)): Likewise.
(scoped_restore_tmpl::scoped_restore_tmpl(const
scoped_restore_tmpl<T>&)): Likewise.
(scoped_restore_tmpl::~scoped_restore_tmpl): Use the saved_var
method.
(scoped_restore_tmpl::saved_var): New method.
(scoped_restore_tmpl::m_saved_var): Delete.
* inferior.h (inferior::detaching): Now a bool.
* infrun.c (prepare_for_detach): Use a scoped_restore instead of a
cleanup.
* unittests/scoped_restore-selftests.c: New file.
2017-04-19 14:12:23 +02:00
|
|
|
|
2017-04-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/scoped_restore-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add scoped_restore-selftests.o.
|
|
|
|
|
* common/scoped_restore.h (scoped_restore_base): Make "class".
|
|
|
|
|
(scoped_restore_base::release): New public method.
|
|
|
|
|
(scoped_restore_base::scoped_restore_base): New protected ctor.
|
|
|
|
|
(scoped_restore_base::m_saved_var): New protected field.
|
|
|
|
|
(scoped_restore_tmpl::scoped_restore_tmpl(T*)): Initialize the
|
|
|
|
|
scoped_restore_base base class instead of m_saved_var directly.
|
|
|
|
|
(scoped_restore_tmpl::scoped_restore_tmpl(T*, T2)): Likewise.
|
|
|
|
|
(scoped_restore_tmpl::scoped_restore_tmpl(const
|
|
|
|
|
scoped_restore_tmpl<T>&)): Likewise.
|
|
|
|
|
(scoped_restore_tmpl::~scoped_restore_tmpl): Use the saved_var
|
|
|
|
|
method.
|
|
|
|
|
(scoped_restore_tmpl::saved_var): New method.
|
|
|
|
|
(scoped_restore_tmpl::m_saved_var): Delete.
|
|
|
|
|
* inferior.h (inferior::detaching): Now a bool.
|
|
|
|
|
* infrun.c (prepare_for_detach): Use a scoped_restore instead of a
|
|
|
|
|
cleanup.
|
|
|
|
|
* unittests/scoped_restore-selftests.c: New file.
|
|
|
|
|
|
2017-04-19 14:06:20 +02:00
|
|
|
|
2017-04-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS, SUBDIR_UNITTESTS_OBS):
|
|
|
|
|
Re-sort in alphabetic order.
|
|
|
|
|
|
2017-04-18 22:39:25 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c (obstack_xml_printf): Delete.
|
|
|
|
|
* xml-support.h (obstack_xml_printf): Delete.
|
|
|
|
|
|
gdb_xml_parser: make data fields private and make more functions methods
This patch makes the data fields of gdb_xml_parser private, and makes
more functions be gdb_xml_parser methods. This is mostly for better
encapsulation.
Some free functions have their parsing-related guts converted to
methods, while the free functions remain, as they're used as expat
callbacks. Now their only job is to be small shims that restore back
the gdb_xml_parser type, defer work to the corresponding method, and
make sure C++ exceptions don't cross expat.
More C++-fycation of the XML parsers built on top of gdb_xml_parser
could follow, but this was my stopping point.
gdb/ChangeLog:
2017-04-18 Pedro Alves <palves@redhat.com>
* xml-support.c (gdb_xml_parser) <use_dtd, dtd_name, parse,
vdebug, verror, body_text, start_element, end_element, name,
user_data, set_is_xinclude, set_error, expat_parser>: New methods.
<name, user_data, expat_parser, scopes, error, last_line, dtd_name,
is_xinclude>: Make private and add m_ prefix.
(gdb_xml_parser::body_text): New method, based on ...
(gdb_xml_body_text): ... this. Adjust.
(gdb_xml_parser::vdebug): New method, based on ...
(gdb_xml_debug): ... this. Adjust.
(gdb_xml_parser::verror): New method, based on ...
(gdb_xml_error): ... this. Adjust.
(gdb_xml_parser::start_element): New method, based on ...
(gdb_xml_start_element): ... this. Adjust.
(gdb_xml_start_element_wrapper): Defer to
gdb_xml_parser::start_element and gdb_xml_parser::set_error.
(gdb_xml_parser::end_element): New method, based on ...
(gdb_xml_end_element_wrapper): ... this. Adjust.
(gdb_xml_parser::~gdb_xml_parser): Adjust.
(gdb_xml_parser::gdb_xml_parser): Adjust to field renames.
(gdb_xml_parser::use_dtd): New method, based on ...
(gdb_xml_use_dtd): ... this. Adjust.
(gdb_xml_parser::parse): New method, based on ...
(gdb_xml_parse): ... this. Adjust.
(gdb_xml_parse_quick): Adjust to call the parser's parse method.
(xinclude_start_include): Adjust to call the parser's name method.
(xml_xinclude_default, xml_xinclude_start_doctype)
(xml_xinclude_end_doctype): Adjust to call the parser's user_data
method.
(xml_process_xincludes): Adjust to call parser methods.
* xml-support.h (gdb_xml_use_dtd, gdb_xml_parse): Delete
declarations.
2017-04-18 22:39:25 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c (gdb_xml_parser) <use_dtd, dtd_name, parse,
|
|
|
|
|
vdebug, verror, body_text, start_element, end_element, name,
|
|
|
|
|
user_data, set_is_xinclude, set_error, expat_parser>: New methods.
|
|
|
|
|
<name, user_data, expat_parser, scopes, error, last_line, dtd_name,
|
|
|
|
|
is_xinclude>: Make private and add m_ prefix.
|
|
|
|
|
(gdb_xml_parser::body_text): New method, based on ...
|
|
|
|
|
(gdb_xml_body_text): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::vdebug): New method, based on ...
|
|
|
|
|
(gdb_xml_debug): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::verror): New method, based on ...
|
|
|
|
|
(gdb_xml_error): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::start_element): New method, based on ...
|
|
|
|
|
(gdb_xml_start_element): ... this. Adjust.
|
|
|
|
|
(gdb_xml_start_element_wrapper): Defer to
|
|
|
|
|
gdb_xml_parser::start_element and gdb_xml_parser::set_error.
|
|
|
|
|
(gdb_xml_parser::end_element): New method, based on ...
|
|
|
|
|
(gdb_xml_end_element_wrapper): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::~gdb_xml_parser): Adjust.
|
|
|
|
|
(gdb_xml_parser::gdb_xml_parser): Adjust to field renames.
|
|
|
|
|
(gdb_xml_parser::use_dtd): New method, based on ...
|
|
|
|
|
(gdb_xml_use_dtd): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::parse): New method, based on ...
|
|
|
|
|
(gdb_xml_parse): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parse_quick): Adjust to call the parser's parse method.
|
|
|
|
|
(xinclude_start_include): Adjust to call the parser's name method.
|
|
|
|
|
(xml_xinclude_default, xml_xinclude_start_doctype)
|
|
|
|
|
(xml_xinclude_end_doctype): Adjust to call the parser's user_data
|
|
|
|
|
method.
|
|
|
|
|
(xml_process_xincludes): Adjust to call parser methods.
|
|
|
|
|
* xml-support.h (gdb_xml_use_dtd, gdb_xml_parse): Delete
|
|
|
|
|
declarations.
|
|
|
|
|
|
2017-04-18 22:39:25 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* tracefile-tfile.c (tfile_write_tdesc): Adjust to use
|
|
|
|
|
gdb::optional<std::string>.
|
|
|
|
|
* xml-support.c: Include <string>.
|
|
|
|
|
(scope_level::scope_level(scope_level &&))
|
|
|
|
|
(scope_level::~scope_level): Delete.
|
|
|
|
|
(scope_level::body): Now a std::string.
|
|
|
|
|
(gdb_xml_body_text, gdb_xml_end_element): Adjust.
|
|
|
|
|
(xinclude_parsing_data::xinclude_parsing_data): Add 'output'
|
|
|
|
|
parameter.
|
|
|
|
|
(xinclude_parsing_data::~xinclude_parsing_data): Delete.
|
|
|
|
|
(xinclude_parsing_data::output): Now a std::string reference.
|
|
|
|
|
(xinclude_start_include): Adjust.
|
|
|
|
|
(xml_xinclude_default): Adjust.
|
|
|
|
|
(xml_process_xincludes): Add 'output' parameter, and return bool.
|
|
|
|
|
* xml-support.h (xml_process_xincludes): Add 'output' parameter,
|
|
|
|
|
and return bool.
|
|
|
|
|
* xml-tdesc.c: Include <unordered_map> and <string>.
|
|
|
|
|
(tdesc_xml_cache): Delete.
|
|
|
|
|
(tdesc_xml_cache_s): Delete.
|
|
|
|
|
(xml_cache): Now an std::unordered_map.
|
|
|
|
|
(tdesc_parse_xml): Adjust to use std::string and unordered_map.
|
|
|
|
|
(target_fetch_description_xml): Change return type to
|
|
|
|
|
gdb::optional<std::string>, and adjust.
|
|
|
|
|
* xml-tdesc.h: Include "common/gdb_optional.h" and <string>.
|
|
|
|
|
(target_fetch_description_xml): Change return type to
|
|
|
|
|
gdb::optional<std::string>.
|
|
|
|
|
|
2017-04-18 22:39:24 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/optional-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add optional-selftests.o.
|
|
|
|
|
* unittests/optional-selftests.c: New file.
|
|
|
|
|
* unittests/optional/assignment/1.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/2.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/3.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/4.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/5.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/6.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/7.cc: New file.
|
|
|
|
|
* unittests/optional/cons/copy.cc: New file.
|
|
|
|
|
* unittests/optional/cons/default.cc: New file.
|
|
|
|
|
* unittests/optional/cons/move.cc: New file.
|
|
|
|
|
* unittests/optional/cons/value.cc: New file.
|
|
|
|
|
* unittests/optional/in_place.cc: New file.
|
|
|
|
|
* unittests/optional/observers/1.cc: New file.
|
|
|
|
|
* unittests/optional/observers/2.cc: New file.
|
|
|
|
|
|
More gdb::optional features
Currently we can't use gdb::optional<T> as function return type,
because gdb::optional's copy ctor is deleted. For example, with:
gdb::optional<int> function ()
{
gdb::optional<int> opt;
....
return opt;
we get:
src/gdb/foo.c: In function ‘gdb::optional<int> foo()’:
src/gdb/foo.c:75:10: error: use of deleted function ‘gdb::optional<T>::optional(const gdb::optional<T>&) [with T = int]’
return opt;
^
In file included from src/gdb/foo.c:68:0:
src/gdb/common/gdb_optional.h:53:3: note: declared here
optional (const optional &other) = delete;
^
I started by fixing that, and then ran into another missing feature,
also fixed by this patch.
The next feature I'm missing most from gdb::optional<T> compared to
std::optional<T> is construction/move/assignment from a T, instead of
having to default construct an gdb::optional and then use
optional::emplace(....).
For example:
gdb::optional<std::string> function ()
{
gdb::optional<std::string> opt;
std::string str;
...
opt.emplace (std::move (str));
return opt;
vs
gdb::optional<std::string> function ()
{
std::string str;
...
return str;
The copy/move ctor/assign methods weren't initialy implemented because
std::optional supports construction from a type U if U is convertible
to T too, and has rules to decide whether the ctors are
explicit/implicit based on that, and rules for whether the ctor should
be trivial or not, etc., which leads to a much more complicated
implementation.
If we stick to supporting copy/move construction/assignment of/to an
optional<T> from exactly only optional<T> and T, then all that
conversion-related complication disappears, and we still gain
convenience in most use cases.
The patch also makes emplace return a reference to the constructor
object, per C++17 std::optional, and adds a reset method, againt
because std::optional has one and it's trivial to support it. These
two changes are a requirement of the gdb::optional unit testing patch
that will follow.
gdb/ChangeLog:
2017-04-18 Pedro Alves <palves@redhat.com>
* common/gdb_optional.h: Include common/traits.h.
(in_place_t): New type.
(in_place): New constexpr variable.
(optional::optional): Remove member initialization of
m_instantiated.
(optional::optional(in_place_t...)): New constructor.
(optional::~optional): Use reset.
(optional::optional(const optional&)): New.
(optional::optional(const optional&&)): New.
(optional::optional(T &)): New.
(optional::optional(T &&)): New.
(operator::operator=(const optional &)): New.
(operator::operator=(optional &&)): New.
(operator::operator= (const T &))
(operator::operator= (T &&))
(operator::emplace (Args &&... args)): Return a T&. Use reset.
(operator::reset): New.
(operator::m_instantiated):: Add in-class initializer.
* common/traits.h: Include <type_traits>.
(struct And): New types.
2017-04-18 22:39:24 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_optional.h: Include common/traits.h.
|
|
|
|
|
(in_place_t): New type.
|
|
|
|
|
(in_place): New constexpr variable.
|
|
|
|
|
(optional::optional): Remove member initialization of
|
|
|
|
|
m_instantiated.
|
|
|
|
|
(optional::optional(in_place_t...)): New constructor.
|
|
|
|
|
(optional::~optional): Use reset.
|
|
|
|
|
(optional::optional(const optional&)): New.
|
|
|
|
|
(optional::optional(const optional&&)): New.
|
|
|
|
|
(optional::optional(T &)): New.
|
|
|
|
|
(optional::optional(T &&)): New.
|
|
|
|
|
(operator::operator=(const optional &)): New.
|
|
|
|
|
(operator::operator=(optional &&)): New.
|
|
|
|
|
(operator::operator= (const T &))
|
|
|
|
|
(operator::operator= (T &&))
|
|
|
|
|
(operator::emplace (Args &&... args)): Return a T&. Use reset.
|
|
|
|
|
(operator::reset): New.
|
|
|
|
|
(operator::m_instantiated):: Add in-class initializer.
|
|
|
|
|
* common/traits.h: Include <type_traits>.
|
|
|
|
|
(struct And): New types.
|
|
|
|
|
|
2017-04-18 22:39:24 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c: Include <vector>.
|
|
|
|
|
(scope_level::scope_level(const gdb_xml_element *))
|
|
|
|
|
(scope_level::scope_level(scope_level&&)): New.
|
|
|
|
|
(scope_level::~scope_level): New.
|
|
|
|
|
(scope_level_s): Delete.
|
|
|
|
|
(gdb_xml_parser::scopes): Now a std::vector.
|
|
|
|
|
(gdb_xml_body_text, gdb_xml_start_element, gdb_xml_end_element):
|
|
|
|
|
Use std::vector.
|
|
|
|
|
(gdb_xml_parser::~gdb_xml_parser): Remove now unnecessary
|
|
|
|
|
scope cleanup code.
|
|
|
|
|
(gdb_xml_parser::gdb_xml_parser): Remove explicit initialization
|
|
|
|
|
of the scopes member. Use std::vector::emplace_back.
|
|
|
|
|
|
2017-04-18 22:39:24 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c (gdb_xml_parser): Add ctor/dtor. Make is_xinclude
|
|
|
|
|
a bool.
|
|
|
|
|
(gdb_xml_end_element): Change type of first parameter.
|
|
|
|
|
(gdb_xml_cleanup): Rename to ...
|
|
|
|
|
(gdb_xml_parser::~gdb_xml_parser): ... this.
|
|
|
|
|
(gdb_xml_create_parser_and_cleanup): Delete with ...
|
|
|
|
|
(gdb_xml_parser::gdb_xml_parser): ... creation parts factored out
|
|
|
|
|
to this new ctor.
|
|
|
|
|
(gdb_xml_parse_quick): Create a local gdb_xml_parser instead of
|
|
|
|
|
using gdb_xml_create_parser_and_cleanup.
|
|
|
|
|
(xinclude_parsing_data): Add ctor/dtor.
|
|
|
|
|
(xml_xinclude_cleanup): Delete.
|
|
|
|
|
(xml_process_xincludes): Create a local xinclude_parsing_data
|
|
|
|
|
instead of heap-allocating one. Create a local gdb_xml_parser
|
|
|
|
|
instead of heap-allocating one with
|
|
|
|
|
gdb_xml_create_parser_and_cleanup.
|
|
|
|
|
|
2017-04-18 18:44:32 +02:00
|
|
|
|
2017-04-18 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
PR threads/20743
|
|
|
|
|
* fbsd-nat.c (resume_one_thread_cb): Remove.
|
|
|
|
|
(resume_all_threads_cb): Remove.
|
|
|
|
|
(fbsd_resume): Use ALL_NON_EXITED_THREADS instead of
|
|
|
|
|
iterate_over_threads.
|
|
|
|
|
|
2017-04-17 16:30:29 +02:00
|
|
|
|
2017-04-17 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Create a new section for the next release branch.
|
|
|
|
|
Rename the section of the current branch, now that it has
|
|
|
|
|
been cut.
|
|
|
|
|
|
2017-04-17 16:20:49 +02:00
|
|
|
|
2017-04-17 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 8.0 branch created (725bf5cf125783c2a7ca4ab63d3768e220bab2db):
|
|
|
|
|
* version.in: Bump version to 8.0.50.DATE-git.
|
|
|
|
|
|
2017-04-14 03:01:53 +02:00
|
|
|
|
2017-04-13 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21385
|
|
|
|
|
* windows-nat.c (windows_create_inferior): Declare 'allargs'
|
|
|
|
|
independently of the host, and fix build breakage on Cygwin.
|
|
|
|
|
|
2017-04-13 17:15:35 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* inferior.c (free_inferior): Convert to ...
|
|
|
|
|
(inferior::~inferior): ... this dtor.
|
|
|
|
|
(inferior::inferior): New ctor, factored out from ...
|
|
|
|
|
(add_inferior_silent): ... here. Allocate the inferior with a new
|
|
|
|
|
expression.
|
|
|
|
|
(delete_inferior): Call delete instead of free_inferior.
|
|
|
|
|
* inferior.h (gdb_environ, continuation): Forward declare.
|
|
|
|
|
(inferior): Now a class. Add in-class initialization to all
|
|
|
|
|
members. Make boolean fields bool, except 'detaching'.
|
|
|
|
|
(inferior::inferior): New explicit ctor.
|
|
|
|
|
(inferior::~inferior): New.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* inferior.c (init_inferior_list): Delete.
|
|
|
|
|
* inferior.h (init_inferior_list): Delete.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR threads/13217
|
|
|
|
|
* gdb.threads/threadapply.exp (thr_apply_detach): New procedure.
|
|
|
|
|
(top level): Call it twice, with different thread sets.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c: Include <algorithm>.
|
|
|
|
|
(thread_array_cleanup): Delete.
|
|
|
|
|
(scoped_inc_dec_ref): New class.
|
|
|
|
|
(live_threads_count): New function.
|
|
|
|
|
(set_thread_refcount): Delete.
|
|
|
|
|
(tp_array_compar_ascending): Now a bool.
|
|
|
|
|
(tp_array_compar): Convert to a std::sort comparison function.
|
|
|
|
|
(thread_apply_all_command): Use std::vector and scoped_inc_dec_ref
|
|
|
|
|
and live_threads_count.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_fork_inferior): Also switch the current
|
|
|
|
|
inferior.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (watch_command_1): Save watchpoint-frame info
|
|
|
|
|
before calling create_internal_breakpoint.
|
|
|
|
|
|
fork-child.c: Avoid unnecessary heap-allocation / string copying
The previous change to fork-child.c converted the argv building from
an alloca-allocated array of non-owning arg pointers, to a std::vector
of owning pointers, which results in N string dups, with N being the
number of arguments in the vector, and then requires manually
releasing the pointers owned by the vector.
This patch makes the vector hold non-owning pointers, and avoids the
string dups, by doing one single string copy of the arguments upfront,
and replacing separators with NULL terminators in place, like we used
to. All the logic to do that is encapsulated in a new class.
With this, there's no need to remember to manually release the argv
elements with free_vector_argv either.
gdb/ChangeLog:
2017-04-13 Pedro Alves <palves@redhat.com>
* fork-child.c (execv_argv): New class.
(breakup_args): Refactored as ...
(execv_argv::init_for_no_shell): .. this method of execv_argv.
Copy arguments to storage and replace separators with NULL
terminators in place.
(escape_bang_in_quoted_argument): Adjust to return bool.
(execv_argv::execv_argv): New ctor.
(execv_argv::init_for_shell): New method, factored out from
fork_inferior. Don't strdup strings into the vector.
(fork_inferior): Eliminate "shell" local and use execv_argv. Use
Remove free_vector_argv call.
2017-04-13 12:46:07 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* fork-child.c (execv_argv): New class.
|
|
|
|
|
(breakup_args): Refactored as ...
|
|
|
|
|
(execv_argv::init_for_no_shell): .. this method of execv_argv.
|
|
|
|
|
Copy arguments to storage and replace separators with NULL
|
|
|
|
|
terminators in place.
|
|
|
|
|
(escape_bang_in_quoted_argument): Adjust to return bool.
|
|
|
|
|
(execv_argv::execv_argv): New ctor.
|
|
|
|
|
(execv_argv::init_for_shell): New method, factored out from
|
|
|
|
|
fork_inferior. Don't strdup strings into the vector.
|
|
|
|
|
(fork_inferior): Eliminate "shell" local and use execv_argv. Use
|
|
|
|
|
Remove free_vector_argv call.
|
|
|
|
|
|
2017-04-13 09:29:44 +02:00
|
|
|
|
2017-04-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* rx-tdep.c (rx_fpsw_type): Check tdep->rx_fpsw_type instead of
|
|
|
|
|
tdep->rx_psw_type.
|
|
|
|
|
|
2017-04-13 09:29:43 +02:00
|
|
|
|
2017-04-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* rl78-tdep.c (rl78_gdbarch_init): Use XCNEW instead of XNEW.
|
|
|
|
|
* rx-tdep.c (rx_gdbarch_init): Likewise.
|
|
|
|
|
|
2017-04-13 04:07:21 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.h (struct breakpoint): Reindent.
|
|
|
|
|
|
2017-04-13 03:12:53 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (bp_location): Rename to ...
|
|
|
|
|
(bp_locations): ... this. All references updated.
|
|
|
|
|
(bp_location_count): Rename to ...
|
|
|
|
|
(bp_locations_count): ... this. All references updated.
|
|
|
|
|
(bp_location_placed_address_before_address_max): Rename to ...
|
|
|
|
|
(bp_locations_placed_address_before_address_max): ... this. All
|
|
|
|
|
references updated.
|
|
|
|
|
(bp_location_shadow_len_after_address_max): Rename to ...
|
|
|
|
|
(bp_locations_shadow_len_after_address_max): ... this. All
|
|
|
|
|
references updated.
|
|
|
|
|
(bp_location_compare_addrs): Rename to ...
|
|
|
|
|
(bp_locations_compare_addrs): ... this. All references updated.
|
|
|
|
|
(bp_location_compare):Rename to ...
|
|
|
|
|
(bp_locations_compare): ... this. All references updated.
|
|
|
|
|
(bp_location_target_extensions_update): Rename to ...
|
|
|
|
|
(bp_locations_target_extensions_update): ... this. All references
|
|
|
|
|
updated.
|
|
|
|
|
|
2017-04-12 03:05:12 +02:00
|
|
|
|
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add "common/gdb_termios.h".
|
|
|
|
|
* common/common.m4: Check headers 'termios.h', 'termio.h' and
|
|
|
|
|
'sgtty.h'.
|
|
|
|
|
* common/gdb_termios.h: New file, with parts of "terminal.h".
|
|
|
|
|
* inflow.c: Include "gdb_termios.h".
|
|
|
|
|
* ser-unix.c: Include "gdb_termios.h".
|
|
|
|
|
* terminal.h: Move terminal-related defines to
|
|
|
|
|
"common/gdb_termios.h".
|
|
|
|
|
|
2017-04-10 23:53:22 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* probe.c (parse_probes): Update.
|
|
|
|
|
* location.h (delete_event_location): Don't declare.
|
|
|
|
|
(event_location_deleter::operator()): Update.
|
|
|
|
|
* location.c (event_location_deleter::operator()): Rename from
|
|
|
|
|
delete_event_location.
|
|
|
|
|
* linespec.h (linespec_result) <location>: Change type to
|
|
|
|
|
event_location_up.
|
|
|
|
|
* linespec.c (canonicalize_linespec, event_location_to_sals)
|
|
|
|
|
(decode_objc): Update.
|
|
|
|
|
(linespec_result): Don't call delete_event_location.
|
|
|
|
|
* breakpoint.c (create_breakpoints_sal)
|
|
|
|
|
(bkpt_probe_create_sals_from_location)
|
|
|
|
|
(strace_marker_create_sals_from_location): Update.
|
|
|
|
|
|
2017-04-10 23:47:21 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* linespec.h (struct linespec_result): Add constructor and
|
|
|
|
|
destructor.
|
|
|
|
|
(init_linespec_result, destroy_linespec_result)
|
|
|
|
|
(make_cleanup_destroy_linespec_result): Don't declare.
|
|
|
|
|
* linespec.c (init_linespec_result): Remove.
|
|
|
|
|
(linespec_result::~linespec_result): Rename from
|
|
|
|
|
destroy_linespec_result. Update.
|
|
|
|
|
(cleanup_linespec_result, make_cleanup_destroy_linespec_result):
|
|
|
|
|
Remove.
|
|
|
|
|
* breakpoint.c (create_breakpoint, break_range_command)
|
|
|
|
|
(decode_location_default): Update.
|
|
|
|
|
* ax-gdb.c (agent_command_1): Update.
|
|
|
|
|
|
2017-04-10 23:41:25 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_download_tracepoint): Update.
|
|
|
|
|
* python/py-breakpoint.c (bppy_get_location): Update.
|
|
|
|
|
* guile/scm-breakpoint.c (bpscm_print_breakpoint_smob)
|
|
|
|
|
(gdbscm_breakpoint_location): Update.
|
|
|
|
|
* elfread.c (elf_gnu_ifunc_resolver_return_stop): Update.
|
|
|
|
|
* breakpoint.h (struct breakpoint) <location, location_range_end>:
|
|
|
|
|
Change type to event_location_up.
|
|
|
|
|
* breakpoint.c (create_overlay_event_breakpoint)
|
|
|
|
|
(create_longjmp_master_breakpoint)
|
|
|
|
|
(create_std_terminate_master_breakpoint)
|
|
|
|
|
(create_exception_master_breakpoint)
|
|
|
|
|
(breakpoint_event_location_empty_p, print_breakpoint_location)
|
|
|
|
|
(print_one_breakpoint_location, create_thread_event_breakpoint)
|
|
|
|
|
(init_breakpoint_sal, create_breakpoint)
|
|
|
|
|
(print_recreate_ranged_breakpoint, break_range_command)
|
|
|
|
|
(init_ada_exception_breakpoint, say_where): Update.
|
|
|
|
|
(base_breakpoint_dtor): Don't call delete_event_location.
|
|
|
|
|
(bkpt_print_recreate, tracepoint_print_recreate)
|
|
|
|
|
(dprintf_print_recreate, update_static_tracepoint)
|
|
|
|
|
(breakpoint_re_set_default): Update.
|
|
|
|
|
|
2017-04-08 00:05:42 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-loc2c.c (compute_stack_depth_worker): Change
|
|
|
|
|
type of "to_do". Update.
|
|
|
|
|
(compute_stack_depth): Use std::vector.
|
|
|
|
|
|
2017-04-08 00:01:10 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* printcmd.c (find_instruction_backward): Use std::vector.
|
|
|
|
|
|
2017-04-07 23:58:25 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symfile.c (objfilep): Remove typedef.
|
|
|
|
|
(reread_symbols): Use a std::vector.
|
|
|
|
|
|
2017-04-07 23:37:25 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (exec_direction_forward): Remove.
|
|
|
|
|
(exec_reverse_continue, mi_execute_command): Use scoped_restore.
|
|
|
|
|
* guile/scm-ports.c (ioscm_with_output_to_port_worker): Use
|
|
|
|
|
scoped_restore.
|
|
|
|
|
* guile/guile.c (guile_repl_command, guile_command)
|
|
|
|
|
(gdbscm_execute_gdb_command): Use scoped_restore.
|
|
|
|
|
* go-exp.y (go_parse): Use scoped_restore.
|
|
|
|
|
* d-exp.y (d_parse): Use scoped_restore.
|
|
|
|
|
* cli/cli-decode.c (cmd_func): Use scoped_restore.
|
|
|
|
|
* c-exp.y (c_parse): Use scoped_restore.
|
|
|
|
|
|
2017-04-07 23:34:02 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-parse.h (struct mi_parse): Add constructor, destructor.
|
|
|
|
|
(mi_parse): Update return type.
|
|
|
|
|
(mi_parse_free): Remove.
|
|
|
|
|
* mi/mi-parse.c (mi_parse::mi_parse): New constructor.
|
|
|
|
|
(mi_parse::~mi_parse): Rename from mi_parse_free.
|
|
|
|
|
(mi_parse_cleanup): Remove.
|
|
|
|
|
(mi_parse): Return a unique_ptr. Use new.
|
|
|
|
|
* mi/mi-main.c (mi_execute_command): Update.
|
|
|
|
|
|
2017-04-07 07:26:14 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* location.c (explicit_location_lex_one): Return a
|
|
|
|
|
unique_xmalloc_ptr.
|
|
|
|
|
(string_to_explicit_location): Update. Remove cleanups.
|
|
|
|
|
|
2017-04-07 06:48:27 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* gnu-v3-abi.c (value_and_voffset_p): Remove typedef.
|
|
|
|
|
(compare_value_and_voffset): Change type. Update.
|
|
|
|
|
(compute_vtable_size): Change type of "offset_vec".
|
|
|
|
|
(gnuv3_print_vtable): Use std::vector. Remove cleanups.
|
|
|
|
|
(gnuv3_get_typeid): Remove extraneous declaration.
|
|
|
|
|
|
2017-04-07 05:07:00 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* charset.h (wchar_iterator): Fix comment.
|
|
|
|
|
|
2017-04-07 04:50:38 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* charset.c (iconv_wrapper): New class.
|
|
|
|
|
(cleanup_iconv): Remove.
|
|
|
|
|
(convert_between_encodings): Use it.
|
|
|
|
|
|
2017-04-07 04:27:10 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symfile.h (increment_reading_symtab): Update type.
|
|
|
|
|
* symfile.c (decrement_reading_symtab): Remove.
|
|
|
|
|
(increment_reading_symtab): Return a scoped_restore_tmpl<int>.
|
|
|
|
|
* psymtab.c (psymtab_to_symtab): Update.
|
|
|
|
|
* dwarf2read.c (dw2_instantiate_symtab): Update.
|
|
|
|
|
|
2017-04-07 04:09:42 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* jit.c (struct jit_reader): Declare separately. Add constructor
|
|
|
|
|
and destructor. Change type of "handle".
|
|
|
|
|
(loaded_jit_reader): Define separately.
|
|
|
|
|
(jit_reader_load): Update. New "new".
|
|
|
|
|
(jit_reader_unload_command): Use "delete".
|
|
|
|
|
* gdb-dlfcn.h (struct dlclose_deleter): New.
|
|
|
|
|
(gdb_dlhandle_up): New typedef.
|
|
|
|
|
(gdb_dlopen, gdb_dlsym): Update types.
|
|
|
|
|
(gdb_dlclose): Remove.
|
|
|
|
|
* gdb-dlfcn.c (gdb_dlopen): Return a gdb_dlhandle_up.
|
|
|
|
|
(gdb_dlsym): Change type of "handle".
|
|
|
|
|
(make_cleanup_dlclose): Remove.
|
|
|
|
|
(dlclose_deleter::operator()): Rename from gdb_dlclose.
|
|
|
|
|
* compile/compile-c-support.c (load_libcc): Update.
|
|
|
|
|
|
2017-04-07 00:38:56 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symtab.h (find_pcs_for_symtab_line): Change return type.
|
|
|
|
|
* symtab.c (find_pcs_for_symtab_line): Change return type.
|
|
|
|
|
* python/py-linetable.c (build_line_table_tuple_from_pcs): Change
|
|
|
|
|
type of "vec". Update.
|
|
|
|
|
(ltpy_get_pcs_for_line): Update.
|
|
|
|
|
* linespec.c (decode_digits_ordinary): Update.
|
|
|
|
|
|
Introduce command_line_up
This introduces command_line_up, a unique_ptr for command_line
objects, and changes many places to use it. This removes a number of
cleanups.
Command lines are funny in that sometimes they are reference counted.
Once there is more C++-ification of some of the users, perhaps all of
these can be changed to use shared_ptr instead.
gdb/ChangeLog
2017-04-12 Tom Tromey <tom@tromey.com>
* tracepoint.c (actions_command): Update.
* python/python.c (python_command, python_interactive_command):
Update.
* mi/mi-cmd-break.c (mi_cmd_break_commands): Update.
* guile/guile.c (guile_command): Update.
* defs.h (read_command_lines, read_command_lines_1): Return
command_line_up.
(command_lines_deleter): New struct.
(command_line_up): New typedef.
* compile/compile.c (compile_code_command)
(compile_print_command): Update.
* cli/cli-script.h (get_command_line, copy_command_lines): Return
command_line_up.
(make_cleanup_free_command_lines): Remove.
* cli/cli-script.c (get_command_line, read_command_lines_1)
(copy_command_lines): Return command_line_up.
(while_command, if_command, read_command_lines, define_command)
(document_command): Update.
(do_free_command_lines_cleanup, make_cleanup_free_command_lines):
Remove.
* breakpoint.h (breakpoint_set_commands): Change type of
"commands".
* breakpoint.c (breakpoint_set_commands): Change type of
"commands". Update.
(do_map_commands_command, update_dprintf_command_list)
(create_tracepoint_from_upload): Update.
2017-04-06 05:14:09 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (actions_command): Update.
|
|
|
|
|
* python/python.c (python_command, python_interactive_command):
|
|
|
|
|
Update.
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_commands): Update.
|
|
|
|
|
* guile/guile.c (guile_command): Update.
|
|
|
|
|
* defs.h (read_command_lines, read_command_lines_1): Return
|
|
|
|
|
command_line_up.
|
|
|
|
|
(command_lines_deleter): New struct.
|
|
|
|
|
(command_line_up): New typedef.
|
|
|
|
|
* compile/compile.c (compile_code_command)
|
|
|
|
|
(compile_print_command): Update.
|
|
|
|
|
* cli/cli-script.h (get_command_line, copy_command_lines): Return
|
|
|
|
|
command_line_up.
|
|
|
|
|
(make_cleanup_free_command_lines): Remove.
|
|
|
|
|
* cli/cli-script.c (get_command_line, read_command_lines_1)
|
|
|
|
|
(copy_command_lines): Return command_line_up.
|
|
|
|
|
(while_command, if_command, read_command_lines, define_command)
|
|
|
|
|
(document_command): Update.
|
|
|
|
|
(do_free_command_lines_cleanup, make_cleanup_free_command_lines):
|
|
|
|
|
Remove.
|
|
|
|
|
* breakpoint.h (breakpoint_set_commands): Change type of
|
|
|
|
|
"commands".
|
|
|
|
|
* breakpoint.c (breakpoint_set_commands): Change type of
|
|
|
|
|
"commands". Update.
|
|
|
|
|
(do_map_commands_command, update_dprintf_command_list)
|
|
|
|
|
(create_tracepoint_from_upload): Update.
|
|
|
|
|
|
Introduce event_location_up
This removes make_cleanup_delete_event_location and instead changes
the various location functions to return an event_location_up, a new
unique_ptr typedef.
This is largely straightforward, but be sure to examine the
init_breakpoint_sal change. I believe the code I deleted there is
dead, because "location != NULL" can never be true in that branch; but
you should double-check.
gdb/ChangeLog
2017-04-12 Tom Tromey <tom@tromey.com>
* tracepoint.c (scope_info): Update.
* spu-tdep.c (spu_catch_start): Update.
* python/python.c (gdbpy_decode_line): Update.
* python/py-finishbreakpoint.c (bpfinishpy_init): Update.
* python/py-breakpoint.c (bppy_init): Update.
* probe.c (parse_probes): Update.
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Update.
* location.h (event_location_deleter): New struct.
(event_location_up): New typedef.
(new_linespec_location, new_address_location, new_probe_location)
(new_explicit_location, copy_event_location)
(string_to_event_location, string_to_event_location_basic)
(string_to_explicit_location): Update return type.
(make_cleanup_delete_event_location): Remove.
* location.c (new_linespec_location, new_address_location)
(new_probe_location, new_explicit_location, copy_event_location):
Return event_location_up.
(delete_event_location_cleanup)
(make_cleanup_delete_event_location): Remove.
(string_to_explicit_location, string_to_event_location_basic)
(string_to_event_location): Return event_location_up.
* linespec.c (canonicalize_linespec, event_location_to_sals)
(decode_line_with_current_source)
(decode_line_with_last_displayed, decode_objc): Update.
* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
* completer.c (location_completer): Update.
* cli/cli-cmds.c (edit_command, list_command): Update.
* breakpoint.c (create_overlay_event_breakpoint)
(create_longjmp_master_breakpoint)
(create_std_terminate_master_breakpoint)
(create_exception_master_breakpoint)
(create_thread_event_breakpoint): Update.
(init_breakpoint_sal): Update. Remove some dead code.
(create_breakpoint_sal): Change type of "location". Update.
(create_breakpoints_sal, create_breakpoint, break_command_1)
(dprintf_command, break_range_command, until_break_command)
(init_ada_exception_breakpoint)
(strace_marker_create_sals_from_location)
(update_static_tracepoint, trace_command, ftrace_command)
(strace_command, create_tracepoint_from_upload): Update.
* break-catch-throw.c (re_set_exception_catchpoint): Update.
* ax-gdb.c (agent_command_1): Update.
2017-04-06 04:44:01 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (scope_info): Update.
|
|
|
|
|
* spu-tdep.c (spu_catch_start): Update.
|
|
|
|
|
* python/python.c (gdbpy_decode_line): Update.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_init): Update.
|
|
|
|
|
* python/py-breakpoint.c (bppy_init): Update.
|
|
|
|
|
* probe.c (parse_probes): Update.
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Update.
|
|
|
|
|
* location.h (event_location_deleter): New struct.
|
|
|
|
|
(event_location_up): New typedef.
|
|
|
|
|
(new_linespec_location, new_address_location, new_probe_location)
|
|
|
|
|
(new_explicit_location, copy_event_location)
|
|
|
|
|
(string_to_event_location, string_to_event_location_basic)
|
|
|
|
|
(string_to_explicit_location): Update return type.
|
|
|
|
|
(make_cleanup_delete_event_location): Remove.
|
|
|
|
|
* location.c (new_linespec_location, new_address_location)
|
|
|
|
|
(new_probe_location, new_explicit_location, copy_event_location):
|
|
|
|
|
Return event_location_up.
|
|
|
|
|
(delete_event_location_cleanup)
|
|
|
|
|
(make_cleanup_delete_event_location): Remove.
|
|
|
|
|
(string_to_explicit_location, string_to_event_location_basic)
|
|
|
|
|
(string_to_event_location): Return event_location_up.
|
|
|
|
|
* linespec.c (canonicalize_linespec, event_location_to_sals)
|
|
|
|
|
(decode_line_with_current_source)
|
|
|
|
|
(decode_line_with_last_displayed, decode_objc): Update.
|
|
|
|
|
* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
|
|
|
|
|
* completer.c (location_completer): Update.
|
|
|
|
|
* cli/cli-cmds.c (edit_command, list_command): Update.
|
|
|
|
|
* breakpoint.c (create_overlay_event_breakpoint)
|
|
|
|
|
(create_longjmp_master_breakpoint)
|
|
|
|
|
(create_std_terminate_master_breakpoint)
|
|
|
|
|
(create_exception_master_breakpoint)
|
|
|
|
|
(create_thread_event_breakpoint): Update.
|
|
|
|
|
(init_breakpoint_sal): Update. Remove some dead code.
|
|
|
|
|
(create_breakpoint_sal): Change type of "location". Update.
|
|
|
|
|
(create_breakpoints_sal, create_breakpoint, break_command_1)
|
|
|
|
|
(dprintf_command, break_range_command, until_break_command)
|
|
|
|
|
(init_ada_exception_breakpoint)
|
|
|
|
|
(strace_marker_create_sals_from_location)
|
|
|
|
|
(update_static_tracepoint, trace_command, ftrace_command)
|
|
|
|
|
(strace_command, create_tracepoint_from_upload): Update.
|
|
|
|
|
* break-catch-throw.c (re_set_exception_catchpoint): Update.
|
|
|
|
|
* ax-gdb.c (agent_command_1): Update.
|
|
|
|
|
|
2017-04-12 17:00:04 +02:00
|
|
|
|
2017-04-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_TARGET_OBS): Add i386-go32-tdep.o.
|
|
|
|
|
* configure.tgt: Handle i[34567]86-*-go32* and
|
|
|
|
|
i[34567]86-*-msdosdjgpp*.
|
|
|
|
|
* i386-tdep.c (i386_svr4_reg_to_regnum):
|
|
|
|
|
Make extern.
|
|
|
|
|
(i386_go32_init_abi, i386_coff_osabi_sniffer): Moved to
|
|
|
|
|
i386-go32-tdep.c.
|
|
|
|
|
(_initialize_i386_tdep): DJGPP bits moved to i386-go32-tdep.c.
|
|
|
|
|
* i386-go32-tdep.c: New file.
|
|
|
|
|
* i386-tdep.h (tdesc_i386_mmx, i386_svr4_reg_to_regnum): New
|
|
|
|
|
declarations.
|
|
|
|
|
|
2017-04-12 16:46:13 +02:00
|
|
|
|
2017-04-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* aix-thread.c (pd_status2str): Change return type to const char *.
|
|
|
|
|
|
2017-03-31 14:41:45 +02:00
|
|
|
|
2017-04-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_elf_init_abi, i386_go32_init_abi): Remove
|
|
|
|
|
calls to set_gdbarch_gnu_triplet_regexp.
|
|
|
|
|
|
Teach GDB that wchar_t is a built-in type in C++ mode
GDB is currently not aware that wchar_t is a built-in type in C++
mode. This is usually not a problem because the debug info describes
the type, so when you have a program loaded, you don't notice this.
However, if you try expressions involving wchar_t before a program is
loaded, gdb errors out:
(gdb) p (wchar_t)-1
No symbol table is loaded. Use the "file" command.
(gdb) p L"hello"
No type named wchar_t.
(gdb) ptype L"hello"
No type named wchar_t.
This commit teaches gdb about the type. After:
(gdb) p (wchar_t)-1
$1 = -1 L'\xffffffff'
(gdb) p L"hello"
$2 = L"hello"
(gdb) ptype L"hello"
type = wchar_t [6]
Unlike char16_t/char32_t, unfortunately, the underlying type of
wchar_t is implementation dependent, both size and signness. So this
requires adding a couple new gdbarch hooks.
I grepped the GCC code base for WCHAR_TYPE and WCHAR_TYPE_SIZE, and it
seems to me that the majority of the ABIs have a 4-byte signed
wchar_t, so that's what I made the default for GDB too. And then I
looked for which ports have a 16-bit and/or unsigned wchar_t, and made
GDB follow suit.
gdb/ChangeLog:
2017-04-12 Pedro Alves <palves@redhat.com>
PR gdb/21323
* c-lang.c (cplus_primitive_types) <cplus_primitive_type_wchar_t>:
New enum value.
(cplus_language_arch_info): Register cplus_primitive_type_wchar_t.
* gdbtypes.h (struct builtin_type) <builtin_wchar>: New field.
* gdbtypes.c (gdbtypes_post_init): Create the "wchar_t" type.
* gdbarch.sh (wchar_bit, wchar_signed): New per-arch values.
* gdbarch.h, gdbarch.c: Regenerate.
* aarch64-tdep.c (aarch64_gdbarch_init): Override
gdbarch_wchar_bit and gdbarch_wchar_signed.
* alpha-tdep.c (alpha_gdbarch_init): Likewise.
* arm-tdep.c (arm_gdbarch_init): Likewise.
* avr-tdep.c (avr_gdbarch_init): Likewise.
* h8300-tdep.c (h8300_gdbarch_init): Likewise.
* i386-nto-tdep.c (i386nto_init_abi): Likewise.
* i386-tdep.c (i386_go32_init_abi): Likewise.
* m32r-tdep.c (m32r_gdbarch_init): Likewise.
* moxie-tdep.c (moxie_gdbarch_init): Likewise.
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
* rs6000-aix-tdep.c (rs6000_aix_init_osabi): Likewise.
* sh-tdep.c (sh_gdbarch_init): Likewise.
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
* sparc64-tdep.c (sparc64_init_abi): Likewise.
* windows-tdep.c (windows_init_abi): Likewise.
* xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise.
gdb/testsuite/ChangeLog:
2017-04-12 Pedro Alves <palves@redhat.com>
PR gdb/21323
* gdb.cp/wide_char_types.c: Include <wchar.h>.
(wchar): New global.
* gdb.cp/wide_char_types.exp (wide_char_types_program)
(do_test_wide_char, wide_char_types_no_program, top level): Add
wchar_t testing.
2017-04-12 15:00:49 +02:00
|
|
|
|
2017-04-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21323
|
|
|
|
|
* c-lang.c (cplus_primitive_types) <cplus_primitive_type_wchar_t>:
|
|
|
|
|
New enum value.
|
|
|
|
|
(cplus_language_arch_info): Register cplus_primitive_type_wchar_t.
|
|
|
|
|
* gdbtypes.h (struct builtin_type) <builtin_wchar>: New field.
|
|
|
|
|
* gdbtypes.c (gdbtypes_post_init): Create the "wchar_t" type.
|
|
|
|
|
* gdbarch.sh (wchar_bit, wchar_signed): New per-arch values.
|
|
|
|
|
* gdbarch.h, gdbarch.c: Regenerate.
|
|
|
|
|
* aarch64-tdep.c (aarch64_gdbarch_init): Override
|
|
|
|
|
gdbarch_wchar_bit and gdbarch_wchar_signed.
|
|
|
|
|
* alpha-tdep.c (alpha_gdbarch_init): Likewise.
|
|
|
|
|
* arm-tdep.c (arm_gdbarch_init): Likewise.
|
|
|
|
|
* avr-tdep.c (avr_gdbarch_init): Likewise.
|
|
|
|
|
* h8300-tdep.c (h8300_gdbarch_init): Likewise.
|
|
|
|
|
* i386-nto-tdep.c (i386nto_init_abi): Likewise.
|
|
|
|
|
* i386-tdep.c (i386_go32_init_abi): Likewise.
|
|
|
|
|
* m32r-tdep.c (m32r_gdbarch_init): Likewise.
|
|
|
|
|
* moxie-tdep.c (moxie_gdbarch_init): Likewise.
|
|
|
|
|
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
|
|
|
|
|
* rs6000-aix-tdep.c (rs6000_aix_init_osabi): Likewise.
|
|
|
|
|
* sh-tdep.c (sh_gdbarch_init): Likewise.
|
|
|
|
|
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
|
|
|
|
|
* sparc64-tdep.c (sparc64_init_abi): Likewise.
|
|
|
|
|
* windows-tdep.c (windows_init_abi): Likewise.
|
|
|
|
|
* xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise.
|
|
|
|
|
|
Fix PR c++/21323: GDB thinks char16_t and char32_t are signed in C++
While the C++ standard says that char16_t and char32_t are unsigned types:
Types char16_t and char32_t denote distinct types with the same size,
signedness, and alignment as uint_least16_t and uint_least32_t,
respectively, in <cstdint>, called the underlying types.
... gdb treats them as signed currently:
(gdb) p (char16_t)-1
$1 = -1 u'\xffff'
There are actually two places in gdb that hardcode these types:
- gdbtypes.c:gdbtypes_post_init, when creating the built-in types,
seemingly used by the "x /s" command (judging from commit 9a22f0d0).
- dwarf2read.c, when reading base types with DW_ATE_UTF encoding
(which is what is used for these types, when compiling for C++11 and
up). Despite the comment, the type created does end up used.
Both places need fixing. But since I couldn't tell why dwarf2read.c
needs to create a new type, I've made it use the per-arch built-in
types instead, so that the types are only created once per arch
instead of once per objfile. That seems to work fine.
While writting the test, I noticed that the C++ language parser isn't
actually aware of these built-in types, so if you try to use them
without a program that uses them, you get:
(gdb) set language c++
(gdb) ptype char16_t
No symbol table is loaded. Use the "file" command.
(gdb) ptype u"hello"
No type named char16_t.
(gdb) p u"hello"
No type named char16_t.
That's fixed by simply adding a couple entries to C++'s built-in types
array in c-lang.c. With that, we get the expected:
(gdb) ptype char16_t
type = char16_t
(gdb) ptype u"hello"
type = char16_t [6]
(gdb) p u"hello"
$1 = u"hello"
gdb/ChangeLog:
2017-04-12 Pedro Alves <palves@redhat.com>
PR c++/21323
* c-lang.c (cplus_primitive_types) <cplus_primitive_type_char16_t,
cplus_primitive_type_char32_t>: New enum values.
(cplus_language_arch_info): Register cplus_primitive_type_char16_t
and cplus_primitive_type_char32_t.
* dwarf2read.c (read_base_type) <DW_ATE_UTF>: If bit size is 16 or
32, use the archtecture's built-in type for char16_t and char32_t,
respectively. Otherwise, fallback to init_integer_type as before,
but make the type unsigned, and issue a complaint.
* gdbtypes.c (gdbtypes_post_init): Make char16_t and char32_t unsigned.
gdb/testsuite/ChangeLog:
2017-04-12 Pedro Alves <palves@redhat.com>
PR c++/21323
* gdb.cp/wide_char_types.c: New file.
* gdb.cp/wide_char_types.exp: New file.
2017-04-12 15:00:49 +02:00
|
|
|
|
2017-04-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR c++/21323
|
|
|
|
|
* c-lang.c (cplus_primitive_types) <cplus_primitive_type_char16_t,
|
|
|
|
|
cplus_primitive_type_char32_t>: New enum values.
|
|
|
|
|
(cplus_language_arch_info): Register cplus_primitive_type_char16_t
|
|
|
|
|
and cplus_primitive_type_char32_t.
|
|
|
|
|
* dwarf2read.c (read_base_type) <DW_ATE_UTF>: If bit size is 16 or
|
|
|
|
|
32, use the archtecture's built-in type for char16_t and char32_t,
|
|
|
|
|
respectively. Otherwise, fallback to init_integer_type as before,
|
|
|
|
|
but make the type unsigned, and issue a complaint.
|
|
|
|
|
* gdbtypes.c (gdbtypes_post_init): Make char16_t and char32_t unsigned.
|
|
|
|
|
|
2017-04-12 10:19:55 +02:00
|
|
|
|
2017-04-12 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
2017-04-12 10:51:04 +02:00
|
|
|
|
* m32r-tdep.c (M32R_ARG_REGISTER_SIZE): Added.
|
2017-04-12 10:19:55 +02:00
|
|
|
|
(m32r_push_dummy_call): Use M32R_ARG_REGISTER_SIZE.
|
|
|
|
|
|
2017-04-12 07:16:50 +02:00
|
|
|
|
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (windows_create_inferior): Declare 'toexec' as
|
|
|
|
|
'const char *'.
|
|
|
|
|
|
C++-fy and prepare for sharing fork_inferior
As a preparation for the next patch, which will move fork_inferior
from GDB to common/ (and therefore share it with gdbserver), it is
interesting to convert a few functions to C++.
This patch touches functions related to parsing command-line arguments
to the inferior (see gdb/fork-child.c:breakup_args), the way the
arguments are stored on fork_inferior (using std::vector instead of
char **), and the code responsible for dealing with argv also on
gdbserver.
I've taken this opportunity and decided to constify a few arguments to
fork_inferior/create_inferior as well, in order to make the code
cleaner. And now, on gdbserver, we're using xstrdup everywhere and
aren't checking for memory allocation failures anymore, as requested
by Pedro:
<https://sourceware.org/ml/gdb-patches/2017-03/msg00191.html>
Message-Id: <025ebdb9-90d9-d54a-c055-57ed2406b812@redhat.com>
Pedro Alves wrote:
> On the "== NULL" check: IIUC, the old NULL check was there to
> handle strdup returning NULL due to out-of-memory.
> See NULL checks and comments further above in this function.
> Now that you're using a std::vector, that doesn't work or make
> sense any longer, since if push_back fails to allocate space for
> its internal buffer (with operator new), our operator new replacement
> (common/new-op.c) calls malloc_failure, which aborts gdbserver.
>
> Not sure it makes sense to handle out-of-memory specially in
> the gdb/rsp-facing functions nowadays (maybe git blame/log/patch
> submission for that code shows some guidelines). Maybe (or, probably)
> it's OK to stop caring about it, but then we should consistently remove
> left over code, by using xstrdup instead and remove the NULL checks.
IMO this refactoring was very good to increase the readability of the
code as well, because some parts of the argument handling were
unnecessarily confusing before.
gdb/ChangeLog:
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
* common/common-utils.c (free_vector_argv): New function.
* common/common-utils.h: Include <vector>.
(free_vector_argv): New prototype.
* darwin-nat.c (darwin_create_inferior): Rewrite function
prototype in order to constify "exec_file" and accept a
"std::string" for "allargs".
* fork-child.c: Include <vector>.
(breakup_args): Rewrite function, using C++.
(fork_inferior): Rewrite function header, constify "exec_file_arg"
and accept "std::string" for "allargs". Update the code to
calculate "argv" based on "allargs". Update calls to "exec_fun"
and "execvp".
* gnu-nat.c (gnu_create_inferior): Rewrite function prototype in
order to constify "exec_file" and accept a "std::string" for
"allargs".
* go32-nat.c (go32_create_inferior): Likewise.
* inf-ptrace.c (inf_ptrace_create_inferior): Likewise.
* infcmd.c (run_command_1): Constify "exec_file". Use
"std::string" for inferior arguments.
* inferior.h (fork_inferior): Update prototype.
* linux-nat.c (linux_nat_create_inferior): Rewrite function
prototype in order to constify "exec_file" and accept a
"std::string" for "allargs".
* nto-procfs.c (procfs_create_inferior): Likewise.
* procfs.c (procfs_create_inferior): Likewise.
* remote-sim.c (gdbsim_create_inferior): Likewise.
* remote.c (extended_remote_run): Update code to accept
"std::string" as argument.
(extended_remote_create_inferior): Rewrite function prototype in
order to constify "exec_file" and accept a "std::string" for
"allargs".
* rs6000-nat.c (super_create_inferior): Likewise.
(rs6000_create_inferior): Likewise.
* target.h (struct target_ops) <to_create_inferior>: Likewise.
* windows-nat.c (windows_create_inferior): Likewise.
gdb/gdbserver/ChangeLog:
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
* server.c: Include <vector>.
<program_argv, wrapper_argv>: Convert to std::vector.
(start_inferior): Rewrite function to use C++.
(handle_v_run): Likewise. Update code that calculates the argv
based on the vRun packet; use C++.
(captured_main): Likewise.
2017-03-23 02:54:49 +01:00
|
|
|
|
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-utils.c (free_vector_argv): New function.
|
|
|
|
|
* common/common-utils.h: Include <vector>.
|
|
|
|
|
(free_vector_argv): New prototype.
|
|
|
|
|
* darwin-nat.c (darwin_create_inferior): Rewrite function
|
|
|
|
|
prototype in order to constify "exec_file" and accept a
|
|
|
|
|
"std::string" for "allargs".
|
|
|
|
|
* fork-child.c: Include <vector>.
|
|
|
|
|
(breakup_args): Rewrite function, using C++.
|
|
|
|
|
(fork_inferior): Rewrite function header, constify "exec_file_arg"
|
|
|
|
|
and accept "std::string" for "allargs". Update the code to
|
|
|
|
|
calculate "argv" based on "allargs". Update calls to "exec_fun"
|
|
|
|
|
and "execvp".
|
|
|
|
|
* gnu-nat.c (gnu_create_inferior): Rewrite function prototype in
|
|
|
|
|
order to constify "exec_file" and accept a "std::string" for
|
|
|
|
|
"allargs".
|
|
|
|
|
* go32-nat.c (go32_create_inferior): Likewise.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_create_inferior): Likewise.
|
|
|
|
|
* infcmd.c (run_command_1): Constify "exec_file". Use
|
|
|
|
|
"std::string" for inferior arguments.
|
|
|
|
|
* inferior.h (fork_inferior): Update prototype.
|
|
|
|
|
* linux-nat.c (linux_nat_create_inferior): Rewrite function
|
|
|
|
|
prototype in order to constify "exec_file" and accept a
|
|
|
|
|
"std::string" for "allargs".
|
|
|
|
|
* nto-procfs.c (procfs_create_inferior): Likewise.
|
|
|
|
|
* procfs.c (procfs_create_inferior): Likewise.
|
|
|
|
|
* remote-sim.c (gdbsim_create_inferior): Likewise.
|
|
|
|
|
* remote.c (extended_remote_run): Update code to accept
|
|
|
|
|
"std::string" as argument.
|
|
|
|
|
(extended_remote_create_inferior): Rewrite function prototype in
|
|
|
|
|
order to constify "exec_file" and accept a "std::string" for
|
|
|
|
|
"allargs".
|
|
|
|
|
* rs6000-nat.c (super_create_inferior): Likewise.
|
|
|
|
|
(rs6000_create_inferior): Likewise.
|
|
|
|
|
* target.h (struct target_ops) <to_create_inferior>: Likewise.
|
|
|
|
|
* windows-nat.c (windows_create_inferior): Likewise.
|
|
|
|
|
|
2017-04-11 14:57:52 +02:00
|
|
|
|
2017-04-11 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c: Fix whitespace throughout.
|
|
|
|
|
|
2017-04-11 15:28:51 +02:00
|
|
|
|
2017-04-11 Philipp Rudo <prudo@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_detach): Remove delete_lwp call.
|
|
|
|
|
|
2017-04-11 14:51:58 +02:00
|
|
|
|
2017-04-11 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (arm_store_return_value): Use FP_REGISTER_SIZE
|
|
|
|
|
|
2017-04-10 18:43:44 +02:00
|
|
|
|
2017-04-10 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21364
|
|
|
|
|
* osdata.c (info_osdata): Check if 'type' is an empty string
|
|
|
|
|
instead of NULL.
|
|
|
|
|
|
thread.c: ptid_equal -> operator==
gdb/ChangeLog:
2017-04-10 Pedro Alves <palves@redhat.com>
* thread.c (add_thread_silent, delete_thread_1, find_thread_ptid)
(ptid_to_global_thread_id, in_thread_list)
(do_captured_list_thread_ids, set_resumed, set_running)
(set_executing, set_stop_requested, finish_thread_state)
(validate_registers_access, can_access_registers_ptid)
(print_thread_info_1, switch_to_thread)
(do_restore_current_thread_cleanup)
(make_cleanup_restore_current_thread, thread_command)
(thread_name_command): Use operator== instead of ptid_equal.
2017-04-10 16:54:57 +02:00
|
|
|
|
2017-04-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (add_thread_silent, delete_thread_1, find_thread_ptid)
|
|
|
|
|
(ptid_to_global_thread_id, in_thread_list)
|
|
|
|
|
(do_captured_list_thread_ids, set_resumed, set_running)
|
|
|
|
|
(set_executing, set_stop_requested, finish_thread_state)
|
|
|
|
|
(validate_registers_access, can_access_registers_ptid)
|
|
|
|
|
(print_thread_info_1, switch_to_thread)
|
|
|
|
|
(do_restore_current_thread_cleanup)
|
|
|
|
|
(make_cleanup_restore_current_thread, thread_command)
|
|
|
|
|
(thread_name_command): Use operator== instead of ptid_equal.
|
|
|
|
|
|
2017-04-10 16:18:49 +02:00
|
|
|
|
2017-04-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (struct current_thread_cleanup) <next>: Delete field.
|
|
|
|
|
(current_thread_cleanup_chain): Delete.
|
|
|
|
|
(restore_current_thread_cleanup_dtor)
|
|
|
|
|
(make_cleanup_restore_current_thread): Remove references to
|
|
|
|
|
current_thread_cleanup_chain.
|
|
|
|
|
|
2017-04-10 16:01:53 +02:00
|
|
|
|
2017-04-10 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* msp430-tdep.c (msp430_pseudo_register_read): Never return
|
|
|
|
|
REG_UNKNOWN.
|
|
|
|
|
|
Don't delete thread_info if refcount isn't zero
I build GDB with asan, and run test case hook-stop.exp, and threadapply.exp,
I got the following asan error,
=================================================================^M
^[[1m^[[31m==2291==ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000999c4 at pc 0x000000826022 bp 0x7ffd28a8ff70 sp 0x7ffd28a8ff60^M
^[[1m^[[0m^[[1m^[[34mREAD of size 4 at 0x6160000999c4 thread T0^[[1m^[[0m^M
#0 0x826021 in release_stop_context_cleanup ../../binutils-gdb/gdb/infrun.c:8203^M
#1 0x72798a in do_my_cleanups ../../binutils-gdb/gdb/common/cleanups.c:154^M
#2 0x727a32 in do_cleanups(cleanup*) ../../binutils-gdb/gdb/common/cleanups.c:176^M
#3 0x826895 in normal_stop() ../../binutils-gdb/gdb/infrun.c:8381^M
#4 0x815208 in fetch_inferior_event(void*) ../../binutils-gdb/gdb/infrun.c:4011^M
#5 0x868aca in inferior_event_handler(inferior_event_type, void*) ../../binutils-gdb/gdb/inf-loop.c:44^M
....
^[[1m^[[32m0x6160000999c4 is located 68 bytes inside of 568-byte region [0x616000099980,0x616000099bb8)^M
^[[1m^[[0m^[[1m^[[35mfreed by thread T0 here:^[[1m^[[0m^M
#0 0x7fb0bc1312ca in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x982ca)^M
#1 0xb8c62f in xfree(void*) ../../binutils-gdb/gdb/common/common-utils.c:100^M
#2 0x83df67 in free_thread ../../binutils-gdb/gdb/thread.c:207^M
#3 0x83dfd2 in init_thread_list() ../../binutils-gdb/gdb/thread.c:223^M
#4 0x805494 in kill_command ../../binutils-gdb/gdb/infcmd.c:2595^M
....
Detaching from program: /home/yao.qi/SourceCode/gnu/build-with-asan/gdb/testsuite/outputs/gdb.threads/threadapply/threadapply, process 2399^M
=================================================================^M
^[[1m^[[31m==2387==ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000a98c0 at pc 0x00000083fd28 bp 0x7ffd401c3110 sp 0x7ffd401c3100^M
^[[1m^[[0m^[[1m^[[34mREAD of size 4 at 0x6160000a98c0 thread T0^[[1m^[[0m^M
#0 0x83fd27 in thread_alive ../../binutils-gdb/gdb/thread.c:741^M
#1 0x844277 in thread_apply_all_command ../../binutils-gdb/gdb/thread.c:1804^M
....
^M
^[[1m^[[32m0x6160000a98c0 is located 64 bytes inside of 568-byte region [0x6160000a9880,0x6160000a9ab8)^M
^[[1m^[[0m^[[1m^[[35mfreed by thread T0 here:^[[1m^[[0m^M
#0 0x7f59a7e322ca in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x982ca)^M
#1 0xb8c62f in xfree(void*) ../../binutils-gdb/gdb/common/common-utils.c:100^M
#2 0x83df67 in free_thread ../../binutils-gdb/gdb/thread.c:207^M
#3 0x83dfd2 in init_thread_list() ../../binutils-gdb/gdb/thread.c:223^M
This patch fixes the issue by deleting thread_info object if it is
deletable, otherwise, mark it as exited (by set_thread_exited).
Function set_thread_exited is shared from delete_thread_1. This patch
also moves field "refcount" to private and methods incref and
decref. Additionally, we stop using "ptid_t" in
"struct current_thread_cleanup" to reference threads, instead we use
"thread_info" directly. Due to this change, we don't need
restore_current_thread_ptid_changed anymore.
gdb:
2017-04-10 Yao Qi <yao.qi@linaro.org>
PR gdb/19942
* gdbthread.h (thread_info::deletable): New method.
(thread_info::incref): New method.
(thread_info::decref): New method.
(thread_info::refcount): Move it to private.
* infrun.c (save_stop_context): Call inc_refcount.
(release_stop_context_cleanup): Likewise.
* thread.c (set_thread_exited): New function.
(init_thread_list): Delete "tp" only it is deletable, otherwise
call set_thread_exited.
(delete_thread_1): Call set_thread_exited.
(current_thread_cleanup) <inferior_pid>: Remove.
<thread>: New field.
(restore_current_thread_ptid_changed): Removed.
(do_restore_current_thread_cleanup): Adjust.
(restore_current_thread_cleanup_dtor): Don't call
find_thread_ptid.
(set_thread_refcount): Use dec_refcount.
(make_cleanup_restore_current_thread): Adjust.
(thread_apply_all_command): Call inc_refcount.
(_initialize_thread): Don't call
observer_attach_thread_ptid_changed.
2017-04-10 15:39:41 +02:00
|
|
|
|
2017-04-10 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/19942
|
|
|
|
|
* gdbthread.h (thread_info::deletable): New method.
|
|
|
|
|
(thread_info::incref): New method.
|
|
|
|
|
(thread_info::decref): New method.
|
|
|
|
|
(thread_info::refcount): Move it to private.
|
|
|
|
|
* infrun.c (save_stop_context): Call inc_refcount.
|
|
|
|
|
(release_stop_context_cleanup): Likewise.
|
|
|
|
|
* thread.c (set_thread_exited): New function.
|
|
|
|
|
(init_thread_list): Delete "tp" only it is deletable, otherwise
|
|
|
|
|
call set_thread_exited.
|
|
|
|
|
(delete_thread_1): Call set_thread_exited.
|
|
|
|
|
(current_thread_cleanup) <inferior_pid>: Remove.
|
|
|
|
|
<thread>: New field.
|
|
|
|
|
(restore_current_thread_ptid_changed): Removed.
|
|
|
|
|
(do_restore_current_thread_cleanup): Adjust.
|
|
|
|
|
(restore_current_thread_cleanup_dtor): Don't call
|
|
|
|
|
find_thread_ptid.
|
|
|
|
|
(set_thread_refcount): Use dec_refcount.
|
|
|
|
|
(make_cleanup_restore_current_thread): Adjust.
|
|
|
|
|
(thread_apply_all_command): Call inc_refcount.
|
|
|
|
|
(_initialize_thread): Don't call
|
|
|
|
|
observer_attach_thread_ptid_changed.
|
|
|
|
|
|
2017-04-10 15:39:41 +02:00
|
|
|
|
2017-04-10 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* thread.c (delete_thread_1): Hoist code on marking thread as
|
|
|
|
|
exited.
|
|
|
|
|
|
2017-04-10 05:14:36 +02:00
|
|
|
|
2017-04-09 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (windows_detach): Initialize ptid with
|
|
|
|
|
minus_one_ptid.
|
|
|
|
|
|
2017-04-07 16:27:48 +02:00
|
|
|
|
2017-04-07 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* unittests/ptid-selftests.c: Fix erroneous assert messages.
|
|
|
|
|
|
2017-04-07 10:31:37 +02:00
|
|
|
|
2017-04-07 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* bfin-tdep.c (BFIN_MAX_REGISTER_SIZE): Add.
|
|
|
|
|
(bfin_pseudo_register_read): Use BFIN_MAX_REGISTER_SIZE.
|
|
|
|
|
(bfin_pseudo_register_write): Likewise
|
|
|
|
|
|
Class-ify ptid_t
I grew a bit tired of using ptid_get_{lwp,pid,tid} and friends, so I decided to
make it a bit easier to use by making it a proper class. The fields are now
private, so it's not possible to change a ptid_t field by mistake.
The new methods of ptid_t map to existing functions/practice like this:
ptid_t (pid, lwp, tid) -> ptid_build (pid, lwp, tid)
ptid_t (pid) -> pid_to_ptid (pid)
ptid.is_pid () -> ptid_is_pid (ptid)
ptid == other -> ptid_equal (ptid, other)
ptid != other -> !ptid_equal (ptid, other)
ptid.pid () -> ptid_get_pid (ptid)
ptid.lwp_p () -> ptid_lwp_p (ptid)
ptid.lwp () -> ptid_get_lwp (ptid)
ptid.tid_p () -> ptid_tid_p (ptid)
ptid.tid () -> ptid_get_tid (ptid)
ptid.matches (filter) -> ptid_match (ptid, filter)
I've replaced the implementation of the existing functions with calls to
the new methods. People are encouraged to gradually switch to using the
ptid_t methods instead of the functions (or we can change them all in
one pass eventually).
Also, I'm not sure if it's worth it (because of ptid_t's relatively
small size), but I have made the functions and methods take ptid_t
arguments by const reference instead of by value.
gdb/ChangeLog:
* common/ptid.h (struct ptid): Change to...
(class ptid_t): ... this.
<ptid_t>: New constructors.
<pid, lwp_p, lwp, tid_p, tid, is_pid, operator==, operator!=,
matches>: New methods.
<make_null, make_minus_one>: New static methods.
<pid>: Rename to...
<m_pid>: ...this.
<lwp>: Rename to...
<m_lwp>: ...this.
<tid>: Rename to...
<m_tid>: ...this.
(ptid_build, ptid_get_pid, ptid_get_lwp, ptid_get_tid, ptid_equal,
ptid_is_pid, ptid_lwp_p, ptid_tid_p, ptid_match): Take ptid arguments
as references, move comment to class ptid_t.
* common/ptid.c (null_ptid, minus_one_ptid): Initialize with
ptid_t static methods.
(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_tid,
ptid_equal, ptid_is_pid, ptid_lwp_p, ptid_tid_p, ptid_match):
Take ptid arguments as references, implement using ptid_t methods.
* unittests/ptid-selftests.c: New file.
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
unittests/ptid-selftests.c.
(SUBDIR_UNITTESTS_OBS): Add unittests/ptid-selftests.o.
gdb/gdbserver/ChangeLog:
* server.c (handle_v_cont): Initialize thread_resume::thread
with null_ptid.
2017-04-07 05:29:53 +02:00
|
|
|
|
2017-04-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/ptid.h (struct ptid): Change to...
|
|
|
|
|
(class ptid_t): ... this.
|
|
|
|
|
<ptid_t>: New constructors.
|
|
|
|
|
<pid, lwp_p, lwp, tid_p, tid, is_pid, operator==, operator!=,
|
|
|
|
|
matches>: New methods.
|
|
|
|
|
<make_null, make_minus_one>: New static methods.
|
|
|
|
|
<pid>: Rename to...
|
|
|
|
|
<m_pid>: ...this.
|
|
|
|
|
<lwp>: Rename to...
|
|
|
|
|
<m_lwp>: ...this.
|
|
|
|
|
<tid>: Rename to...
|
|
|
|
|
<m_tid>: ...this.
|
|
|
|
|
(ptid_build, ptid_get_pid, ptid_get_lwp, ptid_get_tid, ptid_equal,
|
|
|
|
|
ptid_is_pid, ptid_lwp_p, ptid_tid_p, ptid_match): Take ptid arguments
|
|
|
|
|
as references, move comment to class ptid_t.
|
|
|
|
|
* common/ptid.c (null_ptid, minus_one_ptid): Initialize with
|
|
|
|
|
ptid_t static methods.
|
|
|
|
|
(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_tid,
|
|
|
|
|
ptid_equal, ptid_is_pid, ptid_lwp_p, ptid_tid_p, ptid_match):
|
|
|
|
|
Take ptid arguments as references, implement using ptid_t methods.
|
|
|
|
|
* unittests/ptid-selftests.c: New file.
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/ptid-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add unittests/ptid-selftests.o.
|
|
|
|
|
|
2017-04-06 18:17:23 +02:00
|
|
|
|
2017-04-06 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_run_simple_file): Cast mode literal to
|
|
|
|
|
non-const char pointer as expected by PyFile_FromString.
|
|
|
|
|
|
2017-04-05 21:15:59 +02:00
|
|
|
|
2017-04-05 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/ptid.c (ptid_lwp_p, ptid_tid_p): Remove comparison with
|
|
|
|
|
minus_one_ptid and null_ptid.
|
|
|
|
|
|
2017-04-05 20:21:37 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* warning.m4 (build_warnings): Remove -Wno-write-strings.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
-Wwrite-strings: The Rest
This is the remainder boring constification that all looks more of less
borderline obvious IMO.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* ada-exp.y (yyerror): Constify.
* ada-lang.c (bound_name, get_selections)
(ada_variant_discrim_type)
(ada_variant_discrim_name, ada_value_struct_elt)
(ada_lookup_struct_elt_type, is_unchecked_variant)
(ada_which_variant_applies, standard_exc, ada_get_next_arg)
(catch_ada_exception_command_split)
(catch_ada_assert_command_split, catch_assert_command)
(ada_op_name): Constify.
* ada-lang.h (ada_yyerror, get_selections)
(ada_variant_discrim_name, ada_value_struct_elt): Constify.
* arc-tdep.c (arc_print_frame_cache): Constify.
* arm-tdep.c (arm_skip_stub): Constify.
* ax-gdb.c (gen_binop, gen_struct_ref_recursive, gen_struct_ref)
(gen_aggregate_elt_ref): Constify.
* bcache.c (print_bcache_statistics): Constify.
* bcache.h (print_bcache_statistics): Constify.
* break-catch-throw.c (catch_exception_command_1):
* breakpoint.c (struct ep_type_description::description):
Constify.
(add_solib_catchpoint): Constify.
(catch_fork_command_1): Add cast.
(add_catch_command): Constify.
* breakpoint.h (add_catch_command, add_solib_catchpoint):
Constify.
* bsd-uthread.c (bsd_uthread_state): Constify.
* buildsym.c (patch_subfile_names): Constify.
* buildsym.h (next_symbol_text_func, patch_subfile_names):
Constify.
* c-exp.y (yyerror): Constify.
(token::oper): Constify.
* c-lang.h (c_yyerror, cp_print_class_member): Constify.
* c-varobj.c (cplus_describe_child): Constify.
* charset.c (find_charset_names): Add cast.
(find_charset_names): Constify array and add const_cast.
* cli/cli-cmds.c (complete_command, cd_command): Constify.
(edit_command): Constify.
* cli/cli-decode.c (lookup_cmd): Constify.
* cli/cli-dump.c (dump_memory_command, dump_value_command):
Constify.
(struct dump_context): Constify.
(add_dump_command, restore_command): Constify.
* cli/cli-script.c (get_command_line): Constify.
* cli/cli-script.h (get_command_line): Constify.
* cli/cli-utils.c (check_for_argument): Constify.
* cli/cli-utils.h (check_for_argument): Constify.
* coff-pe-read.c (struct read_pe_section_data): Constify.
* command.h (lookup_cmd): Constify.
* common/print-utils.c (decimal2str): Constify.
* completer.c (gdb_print_filename): Constify.
* corefile.c (set_gnutarget): Constify.
* cp-name-parser.y (yyerror): Constify.
* cp-valprint.c (cp_print_class_member): Constify.
* cris-tdep.c (cris_register_name, crisv32_register_name):
Constify.
* d-exp.y (yyerror): Constify.
(struct token::oper): Constify.
* d-lang.h (d_yyerror): Constify.
* dbxread.c (struct header_file_location::name): Constify.
(add_old_header_file, add_new_header_file, last_function_name)
(dbx_next_symbol_text, add_bincl_to_list)
(find_corresponding_bincl_psymtab, set_namestring)
(find_stab_function_addr, read_dbx_symtab, start_psymtab)
(dbx_end_psymtab, read_ofile_symtab, process_one_symbol):
* defs.h (command_line_input, print_address_symbolic)
(deprecated_readline_begin_hook): Constify.
* dwarf2read.c (anonymous_struct_prefix, dwarf_bool_name):
Constify.
* event-top.c (handle_line_of_input): Constify and add cast.
* exceptions.c (catch_errors): Constify.
* exceptions.h (catch_errors): Constify.
* expprint.c (print_subexp_standard, op_string, op_name)
(op_name_standard, dump_raw_expression, dump_raw_expression):
* expression.h (op_name, op_string, dump_raw_expression):
Constify.
* f-exp.y (yyerror): Constify.
(struct token::oper): Constify.
(struct f77_boolean_val::name): Constify.
* f-lang.c (f_word_break_characters): Constify.
* f-lang.h (f_yyerror): Constify.
* fork-child.c (fork_inferior): Add cast.
* frv-tdep.c (struct gdbarch_tdep::register_names): Constify.
(new_variant): Constify.
* gdbarch.sh (pstring_ptr, pstring_list): Constify.
* gdbarch.c: Regenerate.
* gdbcore.h (set_gnutarget): Constify.
* go-exp.y (yyerror): Constify.
(token::oper): Constify.
* go-lang.h (go_yyerror): Constify.
* go32-nat.c (go32_sysinfo): Constify.
* guile/scm-breakpoint.c (gdbscm_breakpoint_expression): Constify.
* guile/scm-cmd.c (cmdscm_function): Constify.
* guile/scm-param.c (pascm_param_value): Constify.
* h8300-tdep.c (h8300_register_name, h8300s_register_name)
(h8300sx_register_name): Constify.
* hppa-tdep.c (hppa32_register_name, hppa64_register_name):
Constify.
* ia64-tdep.c (ia64_register_names): Constify.
* infcmd.c (construct_inferior_arguments): Constify.
(path_command, attach_post_wait): Constify.
* language.c (show_range_command, show_case_command)
(unk_lang_error): Constify.
* language.h (language_defn::la_error)
(language_defn::la_name_of_this): Constify.
* linespec.c (decode_line_2): Constify.
* linux-thread-db.c (thread_db_err_str): Constify.
* lm32-tdep.c (lm32_register_name): Constify.
* m2-exp.y (yyerror): Constify.
* m2-lang.h (m2_yyerror): Constify.
* m32r-tdep.c (m32r_register_names): Constify and make static.
* m68hc11-tdep.c (m68hc11_register_names): Constify.
* m88k-tdep.c (m88k_register_name): Constify.
* macroexp.c (appendmem): Constify.
* mdebugread.c (fdr_name, add_data_symbol, parse_type)
(upgrade_type, parse_external, parse_partial_symbols)
(mdebug_next_symbol_text, cross_ref, mylookup_symbol, new_psymtab)
(new_symbol): Constify.
* memattr.c (mem_info_command): Constify.
* mep-tdep.c (register_name_from_keyword): Constify.
* mi/mi-cmd-env.c (mi_cmd_env_path, _initialize_mi_cmd_env):
Constify.
* mi/mi-cmd-stack.c (list_args_or_locals): Constify.
* mi/mi-cmd-var.c (mi_cmd_var_show_attributes): Constify.
* mi/mi-main.c (captured_mi_execute_command): Constify and add
cast.
(mi_execute_async_cli_command): Constify.
* mips-tdep.c (mips_register_name): Constify.
* mn10300-tdep.c (register_name, mn10300_generic_register_name)
(am33_register_name, am33_2_register_name)
* moxie-tdep.c (moxie_register_names): Constify.
* nat/linux-osdata.c (osdata_type): Constify fields.
* nto-tdep.c (nto_parse_redirection): Constify.
* objc-lang.c (lookup_struct_typedef, lookup_objc_class)
(lookup_child_selector): Constify.
(objc_methcall::name): Constify.
* objc-lang.h (lookup_objc_class, lookup_child_selector)
(lookup_struct_typedef): Constify.
* objfiles.c (pc_in_section): Constify.
* objfiles.h (pc_in_section): Constify.
* p-exp.y (struct token::oper): Constify.
(yyerror): Constify.
* p-lang.h (pascal_yyerror): Constify.
* parser-defs.h (op_name_standard): Constify.
(op_print::string): Constify.
(exp_descriptor::op_name): Constify.
* printcmd.c (print_address_symbolic): Constify.
* psymtab.c (print_partial_symbols): Constify.
* python/py-breakpoint.c (stop_func): Constify.
(bppy_get_expression): Constify.
* python/py-cmd.c (cmdpy_completer::name): Constify.
(cmdpy_function): Constify.
* python/py-event.c (evpy_add_attribute)
(gdbpy_initialize_event_generic): Constify.
* python/py-event.h (evpy_add_attribute)
(gdbpy_initialize_event_generic): Constify.
* python/py-evts.c (add_new_registry): Constify.
* python/py-finishbreakpoint.c (outofscope_func): Constify.
* python/py-framefilter.c (get_py_iter_from_func): Constify.
* python/py-inferior.c (get_buffer): Add cast.
* python/py-param.c (parm_constant::name): Constify.
* python/py-unwind.c (fprint_frame_id): Constify.
* python/python.c (gdbpy_parameter_value): Constify.
* remote-fileio.c (remote_fio_func_map): Make 'name' const.
* remote.c (memory_packet_config::name): Constify.
(show_packet_config_cmd, remote_write_bytes)
(remote_buffer_add_string):
* reverse.c (exec_reverse_once): Constify.
* rs6000-tdep.c (variant::name, variant::description): Constify.
* rust-exp.y (rustyyerror): Constify.
* rust-lang.c (rust_op_name): Constify.
* rust-lang.h (rustyyerror): Constify.
* serial.h (serial_ops::name): Constify.
* sh-tdep.c (sh_sh_register_name, sh_sh3_register_name)
(sh_sh3e_register_name, sh_sh2e_register_name)
(sh_sh2a_register_name, sh_sh2a_nofpu_register_name)
(sh_sh_dsp_register_name, sh_sh3_dsp_register_name)
(sh_sh4_register_name, sh_sh4_nofpu_register_name)
(sh_sh4al_dsp_register_name): Constify.
* sh64-tdep.c (sh64_register_name): Constify.
* solib-darwin.c (lookup_symbol_from_bfd): Constify.
* spu-tdep.c (spu_register_name, info_spu_dma_cmdlist): Constify.
* stabsread.c (patch_block_stabs, read_type_number)
(ref_map::stabs, ref_add, process_reference)
(symbol_reference_defined, define_symbol, define_symbol)
(error_type, read_type, read_member_functions, read_cpp_abbrev)
(read_one_struct_field, read_struct_fields, read_baseclasses)
(read_tilde_fields, read_struct_type, read_array_type)
(read_enum_type, read_sun_builtin_type, read_sun_floating_type)
(read_huge_number, read_range_type, read_args, common_block_start)
(find_name_end): Constify.
* stabsread.h (common_block_start, define_symbol)
(process_one_symbol, symbol_reference_defined, ref_add):
* symfile.c (get_section_index, add_symbol_file_command):
* symfile.h (get_section_index): Constify.
* target-descriptions.c (tdesc_type::name): Constify.
(tdesc_free_type): Add cast.
* target.c (find_default_run_target):
(add_deprecated_target_alias, find_default_run_target)
(target_announce_detach): Constify.
(do_option): Constify.
* target.h (add_deprecated_target_alias): Constify.
* thread.c (print_thread_info_1): Constify.
* top.c (deprecated_readline_begin_hook, command_line_input):
Constify.
(init_main): Add casts.
* top.h (handle_line_of_input): Constify.
* tracefile-tfile.c (tfile_write_uploaded_tsv): Constify.
* tracepoint.c (tvariables_info_1, trace_status_mi): Constify.
(tfind_command): Rename to ...
(tfind_command_1): ... this and constify.
(tfind_command): New function.
(tfind_end_command, tfind_start_command): Adjust.
(encode_source_string): Constify.
* tracepoint.h (encode_source_string): Constify.
* tui/tui-data.c (tui_partial_win_by_name): Constify.
* tui/tui-data.h (tui_partial_win_by_name): Constify.
* tui/tui-source.c (tui_set_source_content_nil): Constify.
* tui/tui-source.h (tui_set_source_content_nil): Constify.
* tui/tui-win.c (parse_scrolling_args): Constify.
* tui/tui-windata.c (tui_erase_data_content): Constify.
* tui/tui-windata.h (tui_erase_data_content): Constify.
* tui/tui-winsource.c (tui_erase_source_content): Constify.
* tui/tui.c (tui_enable): Add cast.
* utils.c (defaulted_query): Constify.
(init_page_info): Add cast.
(puts_debug, subset_compare): Constify.
* utils.h (subset_compare): Constify.
* varobj.c (varobj_format_string): Constify.
* varobj.h (varobj_format_string): Constify.
* vax-tdep.c (vax_register_name): Constify.
* windows-nat.c (windows_detach): Constify.
* xcoffread.c (process_linenos, xcoff_next_symbol_text): Constify.
* xml-support.c (gdb_xml_end_element): Constify.
* xml-tdesc.c (tdesc_start_reg): Constify.
* xstormy16-tdep.c (xstormy16_register_name): Constify.
* xtensa-tdep.c (xtensa_find_register_by_name): Constify.
* xtensa-tdep.h (xtensa_register_t::name): Constify.
gdb/gdbserver/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* gdbreplay.c (sync_error): Constify.
* linux-x86-low.c (push_opcode): Constify.
2017-04-05 20:21:37 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-exp.y (yyerror): Constify.
|
|
|
|
|
* ada-lang.c (bound_name, get_selections)
|
|
|
|
|
(ada_variant_discrim_type)
|
|
|
|
|
(ada_variant_discrim_name, ada_value_struct_elt)
|
|
|
|
|
(ada_lookup_struct_elt_type, is_unchecked_variant)
|
|
|
|
|
(ada_which_variant_applies, standard_exc, ada_get_next_arg)
|
|
|
|
|
(catch_ada_exception_command_split)
|
|
|
|
|
(catch_ada_assert_command_split, catch_assert_command)
|
|
|
|
|
(ada_op_name): Constify.
|
|
|
|
|
* ada-lang.h (ada_yyerror, get_selections)
|
|
|
|
|
(ada_variant_discrim_name, ada_value_struct_elt): Constify.
|
|
|
|
|
* arc-tdep.c (arc_print_frame_cache): Constify.
|
|
|
|
|
* arm-tdep.c (arm_skip_stub): Constify.
|
|
|
|
|
* ax-gdb.c (gen_binop, gen_struct_ref_recursive, gen_struct_ref)
|
|
|
|
|
(gen_aggregate_elt_ref): Constify.
|
|
|
|
|
* bcache.c (print_bcache_statistics): Constify.
|
|
|
|
|
* bcache.h (print_bcache_statistics): Constify.
|
|
|
|
|
* break-catch-throw.c (catch_exception_command_1):
|
|
|
|
|
* breakpoint.c (struct ep_type_description::description):
|
|
|
|
|
Constify.
|
|
|
|
|
(add_solib_catchpoint): Constify.
|
|
|
|
|
(catch_fork_command_1): Add cast.
|
|
|
|
|
(add_catch_command): Constify.
|
|
|
|
|
* breakpoint.h (add_catch_command, add_solib_catchpoint):
|
|
|
|
|
Constify.
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_state): Constify.
|
|
|
|
|
* buildsym.c (patch_subfile_names): Constify.
|
|
|
|
|
* buildsym.h (next_symbol_text_func, patch_subfile_names):
|
|
|
|
|
Constify.
|
|
|
|
|
* c-exp.y (yyerror): Constify.
|
|
|
|
|
(token::oper): Constify.
|
|
|
|
|
* c-lang.h (c_yyerror, cp_print_class_member): Constify.
|
|
|
|
|
* c-varobj.c (cplus_describe_child): Constify.
|
|
|
|
|
* charset.c (find_charset_names): Add cast.
|
|
|
|
|
(find_charset_names): Constify array and add const_cast.
|
|
|
|
|
* cli/cli-cmds.c (complete_command, cd_command): Constify.
|
|
|
|
|
(edit_command): Constify.
|
|
|
|
|
* cli/cli-decode.c (lookup_cmd): Constify.
|
|
|
|
|
* cli/cli-dump.c (dump_memory_command, dump_value_command):
|
|
|
|
|
Constify.
|
|
|
|
|
(struct dump_context): Constify.
|
|
|
|
|
(add_dump_command, restore_command): Constify.
|
|
|
|
|
* cli/cli-script.c (get_command_line): Constify.
|
|
|
|
|
* cli/cli-script.h (get_command_line): Constify.
|
|
|
|
|
* cli/cli-utils.c (check_for_argument): Constify.
|
|
|
|
|
* cli/cli-utils.h (check_for_argument): Constify.
|
|
|
|
|
* coff-pe-read.c (struct read_pe_section_data): Constify.
|
|
|
|
|
* command.h (lookup_cmd): Constify.
|
|
|
|
|
* common/print-utils.c (decimal2str): Constify.
|
|
|
|
|
* completer.c (gdb_print_filename): Constify.
|
|
|
|
|
* corefile.c (set_gnutarget): Constify.
|
|
|
|
|
* cp-name-parser.y (yyerror): Constify.
|
|
|
|
|
* cp-valprint.c (cp_print_class_member): Constify.
|
|
|
|
|
* cris-tdep.c (cris_register_name, crisv32_register_name):
|
|
|
|
|
Constify.
|
|
|
|
|
* d-exp.y (yyerror): Constify.
|
|
|
|
|
(struct token::oper): Constify.
|
|
|
|
|
* d-lang.h (d_yyerror): Constify.
|
|
|
|
|
* dbxread.c (struct header_file_location::name): Constify.
|
|
|
|
|
(add_old_header_file, add_new_header_file, last_function_name)
|
|
|
|
|
(dbx_next_symbol_text, add_bincl_to_list)
|
|
|
|
|
(find_corresponding_bincl_psymtab, set_namestring)
|
|
|
|
|
(find_stab_function_addr, read_dbx_symtab, start_psymtab)
|
|
|
|
|
(dbx_end_psymtab, read_ofile_symtab, process_one_symbol):
|
|
|
|
|
* defs.h (command_line_input, print_address_symbolic)
|
|
|
|
|
(deprecated_readline_begin_hook): Constify.
|
|
|
|
|
* dwarf2read.c (anonymous_struct_prefix, dwarf_bool_name):
|
|
|
|
|
Constify.
|
|
|
|
|
* event-top.c (handle_line_of_input): Constify and add cast.
|
|
|
|
|
* exceptions.c (catch_errors): Constify.
|
|
|
|
|
* exceptions.h (catch_errors): Constify.
|
|
|
|
|
* expprint.c (print_subexp_standard, op_string, op_name)
|
|
|
|
|
(op_name_standard, dump_raw_expression, dump_raw_expression):
|
|
|
|
|
* expression.h (op_name, op_string, dump_raw_expression):
|
|
|
|
|
Constify.
|
|
|
|
|
* f-exp.y (yyerror): Constify.
|
|
|
|
|
(struct token::oper): Constify.
|
|
|
|
|
(struct f77_boolean_val::name): Constify.
|
|
|
|
|
* f-lang.c (f_word_break_characters): Constify.
|
|
|
|
|
* f-lang.h (f_yyerror): Constify.
|
|
|
|
|
* fork-child.c (fork_inferior): Add cast.
|
|
|
|
|
* frv-tdep.c (struct gdbarch_tdep::register_names): Constify.
|
|
|
|
|
(new_variant): Constify.
|
|
|
|
|
* gdbarch.sh (pstring_ptr, pstring_list): Constify.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbcore.h (set_gnutarget): Constify.
|
|
|
|
|
* go-exp.y (yyerror): Constify.
|
|
|
|
|
(token::oper): Constify.
|
|
|
|
|
* go-lang.h (go_yyerror): Constify.
|
|
|
|
|
* go32-nat.c (go32_sysinfo): Constify.
|
|
|
|
|
* guile/scm-breakpoint.c (gdbscm_breakpoint_expression): Constify.
|
|
|
|
|
* guile/scm-cmd.c (cmdscm_function): Constify.
|
|
|
|
|
* guile/scm-param.c (pascm_param_value): Constify.
|
|
|
|
|
* h8300-tdep.c (h8300_register_name, h8300s_register_name)
|
|
|
|
|
(h8300sx_register_name): Constify.
|
|
|
|
|
* hppa-tdep.c (hppa32_register_name, hppa64_register_name):
|
|
|
|
|
Constify.
|
|
|
|
|
* ia64-tdep.c (ia64_register_names): Constify.
|
|
|
|
|
* infcmd.c (construct_inferior_arguments): Constify.
|
|
|
|
|
(path_command, attach_post_wait): Constify.
|
|
|
|
|
* language.c (show_range_command, show_case_command)
|
|
|
|
|
(unk_lang_error): Constify.
|
|
|
|
|
* language.h (language_defn::la_error)
|
|
|
|
|
(language_defn::la_name_of_this): Constify.
|
|
|
|
|
* linespec.c (decode_line_2): Constify.
|
|
|
|
|
* linux-thread-db.c (thread_db_err_str): Constify.
|
|
|
|
|
* lm32-tdep.c (lm32_register_name): Constify.
|
|
|
|
|
* m2-exp.y (yyerror): Constify.
|
|
|
|
|
* m2-lang.h (m2_yyerror): Constify.
|
|
|
|
|
* m32r-tdep.c (m32r_register_names): Constify and make static.
|
|
|
|
|
* m68hc11-tdep.c (m68hc11_register_names): Constify.
|
|
|
|
|
* m88k-tdep.c (m88k_register_name): Constify.
|
|
|
|
|
* macroexp.c (appendmem): Constify.
|
|
|
|
|
* mdebugread.c (fdr_name, add_data_symbol, parse_type)
|
|
|
|
|
(upgrade_type, parse_external, parse_partial_symbols)
|
|
|
|
|
(mdebug_next_symbol_text, cross_ref, mylookup_symbol, new_psymtab)
|
|
|
|
|
(new_symbol): Constify.
|
|
|
|
|
* memattr.c (mem_info_command): Constify.
|
|
|
|
|
* mep-tdep.c (register_name_from_keyword): Constify.
|
|
|
|
|
* mi/mi-cmd-env.c (mi_cmd_env_path, _initialize_mi_cmd_env):
|
|
|
|
|
Constify.
|
|
|
|
|
* mi/mi-cmd-stack.c (list_args_or_locals): Constify.
|
|
|
|
|
* mi/mi-cmd-var.c (mi_cmd_var_show_attributes): Constify.
|
|
|
|
|
* mi/mi-main.c (captured_mi_execute_command): Constify and add
|
|
|
|
|
cast.
|
|
|
|
|
(mi_execute_async_cli_command): Constify.
|
|
|
|
|
* mips-tdep.c (mips_register_name): Constify.
|
|
|
|
|
* mn10300-tdep.c (register_name, mn10300_generic_register_name)
|
|
|
|
|
(am33_register_name, am33_2_register_name)
|
|
|
|
|
* moxie-tdep.c (moxie_register_names): Constify.
|
|
|
|
|
* nat/linux-osdata.c (osdata_type): Constify fields.
|
|
|
|
|
* nto-tdep.c (nto_parse_redirection): Constify.
|
|
|
|
|
* objc-lang.c (lookup_struct_typedef, lookup_objc_class)
|
|
|
|
|
(lookup_child_selector): Constify.
|
|
|
|
|
(objc_methcall::name): Constify.
|
|
|
|
|
* objc-lang.h (lookup_objc_class, lookup_child_selector)
|
|
|
|
|
(lookup_struct_typedef): Constify.
|
|
|
|
|
* objfiles.c (pc_in_section): Constify.
|
|
|
|
|
* objfiles.h (pc_in_section): Constify.
|
|
|
|
|
* p-exp.y (struct token::oper): Constify.
|
|
|
|
|
(yyerror): Constify.
|
|
|
|
|
* p-lang.h (pascal_yyerror): Constify.
|
|
|
|
|
* parser-defs.h (op_name_standard): Constify.
|
|
|
|
|
(op_print::string): Constify.
|
|
|
|
|
(exp_descriptor::op_name): Constify.
|
|
|
|
|
* printcmd.c (print_address_symbolic): Constify.
|
|
|
|
|
* psymtab.c (print_partial_symbols): Constify.
|
|
|
|
|
* python/py-breakpoint.c (stop_func): Constify.
|
|
|
|
|
(bppy_get_expression): Constify.
|
|
|
|
|
* python/py-cmd.c (cmdpy_completer::name): Constify.
|
|
|
|
|
(cmdpy_function): Constify.
|
|
|
|
|
* python/py-event.c (evpy_add_attribute)
|
|
|
|
|
(gdbpy_initialize_event_generic): Constify.
|
|
|
|
|
* python/py-event.h (evpy_add_attribute)
|
|
|
|
|
(gdbpy_initialize_event_generic): Constify.
|
|
|
|
|
* python/py-evts.c (add_new_registry): Constify.
|
|
|
|
|
* python/py-finishbreakpoint.c (outofscope_func): Constify.
|
|
|
|
|
* python/py-framefilter.c (get_py_iter_from_func): Constify.
|
|
|
|
|
* python/py-inferior.c (get_buffer): Add cast.
|
|
|
|
|
* python/py-param.c (parm_constant::name): Constify.
|
|
|
|
|
* python/py-unwind.c (fprint_frame_id): Constify.
|
|
|
|
|
* python/python.c (gdbpy_parameter_value): Constify.
|
|
|
|
|
* remote-fileio.c (remote_fio_func_map): Make 'name' const.
|
|
|
|
|
* remote.c (memory_packet_config::name): Constify.
|
|
|
|
|
(show_packet_config_cmd, remote_write_bytes)
|
|
|
|
|
(remote_buffer_add_string):
|
|
|
|
|
* reverse.c (exec_reverse_once): Constify.
|
|
|
|
|
* rs6000-tdep.c (variant::name, variant::description): Constify.
|
|
|
|
|
* rust-exp.y (rustyyerror): Constify.
|
|
|
|
|
* rust-lang.c (rust_op_name): Constify.
|
|
|
|
|
* rust-lang.h (rustyyerror): Constify.
|
|
|
|
|
* serial.h (serial_ops::name): Constify.
|
|
|
|
|
* sh-tdep.c (sh_sh_register_name, sh_sh3_register_name)
|
|
|
|
|
(sh_sh3e_register_name, sh_sh2e_register_name)
|
|
|
|
|
(sh_sh2a_register_name, sh_sh2a_nofpu_register_name)
|
|
|
|
|
(sh_sh_dsp_register_name, sh_sh3_dsp_register_name)
|
|
|
|
|
(sh_sh4_register_name, sh_sh4_nofpu_register_name)
|
|
|
|
|
(sh_sh4al_dsp_register_name): Constify.
|
|
|
|
|
* sh64-tdep.c (sh64_register_name): Constify.
|
|
|
|
|
* solib-darwin.c (lookup_symbol_from_bfd): Constify.
|
|
|
|
|
* spu-tdep.c (spu_register_name, info_spu_dma_cmdlist): Constify.
|
|
|
|
|
* stabsread.c (patch_block_stabs, read_type_number)
|
|
|
|
|
(ref_map::stabs, ref_add, process_reference)
|
|
|
|
|
(symbol_reference_defined, define_symbol, define_symbol)
|
|
|
|
|
(error_type, read_type, read_member_functions, read_cpp_abbrev)
|
|
|
|
|
(read_one_struct_field, read_struct_fields, read_baseclasses)
|
|
|
|
|
(read_tilde_fields, read_struct_type, read_array_type)
|
|
|
|
|
(read_enum_type, read_sun_builtin_type, read_sun_floating_type)
|
|
|
|
|
(read_huge_number, read_range_type, read_args, common_block_start)
|
|
|
|
|
(find_name_end): Constify.
|
|
|
|
|
* stabsread.h (common_block_start, define_symbol)
|
|
|
|
|
(process_one_symbol, symbol_reference_defined, ref_add):
|
|
|
|
|
* symfile.c (get_section_index, add_symbol_file_command):
|
|
|
|
|
* symfile.h (get_section_index): Constify.
|
|
|
|
|
* target-descriptions.c (tdesc_type::name): Constify.
|
|
|
|
|
(tdesc_free_type): Add cast.
|
|
|
|
|
* target.c (find_default_run_target):
|
|
|
|
|
(add_deprecated_target_alias, find_default_run_target)
|
|
|
|
|
(target_announce_detach): Constify.
|
|
|
|
|
(do_option): Constify.
|
|
|
|
|
* target.h (add_deprecated_target_alias): Constify.
|
|
|
|
|
* thread.c (print_thread_info_1): Constify.
|
|
|
|
|
* top.c (deprecated_readline_begin_hook, command_line_input):
|
|
|
|
|
Constify.
|
|
|
|
|
(init_main): Add casts.
|
|
|
|
|
* top.h (handle_line_of_input): Constify.
|
|
|
|
|
* tracefile-tfile.c (tfile_write_uploaded_tsv): Constify.
|
|
|
|
|
* tracepoint.c (tvariables_info_1, trace_status_mi): Constify.
|
|
|
|
|
(tfind_command): Rename to ...
|
|
|
|
|
(tfind_command_1): ... this and constify.
|
|
|
|
|
(tfind_command): New function.
|
|
|
|
|
(tfind_end_command, tfind_start_command): Adjust.
|
|
|
|
|
(encode_source_string): Constify.
|
|
|
|
|
* tracepoint.h (encode_source_string): Constify.
|
|
|
|
|
* tui/tui-data.c (tui_partial_win_by_name): Constify.
|
|
|
|
|
* tui/tui-data.h (tui_partial_win_by_name): Constify.
|
|
|
|
|
* tui/tui-source.c (tui_set_source_content_nil): Constify.
|
|
|
|
|
* tui/tui-source.h (tui_set_source_content_nil): Constify.
|
|
|
|
|
* tui/tui-win.c (parse_scrolling_args): Constify.
|
|
|
|
|
* tui/tui-windata.c (tui_erase_data_content): Constify.
|
|
|
|
|
* tui/tui-windata.h (tui_erase_data_content): Constify.
|
|
|
|
|
* tui/tui-winsource.c (tui_erase_source_content): Constify.
|
|
|
|
|
* tui/tui.c (tui_enable): Add cast.
|
|
|
|
|
* utils.c (defaulted_query): Constify.
|
|
|
|
|
(init_page_info): Add cast.
|
|
|
|
|
(puts_debug, subset_compare): Constify.
|
|
|
|
|
* utils.h (subset_compare): Constify.
|
|
|
|
|
* varobj.c (varobj_format_string): Constify.
|
|
|
|
|
* varobj.h (varobj_format_string): Constify.
|
|
|
|
|
* vax-tdep.c (vax_register_name): Constify.
|
|
|
|
|
* windows-nat.c (windows_detach): Constify.
|
|
|
|
|
* xcoffread.c (process_linenos, xcoff_next_symbol_text): Constify.
|
|
|
|
|
* xml-support.c (gdb_xml_end_element): Constify.
|
|
|
|
|
* xml-tdesc.c (tdesc_start_reg): Constify.
|
|
|
|
|
* xstormy16-tdep.c (xstormy16_register_name): Constify.
|
|
|
|
|
* xtensa-tdep.c (xtensa_find_register_by_name): Constify.
|
|
|
|
|
* xtensa-tdep.h (xtensa_register_t::name): Constify.
|
|
|
|
|
|
2017-04-05 20:21:37 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* proc-api.c (struct trans): Constify.
|
|
|
|
|
(procfs_note): Constify.
|
|
|
|
|
* proc-events.c (struct trans, syscall_table):
|
|
|
|
|
* proc-flags.c (struct trans): Constify.
|
|
|
|
|
* proc-utils.h (procfs_note): Constify.
|
|
|
|
|
* proc-why.c (struct trans): Constify.
|
|
|
|
|
* procfs.c (dead_procinfo, find_syscall, proc_warn, proc_error)
|
|
|
|
|
(procfs_detach): Constify.
|
|
|
|
|
* sol-thread.c (struct string_map): Constify.
|
|
|
|
|
(td_err_string, td_state_string): Constify.
|
|
|
|
|
|
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* proc-api.c (procfs_filename): Don't initialize
|
|
|
|
|
procfs_filename.
|
|
|
|
|
(prepare_to_trace): Assume procfs_filename is non-NULL.
|
|
|
|
|
(_initialize_proc_api): Give procfs_filename a default value here.
|
|
|
|
|
|
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-throw.c (handle_gnu_v3_exceptions): Constify
|
|
|
|
|
'cond_string' parameter.
|
|
|
|
|
(extract_exception_regexp): Constify 'string' parameter.
|
|
|
|
|
(catch_exception_command_1): Constify.
|
|
|
|
|
* breakpoint.c (init_catchpoint)
|
|
|
|
|
(create_fork_vfork_event_catchpoint): Constify 'cond_string'
|
|
|
|
|
parameter.
|
|
|
|
|
(ep_parse_optional_if_clause, catch_fork_command_1)
|
|
|
|
|
(catch_exec_command_1): Constify.
|
|
|
|
|
* breakpoint.h (init_catchpoint): Constify 'cond_string'
|
|
|
|
|
parameter.
|
|
|
|
|
(ep_parse_optional_if_clause): Constify.
|
|
|
|
|
* cli/cli-utils.c (remove_trailing_whitespace)
|
|
|
|
|
(check_for_argument): Constify.
|
|
|
|
|
* cli/cli-utils.h (remove_trailing_whitespace): Constify and add
|
|
|
|
|
non-const overload.
|
|
|
|
|
(check_for_argument): Likewise.
|
|
|
|
|
|
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* event-top.c (command_line_handler): Add cast to execute_command
|
|
|
|
|
call.
|
|
|
|
|
* record-btrace.c (cmd_record_btrace_bts_start)
|
|
|
|
|
(cmd_record_btrace_pt_start, cmd_record_btrace_start)
|
|
|
|
|
(cmd_record_btrace_start): Add cast to execute_command call.
|
|
|
|
|
* record-full.c (record_full_goto_insn):
|
|
|
|
|
* record.c (record_start, record_stop): Add cast to
|
|
|
|
|
execute_command_to_string calls.
|
|
|
|
|
(cmd_record_start): Add cast to execute_command calls.
|
|
|
|
|
|
-Wwrite-strings: Add a PyArg_ParseTupleAndKeywords "const char *" overload
-Wwrite-strings flags code like:
static char *keywords[] = {"command", "from_tty", "to_string", NULL };
as needing "(char *)" casts, because string literals are "const char []".
We can get rid of the casts by changing the array type like this:
- static char *keywords[] = {"command", "from_tty", "to_string", NULL };
+ static const char *keywords[] = {"command", "from_tty", "to_string", NULL };
However, passing the such array to PyArg_ParseTupleAndKeywords no longer
works OOTB, because PyArg_ParseTupleAndKeywords expects a "char **":
PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw,
const char *format,
char *keywords[], ...);
and "const char **" is not implicitly convertible to "char **". C++
is more tolerant that C here WRT aliasing, and a const_cast<char **>
is fine. However, to avoid having all callers do the cast themselves,
this commit defines a gdb_PyArg_ParseTupleAndKeywords function here
with a corresponding 'keywords' parameter type that does the cast in a
single place.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* python/python-internal.h (gdb_PyArg_ParseTupleAndKeywords): New
static inline function.
* python/py-arch.c (archpy_disassemble): Constify 'keywords'
array and use gdb_PyArg_ParseTupleAndKeywords.
* python/py-cmd.c (cmdpy_init): Likewise.
* python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
* python/py-inferior.c (infpy_read_memory, infpy_write_memory)
(infpy_search_memory): Likewise.
* python/py-objfile.c (objfpy_add_separate_debug_file)
(gdbpy_lookup_objfile): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol)
(gdbpy_lookup_global_symbol): Likewise.
* python/py-type.c (gdbpy_lookup_type): Likewise.
* python/py-value.c (valpy_lazy_string, valpy_string): Likewise.
* python/python.c (execute_gdb_command, gdbpy_write, gdbpy_flush):
Likewise.
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (gdb_PyArg_ParseTupleAndKeywords): New
|
|
|
|
|
static inline function.
|
|
|
|
|
* python/py-arch.c (archpy_disassemble): Constify 'keywords'
|
|
|
|
|
array and use gdb_PyArg_ParseTupleAndKeywords.
|
|
|
|
|
* python/py-cmd.c (cmdpy_init): Likewise.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
|
|
|
|
|
* python/py-inferior.c (infpy_read_memory, infpy_write_memory)
|
|
|
|
|
(infpy_search_memory): Likewise.
|
|
|
|
|
* python/py-objfile.c (objfpy_add_separate_debug_file)
|
|
|
|
|
(gdbpy_lookup_objfile): Likewise.
|
|
|
|
|
* python/py-symbol.c (gdbpy_lookup_symbol)
|
|
|
|
|
(gdbpy_lookup_global_symbol): Likewise.
|
|
|
|
|
* python/py-type.c (gdbpy_lookup_type): Likewise.
|
|
|
|
|
* python/py-value.c (valpy_lazy_string, valpy_string): Likewise.
|
|
|
|
|
* python/python.c (execute_gdb_command, gdbpy_write, gdbpy_flush):
|
|
|
|
|
Likewise.
|
|
|
|
|
|
-Wwrite-strings: Wrap PyGetSetDef for construction with string literals
Unfortunately, PyGetSetDef's 'name' and 'doc' members are 'char *'
instead of 'const char *', meaning that in order to list-initialize
PyGetSetDef arrays using string literals requires writing explicit
'char *' casts. For example:
static PyGetSetDef value_object_getset[] = {
- { "address", valpy_get_address, NULL, "The address of the value.",
+ { (char *) "address", valpy_get_address, NULL,
+ (char *) "The address of the value.",
NULL },
- { "is_optimized_out", valpy_get_is_optimized_out, NULL,
- "Boolean telling whether the value is optimized "
+ { (char *) "is_optimized_out", valpy_get_is_optimized_out, NULL,
+ (char *) "Boolean telling whether the value is optimized "
"out (i.e., not available).",
NULL },
- { "type", valpy_get_type, NULL, "Type of the value.", NULL },
- { "dynamic_type", valpy_get_dynamic_type, NULL,
- "Dynamic type of the value.", NULL },
- { "is_lazy", valpy_get_is_lazy, NULL,
- "Boolean telling whether the value is lazy (not fetched yet\n\
+ { (char *) "type", valpy_get_type, NULL,
+ (char *) "Type of the value.", NULL },
+ { (char *) "dynamic_type", valpy_get_dynamic_type, NULL,
+ (char *) "Dynamic type of the value.", NULL },
+ { (char *) "is_lazy", valpy_get_is_lazy, NULL,
+ (char *) "Boolean telling whether the value is lazy (not fetched yet\n\
from the inferior). A lazy value is fetched when needed, or when\n\
the \"fetch_lazy()\" method is called.", NULL },
{NULL} /* Sentinel */
We have ~20 such arrays, and I first wrote a patch that fixed all of
them like that... It's not pretty...
One way to make these a bit less ugly would be add a new macro that
hides the casts, like:
#define GDBPY_GSDEF(NAME, GET, SET, DOC, CLOSURE) \
{ (char *) NAME, GET, SET, (char *) DOC, CLOSURE }
and then use it like:
static PyGetSetDef value_object_getset[] = {
GDBPY_GSDEF ("address", valpy_get_address, NULL,
"The address of the value.", NULL),
GDBPY_GSDEF ("is_optimized_out", valpy_get_is_optimized_out, NULL,
"Boolean telling whether the value is optimized ", NULL),
{NULL} /* Sentinel */
};
But since we have C++11, which gives us constexpr and list
initialization, I thought of a way that requires no changes where the
arrays are initialized:
We add a new type that extends PyGetSetDef (called gdb_PyGetSetDef),
and add constexpr constructors that accept const 'name' and 'doc', and
then list/aggregate initialization simply "calls" these matching
constructors instead.
I put "calls" in quotes, because given "constexpr", it's all done at
compile time, and there's no overhead either in binary size or at run
time. In fact, we get identical binaries, before/after this change.
Unlike the fixes that fix some old Python API to match the API of more
recent Python, this switches to using explicit "gdb_PyGetSetDef"
everywhere, just to be clear that we are using our own version of it.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* python/python-internal.h (gdb_PyGetSetDef): New type.
* python/py-block.c (block_object_getset)
(breakpoint_object_getset): Now a gdb_PyGetSetDef array.
* python/py-event.c (event_object_getset)
(finish_breakpoint_object_getset): Likewise.
* python/py-inferior.c (inferior_object_getset): Likewise.
* python/py-infthread.c (thread_object_getset): Likewise.
* python/py-lazy-string.c (lazy_string_object_getset): Likewise.
* python/py-linetable.c (linetable_entry_object_getset): Likewise.
* python/py-objfile.c (objfile_getset): Likewise.
* python/py-progspace.c (pspace_getset): Likewise.
* python/py-record-btrace.c (btpy_insn_getset, btpy_call_getset):
Likewise.
* python/py-record.c (recpy_record_getset): Likewise.
* python/py-symbol.c (symbol_object_getset): Likewise.
* python/py-symtab.c (symtab_object_getset, sal_object_getset):
Likewise.
* python/py-type.c (type_object_getset, field_object_getset):
Likewise.
* python/py-value.c (value_object_getset): Likewise.
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (gdb_PyGetSetDef): New type.
|
|
|
|
|
* python/py-block.c (block_object_getset)
|
|
|
|
|
(breakpoint_object_getset): Now a gdb_PyGetSetDef array.
|
|
|
|
|
* python/py-event.c (event_object_getset)
|
|
|
|
|
(finish_breakpoint_object_getset): Likewise.
|
|
|
|
|
* python/py-inferior.c (inferior_object_getset): Likewise.
|
|
|
|
|
* python/py-infthread.c (thread_object_getset): Likewise.
|
|
|
|
|
* python/py-lazy-string.c (lazy_string_object_getset): Likewise.
|
|
|
|
|
* python/py-linetable.c (linetable_entry_object_getset): Likewise.
|
|
|
|
|
* python/py-objfile.c (objfile_getset): Likewise.
|
|
|
|
|
* python/py-progspace.c (pspace_getset): Likewise.
|
|
|
|
|
* python/py-record-btrace.c (btpy_insn_getset, btpy_call_getset):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-record.c (recpy_record_getset): Likewise.
|
|
|
|
|
* python/py-symbol.c (symbol_object_getset): Likewise.
|
|
|
|
|
* python/py-symtab.c (symtab_object_getset, sal_object_getset):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-type.c (type_object_getset, field_object_getset):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-value.c (value_object_getset): Likewise.
|
|
|
|
|
|
2017-04-05 20:21:35 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (gdb_PyObject_CallMethod)
|
|
|
|
|
(gdb_PyErr_NewException, gdb_PySys_GetObject, gdb_PySys_SetPath):
|
|
|
|
|
New functions.
|
|
|
|
|
(GDB_PYSYS_SETPATH_CHAR, PyObject_CallMethod, PyErr_NewException)
|
|
|
|
|
(PySys_GetObject, PySys_SetPath): New macros.
|
|
|
|
|
|
2017-04-05 20:21:35 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-info.c (mi_cmd_info_os): Call info_osdata instead of
|
|
|
|
|
info_osdata_command.
|
|
|
|
|
* osdata.c (info_osdata_command): Rename to ...
|
|
|
|
|
(info_osdata): ... this. Constify 'type' parameter, and remove
|
|
|
|
|
the 'from_tty' parameter. Accept NULL TYPE.
|
|
|
|
|
(info_osdata_command): New function.
|
|
|
|
|
* osdata.h (info_osdata_command): Remove declaration.
|
|
|
|
|
(info_osdata): New declaration.
|
|
|
|
|
|
-Wwrite-strings: Constify mi_cmd_argv_ftype's 'command' parameter
-Wwrite-strings flags this attempt to pass a literal to a "char *":
mi_cmd_interpreter_exec ("-interpreter-exec", argv, 2);
Fix that by constifying mi_cmd_argv_ftype's 'command' parameter and
adjusting all MI commands.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* mi/mi-cmd-break.c (mi_cmd_break_insert_1, mi_cmd_break_insert)
(mi_cmd_dprintf_insert, mi_cmd_break_passcount)
(mi_cmd_break_watch, mi_cmd_break_commands): Constify 'command'
parameter.
* mi/mi-cmd-catch.c (mi_cmd_catch_assert, mi_cmd_catch_exception)
(mi_cmd_catch_load, mi_cmd_catch_unload): Constify cmd' parameter.
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Constify 'command'
parameter.
* mi/mi-cmd-env.c (mi_cmd_env_pwd, mi_cmd_env_cd, mi_cmd_env_path)
(mi_cmd_env_dir, mi_cmd_inferior_tty_set, _cmd_inferior_tty_show)
* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file)
(mi_cmd_file_list_exec_source_files)
(mi_cmd_file_list_shared_libraries): Constify 'command' parameter.
* mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions)
(mi_cmd_info_gdb_mi_command, mi_cmd_info_os): Constify 'command'
parameter.
* mi/mi-cmd-stack.c (mi_cmd_enable_frame_filters)
(mi_cmd_stack_list_frames, mi_cmd_stack_info_depth)
(mi_cmd_stack_list_locals, mi_cmd_stack_list_args)
(mi_cmd_stack_list_variables, mi_cmd_stack_select_frame)
(mi_cmd_stack_info_frame): Constify 'command' parameter.
* mi/mi-cmd-target.c (mi_cmd_target_file_get)
(mi_cmd_target_file_put, mi_cmd_target_file_delete): Constify
'command' parameter.
* mi/mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete)
(mi_cmd_var_set_format, mi_cmd_var_set_visualizer)
(mi_cmd_var_set_frozen, mi_cmd_var_show_format)
(mi_cmd_var_info_num_children, mi_cmd_var_list_children)
(mi_cmd_var_info_type, mi_cmd_var_info_path_expression)
(mi_cmd_var_info_expression, mi_cmd_var_show_attributes)
(mi_cmd_var_evaluate_expression, mi_cmd_var_assign)
(mi_cmd_var_update, mi_cmd_enable_pretty_printing)
(mi_cmd_var_set_update_range): Constify 'command' parameter.
* mi/mi-cmds.h (mi_cmd_argv_ftype): Constify 'command' parameter.
* mi/mi-interp.c (mi_cmd_interpreter_exec): Constify 'command'
parameter.
* mi/mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_next)
(mi_cmd_exec_next_instruction, mi_cmd_exec_step)
(mi_cmd_exec_step_instruction, mi_cmd_exec_finish)
(mi_cmd_exec_return ,mi_cmd_exec_jump, mi_cmd_exec_continue)
(mi_cmd_exec_interrupt, mi_cmd_exec_run, mi_cmd_target_detach)
(mi_cmd_target_flash_erase, mi_cmd_thread_select)
(mi_cmd_thread_list_ids, mi_cmd_thread_info)
(mi_cmd_list_thread_groups, mi_cmd_data_list_register_names)
(mi_cmd_data_list_changed_registers)
(mi_cmd_data_write_register_values)
(mi_cmd_data_evaluate_expression, mi_cmd_data_read_memory)
(mi_cmd_data_read_memory_bytes, mi_cmd_data_write_memory)
(mi_cmd_data_write_memory_bytes, mi_cmd_enable_timings)
(mi_cmd_list_features, mi_cmd_list_target_features)
(mi_cmd_add_inferior, mi_cmd_remove_inferior)
(mi_cmd_trace_define_variable, mi_cmd_trace_list_variables)
(mi_cmd_trace_find, mi_cmd_trace_save, mi_cmd_trace_start)
(mi_cmd_trace_status, mi_cmd_trace_stop, mi_cmd_ada_task_info)
(mi_cmd_trace_frame_collected): Constify 'command'
parameter.
* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Constify
'command' parameter.
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_insert_1, mi_cmd_break_insert)
|
|
|
|
|
(mi_cmd_dprintf_insert, mi_cmd_break_passcount)
|
|
|
|
|
(mi_cmd_break_watch, mi_cmd_break_commands): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-cmd-catch.c (mi_cmd_catch_assert, mi_cmd_catch_exception)
|
|
|
|
|
(mi_cmd_catch_load, mi_cmd_catch_unload): Constify cmd' parameter.
|
|
|
|
|
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-cmd-env.c (mi_cmd_env_pwd, mi_cmd_env_cd, mi_cmd_env_path)
|
|
|
|
|
(mi_cmd_env_dir, mi_cmd_inferior_tty_set, _cmd_inferior_tty_show)
|
|
|
|
|
* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file)
|
|
|
|
|
(mi_cmd_file_list_exec_source_files)
|
|
|
|
|
(mi_cmd_file_list_shared_libraries): Constify 'command' parameter.
|
|
|
|
|
* mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions)
|
|
|
|
|
(mi_cmd_info_gdb_mi_command, mi_cmd_info_os): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-cmd-stack.c (mi_cmd_enable_frame_filters)
|
|
|
|
|
(mi_cmd_stack_list_frames, mi_cmd_stack_info_depth)
|
|
|
|
|
(mi_cmd_stack_list_locals, mi_cmd_stack_list_args)
|
|
|
|
|
(mi_cmd_stack_list_variables, mi_cmd_stack_select_frame)
|
|
|
|
|
(mi_cmd_stack_info_frame): Constify 'command' parameter.
|
|
|
|
|
* mi/mi-cmd-target.c (mi_cmd_target_file_get)
|
|
|
|
|
(mi_cmd_target_file_put, mi_cmd_target_file_delete): Constify
|
|
|
|
|
'command' parameter.
|
|
|
|
|
* mi/mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete)
|
|
|
|
|
(mi_cmd_var_set_format, mi_cmd_var_set_visualizer)
|
|
|
|
|
(mi_cmd_var_set_frozen, mi_cmd_var_show_format)
|
|
|
|
|
(mi_cmd_var_info_num_children, mi_cmd_var_list_children)
|
|
|
|
|
(mi_cmd_var_info_type, mi_cmd_var_info_path_expression)
|
|
|
|
|
(mi_cmd_var_info_expression, mi_cmd_var_show_attributes)
|
|
|
|
|
(mi_cmd_var_evaluate_expression, mi_cmd_var_assign)
|
|
|
|
|
(mi_cmd_var_update, mi_cmd_enable_pretty_printing)
|
|
|
|
|
(mi_cmd_var_set_update_range): Constify 'command' parameter.
|
|
|
|
|
* mi/mi-cmds.h (mi_cmd_argv_ftype): Constify 'command' parameter.
|
|
|
|
|
* mi/mi-interp.c (mi_cmd_interpreter_exec): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_next)
|
|
|
|
|
(mi_cmd_exec_next_instruction, mi_cmd_exec_step)
|
|
|
|
|
(mi_cmd_exec_step_instruction, mi_cmd_exec_finish)
|
|
|
|
|
(mi_cmd_exec_return ,mi_cmd_exec_jump, mi_cmd_exec_continue)
|
|
|
|
|
(mi_cmd_exec_interrupt, mi_cmd_exec_run, mi_cmd_target_detach)
|
|
|
|
|
(mi_cmd_target_flash_erase, mi_cmd_thread_select)
|
|
|
|
|
(mi_cmd_thread_list_ids, mi_cmd_thread_info)
|
|
|
|
|
(mi_cmd_list_thread_groups, mi_cmd_data_list_register_names)
|
|
|
|
|
(mi_cmd_data_list_changed_registers)
|
|
|
|
|
(mi_cmd_data_write_register_values)
|
|
|
|
|
(mi_cmd_data_evaluate_expression, mi_cmd_data_read_memory)
|
|
|
|
|
(mi_cmd_data_read_memory_bytes, mi_cmd_data_write_memory)
|
|
|
|
|
(mi_cmd_data_write_memory_bytes, mi_cmd_enable_timings)
|
|
|
|
|
(mi_cmd_list_features, mi_cmd_list_target_features)
|
|
|
|
|
(mi_cmd_add_inferior, mi_cmd_remove_inferior)
|
|
|
|
|
(mi_cmd_trace_define_variable, mi_cmd_trace_list_variables)
|
|
|
|
|
(mi_cmd_trace_find, mi_cmd_trace_save, mi_cmd_trace_start)
|
|
|
|
|
(mi_cmd_trace_status, mi_cmd_trace_stop, mi_cmd_ada_task_info)
|
|
|
|
|
(mi_cmd_trace_frame_collected): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Constify
|
|
|
|
|
'command' parameter.
|
|
|
|
|
|
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_completer_word_break_characters): Now a const
|
|
|
|
|
array.
|
|
|
|
|
(ada_get_gdb_completer_word_break_characters): Constify.
|
|
|
|
|
* completer.c (gdb_completer_command_word_break_characters)
|
|
|
|
|
(gdb_completer_file_name_break_characters)
|
|
|
|
|
(gdb_completer_quote_characters): Now const arrays.
|
|
|
|
|
(get_gdb_completer_quote_characters): Constify.
|
|
|
|
|
(set_rl_completer_word_break_characters): New function.
|
|
|
|
|
(set_gdb_completion_word_break_characters)
|
|
|
|
|
(complete_line_internal): Use it.
|
|
|
|
|
* completer.h (get_gdb_completer_quote_characters): Constify.
|
|
|
|
|
(set_rl_completer_word_break_characters): Declare.
|
|
|
|
|
* f-lang.c (f_word_break_characters): Constify.
|
|
|
|
|
* language.c (default_word_break_characters): Constify.
|
|
|
|
|
* language.h (language_defn::la_word_break_characters): Constify.
|
|
|
|
|
(default_word_break_characters): Constify.
|
|
|
|
|
* top.c (init_main): Use set_rl_completer_word_break_characters.
|
|
|
|
|
|
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* aix-thread.c (aix_thread_pid_to_str)
|
|
|
|
|
(aix_thread_extra_thread_info): Constify.
|
|
|
|
|
* bsd-kvm.c (bsd_kvm_pid_to_str): Constify.
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_extra_thread_info)
|
|
|
|
|
(bsd_uthread_pid_to_str): Constify.
|
|
|
|
|
* corelow.c (core_pid_to_str): Constify.
|
|
|
|
|
* darwin-nat.c (darwin_pid_to_str): Constify.
|
|
|
|
|
* fbsd-nat.c (fbsd_pid_to_str): Constify.
|
|
|
|
|
* fbsd-tdep.c (fbsd_core_pid_to_str, gdbarch_core_pid_to_str):
|
|
|
|
|
Constify.
|
|
|
|
|
* gnu-nat.c (gnu_pid_to_str): Constify.
|
|
|
|
|
* go32-nat.c (go32_pid_to_str): Constify.
|
|
|
|
|
* i386-cygwin-tdep.c (i386_windows_core_pid_to_str): Constify.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_pid_to_str): Constify.
|
|
|
|
|
* inferior.c (inferior_pid_to_str): Constify.
|
|
|
|
|
* linux-nat.c (linux_nat_pid_to_str): Constify.
|
|
|
|
|
* linux-tdep.c (linux_core_pid_to_str): Constify.
|
|
|
|
|
* linux-thread-db.c (thread_db_pid_to_str)
|
|
|
|
|
(thread_db_extra_thread_info): Constify.
|
|
|
|
|
* nto-tdep.c (nto_extra_thread_info): Constify.
|
|
|
|
|
* nto-tdep.h (nto_extra_thread_info): Constify.
|
|
|
|
|
* obsd-nat.c (obsd_pid_to_str): Constify.
|
|
|
|
|
* procfs.c (procfs_pid_to_str): Constify.
|
|
|
|
|
* ravenscar-thread.c (ravenscar_extra_thread_info)
|
|
|
|
|
(ravenscar_pid_to_str): Constify.
|
|
|
|
|
* remote-sim.c (gdbsim_pid_to_str): Constify.
|
|
|
|
|
* remote.c (remote_threads_extra_info, remote_pid_to_str):
|
|
|
|
|
Constify.
|
|
|
|
|
* sol-thread.c (solaris_pid_to_str): Constify.
|
|
|
|
|
* sol2-tdep.c (sol2_core_pid_to_str): Constify.
|
|
|
|
|
* sol2-tdep.h (sol2_core_pid_to_str): Constify.
|
|
|
|
|
* target.c (default_pid_to_str, target_pid_to_str)
|
|
|
|
|
(normal_pid_to_str, default_pid_to_str): Constify.
|
|
|
|
|
* target.h (target_ops::to_pid_to_str)
|
|
|
|
|
(target_ops::to_extra_thread_info): Constify.
|
|
|
|
|
(target_pid_to_str, normal_pid_to_str): Constify.
|
|
|
|
|
* windows-nat.c (windows_pid_to_str): Constify.
|
|
|
|
|
* gdbarch.sh (core_pid_to_str): Constify.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* gdbarch.h, gdbarch.c: Regenerate.
|
|
|
|
|
|
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* main.c (captured_main_1): Use gdb::unique_xmalloc_ptr to manage
|
|
|
|
|
the memory of the temporary warning_pre_print override.
|
|
|
|
|
* utils.c (warning_pre_print): Constify.
|
|
|
|
|
* utils.h (warning_pre_print): Constify.
|
|
|
|
|
|
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (shell_escape): Constify 'arg' parameter.
|
|
|
|
|
(shell_command): New function.
|
|
|
|
|
(make_command): Use std::string.
|
|
|
|
|
(init_cli_cmds): Register shell_command instead of shell_escape.
|
|
|
|
|
|
-Wwrite-strings: Don't initialize string command variables to empty string
-Wwrite-strings flags these initializations as requiring a cast.
However, these variables are command variables, and as such point to
heap-allocated memory. The initial allocation is always done when the
corresponding command is registered. E.g.,:
dprintf_function = xstrdup ("printf");
add_setshow_string_cmd ("dprintf-function", class_support,
&dprintf_function, _("\
Set the function to use for dynamic printf"), _("\
Show the function to use for dynamic printf"), NULL,
update_dprintf_commands, NULL,
&setlist, &showlist);
That's why we never reach a bogus attempt to free these string
literals.
So, just drop the incorrect initializations.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* breakpoint.c (dprintf_function, dprintf_channel): Don't initialize.
* tracepoint.c (default_collect): Don't initialize.
2017-04-05 20:21:33 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (dprintf_function, dprintf_channel): Don't initialize.
|
|
|
|
|
* tracepoint.c (default_collect): Don't initialize.
|
|
|
|
|
|
2017-04-05 20:21:33 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* macroexp.c (macro_buffer::shared): Now a bool.
|
|
|
|
|
(init_buffer): Update.
|
|
|
|
|
(init_shared_buffer): Constify 'addr' parameter.
|
|
|
|
|
(substitute_args, expand, macro_expand, macro_expand_next): Remove
|
|
|
|
|
casts.
|
|
|
|
|
|
2017-04-05 20:21:33 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (show_disassembly_style_sfunc): Constify local.
|
|
|
|
|
* disasm.c (set_disassembler_options): Constify local.
|
|
|
|
|
* i386-tdep.c (i386_print_insn): Remove cast and FIXME comment.
|
|
|
|
|
|
2017-04-05 18:28:30 +02:00
|
|
|
|
2017-04-05 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21352
|
|
|
|
|
* tracefile.c (tsave_command): Fix argument parsing for '-r'
|
|
|
|
|
option.
|
|
|
|
|
|
2017-04-05 15:55:43 +02:00
|
|
|
|
2017-04-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* frame.c (frame_unwind_register_unsigned): Call
|
|
|
|
|
frame_unwind_register_value.
|
|
|
|
|
|
2017-04-05 15:46:13 +02:00
|
|
|
|
2017-04-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* gdb.threads/thread-specific-bp.exp (check_thread_specific_breakpoint):
|
|
|
|
|
Use gdb_test_multiple, and don't match anchor.
|
|
|
|
|
|
2017-04-05 10:39:49 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Global Maintainers): Add Simon Marchi.
|
|
|
|
|
(Write After Approval): Remove Simon Marchi.
|
|
|
|
|
|
Initialize gdb::optional empty payload to quiet false -Wmaybe-uninitialized warnings
Commit ecfb656c37b982 ("dwarf2read.c: Make dir_index and
file_name_index strong typedefs") added a use of gdb::optional that
triggers bogus -Wmaybe-uninitialized warnings:
GCC trunk is complaining like this:
../../binutils-gdb/gdb/dwarf2read.c: In function void read_formatted_entries(bfd*, const gdb_byte**, line_header*, const comp_unit_head*, void (*)(line_header*, const char*, dir_index, unsigned int, unsigned int)):
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: fe.file_entry::length may be used uninitialized in this function [-Werror=maybe-uninitialized]
callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
^
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: *((void*)& fe +8) may be used uninitialized in this function [-Werror=maybe-uninitialized]
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: fe.file_entry::mod_time may be used uninitialized in this function [-Werror=maybe-uninitialized]
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: fe.file_entry::name may be used uninitialized in this function [-Werror=maybe-uninitialized]
While some older GCCs are complaining like this:
../../binutils-gdb/gdb/dwarf2read.c: In function void read_formatted_entries(bfd*, const gdb_byte**, line_header*, const comp_unit_head*, void (*)(line_header*, const char*, dir_index, unsigned int, unsigned int)):
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: uint may be used uninitialized in this function [-Werror=maybe-uninitialized]
callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
Looking around the web, I see that boost's optional implementation
triggers this kind of issue often too. See:
http://www.boost.org/doc/libs/1_63_0/libs/optional/doc/html/boost_optional/tutorial/gotchas/false_positive_with__wmaybe_uninitialized.html
I noticed that replacing the gdb::optional uses with real C++17
std::optional uses against GCC 7/trunk makes the warnings go away.
Looking at the implementation, AFAICS, libstdc++ always initializes
its "empty" union payload member (_M_empty, which is defined as an
empty class, like ours). I.e., all payload types have this ctor:
struct _Optional_payload.....
{
constexpr _Optional_payload()
: _M_empty() {}
The constexpr makes a diference too. Without it, GCC7 still warns.
So I'm applying the same treatment to our gdb::optional.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* common/gdb_optional.h (optional::optional): Make constexpr and
initialize m_dummy.
2017-04-05 00:49:27 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_optional.h (optional::optional): Make constexpr and
|
|
|
|
|
initialize m_dummy.
|
|
|
|
|
|
2017-04-04 23:28:07 +02:00
|
|
|
|
2017-04-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64-fbsd-tdep.c: Remove "bsd-uthread.h" include.
|
|
|
|
|
(amd64fbsd_jmp_buf_reg_offset): Remove.
|
|
|
|
|
(amd64fbsd_supply_uthread): Remove function.
|
|
|
|
|
(amd64fbsd_collect_uthread): Remove function.
|
|
|
|
|
(amd64fbsd_init_abi): Don't set bsd-uthread callbacks.
|
|
|
|
|
* configure.tgt (i[34567]86-*-freebsd*): Remove bsd-uthread.o.
|
|
|
|
|
(x86_64-*-freebsd*): Remove bsd-uthread.o.
|
|
|
|
|
(fbsd-nat.c): Update comment.
|
|
|
|
|
* i386-fbsd-tdep.c: Remove "bsd-uthread.h" include.
|
|
|
|
|
(i386fbsd_jmp_buf_reg_offset): Remove.
|
|
|
|
|
(i386fbsd_supply_uthread): Remove function.
|
|
|
|
|
(i386fbsd_collect_uthread): Remove function.
|
|
|
|
|
(i386fbsd_init_abi): Don't set bsd-uthread callbacks.
|
|
|
|
|
|
2017-04-04 23:20:37 +02:00
|
|
|
|
2017-04-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_64_TARGET_OBS): Remove alpha-fbsd-tdep.o.
|
|
|
|
|
(ALLDEPFILES): Remove alpha-fbsd-tdep.c
|
|
|
|
|
* NEWS: Mention that support for FreeBSD/alpha was removed.
|
|
|
|
|
* alpha-fbsd-tdep.c: Delete file.
|
|
|
|
|
* config/alpha/fbsd.mh: Delete file.
|
|
|
|
|
* configure.host: Delete alpha*-*-freebsd* and
|
|
|
|
|
alpha*-*-kfreebsd*-gnu.
|
|
|
|
|
* configure.tgt: Delete alpha*-*-freebsd* and
|
|
|
|
|
alpha*-*-kfreebsd*-gnu.
|
|
|
|
|
|
2017-04-04 22:57:47 +02:00
|
|
|
|
2017-04-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers,
|
|
|
|
|
amd64bsd_store_inferior_registers): Use ptid from regcache.
|
|
|
|
|
|
dwarf2read.c: C++fy lnp_state_machine
While I was looking at the file, I noticed that this struct could be
nicely converted to a class. As I was progressing, I ended up moving
all state machine actual internal state manipulation to methods of
lnp_state_machine, essentially decoupling DWARF parsing from state
tracking. I also noticed that the lnp_reader_state doesn't really
serve any good use, so that's eliminated in the process.
gdb/ChangeLog:
2017-04-04 Pedro Alves <palves@redhat.com>
* dwarf2read.c (lnp_state_machine): Now a class. Initialize all
data fields, make them private and add "m_" prefixes.
(lnp_state_machine::lnp_state_machine): New ctor.
(record_line, check_line_address, handle_set_discriminator)
(handle_set_address, handle_advance_pc, handle_special_opcode)
(handle_advance_line, handle_set_file, handle_negate_stmt)
(handle_const_add_pc, handle_fixed_advance_pc, handle_copy)
(end_sequence, advance_line): New methods.
(m_gdbarch, m_record_lines_p): New fields.
(lnp_reader_state): Delete.
(dwarf_record_line): Rename to ...
(lnp_state_machine::record_line): ... adjust.
(init_lnp_state_machine): Delete.
(lnp_state_machine::lnp_state_machine): New.
(check_line_address): Rename to ...
(lnp_state_machine::check_line_address): This.
(dwarf_decode_lines_1): Remove reference to "reader_state".
Adjust lnp_state_machine having a non-default ctor. Use bool.
State machine internal state manipulation moved to
lnp_state_machine methods.
2017-04-04 21:03:26 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (lnp_state_machine): Now a class. Initialize all
|
|
|
|
|
data fields, make them private and add "m_" prefixes.
|
|
|
|
|
(lnp_state_machine::lnp_state_machine): New ctor.
|
|
|
|
|
(record_line, check_line_address, handle_set_discriminator)
|
|
|
|
|
(handle_set_address, handle_advance_pc, handle_special_opcode)
|
|
|
|
|
(handle_advance_line, handle_set_file, handle_negate_stmt)
|
|
|
|
|
(handle_const_add_pc, handle_fixed_advance_pc, handle_copy)
|
|
|
|
|
(end_sequence, advance_line): New methods.
|
|
|
|
|
(m_gdbarch, m_record_lines_p): New fields.
|
|
|
|
|
(lnp_reader_state): Delete.
|
|
|
|
|
(dwarf_record_line): Rename to ...
|
|
|
|
|
(lnp_state_machine::record_line): ... adjust.
|
|
|
|
|
(init_lnp_state_machine): Delete.
|
|
|
|
|
(lnp_state_machine::lnp_state_machine): New.
|
|
|
|
|
(check_line_address): Rename to ...
|
|
|
|
|
(lnp_state_machine::check_line_address): This.
|
|
|
|
|
(dwarf_decode_lines_1): Remove reference to "reader_state".
|
|
|
|
|
Adjust lnp_state_machine having a non-default ctor. Use bool.
|
|
|
|
|
State machine internal state manipulation moved to
|
|
|
|
|
lnp_state_machine methods.
|
|
|
|
|
|
Make sect_offset and cu_offset strong typedefs instead of structs
A while ago, back when GDB was a C program, the sect_offset and
cu_offset types were made structs in order to prevent incorrect mixing
of those offsets. Now that we require C++11, we can make them
integers again, while keeping the safety, by exploiting "enum class".
We can add a bit more safety, even, by defining operators that the
types _should_ support, helping making the suspicious uses stand out
more.
Getting at the underlying type is done with the new to_underlying
function added by the previous patch, which also helps better spot
where do we need to step out of the safety net. Mostly, that's around
parsing the DWARF, and when we print the offset for complaint/debug
purposes. But there are other occasional uses.
Since we have to define the sect_offset/cu_offset types in a header
anyway, I went ahead and generalized/library-fied the idea of "offset"
types, making it trivial to add more such types if we find a use. See
common/offset-type.h and the DEFINE_OFFSET_TYPE macro.
I needed a couple generaly-useful preprocessor bits (e.g., yet another
CONCAT implementation), so I started a new common/preprocessor.h file.
I included units tests covering the "offset" types API. These are
mostly compile-time tests, using SFINAE to check that expressions that
shouldn't compile (e.g., comparing unrelated offset types) really are
invalid and would fail to compile. This same idea appeared in my
pending enum-flags revamp from a few months ago (though this version
is a bit further modernized compared to what I had posted), and I plan
on reusing the "check valid expression" bits added here in that
series, so I went ahead and defined the CHECK_VALID_EXPR macro in its
own header -- common/valid-expr.h. I think that's nicer regardless.
I was borderline between calling the new types "offset" types, or
"index" types, BTW. I stuck with "offset" simply because that's what
we're already calling them, mostly.
gdb/ChangeLog:
2017-04-04 Pedro Alves <palves@redhat.com>
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
unittests/offset-type-selftests.c.
(SUBDIR_UNITTESTS_OBS): Add offset-type-selftests.o.
* common/offset-type.h: New file.
* common/preprocessor.h: New file.
* common/traits.h: New file.
* common/valid-expr.h: New file.
* dwarf2expr.c: Include "common/underlying.h". Adjust to use
sect_offset and cu_offset strong typedefs throughout.
* dwarf2expr.h: Adjust to use sect_offset and cu_offset strong
typedefs throughout.
* dwarf2loc.c: Include "common/underlying.h". Adjust to use
sect_offset and cu_offset strong typedefs throughout.
* dwarf2read.c: Adjust to use sect_offset and cu_offset strong
typedefs throughout.
* gdbtypes.h: Include "common/offset-type.h".
(cu_offset): Now an offset type (strong typedef) instead of a
struct.
(sect_offset): Likewise.
(union call_site_parameter_u): Rename "param_offset" field to
"param_cu_off".
* unittests/offset-type-selftests.c: New file.
2017-04-04 21:03:26 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/offset-type-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add offset-type-selftests.o.
|
|
|
|
|
* common/offset-type.h: New file.
|
|
|
|
|
* common/preprocessor.h: New file.
|
|
|
|
|
* common/traits.h: New file.
|
|
|
|
|
* common/valid-expr.h: New file.
|
|
|
|
|
* dwarf2expr.c: Include "common/underlying.h". Adjust to use
|
|
|
|
|
sect_offset and cu_offset strong typedefs throughout.
|
|
|
|
|
* dwarf2expr.h: Adjust to use sect_offset and cu_offset strong
|
|
|
|
|
typedefs throughout.
|
|
|
|
|
* dwarf2loc.c: Include "common/underlying.h". Adjust to use
|
|
|
|
|
sect_offset and cu_offset strong typedefs throughout.
|
|
|
|
|
* dwarf2read.c: Adjust to use sect_offset and cu_offset strong
|
|
|
|
|
typedefs throughout.
|
|
|
|
|
* gdbtypes.h: Include "common/offset-type.h".
|
|
|
|
|
(cu_offset): Now an offset type (strong typedef) instead of a
|
|
|
|
|
struct.
|
|
|
|
|
(sect_offset): Likewise.
|
|
|
|
|
(union call_site_parameter_u): Rename "param_offset" field to
|
|
|
|
|
"param_cu_off".
|
|
|
|
|
* unittests/offset-type-selftests.c: New file.
|
|
|
|
|
|
2017-04-04 21:03:25 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/underlying.h: New file.
|
|
|
|
|
* dwarf2read.c: Include "common/gdb_optional.h" and
|
|
|
|
|
"common/underlying.h".
|
|
|
|
|
(dir_index, file_name_index): New types.
|
|
|
|
|
(file_entry): Use them.
|
|
|
|
|
(file_entry::include): Use to_underlying.
|
|
|
|
|
(line_header::add_file_name): Use dir_index.
|
|
|
|
|
(read_formatted_entries): Use gdb::optional. Read form before
|
|
|
|
|
writting to file_entry.
|
|
|
|
|
(dwarf_decode_line_header): Use dir_index.
|
|
|
|
|
(lnp_state_machine::current_file): Use to_underlying.
|
|
|
|
|
(lnp_state_machine::file): Change type to file_name_index.
|
|
|
|
|
(dwarf_record_line): Use to_underlying.
|
|
|
|
|
(init_lnp_state_machine): Use file_name_index.
|
|
|
|
|
(dwarf_decode_lines_1): Use dir_index and file_name_index.
|
|
|
|
|
|
2017-04-04 21:03:25 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_optional.h (gdb::optiona): Add operator->, operator*,
|
|
|
|
|
operator bool, has_value and get methods.
|
|
|
|
|
|
dwarf2read.c: Some C++fycation, use std::vector, std::unique_ptr
This starts off as replacing a couple custom open coded vector
implementations in the file with std::vector, and then the rest falls
off of that. I.e., use new/delete instead of XCNEW/xfree, add
ctors/dtors/initializers where appropriate. And then use
std::unique_ptr instead of cleanups. Some functions became methods,
and in a couple spots, some single-use callback functions that would
have to be tweaked anyway are converted to lambdas instead.
gdb/ChangeLog:
2017-04-04 Pedro Alves <palves@redhat.com>
* dwarf2read.c (struct file_entry): Add ctors, and initialize all
fields.
(line_header): Initialize all data fields. Change type of
standard_opcode_lengths to std::unique_ptr<unsigned char[]>.
Change type of include_dirs to std::vector<const char *>. Remove
num_include_dirs, include_dirs_size. Change type of file_names to
std::vector<file_entry>. Remove num_file_names, file_names_size.
(line_header::line_header): New.
(line_header::add_include_dir, line_header::add_file_name): New
methods.
(line_header::include_dir_at): Remove NULL check.
(line_header::file_name_at): Add const overload.
(line_header_up): New unique_ptr typedef.
(dw2_get_file_names_reader): Use line_header_up. Adjust to use
std::vector. Remove free_line_header call.
(dwarf2_build_include_psymtabs): Use line_header_up. Remove
free_line_header call.
(free_cu_line_header): Delete.
(handle_DW_AT_stmt_list, handle_DW_AT_stmt_list)
(setup_type_unit_groups): Use line_header_up instead of cleanups.
Adjust to use std::vector.
(free_line_header): Delete.
(free_line_header_voidp): Use delete.
(add_include_dir): Replace with ...
(line_header::add_include_dir): ... this method. Use std::vector.
(add_file_name): Replace with ...
(line_header::add_file_name): ... this method. Use std::vector.
(add_include_dir_stub): Delete.
(read_formatted_entries): Remove memset.
(dwarf_decode_line_header): Return a line_header_up instead of a
raw pointer. Remove cleanup handling. Pass lambdas to
read_formatted_entries. Adjust to use line_header methods.
(dwarf_decode_lines_1): Adjust to use line_header methods.
(dwarf_decode_lines, file_file_name, file_full_name): Adjust to
use std::vector.
2017-04-04 21:03:25 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct file_entry): Add ctors, and initialize all
|
|
|
|
|
fields.
|
|
|
|
|
(line_header): Initialize all data fields. Change type of
|
|
|
|
|
standard_opcode_lengths to std::unique_ptr<unsigned char[]>.
|
|
|
|
|
Change type of include_dirs to std::vector<const char *>. Remove
|
|
|
|
|
num_include_dirs, include_dirs_size. Change type of file_names to
|
|
|
|
|
std::vector<file_entry>. Remove num_file_names, file_names_size.
|
|
|
|
|
(line_header::line_header): New.
|
|
|
|
|
(line_header::add_include_dir, line_header::add_file_name): New
|
|
|
|
|
methods.
|
|
|
|
|
(line_header::include_dir_at): Remove NULL check.
|
|
|
|
|
(line_header::file_name_at): Add const overload.
|
|
|
|
|
(line_header_up): New unique_ptr typedef.
|
|
|
|
|
(dw2_get_file_names_reader): Use line_header_up. Adjust to use
|
|
|
|
|
std::vector. Remove free_line_header call.
|
|
|
|
|
(dwarf2_build_include_psymtabs): Use line_header_up. Remove
|
|
|
|
|
free_line_header call.
|
|
|
|
|
(free_cu_line_header): Delete.
|
|
|
|
|
(handle_DW_AT_stmt_list, handle_DW_AT_stmt_list)
|
|
|
|
|
(setup_type_unit_groups): Use line_header_up instead of cleanups.
|
|
|
|
|
Adjust to use std::vector.
|
|
|
|
|
(free_line_header): Delete.
|
|
|
|
|
(free_line_header_voidp): Use delete.
|
|
|
|
|
(add_include_dir): Replace with ...
|
|
|
|
|
(line_header::add_include_dir): ... this method. Use std::vector.
|
|
|
|
|
(add_file_name): Replace with ...
|
|
|
|
|
(line_header::add_file_name): ... this method. Use std::vector.
|
|
|
|
|
(add_include_dir_stub): Delete.
|
|
|
|
|
(read_formatted_entries): Remove memset.
|
|
|
|
|
(dwarf_decode_line_header): Return a line_header_up instead of a
|
|
|
|
|
raw pointer. Remove cleanup handling. Pass lambdas to
|
|
|
|
|
read_formatted_entries. Adjust to use line_header methods.
|
|
|
|
|
(dwarf_decode_lines_1): Adjust to use line_header methods.
|
|
|
|
|
(dwarf_decode_lines, file_file_name, file_full_name): Adjust to
|
|
|
|
|
use std::vector.
|
|
|
|
|
|
2017-04-04 16:31:50 +02:00
|
|
|
|
2017-04-04 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* remote.c (set_general_thread, set_continue_thread): Use ptid_t
|
|
|
|
|
instead of struct ptid.
|
|
|
|
|
|
2017-04-04 09:42:30 +02:00
|
|
|
|
2017-05-04 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* frame.c (get_frame_register_bytes): Unwind using value.
|
|
|
|
|
(put_frame_register_bytes): Likewise.
|
|
|
|
|
|
2017-04-13 10:39:13 +02:00
|
|
|
|
2017-03-30 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (type_aggregate_p): Treat TYPE_CODE_MODULE as being
|
|
|
|
|
aggregate-like.
|
|
|
|
|
|
2017-03-29 21:53:43 +02:00
|
|
|
|
2017-03-29 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* auto-load.c (auto_load_section_scripts): Check SEC_HAS_CONTENTS.
|
|
|
|
|
|
2017-03-29 17:56:31 +02:00
|
|
|
|
2017-03-29 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (struct thread_info): Declare constructor and
|
|
|
|
|
destructor. Add some in-class member initializers.
|
|
|
|
|
* thread.c (free_thread): Remove.
|
|
|
|
|
(init_thread_list): Call delete instead of free_thread.
|
|
|
|
|
(new_thread): Call thread_info constructor.
|
|
|
|
|
(thread_info::thread_info): New function.
|
|
|
|
|
(thread_info::~thread_info): New function.
|
|
|
|
|
(delete_thread_1): Call delete instead of free_thread.
|
|
|
|
|
(make_cleanup_restore_current_thread): Move tp and frame to
|
|
|
|
|
inner block.
|
|
|
|
|
|
2017-02-10 12:12:09 +01:00
|
|
|
|
2017-03-28 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* arc-tdep.c (arc_frame_cache): Add support for prologue analysis.
|
|
|
|
|
(arc_skip_prologue): Likewise.
|
|
|
|
|
(arc_make_frame_cache): Likewise.
|
|
|
|
|
(arc_pv_get_operand): New function.
|
|
|
|
|
(arc_is_in_prologue): Likewise.
|
|
|
|
|
(arc_analyze_prologue): Likewise.
|
|
|
|
|
(arc_print_frame_cache): Likewise.
|
|
|
|
|
(MAX_PROLOGUE_LENGTH): New constant.
|
|
|
|
|
|
2017-02-10 12:12:06 +01:00
|
|
|
|
2017-03-28 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* configure.tgt: Add arc-insn.o.
|
|
|
|
|
* arc-tdep.c (arc_delayed_print_insn): Make non-static.
|
|
|
|
|
(dump_arc_instruction_command): New function.
|
|
|
|
|
(arc_fprintf_disasm): Likewise.
|
|
|
|
|
(arc_disassemble_info): Likewise.
|
|
|
|
|
(arc_insn_get_operand_value): Likewise.
|
|
|
|
|
(arc_insn_get_operand_value_signed): Likewise.
|
|
|
|
|
(arc_insn_get_memory_base_reg): Likewise.
|
|
|
|
|
(arc_insn_get_memory_offset): Likewise.
|
|
|
|
|
(arc_insn_get_branch_target): Likewise.
|
|
|
|
|
(arc_insn_dump): Likewise.
|
|
|
|
|
(arc_insn_get_linear_next_pc): Likewise.
|
|
|
|
|
* arc-tdep.h (arc_delayed_print_insn): Add function declaration.
|
|
|
|
|
(arc_disassemble_info): Likewise.
|
|
|
|
|
(arc_insn_get_branch_target): Likewise.
|
|
|
|
|
(arc_insn_get_linear_next_pc): Likewise.
|
|
|
|
|
* NEWS: Mention new "maint print arc arc-instruction".
|
|
|
|
|
|
2017-02-10 12:12:01 +01:00
|
|
|
|
2017-03-28 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* arc-tdep (maintenance_print_arc_list): New variable.
|
|
|
|
|
(maintenance_print_arc_command): New function.
|
|
|
|
|
|
2017-02-10 12:11:46 +01:00
|
|
|
|
2017-03-28 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* arc-tdep.c (core_v2_register_names, core_arcompact_register_names)
|
|
|
|
|
Add "limm" and "reserved".
|
|
|
|
|
(arc_cannot_fetch_register, arc_cannot_store_register): Add
|
|
|
|
|
ARC_RESERVED_REGNUM and ARC_LIMM_REGNUM.
|
|
|
|
|
* arc-tdep.h (arc_regnum): Likewise.
|
|
|
|
|
|
2016-11-18 20:39:47 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-linux-nat.c (fill_gregset): Call regcache_raw_collect
|
|
|
|
|
for THREADPTR register.
|
|
|
|
|
(supply_gregset_reg): Call regcache_raw_supply for THREADPTR
|
|
|
|
|
register.
|
|
|
|
|
* xtensa-tdep.c (XTENSA_DBREGN_UREG): New definition.
|
|
|
|
|
(xtensa_derive_tdep): Initialize tdep->threadptr_regnum.
|
|
|
|
|
* xtensa-tdep.h (gdbarch_tdep::threadptr_regnum): New field.
|
|
|
|
|
|
2017-02-22 00:41:31 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.c (xtensa_pseudo_register_read): Treat all
|
|
|
|
|
registers above gdbarch_num_regs (gdbarch) as privileged in
|
|
|
|
|
call0 ABI.
|
|
|
|
|
|
2016-11-18 18:48:01 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-linux-nat.c (fill_gregset): Call regcache_raw_collect
|
|
|
|
|
for a single specified register or for all registers in
|
|
|
|
|
a0_base..a0_base + C0_NREGS range.
|
|
|
|
|
(supply_gregset_reg): Call regcache_raw_supply for a single
|
|
|
|
|
specified register or for all registers in a0_base..a0_base +
|
|
|
|
|
C0_NREGS range.
|
|
|
|
|
|
2017-02-22 02:14:37 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* arch/xtensa.h (C0_NREGS): Add definition.
|
|
|
|
|
* xtensa-tdep.c (C0_NREGS): Remove definition.
|
|
|
|
|
|
2016-11-18 18:39:41 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.c (xtensa_scan_prologue, call0_analyze_prologue):
|
|
|
|
|
Drop xtensa_default_isa initialization.
|
|
|
|
|
(xtensa_gdbarch_init): Initialize xtensa_default_isa.
|
|
|
|
|
|
2017-03-27 16:57:19 +02:00
|
|
|
|
2017-03-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (file_entry) <dir_index>: Add comment.
|
|
|
|
|
(file_entry::include_dir): New method.
|
|
|
|
|
(line_header::include_dir_at, line_header::file_name_at): New
|
|
|
|
|
methods.
|
|
|
|
|
(setup_type_unit_groups, setup_type_unit_groups)
|
|
|
|
|
(psymtab_include_file_name): Simplify using the new methods.
|
|
|
|
|
(lnp_state_machine) <the_line_header>: New field.
|
|
|
|
|
<file>: Add comment.
|
|
|
|
|
(lnp_state_machine::current_file): New method.
|
|
|
|
|
(dwarf_record_line): Simplify using the new methods.
|
|
|
|
|
(init_lnp_state_machine): Initialize the "the_line_header" field.
|
|
|
|
|
(dwarf_decode_lines_1, dwarf_decode_lines, file_file_name):
|
|
|
|
|
Simplify using the new methods.
|
|
|
|
|
|
gdb/cp-name-parser.y: Eliminate make_empty, use cplus_demangle_fill_component
The demangler exports the cplus_demangle_fill_component function that
clients should use to initialize demangle_component components that
use the "s_binary" union member. cp-name-parser.y uses it in some
places, via the fill_comp wrapper, but not all. Several places
instead use a GDB-specific "make_empty" function. Because this
function does not call any of the demangler "fill" functions, we had
to patch it recently to clear the allocated demangle_component's
"d_printing" field, which is supposedly a "private" demangler field.
To avoid such problems in the future, this commit switches those
places to use "fill_comp" instead, and eliminates the "make_empty"
function.
gdb/ChangeLog:
2017-03-27 Pedro Alves <palves@redhat.com>
* cp-name-parser.y (make_empty): Delete.
(demangler_special, nested_name, ptr_operator, array_indicator)
(direct_declarator, declarator_1): Use fill_comp instead of
make_empty.
2017-03-27 14:56:49 +02:00
|
|
|
|
2017-03-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-name-parser.y (make_empty): Delete.
|
|
|
|
|
(demangler_special, nested_name, ptr_operator, array_indicator)
|
|
|
|
|
(direct_declarator, declarator_1): Use fill_comp instead of
|
|
|
|
|
make_empty.
|
|
|
|
|
|
2017-03-27 13:28:03 +02:00
|
|
|
|
2017-03-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.h (gdb_xml_debug): Pass a "first-to-check" argument
|
|
|
|
|
to ATTRIBUTE_PRINTF.
|
|
|
|
|
* solib-target.c (library_list_start_list): Print "string" not
|
|
|
|
|
"version".
|
|
|
|
|
* xml-tdesc.c (tdesc_start_field): Pass "field_name" to
|
|
|
|
|
gdb_xml_error call.
|
|
|
|
|
|
2017-03-27 12:56:28 +02:00
|
|
|
|
2017-03-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct file_and_directory): New.
|
|
|
|
|
(dwarf2_get_dwz_file): Adjust to use std::string.
|
|
|
|
|
(dw2_get_file_names_reader): Adjust to use file_and_directory.
|
|
|
|
|
(find_file_and_directory): Adjust to return a file_and_directory
|
|
|
|
|
object.
|
|
|
|
|
(read_file_scope): Adjust to use file_and_directory. Remove
|
|
|
|
|
make_cleanup/do_cleanups calls.
|
|
|
|
|
(open_and_init_dwp_file): Adjust to use std::string. Remove
|
|
|
|
|
make_cleanup/do_cleanups calls.
|
|
|
|
|
* python/python.c (do_start_initialization): Adjust to ldirname
|
|
|
|
|
returning a std::string.
|
|
|
|
|
* utils.c (ldirname): Now returns a std::string.
|
|
|
|
|
* utils.h (ldirname): Change return type to std::string.
|
|
|
|
|
* xml-syscall.c (xml_init_syscalls_info): Adjust to ldirname
|
|
|
|
|
returning a std::string.
|
|
|
|
|
* xml-tdesc.c (file_read_description_xml): Likewise.
|
|
|
|
|
|
2017-03-24 17:53:05 +01:00
|
|
|
|
2017-03-24 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_debug_print_register): New function.
|
|
|
|
|
* regcache.h (regcache_debug_print_register): New declaration.
|
|
|
|
|
* target.c (debug_print_register): Remove.
|
|
|
|
|
(target_fetch_registers): Call regcache_debug_print_register.
|
|
|
|
|
(target_store_registers): Likewise.
|
|
|
|
|
|
2017-03-24 16:12:53 +01:00
|
|
|
|
2017-03-24 Pádraig Brady <pbrady@fb.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (setup_type_unit_groups): Ensure dir_index doesn't
|
|
|
|
|
reference beyond the 'lh->include_dirs' array before accessing to
|
|
|
|
|
it.
|
|
|
|
|
(psymtab_include_file_name): Likewise.
|
|
|
|
|
(dwarf_decode_lines_1): Likewise.
|
|
|
|
|
(dwarf_decode_lines): Likewise.
|
|
|
|
|
(file_file_name): Likewise.
|
|
|
|
|
|
Remove some unnecessary inferior_ptid setting/restoring when fetching/storing registers
Now that the to_fetch_registers, to_store_registers and
to_prepare_to_store target methods don't rely on the value of
inferior_ptid anymore, we can remove a bunch of now unnecessary setting
and restoring of inferior_ptid.
The asserts added recently in target_fetch_registers and
target_store_registers, which validate that inferior_ptid matches the
regcache's ptid, must go away. It's the whole point of this effort, to
not require inferior_ptid to have a particular value when calling these
functions.
One thing that I noticed is how sol-thread.c's ps_lgetregs and friends
use the current value of inferior_ptid instead of what's passed as
argument (ph->ptid), unlike proc-service.c's versions of the same
functions. Is it expected? I left it like this in the current patch,
but unless there's a good reason for it to be that way, I guess we
should make it use the parameter.
gdb/ChangeLog:
* fbsd-tdep.c (fbsd_corefile_thread): Don't set/restore
inferior_ptid.
* proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs,
ps_lsetfpregs): Likewise.
* regcache.c (regcache_raw_update, regcache_raw_write): Likewise.
* sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs,
ps_lsetfpregs): Likewise.
* target.c (target_fetch_registers, target_store_registers):
Remove asserts.
2017-03-23 18:37:06 +01:00
|
|
|
|
2017-03-23 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* fbsd-tdep.c (fbsd_corefile_thread): Don't set/restore
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
* proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs,
|
|
|
|
|
ps_lsetfpregs): Likewise.
|
|
|
|
|
* regcache.c (regcache_raw_update, regcache_raw_write): Likewise.
|
|
|
|
|
* sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs,
|
|
|
|
|
ps_lsetfpregs): Likewise.
|
|
|
|
|
* target.c (target_fetch_registers, target_store_registers):
|
|
|
|
|
Remove asserts.
|
|
|
|
|
|
2017-03-23 15:40:58 +01:00
|
|
|
|
2017-03-23 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* sol-thread.c (sol_thread_store_registers): Remove regcache calls.
|
|
|
|
|
|
2017-03-23 15:11:04 +01:00
|
|
|
|
2017-03-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_process_record_test): Declare.
|
|
|
|
|
(_initialize_aarch64_tdep): Register it.
|
|
|
|
|
(aarch64_record_load_store): Handle PRFM instruction.
|
|
|
|
|
(aarch64_process_record_test): New function.
|
|
|
|
|
|
2017-03-23 15:11:04 +01:00
|
|
|
|
2017-03-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_record_load_store): Fix code
|
|
|
|
|
indentation.
|
|
|
|
|
|
2017-03-23 15:11:04 +01:00
|
|
|
|
2017-03-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c: Remove AARCH64_RECORD_FAILURE.
|
|
|
|
|
|
2017-03-23 12:22:11 +01:00
|
|
|
|
2017-03-23 Philipp Rudo <prudo@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
python/python.c (do_start_initialization): Fix memory leak.
|
|
|
|
|
|
Remove lwp -> pid conversion in linux_nat_xfer_partial
The linux_nat_xfer_partial does a conversion of inferior_ptid: if it's
an LWP (ptid::lwp != 0), it builds a new ptid with the lwp as
the pid and assigns that temporarily to inferior_ptid. For example, if
inferior_ptid is:
{ .pid = 1234, .lwp = 1235 }
it will assign this to inferior_ptid for the duration of the call:
{ .pid = 1235, .lwp = 0 }
Instead of doing this, this patch teaches the inf-ptrace implementation
of xfer_partial to deal with ptids representing lwps by using
get_ptrace_pid.
Also, in linux_proc_xfer_spu and linux_proc_xfer_partial, we use ptid_get_lwp
instead of ptid_get_pid. While not strictly necessary, since the content of
/proc/<pid> and /proc/<lwp> should be the same, it's a bit safer, because:
- some files under /proc/<pid>/ may not work if the <pid> thread is
running, just like ptrace requires a stopped thread. The current
thread's lwp id is more likely to be in the necessary state (stopped).
- if the leader (<pid>) had exited and is thus now zombie, then several
files under "/proc/<pid>" won't work, while they will if you use
"/proc/<lwp>".
The testsuite found no regression on native amd64 linux.
gdb/ChangeLog:
* inf-ptrace.c (inf_ptrace_xfer_partial): Get pid from ptid
using get_ptrace_pid.
* linux-nat.c (linux_nat_xfer_partial): Don't set/restore
inferior_ptid.
(linux_proc_xfer_partial, linux_proc_xfer_spu): Use lwp of
inferior_ptid instead of pid.
2017-03-22 15:35:07 +01:00
|
|
|
|
2017-03-22 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_xfer_partial): Get pid from ptid
|
|
|
|
|
using get_ptrace_pid.
|
|
|
|
|
* linux-nat.c (linux_nat_xfer_partial): Don't set/restore
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
(linux_proc_xfer_partial, linux_proc_xfer_spu): Use lwp of
|
|
|
|
|
inferior_ptid instead of pid.
|
|
|
|
|
|
2017-03-22 13:35:31 +01:00
|
|
|
|
2017-03-22 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c: Wrap locally used classes in anonymous
|
|
|
|
|
namespace.
|
|
|
|
|
* arm-tdep.c: Likewise.
|
|
|
|
|
* linespec.c: Likewise.
|
|
|
|
|
* ui-out.c: Likewise.
|
|
|
|
|
|
2017-03-22 12:19:44 +01:00
|
|
|
|
2017-03-22 Jonah Graham <jonah@kichwacoders.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/19637
|
|
|
|
|
* python/lib/gdb/printer/bound_registers.py: Import sys.
|
|
|
|
|
|
2017-03-21 16:35:54 +01:00
|
|
|
|
2017-03-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (do_windows_fetch_inferior_registers): Add
|
|
|
|
|
windows_thread_info parameter and use it instead of
|
|
|
|
|
current_thread.
|
|
|
|
|
(windows_fetch_inferior_registers): Don't set current_thread,
|
|
|
|
|
pass the thread to do_windows_fetch_inferior_registers. Use
|
|
|
|
|
ptid from regcache instead of inferior_ptid.
|
|
|
|
|
(do_windows_store_inferior_registers): Add windows_thread_info
|
|
|
|
|
parameter and use it instead of current_thread.
|
|
|
|
|
(windows_store_inferior_registers): Don't set current_thread,
|
|
|
|
|
pass the thread to do_windows_store_inferior_registers. Use
|
|
|
|
|
ptid from regcache instead of inferior_ptid.
|
|
|
|
|
|
2017-03-21 16:35:42 +01:00
|
|
|
|
2017-03-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ser-mingw.c (ser_windows_raw): Remove reference to
|
|
|
|
|
struct serial::current_timeout.
|
|
|
|
|
|
2017-03-21 12:39:33 +01:00
|
|
|
|
2017-03-21 Ivo Raisr <ivo.raisr@oracle.com>
|
|
|
|
|
|
|
|
|
|
PR tdep/20928
|
|
|
|
|
* gdb/sparc-tdep.h (gdbarch_tdep) <sparc64_ccr_type>: New field.
|
|
|
|
|
* gdb/sparc64-tdep.c (sparc64_ccr_type): New function.
|
|
|
|
|
(sparc64_fsr_type): Fix %fsr decoding.
|
|
|
|
|
|
2017-03-21 08:19:59 +01:00
|
|
|
|
2017-03-21 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* python/py-record-btrace.c (btpy_insn_data): Change return type
|
|
|
|
|
for Python 2.
|
|
|
|
|
|
2017-03-20 23:23:47 +01:00
|
|
|
|
2017-03-20 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* spu-linux-nat.c (spu_fetch_inferior_registers,
|
|
|
|
|
spu_store_inferior_registers): Use ptid from regcache, set and
|
|
|
|
|
restore inferior_ptid.
|
|
|
|
|
* spu-multiarch.c (spu_fetch_registers, spu_store_registers):
|
|
|
|
|
Likewise.
|
|
|
|
|
|
Use ptid from regcache in almost all remaining nat files
This patch contains almost all of the remaining changes needed to make
to_fetch_registers/to_store_registers/to_prepare_to_store independent of
inferior_ptid. It contains only some "trivial" changes, the more
complicated ones are in separate patches.
gdb/ChangeLog:
* i386-linux-nat.c (fetch_register, store_register,
i386_linux_fetch_inferior_registers,
i386_linux_store_inferior_registers): Use ptid from regcache.
* ia64-linux-nat.c (ia64_linux_fetch_register,
ia64_linux_store_register): Likewise.
* inf-ptrace.c (inf_ptrace_fetch_register,
inf_ptrace_store_register): Likewise.
* m32r-linux-nat.c (m32r_linux_fetch_inferior_registers,
m32r_linux_store_inferior_registers): Likewise.
* m68k-bsd-nat.c (m68kbsd_fetch_inferior_registers,
m68kbsd_store_inferior_registers): Likewise.
* m68k-linux-nat.c (fetch_register, store_register,
m68k_linux_fetch_inferior_registers,
m68k_linux_store_inferior_registers): Likewise.
* m88k-bsd-nat.c (m88kbsd_fetch_inferior_registers,
m88kbsd_store_inferior_registers): Likewise.
* mips-fbsd-nat.c (mips_fbsd_fetch_inferior_registers,
mips_fbsd_store_inferior_registers): Likewise.
* mips-linux-nat.c (mips64_linux_regsets_fetch_registers,
mips64_linux_regsets_store_registers): Likewise.
* mips-nbsd-nat.c (mipsnbsd_fetch_inferior_registers,
mipsnbsd_store_inferior_registers): Likewise.
* mips-obsd-nat.c (mips64obsd_fetch_inferior_registers,
mips64obsd_store_inferior_registers): Likewise.
* nto-procfs.c (procfs_fetch_registers, procfs_store_registers):
Likewise.
* ppc-fbsd-nat.c (ppcfbsd_fetch_inferior_registers,
ppcfbsd_store_inferior_registers): Likewise.
* ppc-linux-nat.c (ppc_linux_fetch_inferior_registers,
ppc_linux_store_inferior_registers): Likewise.
* ppc-nbsd-nat.c (ppcnbsd_fetch_inferior_registers,
ppcnbsd_store_inferior_registers): Likewise.
* ppc-obsd-nat.c (ppcobsd_fetch_registers,
ppcobsd_store_registers): Likewise.
* procfs.c (procfs_fetch_registers, procfs_store_registers):
Likewise.
* ravenscar-thread.c (ravenscar_fetch_registers,
ravenscar_store_registers, ravenscar_prepare_to_store):
Likewise.
* record-btrace.c (record_btrace_fetch_registers,
record_btrace_store_registers, record_btrace_prepare_to_store):
Likewise.
* remote-sim.c (gdbsim_fetch_register, gdbsim_store_register):
Lookup inferior using ptid from regcache, instead of
current_inferior.
* remote.c (remote_fetch_registers, remote_store_registers): Use
ptid from regcache.
* rs6000-nat.c (fetch_register, store_register): Likewise.
* s390-linux-nat.c (s390_linux_fetch_inferior_registers,
s390_linux_store_inferior_registers): Likewise.
* sh-nbsd-nat.c (shnbsd_fetch_inferior_registers,
shnbsd_store_inferior_registers): Likewise.
* sol-thread.c (sol_thread_fetch_registers,
sol_thread_store_registers): Likewise.
* sparc-nat.c (sparc_fetch_inferior_registers,
sparc_store_inferior_registers): Likewise.
* tilegx-linux-nat.c (fetch_inferior_registers,
store_inferior_registers): Likewise.
* vax-bsd-nat.c (vaxbsd_fetch_inferior_registers,
vaxbsd_store_inferior_registers): Likewise.
* xtensa-linux-nat.c (fetch_gregs, store_gregs, fetch_xtregs,
store_xtregs): Likewise.
2017-03-20 22:37:36 +01:00
|
|
|
|
2017-03-20 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* i386-linux-nat.c (fetch_register, store_register,
|
|
|
|
|
i386_linux_fetch_inferior_registers,
|
|
|
|
|
i386_linux_store_inferior_registers): Use ptid from regcache.
|
|
|
|
|
* ia64-linux-nat.c (ia64_linux_fetch_register,
|
|
|
|
|
ia64_linux_store_register): Likewise.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_fetch_register,
|
|
|
|
|
inf_ptrace_store_register): Likewise.
|
|
|
|
|
* m32r-linux-nat.c (m32r_linux_fetch_inferior_registers,
|
|
|
|
|
m32r_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* m68k-bsd-nat.c (m68kbsd_fetch_inferior_registers,
|
|
|
|
|
m68kbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* m68k-linux-nat.c (fetch_register, store_register,
|
|
|
|
|
m68k_linux_fetch_inferior_registers,
|
|
|
|
|
m68k_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* m88k-bsd-nat.c (m88kbsd_fetch_inferior_registers,
|
|
|
|
|
m88kbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* mips-fbsd-nat.c (mips_fbsd_fetch_inferior_registers,
|
|
|
|
|
mips_fbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* mips-linux-nat.c (mips64_linux_regsets_fetch_registers,
|
|
|
|
|
mips64_linux_regsets_store_registers): Likewise.
|
|
|
|
|
* mips-nbsd-nat.c (mipsnbsd_fetch_inferior_registers,
|
|
|
|
|
mipsnbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* mips-obsd-nat.c (mips64obsd_fetch_inferior_registers,
|
|
|
|
|
mips64obsd_store_inferior_registers): Likewise.
|
|
|
|
|
* nto-procfs.c (procfs_fetch_registers, procfs_store_registers):
|
|
|
|
|
Likewise.
|
|
|
|
|
* ppc-fbsd-nat.c (ppcfbsd_fetch_inferior_registers,
|
|
|
|
|
ppcfbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* ppc-linux-nat.c (ppc_linux_fetch_inferior_registers,
|
|
|
|
|
ppc_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* ppc-nbsd-nat.c (ppcnbsd_fetch_inferior_registers,
|
|
|
|
|
ppcnbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* ppc-obsd-nat.c (ppcobsd_fetch_registers,
|
|
|
|
|
ppcobsd_store_registers): Likewise.
|
|
|
|
|
* procfs.c (procfs_fetch_registers, procfs_store_registers):
|
|
|
|
|
Likewise.
|
|
|
|
|
* ravenscar-thread.c (ravenscar_fetch_registers,
|
|
|
|
|
ravenscar_store_registers, ravenscar_prepare_to_store):
|
|
|
|
|
Likewise.
|
|
|
|
|
* record-btrace.c (record_btrace_fetch_registers,
|
|
|
|
|
record_btrace_store_registers, record_btrace_prepare_to_store):
|
|
|
|
|
Likewise.
|
|
|
|
|
* remote-sim.c (gdbsim_fetch_register, gdbsim_store_register):
|
|
|
|
|
Lookup inferior using ptid from regcache, instead of
|
|
|
|
|
current_inferior.
|
|
|
|
|
* remote.c (remote_fetch_registers, remote_store_registers): Use
|
|
|
|
|
ptid from regcache.
|
|
|
|
|
* rs6000-nat.c (fetch_register, store_register): Likewise.
|
|
|
|
|
* s390-linux-nat.c (s390_linux_fetch_inferior_registers,
|
|
|
|
|
s390_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* sh-nbsd-nat.c (shnbsd_fetch_inferior_registers,
|
|
|
|
|
shnbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* sol-thread.c (sol_thread_fetch_registers,
|
|
|
|
|
sol_thread_store_registers): Likewise.
|
|
|
|
|
* sparc-nat.c (sparc_fetch_inferior_registers,
|
|
|
|
|
sparc_store_inferior_registers): Likewise.
|
|
|
|
|
* tilegx-linux-nat.c (fetch_inferior_registers,
|
|
|
|
|
store_inferior_registers): Likewise.
|
|
|
|
|
* vax-bsd-nat.c (vaxbsd_fetch_inferior_registers,
|
|
|
|
|
vaxbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* xtensa-linux-nat.c (fetch_gregs, store_gregs, fetch_xtregs,
|
|
|
|
|
store_xtregs): Likewise.
|
|
|
|
|
|
2017-03-20 21:47:59 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* NEWS: Mention support for rvalue references in GDB and python.
|
|
|
|
|
* doc/gdb.texinfo (C Plus Plus Expressions): Mention that GDB
|
|
|
|
|
supports both lvalue and rvalue references.
|
|
|
|
|
|
2017-03-20 21:47:57 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* gdbtypes.c (rank_one_type): Implement overloading
|
|
|
|
|
resolution rules regarding rvalue references.
|
|
|
|
|
|
Convert lvalue reference type check to general reference type check
In almost all contexts (except for overload resolution rules and expression
semantics), lvalue and rvalue references are equivalent. That means that in all
but these cases we can replace a TYPE_CODE_REF check to a TYPE_IS_REFERENCE
check and, for switch statements, add a case label for a rvalue reference type
next to a case label for an lvalue reference type. This patch does exactly
that.
gdb/ChangeLog
PR gdb/14441
* aarch64-tdep.c (aarch64_type_align)
(aarch64_extract_return_value, aarch64_store_return_value): Change
lvalue reference type checks to general reference type checks.
* amd64-tdep.c (amd64_classify): Likewise.
* amd64-windows-tdep.c (amd64_windows_passed_by_integer_register):
Likewise.
* arm-tdep.c (arm_type_align, arm_extract_return_value)
(arm_store_return_value): Likewise.
* ax-gdb.c (gen_fetch, gen_cast): Likewise.
* c-typeprint.c (c_print_type): Likewise.
* c-varobj.c (adjust_value_for_child_access, c_value_of_variable)
(cplus_number_of_children, cplus_describe_child): Likewise.
* compile/compile-c-symbols.c (generate_vla_size): Likewise.
* completer.c (expression_completer): Likewise.
* cp-support.c (make_symbol_overload_list_adl_namespace):
Likewise.
* darwin-nat-info.c (info_mach_region_command): Likewise.
* dwarf2loc.c (entry_data_value_coerce_ref)
(value_of_dwarf_reg_entry): Likewise.
* eval.c (ptrmath_type_p, evaluate_subexp_standard)
(evaluate_subexp_for_address, evaluate_subexp_for_sizeof):
Likewise.
* findvar.c (extract_typed_address, store_typed_address):
Likewise.
* gdbtypes.c (rank_one_type): Likewise.
* hppa-tdep.c (hppa64_integral_or_pointer_p): Likewise.
* infcall.c (value_arg_coerce): Likewise.
* language.c (pointer_type): Likewise.
* m32c-tdep.c (m32c_reg_arg_type, m32c_m16c_address_to_pointer):
Likewise.
* m88k-tdep.c (m88k_integral_or_pointer_p): Likewise.
* mn10300-tdep.c (mn10300_type_align): Likewise.
* msp430-tdep.c (msp430_push_dummy_call): Likewise.
* ppc-sysv-tdep.c (do_ppc_sysv_return_value)
(ppc64_sysv_abi_push_param, ppc64_sysv_abi_return_value):
Likewise.
* printcmd.c (print_formatted, x_command): Likewise.
* python/py-type.c (typy_get_composite, typy_template_argument):
Likewise.
* python/py-value.c (valpy_referenced_value)
(valpy_get_dynamic_type, value_has_field): Likewise.
* s390-linux-tdep.c (s390_function_arg_integer): Likewise.
* sparc-tdep.c (sparc_integral_or_pointer_p): Likewise.
* sparc64-tdep.c (sparc64_integral_or_pointer_p): Likewise.
* spu-tdep.c (spu_scalar_value_p): Likewise.
* symtab.c (lookup_symbol_aux): Likewise.
* typeprint.c (whatis_exp, print_type_scalar): Likewise.
* valarith.c (binop_types_user_defined_p, unop_user_defined_p):
Likewise.
* valops.c (value_cast_pointers, value_cast)
(value_reinterpret_cast, value_dynamic_cast, value_addr, typecmp)
(value_struct_elt, value_struct_elt_bitpos)
(value_find_oload_method_list, find_overload_match)
(value_rtti_indirect_type): Likewise.
* valprint.c (val_print_scalar_type_p, generic_val_print):
Likewise.
* value.c (value_actual_type, value_as_address, unpack_long)
(pack_long, pack_unsigned_long, coerce_ref_if_computed)
(coerce_ref): Likewise.
* varobj.c (varobj_get_value_type): Likewise.
2017-03-20 21:47:54 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* aarch64-tdep.c (aarch64_type_align)
|
|
|
|
|
(aarch64_extract_return_value, aarch64_store_return_value): Change
|
|
|
|
|
lvalue reference type checks to general reference type checks.
|
|
|
|
|
* amd64-tdep.c (amd64_classify): Likewise.
|
|
|
|
|
* amd64-windows-tdep.c (amd64_windows_passed_by_integer_register):
|
|
|
|
|
Likewise.
|
|
|
|
|
* arm-tdep.c (arm_type_align, arm_extract_return_value)
|
|
|
|
|
(arm_store_return_value): Likewise.
|
|
|
|
|
* ax-gdb.c (gen_fetch, gen_cast): Likewise.
|
|
|
|
|
* c-typeprint.c (c_print_type): Likewise.
|
|
|
|
|
* c-varobj.c (adjust_value_for_child_access, c_value_of_variable)
|
|
|
|
|
(cplus_number_of_children, cplus_describe_child): Likewise.
|
|
|
|
|
* compile/compile-c-symbols.c (generate_vla_size): Likewise.
|
|
|
|
|
* completer.c (expression_completer): Likewise.
|
|
|
|
|
* cp-support.c (make_symbol_overload_list_adl_namespace):
|
|
|
|
|
Likewise.
|
|
|
|
|
* darwin-nat-info.c (info_mach_region_command): Likewise.
|
|
|
|
|
* dwarf2loc.c (entry_data_value_coerce_ref)
|
|
|
|
|
(value_of_dwarf_reg_entry): Likewise.
|
|
|
|
|
* eval.c (ptrmath_type_p, evaluate_subexp_standard)
|
|
|
|
|
(evaluate_subexp_for_address, evaluate_subexp_for_sizeof):
|
|
|
|
|
Likewise.
|
|
|
|
|
* findvar.c (extract_typed_address, store_typed_address):
|
|
|
|
|
Likewise.
|
|
|
|
|
* gdbtypes.c (rank_one_type): Likewise.
|
|
|
|
|
* hppa-tdep.c (hppa64_integral_or_pointer_p): Likewise.
|
|
|
|
|
* infcall.c (value_arg_coerce): Likewise.
|
|
|
|
|
* language.c (pointer_type): Likewise.
|
|
|
|
|
* m32c-tdep.c (m32c_reg_arg_type, m32c_m16c_address_to_pointer):
|
|
|
|
|
Likewise.
|
|
|
|
|
* m88k-tdep.c (m88k_integral_or_pointer_p): Likewise.
|
|
|
|
|
* mn10300-tdep.c (mn10300_type_align): Likewise.
|
|
|
|
|
* msp430-tdep.c (msp430_push_dummy_call): Likewise.
|
|
|
|
|
* ppc-sysv-tdep.c (do_ppc_sysv_return_value)
|
|
|
|
|
(ppc64_sysv_abi_push_param, ppc64_sysv_abi_return_value):
|
|
|
|
|
Likewise.
|
|
|
|
|
* printcmd.c (print_formatted, x_command): Likewise.
|
|
|
|
|
* python/py-type.c (typy_get_composite, typy_template_argument):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-value.c (valpy_referenced_value)
|
|
|
|
|
(valpy_get_dynamic_type, value_has_field): Likewise.
|
|
|
|
|
* s390-linux-tdep.c (s390_function_arg_integer): Likewise.
|
|
|
|
|
* sparc-tdep.c (sparc_integral_or_pointer_p): Likewise.
|
|
|
|
|
* sparc64-tdep.c (sparc64_integral_or_pointer_p): Likewise.
|
|
|
|
|
* spu-tdep.c (spu_scalar_value_p): Likewise.
|
|
|
|
|
* symtab.c (lookup_symbol_aux): Likewise.
|
|
|
|
|
* typeprint.c (whatis_exp, print_type_scalar): Likewise.
|
|
|
|
|
* valarith.c (binop_types_user_defined_p, unop_user_defined_p):
|
|
|
|
|
Likewise.
|
|
|
|
|
* valops.c (value_cast_pointers, value_cast)
|
|
|
|
|
(value_reinterpret_cast, value_dynamic_cast, value_addr, typecmp)
|
|
|
|
|
(value_struct_elt, value_struct_elt_bitpos)
|
|
|
|
|
(value_find_oload_method_list, find_overload_match)
|
|
|
|
|
(value_rtti_indirect_type): Likewise.
|
|
|
|
|
* valprint.c (val_print_scalar_type_p, generic_val_print):
|
|
|
|
|
Likewise.
|
|
|
|
|
* value.c (value_actual_type, value_as_address, unpack_long)
|
|
|
|
|
(pack_long, pack_unsigned_long, coerce_ref_if_computed)
|
|
|
|
|
(coerce_ref): Likewise.
|
|
|
|
|
* varobj.c (varobj_get_value_type): Likewise.
|
|
|
|
|
|
2017-03-20 21:47:52 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* doc/python.texi (Types in Python): Add TYPE_CODE_RVALUE_REF to
|
|
|
|
|
table of constants.
|
|
|
|
|
* python/lib/gdb/command/explore.py: Support exploring values
|
|
|
|
|
of rvalue reference types.
|
|
|
|
|
* python/lib/gdb/types.py: Implement get_basic_type() for
|
|
|
|
|
rvalue reference types.
|
|
|
|
|
* python/py-type.c (pyty_codes) <TYPE_CODE_RVALUE_REF>: New
|
|
|
|
|
constant.
|
|
|
|
|
* python/py-value.c (valpy_getitem): Add an rvalue reference
|
|
|
|
|
check.
|
|
|
|
|
(valpy_reference_value): Add new parameter "refcode".
|
|
|
|
|
(valpy_lvalue_reference_value, valpy_rvalue_reference_value):
|
|
|
|
|
New wrappers for valpy_reference_value().
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_xmethod_result_type)
|
|
|
|
|
(gdbpy_invoke_xmethod): Likewise.
|
|
|
|
|
|
2017-03-20 21:47:50 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* dwarf2read.c (process_die, read_type_die_1): Handle the
|
|
|
|
|
DW_TAG_rvalue_reference_type DIE.
|
|
|
|
|
(read_tag_reference_type): Add new parameter "refcode".
|
|
|
|
|
|
2017-03-20 21:47:48 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* c-typeprint.c (c_print_type, c_type_print_varspec_prefix)
|
|
|
|
|
(c_type_print_modifier, c_type_print_varspec_suffix)
|
|
|
|
|
(c_type_print_base): Support printing rvalue reference types.
|
|
|
|
|
* c-valprint.c (c_val_print, c_value_print): Support printing
|
|
|
|
|
rvalue reference values.
|
|
|
|
|
|
2017-03-20 21:47:46 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* cp-name-parser.y (ptr_operator): Handle the '&&' token in
|
|
|
|
|
typename.
|
|
|
|
|
* cp-support.c (replace_typedefs): Handle
|
|
|
|
|
DEMANGLE_COMPONENT_RVALUE_REFERENCE.
|
|
|
|
|
* python/py-type.c (typy_lookup_type): Likewise.
|
|
|
|
|
|
2017-03-20 21:47:43 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* c-exp.y (ptr_operator): Handle the '&&' token in the typename.
|
|
|
|
|
* parse.c (insert_type): Change assert statement.
|
|
|
|
|
(follow_types): Handle rvalue reference types.
|
|
|
|
|
* parser-defs.h (enum type_pieces) <tp_rvalue_reference>: New
|
|
|
|
|
constant.
|
|
|
|
|
|
2017-03-20 21:47:41 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* ada-lang.c (ada_evaluate_subexp): Adhere to the new
|
|
|
|
|
value_ref() interface.
|
|
|
|
|
* c-valprint.c (c_value_print): Likewise.
|
|
|
|
|
* infcall.c (value_arg_coerce): Likewise.
|
|
|
|
|
* python/py-value.c (valpy_reference_value): Likewise.
|
|
|
|
|
* valops.c (value_cast, value_reinterpret_cast)
|
|
|
|
|
(value_dynamic_cast, typecmp): Likewise.
|
|
|
|
|
(value_ref): Parameterize by kind of return value reference type.
|
|
|
|
|
* value.h (value_ref): Add new parameter "refcode".
|
|
|
|
|
|
2017-03-20 21:47:39 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* dwarf2read.c (read_tag_reference_type): Use
|
|
|
|
|
lookup_lvalue_reference_type() instead of lookup_reference_type().
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Likewise.
|
|
|
|
|
* f-exp.y: Likewise.
|
|
|
|
|
* gdbtypes.c (make_reference_type, lookup_reference_type):
|
|
|
|
|
Generalize with rvalue reference types.
|
|
|
|
|
(lookup_lvalue_reference_type, lookup_rvalue_reference_type): New
|
|
|
|
|
convenience wrappers for lookup_reference_type().
|
|
|
|
|
* gdbtypes.h (make_reference_type, lookup_reference_type): Add a
|
|
|
|
|
reference kind parameter.
|
|
|
|
|
(lookup_lvalue_reference_type, lookup_rvalue_reference_type): Add
|
|
|
|
|
wrappers for lookup_reference_type().
|
|
|
|
|
* guile/scm-type.c (gdbscm_type_reference): Use
|
|
|
|
|
lookup_lvalue_reference_type() instead of lookup_reference_type().
|
|
|
|
|
* guile/scm-value.c (gdbscm_value_dynamic_type): Likewise.
|
|
|
|
|
* parse.c (follow_types): Likewise.
|
|
|
|
|
* python/py-type.c (typy_reference, typy_lookup_type): Likewise.
|
|
|
|
|
* python/py-value.c (valpy_get_dynamic_type, valpy_getitem):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_xmethod_result_type)
|
|
|
|
|
(gdbpy_invoke_xmethod): Likewise.
|
|
|
|
|
* stabsread.c: Provide extra argument to make_reference_type()
|
|
|
|
|
call.
|
|
|
|
|
* valops.c (value_ref, value_rtti_indirect_type): Use
|
|
|
|
|
lookup_lvalue_reference_type() instead of lookup_reference_type().
|
|
|
|
|
|
2017-03-20 21:47:30 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* gdbtypes.h (enum type_code) <TYPE_CODE_RVALUE_REF>: New constant.
|
|
|
|
|
(TYPE_IS_REFERENCE): New macro.
|
|
|
|
|
(struct type): Add rvalue_reference_type field.
|
|
|
|
|
(TYPE_RVALUE_REFERENCE_TYPE): New macro.
|
|
|
|
|
|
2017-03-20 19:57:51 +01:00
|
|
|
|
2017-03-20 Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Add an entry about new '-file-list-shared-libraries' command.
|
|
|
|
|
* mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries):
|
|
|
|
|
New function definition.
|
|
|
|
|
* mi/mi-cmds.c (mi_cmds): Add -file-list-shared-libraries command.
|
|
|
|
|
* mi/mi-cmds.h (mi_cmd_file_list_shared_libraries):
|
|
|
|
|
New function declaration.
|
|
|
|
|
* mi/mi-interp.c (mi_output_solib_attribs): New Function.
|
|
|
|
|
* mi/mi-interp.h: New file.
|
|
|
|
|
* solib.c (info_sharedlibrary_command): Replace for loop with
|
|
|
|
|
ALL_SO_LIBS macro
|
|
|
|
|
* solib.h (update_solib_list): New function declaration.
|
|
|
|
|
(so_list_head): Move macro.
|
|
|
|
|
* solist.h (ALL_SO_LIBS): New macro.
|
|
|
|
|
|
2017-03-20 19:57:32 +01:00
|
|
|
|
2017-03-20 Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* infcmd.c (post_create_inferior): Remove unused argument in
|
|
|
|
|
call to solib_add.
|
|
|
|
|
* remote.c (remote_start_remote): Likewise.
|
|
|
|
|
* solib-frv.c (frv_fetch_objfile_link_map): Likewise.
|
|
|
|
|
* solib-svr4.c: (svr4_fetch_objfile_link_map): Likewise.
|
|
|
|
|
(enable_break): Likewise.
|
|
|
|
|
* solib.c (update_solib_list): Remove unused target argument
|
|
|
|
|
and its documentation.
|
|
|
|
|
(solib_add): Remove unused target argument. Remove unused
|
|
|
|
|
argument in call to update_solib_list.
|
|
|
|
|
(info_sharedlibrary_command): Remove unused argument in call
|
|
|
|
|
to update_solib_list.
|
|
|
|
|
(sharedlibrary_command): Remove unused argument in call to
|
|
|
|
|
solib_add.
|
|
|
|
|
(handle_solib_event): Likewise.
|
|
|
|
|
(reload_shared_libraries): Likewise.
|
|
|
|
|
* solib.h (solib_add): Remove unused target argument.
|
|
|
|
|
|
2017-03-20 17:30:01 +01:00
|
|
|
|
2017-03-20 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (is_rsi, is_rie): Remove functions.
|
|
|
|
|
(s390_displaced_step_fixup): Cover relative branches with the
|
|
|
|
|
default fixup handling. This fixes lack of support for some
|
|
|
|
|
relative branch instructions.
|
|
|
|
|
|
2017-03-17 18:55:57 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* i386-gnu-nat.c (gnu_fetch_registers, gnu_store_registers): Use
|
|
|
|
|
ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:56 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* i386-darwin-nat.c (i386_darwin_fetch_inferior_registers,
|
|
|
|
|
i386_darwin_store_inferior_registers): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:55 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* i386-bsd-nat.c (i386bsd_fetch_inferior_registers,
|
|
|
|
|
i386bsd_store_inferior_registers): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:55 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* hppa-obsd-nat.c (hppaobsd_fetch_registers,
|
|
|
|
|
hppaobsd_store_registers): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:54 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* hppa-nbsd-nat.c (hppanbsd_fetch_registers,
|
|
|
|
|
hppanbsd_store_registers): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:53 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* hppa-linux-nat.c (fetch_register, store_register): Use ptid
|
|
|
|
|
from regcache. Use get_ptrace_pid.
|
|
|
|
|
|
2017-03-17 18:55:52 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* corelow.c (get_core_register_section): Use ptid from regcache,
|
|
|
|
|
update doc.
|
|
|
|
|
|
2017-03-17 18:55:51 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_fetch_registers,
|
|
|
|
|
bsd_uthread_store_registers): Use ptid from regcache, set and
|
|
|
|
|
restore inferior_ptid.
|
|
|
|
|
|
2017-03-17 18:55:50 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* arm-nbsd-nat.c (fetch_register, fetch_regs, fetch_fp_register,
|
|
|
|
|
fetch_fp_regs, store_register, store_regs, store_fp_register,
|
|
|
|
|
store_fp_regs): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:49 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (fetch_fpregs, store_fpregs, fetch_regs,
|
|
|
|
|
store_regs, fetch_wmmx_regs, store_wmmx_regs, fetch_vfp_regs,
|
|
|
|
|
store_vfp_regs): Use ptid from regcache.
|
|
|
|
|
|
PR remote/21188: Fix remote serial timeout
As Gareth McMullin <gareth@blacksphere.co.nz> reports at
<https://sourceware.org/ml/gdb-patches/2017-02/msg00560.html>, the
timeout mechanism in ser-unix.c was broken by commit 048094acc
("target remote: Don't rely on immediate_quit (introduce quit
handlers)").
Instead of applying a local fix, and since we now finally always use
interrupt_select [1], let's get rid of hardwire_readchar entirely, and
use ser_base_readchar instead, which has similar timeout handling,
except for the bug.
Smoke tested with:
$ socat -d -d pty,raw,echo=0 pty,raw,echo=0
2017/03/14 14:08:13 socat[4994] N PTY is /dev/pts/14
2017/03/14 14:08:13 socat[4994] N PTY is /dev/pts/15
2017/03/14 14:08:13 socat[4994] N starting data transfer loop with FDs [3,3] and [5,5]
$ gdbserver /dev/pts/14 PROG
$ gdb PROG -ex "tar rem /dev/pts/15"
and then a few continues/ctrl-c's, plus killing gdbserver and socat.
[1] - See FIXME comments being removed.
gdb/ChangeLog:
2017-03-17 Pedro Alves <palves@redhat.com>
PR remote/21188
* ser-base.c (ser_base_wait_for): Add comment.
(do_ser_base_readchar): Improve comment based on the ser-unix.c's
version.
* ser-unix.c (hardwire_raw): Remove reference to
scb->current_timeout.
(wait_for, do_hardwire_readchar, hardwire_readchar): Delete.
(hardwire_ops): Install ser_base_readchar instead of
hardwire_readchar.
* serial.h (struct serial) <current_timeout, timeout_remaining>:
Remove fields.
2017-03-17 17:08:12 +01:00
|
|
|
|
2017-03-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR remote/21188
|
|
|
|
|
* ser-base.c (ser_base_wait_for): Add comment.
|
|
|
|
|
(do_ser_base_readchar): Improve comment based on the ser-unix.c's
|
|
|
|
|
version.
|
|
|
|
|
* ser-unix.c (hardwire_raw): Remove reference to
|
|
|
|
|
scb->current_timeout.
|
|
|
|
|
(wait_for, do_hardwire_readchar, hardwire_readchar): Delete.
|
|
|
|
|
(hardwire_ops): Install ser_base_readchar instead of
|
|
|
|
|
hardwire_readchar.
|
|
|
|
|
* serial.h (struct serial) <current_timeout, timeout_remaining>:
|
|
|
|
|
Remove fields.
|
|
|
|
|
|
2017-03-17 15:57:44 +01:00
|
|
|
|
2017-03-17 Jonah Graham <jonah@kichwacoders.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/19637
|
|
|
|
|
* python/lib/gdb/printer/bound_registers.py: Add support for
|
|
|
|
|
Python 3.
|
|
|
|
|
|
2017-03-16 19:50:24 +01:00
|
|
|
|
2017-03-16 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (indirect_synthetic_pointer): Get data type of
|
|
|
|
|
pointed-to DIE and pass it to dwarf2_evaluate_loc_desc_full.
|
|
|
|
|
(dwarf2_evaluate_loc_desc_full): New parameter subobj_type; rename
|
|
|
|
|
byte_offset to subobj_byte_offset. Fix the handling of
|
|
|
|
|
DWARF_VALUE_STACK on big-endian targets when coming via an
|
|
|
|
|
implicit pointer.
|
|
|
|
|
(dwarf2_evaluate_loc_desc): Adjust call to
|
|
|
|
|
dwarf2_evaluate_loc_desc_full.
|
|
|
|
|
* dwarf2loc.h (dwarf2_fetch_die_type_sect_off): New declaration.
|
|
|
|
|
* dwarf2read.c (dwarf2_fetch_die_type_sect_off): New function.
|
|
|
|
|
|
2017-03-16 17:35:18 +01:00
|
|
|
|
2017-03-16 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (thumb_record_misc): Decode CBNZ, CBZ, REV16,
|
|
|
|
|
and REVSH instructions.
|
|
|
|
|
|
2017-03-16 17:35:18 +01:00
|
|
|
|
2017-03-16 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c [GDB_SELF_TEST]: include "selftests.h".
|
|
|
|
|
(arm_record_test): Declare.
|
|
|
|
|
(_initialize_arm_tdep) [GDB_SELF_TEST]: call register_self_test.
|
|
|
|
|
(thumb_record_ld_st_reg_offset): Rewrite the opcode matching to
|
|
|
|
|
align with the manual.
|
|
|
|
|
(thumb_record_misc): Adjust the code order to align with the
|
|
|
|
|
manual.
|
|
|
|
|
(thumb2_record_decode_insn_handler): Fix instruction matching.
|
|
|
|
|
(instruction_reader_thumb): New class.
|
|
|
|
|
(arm_record_test): New function.
|
|
|
|
|
|
2017-03-16 17:35:18 +01:00
|
|
|
|
2017-03-16 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (abstract_memory_reader): New class.
|
|
|
|
|
(instruction_reader): New class.
|
|
|
|
|
(extract_arm_insn): Add argument 'reader'. Callers updated.
|
|
|
|
|
(decode_insn): Likewise.
|
|
|
|
|
|
2017-03-15 23:35:13 +01:00
|
|
|
|
2017-03-16 Doug Evans <dje@google.com>
|
|
|
|
|
|
2017-03-15 23:44:45 +01:00
|
|
|
|
* guile/scm-lazy-string.c (lazy_string_smob): Clarify use of LENGTH
|
|
|
|
|
member. Change type of TYPE member to SCM. All uses updated.
|
|
|
|
|
(lsscm_make_lazy_string_smob): Add assert.
|
|
|
|
|
(lsscm_make_lazy_string): Flag bad length values.
|
|
|
|
|
(lsscm_elt_type): New function.
|
|
|
|
|
(gdbscm_lazy_string_to_value): Rewrite to use
|
|
|
|
|
lsscm_safe_lazy_string_to_value.
|
|
|
|
|
(lsscm_safe_lazy_string_to_value): Fix handling of TYPE_CODE_PTR.
|
|
|
|
|
* guile/scm-value.c (gdbscm_value_to_lazy_string): Flag bad length
|
|
|
|
|
values. Fix TYPE_CODE_PTR. Handle TYPE_CODE_ARRAY. Handle typedefs
|
|
|
|
|
in incoming type.
|
|
|
|
|
* guile/guile-internal.h (tyscm_scm_to_type): Declare.
|
|
|
|
|
* guile/scm-type.c (tyscm_scm_to_type): New function.
|
|
|
|
|
|
|
|
|
|
2017-03-15 Doug Evans <dje@google.com>
|
|
|
|
|
|
2017-03-15 23:35:13 +01:00
|
|
|
|
PR python/17728, python/18439, python/18779
|
|
|
|
|
* python/py-lazy-string.c (lazy_string_object): Clarify use of LENGTH
|
|
|
|
|
member. Change type of TYPE member to PyObject *. All uses updated.
|
|
|
|
|
(stpy_convert_to_value): Fix handling of TYPE_CODE_PTR.
|
|
|
|
|
(gdbpy_create_lazy_string_object): Flag bad length values.
|
|
|
|
|
Handle TYPE_CODE_ARRAY with possibly different user-provided length.
|
|
|
|
|
Handle typedefs in incoming type.
|
|
|
|
|
(stpy_lazy_string_elt_type): New function.
|
|
|
|
|
(gdbpy_extract_lazy_string): Call it.
|
|
|
|
|
* python/py-value.c (valpy_lazy_string): Flag bad length values.
|
|
|
|
|
Fix handling of TYPE_CODE_PTR. Handle TYPE_CODE_ARRAY. Handle
|
|
|
|
|
typedefs in incoming type.
|
|
|
|
|
|
2016-11-07 01:10:00 +01:00
|
|
|
|
2017-03-16 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* guile/guile-internal.h (tyscm_scm_to_type): Declare.
|
|
|
|
|
* guile/scm-type.c (tyscm_scm_to_type): New function.
|
|
|
|
|
|
2017-03-16 10:55:18 +01:00
|
|
|
|
2017-03-16 Jiong Wang <jiong.wang@arm.com>
|
|
|
|
|
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_peek_poke): Change the type to
|
|
|
|
|
"ULONGEST" for "skip".
|
|
|
|
|
|
inf-ptrace: Do not stop memory transfers after a single word
When inf_ptrace_xfer_partial performs a memory transfer via ptrace with
PT_READ_I, PT_WRITE_I (aka PTRACE_PEEKTEXT, PTRACE_POKETEXT), etc., then
it currently transfers at most one word. This behavior yields degraded
performance, particularly if the caller has significant preparation work
for each invocation. And indeed it has for writing, in
memory_xfer_partial in target.c, where all of the remaining data to be
transferred is copied to a temporary buffer each time, for breakpoint
shadow handling. Thus large writes have quadratic runtime and can take
hours.
Note: On GNU/Linux targets GDB usually does not use
inf_ptrace_xfer_partial for large memory transfers, but attempts a single
read/write from/to /proc/<pid>/mem instead. However, the kernel may
reject writes to /proc/<pid>/mem (such as kernels prior to 2.6.39), or
/proc may not be mounted. In both cases GDB falls back to the ptrace
mechanism.
This patch fixes the performance issue by attempting to fulfill the whole
transfer request in inf_ptrace_xfer_partial, using a loop around the
ptrace call.
gdb/ChangeLog:
PR gdb/21220
* inf-ptrace.c (inf_ptrace_xfer_partial): In "case
TARGET_OBJECT_MEMORY", extract the logic for ptrace peek/poke...
(inf_ptrace_peek_poke): ...here. New function. Now also loop
over ptrace peek/poke until end of buffer or error.
2017-03-14 19:20:46 +01:00
|
|
|
|
2017-03-14 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21220
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_xfer_partial): In "case
|
|
|
|
|
TARGET_OBJECT_MEMORY", extract the logic for ptrace peek/poke...
|
|
|
|
|
(inf_ptrace_peek_poke): ...here. New function. Now also loop
|
|
|
|
|
over ptrace peek/poke until end of buffer or error.
|
|
|
|
|
|
2017-03-14 15:25:39 +01:00
|
|
|
|
2017-03-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* parse.c (length_of_subexp): Make static.
|
|
|
|
|
* parser-defs.h (length_of_subexp): Remove.
|
|
|
|
|
|
2017-03-14 11:14:49 +01:00
|
|
|
|
2017-03-14 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_proc_xfer_partial): Handle write operations
|
|
|
|
|
as well.
|
|
|
|
|
|
2017-03-14 01:11:09 +01:00
|
|
|
|
2017-03-14 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-name-parser.y (cp_demangled_name_to_comp): Update comment.
|
|
|
|
|
(main): Use std::unique_ptr. Remove calls to
|
|
|
|
|
cp_demangled_name_parse_free.
|
|
|
|
|
|
2017-03-13 23:51:40 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* alpha-bsd-nat.c (alphabsd_fetch_inferior_registers,
|
|
|
|
|
alphabsd_store_inferior_registers): Use regcache->ptid instead
|
|
|
|
|
of inferior_ptid.
|
|
|
|
|
|
2017-03-13 23:51:40 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* aix-thread.c (aix_thread_fetch_registers,
|
|
|
|
|
aix_thread_store_registers): Use regcache->ptid instead of
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
|
2017-03-13 23:51:39 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (fetch_gregs_from_thread,
|
|
|
|
|
store_gregs_to_thread, fetch_fpregs_from_thread,
|
|
|
|
|
store_fpregs_to_thread): Use regcache->ptid instead of
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
|
2017-03-13 23:51:39 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers,
|
|
|
|
|
amd64_linux_fetch_inferior_registers): Use regcache->ptid
|
|
|
|
|
instead of inferior_ptid.
|
|
|
|
|
|
2017-03-13 23:51:38 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* target.c (target_fetch_registers, target_store_registers): Add
|
|
|
|
|
assert.
|
|
|
|
|
|
2017-03-13 23:51:38 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* regcache.h (regcache_get_ptid): New function.
|
|
|
|
|
* regcache.c (regcache_get_ptid): New function.
|
|
|
|
|
|
2017-03-13 19:26:47 +01:00
|
|
|
|
2017-03-13 Mark Wielaard <mark@klomp.org>
|
|
|
|
|
|
|
|
|
|
* cp-name-parser.y (make_empty): Initialize d_printing to zero.
|
|
|
|
|
|
2017-03-10 19:32:09 +01:00
|
|
|
|
2017-03-10 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR c++/8218
|
|
|
|
|
* c-typeprint.c (cp_type_print_method_args): Skip artificial arguments.
|
|
|
|
|
|
Fix PR18360 - internal error when using "interrupt -a"
If you do "interrupt -a" just while some thread is stepping over a
breakpoint, gdb trips on an internal error.
The test added by this patch manages to trigger this consistently by
spawning a few threads that are constantly tripping on a conditional
breakpoint whose condition always evaluates to false. With current
gdb, you get:
~~~
interrupt -a
.../src/gdb/inline-frame.c:343: internal-error: void skip_inline_frames(ptid_t): Assertion `find_inline_frame_state (ptid) == NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/interrupt-while-step-over.exp: displaced-stepping=on: iter=0: interrupt -a (GDB internal error)
[...]
.../src/gdb/inline-frame.c:343: internal-error: void skip_inline_frames(ptid_t): Assertion `find_inline_frame_state (ptid) == NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/interrupt-while-step-over.exp: displaced-stepping=off: iter=0: wait for stops (GDB internal error)
~~~
The assertion triggers because we're processing a stop for a thread
that had already stopped before and thus had already its inline-frame
state filled in.
Calling handle_inferior_event_1 directly within a
"thread_stop_requested" observer is something that I've wanted to get
rid of before, for being fragile. Nowadays, infrun is aware of
threads with pending events, so we can use that instead, and let the
normal fetch_inferior_event -> handle_inferior_event code path handle
the forced stop.
The change to finish_step_over is necessary because sometimes a thread
that was told to PTRACE_SINGLESTEP reports back a SIGSTOP instead of a
SIGTRAP (i.e., we tell it to single-step, and then interrupt it quick
enough that on the kernel side the thread dequeues the SIGTOP before
ever having had a chance of executing the instruction to be stepped).
SIGSTOP gets translated to a GDB_SIGNAL_0. And then finish_step_over
would miss calling clear_step_over_info, and thus miss restarting the
other threads (which in this case of threads with pending events,
means setting their "resumed" flag, so their pending events can be
consumed).
And now that we always restart threads in finish_step_over, we no
longer need to do that in handle_signal_stop.
Tested on x86_64 Fedora 23, native and gdbserver.
gdb/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR gdb/18360
* infrun.c (start_step_over, do_target_resume, resume)
(restart_threads): Assert we're not resuming a thread that is
meant to be stopped.
(infrun_thread_stop_requested_callback): Delete.
(infrun_thread_stop_requested): If the thread is internally
stopped, queue a pending stop event and clear the thread's
inline-frame state.
(handle_stop_requested): New function.
(handle_syscall_event, handle_inferior_event_1): Use
handle_stop_requested.
(handle_stop_requested): New function.
(handle_signal_stop): Set the thread's stop_signal here instead of
at caller.
(finish_step_over): Clear step over info unconditionally.
(handle_signal_stop): If the user had interrupted the event
thread, consider the stop a random signal.
(handle_signal_stop) <signal arrived while stepping over
breakpoint>: Don't restart threads here.
(stop_waiting): Don't clear step-over info here.
gdb/testsuite/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR gdb/18360
* gdb.threads/interrupt-while-step-over.c: New file.
* gdb.threads/interrupt-while-step-over.exp: New file.
2017-03-08 19:54:34 +01:00
|
|
|
|
2017-03-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18360
|
|
|
|
|
* infrun.c (start_step_over, do_target_resume, resume)
|
|
|
|
|
(restart_threads): Assert we're not resuming a thread that is
|
|
|
|
|
meant to be stopped.
|
|
|
|
|
(infrun_thread_stop_requested_callback): Delete.
|
|
|
|
|
(infrun_thread_stop_requested): If the thread is internally
|
|
|
|
|
stopped, queue a pending stop event and clear the thread's
|
|
|
|
|
inline-frame state.
|
|
|
|
|
(handle_stop_requested): New function.
|
|
|
|
|
(handle_syscall_event, handle_inferior_event_1): Use
|
|
|
|
|
handle_stop_requested.
|
|
|
|
|
(handle_stop_requested): New function.
|
|
|
|
|
(handle_signal_stop): Set the thread's stop_signal here instead of
|
|
|
|
|
at caller.
|
|
|
|
|
(finish_step_over): Clear step over info unconditionally.
|
|
|
|
|
(handle_signal_stop): If the user had interrupted the event
|
|
|
|
|
thread, consider the stop a random signal.
|
|
|
|
|
(handle_signal_stop) <signal arrived while stepping over
|
|
|
|
|
breakpoint>: Don't restart threads here.
|
|
|
|
|
(stop_waiting): Don't clear step-over info here.
|
|
|
|
|
|
2017-03-08 16:52:16 +01:00
|
|
|
|
2017-03-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR 21206
|
|
|
|
|
* common/gdb_unlinker.h (unlinker::unlinker): Attribute nonnull
|
|
|
|
|
goes to argument 2, not 1.
|
|
|
|
|
|
Fix PR 21218: GDB dumps core when escaping newline in multi-line command
With commit 3b12939dfc2399 ("Replace the sync_execution global with a
new enum prompt_state tristate"), GDB started aborting if you try
splitting an input line with a continuation char (backslash) while in
a multi-line command:
(gdb) commands
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>print \
(gdb) 1 # note "(gdb)" incorrectly printed here.
>end
readline: readline_callback_read_char() called with no handler!
$
That abort is actually a symptom of an old problem introduced when
gdb_readline_wrapper was rewritten to use asynchronous readline, back
in 2007. Note how the "(gdb)" prompt is printed above in the "(gdb)
1" line. Clearly it shouldn't be there, but it already was before the
commit mentioned above. Fixing that also fixes the readline abort
shown above.
The problem starts when command_line_input passes a NULL prompt to
gdb_readline_wrapper when it finds previous incomplete input due to a
backslash, trying to fetch more input without printing another ">"
secondary prompt. That itself should not be a problem, because
passing NULL to gdb_readline_wrapper has the same meaning as passing a
pointer to empty string, since gdb_readline_wrapper exposes the same
interface as 'readline(char *)'. However, gdb_readline_wrapper passes
the prompt argument directly to display_gdb_prompt, and for the
latter, a NULL prompt argument has a different meaning - it requests
printing the primary prompt.
Before commit 782a7b8ef9c096 (which rewrote gdb_readline_wrapper to
use asynchronous readline), GDB behaved like this:
(gdb) commands
[....]
>print \
1
>end
(gdb)
The above is what this commit restores GDB back to.
New test included.
gdb/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR cli/21218
* top.c (gdb_readline_wrapper): Avoid passing NULL to
display_gdb_prompt.
(command_line_input): Add comment.
gdb/testsuite/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
PR cli/21218
* gdb.base/commands.exp (backslash_in_multi_line_command_test):
New proc.
(top level): Call it.
2017-03-08 12:41:35 +01:00
|
|
|
|
2017-03-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR cli/21218
|
|
|
|
|
* top.c (gdb_readline_wrapper): Avoid passing NULL to
|
|
|
|
|
display_gdb_prompt.
|
|
|
|
|
(command_line_input): Add comment.
|
|
|
|
|
|
Fix PR tui/21216: TUI line breaks regression
Commit d7e747318f4d04 ("Eliminate make_cleanup_ui_file_delete / make
ui_file a class hierarchy") regressed the TUI's command window.
Newlines miss doing a "carriage return", resulting in output like:
~~~~~~~~~~~~~~~~~~
(gdb) helpList of classes of commands:
aliases -- Aliases of other commands
breakpoints -- Making program stop at certain points
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Before the commit mentioned above, the default ui_file->to_write
implementation had a hack that would defer into the ui_file->to_fputs
method. The TUI's ui_file did not implement the to_write method, so
all writes would end up going to the ncurses window via tui_file_fputs
-> tui_puts.
After the commit above, the hack is gone, but the TUI's ui_file still
does not implement the ui_file::write method. Since tui_file inherits
from stdio_file, writing to a tui_file ends up doing fwrite on the
FILE stream the TUI is "associated" with, via stdio_file::write,
instead of writing to the ncurses window.
The fix is to have tui_file override the "write" method.
New test included.
gdb/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR tui/21216
* tui/tui-file.c (tui_file::write): New.
* tui/tui-file.h (tui_file): Override "write".
* tui/tui-io.c (do_tui_putc, update_start_line): New functions,
factored out from ...
(tui_puts): ... here.
(tui_putc): Use them.
(tui_write): New function.
* tui/tui-io.h (tui_write): Declare.
gdb/testsuite/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR tui/21216
* gdb.tui/tui-nl-filtered-output.exp: New file.
2017-03-08 01:14:59 +01:00
|
|
|
|
2017-03-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR tui/21216
|
|
|
|
|
* tui/tui-file.c (tui_file::write): New.
|
|
|
|
|
* tui/tui-file.h (tui_file): Override "write".
|
|
|
|
|
* tui/tui-io.c (do_tui_putc, update_start_line): New functions,
|
|
|
|
|
factored out from ...
|
|
|
|
|
(tui_puts): ... here.
|
|
|
|
|
(tui_putc): Use them.
|
|
|
|
|
(tui_write): New function.
|
|
|
|
|
* tui/tui-io.h (tui_write): Declare.
|
|
|
|
|
|
2016-12-22 15:20:00 +01:00
|
|
|
|
2017-03-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Replace "environ.c" with
|
|
|
|
|
"common/environ.c".
|
|
|
|
|
(HFILES_NO_SRCDIR): Likewise, for "environ.h".
|
|
|
|
|
* environ.c: Include "common-defs.h" instead of "defs.h. Moved
|
|
|
|
|
to...
|
|
|
|
|
* common/environ.c: ... here.
|
|
|
|
|
* environ.h: Moved to...
|
|
|
|
|
* common/environ.h: ... here.
|
|
|
|
|
|
2017-03-07 16:49:10 +01:00
|
|
|
|
2017-03-07 Peter Bergner <bergner@vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh (pstring_ptr): New static function.
|
|
|
|
|
(gdbarch_disassembler_options): Use it.
|
|
|
|
|
(gdbarch_verify_disassembler_options): Print valid_disassembler_options,
|
|
|
|
|
not valid_disassembler_option->name.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
|
2017-03-07 16:39:13 +01:00
|
|
|
|
2017-03-07 Peter Bergner <bergner@vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* config/powerpc/ppc64-linux.mh (MH_CFLAGS): Delete.
|
|
|
|
|
|
Fix "layout reg" crash
Commit d7e747318f4d04 ("Eliminate make_cleanup_ui_file_delete / make
ui_file a class hierarchy") introduced a problem when using "layout
regs", that leads gdb to crash when issuing:
./gdb ./a.out -ex 'layout regs' -ex start
From the backtrace, it's caused by this 'delete' on tui_restore_gdbout():
(gdb) bt
#0 0x00007ffff6b962b2 in free () from /lib64/libc.so.6
#1 0x000000000059fa47 in tui_restore_gdbout (ui=0x22997b0) at ../../gdb/tui/tui-regs.c:714
#2 0x0000000000619996 in do_my_cleanups (pmy_chain=pmy_chain@entry=0x1e08320 <cleanup_chain>, old_chain=old_chain@entry=0x235b4b0) at ../../gdb/common/cleanups.c:154
#3 0x0000000000619b1d in do_cleanups (old_chain=old_chain@entry=0x235b4b0) at ../../gdb/common/cleanups.c:176
#4 0x000000000059fb0d in tui_register_format (frame=frame@entry=0x22564e0, regnum=regnum@entry=0) at ../../gdb/tui/tui-regs.c:747
#5 0x000000000059ffeb in tui_get_register (data=0x2434d18, changedp=0x0, regnum=0, frame=0x22564e0) at ../../gdb/tui/tui-regs.c:768
#6 tui_show_register_group (refresh_values_only=<optimized out>, frame=0x22564e0, group=0x1e09250 <general_group>) at ../../gdb/tui/tui-regs.c:287
#7 tui_show_registers (group=0x1e09250 <general_group>) at ../../gdb/tui/tui-regs.c:156
#8 0x00000000005a07cf in tui_check_register_values (frame=frame@entry=0x22564e0) at ../../gdb/tui/tui-regs.c:496
#9 0x00000000005a3e65 in tui_check_data_values (frame=frame@entry=0x22564e0) at ../../gdb/tui/tui-windata.c:232
#10 0x000000000059cf65 in tui_refresh_frame_and_register_information (registers_too_p=1) at ../../gdb/tui/tui-hooks.c:156
#11 0x00000000006d5c05 in generic_observer_notify (args=0x7fffffffdbe0, subject=<optimized out>) at ../../gdb/observer.c:167
#12 observer_notify_normal_stop (bs=<optimized out>, print_frame=print_frame@entry=1) at ./observer.inc:61
#13 0x00000000006a6409 in normal_stop () at ../../gdb/infrun.c:8364
#14 0x00000000006af8f5 in fetch_inferior_event (client_data=<optimized out>) at ../../gdb/infrun.c:3990
#15 0x000000000066f0fd in gdb_wait_for_event (block=block@entry=0) at ../../gdb/event-loop.c:859
#16 0x000000000066f237 in gdb_do_one_event () at ../../gdb/event-loop.c:322
#17 0x000000000066f386 in gdb_do_one_event () at ../../gdb/event-loop.c:353
#18 0x00000000007411bc in wait_sync_command_done () at ../../gdb/top.c:570
#19 0x0000000000741426 in maybe_wait_sync_command_done (was_sync=0) at ../../gdb/top.c:587
#20 execute_command (p=<optimized out>, p@entry=0x7fffffffe43a "start", from_tty=from_tty@entry=1) at ../../gdb/top.c:676
#21 0x00000000006c2048 in catch_command_errors (command=0x741200 <execute_command(char*, int)>, arg=0x7fffffffe43a "start", from_tty=1) at ../../gdb/main.c:376
#22 0x00000000006c2b60 in captured_main_1 (context=0x7fffffffde70) at ../../gdb/main.c:1119
#23 captured_main (data=0x7fffffffde70) at ../../gdb/main.c:1140
#24 gdb_main (args=args@entry=0x7fffffffdf90) at ../../gdb/main.c:1158
#25 0x0000000000408cf5 in main (argc=<optimized out>, argv=<optimized out>) at ../../gdb/gdb.c:32
(gdb) f 1
#1 0x000000000059fa47 in tui_restore_gdbout (ui=0x22997b0) at ../../gdb/tui/tui-regs.c:714
714 delete gdb_stdout;
The problem is simply that the commit mentioned above made the ui_file
that gdb_stdout is temporarily set to be a stack-allocated
string_file, while before it used to be a heap-allocated ui_file. The
fix is simply to remove the now-incorrect delete.
New test included, which exercises enabling all TUI layouts, with and
without execution. (This particular crash only triggers with
execution.)
gdb/ChangeLog:
2017-03-07 Pedro Alves <palves@redhat.com>
* tui/tui-regs.c (tui_restore_gdbout): Don't delete gdb_stdout.
gdb/testsuite/ChangeLog:
2017-03-07 Pedro Alves <palves@redhat.com>
* gdb.base/tui-layout.c: New file.
* gdb.base/tui-layout.exp: New file.
2017-03-07 13:44:58 +01:00
|
|
|
|
2017-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-regs.c (tui_restore_gdbout): Don't delete gdb_stdout.
|
|
|
|
|
|
2017-03-07 14:51:33 +01:00
|
|
|
|
2017-03-07 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
2017-03-07 13:53:41 +01:00
|
|
|
|
|
|
|
|
|
* i387-tdep.h (i387_reset_bnd_regs): Add function definition.
|
|
|
|
|
* i387-tdep.c (i387_reset_bnd_regs): Add function implementation.
|
|
|
|
|
* i386-tdep.c (i386_push_dummy_call): Call i387_reset_bnd_regs.
|
2017-03-07 14:51:33 +01:00
|
|
|
|
* amd64-tdep.c (amd64_push_dummy_call): Call i387_reset_bnd_regs.
|
2017-03-07 13:53:41 +01:00
|
|
|
|
|
2017-03-06 22:06:42 +01:00
|
|
|
|
2017-03-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-linux-nat.c (fetch_gregs): Remove const.
|
|
|
|
|
|
2017-03-03 18:58:24 +01:00
|
|
|
|
2017-03-03 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_add_target_side_commands): Use range-based
|
|
|
|
|
for loop.
|
|
|
|
|
|
2017-03-03 18:16:19 +01:00
|
|
|
|
2017-03-03 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/21165
|
|
|
|
|
* ada-valprint.c (ada_val_print_ref): Call value_fetch_lazy if
|
|
|
|
|
value is lazy.
|
|
|
|
|
* valprint.c (common_val_print): Likewise.
|
|
|
|
|
|
2017-02-28 19:32:07 +01:00
|
|
|
|
2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention new set/show disassembler-options commands.
|
|
|
|
|
* doc/gdb.texinfo: Document new set/show disassembler-options commands.
|
|
|
|
|
* disasm.c: Include "arch-utils.h", "gdbcmd.h" and "safe-ctype.h".
|
|
|
|
|
(prospective_options): New static variable.
|
|
|
|
|
(gdb_disassembler::gdb_disassembler): Initialize
|
|
|
|
|
m_di.disassembler_options.
|
|
|
|
|
(gdb_buffered_insn_length_init_dis): Initilize di->disassembler_options.
|
|
|
|
|
(get_disassembler_options): New function.
|
|
|
|
|
(set_disassembler_options): Likewise.
|
|
|
|
|
(set_disassembler_options_sfunc): Likewise.
|
|
|
|
|
(show_disassembler_options_sfunc): Likewise.
|
|
|
|
|
(disassembler_options_completer): Likewise.
|
|
|
|
|
(_initialize_disasm): Likewise.
|
|
|
|
|
* disasm.h (get_disassembler_options): New prototype.
|
|
|
|
|
(set_disassembler_options): Likewise.
|
|
|
|
|
* gdbarch.sh (gdbarch_disassembler_options): New variable.
|
|
|
|
|
(gdbarch_verify_disassembler_options): Likewise.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbarch.h: Likewise.
|
|
|
|
|
* arm-tdep.c (num_disassembly_options): Delete.
|
|
|
|
|
(set_disassembly_style): Likewise.
|
|
|
|
|
(arm_disassembler_options): New static variable.
|
|
|
|
|
(set_disassembly_style_sfunc): Convert short style name into long
|
|
|
|
|
option name. Call set_disassembler_options.
|
|
|
|
|
(show_disassembly_style_sfunc): New function.
|
|
|
|
|
(arm_gdbarch_init): Call set_gdbarch_disassembler_options and
|
|
|
|
|
set_gdbarch_verify_disassembler_options.
|
|
|
|
|
(_initialize_arm_tdep): Delete regnames variable and update callers.
|
|
|
|
|
(arm_disassembler_options): Initialize.
|
|
|
|
|
(disasm_options): New variable.
|
|
|
|
|
(num_disassembly_options): Rename from this...
|
|
|
|
|
(num_disassembly_styles): ...to this. Compute by scanning through
|
|
|
|
|
disasm_options.
|
|
|
|
|
(valid_disassembly_styles): Initialize using disasm_options.
|
|
|
|
|
Remove calls to parse_arm_disassembler_option, get_arm_regnames and
|
|
|
|
|
set_arm_regname_option.
|
|
|
|
|
Pass show_disassembly_style_sfunc to the "disassembler" setshow command.
|
|
|
|
|
* rs6000-tdep.c (powerpc_disassembler_options): New static variable.
|
|
|
|
|
(rs6000_gdbarch_init): Call set_gdbarch_disassembler_options and
|
|
|
|
|
set_gdbarch_verify_disassembler_options.
|
|
|
|
|
* s390-tdep.c (s390_disassembler_options): New static variable.
|
|
|
|
|
(s390_gdbarch_init):all set_gdbarch_disassembler_options and
|
|
|
|
|
set_gdbarch_verify_disassembler_options.
|
|
|
|
|
|
2017-02-27 20:09:34 +01:00
|
|
|
|
2017-02-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_add_target_side_condition): Remove "struct"
|
|
|
|
|
keyword from range-based for loop.
|
|
|
|
|
|
2017-02-27 19:54:53 +01:00
|
|
|
|
2017-02-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_add_target_side_condition): Use range-based
|
|
|
|
|
for loop. Update comment.
|
|
|
|
|
|
Fix array out of bound access
ASAN reports the following error,
(gdb) PASS: gdb.fortran/vla-ptr-info.exp: continue to breakpoint: pvla-associated
print &pvla^M
=================================================================^M
^[[1m^[[31m==14331==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000000ea569f at pc 0x0000008eb546 bp 0x7ffde0c1dc70 sp 0x7ffde0c1dc60^M
^[[1m^[[0m^[[1m^[[34mREAD of size 1 at 0x000000ea569f thread T0^[[1m^[[0m^M
#0 0x8eb545 in f_print_type(type*, char const*, ui_file*, int, int, type_print_options const*) ../../binutils-gdb/gdb/f-typeprint.c:89^M
#1 0xb611e2 in type_print(type*, char const*, ui_file*, int) ../../binutils-gdb/gdb/typeprint.c:365^M
#2 0x7b3471 in c_value_print(value*, ui_file*, value_print_options const*) ../../binutils-gdb/gdb/c-valprint.c:650^M
#3 0xb99517 in value_print(value*, ui_file*, value_print_options const*) ../../binutils-gdb/gdb/valprint.c:1233^M
#4 0xa42be8 in print_formatted ../../binutils-gdb/gdb/printcmd.c:321^M
#5 0xa46ac9 in print_value(value*, format_data const*) ../../binutils-gdb/gdb/printcmd.c:1233^M
#6 0xa46d82 in print_command_1 ../../binutils-gdb/gdb/printcmd.c:1261^M
#7 0xa46e3e in print_command ../../binutils-gdb/gdb/printcmd.c:1267
on this line of code
demangled_args = varstring[strlen (varstring) - 1] == ')';
because varstring is an empty string and strlen () is 0, so "strlen () - 1"
is definitely out of the bound of "varstring",
(gdb) bt 10
at /home/yao/SourceCode/gnu/gdb/git/gdb/f-typeprint.c:56
at /home/yao/SourceCode/gnu/gdb/git/gdb/typeprint.c:365
at /home/yao/SourceCode/gnu/gdb/git/gdb/c-valprint.c:650
at /home/yao/SourceCode/gnu/gdb/git/gdb/valprint.c:1236
This patch adds a pre-check that varstring is empty or not.
gdb:
2017-02-27 Yao Qi <yao.qi@linaro.org>
* f-typeprint.c (f_print_type): Check "varstring" is empty first.
2017-02-27 18:27:17 +01:00
|
|
|
|
2017-02-27 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* f-typeprint.c (f_print_type): Check "varstring" is empty first.
|
|
|
|
|
|
2017-02-27 10:58:35 +01:00
|
|
|
|
2017-02-26 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_raw_update): New function.
|
|
|
|
|
(regcache_raw_read): Move code to regcache_raw_update.
|
|
|
|
|
* regcache.h (regcache_raw_update): New declaration.
|
|
|
|
|
* remote.c (remote_prepare_to_store): Call regcache_raw_update.
|
|
|
|
|
|
2017-02-26 16:54:51 +01:00
|
|
|
|
2017-02-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (create_debug_type_hash_table): Initialize
|
|
|
|
|
header.signature and header.type_offset_in_tu.
|
|
|
|
|
|
2017-02-24 18:42:51 +01:00
|
|
|
|
2017-02-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symtab.c (make_file_symbol_completion_list_1): Use
|
|
|
|
|
add_symtab_completions.
|
|
|
|
|
|
2017-02-24 17:09:48 +01:00
|
|
|
|
2017-02-24 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (frame_info): Use frame_unwind_register_value to avoid buf.
|
|
|
|
|
|
2017-02-24 17:09:43 +01:00
|
|
|
|
2017-02-24 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_pseudo_register_read_into_value): Use
|
|
|
|
|
I386_MAX_REGISTER_SIZE.
|
|
|
|
|
(i386_pseudo_register_write): Likewise.
|
|
|
|
|
(i386_process_record): Likewise.
|
|
|
|
|
* i387-tdep.c (i387_supply_xsave): Likewise.
|
|
|
|
|
* m68k-linux-nat.c (fetch_register): Use M68K_MAX_REGISTER_SIZE.
|
|
|
|
|
(store_register): Likewise.
|
|
|
|
|
|
Use gdb::function_view in iterate_over_symtabs & co
I wanted to pass a lambda to iterate_over_symtabs (see following
patch), so I converted it to function_view, and then the rest is
cascaded from that.
This gets rid of a bunch of single-use callback functions and
corresponding manually managed callback capture types
(add_partial_datum, search_symbols_data, etc.) in favor of letting the
compiler generate them for us by using lambdas with a capture. In a
couple cases, it was more natural to convert the existing function
callbacks to function objects (i.e., operator(), e.g.,
decode_compound_collector).
gdb/ChangeLog:
2017-02-23 Pedro Alves <palves@redhat.com>
* ada-lang.c: Include "common/function-view.h".
(ada_iterate_over_symbols): Adjust to use function_view as
callback type.
(struct add_partial_datum, ada_complete_symbol_matcher): Delete.
(ada_make_symbol_completion_list): Use a lambda.
(ada_exc_search_name_matches): Delete.
(name_matches_regex): New.
(ada_add_global_exceptions): Use a lambda and name_matches_regex.
* compile/compile-c-support.c: Include "common/function-view.h".
(print_one_macro): Change prototype to accept a ui_file pointer.
(write_macro_definitions): Use a lambda.
* dwarf2read.c: Include "common/function-view.h".
(dw2_map_expand_apply, dw2_map_symtabs_matching_filename)
(dw2_expand_symtabs_matching): Adjust to use function_view as
callback type.
* language.h: Include "common/function-view.h".
(struct language_defn) <la_iterate_over_symbols>: Adjust to use
function_view as callback type.
(LA_ITERATE_OVER_SYMBOLS): Remove DATA parameter.
* linespec.c: Include "common/function-view.h".
(collect_info::add_symbol): New method.
(struct symbol_and_data_callback, iterate_inline_only, struct
symbol_matcher_data, iterate_name_matcher): Delete.
(iterate_over_all_matching_symtabs): Adjust to use function_view
as callback type and lambdas.
(iterate_over_file_blocks): Adjust to use function_view as
callback type.
(decode_compound_collector): Now a class with private fields.
(decode_compound_collector::release_symbols): New method.
(collect_one_symbol): Rename to...
(decode_compound_collector::operator()): ... this and adjust.
(lookup_prefix_sym): decode_compound_collector construction bits
move to decode_compound_collector ctor. Pass the
decode_compound_collector object directly as callback. Remove
cleanups and use decode_compound_collector::release_symbols
instead.
(symtab_collector): Now a class with private fields.
(symtab_collector::release_symtabs): New method.
(add_symtabs_to_list): Rename to...
(symtab_collector::operator()): ... this and adjust.
(collect_symtabs_from_filename): symtab_collector construction
bits move to symtab_collector ctor. Pass the symtab_collector
object directly as callback. Remove cleanups and use
symtab_collector::release_symtabs instead.
(collect_symbols): Delete.
(add_matching_symbols_to_info): Use lambdas.
* macrocmd.c (print_macro_callback): Delete.
(info_macro_command): Use a lambda.
(info_macros_command): Pass print_macro_definition as callable
directly.
(print_one_macro): Remove 'ignore' parameter.
(macro_list_command): Adjust.
* macrotab.c (macro_for_each_data::fn): Now a function_view.
(macro_for_each_data::user_data): Delete field.
(foreach_macro): Adjust to call the function_view.
(macro_for_each): Adjust to use function_view as callback type.
(foreach_macro_in_scope): Adjust to call the function_view.
(macro_for_each_in_scope): Adjust to use function_view as callback
type.
* macrotab.h: Include "common/function-view.h".
(macro_callback_fn): Declare a prototype instead of a pointer.
Remove "user_data" parameter.
(macro_for_each, macro_for_each_in_scope): Adjust to use
function_view as callback type.
* psymtab.c (partial_map_expand_apply)
(psym_map_symtabs_matching_filename, recursively_search_psymtabs):
Adjust to use function_view as callback type and to return bool.
(psym_expand_symtabs_matching): Adjust to use function_view as
callback types.
* symfile-debug.c (debug_qf_map_symtabs_matching_filename): Adjust
to use function_view as callback type and to return bool.
(debug_qf_expand_symtabs_matching): Adjust to use function_view as
callback types.
* symfile.c (expand_symtabs_matching): Adjust to use function_view
as callback types.
* symfile.h: Include "common/function-view.h".
(expand_symtabs_file_matcher_ftype)
(expand_symtabs_symbol_matcher_ftype)
(expand_symtabs_exp_notify_ftype): Remove "data" parameter and
return bool.
(quick_symbol_functions::map_symtabs_matching_filename)
(quick_symbol_functions::expand_symtabs_matching): Adjust to use
function_view as callback type and return bool.
(expand_symtabs_matching): Adjust to use function_view as callback
type.
(maintenance_expand_name_matcher)
(maintenance_expand_file_matcher): Delete.
(maintenance_expand_symtabs): Use lambdas.
* symtab.c (iterate_over_some_symtabs): Adjust to use
function_view as callback types and return bool.
(iterate_over_symtabs): Likewise. Use unique_xmalloc_ptr instead
of a cleanup.
(lookup_symtab_callback): Delete.
(lookup_symtab): Use a lambda.
(iterate_over_symbols): Adjust to use function_view as callback
type.
(struct search_symbols_data, search_symbols_file_matches)
(search_symbols_name_matches): Delete.
(search_symbols): Use a pair of lambdas.
(struct add_name_data, add_macro_name, symbol_completion_matcher)
(symtab_expansion_callback): Delete.
(default_make_symbol_completion_list_break_on_1): Use lambdas.
* symtab.h: Include "common/function-view.h".
(iterate_over_some_symtabs): Adjust to use function_view as
callback type and return bool.
(iterate_over_symtabs): Adjust to use function_view as callback
type.
(symbol_found_callback_ftype): Remove 'data' parameter and return
bool.
(iterate_over_symbols): Adjust to use function_view as callback
type.
2017-02-22 15:43:35 +01:00
|
|
|
|
2017-02-23 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c: Include "common/function-view.h".
|
|
|
|
|
(ada_iterate_over_symbols): Adjust to use function_view as
|
|
|
|
|
callback type.
|
|
|
|
|
(struct add_partial_datum, ada_complete_symbol_matcher): Delete.
|
|
|
|
|
(ada_make_symbol_completion_list): Use a lambda.
|
|
|
|
|
(ada_exc_search_name_matches): Delete.
|
|
|
|
|
(name_matches_regex): New.
|
|
|
|
|
(ada_add_global_exceptions): Use a lambda and name_matches_regex.
|
|
|
|
|
* compile/compile-c-support.c: Include "common/function-view.h".
|
|
|
|
|
(print_one_macro): Change prototype to accept a ui_file pointer.
|
|
|
|
|
(write_macro_definitions): Use a lambda.
|
|
|
|
|
* dwarf2read.c: Include "common/function-view.h".
|
|
|
|
|
(dw2_map_expand_apply, dw2_map_symtabs_matching_filename)
|
|
|
|
|
(dw2_expand_symtabs_matching): Adjust to use function_view as
|
|
|
|
|
callback type.
|
|
|
|
|
* language.h: Include "common/function-view.h".
|
|
|
|
|
(struct language_defn) <la_iterate_over_symbols>: Adjust to use
|
|
|
|
|
function_view as callback type.
|
|
|
|
|
(LA_ITERATE_OVER_SYMBOLS): Remove DATA parameter.
|
|
|
|
|
* linespec.c: Include "common/function-view.h".
|
|
|
|
|
(collect_info::add_symbol): New method.
|
|
|
|
|
(struct symbol_and_data_callback, iterate_inline_only, struct
|
|
|
|
|
symbol_matcher_data, iterate_name_matcher): Delete.
|
|
|
|
|
(iterate_over_all_matching_symtabs): Adjust to use function_view
|
|
|
|
|
as callback type and lambdas.
|
|
|
|
|
(iterate_over_file_blocks): Adjust to use function_view as
|
|
|
|
|
callback type.
|
|
|
|
|
(decode_compound_collector): Now a class with private fields.
|
|
|
|
|
(decode_compound_collector::release_symbols): New method.
|
|
|
|
|
(collect_one_symbol): Rename to...
|
|
|
|
|
(decode_compound_collector::operator()): ... this and adjust.
|
|
|
|
|
(lookup_prefix_sym): decode_compound_collector construction bits
|
|
|
|
|
move to decode_compound_collector ctor. Pass the
|
|
|
|
|
decode_compound_collector object directly as callback. Remove
|
|
|
|
|
cleanups and use decode_compound_collector::release_symbols
|
|
|
|
|
instead.
|
|
|
|
|
(symtab_collector): Now a class with private fields.
|
|
|
|
|
(symtab_collector::release_symtabs): New method.
|
|
|
|
|
(add_symtabs_to_list): Rename to...
|
|
|
|
|
(symtab_collector::operator()): ... this and adjust.
|
|
|
|
|
(collect_symtabs_from_filename): symtab_collector construction
|
|
|
|
|
bits move to symtab_collector ctor. Pass the symtab_collector
|
|
|
|
|
object directly as callback. Remove cleanups and use
|
|
|
|
|
symtab_collector::release_symtabs instead.
|
|
|
|
|
(collect_symbols): Delete.
|
|
|
|
|
(add_matching_symbols_to_info): Use lambdas.
|
|
|
|
|
* macrocmd.c (print_macro_callback): Delete.
|
|
|
|
|
(info_macro_command): Use a lambda.
|
|
|
|
|
(info_macros_command): Pass print_macro_definition as callable
|
|
|
|
|
directly.
|
|
|
|
|
(print_one_macro): Remove 'ignore' parameter.
|
|
|
|
|
(macro_list_command): Adjust.
|
|
|
|
|
* macrotab.c (macro_for_each_data::fn): Now a function_view.
|
|
|
|
|
(macro_for_each_data::user_data): Delete field.
|
|
|
|
|
(foreach_macro): Adjust to call the function_view.
|
|
|
|
|
(macro_for_each): Adjust to use function_view as callback type.
|
|
|
|
|
(foreach_macro_in_scope): Adjust to call the function_view.
|
|
|
|
|
(macro_for_each_in_scope): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
* macrotab.h: Include "common/function-view.h".
|
|
|
|
|
(macro_callback_fn): Declare a prototype instead of a pointer.
|
|
|
|
|
Remove "user_data" parameter.
|
|
|
|
|
(macro_for_each, macro_for_each_in_scope): Adjust to use
|
|
|
|
|
function_view as callback type.
|
|
|
|
|
* psymtab.c (partial_map_expand_apply)
|
|
|
|
|
(psym_map_symtabs_matching_filename, recursively_search_psymtabs):
|
|
|
|
|
Adjust to use function_view as callback type and to return bool.
|
|
|
|
|
(psym_expand_symtabs_matching): Adjust to use function_view as
|
|
|
|
|
callback types.
|
|
|
|
|
* symfile-debug.c (debug_qf_map_symtabs_matching_filename): Adjust
|
|
|
|
|
to use function_view as callback type and to return bool.
|
|
|
|
|
(debug_qf_expand_symtabs_matching): Adjust to use function_view as
|
|
|
|
|
callback types.
|
|
|
|
|
* symfile.c (expand_symtabs_matching): Adjust to use function_view
|
|
|
|
|
as callback types.
|
|
|
|
|
* symfile.h: Include "common/function-view.h".
|
|
|
|
|
(expand_symtabs_file_matcher_ftype)
|
|
|
|
|
(expand_symtabs_symbol_matcher_ftype)
|
|
|
|
|
(expand_symtabs_exp_notify_ftype): Remove "data" parameter and
|
|
|
|
|
return bool.
|
|
|
|
|
(quick_symbol_functions::map_symtabs_matching_filename)
|
|
|
|
|
(quick_symbol_functions::expand_symtabs_matching): Adjust to use
|
|
|
|
|
function_view as callback type and return bool.
|
|
|
|
|
(expand_symtabs_matching): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
(maintenance_expand_name_matcher)
|
|
|
|
|
(maintenance_expand_file_matcher): Delete.
|
|
|
|
|
(maintenance_expand_symtabs): Use lambdas.
|
|
|
|
|
* symtab.c (iterate_over_some_symtabs): Adjust to use
|
|
|
|
|
function_view as callback types and return bool.
|
|
|
|
|
(iterate_over_symtabs): Likewise. Use unique_xmalloc_ptr instead
|
|
|
|
|
of a cleanup.
|
|
|
|
|
(lookup_symtab_callback): Delete.
|
|
|
|
|
(lookup_symtab): Use a lambda.
|
|
|
|
|
(iterate_over_symbols): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
(struct search_symbols_data, search_symbols_file_matches)
|
|
|
|
|
(search_symbols_name_matches): Delete.
|
|
|
|
|
(search_symbols): Use a pair of lambdas.
|
|
|
|
|
(struct add_name_data, add_macro_name, symbol_completion_matcher)
|
|
|
|
|
(symtab_expansion_callback): Delete.
|
|
|
|
|
(default_make_symbol_completion_list_break_on_1): Use lambdas.
|
|
|
|
|
* symtab.h: Include "common/function-view.h".
|
|
|
|
|
(iterate_over_some_symtabs): Adjust to use function_view as
|
|
|
|
|
callback type and return bool.
|
|
|
|
|
(iterate_over_symtabs): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
(symbol_found_callback_ftype): Remove 'data' parameter and return
|
|
|
|
|
bool.
|
|
|
|
|
(iterate_over_symbols): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
|
2017-02-23 17:14:08 +01:00
|
|
|
|
2017-02-23 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS, SUBDIR_UNITTESTS_OBS): New.
|
|
|
|
|
(%.o) <unittests/%.c>: New pattern.
|
|
|
|
|
* configure.ac ($development): Add $(SUBDIR_UNITTESTS_OBS) to
|
|
|
|
|
CONFIG_OBS, and $(SUBDIR_UNITTESTS_SRCS) to CONFIG_SRCS.
|
|
|
|
|
* common/function-view.h: New file.
|
|
|
|
|
* unittests/function-view-selftests.c: New file.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2017-02-23 16:36:20 +01:00
|
|
|
|
2017-02-23 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_thread_alive): Use ptid instead of
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
* go32-nat.c (go32_thread_alive): Likewise.
|
|
|
|
|
|
2017-02-23 12:57:46 +01:00
|
|
|
|
2017-02-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* varobj-iter.h (varobj_iter_delete): Call xfree instead of
|
|
|
|
|
delete.
|
|
|
|
|
|
Use delete instead of xfree for varobj_item
In commit 2f408ec (Use ui_file_as_string throughout more), we start to
new varobj_item,
> - vitem = XNEW (struct varobj_item);
> + vitem = new varobj_item ();
but we still use xfree. This causes some ASAN errors,
-var-update container^M
=================================================================^M
^[[1m^[[31m==20660==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new vs free) on 0x602000090c10^M
^[[1m^[[0m #0 0x2baa77d03631 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x54631)^M
#1 0x80e0c8 in xfree(void*) /home/yao/SourceCode/gnu/gdb/git/gdb/common/common-utils.c:100^M
#2 0xc13670 in varobj_clear_saved_item /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:727^M
#3 0xc13957 in update_dynamic_varobj_children /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:752^M
#4 0xc1841c in varobj_update(varobj**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:1699^M
#5 0x5a2bf7 in varobj_update_one /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:712^M
#6 0x5a2a41 in mi_cmd_var_update(char*, char**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:695^
........
^M
^[[1m^[[32m0x602000090c10 is located 0 bytes inside of 16-byte region [0x602000090c10,0x602000090c20)^M
^[[1m^[[0m^[[1m^[[35mallocated by thread T0 here:^[[1m^[[0m^M
#0 0x2baa77d0415f in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x5515f)^M
#1 0x63613e in py_varobj_iter_next /home/yao/SourceCode/gnu/gdb/git/gdb/python/py-varobj.c:112^M
#2 0xc13b89 in update_dynamic_varobj_children /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:776^M
#3 0xc1841c in varobj_update(varobj**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:1699^M
#4 0x5a2bf7 in varobj_update_one /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:712^M
#5 0x5a2a41 in mi_cmd_var_update(char*, char**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:695^M
gdb:
2017-02-23 Yao Qi <yao.qi@linaro.org>
* varobj.c (varobj_clear_saved_item): Use delete instead of
xfree.
(update_dynamic_varobj_children): Likewise.
2017-02-23 12:05:03 +01:00
|
|
|
|
2017-02-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_clear_saved_item): Use delete instead of
|
|
|
|
|
xfree.
|
|
|
|
|
(update_dynamic_varobj_children): Likewise.
|
|
|
|
|
|
2017-02-22 00:13:03 +01:00
|
|
|
|
2017-02-21 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_record_block_ranges): Add forgotten BASEADDR.
|
|
|
|
|
|
2017-02-21 17:48:49 +01:00
|
|
|
|
2017-02-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/enum-flags.h (enum_flags::enum_flags): Initialize
|
|
|
|
|
m_enum_value to 0 in default constructor.
|
|
|
|
|
|
2017-02-21 15:14:56 +01:00
|
|
|
|
2017-02-21 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* rs6000-tdep.c (LOAD_AND_RESERVE_MASK): Rename from LWARX_MASK.
|
|
|
|
|
(STORE_CONDITIONAL_MASK): Rename from STWCX_MASK.
|
|
|
|
|
(LBARX_INSTRUCTION, LHARX_INSTRUCTION, LQARX_INSTRUCTION,
|
|
|
|
|
STBCX_INSTRUCTION, STHCX_INSTRUCTION, STQCX_INSTRUCTION): New defines.
|
|
|
|
|
(IS_LOAD_AND_RESERVE_INSN, IS_STORE_CONDITIONAL_INSN): New macros.
|
|
|
|
|
(ppc_displaced_step_copy_insn): Use IS_LOAD_AND_RESERVE_INSN.
|
|
|
|
|
(ppc_deal_with_atomic_sequence): Use IS_LOAD_AND_RESERVE_INSN and
|
|
|
|
|
IS_STORE_CONDITIONAL_INSN.
|
|
|
|
|
|
2017-02-21 09:14:37 +01:00
|
|
|
|
2017-02-21 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2_rnglists_process: Initialize range_beginning and range_end.
|
|
|
|
|
|
2017-02-20 20:53:22 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 7.12): Add DWARF-5.
|
|
|
|
|
|
2017-02-20 20:53:22 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (skip_one_die, read_attribute_value)
|
|
|
|
|
(dwarf2_const_value_attr, dump_die_shallow)
|
|
|
|
|
(dwarf2_get_attr_constant_value, dwarf2_fetch_constant_bytes)
|
|
|
|
|
(skip_form_bytes, attr_form_is_constant): Handle DW_FORM_data16.
|
|
|
|
|
|
2017-02-20 20:53:21 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (read_file_scope): Rename DW_MACRO_GNU_*.
|
|
|
|
|
(dwarf_parse_macro_header): Accept DWARF version 5.
|
|
|
|
|
(dwarf_decode_macro_bytes, dwarf_decode_macros): Rename DW_MACRO_GNU_*.
|
|
|
|
|
|
DWARF-5: call sites
this patch updates all call sites related DWARF-5 renames.
gdb/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* block.c (call_site_for_pc): Rename DW_OP_GNU_*, DW_TAG_GNU_* and
DW_AT_GNU_*.
* common/common-exceptions.h (enum errors): Likewise.
* dwarf2-frame.c (class dwarf_expr_executor): Likewise.
* dwarf2expr.c (dwarf_block_to_dwarf_reg)
(dwarf_expr_context::execute_stack_op): Likewise.
* dwarf2expr.h (struct dwarf_expr_context, struct dwarf_expr_piece):
Likewise.
* dwarf2loc.c (dwarf_evaluate_loc_desc::get_base_type)
(dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value)
(show_entry_values_debug, call_site_to_target_addr)
(func_addr_to_tail_call_list, func_verify_no_selftailcall)
(dwarf_expr_reg_to_entry_parameter, dwarf_entry_parameter_to_value)
(entry_data_value_free_closure, value_of_dwarf_reg_entry)
(value_of_dwarf_block_entry, indirect_pieced_value)
(symbol_needs_eval_context::push_dwarf_reg_entry_value):
(disassemble_dwarf_expression): Likewise.
* dwarf2read.c (process_die, inherit_abstract_dies)
(read_call_site_scope): Likewise.
* gdbtypes.h (struct func_type, struct call_site_parameter)
(struct call_site): Likewise.
* stack.c (read_frame_arg): Likewise.
* std-operator.def (OP_VAR_ENTRY_VALUE): Likewise.
gdb/doc/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.texinfo (Print Settings, Tail Call Frames): Rename DW_OP_GNU_*,
DW_TAG_GNU_* and DW_AT_GNU_*.
gdb/testsuite/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.arch/amd64-entry-value-param-dwarf5.S: New file.
* gdb.arch/amd64-entry-value-param-dwarf5.c: New file.
* gdb.arch/amd64-entry-value-param-dwarf5.exp: New file.
* gdb.arch/amd64-entry-value.exp: Rename DW_OP_GNU_*, DW_TAG_GNU_* and
DW_AT_GNU_*.
2017-02-20 20:53:21 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* block.c (call_site_for_pc): Rename DW_OP_GNU_*, DW_TAG_GNU_* and
|
|
|
|
|
DW_AT_GNU_*.
|
|
|
|
|
* common/common-exceptions.h (enum errors): Likewise.
|
|
|
|
|
* dwarf2-frame.c (class dwarf_expr_executor): Likewise.
|
|
|
|
|
* dwarf2expr.c (dwarf_block_to_dwarf_reg)
|
|
|
|
|
(dwarf_expr_context::execute_stack_op): Likewise.
|
|
|
|
|
* dwarf2expr.h (struct dwarf_expr_context, struct dwarf_expr_piece):
|
|
|
|
|
Likewise.
|
|
|
|
|
* dwarf2loc.c (dwarf_evaluate_loc_desc::get_base_type)
|
|
|
|
|
(dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value)
|
|
|
|
|
(show_entry_values_debug, call_site_to_target_addr)
|
|
|
|
|
(func_addr_to_tail_call_list, func_verify_no_selftailcall)
|
|
|
|
|
(dwarf_expr_reg_to_entry_parameter, dwarf_entry_parameter_to_value)
|
|
|
|
|
(entry_data_value_free_closure, value_of_dwarf_reg_entry)
|
|
|
|
|
(value_of_dwarf_block_entry, indirect_pieced_value)
|
|
|
|
|
(symbol_needs_eval_context::push_dwarf_reg_entry_value):
|
|
|
|
|
(disassemble_dwarf_expression): Likewise.
|
|
|
|
|
* dwarf2read.c (process_die, inherit_abstract_dies)
|
|
|
|
|
(read_call_site_scope): Likewise.
|
|
|
|
|
* gdbtypes.h (struct func_type, struct call_site_parameter)
|
|
|
|
|
(struct call_site): Likewise.
|
|
|
|
|
* stack.c (read_frame_arg): Likewise.
|
|
|
|
|
* std-operator.def (OP_VAR_ENTRY_VALUE): Likewise.
|
|
|
|
|
|
DWARF-5 basic functionality
this is a kitchen-sink patch for everything that did not fit into its own
patch.
DWO is not yet implemented.
gdb/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* defs.h (read_unsigned_leb128): New declaration.
* dwarf2loc.c (decode_debug_loclists_addresses): New function.
(decode_debug_loc_dwo_addresses): Update DEBUG_LOC_* to DW_LLE_*.
(dwarf2_find_location_expression): Call also
decode_debug_loclists_addresses. Handle DWARF-5 ULEB128 length.
* dwarf2loc.h (dwarf2_version): New declaration.
* dwarf2read.c (struct dwarf2_per_objfile): Add loclists, line_str,
rnglists.
(dwarf2_elf_names): Add .debug_loclists, .debug_line_str,
.debug_rnglists.
(struct dwop_section_names): Add loclists_dwo.
(dwop_section_names): Add .debug_loclists.dwo.
(struct comp_unit_head): Add unit_type, signature, type_offset_in_tu.
(struct dwarf2_per_cu_data): Add dwarf_version.
(struct dwo_sections): Add loclists.
(struct attr_abbrev): Add implicit_const.
(read_indirect_line_string): New declaration.
(read_unsigned_leb128): Delete declaration.
(rcuh_kind): New definition.
(read_and_check_comp_unit_head): Change parameter
is_debug_types_section to section_kind.
(dwarf2_locate_sections): Handle loclists, line_str and rnglists.
(read_comp_unit_head): Change parameter abfd to section, add parameter
section_kind. Handle DWARF-5.
(error_check_comp_unit_head): Accept also DWARF version 5.
(read_and_check_comp_unit_head): Change parameter
is_debug_types_section to section_kind.
(read_and_check_type_unit_head): Delete function.
(read_abbrev_offset): Handle DWARF-5.
(create_debug_type_hash_table): Add parameter section_kind. Process
only DW_UT_type. Use signature and type_offset_in_tu from struct
comp_unit_head.
(create_debug_types_hash_table): Update create_debug_type_hash_table
caller.
(create_all_type_units): Call create_debug_type_hash_table.
(read_cutu_die_from_dwo, init_cutu_and_read_dies): Change
read_and_check_type_unit_head caller to read_and_check_comp_unit_head
caller.
(skip_one_die): Handle DW_FORM_implicit_const.
(dwarf2_rnglists_process): New function.
(dwarf2_ranges_process): Call dwarf2_rnglists_process for DWARF-5.
(abbrev_table_read_table): Handle DW_FORM_implicit_const.
(read_attribute_value): Handle DW_FORM_implicit_const,
DW_FORM_line_strp.
(read_attribute): Handle DW_FORM_implicit_const.
(read_indirect_string_at_offset_from): New function from
read_indirect_string_at_offset.
(read_indirect_string_at_offset): Call
read_indirect_string_at_offset_from.
(read_indirect_line_string_at_offset): New function.
(read_indirect_string): New function comment.
(read_indirect_line_string): New function.
(read_unsigned_leb128): Make it global.
(dwarf2_string_attr): Handle DWARF-5.
(add_include_dir_stub, read_formatted_entries): New functions.
(dwarf_decode_line_header, dump_die_shallow, cu_debug_loc_section):
Handle DWARF-5.
(per_cu_header_read_in): Update read_comp_unit_head caller.
(dwarf2_version): New function.
* symfile.h (struct dwarf2_debug_sections): Add loclists, line_str and
rnglists.
* xcoffread.c (dwarf2_xcoff_names): Update struct dwarf2_debug_sections
fields.
gdb/testsuite/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.dwarf2/dw2-error.exp (file $testfile): Update expected string.
2017-02-20 20:53:21 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* defs.h (read_unsigned_leb128): New declaration.
|
|
|
|
|
* dwarf2loc.c (decode_debug_loclists_addresses): New function.
|
|
|
|
|
(decode_debug_loc_dwo_addresses): Update DEBUG_LOC_* to DW_LLE_*.
|
|
|
|
|
(dwarf2_find_location_expression): Call also
|
|
|
|
|
decode_debug_loclists_addresses. Handle DWARF-5 ULEB128 length.
|
|
|
|
|
* dwarf2loc.h (dwarf2_version): New declaration.
|
|
|
|
|
* dwarf2read.c (struct dwarf2_per_objfile): Add loclists, line_str,
|
|
|
|
|
rnglists.
|
|
|
|
|
(dwarf2_elf_names): Add .debug_loclists, .debug_line_str,
|
|
|
|
|
.debug_rnglists.
|
|
|
|
|
(struct dwop_section_names): Add loclists_dwo.
|
|
|
|
|
(dwop_section_names): Add .debug_loclists.dwo.
|
|
|
|
|
(struct comp_unit_head): Add unit_type, signature, type_offset_in_tu.
|
|
|
|
|
(struct dwarf2_per_cu_data): Add dwarf_version.
|
|
|
|
|
(struct dwo_sections): Add loclists.
|
|
|
|
|
(struct attr_abbrev): Add implicit_const.
|
|
|
|
|
(read_indirect_line_string): New declaration.
|
|
|
|
|
(read_unsigned_leb128): Delete declaration.
|
|
|
|
|
(rcuh_kind): New definition.
|
|
|
|
|
(read_and_check_comp_unit_head): Change parameter
|
|
|
|
|
is_debug_types_section to section_kind.
|
|
|
|
|
(dwarf2_locate_sections): Handle loclists, line_str and rnglists.
|
|
|
|
|
(read_comp_unit_head): Change parameter abfd to section, add parameter
|
|
|
|
|
section_kind. Handle DWARF-5.
|
|
|
|
|
(error_check_comp_unit_head): Accept also DWARF version 5.
|
|
|
|
|
(read_and_check_comp_unit_head): Change parameter
|
|
|
|
|
is_debug_types_section to section_kind.
|
|
|
|
|
(read_and_check_type_unit_head): Delete function.
|
|
|
|
|
(read_abbrev_offset): Handle DWARF-5.
|
|
|
|
|
(create_debug_type_hash_table): Add parameter section_kind. Process
|
|
|
|
|
only DW_UT_type. Use signature and type_offset_in_tu from struct
|
|
|
|
|
comp_unit_head.
|
|
|
|
|
(create_debug_types_hash_table): Update create_debug_type_hash_table
|
|
|
|
|
caller.
|
|
|
|
|
(create_all_type_units): Call create_debug_type_hash_table.
|
|
|
|
|
(read_cutu_die_from_dwo, init_cutu_and_read_dies): Change
|
|
|
|
|
read_and_check_type_unit_head caller to read_and_check_comp_unit_head
|
|
|
|
|
caller.
|
|
|
|
|
(skip_one_die): Handle DW_FORM_implicit_const.
|
|
|
|
|
(dwarf2_rnglists_process): New function.
|
|
|
|
|
(dwarf2_ranges_process): Call dwarf2_rnglists_process for DWARF-5.
|
|
|
|
|
(abbrev_table_read_table): Handle DW_FORM_implicit_const.
|
|
|
|
|
(read_attribute_value): Handle DW_FORM_implicit_const,
|
|
|
|
|
DW_FORM_line_strp.
|
|
|
|
|
(read_attribute): Handle DW_FORM_implicit_const.
|
|
|
|
|
(read_indirect_string_at_offset_from): New function from
|
|
|
|
|
read_indirect_string_at_offset.
|
|
|
|
|
(read_indirect_string_at_offset): Call
|
|
|
|
|
read_indirect_string_at_offset_from.
|
|
|
|
|
(read_indirect_line_string_at_offset): New function.
|
|
|
|
|
(read_indirect_string): New function comment.
|
|
|
|
|
(read_indirect_line_string): New function.
|
|
|
|
|
(read_unsigned_leb128): Make it global.
|
|
|
|
|
(dwarf2_string_attr): Handle DWARF-5.
|
|
|
|
|
(add_include_dir_stub, read_formatted_entries): New functions.
|
|
|
|
|
(dwarf_decode_line_header, dump_die_shallow, cu_debug_loc_section):
|
|
|
|
|
Handle DWARF-5.
|
|
|
|
|
(per_cu_header_read_in): Update read_comp_unit_head caller.
|
|
|
|
|
(dwarf2_version): New function.
|
|
|
|
|
* symfile.h (struct dwarf2_debug_sections): Add loclists, line_str and
|
|
|
|
|
rnglists.
|
|
|
|
|
* xcoffread.c (dwarf2_xcoff_names): Update struct dwarf2_debug_sections
|
|
|
|
|
fields.
|
|
|
|
|
|
2017-02-20 20:53:20 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (abbrev_table_read_table): Read the data only once.
|
|
|
|
|
|
2017-02-20 20:53:20 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_ranges_process): New function from
|
|
|
|
|
dwarf2_ranges_read.
|
|
|
|
|
(dwarf2_ranges_read, dwarf2_record_block_ranges): Use
|
|
|
|
|
dwarf2_ranges_process.
|
|
|
|
|
|
2017-02-20 20:53:19 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (create_debug_type_hash_table): New function from
|
|
|
|
|
create_debug_types_hash_table.
|
|
|
|
|
(create_debug_types_hash_table): Call create_debug_type_hash_table.
|
|
|
|
|
(create_all_type_units, open_and_init_dwo_file): Update
|
|
|
|
|
create_debug_types_hash_table callers.
|
|
|
|
|
|
2017-02-20 14:01:04 +01:00
|
|
|
|
2017-02-20 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/16188
|
|
|
|
|
* fork-child.c (trace_start_error): Fix thinko. va_end should
|
|
|
|
|
refer to 'ap', not 'args'.
|
|
|
|
|
|
2017-02-15 00:27:23 +01:00
|
|
|
|
2017-02-20 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/16188
|
|
|
|
|
* darwin-nat.c (darwin_ptrace_me): Check if calls to system
|
|
|
|
|
calls succeeded.
|
|
|
|
|
* fork-child.c (trace_start_error): New function.
|
|
|
|
|
(trace_start_error_with_name): Likewise.
|
|
|
|
|
* gnu-nat.c (gnu_ptrace_me): Check if call to PTRACE succeeded.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_me): Likewise.
|
|
|
|
|
* inferior.h (trace_start_error): New prototype.
|
|
|
|
|
(trace_start_error_with_name): Likewise.
|
|
|
|
|
|
2017-02-15 21:08:19 +01:00
|
|
|
|
2017-02-15 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21164
|
|
|
|
|
* psymtab.c (maintenance_print_psymbols): Verify if 'argv' is not
|
|
|
|
|
NULL before using it.
|
|
|
|
|
* symmisc.c (maintenance_print_symbols): Likewise.
|
|
|
|
|
(maintenance_print_msymbols): Likewise.
|
|
|
|
|
|
2017-02-15 08:08:17 +01:00
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Add record Python bindings entry.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-record-btrace.o,
|
|
|
|
|
py-record-full.o.
|
|
|
|
|
(SUBDIR_PYTHON_SRCS): Add py-record-btrace.c, py-record-full.c.
|
|
|
|
|
* python/py-record-btrace.c, python/py-record-btrace.h,
|
|
|
|
|
python/py-record-full.c, python/py-record-full.h: New file.
|
|
|
|
|
* python/py-record.c: Add include for py-record-btrace.h and
|
|
|
|
|
py-record-full.h.
|
|
|
|
|
(recpy_method, recpy_format, recpy_goto, recpy_replay_position,
|
|
|
|
|
recpy_instruction_history, recpy_function_call_history, recpy_begin,
|
|
|
|
|
recpy_end): Use functions from py-record-btrace.c and py-record-full.c.
|
|
|
|
|
* python/python-internal.h (PyInt_FromSsize_t, PyInt_AsSsize_t):
|
|
|
|
|
New definition.
|
|
|
|
|
(gdbpy_initialize_btrace): New export.
|
|
|
|
|
* python/python.c (_initialize_python): Add gdbpy_initialize_btrace.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_PYTHON_OBS): Add python/py-record.o.
|
|
|
|
|
(SUBDIR_PYTHON_SRCS): Add python/py-record.c.
|
|
|
|
|
* python/py-record.c: New file.
|
|
|
|
|
* python/python-internal.h (gdbpy_start_recording,
|
|
|
|
|
gdbpy_current_recording, gdpy_stop_recording,
|
|
|
|
|
gdbpy_initialize_record): New export.
|
|
|
|
|
* python/python.c (_initialize_python): Add gdbpy_initialize_record.
|
|
|
|
|
(python_GdbMethods): Add gdbpy_start_recording,
|
|
|
|
|
gdbpy_current_recording and gdbpy_stop_recording.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_record_method): New function.
|
|
|
|
|
(init_record_btrace_ops): Initialize to_record_method.
|
|
|
|
|
* record-full.c (record_full_record_method): New function.
|
|
|
|
|
(init_record_full_ops, init_record_full_core_ops): Add
|
|
|
|
|
record_full_record_method.
|
|
|
|
|
* record.h (enum record_method): New enum.
|
|
|
|
|
* target-debug.h (target_debug_print_enum_record_method: New define.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* target.c (target_record_method): New function.
|
|
|
|
|
* target.h: Include record.h.
|
|
|
|
|
(struct target_ops) <to_record_method>: New field.
|
|
|
|
|
(target_record_method): New export.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* record.h (record_start, record_stop): New export.
|
|
|
|
|
* record.c (record_start, record_stop): New function.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_fetch): Copy function call segments pointer
|
|
|
|
|
into a vector.
|
|
|
|
|
(btrace_clear): Clear the vector.
|
|
|
|
|
(btrace_find_insn_by_number): Use binary search to find the correct
|
|
|
|
|
function call segment.
|
|
|
|
|
* btrace.h (brace_fun_p): New typedef.
|
|
|
|
|
(struct btrace_thread_info) <functions>: New field.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (btrace_ui_out_decode_error): Move most of it ...
|
|
|
|
|
* btrace.c (btrace_decode_error): ... here. New function.
|
|
|
|
|
* btrace.h (btrace_decode_error): New export.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_call_num_insn, btrace_insn_get_error): New function.
|
|
|
|
|
(ftrace_new_function, btrace_insn_number, btrace_insn_cmp,
|
|
|
|
|
btrace_find_insn_by_number): Remove special case for gaps.
|
|
|
|
|
* btrace.h (btrace_insn_get_error): New export.
|
|
|
|
|
(btrace_insn_number, btrace_find_insn_by_number): Adjust comment.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Print number for gaps.
|
|
|
|
|
(record_btrace_info, record_btrace_goto): Handle gaps.
|
|
|
|
|
|
2015-04-29 17:44:24 +02:00
|
|
|
|
2017-02-14 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR python/13598:
|
|
|
|
|
* python/python.c (gdbpy_before_prompt_hook): Emit before_prompt
|
|
|
|
|
event.
|
|
|
|
|
* python/py-evts.c (gdbpy_initialize_py_events): Add
|
|
|
|
|
before_prompt registry.
|
|
|
|
|
* python/py-events.h (events_object) <before_prompt>: New field.
|
|
|
|
|
|
2017-01-30 09:16:27 +01:00
|
|
|
|
2017-02-14 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_new_switch): Preserve up link and flags.
|
|
|
|
|
|
2017-02-13 14:29:30 +01:00
|
|
|
|
2017-02-13 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* symfile (_initialize_symfile): Add usage text to the load command's
|
|
|
|
|
help text.
|
|
|
|
|
|
Do not send queries on secondary UIs
This is a follow-up to
https://sourceware.org/ml/gdb-patches/2017-02/msg00261.html
This patch restricts queries to the main UI, which allows to avoid two
different problems.
The first one is that GDB is issuing queries on secondary MI channels
for which a TTY is allocated. The second one is that GDB is not able to
handle queries on two (CLI) UIs simultaneously. Restricting queries to
the main UI allows to bypass these two problems.
More details on how/why these two problems happen:
1. Queries on secondary MI UI
The current criterion to decide if we should query the user is whether
the input stream is a TTY. The original way to start GDB in MI mode
from a front-end was to create a subprocess with pipes to its
stdin/stdout. In this case, the input was considered non-interactive
and queries were auto-answered. Now that front-ends can create the MI
channel as a separate UI connected to a dedicated TTY, GDB now
considers this input stream as interactive and sends queries to it.
By restricting queries to the main UI, we make sure we never query on
the secondary MI UI.
2. Simultaneous queries
As Pedro stated it, when you have two queries on two different CLI UIs
at the same time, you end up with the following pseudo stack:
#0 gdb_readline_wrapper
#1 defaulted_query // for UI #2
#2 handle_command
#3 execute_command ("handle SIGTRAP" ....
#4 stdin_event_handler // input on UI #2
#5 gdb_do_one_event
#7 gdb_readline_wrapper
#8 defaulted_query // for UI #1
#9 handle_command
#10 execute_command ("handle SIGINT" ....
#11 stdin_event_handler // input on UI #1
#12 gdb_do_one_event
#13 gdb_readline_wrapper
trying to answer the query on UI #1 will therefore answer for UI #2.
By restricting the queries to the main UI, we ensure that there will
never be more than one pending query, since you can't have two queries
on a UI at the same time.
I added a snippet to gdb.base/new-ui.exp to verify that we get a query
on the main UI, but that we don't on the secondary one (or, more
precisely, that it gets auto-answered).
gdb/ChangeLog:
* utils.c (defaulted_query): Don't query on secondary UIs.
gdb/testsuite/ChangeLog:
* gdb.base/new-ui.exp (do_test): Test queries behavior on main
and extra UIs.
2017-02-10 22:29:50 +01:00
|
|
|
|
2017-02-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (defaulted_query): Don't query on secondary UIs.
|
|
|
|
|
|
2017-02-10 21:09:23 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-lang.c (rust_get_disr_info): Remove unused variable.
|
|
|
|
|
|
2017-02-09 21:32:48 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-value.c (valpy_richcompare_throw): Remove unnecessary
|
|
|
|
|
"cleanup" local.
|
|
|
|
|
* python/py-type.c (typy_legacy_template_argument): Remove
|
|
|
|
|
unnecessary "cleanup" local.
|
|
|
|
|
|
2017-01-12 16:59:26 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (do_start_initialization): New function, from
|
|
|
|
|
_initialize_python.
|
|
|
|
|
(_initialize_python): Call do_start_initialization.
|
|
|
|
|
* python/py-linetable.c (ltpy_iternext): Use explicit returns, not
|
|
|
|
|
goto.
|
|
|
|
|
|
2017-01-12 15:46:07 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (pretty_print_one_value): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2017-01-12 00:28:43 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (cmdpy_destroyer): Use gdbpy_ref.
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoint_deleted): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-type.c (field_new): Use gdbpy_ref.
|
|
|
|
|
* python/py-symtab.c (symtab_and_line_to_sal_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-progspace.c (pspy_new): Use gdbpy_ref.
|
|
|
|
|
(py_free_pspace): Likewise.
|
|
|
|
|
(pspace_to_pspace_object): Likewise.
|
|
|
|
|
* python/py-objfile.c (objfpy_new): Use gdbpy_ref.
|
|
|
|
|
(py_free_objfile): Likewise.
|
|
|
|
|
(objfile_to_objfile_object): Likewise.
|
|
|
|
|
* python/py-inferior.c (delete_thread_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
(infpy_read_memory): Likewise.
|
|
|
|
|
(py_free_inferior): Likewise.
|
|
|
|
|
* python/py-evtregistry.c (create_eventregistry_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-event.c (create_event_object): Use gdbpy_ref.
|
|
|
|
|
|
Turn gdbpy_ref into a template
This turns gdbpy_ref into a template class, so that it can be used to
wrap subclasses of PyObject. The default argument remains PyObject;
and this necessitated renaming uses of "gdbpy_ref" to "gdbpy_ref<>".
gdb/ChangeLog
2017-02-10 Tom Tromey <tom@tromey.com>
* python/py-ref.h (gdbpy_ref_policy): Now a template.
(gdbpy_ref): Now a template; allow subclasses of PyObject to be
used.
* python/py-arch.c, python/py-bpevent.c, python/py-breakpoint.c,
python/py-cmd.c, python/py-continueevent.c, python/py-event.c,
python/py-exitedevent.c, python/py-finishbreakpoint.c,
python/py-framefilter.c, python/py-function.c,
python/py-inferior.c, python/py-infevents.c,
python/py-linetable.c, python/py-newobjfileevent.c,
python/py-param.c, python/py-prettyprint.c, python/py-ref.h,
python/py-signalevent.c, python/py-stopevent.c,
python/py-symbol.c, python/py-threadevent.c, python/py-type.c,
python/py-unwind.c, python/py-utils.c, python/py-value.c,
python/py-varobj.c, python/py-xmethods.c, python/python.c,
varobj.c: Change gdbpy_ref to gdbpy_ref<>.
2017-02-09 21:16:36 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-ref.h (gdbpy_ref_policy): Now a template.
|
|
|
|
|
(gdbpy_ref): Now a template; allow subclasses of PyObject to be
|
|
|
|
|
used.
|
|
|
|
|
* python/py-arch.c, python/py-bpevent.c, python/py-breakpoint.c,
|
|
|
|
|
python/py-cmd.c, python/py-continueevent.c, python/py-event.c,
|
|
|
|
|
python/py-exitedevent.c, python/py-finishbreakpoint.c,
|
|
|
|
|
python/py-framefilter.c, python/py-function.c,
|
|
|
|
|
python/py-inferior.c, python/py-infevents.c,
|
|
|
|
|
python/py-linetable.c, python/py-newobjfileevent.c,
|
|
|
|
|
python/py-param.c, python/py-prettyprint.c, python/py-ref.h,
|
|
|
|
|
python/py-signalevent.c, python/py-stopevent.c,
|
|
|
|
|
python/py-symbol.c, python/py-threadevent.c, python/py-type.c,
|
|
|
|
|
python/py-unwind.c, python/py-utils.c, python/py-value.c,
|
|
|
|
|
python/py-varobj.c, python/py-xmethods.c, python/python.c,
|
|
|
|
|
varobj.c: Change gdbpy_ref to gdbpy_ref<>.
|
|
|
|
|
|
Remove some ui_out-related cleanups from Python
This patch introduces a bit of infrastructure -- namely, a minimal
std::optional analogue called gdb::optional, and an RAII template
class that works like make_cleanup_ui_out_tuple_begin_end or
make_cleanup_ui_out_list_begin_end -- and then uses these in the
Python code. This removes a number of cleanups and generally
simplifies this code.
std::optional is only available in C++17. Normally I would have had
this code check __cplusplus, but my gcc apparently isn't new enough to
find <optional>, even with -std=c++1z; so, because I could not test
it, the patch does not do this.
gdb/ChangeLog
2017-02-10 Tom Tromey <tom@tromey.com>
* ui-out.h (ui_out_emit_type): New class.
(ui_out_emit_tuple, ui_out_emit_list): New typedefs.
* python/py-framefilter.c (py_print_single_arg): Use gdb::optional
and ui_out_emit_tuple.
(enumerate_locals): Likewise.
(py_mi_print_variables, py_print_locals, py_print_args): Use
ui_out_emit_list.
(py_print_frame): Use gdb::optional, ui_out_emit_tuple,
ui_out_emit_list.
* common/gdb_optional.h: New file.
2017-01-11 07:34:22 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* ui-out.h (ui_out_emit_type): New class.
|
|
|
|
|
(ui_out_emit_tuple, ui_out_emit_list): New typedefs.
|
|
|
|
|
* python/py-framefilter.c (py_print_single_arg): Use gdb::optional
|
|
|
|
|
and ui_out_emit_tuple.
|
|
|
|
|
(enumerate_locals): Likewise.
|
|
|
|
|
(py_mi_print_variables, py_print_locals, py_print_args): Use
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
(py_print_frame): Use gdb::optional, ui_out_emit_tuple,
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
* common/gdb_optional.h: New file.
|
|
|
|
|
|
2017-02-10 17:46:56 +01:00
|
|
|
|
2017-02-10 Martin Galvan <martingalvan@sourceware.org>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Update my e-mail address.
|
|
|
|
|
|
2017-02-10 17:37:31 +01:00
|
|
|
|
2017-02-10 Martin Galvan <martingalvan@sourceware.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/21122
|
|
|
|
|
* breakpoint.c (_initialize_breakpoint): Update the help description
|
|
|
|
|
of the 'commands' command to indicate that it takes a list argument.
|
|
|
|
|
|
2017-02-09 22:24:40 +01:00
|
|
|
|
2017-02-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* interps.c (current_interp_set_logging): Remove "return".
|
|
|
|
|
|
2017-02-09 16:35:33 +01:00
|
|
|
|
2017-02-09 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symtab.c (add_symtab_completions): Prevent NULL pointer
|
|
|
|
|
dereference.
|
|
|
|
|
|
Eliminate interp::quiet_p
This commit removes interp::quiet_p / interp_quiet_p /
interp_set_quiet, because AFAICS, it doesn't really do anything.
interp_quiet is only ever checked inside interp_set nowadays:
if (!first_time && !interp_quiet_p (interp))
{
xsnprintf (buffer, sizeof (buffer),
"Switching to interpreter \"%.24s\".\n", interp->name);
current_uiout->text (buffer);
}
I did a bit of archaelogy, and found that back in 4a8f6654 (2003), it
was also called in another place, to decide whether to print the CLI
prompt.
AFAICS, that condition is always false today, making that if/then
block always dead code. If we remove that code, then there are no
interp_quiet_p uses left in the tree, so we can remove it all.
There are two paths that lead to interp_set calls:
#1 - When installing the top level interpreter. In this case,
FIRST_TIME is true.
#2 - In interpreter_exec_cmd. In this case, the interpreter is always
set quiet before interp_set is called.
Grepping a gdb.log of an x86_64 GNU/Linux run for "Switching to
interpreter" (before this patch) doesn't find any hits.
I suspect the intention of this message was to support something like
a "set interpreter ..." command that would change the interpreter
permanently. But there's no such command.
Tested on x86_64 Fedora 23.
gdb/ChangeLog:
2017-02-08 Pedro Alves <palves@redhat.com>
* interps.c (interp::interp): Remove reference to quiet_p.
(interp_set): Make static. Remove dead "Switching to" output
code.
(interp_quiet_p, interp_set_quiet): Delete.
(interpreter_exec_cmd): Don't set the interpreter quiet.
* interps.h (interp_quiet_p): Make static.
(class interp) <quiet_p>: Remove field
2017-02-08 19:08:18 +01:00
|
|
|
|
2017-02-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* interps.c (interp::interp): Remove reference to quiet_p.
|
|
|
|
|
(interp_set): Make static. Remove dead "Switching to" output
|
|
|
|
|
code.
|
|
|
|
|
(interp_quiet_p, interp_set_quiet): Delete.
|
|
|
|
|
(interpreter_exec_cmd): Don't set the interpreter quiet.
|
|
|
|
|
* interps.h (interp_quiet_p): Make static.
|
|
|
|
|
(class interp) <quiet_p>: Remove field
|
|
|
|
|
|
2017-01-27 17:06:32 +01:00
|
|
|
|
2017-02-08 Jerome Guitton <guitton@adacore.com>
|
|
|
|
|
|
2017-01-10 15:15:53 +01:00
|
|
|
|
* cli/cli-decode.c (find_command_name_length): Make it extern.
|
|
|
|
|
* cli/cli-decode.h (find_command_name_length): Declare.
|
|
|
|
|
* cli/cli-script.c (command_name_equals, line_first_arg):
|
|
|
|
|
New functions.
|
|
|
|
|
(process_next_line): Use cli-decode to parse command names.
|
|
|
|
|
(build_command_line): Make args a constant pointer.
|
|
|
|
|
|
|
|
|
|
2017-02-08 Jerome Guitton <guitton@adacore.com>
|
2017-03-07 14:51:33 +01:00
|
|
|
|
|
2017-01-27 17:06:32 +01:00
|
|
|
|
* cli-decode.c (lookup_cmd_1, lookup_cmd_composition):
|
|
|
|
|
Remove case-insensitive search.
|
|
|
|
|
|
2017-02-07 22:21:54 +01:00
|
|
|
|
2017-02-07 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* sparc-tdep.c (sparc32_gdbarch_init): Do not place a + operator
|
|
|
|
|
at the end of the line. Avoids an ARI warning.
|
|
|
|
|
|
2017-02-06 10:12:00 +01:00
|
|
|
|
2017-02-06 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention support for record/replay of Intel 64 rdrand and
|
|
|
|
|
rdseed instructions.
|
|
|
|
|
i386-tdep.c (i386_process_record): Handle Intel 64 rdrand and rseed.
|
|
|
|
|
|
2017-02-06 08:44:03 +01:00
|
|
|
|
2017-02-06 Ivo Raisr <ivo.raisr@oracle.com>
|
|
|
|
|
|
|
|
|
|
PR tdep/20936
|
|
|
|
|
Provide and use sparc32 and sparc64 target description XML files.
|
|
|
|
|
* features/sparc/sparc32-cp0.xml, features/sparc/sparc32-cpu.xml,
|
|
|
|
|
features/sparc/sparc32-fpu.xml: New files for sparc 32-bit.
|
|
|
|
|
* features/sparc/sparc64-cp0.xml, features/sparc/sparc64-cpu.xml,
|
|
|
|
|
features/sparc/sparc64-fpu.xml: New files for sparc 64-bit.
|
|
|
|
|
* features/sparc/sparc32-solaris.xml: New file.
|
|
|
|
|
* features/sparc/sparc64-solaris.xml: New file.
|
|
|
|
|
* features/sparc/sparc32-solaris.c: Generated.
|
|
|
|
|
* features/sparc/sparc64-solaris.c: Generated.
|
|
|
|
|
* sparc-tdep.h: Account for differences in target descriptions.
|
|
|
|
|
* sparc-tdep.c (sparc32_register_name): Use target provided registers.
|
|
|
|
|
(sparc32_register_type): Use target provided registers.
|
|
|
|
|
(validate_tdesc_registers): New function.
|
|
|
|
|
(sparc32_gdbarch_init): Use tdesc_has_registers.
|
|
|
|
|
Set pseudoregister functions.
|
|
|
|
|
* sparc64-tdep.c (sparc64_register_name): Use target provided registers.
|
|
|
|
|
(sparc64_register_type): Use target provided registers.
|
|
|
|
|
(sparc64_init_abi): Set pseudoregister functions.
|
|
|
|
|
|
2017-02-04 06:11:46 +01:00
|
|
|
|
2017-02-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR rust/21097:
|
|
|
|
|
* rust-lang.c (rust_print_type) <TYPE_CODE_UNION>: Handle enums
|
|
|
|
|
with a single member.
|
|
|
|
|
|
C++-fy struct interp/cli_interp/tui_interp/mi_interp
- The interp->data field disappears, since we can put data in the
interpreter directly now. The "init" method remains in place, but
it now returns void.
- A few places check if the interpreter method is NULL before calling
it, and also check whether the method returns true/false. For some
of those methods, all current implementations always return true.
In those cases, this commit makes the C++-fied method return void
instead and cleans up the callers.
Tested on x86_64 Fedora 23.
gdb/ChangeLog:
2017-02-03 Pedro Alves <palves@redhat.com>
* cli/cli-interp.c (cli_interp_base::cli_interp_base)
(cli_interp_base::~cli_interp_base): New.
(cli_interp): New struct.
(as_cli_interp): Cast the interp itself to cli_interp.
(cli_interpreter_pre_command_loop): Rename to ...
(cli_interp_base::pre_command_loop): ... this. Remove 'self'
parameter.
(cli_interpreter_init): Rename to ...
(cli_interp::init): ... this. Remove 'self' parameter. Use
boolean. Make extern.
(cli_interpreter_resume): Rename to ...
(cli_interp::resume): ... this. Remove 'data' parameter. Make
extern.
(cli_interpreter_suspend): Rename to ...
(cli_interp::suspend): ... this. Remove 'data' parameter. Make
extern.
(cli_interpreter_exec): Rename to ...
(cli_interp::exec): ... this. Remove 'data' parameter. Make
extern.
(cli_interpreter_supports_command_editing): Rename to ...
(cli_interp_base::supports_command_editing): ... this. Remove
'interp' parameter. Make extern.
(cli_ui_out): Rename to ...
(cli_interp::interp_ui_out): ... this. Remove 'interp' parameter.
Make extern.
(cli_set_logging): Rename to ...
(cli_interp_base::set_logging): ... this. Remove 'interp'
parameter. Make extern.
(cli_interp_procs): Delete.
(cli_interp_factory): Adjust to use "new".
* cli/cli-interp.h: Include "interps.h".
(struct cli_interp_base): New struct.
* interps.c (struct interp): Delete. Fields moved to interps.h.
(interp_new): Delete.
(interp::interp, interp::~interp): New.
(interp_set): Use bool, and return void. Assume the interpreter
has suspend, init and resume methods, and that the all return
void.
(set_top_level_interpreter): interp_set returns void.
(interp_ui_out): Adapt.
(current_interp_set_logging): Adapt.
(interp_data): Delete.
(interp_pre_command_loop, interp_supports_command_editing): Adapt.
(interp_exec): Adapt.
(top_level_interpreter_data): Delete.
* interps.h (interp_init_ftype, interp_resume_ftype)
(interp_suspend_ftype, interp_exec_ftype)
(interp_pre_command_loop_ftype, interp_ui_out_ftype): Delete.
(class interp): New.
(interp_new): Delete.
(interp_set): Now returns void. Use bool.
(interp_data, top_level_interpreter_data): Delete.
* mi/mi-common.h: Include interps.h.
(class mi_interp): Inherit from interp. Define a ctor. Declare
init, resume, suspect, exec, interp_ui_out, set_logging and
pre_command_loop methods.
* mi/mi-interp.c (as_mi_interp): Cast the interp itself.
(mi_interpreter_init): Rename to ...
(mi_interp::init): ... this. Remove the 'interp' parameter, use
bool, return void and make extern. Adjust.
(mi_interpreter_resume): ... Rename to ...
(mi_interp::resume): ... this. Remove the 'data' parameter,
return void and make extern. Adjust.
(mi_interpreter_suspend): ... Rename to ...
(mi_interp::suspend): ... this. Remove the 'data' parameter,
return void and make extern. Adjust.
(mi_interpreter_exec): ... Rename to ...
(mi_interp::exec): ... this. Remove the 'data' parameter and make
extern. Adjust.
(mi_interpreter_pre_command_loop): ... Rename to ...
(mi_interp::pre_command_loop): ... this. Remove the 'self'
parameter and make extern.
(mi_on_normal_stop_1): Adjust.
(mi_ui_out): Rename to ...
(mi_interp::interp_ui_out): ... this. Remove the 'interp'
parameter and make extern. Adjust.
(mi_set_logging): Rename to ...
(mi_interp::set_logging): ... this. Remove the 'interp'
parameter and make extern. Adjust.
(mi_interp_procs): Delete.
(mi_interp_factory): Adjust to use 'new'.
* mi/mi-main.c (mi_cmd_gdb_exit, captured_mi_execute_command)
(mi_print_exception, mi_execute_command, mi_load_progress):
Adjust.
* tui/tui-interp.c (tui_interp): New class.
(as_tui_interp): Return a tui_interp pointer.
(tui_on_normal_stop, tui_on_signal_received)
(tui_on_end_stepping_range, tui_on_signal_exited, tui_on_exited)
(tui_on_no_history, tui_on_user_selected_context_changed): Adjust
to use interp::interp_ui_out.
(tui_init): Rename to ...
(tui_interp::init): ... this. Remove the 'self' parameter, use
bool, return void and make extern. Adjust.
(tui_resume): Rename to ...
(tui_interp::resume): ... this. Remove the 'data' parameter,
return void and make extern. Adjust.
(tui_suspend): Rename to ...
(tui_interp::suspend): ... this. Remove the 'data' parameter,
return void and make extern. Adjust.
(tui_ui_out): Rename to ...
(tui_interp::interp_ui_out): ... this. Remove the 'self'
parameter, and make extern. Adjust.
(tui_exec): Rename to ...
(tui_interp::exec): ... this. Remove the 'data' parameter and
make extern.
(tui_interp_procs): Delete.
(tui_interp_factory): Use "new".
2017-02-03 17:30:04 +01:00
|
|
|
|
2017-02-03 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-interp.c (cli_interp_base::cli_interp_base)
|
|
|
|
|
(cli_interp_base::~cli_interp_base): New.
|
|
|
|
|
(cli_interp): New struct.
|
|
|
|
|
(as_cli_interp): Cast the interp itself to cli_interp.
|
|
|
|
|
(cli_interpreter_pre_command_loop): Rename to ...
|
|
|
|
|
(cli_interp_base::pre_command_loop): ... this. Remove 'self'
|
|
|
|
|
parameter.
|
|
|
|
|
(cli_interpreter_init): Rename to ...
|
|
|
|
|
(cli_interp::init): ... this. Remove 'self' parameter. Use
|
|
|
|
|
boolean. Make extern.
|
|
|
|
|
(cli_interpreter_resume): Rename to ...
|
|
|
|
|
(cli_interp::resume): ... this. Remove 'data' parameter. Make
|
|
|
|
|
extern.
|
|
|
|
|
(cli_interpreter_suspend): Rename to ...
|
|
|
|
|
(cli_interp::suspend): ... this. Remove 'data' parameter. Make
|
|
|
|
|
extern.
|
|
|
|
|
(cli_interpreter_exec): Rename to ...
|
|
|
|
|
(cli_interp::exec): ... this. Remove 'data' parameter. Make
|
|
|
|
|
extern.
|
|
|
|
|
(cli_interpreter_supports_command_editing): Rename to ...
|
|
|
|
|
(cli_interp_base::supports_command_editing): ... this. Remove
|
|
|
|
|
'interp' parameter. Make extern.
|
|
|
|
|
(cli_ui_out): Rename to ...
|
|
|
|
|
(cli_interp::interp_ui_out): ... this. Remove 'interp' parameter.
|
|
|
|
|
Make extern.
|
|
|
|
|
(cli_set_logging): Rename to ...
|
|
|
|
|
(cli_interp_base::set_logging): ... this. Remove 'interp'
|
|
|
|
|
parameter. Make extern.
|
|
|
|
|
(cli_interp_procs): Delete.
|
|
|
|
|
(cli_interp_factory): Adjust to use "new".
|
|
|
|
|
* cli/cli-interp.h: Include "interps.h".
|
|
|
|
|
(struct cli_interp_base): New struct.
|
|
|
|
|
* interps.c (struct interp): Delete. Fields moved to interps.h.
|
|
|
|
|
(interp_new): Delete.
|
|
|
|
|
(interp::interp, interp::~interp): New.
|
|
|
|
|
(interp_set): Use bool, and return void. Assume the interpreter
|
|
|
|
|
has suspend, init and resume methods, and that the all return
|
|
|
|
|
void.
|
|
|
|
|
(set_top_level_interpreter): interp_set returns void.
|
|
|
|
|
(interp_ui_out): Adapt.
|
|
|
|
|
(current_interp_set_logging): Adapt.
|
|
|
|
|
(interp_data): Delete.
|
|
|
|
|
(interp_pre_command_loop, interp_supports_command_editing): Adapt.
|
|
|
|
|
(interp_exec): Adapt.
|
|
|
|
|
(top_level_interpreter_data): Delete.
|
|
|
|
|
* interps.h (interp_init_ftype, interp_resume_ftype)
|
|
|
|
|
(interp_suspend_ftype, interp_exec_ftype)
|
|
|
|
|
(interp_pre_command_loop_ftype, interp_ui_out_ftype): Delete.
|
|
|
|
|
(class interp): New.
|
|
|
|
|
(interp_new): Delete.
|
|
|
|
|
(interp_set): Now returns void. Use bool.
|
|
|
|
|
(interp_data, top_level_interpreter_data): Delete.
|
|
|
|
|
* mi/mi-common.h: Include interps.h.
|
|
|
|
|
(class mi_interp): Inherit from interp. Define a ctor. Declare
|
|
|
|
|
init, resume, suspect, exec, interp_ui_out, set_logging and
|
|
|
|
|
pre_command_loop methods.
|
|
|
|
|
* mi/mi-interp.c (as_mi_interp): Cast the interp itself.
|
|
|
|
|
(mi_interpreter_init): Rename to ...
|
|
|
|
|
(mi_interp::init): ... this. Remove the 'interp' parameter, use
|
|
|
|
|
bool, return void and make extern. Adjust.
|
|
|
|
|
(mi_interpreter_resume): ... Rename to ...
|
|
|
|
|
(mi_interp::resume): ... this. Remove the 'data' parameter,
|
|
|
|
|
return void and make extern. Adjust.
|
|
|
|
|
(mi_interpreter_suspend): ... Rename to ...
|
|
|
|
|
(mi_interp::suspend): ... this. Remove the 'data' parameter,
|
|
|
|
|
return void and make extern. Adjust.
|
|
|
|
|
(mi_interpreter_exec): ... Rename to ...
|
|
|
|
|
(mi_interp::exec): ... this. Remove the 'data' parameter and make
|
|
|
|
|
extern. Adjust.
|
|
|
|
|
(mi_interpreter_pre_command_loop): ... Rename to ...
|
|
|
|
|
(mi_interp::pre_command_loop): ... this. Remove the 'self'
|
|
|
|
|
parameter and make extern.
|
|
|
|
|
(mi_on_normal_stop_1): Adjust.
|
|
|
|
|
(mi_ui_out): Rename to ...
|
|
|
|
|
(mi_interp::interp_ui_out): ... this. Remove the 'interp'
|
|
|
|
|
parameter and make extern. Adjust.
|
|
|
|
|
(mi_set_logging): Rename to ...
|
|
|
|
|
(mi_interp::set_logging): ... this. Remove the 'interp'
|
|
|
|
|
parameter and make extern. Adjust.
|
|
|
|
|
(mi_interp_procs): Delete.
|
|
|
|
|
(mi_interp_factory): Adjust to use 'new'.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_gdb_exit, captured_mi_execute_command)
|
|
|
|
|
(mi_print_exception, mi_execute_command, mi_load_progress):
|
|
|
|
|
Adjust.
|
|
|
|
|
* tui/tui-interp.c (tui_interp): New class.
|
|
|
|
|
(as_tui_interp): Return a tui_interp pointer.
|
|
|
|
|
(tui_on_normal_stop, tui_on_signal_received)
|
|
|
|
|
(tui_on_end_stepping_range, tui_on_signal_exited, tui_on_exited)
|
|
|
|
|
(tui_on_no_history, tui_on_user_selected_context_changed): Adjust
|
|
|
|
|
to use interp::interp_ui_out.
|
|
|
|
|
(tui_init): Rename to ...
|
|
|
|
|
(tui_interp::init): ... this. Remove the 'self' parameter, use
|
|
|
|
|
bool, return void and make extern. Adjust.
|
|
|
|
|
(tui_resume): Rename to ...
|
|
|
|
|
(tui_interp::resume): ... this. Remove the 'data' parameter,
|
|
|
|
|
return void and make extern. Adjust.
|
|
|
|
|
(tui_suspend): Rename to ...
|
|
|
|
|
(tui_interp::suspend): ... this. Remove the 'data' parameter,
|
|
|
|
|
return void and make extern. Adjust.
|
|
|
|
|
(tui_ui_out): Rename to ...
|
|
|
|
|
(tui_interp::interp_ui_out): ... this. Remove the 'self'
|
|
|
|
|
parameter, and make extern. Adjust.
|
|
|
|
|
(tui_exec): Rename to ...
|
|
|
|
|
(tui_interp::exec): ... this. Remove the 'data' parameter and
|
|
|
|
|
make extern.
|
|
|
|
|
(tui_interp_procs): Delete.
|
|
|
|
|
(tui_interp_factory): Use "new".
|
|
|
|
|
|
2017-02-03 05:21:19 +01:00
|
|
|
|
2017-02-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-exp.y (ends_raw_string, space_then_number)
|
|
|
|
|
(rust_identifier_start_p): Return bool.
|
|
|
|
|
* rust-lang.c (rust_tuple_type_p, rust_underscore_fields)
|
|
|
|
|
(rust_tuple_struct_type_p, rust_tuple_variant_type_p)
|
|
|
|
|
(rust_slice_type_p, rust_range_type_p, rust_u8_type_p)
|
|
|
|
|
(rust_chartype_p): Return bool.
|
|
|
|
|
(val_print_struct, rust_print_struct_def, rust_print_type):
|
|
|
|
|
Update.
|
|
|
|
|
* rust-lang.h (rust_tuple_type_p, rust_tuple_struct_type_p):
|
|
|
|
|
Return bool.
|
|
|
|
|
|
2017-02-03 05:01:11 +01:00
|
|
|
|
2017-02-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-lang.c: Reindent.
|
|
|
|
|
|
2017-02-03 04:58:12 +01:00
|
|
|
|
2017-02-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-lang.h (rust_crate_for_block): Update.
|
|
|
|
|
* rust-lang.c (rust_crate_for_block): Return std::string.
|
|
|
|
|
(rust_get_disr_info): Use std:;string, not
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
* rust-exp.y (crate_name): Update.
|
|
|
|
|
|
Fix "maintenance selftest" printing stray instructions
The "maintenance selftest" command is printing odd bits of stray
instructions like:
~~~
brkwarning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB. Attempting to continue with the default HS settings.
brkmov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0breakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakM3.L = 0xffff;/* ( -1) M3=0x0xffff(65535) */break 8break 8warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB. Attempting to continue with the default cris:common_v10_v32 settings.
~~~
etc. Those appear because here:
class gdb_disassembler_test : public gdb_disassembler
{
public:
const bool verbose = false;
explicit gdb_disassembler_test (struct gdbarch *gdbarch,
const gdb_byte *insn,
size_t len)
: gdb_disassembler (gdbarch,
(verbose ? gdb_stdout : &null_stream),
gdb_disassembler_test::read_memory),
specifically in this line:
(verbose ? gdb_stdout : &null_stream),
"verbose" has not been initialized yet, because the order of
initialization is base classes first, then members. I.e. "verbose" is
only initialized after the base constructor is called. Since the
gdb_disassembler_test object is created on the stack, "verbose" has
garbage at that point. If the gargage is non-zero, then we end up
with the gdb_disassembler_test's stream incorrectly pointing to
gdb_stdout.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* disasm-selftests.c (print_one_insn_test): Move the "verbose"
field out of gdb_disassembler_test and make it static.
2017-02-03 00:36:29 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* disasm-selftests.c (print_one_insn_test): Move the "verbose"
|
|
|
|
|
field out of gdb_disassembler_test and make it static.
|
|
|
|
|
|
2017-02-03 00:08:12 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-common.h (struct mi_interp): Delete the mi2_interp,
|
|
|
|
|
mi1_interp and mi_interp fields.
|
|
|
|
|
|
Fix "-gdb-set logging redirect on" crash
This commit fixes a "-gdb-set logging redirect on" crash by not
handling "logging redirect on" on the fly.
Previous discussion here:
https://sourceware.org/ml/gdb-patches/2017-01/msg00467.html
Code for handling "logging redirect on" on the fly was added here:
https://sourceware.org/ml/gdb-patches/2010-08/msg00202.html
Meanwhile, MI gained support for logging, but flipping redirect "on"
on the fly was not considered. The result is that this sequence of
commands crashes GDB:
-gdb-set logging on
-gdb-set logging redirect on
Program received signal SIGSEGV, Segmentation fault.
0x00000000008dd7bc in gdb_flush (file=0x2a097f0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/ui-file.c:95
194 file->to_flush (file);
(top-gdb) bt
#0 0x00000000008dd7bc in gdb_flush(ui_file*) (file=0x2a097f0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/ui-file.c:95
#1 0x00000000007b5f34 in gdb_wait_for_event(int) (block=0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:752
#2 0x00000000007b52b6 in gdb_do_one_event() () at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:322
#3 0x00000000007b5362 in start_event_loop() () at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:371
#4 0x000000000082704a in captured_command_loop(void*) (data=0x0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:325
#5 0x00000000007b8d7c in catch_errors(int (*)(void*), void*, char*, return_mask) (func=0x827008 <captured_command_loop(void*)>, func_args=0x0, errstring=0x11dee51 "", mask=RETURN_MASK_ALL) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/exceptions.c:236
#6 0x000000000082839b in captured_main(void*) (data=0x7fffffffd820) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:1148
During symbol reading, cannot get low and high bounds for subprogram DIE at 24065.
#7 0x00000000008283c4 in gdb_main(captured_main_args*) (args=0x7fffffffd820) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:1158
#8 0x0000000000412d4d in main(int, char**) (argc=4, argv=0x7fffffffd928) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/gdb.c:32
The handling of redirect on the fly is not really a use case we need
to handle, IMO. Its inconsistent (other "set logging foo" commands
aren't handled on the fly), and complicates the code significantly.
Instead of complicating it further for MI, go back to the original
idea of warning, only:
https://sourceware.org/ml/gdb-patches/2010-08/msg00083.html
New test included.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* cli/cli-logging.c (maybe_warn_already_logging): New factored out
from ...
(set_logging_overwrite): ... here.
(logging_no_redirect_file): Delete.
(set_logging_redirect): Don't handle redirection on the fly.
Instead warn that "logging off" / "logging on" is necessary.
(pop_output_files): Delete references to logging_no_redirect_file.
(show_logging_command): Always speak in terms of what will happen
once logging is reenabled.
gdb/testsuite/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* gdb.mi/mi-logging.exp: Add "redirect while already logging"
tests.
2017-02-02 20:07:08 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
Move "tee" building down to interpreter::set_logging_proc
This patch gets rid of this hack in mi_set_logging:
/* The tee created already is based on gdb_stdout, which for MI
is a console and so we end up in an infinite loop of console
writing to ui_file writing to console etc. So discard the
existing tee (it hasn't been used yet, and MI won't ever use
it), and create one based on raw_stdout instead. */
By pushing down responsibility for the tee creation to the
interpreter. I.e., pushing the CLI bits out of handle_redirections
down to the CLI interpreter's set_logging_proc method.
This fixes a few leaks that I spotted, and then confirmed with
"valgrind --leak-check=full":
[...]
==21429== 56 (32 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 30,243 of 34,980
==21429== at 0x4C29216: operator new(unsigned long) (vg_replace_malloc.c:334)
==21429== by 0x62D9A9: mi_set_logging(interp*, int, ui_file*, ui_file*) (mi-interp.c:1395)
==21429== by 0x810B8A: current_interp_set_logging(int, ui_file*, ui_file*) (interps.c:360)
==21429== by 0x61C537: handle_redirections(int) (cli-logging.c:162)
==21429== by 0x61C6EC: set_logging_on(char*, int) (cli-logging.c:190)
==21429== by 0x6163BE: do_cfunc(cmd_list_element*, char*, int) (cli-decode.c:105)
==21429== by 0x6193C1: cmd_func(cmd_list_element*, char*, int) (cli-decode.c:1913)
==21429== by 0x8DB790: execute_command(char*, int) (top.c:674)
==21429== by 0x632AE6: mi_execute_cli_command(char const*, int, char const*) (mi-main.c:2343)
==21429== by 0x6329BA: mi_cmd_execute(mi_parse*) (mi-main.c:2306)
==21429== by 0x631E19: captured_mi_execute_command(ui_out*, mi_parse*) (mi-main.c:1998)
==21429== by 0x632389: mi_execute_command(char const*, int) (mi-main.c:2163)
==21429==
[...]
==26635== 24 bytes in 1 blocks are definitely lost in loss record 20,740 of 34,995
==26635== at 0x4C29216: operator new(unsigned long) (vg_replace_malloc.c:334)
==26635== by 0x61C355: handle_redirections(int) (cli-logging.c:131)
==26635== by 0x61C6EC: set_logging_on(char*, int) (cli-logging.c:190)
==26635== by 0x6163BE: do_cfunc(cmd_list_element*, char*, int) (cli-decode.c:105)
==26635== by 0x6193C1: cmd_func(cmd_list_element*, char*, int) (cli-decode.c:1913)
==26635== by 0x8DB7BC: execute_command(char*, int) (top.c:674)
==26635== by 0x7B9132: command_handler(char*) (event-top.c:590)
==26635== by 0x7B94F7: command_line_handler(char*) (event-top.c:780)
==26635== by 0x7B8ABB: gdb_rl_callback_handler(char*) (event-top.c:213)
==26635== by 0x933CE9: rl_callback_read_char (callback.c:220)
==26635== by 0x7B89ED: gdb_rl_callback_read_char_wrapper_noexcept() (event-top.c:175)
==26635== by 0x7B8A49: gdb_rl_callback_read_char_wrapper(void*) (event-top.c:192)
One is fixed by transfering ownership of the log file to the tee. In
pseudo-patch, since the code was moved at the same time:
- out = new tee_file (curr_output, false, logfile.get (), false);
+ out = new tee_file (curr_output, false, logfile.get (), true);
The other is this bit in mi_set_logging:
else
{
+ delete mi->raw_stdout;
I tried to split the leak fixes to a smaller preparatory patch, but
that was difficult exactly because of the tee hack in
handle_redirections -> mi_set_logging.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* cli/cli-interp.c (struct saved_output_files, saved_output):
Moved from cli/cli-logging.c.
(cli_set_logging): New function.
(cli_interp_procs): Install cli_set_logging.
* cli/cli-interp.h (make_logging_output, cli_set_logging):
Declare.
* cli/cli-logging.c (struct saved_output_files, saved_output):
Moved to cli/cli-interp.c.
(pop_output_files): Don't save outputs here.
(make_logging_output): New function.
(handle_redirections): Don't build tee nor save previous outputs
here.
* interps.c (current_interp_set_logging): Change prototype.
Assume there's always a set_logging_proc method installed.
* interps.h (interp_set_logging_ftype): Change prototype.
(current_interp_set_logging): Change prototype and adjust comment.
* mi/mi-interp.c (mi_set_logging): Change protototype. Adjust to
use make_logging_output.
* tui/tui-interp.c (tui_interp_procs): Install cli_set_logging.
2017-02-02 23:00:43 +01:00
|
|
|
|
* cli/cli-interp.c (struct saved_output_files, saved_output):
|
|
|
|
|
Moved from cli/cli-logging.c.
|
|
|
|
|
(cli_set_logging): New function.
|
|
|
|
|
(cli_interp_procs): Install cli_set_logging.
|
|
|
|
|
* cli/cli-interp.h (make_logging_output, cli_set_logging):
|
|
|
|
|
Declare.
|
|
|
|
|
* cli/cli-logging.c (struct saved_output_files, saved_output):
|
|
|
|
|
Moved to cli/cli-interp.c.
|
|
|
|
|
(pop_output_files): Don't save outputs here.
|
|
|
|
|
(make_logging_output): New function.
|
|
|
|
|
(handle_redirections): Don't build tee nor save previous outputs
|
|
|
|
|
here.
|
|
|
|
|
* interps.c (current_interp_set_logging): Change prototype.
|
|
|
|
|
Assume there's always a set_logging_proc method installed.
|
|
|
|
|
* interps.h (interp_set_logging_ftype): Change prototype.
|
|
|
|
|
(current_interp_set_logging): Change prototype and adjust comment.
|
|
|
|
|
* mi/mi-interp.c (mi_set_logging): Change protototype. Adjust to
|
|
|
|
|
use make_logging_output.
|
|
|
|
|
* tui/tui-interp.c (tui_interp_procs): Install cli_set_logging.
|
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
Fix "-gdb-set logging redirect on" crash
This commit fixes a "-gdb-set logging redirect on" crash by not
handling "logging redirect on" on the fly.
Previous discussion here:
https://sourceware.org/ml/gdb-patches/2017-01/msg00467.html
Code for handling "logging redirect on" on the fly was added here:
https://sourceware.org/ml/gdb-patches/2010-08/msg00202.html
Meanwhile, MI gained support for logging, but flipping redirect "on"
on the fly was not considered. The result is that this sequence of
commands crashes GDB:
-gdb-set logging on
-gdb-set logging redirect on
Program received signal SIGSEGV, Segmentation fault.
0x00000000008dd7bc in gdb_flush (file=0x2a097f0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/ui-file.c:95
194 file->to_flush (file);
(top-gdb) bt
#0 0x00000000008dd7bc in gdb_flush(ui_file*) (file=0x2a097f0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/ui-file.c:95
#1 0x00000000007b5f34 in gdb_wait_for_event(int) (block=0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:752
#2 0x00000000007b52b6 in gdb_do_one_event() () at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:322
#3 0x00000000007b5362 in start_event_loop() () at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:371
#4 0x000000000082704a in captured_command_loop(void*) (data=0x0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:325
#5 0x00000000007b8d7c in catch_errors(int (*)(void*), void*, char*, return_mask) (func=0x827008 <captured_command_loop(void*)>, func_args=0x0, errstring=0x11dee51 "", mask=RETURN_MASK_ALL) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/exceptions.c:236
#6 0x000000000082839b in captured_main(void*) (data=0x7fffffffd820) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:1148
During symbol reading, cannot get low and high bounds for subprogram DIE at 24065.
#7 0x00000000008283c4 in gdb_main(captured_main_args*) (args=0x7fffffffd820) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:1158
#8 0x0000000000412d4d in main(int, char**) (argc=4, argv=0x7fffffffd928) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/gdb.c:32
The handling of redirect on the fly is not really a use case we need
to handle, IMO. Its inconsistent (other "set logging foo" commands
aren't handled on the fly), and complicates the code significantly.
Instead of complicating it further for MI, go back to the original
idea of warning, only:
https://sourceware.org/ml/gdb-patches/2010-08/msg00083.html
New test included.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* cli/cli-logging.c (maybe_warn_already_logging): New factored out
from ...
(set_logging_overwrite): ... here.
(logging_no_redirect_file): Delete.
(set_logging_redirect): Don't handle redirection on the fly.
Instead warn that "logging off" / "logging on" is necessary.
(pop_output_files): Delete references to logging_no_redirect_file.
(show_logging_command): Always speak in terms of what will happen
once logging is reenabled.
gdb/testsuite/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* gdb.mi/mi-logging.exp: Add "redirect while already logging"
tests.
2017-02-02 20:07:08 +01:00
|
|
|
|
* cli/cli-logging.c (maybe_warn_already_logging): New factored out
|
|
|
|
|
from ...
|
|
|
|
|
(set_logging_overwrite): ... here.
|
|
|
|
|
(logging_no_redirect_file): Delete.
|
|
|
|
|
(set_logging_redirect): Don't handle redirection on the fly.
|
|
|
|
|
Instead warn that "logging off" / "logging on" is necessary.
|
|
|
|
|
(pop_output_files): Delete references to logging_no_redirect_file.
|
|
|
|
|
(show_logging_command): Always speak in terms of what will happen
|
|
|
|
|
once logging is reenabled.
|
|
|
|
|
|
2017-02-02 12:28:40 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* disasm.h (gdb_pretty_print_disassembler): Tweak intro comment.
|
|
|
|
|
|
2017-02-02 12:11:47 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* disasm.c (gdb_pretty_print_insn): Rename to ...
|
|
|
|
|
(gdb_pretty_print_disassembler::pretty_print_insn): ... this.
|
|
|
|
|
Remove gdbarch parameter. Adapt to clear the object's buffers
|
|
|
|
|
instead of allocating new buffers, and to print using the object's
|
|
|
|
|
gdb_disassembler instead of calling gdb_print_insn.
|
|
|
|
|
(dump_insns): Use gdb_pretty_print_disassembler.
|
|
|
|
|
* disasm.h (gdb_pretty_print_insn): Delete declaration.
|
|
|
|
|
(gdb_pretty_print_disassembler): New class.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Use
|
|
|
|
|
gdb_pretty_print_disassembler.
|
|
|
|
|
|
Eliminate make_cleanup_ui_file_delete / make ui_file a class hierarchy
This patch starts from the desire to eliminate
make_cleanup_ui_file_delete, but then goes beyond. It makes ui_file &
friends a real C++ class hierarchy, and switches temporary
ui_file-like objects to stack-based allocation.
- mem_fileopen -> string_file
mem_fileopen is replaced with a new string_file class that is treated
as a value class created on the stack. This alone eliminates most
make_cleanup_ui_file_delete calls, and, simplifies code a whole lot
(diffstat shows around 1k loc dropped.)
string_file's internal buffer is a std::string, thus the "string" in
the name. This simplifies the implementation much, compared to
mem_fileopen, which managed growing its internal buffer manually.
- ui_file_as_string, ui_file_strdup, ui_file_obsavestring all gone
The new string_file class has a string() method that provides direct
writable access to the internal std::string buffer. This replaced
ui_file_as_string, which forced a copy of the same data the stream had
inside. With direct access via a writable reference, we can instead
move the string out of the string_stream, avoiding deep string
copying.
Related, ui_file_xstrdup calls are replaced with xstrdup'ping the
stream's string, and ui_file_obsavestring is replaced by
obstack_copy0.
With all those out of the way, getting rid of the weird ui_file_put
mechanism was possible.
- New ui_file::printf, ui_file::puts, etc. methods
These simplify / clarify client code. I considered splitting
client-code changes, like these, e.g.:
- stb = mem_fileopen ();
- fprintf_unfiltered (stb, "%s%s%s",
- _("The valid values are:\n"),
- regdesc,
- _("The default is \"std\"."));
+ string_file stb;
+ stb.printf ("%s%s%s",
+ _("The valid values are:\n"),
+ regdesc,
+ _("The default is \"std\"."));
In two steps, with the first step leaving fprintf_unfiltered (etc.)
calls in place, and only afterwards do a pass to change all those to
call stb.printf etc.. I didn't do that split, because (when I tried),
it turned out to be pointless make-work: the first pass would have to
touch the fprintf_unfiltered line anyway, to replace "stb" with
"&stb".
- gdb_fopen replaced with stack-based objects
This avoids the need for cleanups or unique_ptr's. I.e., this:
struct ui_file *file = gdb_fopen (filename, "w");
if (filename == NULL)
perror_with_name (filename);
cleanups = make_cleanup_ui_file_delete (file);
// use file.
do_cleanups (cleanups);
is replaced with this:
stdio_file file;
if (!file.open (filename, "w"))
perror_with_name (filename);
// use file.
- odd contorsions in null_file_write / null_file_fputs around when to
call to_fputs / to_write eliminated.
- Global null_stream object
A few places that were allocating a ui_file in order to print to
"nowhere" are adjusted to instead refer to a new 'null_stream' global
stream.
- TUI's tui_sfileopen eliminated. TUI's ui_file much simplified
The TUI's ui_file was serving a dual purpose. It supported being used
as string buffer, and supported being backed by a stdio FILE. The
string buffer part is gone, replaced by using of string_file. The
'FILE *' support is now much simplified, by making the TUI's ui_file
inherit from stdio_file.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* ada-lang.c (type_as_string): Use string_file.
* ada-valprint.c (ada_print_floating): Use string_file.
* ada-varobj.c (ada_varobj_scalar_image)
(ada_varobj_get_value_image): Use string_file.
* aix-thread.c (aix_thread_extra_thread_info): Use string_file.
* arm-tdep.c (_initialize_arm_tdep): Use string_printf.
* breakpoint.c (update_inserted_breakpoint_locations)
(insert_breakpoint_locations, reattach_breakpoints)
(print_breakpoint_location, print_one_detail_ranged_breakpoint)
(print_it_watchpoint): Use string_file.
(save_breakpoints): Use stdio_file.
* c-exp.y (oper): Use string_file.
* cli/cli-logging.c (set_logging_redirect): Use ui_file_up and
tee_file.
(pop_output_files): Use delete.
(handle_redirections): Use stdio_file and tee_file.
* cli/cli-setshow.c (do_show_command): Use string_file.
* compile/compile-c-support.c (c_compute_program): Use
string_file.
* compile/compile-c-symbols.c (generate_vla_size): Take a
'string_file &' instead of a 'ui_file *'.
(generate_c_for_for_one_variable): Take a 'string_file &' instead
of a 'ui_file *'. Use string_file.
(generate_c_for_variable_locations): Take a 'string_file &'
instead of a 'ui_file *'.
* compile/compile-internal.h (generate_c_for_for_one_variable):
Take a 'string_file &' instead of a 'ui_file *'.
* compile/compile-loc2c.c (push, pushf, unary, binary)
(print_label, pushf_register_address, pushf_register)
(do_compile_dwarf_expr_to_c): Take a 'string_file &' instead of a
'ui_file *'. Adjust.
* compile/compile.c (compile_to_object): Use string_file.
* compile/compile.h (compile_dwarf_expr_to_c)
(compile_dwarf_bounds_to_c): Take a 'string_file &' instead of a
'ui_file *'.
* cp-support.c (inspect_type): Use string_file and obstack_copy0.
(replace_typedefs_qualified_name): Use string_file and
obstack_copy0.
* disasm.c (gdb_pretty_print_insn): Use string_file.
(gdb_disassembly): Adjust reference the null_stream global.
(do_ui_file_delete): Delete.
(gdb_insn_length): Use null_stream.
* dummy-frame.c (maintenance_print_dummy_frames): Use stdio_file.
* dwarf2loc.c (dwarf2_compile_property_to_c)
(locexpr_generate_c_location, loclist_generate_c_location): Take a
'string_file &' instead of a 'ui_file *'.
* dwarf2loc.h (dwarf2_compile_property_to_c): Likewise.
* dwarf2read.c (do_ui_file_peek_last): Delete.
(dwarf2_compute_name): Use string_file.
* event-top.c (gdb_setup_readline): Use stdio_file.
* gdbarch.sh (verify_gdbarch): Use string_file.
* gdbtypes.c (safe_parse_type): Use null_stream.
* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
string_file.
* guile/scm-disasm.c (gdbscm_print_insn_from_port): Take a
'string_file *' instead of a 'ui_file *'.
(gdbscm_arch_disassemble): Use string_file.
* guile/scm-frame.c (frscm_print_frame_smob): Use string_file.
* guile/scm-ports.c (class ioscm_file_port): Now a class that
inherits from ui_file.
(ioscm_file_port_delete, ioscm_file_port_rewind)
(ioscm_file_port_put): Delete.
(ioscm_file_port_write): Rename to ...
(ioscm_file_port::write): ... this. Remove file_port_magic
checks.
(ioscm_file_port_new): Delete.
(ioscm_with_output_to_port_worker): Use ioscm_file_port and
ui_file_up.
* guile/scm-type.c (tyscm_type_name): Use string_file.
* guile/scm-value.c (vlscm_print_value_smob, gdbscm_value_print):
Use string_file.
* infcmd.c (print_return_value_1): Use string_file.
* infrun.c (print_target_wait_results): Use string_file.
* language.c (add_language): Use string_file.
* location.c (explicit_to_string_internal): Use string_file.
* main.c (captured_main_1): Use null_file.
* maint.c (maintenance_print_architecture): Use stdio_file.
* mi/mi-cmd-stack.c (list_arg_or_local): Use string_file.
* mi/mi-common.h (struct mi_interp) <out, err, log, targ,
event_channel>: Change type to mi_console_file pointer.
* mi/mi-console.c (mi_console_file_fputs, mi_console_file_flush)
(mi_console_file_delete): Delete.
(struct mi_console_file): Delete.
(mi_console_file_magic): Delete.
(mi_console_file_new): Delete.
(mi_console_file::mi_console_file): New.
(mi_console_file_delete): Delete.
(mi_console_file_fputs): Delete.
(mi_console_file::write): New.
(mi_console_raw_packet): Delete.
(mi_console_file::flush): New.
(mi_console_file_flush): Delete.
(mi_console_set_raw): Rename to ...
(mi_console_file::set_raw): ... this.
* mi/mi-console.h (class mi_console_file): New class.
(mi_console_file_new, mi_console_set_raw): Delete.
* mi/mi-interp.c (mi_interpreter_init): Use mi_console_file.
(mi_set_logging): Use delete and tee_file. Adjust.
* mi/mi-main.c (output_register): Use string_file.
(mi_cmd_data_evaluate_expression): Use string_file.
(mi_cmd_data_read_memory): Use string_file.
(mi_cmd_execute, print_variable_or_computed): Use string_file.
* mi/mi-out.c (mi_ui_out::main_stream): New.
(mi_ui_out::rewind): Use main_stream and
string_file.
(mi_ui_out::put): Use main_stream and string_file.
(mi_ui_out::mi_ui_out): Remove 'stream' parameter.
Allocate a 'string_file' instead.
(mi_out_new): Don't allocate a mem_fileopen stream here.
* mi/mi-out.h (mi_ui_out::mi_ui_out): Remove 'stream' parameter.
(mi_ui_out::main_stream): Declare method.
* printcmd.c (eval_command): Use string_file.
* psymtab.c (maintenance_print_psymbols): Use stdio_file.
* python/py-arch.c (archpy_disassemble): Use string_file.
* python/py-breakpoint.c (bppy_get_commands): Use string_file.
* python/py-frame.c (frapy_str): Use string_file.
* python/py-framefilter.c (py_print_type, py_print_single_arg):
Use string_file.
* python/py-type.c (typy_str): Use string_file.
* python/py-unwind.c (unwind_infopy_str): Use string_file.
* python/py-value.c (valpy_str): Use string_file.
* record-btrace.c (btrace_insn_history): Use string_file.
* regcache.c (regcache_print): Use stdio_file.
* reggroups.c (maintenance_print_reggroups): Use stdio_file.
* remote.c (escape_buffer): Use string_file.
* rust-lang.c (rust_get_disr_info): Use string_file.
* serial.c (serial_open_ops_1): Use stdio_file.
(do_serial_close): Use delete.
* stack.c (print_frame_arg): Use string_file.
(print_frame_args): Remove local mem_fileopen stream, not used.
(print_frame): Use string_file.
* symmisc.c (maintenance_print_symbols): Use stdio_file.
* symtab.h (struct symbol_computed_ops) <generate_c_location>:
Take a 'string_file *' instead of a 'ui_file *'.
* top.c (new_ui): Use stdio_file and stderr_file.
(free_ui): Use delete.
(execute_command_to_string): Use string_file.
(quit_confirm): Use string_file.
* tracepoint.c (collection_list::append_exp): Use string_file.
* tui/tui-disasm.c (tui_disassemble): Use string_file.
* tui/tui-file.c: Don't include "ui-file.h".
(enum streamtype, struct tui_stream): Delete.
(tui_file_new, tui_file_delete, tui_fileopen, tui_sfileopen)
(tui_file_isatty, tui_file_rewind, tui_file_put): Delete.
(tui_file::tui_file): New method.
(tui_file_fputs): Delete.
(tui_file_get_strbuf): Delete.
(tui_file::puts): New method.
(tui_file_adjust_strbuf): Delete.
(tui_file_flush): Delete.
(tui_file::flush): New method.
* tui/tui-file.h: Tweak intro comment.
Include ui-file.h.
(tui_fileopen, tui_sfileopen, tui_file_get_strbuf)
(tui_file_adjust_strbuf): Delete declarations.
(class tui_file): New class.
* tui/tui-io.c (tui_initialize_io): Use tui_file.
* tui/tui-regs.c (tui_restore_gdbout): Use delete.
(tui_register_format): Use string_stream.
* tui/tui-stack.c (tui_make_status_line): Use string_file.
(tui_get_function_from_frame): Use string_file.
* typeprint.c (type_to_string): Use string_file.
* ui-file.c (struct ui_file, ui_file_magic, ui_file_new): Delete.
(null_stream): New global.
(ui_file_delete): Delete.
(ui_file::ui_file): New.
(null_file_isatty): Delete.
(ui_file::~ui_file): New.
(null_file_rewind): Delete.
(ui_file::printf): New.
(null_file_put): Delete.
(null_file_flush): Delete.
(ui_file::putstr): New.
(null_file_write): Delete.
(ui_file::putstrn): New.
(null_file_read): Delete.
(ui_file::putc): New.
(null_file_fputs): Delete.
(null_file_write_async_safe): Delete.
(ui_file::vprintf): New.
(null_file_delete): Delete.
(null_file::write): New.
(null_file_fseek): Delete.
(null_file::puts): New.
(ui_file_data): Delete.
(null_file::write_async_safe): New.
(gdb_flush, ui_file_isatty): Adjust.
(ui_file_put, ui_file_rewind): Delete.
(ui_file_write): Adjust.
(ui_file_write_for_put): Delete.
(ui_file_write_async_safe, ui_file_read): Adjust.
(ui_file_fseek): Delete.
(fputs_unfiltered): Adjust.
(set_ui_file_flush, set_ui_file_isatty, set_ui_file_rewind)
(set_ui_file_put, set_ui_file_write, set_ui_file_write_async_safe)
(set_ui_file_read, set_ui_file_fputs, set_ui_file_fseek)
(set_ui_file_data): Delete.
(string_file::~string_file, string_file::write)
(struct accumulated_ui_file, do_ui_file_xstrdup, ui_file_xstrdup)
(do_ui_file_as_string, ui_file_as_string): Delete.
(do_ui_file_obsavestring, ui_file_obsavestring): Delete.
(struct mem_file): Delete.
(mem_file_new): Delete.
(stdio_file::stdio_file): New.
(mem_file_delete): Delete.
(stdio_file::stdio_file): New.
(mem_fileopen): Delete.
(stdio_file::~stdio_file): New.
(mem_file_rewind): Delete.
(stdio_file::set_stream): New.
(mem_file_put): Delete.
(stdio_file::open): New.
(mem_file_write): Delete.
(stdio_file_magic, struct stdio_file): Delete.
(stdio_file_new, stdio_file_delete, stdio_file_flush): Delete.
(stdio_file::flush): New.
(stdio_file_read): Rename to ...
(stdio_file::read): ... this. Adjust.
(stdio_file_write): Rename to ...
(stdio_file::write): ... this. Adjust.
(stdio_file_write_async_safe): Rename to ...
(stdio_file::write_async_safe) ... this. Adjust.
(stdio_file_fputs): Rename to ...
(stdio_file::puts) ... this. Adjust.
(stdio_file_isatty): Delete.
(stdio_file_fseek): Delete.
(stdio_file::isatty): New.
(stderr_file_write): Rename to ...
(stderr_file::write) ... this. Adjust.
(stderr_file_fputs): Rename to ...
(stderr_file::puts) ... this. Adjust.
(stderr_fileopen, stdio_fileopen, gdb_fopen): Delete.
(stderr_file::stderr_file): New.
(tee_file_magic): Delete.
(struct tee_file): Delete.
(tee_file::tee_file): New.
(tee_file_new): Delete.
(tee_file::~tee_file): New.
(tee_file_delete): Delete.
(tee_file_flush): Rename to ...
(tee_file::flush): ... this. Adjust.
(tee_file_write): Rename to ...
(tee_file::write): ... this. Adjust.
(tee_file::write_async_safe): New.
(tee_file_fputs): Rename to ...
(tee_file::puts): ... this. Adjust.
(tee_file_isatty): Rename to ...
(tee_file::isatty): ... this. Adjust.
* ui-file.h (struct obstack, struct ui_file): Don't
forward-declare.
(ui_file_new, ui_file_flush_ftype, set_ui_file_flush)
(ui_file_write_ftype)
(set_ui_file_write, ui_file_fputs_ftype, set_ui_file_fputs)
(ui_file_write_async_safe_ftype, set_ui_file_write_async_safe)
(ui_file_read_ftype, set_ui_file_read, ui_file_isatty_ftype)
(set_ui_file_isatty, ui_file_rewind_ftype, set_ui_file_rewind)
(ui_file_put_method_ftype, ui_file_put_ftype, set_ui_file_put)
(ui_file_delete_ftype, set_ui_file_data, ui_file_fseek_ftype)
(set_ui_file_fseek): Delete.
(ui_file_data, ui_file_delete, ui_file_rewind)
(struct ui_file): New.
(ui_file_up): New.
(class null_file): New.
(null_stream): Declare.
(ui_file_write_for_put, ui_file_put): Delete.
(ui_file_xstrdup, ui_file_as_string, ui_file_obsavestring):
Delete.
(ui_file_fseek, mem_fileopen, stdio_fileopen, stderr_fileopen)
(gdb_fopen, tee_file_new): Delete.
(struct string_file): New.
(struct stdio_file): New.
(stdio_file_up): New.
(struct stderr_file): New.
(class tee_file): New.
* ui-out.c (ui_out::field_stream): Take a 'string_file &' instead
of a 'ui_file *'. Adjust.
* ui-out.h (class ui_out) <field_stream>: Likewise.
* utils.c (do_ui_file_delete, make_cleanup_ui_file_delete)
(null_stream): Delete.
(error_stream): Take a 'string_file &' instead of a 'ui_file *'.
Adjust.
* utils.h (struct ui_file): Delete forward declaration..
(make_cleanup_ui_file_delete, null_stream): Delete declarations.
(error_stream): Take a 'string_file &' instead of a
'ui_file *'.
* varobj.c (varobj_value_get_print_value): Use string_file.
* xtensa-tdep.c (xtensa_verify_config): Use string_file.
* gdbarch.c: Regenerate.
2017-02-02 12:11:47 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (type_as_string): Use string_file.
|
|
|
|
|
* ada-valprint.c (ada_print_floating): Use string_file.
|
|
|
|
|
* ada-varobj.c (ada_varobj_scalar_image)
|
|
|
|
|
(ada_varobj_get_value_image): Use string_file.
|
|
|
|
|
* aix-thread.c (aix_thread_extra_thread_info): Use string_file.
|
|
|
|
|
* arm-tdep.c (_initialize_arm_tdep): Use string_printf.
|
|
|
|
|
* breakpoint.c (update_inserted_breakpoint_locations)
|
|
|
|
|
(insert_breakpoint_locations, reattach_breakpoints)
|
|
|
|
|
(print_breakpoint_location, print_one_detail_ranged_breakpoint)
|
|
|
|
|
(print_it_watchpoint): Use string_file.
|
|
|
|
|
(save_breakpoints): Use stdio_file.
|
|
|
|
|
* c-exp.y (oper): Use string_file.
|
|
|
|
|
* cli/cli-logging.c (set_logging_redirect): Use ui_file_up and
|
|
|
|
|
tee_file.
|
|
|
|
|
(pop_output_files): Use delete.
|
|
|
|
|
(handle_redirections): Use stdio_file and tee_file.
|
|
|
|
|
* cli/cli-setshow.c (do_show_command): Use string_file.
|
|
|
|
|
* compile/compile-c-support.c (c_compute_program): Use
|
|
|
|
|
string_file.
|
|
|
|
|
* compile/compile-c-symbols.c (generate_vla_size): Take a
|
|
|
|
|
'string_file &' instead of a 'ui_file *'.
|
|
|
|
|
(generate_c_for_for_one_variable): Take a 'string_file &' instead
|
|
|
|
|
of a 'ui_file *'. Use string_file.
|
|
|
|
|
(generate_c_for_variable_locations): Take a 'string_file &'
|
|
|
|
|
instead of a 'ui_file *'.
|
|
|
|
|
* compile/compile-internal.h (generate_c_for_for_one_variable):
|
|
|
|
|
Take a 'string_file &' instead of a 'ui_file *'.
|
|
|
|
|
* compile/compile-loc2c.c (push, pushf, unary, binary)
|
|
|
|
|
(print_label, pushf_register_address, pushf_register)
|
|
|
|
|
(do_compile_dwarf_expr_to_c): Take a 'string_file &' instead of a
|
|
|
|
|
'ui_file *'. Adjust.
|
|
|
|
|
* compile/compile.c (compile_to_object): Use string_file.
|
|
|
|
|
* compile/compile.h (compile_dwarf_expr_to_c)
|
|
|
|
|
(compile_dwarf_bounds_to_c): Take a 'string_file &' instead of a
|
|
|
|
|
'ui_file *'.
|
|
|
|
|
* cp-support.c (inspect_type): Use string_file and obstack_copy0.
|
|
|
|
|
(replace_typedefs_qualified_name): Use string_file and
|
|
|
|
|
obstack_copy0.
|
|
|
|
|
* disasm.c (gdb_pretty_print_insn): Use string_file.
|
|
|
|
|
(gdb_disassembly): Adjust reference the null_stream global.
|
|
|
|
|
(do_ui_file_delete): Delete.
|
|
|
|
|
(gdb_insn_length): Use null_stream.
|
|
|
|
|
* dummy-frame.c (maintenance_print_dummy_frames): Use stdio_file.
|
|
|
|
|
* dwarf2loc.c (dwarf2_compile_property_to_c)
|
|
|
|
|
(locexpr_generate_c_location, loclist_generate_c_location): Take a
|
|
|
|
|
'string_file &' instead of a 'ui_file *'.
|
|
|
|
|
* dwarf2loc.h (dwarf2_compile_property_to_c): Likewise.
|
|
|
|
|
* dwarf2read.c (do_ui_file_peek_last): Delete.
|
|
|
|
|
(dwarf2_compute_name): Use string_file.
|
|
|
|
|
* event-top.c (gdb_setup_readline): Use stdio_file.
|
|
|
|
|
* gdbarch.sh (verify_gdbarch): Use string_file.
|
|
|
|
|
* gdbtypes.c (safe_parse_type): Use null_stream.
|
|
|
|
|
* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
|
|
|
|
|
string_file.
|
|
|
|
|
* guile/scm-disasm.c (gdbscm_print_insn_from_port): Take a
|
|
|
|
|
'string_file *' instead of a 'ui_file *'.
|
|
|
|
|
(gdbscm_arch_disassemble): Use string_file.
|
|
|
|
|
* guile/scm-frame.c (frscm_print_frame_smob): Use string_file.
|
|
|
|
|
* guile/scm-ports.c (class ioscm_file_port): Now a class that
|
|
|
|
|
inherits from ui_file.
|
|
|
|
|
(ioscm_file_port_delete, ioscm_file_port_rewind)
|
|
|
|
|
(ioscm_file_port_put): Delete.
|
|
|
|
|
(ioscm_file_port_write): Rename to ...
|
|
|
|
|
(ioscm_file_port::write): ... this. Remove file_port_magic
|
|
|
|
|
checks.
|
|
|
|
|
(ioscm_file_port_new): Delete.
|
|
|
|
|
(ioscm_with_output_to_port_worker): Use ioscm_file_port and
|
|
|
|
|
ui_file_up.
|
|
|
|
|
* guile/scm-type.c (tyscm_type_name): Use string_file.
|
|
|
|
|
* guile/scm-value.c (vlscm_print_value_smob, gdbscm_value_print):
|
|
|
|
|
Use string_file.
|
|
|
|
|
* infcmd.c (print_return_value_1): Use string_file.
|
|
|
|
|
* infrun.c (print_target_wait_results): Use string_file.
|
|
|
|
|
* language.c (add_language): Use string_file.
|
|
|
|
|
* location.c (explicit_to_string_internal): Use string_file.
|
|
|
|
|
* main.c (captured_main_1): Use null_file.
|
|
|
|
|
* maint.c (maintenance_print_architecture): Use stdio_file.
|
|
|
|
|
* mi/mi-cmd-stack.c (list_arg_or_local): Use string_file.
|
|
|
|
|
* mi/mi-common.h (struct mi_interp) <out, err, log, targ,
|
|
|
|
|
event_channel>: Change type to mi_console_file pointer.
|
|
|
|
|
* mi/mi-console.c (mi_console_file_fputs, mi_console_file_flush)
|
|
|
|
|
(mi_console_file_delete): Delete.
|
|
|
|
|
(struct mi_console_file): Delete.
|
|
|
|
|
(mi_console_file_magic): Delete.
|
|
|
|
|
(mi_console_file_new): Delete.
|
|
|
|
|
(mi_console_file::mi_console_file): New.
|
|
|
|
|
(mi_console_file_delete): Delete.
|
|
|
|
|
(mi_console_file_fputs): Delete.
|
|
|
|
|
(mi_console_file::write): New.
|
|
|
|
|
(mi_console_raw_packet): Delete.
|
|
|
|
|
(mi_console_file::flush): New.
|
|
|
|
|
(mi_console_file_flush): Delete.
|
|
|
|
|
(mi_console_set_raw): Rename to ...
|
|
|
|
|
(mi_console_file::set_raw): ... this.
|
|
|
|
|
* mi/mi-console.h (class mi_console_file): New class.
|
|
|
|
|
(mi_console_file_new, mi_console_set_raw): Delete.
|
|
|
|
|
* mi/mi-interp.c (mi_interpreter_init): Use mi_console_file.
|
|
|
|
|
(mi_set_logging): Use delete and tee_file. Adjust.
|
|
|
|
|
* mi/mi-main.c (output_register): Use string_file.
|
|
|
|
|
(mi_cmd_data_evaluate_expression): Use string_file.
|
|
|
|
|
(mi_cmd_data_read_memory): Use string_file.
|
|
|
|
|
(mi_cmd_execute, print_variable_or_computed): Use string_file.
|
|
|
|
|
* mi/mi-out.c (mi_ui_out::main_stream): New.
|
|
|
|
|
(mi_ui_out::rewind): Use main_stream and
|
|
|
|
|
string_file.
|
|
|
|
|
(mi_ui_out::put): Use main_stream and string_file.
|
|
|
|
|
(mi_ui_out::mi_ui_out): Remove 'stream' parameter.
|
|
|
|
|
Allocate a 'string_file' instead.
|
|
|
|
|
(mi_out_new): Don't allocate a mem_fileopen stream here.
|
|
|
|
|
* mi/mi-out.h (mi_ui_out::mi_ui_out): Remove 'stream' parameter.
|
|
|
|
|
(mi_ui_out::main_stream): Declare method.
|
|
|
|
|
* printcmd.c (eval_command): Use string_file.
|
|
|
|
|
* psymtab.c (maintenance_print_psymbols): Use stdio_file.
|
|
|
|
|
* python/py-arch.c (archpy_disassemble): Use string_file.
|
|
|
|
|
* python/py-breakpoint.c (bppy_get_commands): Use string_file.
|
|
|
|
|
* python/py-frame.c (frapy_str): Use string_file.
|
|
|
|
|
* python/py-framefilter.c (py_print_type, py_print_single_arg):
|
|
|
|
|
Use string_file.
|
|
|
|
|
* python/py-type.c (typy_str): Use string_file.
|
|
|
|
|
* python/py-unwind.c (unwind_infopy_str): Use string_file.
|
|
|
|
|
* python/py-value.c (valpy_str): Use string_file.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Use string_file.
|
|
|
|
|
* regcache.c (regcache_print): Use stdio_file.
|
|
|
|
|
* reggroups.c (maintenance_print_reggroups): Use stdio_file.
|
|
|
|
|
* remote.c (escape_buffer): Use string_file.
|
|
|
|
|
* rust-lang.c (rust_get_disr_info): Use string_file.
|
|
|
|
|
* serial.c (serial_open_ops_1): Use stdio_file.
|
|
|
|
|
(do_serial_close): Use delete.
|
|
|
|
|
* stack.c (print_frame_arg): Use string_file.
|
|
|
|
|
(print_frame_args): Remove local mem_fileopen stream, not used.
|
|
|
|
|
(print_frame): Use string_file.
|
|
|
|
|
* symmisc.c (maintenance_print_symbols): Use stdio_file.
|
|
|
|
|
* symtab.h (struct symbol_computed_ops) <generate_c_location>:
|
|
|
|
|
Take a 'string_file *' instead of a 'ui_file *'.
|
|
|
|
|
* top.c (new_ui): Use stdio_file and stderr_file.
|
|
|
|
|
(free_ui): Use delete.
|
|
|
|
|
(execute_command_to_string): Use string_file.
|
|
|
|
|
(quit_confirm): Use string_file.
|
|
|
|
|
* tracepoint.c (collection_list::append_exp): Use string_file.
|
|
|
|
|
* tui/tui-disasm.c (tui_disassemble): Use string_file.
|
|
|
|
|
* tui/tui-file.c: Don't include "ui-file.h".
|
|
|
|
|
(enum streamtype, struct tui_stream): Delete.
|
|
|
|
|
(tui_file_new, tui_file_delete, tui_fileopen, tui_sfileopen)
|
|
|
|
|
(tui_file_isatty, tui_file_rewind, tui_file_put): Delete.
|
|
|
|
|
(tui_file::tui_file): New method.
|
|
|
|
|
(tui_file_fputs): Delete.
|
|
|
|
|
(tui_file_get_strbuf): Delete.
|
|
|
|
|
(tui_file::puts): New method.
|
|
|
|
|
(tui_file_adjust_strbuf): Delete.
|
|
|
|
|
(tui_file_flush): Delete.
|
|
|
|
|
(tui_file::flush): New method.
|
|
|
|
|
* tui/tui-file.h: Tweak intro comment.
|
|
|
|
|
Include ui-file.h.
|
|
|
|
|
(tui_fileopen, tui_sfileopen, tui_file_get_strbuf)
|
|
|
|
|
(tui_file_adjust_strbuf): Delete declarations.
|
|
|
|
|
(class tui_file): New class.
|
|
|
|
|
* tui/tui-io.c (tui_initialize_io): Use tui_file.
|
|
|
|
|
* tui/tui-regs.c (tui_restore_gdbout): Use delete.
|
|
|
|
|
(tui_register_format): Use string_stream.
|
|
|
|
|
* tui/tui-stack.c (tui_make_status_line): Use string_file.
|
|
|
|
|
(tui_get_function_from_frame): Use string_file.
|
|
|
|
|
* typeprint.c (type_to_string): Use string_file.
|
|
|
|
|
* ui-file.c (struct ui_file, ui_file_magic, ui_file_new): Delete.
|
|
|
|
|
(null_stream): New global.
|
|
|
|
|
(ui_file_delete): Delete.
|
|
|
|
|
(ui_file::ui_file): New.
|
|
|
|
|
(null_file_isatty): Delete.
|
|
|
|
|
(ui_file::~ui_file): New.
|
|
|
|
|
(null_file_rewind): Delete.
|
|
|
|
|
(ui_file::printf): New.
|
|
|
|
|
(null_file_put): Delete.
|
|
|
|
|
(null_file_flush): Delete.
|
|
|
|
|
(ui_file::putstr): New.
|
|
|
|
|
(null_file_write): Delete.
|
|
|
|
|
(ui_file::putstrn): New.
|
|
|
|
|
(null_file_read): Delete.
|
|
|
|
|
(ui_file::putc): New.
|
|
|
|
|
(null_file_fputs): Delete.
|
|
|
|
|
(null_file_write_async_safe): Delete.
|
|
|
|
|
(ui_file::vprintf): New.
|
|
|
|
|
(null_file_delete): Delete.
|
|
|
|
|
(null_file::write): New.
|
|
|
|
|
(null_file_fseek): Delete.
|
|
|
|
|
(null_file::puts): New.
|
|
|
|
|
(ui_file_data): Delete.
|
|
|
|
|
(null_file::write_async_safe): New.
|
|
|
|
|
(gdb_flush, ui_file_isatty): Adjust.
|
|
|
|
|
(ui_file_put, ui_file_rewind): Delete.
|
|
|
|
|
(ui_file_write): Adjust.
|
|
|
|
|
(ui_file_write_for_put): Delete.
|
|
|
|
|
(ui_file_write_async_safe, ui_file_read): Adjust.
|
|
|
|
|
(ui_file_fseek): Delete.
|
|
|
|
|
(fputs_unfiltered): Adjust.
|
|
|
|
|
(set_ui_file_flush, set_ui_file_isatty, set_ui_file_rewind)
|
|
|
|
|
(set_ui_file_put, set_ui_file_write, set_ui_file_write_async_safe)
|
|
|
|
|
(set_ui_file_read, set_ui_file_fputs, set_ui_file_fseek)
|
|
|
|
|
(set_ui_file_data): Delete.
|
|
|
|
|
(string_file::~string_file, string_file::write)
|
|
|
|
|
(struct accumulated_ui_file, do_ui_file_xstrdup, ui_file_xstrdup)
|
|
|
|
|
(do_ui_file_as_string, ui_file_as_string): Delete.
|
|
|
|
|
(do_ui_file_obsavestring, ui_file_obsavestring): Delete.
|
|
|
|
|
(struct mem_file): Delete.
|
|
|
|
|
(mem_file_new): Delete.
|
|
|
|
|
(stdio_file::stdio_file): New.
|
|
|
|
|
(mem_file_delete): Delete.
|
|
|
|
|
(stdio_file::stdio_file): New.
|
|
|
|
|
(mem_fileopen): Delete.
|
|
|
|
|
(stdio_file::~stdio_file): New.
|
|
|
|
|
(mem_file_rewind): Delete.
|
|
|
|
|
(stdio_file::set_stream): New.
|
|
|
|
|
(mem_file_put): Delete.
|
|
|
|
|
(stdio_file::open): New.
|
|
|
|
|
(mem_file_write): Delete.
|
|
|
|
|
(stdio_file_magic, struct stdio_file): Delete.
|
|
|
|
|
(stdio_file_new, stdio_file_delete, stdio_file_flush): Delete.
|
|
|
|
|
(stdio_file::flush): New.
|
|
|
|
|
(stdio_file_read): Rename to ...
|
|
|
|
|
(stdio_file::read): ... this. Adjust.
|
|
|
|
|
(stdio_file_write): Rename to ...
|
|
|
|
|
(stdio_file::write): ... this. Adjust.
|
|
|
|
|
(stdio_file_write_async_safe): Rename to ...
|
|
|
|
|
(stdio_file::write_async_safe) ... this. Adjust.
|
|
|
|
|
(stdio_file_fputs): Rename to ...
|
|
|
|
|
(stdio_file::puts) ... this. Adjust.
|
|
|
|
|
(stdio_file_isatty): Delete.
|
|
|
|
|
(stdio_file_fseek): Delete.
|
|
|
|
|
(stdio_file::isatty): New.
|
|
|
|
|
(stderr_file_write): Rename to ...
|
|
|
|
|
(stderr_file::write) ... this. Adjust.
|
|
|
|
|
(stderr_file_fputs): Rename to ...
|
|
|
|
|
(stderr_file::puts) ... this. Adjust.
|
|
|
|
|
(stderr_fileopen, stdio_fileopen, gdb_fopen): Delete.
|
|
|
|
|
(stderr_file::stderr_file): New.
|
|
|
|
|
(tee_file_magic): Delete.
|
|
|
|
|
(struct tee_file): Delete.
|
|
|
|
|
(tee_file::tee_file): New.
|
|
|
|
|
(tee_file_new): Delete.
|
|
|
|
|
(tee_file::~tee_file): New.
|
|
|
|
|
(tee_file_delete): Delete.
|
|
|
|
|
(tee_file_flush): Rename to ...
|
|
|
|
|
(tee_file::flush): ... this. Adjust.
|
|
|
|
|
(tee_file_write): Rename to ...
|
|
|
|
|
(tee_file::write): ... this. Adjust.
|
|
|
|
|
(tee_file::write_async_safe): New.
|
|
|
|
|
(tee_file_fputs): Rename to ...
|
|
|
|
|
(tee_file::puts): ... this. Adjust.
|
|
|
|
|
(tee_file_isatty): Rename to ...
|
|
|
|
|
(tee_file::isatty): ... this. Adjust.
|
|
|
|
|
* ui-file.h (struct obstack, struct ui_file): Don't
|
|
|
|
|
forward-declare.
|
|
|
|
|
(ui_file_new, ui_file_flush_ftype, set_ui_file_flush)
|
|
|
|
|
(ui_file_write_ftype)
|
|
|
|
|
(set_ui_file_write, ui_file_fputs_ftype, set_ui_file_fputs)
|
|
|
|
|
(ui_file_write_async_safe_ftype, set_ui_file_write_async_safe)
|
|
|
|
|
(ui_file_read_ftype, set_ui_file_read, ui_file_isatty_ftype)
|
|
|
|
|
(set_ui_file_isatty, ui_file_rewind_ftype, set_ui_file_rewind)
|
|
|
|
|
(ui_file_put_method_ftype, ui_file_put_ftype, set_ui_file_put)
|
|
|
|
|
(ui_file_delete_ftype, set_ui_file_data, ui_file_fseek_ftype)
|
|
|
|
|
(set_ui_file_fseek): Delete.
|
|
|
|
|
(ui_file_data, ui_file_delete, ui_file_rewind)
|
|
|
|
|
(struct ui_file): New.
|
|
|
|
|
(ui_file_up): New.
|
|
|
|
|
(class null_file): New.
|
|
|
|
|
(null_stream): Declare.
|
|
|
|
|
(ui_file_write_for_put, ui_file_put): Delete.
|
|
|
|
|
(ui_file_xstrdup, ui_file_as_string, ui_file_obsavestring):
|
|
|
|
|
Delete.
|
|
|
|
|
(ui_file_fseek, mem_fileopen, stdio_fileopen, stderr_fileopen)
|
|
|
|
|
(gdb_fopen, tee_file_new): Delete.
|
|
|
|
|
(struct string_file): New.
|
|
|
|
|
(struct stdio_file): New.
|
|
|
|
|
(stdio_file_up): New.
|
|
|
|
|
(struct stderr_file): New.
|
|
|
|
|
(class tee_file): New.
|
|
|
|
|
* ui-out.c (ui_out::field_stream): Take a 'string_file &' instead
|
|
|
|
|
of a 'ui_file *'. Adjust.
|
|
|
|
|
* ui-out.h (class ui_out) <field_stream>: Likewise.
|
|
|
|
|
* utils.c (do_ui_file_delete, make_cleanup_ui_file_delete)
|
|
|
|
|
(null_stream): Delete.
|
|
|
|
|
(error_stream): Take a 'string_file &' instead of a 'ui_file *'.
|
|
|
|
|
Adjust.
|
|
|
|
|
* utils.h (struct ui_file): Delete forward declaration..
|
|
|
|
|
(make_cleanup_ui_file_delete, null_stream): Delete declarations.
|
|
|
|
|
(error_stream): Take a 'string_file &' instead of a
|
|
|
|
|
'ui_file *'.
|
|
|
|
|
* varobj.c (varobj_value_get_print_value): Use string_file.
|
|
|
|
|
* xtensa-tdep.c (xtensa_verify_config): Use string_file.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
|
Add back gdb_pretty_print_insn
ui_file_rewind is a ui_file method that only really works with mem
buffer files, and is a nop on other ui_file types. It'd be desirable
to eliminate it from the base ui_file interface, and move it to the
"mem_fileopen" subclass of ui_file instead. A following patch does
just that.
Unfortunately, there are a couple references to ui_file_rewind inside
gdb_disassembler::pretty_print_insn that were made harder to eliminate
with the recent addition of the gdb_disassembler wrapper.
Before the gdb_disassembler wrapper was added, in commit
e47ad6c0bd7aa3 ("Refactor disassembly code"), gdb_pretty_print_insn
used to be passed a ui_file pointer as argument, and it was simple to
adjust that pointer be a "mem_fileopen" ui_file pointer instead, since
there's only one gdb_pretty_print_insn caller.
That commit made gdb_pretty_print_insn be a method of
gdb_disassembler, and removed the method's ui_file parameter at the
same time, replaced by referencing the gdb_disassembler's stream
instead. The trouble is that a gdb_disassembler can be instantiated
with a pointer any kind of ui_file. Casting the gdb_disassembler's
stream to a mem_fileopen ui_file inside
gdb_disassembler::pretty_print_insn in order to call the reset method
would be gross hack.
The fix here is to:
- make gdb_disassembler::pretty_print_insn a be free function again
instead of a method of gdb_disassembler. I.e., bring back
gdb_pretty_print_insn.
- but, don't add back the ui_file * parameter. Instead, move the
mem_fileopen allocation inside. That is a better interface, given
that the ui_file is only ever used as temporary scratch buffer as
an implementation detail of gdb_pretty_print_insn. The function's
real "where to send output" parameter is the ui_out pointer. (A
following patch will add back buffer reuse across invocations
differently).
- don't add back a disassemble_info pointer either. That used to be
necessary for this bit:
err = m_di.read_memory_func (pc, &data, 1, &m_di);
if (err != 0)
m_di.memory_error_func (err, pc, &m_di);
... but AFAIK, it's not really necessary. We can replace those
three lines with a call to read_code. This seems to fix a
regression even, because before commit d8b49cf0c891d0 ("Don't throw
exception in dis_asm_memory_error"), that memory_error_func call
would throw an error/exception, but now it only records the error
in the gdb_disassembler's m_err_memaddr field. (read_code throws
on error.)
With all these, gdb_pretty_print_insn is completely layered on top of
gdb_disassembler only using the latter's public API.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* disasm.c (gdb_disassembler::pretty_print_insn): Rename to...
(gdb_pretty_print_insn): ... this. Now a free function. Add back
a 'gdbarch' parameter. Allocate a mem_fileopen stream here.
Adjust to call gdb_print_insn instead of
gdb_disassembler::print_insn.
(dump_insns, do_mixed_source_and_assembly_deprecated)
(do_mixed_source_and_assembly, do_assembly_only): Add back a
'gdbarch' parameter. Remove gdb_disassembler parameter.
(gdb_disassembly): Don't allocate a gdb_disassembler here.
* disasm.h (gdb_disassembler::pretty_print_insn): Delete
declaration.
(gdb_pretty_print_insn): Re-add declaration.
* record-btrace.c (btrace_insn_history): Don't allocate a
gdb_disassembler here. Adjust to call gdb_pretty_print_insn.
2017-02-02 12:11:47 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* disasm.c (gdb_disassembler::pretty_print_insn): Rename to...
|
|
|
|
|
(gdb_pretty_print_insn): ... this. Now a free function. Add back
|
|
|
|
|
a 'gdbarch' parameter. Allocate a mem_fileopen stream here.
|
|
|
|
|
Adjust to call gdb_print_insn instead of
|
|
|
|
|
gdb_disassembler::print_insn.
|
|
|
|
|
(dump_insns, do_mixed_source_and_assembly_deprecated)
|
|
|
|
|
(do_mixed_source_and_assembly, do_assembly_only): Add back a
|
|
|
|
|
'gdbarch' parameter. Remove gdb_disassembler parameter.
|
|
|
|
|
(gdb_disassembly): Don't allocate a gdb_disassembler here.
|
|
|
|
|
* disasm.h (gdb_disassembler::pretty_print_insn): Delete
|
|
|
|
|
declaration.
|
|
|
|
|
(gdb_pretty_print_insn): Re-add declaration.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Don't allocate a
|
|
|
|
|
gdb_disassembler here. Adjust to call gdb_pretty_print_insn.
|
|
|
|
|
|
2017-02-02 04:54:35 +01:00
|
|
|
|
2017-02-01 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* disasm.h (gdb_disassembly): Remove file_string parameter.
|
|
|
|
|
* disasm.c (gdb_disassembly): Likewise.
|
|
|
|
|
* cli/cli-cmds.c (print_disassembly): Adapt.
|
|
|
|
|
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Likewise.
|
|
|
|
|
* stack.c (do_gdb_disassembly): Likewise.
|
|
|
|
|
|
2017-02-01 16:59:00 +01:00
|
|
|
|
2017-02-01 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): For
|
|
|
|
|
DWARF_VALUE_LITERAL, no longer ignore the offset on big-endian
|
|
|
|
|
targets. And if the implicit value is longer than needed, extract
|
|
|
|
|
the first bytes instead of the "least significant" ones.
|
|
|
|
|
|
2016-11-30 11:05:38 +01:00
|
|
|
|
2017-02-01 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_enable): Do not call btrace_add_pc for
|
|
|
|
|
BTRACE_FORMAT_PT or if can_access_registers_ptid returns false.
|
|
|
|
|
(btrace_fetch): Assert can_access_registers_ptid.
|
|
|
|
|
* record-btrace.c (require_btrace_thread, record_btrace_info): Call
|
|
|
|
|
validate_registers_access.
|
|
|
|
|
|
2017-01-20 09:05:03 +01:00
|
|
|
|
2017-02-01 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (can_access_registers_ptid): New.
|
|
|
|
|
* thread.c (can_access_registers_ptid): New.
|
|
|
|
|
|
2017-02-01 01:07:50 +01:00
|
|
|
|
2017-02-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_fast_tracepoint_valid_at): Use gdb_insn_length.
|
|
|
|
|
|
2017-01-31 18:56:36 +01:00
|
|
|
|
2017-01-31 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-interp.c (mi_breakpoint_created, mi_breakpoint_modified):
|
|
|
|
|
Fix typos.
|
|
|
|
|
|
2017-01-31 18:56:36 +01:00
|
|
|
|
2017-01-31 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (print_frame_args): Remove local mem_fileopen stream,
|
|
|
|
|
not used.
|
|
|
|
|
|
2017-01-31 18:56:36 +01:00
|
|
|
|
2017-01-31 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_value_get_print_value): Remove xstrdup call.
|
|
|
|
|
|
gdb: make_scoped_restore and types convertible to T
A following patch will want to do
string_file str_file;
scoped_restore save_stdout
= make_scoped_restore (&gdb_stdout, &str_file);
where gdb_stdout is a ui_file *, and string_file is a type that
inherits from ui_file, but that doesn't compile today:
src/gdb/top.c: In function ‘std::__cxx11::string execute_command_to_string(char*, int)’:
src/gdb/top.c:710:50: error: no matching function for call to ‘make_scoped_restore(ui_file**, string_file*)’
= make_scoped_restore (&gdb_stdout, &str_file);
^
[...]
In file included from src/gdb/utils.h:25:0,
from src/gdb/defs.h:732,
from src/gdb/top.c:20:
src/gdb/common/scoped_restore.h:94:24: note: candidate: template<class T> scoped_restore_tmpl<T> make_scoped_restore(T*, T)
scoped_restore_tmpl<T> make_scoped_restore (T *var, T value)
^
src/gdb/common/scoped_restore.h:94:24: note: template argument deduction/substitution failed:
src/gdb/top.c:710:50: note: deduced conflicting types for parameter ‘T’ (‘ui_file*’ and ‘string_file*’)
= make_scoped_restore (&gdb_stdout, &str_file);
^
This commit makes code such as the above possible.
gdb/ChangeLog:
2017-01-31 Pedro Alves <palves@redhat.com>
* common/scoped_restore.h
(scoped_restore_tmpl::scoped_restore_tmpl): Template on T2, and
change the value's parameter type to T2.
(make_scoped_restore): Likewise.
2017-01-31 18:56:35 +01:00
|
|
|
|
2017-01-31 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/scoped_restore.h
|
|
|
|
|
(scoped_restore_tmpl::scoped_restore_tmpl): Template on T2, and
|
|
|
|
|
change the value's parameter type to T2.
|
|
|
|
|
(make_scoped_restore): Likewise.
|
|
|
|
|
|
2017-01-27 15:19:14 +01:00
|
|
|
|
2017-01-27 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
Richard Henderson <rth@redhat.com>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-nat.c (PTRACE_ARCH_PRCTL): New define.
|
|
|
|
|
(amd64_linux_fetch_inferior_registers): Add case to fetch FS_BASE
|
|
|
|
|
GS_BASE for older kernels.
|
|
|
|
|
(amd64_linux_store_inferior_registers): Add case to store FS_BASE
|
|
|
|
|
GS_BASE for older kernels.
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_gregset_reg_offset): Add FS_BASE
|
|
|
|
|
and GS_BASE to the offset table.
|
|
|
|
|
(amd64_linux_register_reggroup_p): Add FS_BASE and GS_BASE to the
|
|
|
|
|
system register group.
|
|
|
|
|
* amd64-nat.c (amd64_native_gregset_reg_offset): Implements case
|
|
|
|
|
for older kernels.
|
|
|
|
|
* amd64-tdep.c (amd64_init_abi): Add segment registers for the
|
|
|
|
|
amd64 ABI.
|
|
|
|
|
* amd64-tdep.h (amd64_regnum): Add AMD64_FSBASE_REGNUM and
|
|
|
|
|
AMD64_GSBASE_REGNUM.
|
|
|
|
|
(AMD64_NUM_REGS): Set to AMD64_GSBASE_REGNUM + 1.
|
|
|
|
|
* features/Makefile (amd64-linux.dat, amd64-avx-linux.dat)
|
|
|
|
|
(amd64-mpx-linux.dat, amd64-avx512-linux.dat, x32-linux.dat)
|
|
|
|
|
(x32-avx-linux.dat, x32-avx512-linux.dat): Add
|
|
|
|
|
i386/64bit-segments.xml in those rules.
|
|
|
|
|
* features/i386/64bit-segments.xml: New file.
|
|
|
|
|
* features/i386/amd64-avx-mpx-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx512-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-mpx-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/x32-avx512-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/x32-avx-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx-mpx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx-mpx.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx512-linux.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-linux.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-mpx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/i386-avx-mpx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/i386-avx-mpx.c: Regenerated.
|
|
|
|
|
* features/i386/x32-avx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/x32-avx512-linux.c: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx-mpx-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx512-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-mpx-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/x32-avx-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/x32-avx512-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/x32-linux.dat: Regenerated.
|
|
|
|
|
|
2017-01-27 15:19:13 +01:00
|
|
|
|
2017-01-27 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM):
|
|
|
|
|
Set to AMD64_NUM_REGS.
|
|
|
|
|
|
2017-01-27 15:19:12 +01:00
|
|
|
|
2017-01-27 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* amd64-nat.c (amd64_native_gregset_reg_offset): Simplify logic
|
|
|
|
|
that checks validity of a register number.
|
|
|
|
|
|
2017-01-27 12:14:47 +01:00
|
|
|
|
2017-01-27 Kees Cook <keescook@google.com>
|
|
|
|
|
|
|
|
|
|
* gdb/arm-linux-nat.c (arm_linux_fetch_inferior_registers): Call
|
|
|
|
|
fetch_fpregs if target has fpa registers.
|
|
|
|
|
(arm_linux_store_inferior_registers): Call store_fpregs if target
|
|
|
|
|
has fpa registers.
|
|
|
|
|
|
2017-01-26 19:33:54 +01:00
|
|
|
|
2017-01-26 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* cris-tdep.c (cris_gdbarch_init): Remove check for
|
|
|
|
|
info.byte_order and force it to BFD_ENDIAN_LITTLE.
|
|
|
|
|
|
Fix crash when loading a core with unexpected register section size
When loading a core without an executable like so:
$ gdb --core core
for example often the gdbarch won't contain the
iterate_over_regset_sections method. For example on ARM.
This will generate a call to get_core_register_section with a NULL regset
like at corelow.c:628
get_core_register_section (regcache, NULL, ".reg", 0, 0, "general-purpose", 1);
However a check for REGSET_VARIABLE_SIZE in get_core_register_section
assumes that regset is != NULL thus leading to a crash with this backtrace:
(gdb) bt
#0 0x000000000065907b in get_core_register_section
(regcache=regcache@entry=0x2c26260, regset=regset@entry=0x0,
name=name@entry=0xdbf7b2 ".reg", min_size=min_size@entry=0,
which=which@entry=0, human_name=human_name@entry=0xdbac28
"general-purpose", required=1)
at ../../gdb/corelow.c:542
#1 0x0000000000659b70 in get_core_registers (ops=<optimized out>,
regcache=0x2c26260, regno=<optimized out>) at ../../gdb/corelow.c:628
#2 0x000000000076e5fb in target_fetch_registers
(regcache=regcache@entry=0x2c26260, regno=regno@entry=15)
at ../../gdb/target.c:3590
Note that commit: f962539ad23759 ("Warn if core file register
section is larger than expected") introduced this issue.
Thus releases > 7.8.2 are affected.
Also, this would have been caught by gdb.base/corefile.exp but the
problem is that this triggers only if the core dump is missing some data
so that it's not recognized as a linux core dump, or it's not a linux core
dump and the core file register section is larger than expected.
So if you just create a core and read it on linux with ARM the osabi is
detected properly and iterate_over_regset_sections is present and so the
problem is not triggered.
Thus creating a linux test for this with a crafted core that meets the
problem requirements is non-trivial.
This patch fixes this crash by adding a check for regset existence before
running the condition.
gdb/ChangeLog:
* corelow.c (get_core_register_section): Check for regset
existence before checking for REGSET_VARIABLE_SIZE.
2017-01-26 16:47:27 +01:00
|
|
|
|
2017-01-26 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* corelow.c (get_core_register_section): Check for regset
|
|
|
|
|
existence before checking for REGSET_VARIABLE_SIZE.
|
|
|
|
|
|
Don't throw exception in dis_asm_memory_error
Hi,
GDB calls some APIs from opcodes to do disassembly and provide some
call backs. This model makes troubles on C++ exception unwinding,
because GDB is a C++ program, and opcodes is still compiled as C.
As we can see, frame #10 and #12 are C++, while #frame 11 is C,
#10 0x0000000000544228 in memory_error (err=TARGET_XFER_E_IO, memaddr=<optimized out>) at ../../binutils-gdb/gdb/corefile.c:237
#11 0x00000000006b0a54 in print_insn_aarch64 (pc=0, info=0xffffffffeeb0) at ../../binutils-gdb/opcodes/aarch64-dis.c:3185
#12 0x0000000000553590 in gdb_pretty_print_insn (gdbarch=gdbarch@entry=0xbbceb0, uiout=uiout@entry=0xbc73d0, di=di@entry=0xffffffffeeb0,
insn=0xffffffffed40, insn@entry=0xffffffffed90, flags=flags@entry=0,
C++ exception unwinder can't go across frame #11 unless it has
unwind table. However, C program on many architectures doesn't
have it in default. As a result, GDB aborts, which is described
in PR 20939.
This is not the first time we see this kind of problem. We've
had a commit 89525768cd086a0798a504c81fdf7ebcd4c904e1
"Propagate GDB/C++ exceptions across readline using sj/lj-based TRY/CATCH".
We can fix the disassembly bug in a similar way, this is the option one.
Since opcodes is built with gdb, we fix this problem in a different
way as we did for the same issue with readline. Instead of throwing
exception in dis_asm_memory_error, we record the failed memory
address, and throw exception when GDB returns from opcodes disassemblers.
gdb:
2017-01-26 Yao Qi <yao.qi@linaro.org>
Pedro Alves <palves@redhat.com>
PR gdb/20939
* disasm.c (gdb_disassembler::dis_asm_memory_error): Don't
call memory_error, save memaddr instead.
(gdb_disassembler::print_insn): If gdbarch_print_insn returns
negative, cal memory_error.
* disasm.h (gdb_disassembler) <m_err_memaddr>: New field.
gdb/testsuite:
2017-01-26 Yao Qi <yao.qi@linaro.org>
* gdb.base/all-architectures.exp.in (do_arch_tests): Test
disassemble on address 0.
2017-01-26 15:29:20 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/20939
|
|
|
|
|
* disasm.c (gdb_disassembler::dis_asm_memory_error): Don't
|
|
|
|
|
call memory_error, save memaddr instead.
|
|
|
|
|
(gdb_disassembler::print_insn): If gdbarch_print_insn returns
|
|
|
|
|
negative, cal memory_error.
|
|
|
|
|
* disasm.h (gdb_disassembler) <m_err_memaddr>: New field.
|
|
|
|
|
|
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* disasm-selftests.c (memory_error_test): New function.
|
|
|
|
|
(_initialize_disasm_selftests): Register memory_error_test.
|
|
|
|
|
|
Disassembly unit test: disassemble one instruction
This patch adds one unit test, which disassemble one instruction for
every gdbarch if available. The test needs one valid instruction of
each gdbarch, and most of them are got from breakpoint instruction.
For the rest gdbarch whose breakpoint instruction isn't a valid
instruction, I copy one instruction from the gas/testsuite/gas/
directory.
I get the valid instruction of most gdbarch except ia64, mep, mips,
tic6x, and xtensa. People familiar with these arch should be easy
to extend the test.
In order to achieve "do the unit test for every gdbarch", I add
selftest-arch.[c,h], so that we can register a function pointer,
which has one argument gdbarch. selftest.c will iterate over all
gdbarches to call the registered function pointer.
gdb:
2017-01-26 Yao Qi <yao.qi@linaro.org>
* Makefile.in (SFILES): Add disasm-selftests.c and
selftest-arch.c.
(COMMON_OBS): Add disasm-selftests.o and selftest-arch.o.
* disasm-selftests.c: New file.
* selftest-arch.c: New file.
* selftest-arch.h: New file.
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add disasm-selftests.c and
|
|
|
|
|
selftest-arch.c.
|
|
|
|
|
(COMMON_OBS): Add disasm-selftests.o and selftest-arch.o.
|
|
|
|
|
* disasm-selftests.c: New file.
|
|
|
|
|
* selftest-arch.c: New file.
|
|
|
|
|
* selftest-arch.h: New file.
|
|
|
|
|
|
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mep-tdep.c (mep_gdb_print_insn): Set info->arch
|
|
|
|
|
to bfd_arch_mep. Don't return 0 if section is not
|
|
|
|
|
found. Call print_insn_mep.
|
|
|
|
|
|
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c: Include "disasm.h".
|
|
|
|
|
(gdb_print_insn_arm): Update code to get gdbarch.
|
|
|
|
|
* disasm.c (dis_asm_read_memory): Change it to
|
|
|
|
|
gdb_disassembler::dis_asm_read_memory.
|
|
|
|
|
(dis_asm_memory_error): Likewise.
|
|
|
|
|
(dis_asm_print_address): Likewise.
|
|
|
|
|
(gdb_pretty_print_insn): Change it to
|
|
|
|
|
gdb_disassembler::pretty_print_insn.
|
|
|
|
|
(dump_insns): Add one argument gdb_disassemlber. All
|
|
|
|
|
callers updated.
|
|
|
|
|
(do_mixed_source_and_assembly_deprecated): Likewise.
|
|
|
|
|
(do_mixed_source_and_assembly): Likewise.
|
|
|
|
|
(do_assembly_only): Likewise.
|
|
|
|
|
(gdb_disassembler::gdb_disassembler): New.
|
|
|
|
|
(gdb_disassembler::print_insn): New.
|
|
|
|
|
* disasm.h (class gdb_disassembler): New.
|
|
|
|
|
(gdb_pretty_print_insn): Remove declaration.
|
|
|
|
|
(gdb_disassemble_info): Likewise.
|
|
|
|
|
* guile/scm-disasm.c (class gdbscm_disassembler): New.
|
|
|
|
|
(gdbscm_disasm_read_memory_worker): Update.
|
|
|
|
|
(gdbscm_disasm_read_memory): Update.
|
|
|
|
|
(gdbscm_disasm_memory_error): Remove.
|
|
|
|
|
(gdbscm_disasm_print_address): Remove.
|
|
|
|
|
(gdbscm_disassembler::gdbscm_disassembler): New.
|
|
|
|
|
(gdbscm_print_insn_from_port): Update.
|
|
|
|
|
* mips-tdep.c: Include disasm.h.
|
|
|
|
|
(gdb_print_insn_mips): Update code to get gdbarch.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Update.
|
|
|
|
|
* spu-tdep.c: Include disasm.h.
|
|
|
|
|
(struct spu_dis_asm_data): Remove.
|
|
|
|
|
(struct spu_dis_asm_info): New.
|
|
|
|
|
(spu_dis_asm_print_address): Use spu_dis_asm_info to get
|
|
|
|
|
SPU id.
|
|
|
|
|
(gdb_print_insn_spu): Cast disassemble_info to
|
|
|
|
|
spu_dis_asm_info.
|
|
|
|
|
|
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* disasm.c (do_ui_file_delete): Delete.
|
|
|
|
|
(gdb_insn_length): Move code creating stream to ...
|
|
|
|
|
* utils.c (null_stream): ... here. New function.
|
|
|
|
|
* utils.h (null_stream): Declare.
|
|
|
|
|
|
2017-01-23 21:31:40 +01:00
|
|
|
|
2017-01-23 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (find_thread_object): Return directly
|
|
|
|
|
from the loop. Remove "found" variable.
|
|
|
|
|
|
2017-01-21 14:59:40 +01:00
|
|
|
|
2017-01-21 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 7.12.1 released.
|
|
|
|
|
|
Fix Py_DECREF being executed without holding the GIL
When the gdbpy_ref objects get destroyed, they call Py_DECREF to
decrement the reference counter of the python object they hold a
reference to. Any time we call into the Python API, we should be
holding the GIL. The gdbpy_enter object does that for us in an
RAII-fashion.
However, if gdbpy_enter is declared after a gdbpy_ref object in a
function, gdbpy_enter's destructor will be called (and the GIL will be
released) before gdbpy_ref's destructor is called. Therefore, we will
end up calling Py_DECREF without holding the GIL.
This became obvious with Python 3.6, where memory management functions
have asserts to make sure that the GIL is held. This was exposed by
tests py-as-string.exp, py-function.exp and py-xmethods. For example:
(gdb) p $_as_string(enum_valid)
Fatal Python error: Python memory allocator called without holding the GIL
Current thread 0x00007f7f7b21c780 (most recent call first):
[1] 18678 abort (core dumped) ./gdb -nx testsuite/outputs/gdb.python/py-as-string/py-as-string
#0 0x00007ffff618bc37 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff618f028 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff6b104d6 in Py_FatalError (msg=msg@entry=0x7ffff6ba15b8 "Python memory allocator called without holding the GIL") at Python/pylifecycle.c:1457
#3 0x00007ffff6a37a68 in _PyMem_DebugCheckGIL () at Objects/obmalloc.c:1972
#4 0x00007ffff6a3804e in _PyMem_DebugFree (ctx=0x7ffff6e65290 <_PyMem_Debug+48>, ptr=0x24f8830) at Objects/obmalloc.c:1994
#5 0x00007ffff6a38e1d in PyMem_Free (ptr=<optimized out>) at Objects/obmalloc.c:442
#6 0x00007ffff6b866c6 in _PyFaulthandler_Fini () at ./Modules/faulthandler.c:1369
#7 0x00007ffff6b104bd in Py_FatalError (msg=msg@entry=0x7ffff6ba15b8 "Python memory allocator called without holding the GIL") at Python/pylifecycle.c:1431
#8 0x00007ffff6a37a68 in _PyMem_DebugCheckGIL () at Objects/obmalloc.c:1972
#9 0x00007ffff6a3804e in _PyMem_DebugFree (ctx=0x7ffff6e652c0 <_PyMem_Debug+96>, ptr=0x7ffff46b6040) at Objects/obmalloc.c:1994
#10 0x00007ffff6a38f55 in PyObject_Free (ptr=<optimized out>) at Objects/obmalloc.c:503
#11 0x00007ffff6a5f27e in unicode_dealloc (unicode=unicode@entry=0x7ffff46b6040) at Objects/unicodeobject.c:1794
#12 0x00007ffff6a352a9 in _Py_Dealloc (op=0x7ffff46b6040) at Objects/object.c:1786
#13 0x000000000063f28b in gdb_Py_DECREF (op=0x7ffff46b6040) at /home/emaisin/src/binutils-gdb/gdb/python/python-internal.h:192
#14 0x000000000063fa33 in gdbpy_ref_policy::decref (ptr=0x7ffff46b6040) at /home/emaisin/src/binutils-gdb/gdb/python/py-ref.h:35
#15 0x000000000063fa77 in gdb::ref_ptr<_object, gdbpy_ref_policy>::~ref_ptr (this=0x7fffffffcdf0, __in_chrg=<optimized out>) at /home/emaisin/src/binutils-gdb/gdb/common/gdb_ref_ptr.h:91
#16 0x000000000064d8b8 in fnpy_call (gdbarch=0x2b50010, language=0x115d2c0 <c_language_defn>, cookie=0x7ffff46b7468, argc=1, argv=0x7fffffffcf48)
at /home/emaisin/src/binutils-gdb/gdb/python/py-function.c:145
The fix is to place the gdbpy_enter first in the function. I also
cleaned up the comments a bit and removed the unnecessary initialization
of the value variable.
gdb/ChangeLog:
* python/py-function.c (fnpy_call): Reorder declarations to have
the gdbpy_enter object declared first.
* python/py-xmethods.c (gdbpy_get_xmethod_arg_types): Likewise.
2017-01-21 03:02:05 +01:00
|
|
|
|
2017-01-20 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* python/py-function.c (fnpy_call): Reorder declarations to have
|
|
|
|
|
the gdbpy_enter object declared first.
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_xmethod_arg_types): Likewise.
|
|
|
|
|
|
2017-01-21 02:39:08 +01:00
|
|
|
|
2017-01-20 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
2017-01-21 02:47:41 +01:00
|
|
|
|
PR python/21068
|
2017-01-21 02:39:08 +01:00
|
|
|
|
* python/python-internal.h (PyMem_RawMalloc): Define for
|
|
|
|
|
Python < 3.4.
|
|
|
|
|
* python/py-gdb-readline.c (gdbpy_readline_wrapper): Use
|
|
|
|
|
PyMem_RawMalloc instead of PyMem_Malloc.
|
|
|
|
|
|
2017-01-20 15:13:03 +01:00
|
|
|
|
2017-01-20 Mike Wrighton <mike_wrighton@codesourcery.com>
|
|
|
|
|
Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (New commands): Mention flash-erase.
|
|
|
|
|
(New MI commands): Mention target-flash-erase.
|
|
|
|
|
* mi/mi-cmds.c (mi_cmd_target_flash_erase): Add target-flash-erase MI
|
|
|
|
|
command.
|
|
|
|
|
* mi/mi-cmds.h (mi_cmd_target_flash_erase): New declaration.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_target_flash_erase): New function.
|
|
|
|
|
* target.c (flash_erase_command): New function.
|
|
|
|
|
(initialize_targets): Add new flash-erase command.
|
|
|
|
|
* target.h (flash_erase_command): New declaration.
|
|
|
|
|
|
2017-01-17 13:08:02 +01:00
|
|
|
|
2017-01-20 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-ptrace.c: Only include <sys/procfs.h> if
|
|
|
|
|
HAVE_SYS_PROCFS_H is defined.
|
|
|
|
|
|
2017-01-18 16:15:50 +01:00
|
|
|
|
2017-01-18 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (struct cached_reg): Change data into a pointer.
|
|
|
|
|
* (stop_reply_dtr): Free data pointers before deleting vector.
|
|
|
|
|
(process_stop_reply): Likewise.
|
|
|
|
|
(remote_parse_stop_reply): Allocate space for data
|
|
|
|
|
|
2017-01-18 12:23:02 +01:00
|
|
|
|
2017-01-18 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.c (amd64_pseudo_register_read_value): remove
|
|
|
|
|
MAX_REGISTER_SIZE.
|
|
|
|
|
(amd64_pseudo_register_read_value): Likewise.
|
|
|
|
|
* remote.c (fetch_register_using_p): Remove MAX_REGISTER_SIZE.
|
|
|
|
|
(store_register_using_P): Likewise.
|
|
|
|
|
* regcache.c (regcache_xfer_part): Likewise.
|
|
|
|
|
|
2017-01-16 17:45:48 +01:00
|
|
|
|
2017-01-16 Ivo Raisr <ivo.raisr@oracle.com>
|
|
|
|
|
|
|
|
|
|
Split real and pseudo registers.
|
|
|
|
|
* sparc-tdep.h (SPARC_CORE_REGISTERS): New macro.
|
|
|
|
|
(sparc32_pseudo_regnum): New enum.
|
|
|
|
|
* sparc64-tdep.h (sparc64_pseudo_regnum): New enum.
|
|
|
|
|
* sparc-tdep.c (SPARC32_FPU_REGISTERS): New macro.
|
|
|
|
|
(SPARC32_CP0_REGISTERS): New macro.
|
|
|
|
|
(sparc32_pseudo_register_name): New function.
|
|
|
|
|
(sparc32_register_name): Use sparc32_pseudo_register_name.
|
|
|
|
|
(sparc32_pseudo_register_type): New function.
|
|
|
|
|
(sparc32_register_type): Use sparc32_pseudo_register_type.
|
|
|
|
|
(sparc32_pseudo_register_read, sparc32_pseudo_register_write): Handle
|
|
|
|
|
pseudo register numbers.
|
|
|
|
|
* sparc64-tdep.c SPARC64_FPU_REGISTERS): New macro.
|
|
|
|
|
(SPARC64_CP0_REGISTERS): New macro.
|
|
|
|
|
(sparc64_pseudo_register_name): New function.
|
|
|
|
|
(sparc64_register_name): Use sparc64_pseudo_register_name.
|
|
|
|
|
(sparc64_pseudo_register_type): New function.
|
|
|
|
|
(sparc64_register_type): Use sparc64_pseudo_register_type.
|
|
|
|
|
(sparc64_pseudo_register_read, sparc64_pseudo_register_write): Handle
|
|
|
|
|
pseudo register numbers.
|
|
|
|
|
(sparc64_store_floating_fields, sparc64_extract_floating_fields,
|
|
|
|
|
sparc64_store_arguments): Handle pseudo register numbers.
|
|
|
|
|
|
2017-01-13 16:45:33 +01:00
|
|
|
|
2017-01-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* remote.c (REMOTE_DEBUG_MAX_CHAR): New macro.
|
|
|
|
|
(putpkt_binary): Print only REMOTE_DEBUG_MAX_CHAR chars in debug
|
|
|
|
|
output.
|
|
|
|
|
(getpkt_or_notif_sane_1): Likewise.
|
|
|
|
|
|
2017-01-13 15:40:11 +01:00
|
|
|
|
2017-01-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (checker-headers): Use CXX and CXX_DIALET instead
|
|
|
|
|
of CC. Pass "-x c++-header" instead of "-x c".
|
|
|
|
|
|
2017-01-12 17:15:01 +01:00
|
|
|
|
2017-01-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_can_async_p): Update comment.
|
|
|
|
|
|
2017-01-12 17:04:53 +01:00
|
|
|
|
2017-01-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_can_async_p): Update comment.
|
|
|
|
|
|
2017-01-12 16:39:35 +01:00
|
|
|
|
2017-01-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* serial.c (serial_open): Forget about "pc" and "lpt" serial interface.
|
|
|
|
|
|
2017-01-11 17:15:26 +01:00
|
|
|
|
2017-01-11 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-decode.c (lookup_cmd_1): Fix typo in comment.
|
|
|
|
|
|
2016-11-29 05:39:47 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-type.c (typy_legacy_template_argument): Update.
|
|
|
|
|
* cp-support.h (struct demangle_parse_info) (demangle_parse_info,
|
|
|
|
|
~demangle_parse_info): Declare new members.
|
|
|
|
|
(cp_demangled_name_to_comp): Return unique_ptr.
|
|
|
|
|
(cp_demangled_name_parse_free)
|
|
|
|
|
(make_cleanup_cp_demangled_name_parse_free)
|
|
|
|
|
(cp_new_demangle_parse_info): Remove.
|
|
|
|
|
* cp-support.c (do_demangled_name_parse_free_cleanup)
|
|
|
|
|
(make_cleanup_cp_demangled_name_parse_free): Remove.
|
|
|
|
|
(inspect_type, cp_canonicalize_string_full)
|
|
|
|
|
(cp_canonicalize_string): Update.
|
|
|
|
|
(mangled_name_to_comp): Change return type.
|
|
|
|
|
(cp_class_name_from_physname, method_name_from_physname)
|
|
|
|
|
(cp_func_name, cp_remove_params): Update.
|
|
|
|
|
* cp-name-parser.y (demangle_parse_info): New constructor, from
|
|
|
|
|
cp_new_demangle_parse_info.
|
|
|
|
|
(~demangle_parse_info): New destructor, from
|
|
|
|
|
cp_demangled_name_parse_free.
|
|
|
|
|
(cp_merge_demangle_parse_infos): Update.
|
|
|
|
|
(cp_demangled_name_to_comp): Change return type.
|
|
|
|
|
|
2016-11-29 05:11:53 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* top.c (prevent_dont_repeat): Change return type.
|
|
|
|
|
* python/python.c (execute_gdb_command): Use std::string.
|
|
|
|
|
Update.
|
|
|
|
|
* guile/guile.c (gdbscm_execute_gdb_command): Update.
|
|
|
|
|
* command.h (prevent_dont_repeat): Change return type.
|
|
|
|
|
* breakpoint.c (bpstat_do_actions_1): Update.
|
|
|
|
|
|
2016-11-22 05:04:59 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* value.h (scoped_value_mark::~scoped_value_mark): Call
|
|
|
|
|
free_to_mark.
|
|
|
|
|
(scoped_value_mark::free_to_mark): New method.
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use
|
|
|
|
|
scoped_value_mark.
|
|
|
|
|
|
Add scoped_value_mark
This adds a scoped_value_mark class, that records the value mark in
the constructor and then calls value_free_to_mark in the destructor.
It then updates various spots in gdb to use this class, rather than a
cleanup.
It would be better overall to replace "struct value *" with a
shared_ptr, maybe eliminating the need for this class (watchpoints
would perhaps need some new mechanism as well). However, that's
difficult to do.
2017-01-10 Tom Tromey <tom@tromey.com>
* python/py-value.c (valpy_dereference, valpy_referenced_value)
(valpy_reference_value, valpy_const_value, valpy_get_address)
(valpy_get_dynamic_type, valpy_lazy_string, valpy_do_cast)
(valpy_getitem, valpy_call, valpy_binop_throw, valpy_negative)
(valpy_absolute, valpy_richcompare_throw): Use scoped_value_mark.
* dwarf2loc.c (dwarf2_loc_desc_get_symbol_read_needs): Use
scoped_value_mark.
* dwarf2-frame.c (execute_stack_op): Use scoped_value_mark.
* value.h (scoped_value_mark): New class.
2016-11-22 02:02:11 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-value.c (valpy_dereference, valpy_referenced_value)
|
|
|
|
|
(valpy_reference_value, valpy_const_value, valpy_get_address)
|
|
|
|
|
(valpy_get_dynamic_type, valpy_lazy_string, valpy_do_cast)
|
|
|
|
|
(valpy_getitem, valpy_call, valpy_binop_throw, valpy_negative)
|
|
|
|
|
(valpy_absolute, valpy_richcompare_throw): Use scoped_value_mark.
|
|
|
|
|
* dwarf2loc.c (dwarf2_loc_desc_get_symbol_read_needs): Use
|
|
|
|
|
scoped_value_mark.
|
|
|
|
|
* dwarf2-frame.c (execute_stack_op): Use scoped_value_mark.
|
|
|
|
|
* value.h (scoped_value_mark): New class.
|
|
|
|
|
|
2016-11-22 00:50:20 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_build_psymtabs): Use psymtab_discarder.
|
|
|
|
|
* psympriv.h (make_cleanup_discard_psymtabs): Don't declare.
|
|
|
|
|
* psymtab.c (discard_psymtabs_upto): Remove.
|
|
|
|
|
(make_cleanup_discard_psymtabs): Remove.
|
|
|
|
|
(struct psymtab_state): Remove.
|
|
|
|
|
|
2016-11-22 00:26:20 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* record-full.c (record_full_save_cleanups): Remove.
|
|
|
|
|
(record_full_save): Use gdb::unlinker.
|
|
|
|
|
* gcore.c (do_bfd_delete_cleanup): Remove.
|
|
|
|
|
(gcore_command): Use gdb::unlinker, unique_xmalloc_ptr. Remove
|
|
|
|
|
cleanups.
|
|
|
|
|
* dwarf2read.c (unlink_if_set): Remove.
|
|
|
|
|
(write_psymtabs_to_index): Use gdb::unlinker.
|
|
|
|
|
* common/gdb_unlinker.h: New file.
|
|
|
|
|
|
Use class to manage BFD reference counts
This introduces a new specialization of gdb::ref_ptr that can be used
to manage BFD reference counts. Then it changes most places in gdb to
use this new class, rather than explicit reference-counting or
cleanups. This patch removes make_cleanup_bfd_unref.
If you look you will see a couple of spots using "release" where a use
of gdb_bfd_ref_ptr would be cleaner. These will be fixed in the next
patch.
I think this patch fixes some latent bugs. For example, it seems to
me that previously objfpy_add_separate_debug_file leaked a BFD.
I'm not 100% certain that the macho_symfile_read_all_oso change is
correct. The existing code here is hard for me to follow. One goal
of this sort of automated reference counting, though, is to make it
more difficult to make logic errors; so hopefully the code is clear
now.
2017-01-10 Tom Tromey <tom@tromey.com>
* windows-tdep.c (windows_xfer_shared_library): Update.
* windows-nat.c (windows_make_so): Update.
* utils.h (make_cleanup_bfd_unref): Remove.
* utils.c (do_bfd_close_cleanup, make_cleanup_bfd_unref): Remove.
* symfile.h (symfile_bfd_open)
(find_separate_debug_file_in_section): Return gdb_bfd_ref_ptr.
* symfile.c (read_symbols, symbol_file_add)
(separate_debug_file_exists): Update.
(symfile_bfd_open): Return gdb_bfd_ref_ptr.
(generic_load, reread_symbols): Update.
* symfile-mem.c (symbol_file_add_from_memory): Update.
* spu-linux-nat.c (spu_bfd_open): Return gdb_bfd_ref_ptr.
(spu_symbol_file_add_from_memory): Update.
* solist.h (struct target_so_ops) <bfd_open>: Return
gdb_bfd_ref_ptr.
(solib_bfd_fopen, solib_bfd_open): Return gdb_bfd_ref_ptr.
* solib.c (solib_bfd_fopen, solib_bfd_open): Return
gdb_bfd_ref_ptr.
(solib_map_sections, reload_shared_libraries_1): Update.
* solib-svr4.c (enable_break): Update.
* solib-spu.c (spu_bfd_fopen): Return gdb_bfd_ref_ptr.
* solib-frv.c (enable_break2): Update.
* solib-dsbt.c (enable_break): Update.
* solib-darwin.c (gdb_bfd_mach_o_fat_extract): Return
gdb_bfd_ref_ptr.
(darwin_solib_get_all_image_info_addr_at_init): Update.
(darwin_bfd_open): Return gdb_bfd_ref_ptr.
* solib-aix.c (solib_aix_bfd_open): Return gdb_bfd_ref_ptr.
* record-full.c (record_full_save): Update.
* python/py-objfile.c (objfpy_add_separate_debug_file): Update.
* procfs.c (insert_dbx_link_bpt_in_file): Update.
* minidebug.c (find_separate_debug_file_in_section): Return
gdb_bfd_ref_ptr.
* machoread.c (macho_add_oso_symfile): Change abfd to
gdb_bfd_ref_ptr.
(macho_symfile_read_all_oso): Update.
(macho_check_dsym): Return gdb_bfd_ref_ptr.
(macho_symfile_read): Update.
* jit.c (bfd_open_from_target_memory): Return gdb_bfd_ref_ptr.
(jit_bfd_try_read_symtab): Update.
* gdb_bfd.h (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
(gdb_bfd_openw, gdb_bfd_openr_iovec)
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
gdb_bfd_ref_ptr.
(gdb_bfd_ref_policy): New struct.
(gdb_bfd_ref_ptr): New typedef.
* gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
(gdb_bfd_openw, gdb_bfd_openr_iovec)
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
gdb_bfd_ref_ptr.
* gcore.h (create_gcore_bfd): Return gdb_bfd_ref_ptr.
* gcore.c (create_gcore_bfd): Return gdb_bfd_ref_ptr.
(gcore_command): Update.
* exec.c (exec_file_attach): Update.
* elfread.c (elf_symfile_read): Update.
* dwarf2read.c (dwarf2_get_dwz_file): Update.
(try_open_dwop_file, open_dwo_file): Return gdb_bfd_ref_ptr.
(open_and_init_dwo_file): Update.
(open_dwp_file): Return gdb_bfd_ref_ptr.
(open_and_init_dwp_file): Update.
* corelow.c (core_open): Update.
* compile/compile-object-load.c (compile_object_load): Update.
* common/gdb_ref_ptr.h (ref_ptr::operator->): New operator.
* coffread.c (coff_symfile_read): Update.
* cli/cli-dump.c (bfd_openr_or_error, bfd_openw_or_error): Return
gdb_bfd_ref_ptr. Rename.
(dump_bfd_file, restore_command): Update.
* build-id.h (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
* build-id.c (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
(find_separate_debug_file_by_buildid): Update.
2016-11-21 19:12:23 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* windows-tdep.c (windows_xfer_shared_library): Update.
|
|
|
|
|
* windows-nat.c (windows_make_so): Update.
|
|
|
|
|
* utils.h (make_cleanup_bfd_unref): Remove.
|
|
|
|
|
* utils.c (do_bfd_close_cleanup, make_cleanup_bfd_unref): Remove.
|
|
|
|
|
* symfile.h (symfile_bfd_open)
|
|
|
|
|
(find_separate_debug_file_in_section): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* symfile.c (read_symbols, symbol_file_add)
|
|
|
|
|
(separate_debug_file_exists): Update.
|
|
|
|
|
(symfile_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(generic_load, reread_symbols): Update.
|
|
|
|
|
* symfile-mem.c (symbol_file_add_from_memory): Update.
|
|
|
|
|
* spu-linux-nat.c (spu_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(spu_symbol_file_add_from_memory): Update.
|
|
|
|
|
* solist.h (struct target_so_ops) <bfd_open>: Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(solib_bfd_fopen, solib_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* solib.c (solib_bfd_fopen, solib_bfd_open): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(solib_map_sections, reload_shared_libraries_1): Update.
|
|
|
|
|
* solib-svr4.c (enable_break): Update.
|
|
|
|
|
* solib-spu.c (spu_bfd_fopen): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* solib-frv.c (enable_break2): Update.
|
|
|
|
|
* solib-dsbt.c (enable_break): Update.
|
|
|
|
|
* solib-darwin.c (gdb_bfd_mach_o_fat_extract): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(darwin_solib_get_all_image_info_addr_at_init): Update.
|
|
|
|
|
(darwin_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* solib-aix.c (solib_aix_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* record-full.c (record_full_save): Update.
|
|
|
|
|
* python/py-objfile.c (objfpy_add_separate_debug_file): Update.
|
|
|
|
|
* procfs.c (insert_dbx_link_bpt_in_file): Update.
|
|
|
|
|
* minidebug.c (find_separate_debug_file_in_section): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
* machoread.c (macho_add_oso_symfile): Change abfd to
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(macho_symfile_read_all_oso): Update.
|
|
|
|
|
(macho_check_dsym): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(macho_symfile_read): Update.
|
|
|
|
|
* jit.c (bfd_open_from_target_memory): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(jit_bfd_try_read_symtab): Update.
|
|
|
|
|
* gdb_bfd.h (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
|
|
|
|
|
(gdb_bfd_openw, gdb_bfd_openr_iovec)
|
|
|
|
|
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(gdb_bfd_ref_policy): New struct.
|
|
|
|
|
(gdb_bfd_ref_ptr): New typedef.
|
|
|
|
|
* gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
|
|
|
|
|
(gdb_bfd_openw, gdb_bfd_openr_iovec)
|
|
|
|
|
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
* gcore.h (create_gcore_bfd): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* gcore.c (create_gcore_bfd): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(gcore_command): Update.
|
|
|
|
|
* exec.c (exec_file_attach): Update.
|
|
|
|
|
* elfread.c (elf_symfile_read): Update.
|
|
|
|
|
* dwarf2read.c (dwarf2_get_dwz_file): Update.
|
|
|
|
|
(try_open_dwop_file, open_dwo_file): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(open_and_init_dwo_file): Update.
|
|
|
|
|
(open_dwp_file): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(open_and_init_dwp_file): Update.
|
|
|
|
|
* corelow.c (core_open): Update.
|
|
|
|
|
* compile/compile-object-load.c (compile_object_load): Update.
|
|
|
|
|
* common/gdb_ref_ptr.h (ref_ptr::operator->): New operator.
|
|
|
|
|
* coffread.c (coff_symfile_read): Update.
|
|
|
|
|
* cli/cli-dump.c (bfd_openr_or_error, bfd_openw_or_error): Return
|
|
|
|
|
gdb_bfd_ref_ptr. Rename.
|
|
|
|
|
(dump_bfd_file, restore_command): Update.
|
|
|
|
|
* build-id.h (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* build-id.c (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(find_separate_debug_file_by_buildid): Update.
|
|
|
|
|
|
2016-11-21 01:48:31 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_ref_ptr.h: New file.
|
|
|
|
|
* python/py-ref.h (struct gdbpy_ref_policy): New.
|
|
|
|
|
(gdbpy_ref): Now a typedef.
|
|
|
|
|
|
Remove make_cleanup_htab_delete
This removes make_cleanup_htab_delete in favor of destructors,
building on an earlier patch that added the htab_up typedef.
Testing revealed that more cleanup-removal work was needed in
dwarf2loc.c, so this version of the patch changes code there to use
unordered_set and vector, removing some more cleanups.
2017-01-10 Tom Tromey <tom@tromey.com>
* utils.h (make_cleanup_htab_delete): Don't declare.
* utils.c (do_htab_delete_cleanup, make_cleanup_htab_delete):
Remove.
* linespec.c (decode_compound_collector): Add constructor,
destructor.
(lookup_prefix_sym): Remove cleanup.
(symtab_collector): Add constructor, destructor.
(collect_symtabs_from_filename): Remove cleanup.
* disasm.c (do_mixed_source_and_assembly): Use htab_up.
* compile/compile-c-symbols.c (generate_c_for_variable_locations):
Use htab_up.
* gnu-v3-abi.c (gnuv3_print_vtable): Use htab_up.
* dwarf2read.c (dw2_expand_symtabs_matching)
(dw2_map_symbol_filenames, dwarf_decode_macros)
(write_psymtabs_to_index): Use htab_up.
* dwarf2loc.c (func_verify_no_selftailcall)
(call_site_find_chain_1, func_verify_no_selftailcall)
(chain_candidate, call_site_find_chain_1): Use std::unordered_set,
std::vector, gdb::unique_xmalloc_ptr.
(call_sitep): Remove typedef.
(dwarf2_locexpr_baton_eval): Remove unused variable.
2016-11-20 21:20:32 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (make_cleanup_htab_delete): Don't declare.
|
|
|
|
|
* utils.c (do_htab_delete_cleanup, make_cleanup_htab_delete):
|
|
|
|
|
Remove.
|
|
|
|
|
* linespec.c (decode_compound_collector): Add constructor,
|
|
|
|
|
destructor.
|
|
|
|
|
(lookup_prefix_sym): Remove cleanup.
|
|
|
|
|
(symtab_collector): Add constructor, destructor.
|
|
|
|
|
(collect_symtabs_from_filename): Remove cleanup.
|
|
|
|
|
* disasm.c (do_mixed_source_and_assembly): Use htab_up.
|
|
|
|
|
* compile/compile-c-symbols.c (generate_c_for_variable_locations):
|
|
|
|
|
Use htab_up.
|
|
|
|
|
* gnu-v3-abi.c (gnuv3_print_vtable): Use htab_up.
|
|
|
|
|
* dwarf2read.c (dw2_expand_symtabs_matching)
|
|
|
|
|
(dw2_map_symbol_filenames, dwarf_decode_macros)
|
|
|
|
|
(write_psymtabs_to_index): Use htab_up.
|
|
|
|
|
* dwarf2loc.c (func_verify_no_selftailcall)
|
|
|
|
|
(call_site_find_chain_1, func_verify_no_selftailcall)
|
|
|
|
|
(chain_candidate, call_site_find_chain_1): Use std::unordered_set,
|
|
|
|
|
std::vector, gdb::unique_xmalloc_ptr.
|
|
|
|
|
(call_sitep): Remove typedef.
|
|
|
|
|
(dwarf2_locexpr_baton_eval): Remove unused variable.
|
|
|
|
|
|
2016-11-20 19:16:41 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (make_cleanup_py_decref)
|
|
|
|
|
(make_cleanup_py_xdecref): Don't declare.
|
|
|
|
|
* python/py-utils.c (py_decref, make_cleanup_py_decref)
|
|
|
|
|
(py_xdecref, make_cleanup_py_xdecref): Remove.
|
|
|
|
|
|
2016-11-20 19:04:40 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_mi_print_variables): Use gdbpy_ref.
|
|
|
|
|
(py_print_locals, enumerate_locals, py_print_args): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:57:28 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (enumerate_args): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:52:25 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-utils.c (unicode_to_encoded_string)
|
|
|
|
|
(python_string_to_target_string)
|
|
|
|
|
(python_string_to_target_python_string)
|
|
|
|
|
(python_string_to_host_string, gdbpy_obj_to_string)
|
|
|
|
|
(get_addr_from_python): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:48:51 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-unwind.c (pyuw_object_attribute_to_pointer): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:46:23 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (eval_python_command, gdbpy_decode_line)
|
|
|
|
|
(gdbpy_run_events, gdbpy_start_type_printers)
|
|
|
|
|
(gdbpy_apply_type_printers): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:34:34 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-param.c (get_doc_string, compute_enum_values): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:31:17 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (find_thread_object, build_inferior_list):
|
|
|
|
|
Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:27:59 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_frame): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:25:29 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_out_of_scope): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:23:08 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (cmdpy_completer_helper): Use gdbpy_ref. Remove
|
|
|
|
|
extra incref.
|
|
|
|
|
(cmdpy_completer_handle_brkchars, cmdpy_completer, cmdpy_init):
|
|
|
|
|
Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:13:31 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:10:58 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-arch.c (archpy_disassemble): Use gdbpy_ref. Don't
|
|
|
|
|
decref results of PyArg_ParseTupleAndKeywords.
|
|
|
|
|
|
2016-11-12 20:08:17 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_run_simple_file): Use
|
|
|
|
|
unique_xmalloc_ptr, gdbpy_ref.
|
|
|
|
|
|
2016-11-12 20:07:16 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (print_stack_unless_memory_error)
|
|
|
|
|
(print_string_repr, print_children): Use gdbpy_ref.
|
|
|
|
|
(dummy_python_frame): New class.
|
|
|
|
|
(dummy_python_frame::dummy_python_frame): Rename from
|
|
|
|
|
push_dummy_python_frame.
|
|
|
|
|
(py_restore_tstate): Remove.
|
|
|
|
|
|
2016-11-12 19:57:45 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_frame): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-12 19:53:50 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (ensure_python_env, restore_python_env):
|
|
|
|
|
Remove.
|
|
|
|
|
* python/python-internal.h (ensure_python_env): Don't declare.
|
|
|
|
|
* varobj.h (varobj_ensure_python_env): Don't declare.
|
|
|
|
|
* varobj.c (varobj_ensure_python_env): Remove.
|
|
|
|
|
|
2016-11-12 19:51:59 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_value_get_print_value): Use
|
|
|
|
|
gdbpy_enter_varobj.
|
|
|
|
|
|
2016-11-12 19:48:48 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (print_string_repr, print_children):
|
|
|
|
|
Update.
|
|
|
|
|
* python/py-lazy-string.c (gdbpy_extract_lazy_string): Change type
|
|
|
|
|
of "encoding".
|
|
|
|
|
* varobj.c (varobj_value_get_print_value): Update.
|
|
|
|
|
* python/python-internal.h (gdbpy_extract_lazy_string): Update.
|
|
|
|
|
|
2016-11-12 19:37:52 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_get_display_hint)
|
|
|
|
|
(dynamic_varobj_has_child_method, install_new_value_visualizer)
|
|
|
|
|
(varobj_set_visualizer, free_variable): Use
|
|
|
|
|
gdbpy_enter_varobj.
|
|
|
|
|
|
2016-11-12 19:32:05 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_command): Use gdbpy_enter, gdbpy_ref.
|
|
|
|
|
(do_finish_initialization): New function. Use gdbpy_ref.
|
|
|
|
|
(gdbpy_finish_initialization): Use gdbpy_enter. Call
|
|
|
|
|
do_finish_initialization.
|
|
|
|
|
|
2016-11-12 19:23:36 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-param.c (get_set_value, get_show_value): Use
|
|
|
|
|
gdbpy_enter, gdbpy_ref.
|
|
|
|
|
|
2016-11-12 19:15:46 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-function.c (fnpy_call): Use gdbpy_enter, gdbpy_ref.
|
|
|
|
|
|
2016-11-12 19:12:41 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (cmdpy_function): Use gdbpy_enter, gdbpy_ref.
|
|
|
|
|
|
2016-11-09 04:14:32 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-varobj.c (py_varobj_iter_dtor, py_varobj_iter_next):
|
|
|
|
|
Use gdbpy_enter_varobj.
|
|
|
|
|
|
2016-11-09 00:18:24 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (gdbpy_enter_varobj): New constructor.
|
|
|
|
|
* python/python-internal.h (gdbpy_enter_varobj): New class.
|
|
|
|
|
* python/py-varobj.c (py_varobj_get_iterator): Use
|
|
|
|
|
gdbpy_enter_varobj.
|
|
|
|
|
|
2016-11-08 23:47:39 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_xmethod_result_type): Use
|
|
|
|
|
gdbpy_enter, gdbpy_ref, unique_xmalloc_ptr.
|
|
|
|
|
(gdbpy_invoke_xmethod): Use gdbpy_ref, gdbpy_enter.
|
|
|
|
|
(gdbpy_get_xmethod_arg_types): Use gdbpy_ref,
|
|
|
|
|
unique_xmalloc_ptr.
|
|
|
|
|
(gdbpy_get_xmethod_arg_types): Use gdbpy_ref, gdbpy_enter.
|
|
|
|
|
|
2016-11-08 23:35:24 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-xmethods.c (invoke_match_method): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-08 23:34:55 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): use
|
|
|
|
|
gdbpy_enter, gdbpy_ref.
|
|
|
|
|
|
2016-11-08 23:15:01 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_interactive_command): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 23:13:49 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_before_prompt_hook): Use gdbpy_enter,
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-08 19:38:22 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (gdbpy_apply_val_pretty_printer): Use
|
|
|
|
|
gdbpy_enter, gdbpy_ref, unique_xmalloc_ptr.
|
|
|
|
|
|
2016-11-08 19:11:55 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (htab_deleter): New struct.
|
|
|
|
|
(htab_up): New typedef.
|
|
|
|
|
* python/py-framefilter.c (gdbpy_apply_frame_filter): Use
|
|
|
|
|
gdbpy_enter, gdbpy_ref, htab_up.
|
|
|
|
|
|
2016-11-08 04:41:50 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-unwind.c (pending_frame_invalidate): Remove.
|
|
|
|
|
(pyuw_sniffer): Use gdbpy_enter and gdbpy_ref.
|
|
|
|
|
|
2016-11-08 00:13:40 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-xmethods.c (gdbpy_free_xmethod_worker_data)
|
|
|
|
|
(gdbpy_clone_xmethod_worker_data): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:12:17 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-type.c (save_objfile_types): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:11:37 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_eval_from_control_command)
|
|
|
|
|
(gdbpy_source_script, gdbpy_run_events)
|
|
|
|
|
(gdbpy_source_objfile_script, gdbpy_execute_objfile_script)
|
|
|
|
|
(gdbpy_free_type_printers, gdbpy_finish_initialization): Use
|
|
|
|
|
gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:08:36 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-progspace.c (py_free_pspace): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:07:53 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-objfile.c (py_free_objfile): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:06:26 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (python_on_normal_stop, python_on_resume)
|
|
|
|
|
(python_on_inferior_call_pre, python_on_inferior_call_post)
|
|
|
|
|
(python_on_memory_change, python_on_register_change)
|
|
|
|
|
(python_inferior_exit, python_new_objfile, add_thread_object)
|
|
|
|
|
(delete_thread_object, py_free_inferior): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:03:10 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_handle_stop)
|
|
|
|
|
(bpfinishpy_handle_exit): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:02:16 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (cmdpy_destroyer)
|
|
|
|
|
(cmdpy_completer_handle_brkchars, cmdpy_completer): Use
|
|
|
|
|
gdbpy_enter.
|
|
|
|
|
|
2016-11-07 23:59:41 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Use
|
|
|
|
|
gdbpy_enter.
|
|
|
|
|
(gdbpy_breakpoint_has_cond): Likewise.
|
|
|
|
|
|
2016-11-07 23:56:57 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_enter): New constructor.
|
|
|
|
|
(~gdbpy_enter): New destructor.
|
|
|
|
|
(restore_python_env, ensure_python_env): Rewrite.
|
|
|
|
|
* python/python-internal.h (gdbpy_enter): New class.
|
|
|
|
|
|
2016-11-07 05:51:20 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-symbol.c (gdbpy_lookup_symbol): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:50:36 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-value.c (value_has_field, get_field_flag)
|
|
|
|
|
(get_field_type, valpy_getitem, convert_value_from_python): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:49:34 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_progspaces, gdbpy_objfiles): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:37:01 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (search_pp_list)
|
|
|
|
|
(find_pretty_printer_from_objfiles)
|
|
|
|
|
(find_pretty_printer_from_progspace)
|
|
|
|
|
(find_pretty_printer_from_gdb, find_pretty_printer)
|
|
|
|
|
(gdbpy_get_display_hint, gdbpy_get_varobj_pretty_printer): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:29:12 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-param.c (call_doc_function): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:25:34 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-linetable.c (build_line_table_tuple_from_pcs)
|
|
|
|
|
(ltpy_get_all_source_lines): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:25:31 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (extract_sym, extract_value)
|
|
|
|
|
(get_py_iter_from_func, bootstrap_python_frame_filters): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:25:22 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoints): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:23:31 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (gdbpy_inferiors): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:21:14 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-function.c (convert_values_to_python, fnpy_init): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:10:18 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (gdbpy_string_to_argv): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 04:59:51 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-type.c (convert_field, make_fielditem, typy_fields)
|
|
|
|
|
(typy_range): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 04:42:32 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-threadevent.c (create_thread_event_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-stopevent.c (create_stop_event_object): Simplify.
|
|
|
|
|
(emit_stop_event): Use gdbpy_ref.
|
|
|
|
|
* python/py-signalevent.c (create_signal_event_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-newobjfileevent.c (create_new_objfile_event_object)
|
|
|
|
|
(emit_new_objfile_event, create_clear_objfiles_event_object)
|
|
|
|
|
(emit_clear_objfiles_event): Use gdbpy_ref.
|
|
|
|
|
* python/py-infevents.c (create_inferior_call_event_object)
|
|
|
|
|
(create_register_changed_event_object)
|
|
|
|
|
(create_memory_changed_event_object, emit_inferior_call_event)
|
|
|
|
|
(emit_memory_changed_event, emit_register_changed_event): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-exitedevent.c (create_exited_event_object)
|
|
|
|
|
(emit_exited_event): Use gdbpy_ref.
|
|
|
|
|
* python/py-event.h (evpy_emit_event): Remove
|
|
|
|
|
CPYCHECKER_STEALS_REFERENCE_TO_ARG annotation.
|
|
|
|
|
* python/py-event.c (evpy_emit_event): Use gdbpy_ref.
|
|
|
|
|
* python/py-continueevent.c (emit_continue_event): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoint_created)
|
|
|
|
|
(gdbpy_breakpoint_deleted, gdbpy_breakpoint_modified): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-bpevent.c (create_breakpoint_event_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-05 20:43:23 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-ref.h: New file.
|
|
|
|
|
|
2017-01-10 17:30:47 +01:00
|
|
|
|
2017-01-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* cli-out.c (cli_ui_out::do_redirect): Change return type to
|
|
|
|
|
void.
|
|
|
|
|
* cli-out.h (cli_ui_out::do_redirect): Likewise.
|
|
|
|
|
* mi/mi-out.c (mi_ui_out::do_redirect): Likewise.
|
|
|
|
|
* mi/mi-out.h (mi_ui_out::do_redirect): Likewise.
|
|
|
|
|
* ui-out.c (ui_out::redirect): Likewise.
|
|
|
|
|
* ui-out.h (ui_out::redirect, ui_out::do_redirect): Likewise.
|
|
|
|
|
* cli/cli-logging.c (set_logging_redirect): Update call site of
|
|
|
|
|
ui_out::redirect.
|
|
|
|
|
(handle_redirections): Likewise.
|
|
|
|
|
* scm-ports.c (ioscm_with_output_to_port_worker): Likewise.
|
|
|
|
|
* top.c (execute_command_to_string): Likewise.
|
|
|
|
|
* utils.c (do_ui_out_redirect_pop): Likewise.
|
|
|
|
|
|
2017-01-10 16:16:26 +01:00
|
|
|
|
2017-01-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (_initialize_stack): Update "frame" command help message.
|
|
|
|
|
|
2017-01-08 11:17:54 +01:00
|
|
|
|
2017-01-08 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (CastExpression): Emit UNOP_CAST_TYPE.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* x86-linux-nat.h: Include gdb_proc_service.h.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* ser-base.h: Include serial.h.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* ppc-linux-tdep.h: Include ppc-tdep.h.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* nat/amd64-linux-siginfo.h: Include signal.h.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* nat/aarch64-linux-hw-point.h: Include break-common.h.
|
|
|
|
|
|
2017-01-06 15:33:00 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mi/mi-parse.h: Include mi-cmds.h.
|
|
|
|
|
|
2017-01-06 15:26:45 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* inf-loop.c: Don't include "target.h".
|
|
|
|
|
* inf-loop.h: Include it here.
|
|
|
|
|
|
2017-01-06 15:26:45 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* dfp.h: Include "dboulest.h" and "expression.h".
|
|
|
|
|
|
2017-01-06 15:26:45 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.h: Include "ax.h".
|
|
|
|
|
|
2017-01-06 15:03:02 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Replace gdb_ptrace.h
|
|
|
|
|
with nat/gdb_ptrace.h.
|
|
|
|
|
|
2017-01-05 15:44:20 +01:00
|
|
|
|
2017-01-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mips-fbsd-tdep.c (mips_fbsd_sigframe_init): Move && to
|
|
|
|
|
new line.
|
|
|
|
|
(mips64_fbsd_sigframe_init): Likewise.
|
|
|
|
|
|
2017-01-04 21:15:22 +01:00
|
|
|
|
2017-01-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* mips-fbsd-tdep.c (_initialize_mips_fbsd_tdep): Use
|
|
|
|
|
GDB_OSABI_FREEBSD instead of GDB_OSABI_FREEBSD_ELF.
|
|
|
|
|
|
2017-01-04 18:41:58 +01:00
|
|
|
|
2017-01-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALLDEPFILES): Add mips-fbsd-nat.c.
|
|
|
|
|
* NEWS: Mention new FreeBSD/mips native configuration.
|
|
|
|
|
* config/mips/fbsd.mh: New file.
|
|
|
|
|
* configure.host: Add mips*-*-freebsd*.
|
|
|
|
|
* mips-fbsd-nat.c: New file.
|
|
|
|
|
|
2017-01-04 18:41:58 +01:00
|
|
|
|
2017-01-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_TARGET_OBS): Add mips-fbsd-tdep.o.
|
|
|
|
|
(ALLDEPFILES): Add mips-fbsd-tdep.c.
|
|
|
|
|
* NEWS: Mention new FreeBSD/mips target.
|
|
|
|
|
* configure.tgt: Add mips*-*-freebsd*.
|
|
|
|
|
* mips-fbsd-tdep.c: New file.
|
|
|
|
|
* mips-fbsd-tdep.h: New file.
|
|
|
|
|
|
2017-01-04 10:32:46 +01:00
|
|
|
|
2017-01-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (write_pieced_value): Don't use VALUE_FRAME_ID (to),
|
|
|
|
|
use c->frame_id when the piece location is DWARF_VALUE_REGISTER.
|
|
|
|
|
|
2017-01-01 07:50:51 +01:00
|
|
|
|
2017-01-01 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
2017-03-07 14:51:33 +01:00
|
|
|
|
Update copyright year range in all GDB files.
|
2017-01-01 07:50:51 +01:00
|
|
|
|
|
2017-01-01 07:39:54 +01:00
|
|
|
|
2017-01-01 Joel Brobecker <brobecker@adacore.com>
|
2016-12-23 00:50:10 +01:00
|
|
|
|
|
2017-01-01 07:39:54 +01:00
|
|
|
|
* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2016.
|
2016-12-23 00:50:10 +01:00
|
|
|
|
|
2017-01-01 07:39:54 +01:00
|
|
|
|
For older changes see ChangeLog-2016.
|
1999-04-16 03:35:26 +02:00
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
|
|
mode: change-log
|
|
|
|
|
left-margin: 8
|
|
|
|
|
fill-column: 74
|
|
|
|
|
version-control: never
|
2007-08-10 00:44:38 +02:00
|
|
|
|
coding: utf-8
|
1999-04-16 03:35:26 +02:00
|
|
|
|
End:
|