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-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>
|
|
|
|
|
|
|
|
|
|
Update copyright year range in all GDB files.
|
|
|
|
|
|
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:
|