gdb: Handle requests to print source lines backward
...by which I mean from high line number to low, not, actually
backward character by character!
Commit:
commit 62f29fda90cf1d5a1899f57ef78452471c707fd6
Date: Tue Oct 9 22:21:05 2018 -0600
Highlight source code using GNU Source Highlight
introduced a regression in the test gdb.linespec/explicit.exp, in
which a request is made to GDB to print a reverse sequence of lines,
from +10 to -10 from the current line number. The expected behaviour
is that GDB prints nothing. The above commit changed this so that GDB
now prints:
Line number 32 out of range; /path/to/gdb/testsuite/gdb.linespec/explicit.c has 71 lines.
which is a little confusing.
This commit fixes the regression, and restores the behaviour that GDB
prints nothing.
While I was passing I noticed a call to `back` on a std::string that I
was concerned could be empty if the request for source lines returns
an empty string. I don't know if it would be possible for a request
for lines to return an empty string, I guess it should be impossible,
in which case, maybe this should be an assertion, but adding a `empty`
check, seems like an easy and cheap safety net.
gdb/ChangeLog:
* source.c (print_source_lines_base): Handle requests to print
reverse line number sequences, and guard against empty lines
string.
2019-01-07 00:53:22 +01:00
|
|
|
|
2019-01-08 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* source.c (print_source_lines_base): Handle requests to print
|
|
|
|
|
reverse line number sequences, and guard against empty lines
|
|
|
|
|
string.
|
|
|
|
|
|
2019-01-07 00:31:45 +01:00
|
|
|
|
2019-01-08 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* source.c (print_source_lines_base): Fix skip of '\r' if next
|
|
|
|
|
character is '\n'.
|
|
|
|
|
|
2019-01-03 03:22:44 +01:00
|
|
|
|
2019-01-06 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* c-exp.y (struct c_parse_state) <macro_original_text,
|
|
|
|
|
expansion_obstack>: New member.
|
|
|
|
|
(macro_original_text, expansion_obstack): Remove globals.
|
|
|
|
|
(scan_macro_expansion, scanning_macro_expansion)
|
|
|
|
|
(finished_macro_expansion): Update.
|
|
|
|
|
(scan_macro_cleanup): Remove.
|
|
|
|
|
(yylex, c_parse): Update.
|
|
|
|
|
|
2019-01-03 03:13:15 +01:00
|
|
|
|
2019-01-06 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* c-exp.y (struct c_parse_state) <strings>: New member.
|
|
|
|
|
(operator_stoken): Update.
|
|
|
|
|
|
2019-01-03 03:12:32 +01:00
|
|
|
|
2019-01-06 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* parser-defs.h (type_ptr): Remove typedef. Don't declare VEC.
|
|
|
|
|
(union type_stack_elt) <typelist_val>: Now a pointer to
|
|
|
|
|
std::vector.
|
|
|
|
|
(type_stack_cleanup): Don't declare.
|
|
|
|
|
(push_typelist): Update.
|
|
|
|
|
* parse.c (pop_typelist): Return a std::vector.
|
|
|
|
|
(push_typelist): Take a std::vector.
|
|
|
|
|
(follow_types): Update. Do not free args.
|
|
|
|
|
(type_stack_cleanup): Remove.
|
|
|
|
|
* c-exp.y (struct c_parse_state): New.
|
|
|
|
|
(cpstate): New global.
|
|
|
|
|
(type_aggregate_p, exp, ptr_operator, parameter_typelist)
|
|
|
|
|
(nonempty_typelist): Update.
|
|
|
|
|
(func_mod): Create a new vector.
|
|
|
|
|
(c_parse): Create a c_parse_state.
|
|
|
|
|
(check_parameter_typelist): Do not delete params.
|
|
|
|
|
(function_method): Update. Do not delete type_list.
|
|
|
|
|
|
2018-12-29 18:46:07 +01:00
|
|
|
|
2019-01-06 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/28155:
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_init): Use
|
|
|
|
|
check_typedef.
|
|
|
|
|
* infcmd.c (finish_command_fsm_should_stop): Use check_typedef.
|
|
|
|
|
(print_return_value): Likewise.
|
|
|
|
|
|
2018-12-24 22:56:03 +01:00
|
|
|
|
2019-01-05 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* contrib/cleanup_check.py: Remove.
|
|
|
|
|
* contrib/gcc-with-excheck: Remove.
|
|
|
|
|
* contrib/exsummary.py: Remove.
|
|
|
|
|
* contrib/excheck.py: Remove.
|
|
|
|
|
|
GDB crash re-running program on Windows (native)
Running any program twice on Windows current results in GDB crashing:
$ gdb -q any_program
(gdb) run
$ gdb dummy -batch -ex run -ex run
[New Thread 684960.0xe5878]
[New Thread 684960.0xd75ac]
[New Thread 684960.0xddac8]
[New Thread 684960.0xc1f50]
[Thread 684960.0xd75ac exited with code 0]
[Thread 684960.0xddac8 exited with code 0]
[Thread 684960.0xc1f50 exited with code 0]
[Inferior 1 (process 684960) exited normally]
(gdb) run
Segmentation fault
The crash happens while processing the CREATE_PROCESS_DEBUG_EVENT
for the second run; in particular, we have in get_windows_debug_event:
| case CREATE_PROCESS_DEBUG_EVENT:
| [...]
| if (main_thread_id)
| windows_delete_thread (ptid_t (current_event.dwProcessId, 0,
| main_thread_id),
| 0);
The problem is that main_thread_id is the TID of the main thread from
the *previous* inferior, and this code is trying to delete that
thread. The problem is that it is constructing a PTID by pairing
the TID of the previous inferior with the PID of the new inferior.
As a result, when we dig inside windows_delete_thread to see
how it would handle that, we see...
| delete_thread (find_thread_ptid (ptid));
Since the PTID is bogus, we end up calling delete_thread with
a NULL thread_info. It used to be harmless, turning the delete_thread
into a nop, but the following change...
| commit 080363310650c93ad8e93018bcb6760ba5d32d1c
| Date: Thu Nov 22 16:09:14 2018 +0000
| Subject: Per-inferior thread list, thread ranges/iterators, down with ALL_THREADS, etc.
... changed delete_thread to get the list of threads from
the inferior, which itself is now accessed via the given
thread_info. This is the corresponding diff that shows the change:
| - for (tp = thread_list; tp; tpprev = tp, tp = tp->next)
| + for (tp = thr->inf->thread_list; tp; tpprev = tp, tp = tp->next)
As a result of this, passing a NULL thread_info is no longer
an option!
Stepping back a bit, the reason behind deleting the thread late
could be found in a patch from Dec 2003, which laconically explains:
| commit 87a45c96062d658ca83b50aa060a648bf5f5f1ff
| Date: Fri Dec 26 00:39:04 2003 +0000
|
| * win32-nat.c (get_child_debug_event): Keep main thread id around
| even after thread exits since Windows insists on continuing to
| report events against it.
A look at the gdb-patches archives did not provide any additional
clues (https://www.sourceware.org/ml/gdb-patches/2003-12/msg00478.html).
It is not clear whether this is still needed or not. This patch
assumes that whatever isue there was, the versions of Windows
we currently support no longer have it.
With that in mind, this commit fixes the issue by deleting the thread
when the inferior sends the exit-process event as opposed to deleting it
later, while starting a new inferior.
This also restores the printing of the thread-exit notification for
the main thread, which was missing before. Looking at the transcript
of the example shown above, we can see 4 thread creation notifications,
and only 3 notifications for thread exits. Now creation and exit
notifications are balanced.
In the handling of EXIT_THREAD_DEBUG_EVENT, the main_thread_id
check is removed because deemed unnecessary: The main thread was
introduced by a CREATE_PROCESS_DEBUG_EVENT, and thus the kernel
is expected to report its death via EXIT_PROCESS_DEBUG_EVENT.
And finally, because the behavior of delete_thread did change
(albeit when getting a value we probably never expected to receive),
this patch also adds a gdb_assert. The purpose is to provide some
immediate information in case there are other callers that mistakenly
call delete_thread with a NULL thread info. This can be useful
information when direct debugging of GDB isn't an option.
gdb/ChangeLog:
* thread.c (delete_thread_1): Add gdb_assert that THR is not
NULL. Initialize tpprev to NULL instead of assigning it
to NULL on the next statement.
* windows-nat.c (windows_delete_thread): Remove check for
main_thread_id before printing thread exit notifications.
(get_windows_debug_event) <EXIT_THREAD_DEBUG_EVENT>:
Remove thread ID check against main_thread_id.
<CREATE_PROCESS_DEBUG_EVENT>: Remove call to
windows_delete_thread.
<EXIT_PROCESS_DEBUG_EVENT>: Add call to windows_delete_thread.
2019-01-05 08:55:08 +01:00
|
|
|
|
2019-01-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (delete_thread_1): Add gdb_assert that THR is not
|
|
|
|
|
NULL. Initialize tpprev to NULL instead of assigning it
|
|
|
|
|
to NULL on the next statement.
|
|
|
|
|
* windows-nat.c (windows_delete_thread): Remove check for
|
|
|
|
|
main_thread_id before printing thread exit notifications.
|
|
|
|
|
(get_windows_debug_event) <EXIT_THREAD_DEBUG_EVENT>:
|
|
|
|
|
Remove thread ID check against main_thread_id.
|
|
|
|
|
<CREATE_PROCESS_DEBUG_EVENT>: Remove call to
|
|
|
|
|
windows_delete_thread.
|
|
|
|
|
<EXIT_PROCESS_DEBUG_EVENT>: Add call to windows_delete_thread.
|
|
|
|
|
|
2018-12-24 22:41:40 +01:00
|
|
|
|
2019-01-04 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (_initialize_compile): Use upper case for
|
|
|
|
|
metasyntactic variables.
|
|
|
|
|
* symmisc.c (_initialize_symmisc): Use upper case for
|
|
|
|
|
metasyntactic variables.
|
|
|
|
|
* psymtab.c (_initialize_psymtab): Use upper case for
|
|
|
|
|
metasyntactic variables.
|
|
|
|
|
* demangle.c (demangle_command): Use upper case for metasyntactic
|
|
|
|
|
variables.
|
|
|
|
|
(_initialize_demangler): Likewise.
|
|
|
|
|
* ax-gdb.c (_initialize_ax_gdb): Use upper case for metasyntactic
|
|
|
|
|
variables.
|
|
|
|
|
|
2019-01-02 19:41:44 +01:00
|
|
|
|
2019-01-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-source.c (tui_set_source_content): Use xstrdup.
|
|
|
|
|
|
2018-12-27 20:16:06 +01:00
|
|
|
|
2019-01-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-symtab.c (salpy_str): Update.
|
|
|
|
|
(struct salpy_sal_object) <symtab>: Now a PyObject.
|
|
|
|
|
(salpy_dealloc): Update.
|
|
|
|
|
(del_objfile_sal): Use gdbpy_ref.
|
|
|
|
|
|
2018-12-27 20:08:09 +01:00
|
|
|
|
2019-01-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-type.c (convert_field): Use new_reference. Return
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
(make_fielditem): Return gdbpy_ref.
|
|
|
|
|
(typy_fields): Update.
|
|
|
|
|
(typy_getitem): Update.
|
|
|
|
|
(field_name): Return gdbpy_ref. Use new_reference.
|
|
|
|
|
(typy_iterator_iternext): Update.
|
|
|
|
|
|
2018-12-27 19:57:28 +01:00
|
|
|
|
2019-01-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-record.c (gdbpy_stop_recording): Use Py_RETURN_NONE.
|
|
|
|
|
|
2018-12-27 19:53:20 +01:00
|
|
|
|
2019-01-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-value.c (valpy_dealloc): Use Py_XDECREF.
|
|
|
|
|
* python/py-type.c (typy_fields_items): Use gdbpy_ref.
|
|
|
|
|
* python/py-progspace.c (pspy_set_printers): Use gdbpy_ref.
|
|
|
|
|
(pspy_set_frame_filters, pspy_set_frame_unwinders)
|
|
|
|
|
(pspy_set_type_printers): Likewise.
|
|
|
|
|
* python/py-function.c (fnpy_init): Use gdbpy_ref.
|
|
|
|
|
* python/py-cmd.c (cmdpy_init): Use gdbpy_ref.
|
|
|
|
|
* python/py-objfile.c (objfpy_set_printers): Use gdbpy_ref.
|
|
|
|
|
(objfpy_set_frame_filters, objfpy_set_frame_unwinders)
|
|
|
|
|
(objfpy_set_type_printers): Likewise.
|
|
|
|
|
|
2018-12-27 19:32:01 +01:00
|
|
|
|
2019-01-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_enter, ~gdbpy_enter): Update.
|
|
|
|
|
(gdbpy_print_stack): Use gdbpy_err_fetch.
|
|
|
|
|
* python/python-internal.h (class gdbpy_err_fetch): New class.
|
|
|
|
|
(class gdbpy_enter) <m_error_type, m_error_value,
|
|
|
|
|
m_error_traceback>: Remove.
|
|
|
|
|
<m_error>: New member.
|
|
|
|
|
(gdbpy_exception_to_string): Don't declare.
|
|
|
|
|
* python/py-varobj.c (py_varobj_iter_next): Use gdbpy_err_fetch.
|
|
|
|
|
* python/py-value.c (convert_value_from_python): Use
|
|
|
|
|
gdbpy_err_fetch.
|
|
|
|
|
* python/py-utils.c (gdbpy_err_fetch::to_string): Rename from
|
|
|
|
|
gdbpy_exception_to_string.
|
|
|
|
|
(gdbpy_handle_exception): Use gdbpy_err_fetch.
|
|
|
|
|
* python/py-prettyprint.c (print_stack_unless_memory_error): Use
|
|
|
|
|
gdbpy_err_fetch.
|
|
|
|
|
|
2018-12-31 23:20:56 +01:00
|
|
|
|
2019-01-03 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (delete_lwp_cleanup): Delete.
|
|
|
|
|
(struct lwp_deleter): New struct.
|
|
|
|
|
(lwp_info_up): New typedef.
|
|
|
|
|
(linux_nat_target::follow_fork): Delete cleanup, and make use of
|
|
|
|
|
lwp_info_up.
|
|
|
|
|
|
2018-12-31 22:23:14 +01:00
|
|
|
|
2019-01-03 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* linux-fork.c (class scoped_switch_fork_info): New class.
|
|
|
|
|
(inferior_call_waitpid): Update to use scoped_switch_fork_info.
|
|
|
|
|
|
2018-12-31 18:44:17 +01:00
|
|
|
|
2019-01-03 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* valops.c (find_overload_match): Remove use of null_cleanup, and
|
|
|
|
|
calls to do_cleanups.
|
|
|
|
|
|
2018-12-31 18:41:38 +01:00
|
|
|
|
2019-01-03 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-cplus-types.c
|
|
|
|
|
(compile_cplus_instance::decl_name): Handle changes to
|
|
|
|
|
cp_func_name.
|
|
|
|
|
* cp-support.c (cp_func_name): Update header comment, update
|
|
|
|
|
return type.
|
|
|
|
|
* cp-support.h (cp_func_name): Update return type in declaration.
|
|
|
|
|
* valops.c (find_overload_match): Move temp_func local to top
|
|
|
|
|
level of function and change its type. Use temp_func to hold and
|
|
|
|
|
delete temporary string obtained from cp_func_name.
|
|
|
|
|
|
2018-12-31 15:05:09 +01:00
|
|
|
|
2019-01-03 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_target::remote_check_symbols): Convert `msg` to
|
|
|
|
|
gdb::char_vector, remove cleanup, and update uses of `msg`.
|
|
|
|
|
|
2019-01-03 20:12:17 +01:00
|
|
|
|
2019-01-03 Jim Wilson <jimw@sifive.com>
|
|
|
|
|
|
|
|
|
|
* riscv-tdep.c (riscv_freg_feature): Drop s0 name from f8.
|
|
|
|
|
|
2019-01-02 16:03:13 +01:00
|
|
|
|
2019-01-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* xml-tdesc.c (xml_cache): Hold a target_desc_up.
|
|
|
|
|
(tdesc_parse_xml): Remove cleanups.
|
|
|
|
|
* target-descriptions.h (make_cleanup_free_target_description):
|
|
|
|
|
Don't declare.
|
|
|
|
|
(target_desc_deleter): New struct.
|
|
|
|
|
(target_desc_up): New typedef.
|
|
|
|
|
* target-descriptions.c (target_desc_deleter::operator()): Rename
|
|
|
|
|
from free_target_description.
|
|
|
|
|
(make_cleanup_free_target_description): Remove.
|
|
|
|
|
|
2019-01-02 17:17:43 +01:00
|
|
|
|
2019-01-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* linespec.c (struct linespec_parser): Rename from ls_parser. Add
|
|
|
|
|
constructor, destructor.
|
|
|
|
|
(linespec_parser): Remove typedef.
|
|
|
|
|
(~linespec_parser): Rename from linespec_parser_delete.
|
|
|
|
|
(linespec_lex_to_end, linespec_complete_label)
|
|
|
|
|
(linespec_complete): Update.
|
|
|
|
|
(decode_line_full): Remove cleanups.
|
|
|
|
|
(decode_line_1): Update.
|
|
|
|
|
|
2019-01-02 17:58:14 +01:00
|
|
|
|
2019-01-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (inferior_to_inferior_object): Change
|
|
|
|
|
return type.
|
|
|
|
|
* python/py-exitedevent.c (create_exited_event_object): Update.
|
|
|
|
|
* python/py-inferior.c (inferior_to_inferior_object): Return
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
(python_new_inferior, python_inferior_deleted)
|
|
|
|
|
(thread_to_thread_object, delete_thread_object)
|
|
|
|
|
(build_inferior_list, gdbpy_selected_inferior): Update.
|
|
|
|
|
* python/py-infthread.c (create_thread_object): Update. Also fail
|
|
|
|
|
if inferior_to_inferior_object fails.
|
|
|
|
|
|
2019-01-02 23:31:08 +01:00
|
|
|
|
2019-01-02 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* inferior.h (class inferior) <displaced_step_state>: New field.
|
|
|
|
|
* infrun.h (struct displaced_step_state): Move here from
|
|
|
|
|
infrun.c. Initialize fields, add constructor.
|
|
|
|
|
<inf>: Remove field.
|
|
|
|
|
<reset>: New method.
|
|
|
|
|
* infrun.c (struct displaced_step_inferior_state): Move to
|
|
|
|
|
infrun.h.
|
|
|
|
|
(displaced_step_inferior_states): Remove.
|
|
|
|
|
(get_displaced_stepping_state): Adust.
|
|
|
|
|
(displaced_step_in_progress_any_inferior): Adjust.
|
|
|
|
|
(displaced_step_in_progress_thread): Adjust.
|
|
|
|
|
(displaced_step_in_progress): Adjust.
|
|
|
|
|
(add_displaced_stepping_state): Remove.
|
|
|
|
|
(get_displaced_step_closure_by_addr): Adjust.
|
|
|
|
|
(remove_displaced_stepping_state): Remove.
|
|
|
|
|
(infrun_inferior_exit): Call displaced_step_state.reset.
|
|
|
|
|
(use_displaced_stepping): Don't check for NULL.
|
|
|
|
|
(displaced_step_prepare_throw): Call
|
|
|
|
|
get_displaced_stepping_state.
|
|
|
|
|
(displaced_step_fixup): Don't check for NULL.
|
|
|
|
|
(prepare_for_detach): Don't check for NULL.
|
|
|
|
|
|
Fix leak of struct call_thread_fsm in call_function_by_hand_dummy.
When the call does not complete, the call_thread_fsm allocated
by new_call_thread_fsm is not cleaned up and deleted, which causes
the following leak e.g. in gdb.base/callfuncs.exp:
==29263== 560 bytes in 7 blocks are definitely lost in loss record 2,833 of 3,341
==29263== at 0x4C2E0BC: calloc (vg_replace_malloc.c:762)
==29263== by 0x405110: xcalloc (common-utils.c:84)
==29263== by 0x4E67EB: xcnew<call_thread_fsm> (poison.h:122)
==29263== by 0x4E67EB: new_call_thread_fsm (infcall.c:516)
==29263== by 0x4E67EB: call_function_by_hand_dummy(value*, type*, gdb::array_view<value*>, void (*)(void*, int), void*) (infcall.c:1154)
==29263== by 0x4E784E: call_function_by_hand(value*, type*, gdb::array_view<value*>) (infcall.c:693)
==29263== by 0x496111: eval_call(expression*, noside, int, value**, char const*, type*) [clone .isra.5] (eval.c:835)
Fix the leak by similarly doing cleanup/destroy when restoring
previous state machine.
Tested on debian/amd64, natively and under valgrind.
2019-01-02 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* infcall.c (call_function_by_hand_dummy): cleanup/destroy sm
in case of call that did not complete.
2019-01-01 20:54:52 +01:00
|
|
|
|
2019-01-02 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
|
|
|
|
|
|
|
|
|
* infcall.c (call_function_by_hand_dummy): cleanup/destroy sm
|
|
|
|
|
in case of call that did not complete.
|
|
|
|
|
|
Fix search of debug files for remote debuggee
When using remote debugging server, and when debuggee filename is
inferred via qXfer:exec-file:read request, or sysroot starts with
"target:", this "target:" prefix of filepaths is not treated correctly
during debug file search - it appears in the middle of the looked up
paths.
In the following example, unpatched GDB can't find separate debug files for
neither the executable, nor standard libraries:
$ gdb -ex 'set debug separate-debug-file 1' -ex 'set sysroot target:/' -ex 'set debug-file-directory /usr/lib/debug:/home/j/hide' -ex 'target remote :3333' -ex 'break main' -ex 'continue' -ex 'bt' -ex 'info sharedlibrary' -ex 'set confirm off' -ex 'quit'
GNU gdb (Gentoo 9999 vanilla) 8.2.50.20181109-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
Remote debugging using :3333
Reading /home/j/test from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Reading /home/j/test from remote target...
Reading symbols from target:/home/j/test...
Looking for separate debug info (debug link) for target:/home/j/test
Trying target:/home/j/test.debug
Reading /home/j/test.debug from remote target...
Trying target:/home/j/.debug/test.debug
Reading /home/j/.debug/test.debug from remote target...
Trying /usr/lib/debug/target:/home/j/test.debug
Trying /home/j/hide/target:/home/j/test.debug
(No debugging symbols found in target:/home/j/test)
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
Reading symbols from target:/lib64/ld-linux-x86-64.so.2...
Looking for separate debug info (debug link) for target:/lib64/ld-linux-x86-64.so.2
Trying target:/lib64/ld-2.27.so.debug
Reading /lib64/ld-2.27.so.debug from remote target...
Trying target:/lib64/.debug/ld-2.27.so.debug
Reading /lib64/.debug/ld-2.27.so.debug from remote target...
Trying /usr/lib/debug/target:/lib64/ld-2.27.so.debug
Trying /home/j/hide/target:/lib64/ld-2.27.so.debug
(No debugging symbols found in target:/lib64/ld-linux-x86-64.so.2)
Looking for separate debug info (build-id) for system-supplied DSO at 0x7ffff7ffa000
Trying /usr/lib/debug/.build-id/fd/03d584bc1a90ba28be457635a02662c9f9c1f2.debug
Trying /home/j/hide/.build-id/fd/03d584bc1a90ba28be457635a02662c9f9c1f2.debug
0x00007ffff7dd7000 in ?? () from target:/lib64/ld-linux-x86-64.so.2
Breakpoint 1 at 0x4005eb
Continuing.
Reading /lib64/libpthread.so.0 from remote target...
Reading /lib64/libc.so.6 from remote target...
Looking for separate debug info (debug link) for target:/lib64/libpthread.so.0
Trying target:/lib64/libpthread-2.27.so.debug
Reading /lib64/libpthread-2.27.so.debug from remote target...
Trying target:/lib64/.debug/libpthread-2.27.so.debug
Reading /lib64/.debug/libpthread-2.27.so.debug from remote target...
Trying /usr/lib/debug/target:/lib64/libpthread-2.27.so.debug
Trying /home/j/hide/target:/lib64/libpthread-2.27.so.debug
Looking for separate debug info (debug link) for target:/lib64/libc.so.6
Trying target:/lib64/libc-2.27.so.debug
Reading /lib64/libc-2.27.so.debug from remote target...
Trying target:/lib64/.debug/libc-2.27.so.debug
Reading /lib64/.debug/libc-2.27.so.debug from remote target...
Trying /usr/lib/debug/target:/lib64/libc-2.27.so.debug
Trying /home/j/hide/target:/lib64/libc-2.27.so.debug
Breakpoint 1, 0x00000000004005eb in main ()
#0 0x00000000004005eb in main ()
From To Syms Read Shared Object Library
0x00007ffff7dd6e80 0x00007ffff7df4650 Yes (*) target:/lib64/ld-linux-x86-64.so.2
0x00007ffff7bbbb70 0x00007ffff7bcbfee Yes (*) target:/lib64/libpthread.so.0
0x00007ffff780f200 0x00007ffff7962d7c Yes (*) target:/lib64/libc.so.6
(*): Shared library is missing debugging information.
With current fix, the paths used always have target: in the beginning
and this helps to find all debug files:
$ gdb -ex 'set debug separate-debug-file 1' -ex 'set sysroot target:/' -ex 'set debug-file-directory /usr/lib/debug:/home/j/hide' -ex 'target remote :3333' -ex 'break main' -ex 'continue' -ex 'bt' -ex 'info sharedlibrary' -ex 'set confirm off' -ex 'quit'
GNU gdb (Gentoo 9999 vanilla) 8.2.50.20181109-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
Remote debugging using :3333
Reading /home/j/test from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Reading /home/j/test from remote target...
Reading symbols from target:/home/j/test...
Looking for separate debug info (debug link) for target:/home/j/test
Trying target:/home/j/test.debug
Reading /home/j/test.debug from remote target...
Trying target:/home/j/.debug/test.debug
Reading /home/j/.debug/test.debug from remote target...
Trying target:/usr/lib/debug//home/j/test.debug
Reading /usr/lib/debug//home/j/test.debug from remote target...
Trying target:/home/j/hide//home/j/test.debug
Reading /home/j/hide//home/j/test.debug from remote target...
Reading /home/j/hide//home/j/test.debug from remote target...
Reading symbols from target:/home/j/hide//home/j/test.debug...
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
Reading symbols from target:/lib64/ld-linux-x86-64.so.2...
Looking for separate debug info (debug link) for target:/lib64/ld-linux-x86-64.so.2
Trying target:/lib64/ld-2.27.so.debug
Reading /lib64/ld-2.27.so.debug from remote target...
Trying target:/lib64/.debug/ld-2.27.so.debug
Reading /lib64/.debug/ld-2.27.so.debug from remote target...
Trying target:/usr/lib/debug//lib64/ld-2.27.so.debug
Reading /usr/lib/debug//lib64/ld-2.27.so.debug from remote target...
Reading /usr/lib/debug//lib64/ld-2.27.so.debug from remote target...
Reading symbols from target:/usr/lib/debug//lib64/ld-2.27.so.debug...
Looking for separate debug info (build-id) for system-supplied DSO at 0x7ffff7ffa000
Trying /usr/lib/debug/.build-id/fd/03d584bc1a90ba28be457635a02662c9f9c1f2.debug
Trying /home/j/hide/.build-id/fd/03d584bc1a90ba28be457635a02662c9f9c1f2.debug
0x00007ffff7dd7000 in _start () from target:/lib64/ld-linux-x86-64.so.2
Breakpoint 1 at 0x4005ef: file test/test16.c, line 13.
Continuing.
Reading /lib64/libpthread.so.0 from remote target...
Reading /lib64/libc.so.6 from remote target...
Looking for separate debug info (debug link) for target:/lib64/libpthread.so.0
Trying target:/lib64/libpthread-2.27.so.debug
Reading /lib64/libpthread-2.27.so.debug from remote target...
Trying target:/lib64/.debug/libpthread-2.27.so.debug
Reading /lib64/.debug/libpthread-2.27.so.debug from remote target...
Trying target:/usr/lib/debug//lib64/libpthread-2.27.so.debug
Reading /usr/lib/debug//lib64/libpthread-2.27.so.debug from remote target...
Reading /usr/lib/debug//lib64/libpthread-2.27.so.debug from remote target...
Looking for separate debug info (debug link) for target:/lib64/libc.so.6
Trying target:/lib64/libc-2.27.so.debug
Reading /lib64/libc-2.27.so.debug from remote target...
Trying target:/lib64/.debug/libc-2.27.so.debug
Reading /lib64/.debug/libc-2.27.so.debug from remote target...
Trying target:/usr/lib/debug//lib64/libc-2.27.so.debug
Reading /usr/lib/debug//lib64/libc-2.27.so.debug from remote target...
Reading /usr/lib/debug//lib64/libc-2.27.so.debug from remote target...
Breakpoint 1, main () at test/test16.c:13
13 for ( i=0; i<10; ++i)
#0 main () at test/test16.c:13
From To Syms Read Shared Object Library
0x00007ffff7dd6e80 0x00007ffff7df4650 Yes target:/lib64/ld-linux-x86-64.so.2
0x00007ffff7bbbb70 0x00007ffff7bcbfee Yes target:/lib64/libpthread.so.0
0x00007ffff780f200 0x00007ffff7962d7c Yes target:/lib64/libc.so.6
gdb/ChangeLog:
2018-11-09 Andrey Utkin <autkin@undo.io>
* symfile.c (find_separate_debug_file): Fix search of debug files for
remote debuggee.
Signed-off-by: Andrey Utkin <autkin@undo.io>
2018-11-09 20:09:40 +01:00
|
|
|
|
2019-01-02 Andrey Utkin <autkin@undo.io>
|
|
|
|
|
|
|
|
|
|
* symfile.c (find_separate_debug_file): Fix search of debug files for
|
|
|
|
|
remote debuggee.
|
|
|
|
|
|
2019-01-02 17:30:49 +01:00
|
|
|
|
2019-01-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (gdbpy_initialize_inferior): Fix
|
|
|
|
|
indentation.
|
|
|
|
|
* python/py-frame.c (frapy_older): Remove cast.
|
|
|
|
|
(frapy_newer): Likewise.
|
|
|
|
|
* python/py-breakpoint.c (local_setattro): Remove cast.
|
|
|
|
|
* python/py-arch.c (archpy_name): Remove local variable.
|
|
|
|
|
* python/py-type.c (gdbpy_lookup_type): Remove cast.
|
|
|
|
|
|
2019-01-02 07:11:41 +01:00
|
|
|
|
2019-01-02 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* unittests/basic_string_view/element_access/char/empty.cc:
|
|
|
|
|
Fix year range in copyright header.
|
|
|
|
|
|
gdb/riscv: Split ISA and ABI features
The goal of this commit is to allow RV64 binaries compiled for the 'F'
extension to run on a target that supports both the 'F' and 'D'
extensions.
The 'D' extension depends on the 'F' extension and chapter 9 of the
RISC-V ISA manual implies that running a program compiled for 'F' on
a 'D' target should be fine.
To support this the gdbarch now holds two feature sets, one represents
the features that are present on the target, and one represents the
features requested in the ELF flags.
The existing error checks are relaxed slightly to allow binaries
compiled for 32-bit 'F' extension to run on targets with the 64-bit
'D' extension.
A new set of functions called riscv_abi_{xlen,flen} are added to
compliment the existing riscv_isa_{xlen,flen}, and some callers to the
isa functions now call the abi functions when that is appropriate.
In riscv_call_arg_struct two asserts are removed, these asserts no
longer make sense. The asserts were both like this:
gdb_assert (TYPE_LENGTH (ainfo->type)
<= (cinfo->flen + cinfo->xlen));
And were made in two cases, when passing structures like these:
struct {
integer field1;
float field2;
};
or,
struct {
float field1;
integer field2;
};
When running on an RV64 target which only has 32-bit float then the
integer field could be 64-bits, while if the float field is 32-bits
the overall size of the structure can be 128-bits (with 32-bits of
padding). In this case the assertion would fail, however, the code
isn't incorrect, so its safe to just remove the assertion.
This was tested by running on an RV64IMFDC target using a compiler
configured for RV64IMFC, and comparing the results with those obtained
when using a compiler configured for RV64IMFDC. The only regressions
I see (now) are in gdb.base/store.exp and are related too different
code generation choices GCC makes between the two targets.
Finally, this commit does not make any attempt to support running
binaries compiled for RV32 on an RV64 target, though nothing in here
should prevent that being supported in the future.
gdb/ChangeLog:
* arch/riscv.h (struct riscv_gdbarch_features) <hw_float_abi>:
Delete.
<operator==>: Update with for removed field.
<hash>: Likewise.
* riscv-tdep.h (struct gdbarch_tdep) <features>: Renamed to...
<isa_features>: ...this.
<abi_features>: New field.
(riscv_isa_flen): Update comment.
(riscv_abi_xlen): New declaration.
(riscv_abi_flen): New declaration.
* riscv-tdep.c (riscv_isa_xlen): Update to get answer from
isa_features.
(riscv_abi_xlen): New function.
(riscv_isa_flen): Update to get answer from isa_features.
(riscv_abi_flen): New function.
(riscv_has_fp_abi): Update to get answer from abi_features.
(riscv_call_info::riscv_call_info): Use abi xlen and flen, not isa
xlen and flen.
(riscv_call_info) <xlen, flen>: Update comment.
(riscv_call_arg_struct): Remove invalid assertions
(riscv_features_from_gdbarch_info): Update now hw_float_abi field
is removed.
(riscv_gdbarch_init): Gather isa features and abi features
separately, ensure both match on the gdbarch when reusing an old
gdbarch. Relax an error check to allow 32-bit abi float to run on
a target with 64-bit float hardware.
2018-12-13 18:59:12 +01:00
|
|
|
|
2019-01-01 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* arch/riscv.h (struct riscv_gdbarch_features) <hw_float_abi>:
|
|
|
|
|
Delete.
|
|
|
|
|
<operator==>: Update with for removed field.
|
|
|
|
|
<hash>: Likewise.
|
|
|
|
|
* riscv-tdep.h (struct gdbarch_tdep) <features>: Renamed to...
|
|
|
|
|
<isa_features>: ...this.
|
|
|
|
|
<abi_features>: New field.
|
|
|
|
|
(riscv_isa_flen): Update comment.
|
|
|
|
|
(riscv_abi_xlen): New declaration.
|
|
|
|
|
(riscv_abi_flen): New declaration.
|
|
|
|
|
* riscv-tdep.c (riscv_isa_xlen): Update to get answer from
|
|
|
|
|
isa_features.
|
|
|
|
|
(riscv_abi_xlen): New function.
|
|
|
|
|
(riscv_isa_flen): Update to get answer from isa_features.
|
|
|
|
|
(riscv_abi_flen): New function.
|
|
|
|
|
(riscv_has_fp_abi): Update to get answer from abi_features.
|
|
|
|
|
(riscv_call_info::riscv_call_info): Use abi xlen and flen, not isa
|
|
|
|
|
xlen and flen.
|
|
|
|
|
(riscv_call_info) <xlen, flen>: Update comment.
|
|
|
|
|
(riscv_call_arg_struct): Remove invalid assertions
|
|
|
|
|
(riscv_features_from_gdbarch_info): Update now hw_float_abi field
|
|
|
|
|
is removed.
|
|
|
|
|
(riscv_gdbarch_init): Gather isa features and abi features
|
|
|
|
|
separately, ensure both match on the gdbarch when reusing an old
|
|
|
|
|
gdbarch. Relax an error check to allow 32-bit abi float to run on
|
|
|
|
|
a target with 64-bit float hardware.
|
|
|
|
|
|
Fix 'Invalid read of size 4' in search_command_helper
Valgrind detects the below error in gdb.base/list.exp.
==14763== Invalid read of size 4
==14763== at 0x60B584: search_command_helper(char const*, int, bool) [clone .constprop.91] (source.c:1601)
==14763== by 0x408888: cmd_func(cmd_list_element*, char const*, int) (cli-decode.c:1892)
==14763== by 0x668550: execute_command(char const*, int) (top.c:630)
==14763== by 0x4B2F7B: command_handler(char const*) (event-top.c:583)
==14763== by 0x4B326C: command_line_handler(std::unique_ptr<char, gdb::xfree_deleter<char> >&&) (event-top.c:772)
...
==14763== Address 0x6d9f09c is 4 bytes before a block of size 156 alloc'd
==14763== at 0x4C2E2B3: realloc (vg_replace_malloc.c:836)
==14763== by 0x41904C: xrealloc (common-utils.c:62)
==14763== by 0x60A300: find_source_lines(symtab*, int) (source.c:1203)
==14763== by 0x608219: source_cache::get_plain_source_lines(symtab*, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) (source-cache.c:51)
==14763== by 0x60A46B: print_source_lines_base(symtab*, int, int, enum_flags<print_source_lines_flag>) (source.c:1350)
==14763== by 0x404E2D: list_command(char const*, int) (cli-cmds.c:1080)
....
Add the missing condition to end the loop once line 1 has been
reversed-searched.
gdb/ChangeLog
2019-01-01 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* source.c (search_command_helper): Stop reverse search
when line 1 has been searched.
2019-01-01 15:45:09 +01:00
|
|
|
|
2019-01-01 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
|
|
|
|
|
|
|
|
|
* source.c (search_command_helper): Stop reverse search
|
|
|
|
|
when line 1 has been searched.
|
|
|
|
|
|
Fix leak in record-full.c
valgrind detects leaks in several gdb.reverse tests,
such as the below in gdb.reverse/watch-precsave.exp.
Fix the leak by rewriting the loop that frees
record_full_core_buf_list.
gdb/ChangeLog
2019-01-01 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* record-full.c (record_full_base_target::close): Rewrite
record_full_core_buf_list free logic.
==18847== VALGRIND_GDB_ERROR_BEGIN
==18847== 4,120 (24 direct, 4,096 indirect) bytes in 1 blocks are definitely lost in loss record 3,094 of 3,199
==18847== at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==18847== by 0x405097: xmalloc (common-utils.c:44)
==18847== by 0x5AF8EA: xnew<record_full_core_buf_entry> (poison.h:110)
==18847== by 0x5AF8EA: record_full_core_target::xfer_partial(target_object, char const*, unsigned char*, unsigned char const*, unsigned long, unsigned long, unsigned long*) (record-full.c:2182)
==18847== by 0x64677D: raw_memory_xfer_partial(target_ops*, unsigned char*, unsigned char const*, unsigned long, long, unsigned long*) (target.c:956)
==18847== by 0x64691E: memory_xfer_partial_1(target_ops*, target_object, unsigned char*, unsigned char const*, unsigned long, unsigned long, unsigned long*) (target.c:1086)
2019-01-01 14:12:30 +01:00
|
|
|
|
2019-01-01 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
|
|
|
|
|
|
|
|
|
* record-full.c (record_full_base_target::close): Rewrite
|
|
|
|
|
record_full_core_buf_list free logic.
|
|
|
|
|
|
Fix leak in print_one_catch_syscall.
The last text produced was not freed, causing the below leak
(e.g. in gdb.base/catch-syscall.exp):
==24970== 56 bytes in 12 blocks are definitely lost in loss record 626 of 3,289
==24970== at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==24970== by 0x66B9C3F: __vasprintf_chk (vasprintf_chk.c:80)
==24970== by 0x405181: vasprintf (stdio2.h:210)
==24970== by 0x405181: xstrvprintf(char const*, __va_list_tag*) (common-utils.c:122)
==24970== by 0x40524B: xstrprintf(char const*, ...) (common-utils.c:113)
==24970== by 0x3B49DB: print_one_catch_syscall(breakpoint*, bp_location**) (break-catch-syscall.c:275)
==24970== by 0x3C698F: print_one_breakpoint_location(breakpoint*, bp_location*, int, bp_location**, int) (breakpoint.c:6076)
==24970== by 0x3C75B1: print_one_breakpoint(breakpoint*, bp_location**, int) (breakpoint.c:6373)
==24970== by 0x3C7D0E: breakpoint_1(char const*, int, int (*)(breakpoint const*)) (breakpoint.c:6571)
==24970== by 0x3C822C: info_breakpoints_command(char const*, int) (breakpoint.c:6625)
2019-01-01 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* break-catch-syscall.c (print_one_catch_syscall): xfree
the last text.
2018-12-31 18:07:26 +01:00
|
|
|
|
2019-01-01 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
|
|
|
|
|
|
|
|
|
* break-catch-syscall.c (print_one_catch_syscall): xfree
|
|
|
|
|
the last text.
|
|
|
|
|
|
2019-01-01 07:09:59 +01:00
|
|
|
|
2019-01-01 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* top.c (print_gdb_version): Update Copyright year in version
|
|
|
|
|
message.
|
|
|
|
|
|
2019-01-01 07:01:51 +01:00
|
|
|
|
2019-01-01 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
Update copyright year range in all GDB files.
|
|
|
|
|
|
2019-01-01 06:59:27 +01:00
|
|
|
|
2019-01-01 Joel Brobecker <brobecker@adacore.com>
|
Use gdb::unique_xmalloc_ptr<char> in command_line_input to fix a leak
Following the change of logic where the input_handler gets a
gdb::unique_xmalloc_ptr<char>, a call to readline directly
followed by a call to handle_line_of_input is missing a free,
and causes the below leak.
Use gdb::unique_xmalloc_ptr<char> to solve the leak.
==16291== VALGRIND_GDB_ERROR_BEGIN
==16291== 64 bytes in 1 blocks are definitely lost in loss record 1,815 of 4,111
==16291== at 0x4C2E2B3: realloc (vg_replace_malloc.c:836)
==16291== by 0x41EB1C: xrealloc (common-utils.c:62)
==16291== by 0x41DBD3: buffer_grow(buffer*, char const*, unsigned long) [clone .part.1] (buffer.c:40)
==16291== by 0x66E8FF: buffer_grow_char (buffer.h:40)
==16291== by 0x66E8FF: gdb_readline_no_editing (top.c:798)
==16291== by 0x66E8FF: command_line_input(char const*, char const*) (top.c:1249)
==16291== by 0x66EBD8: read_command_file(_IO_FILE*) (top.c:421)
==16291== by 0x412C0C: script_from_file(_IO_FILE*, char const*) (cli-script.c:1547)
==16291== by 0x40BE90: source_script_from_stream (cli-cmds.c:569)
==16291== by 0x40BE90: source_script_with_search(char const*, int, int) (cli-cmds.c:606)
==16291== by 0x54D567: catch_command_errors(void (*)(char const*, int), char const*, int) (main.c:379)
==16291== by 0x54EA84: captured_main_1 (main.c:994)
==16291== by 0x54EA84: captured_main (main.c:1167)
==16291== by 0x54EA84: gdb_main(captured_main_args*) (main.c:1193)
==16291== by 0x29DA27: main (gdb.c:32)
==16291==
==16291== VALGRIND_GDB_ERROR_END
gdb/ChangeLog
2018-12-31 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* top.c (command_line_input): Use unique_xmalloc_ptr to
manage memory allocated by readline.
2018-12-30 20:41:49 +01:00
|
|
|
|
|
2019-01-01 06:59:27 +01:00
|
|
|
|
* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2018.
|
Use gdb::unique_xmalloc_ptr<char> in command_line_input to fix a leak
Following the change of logic where the input_handler gets a
gdb::unique_xmalloc_ptr<char>, a call to readline directly
followed by a call to handle_line_of_input is missing a free,
and causes the below leak.
Use gdb::unique_xmalloc_ptr<char> to solve the leak.
==16291== VALGRIND_GDB_ERROR_BEGIN
==16291== 64 bytes in 1 blocks are definitely lost in loss record 1,815 of 4,111
==16291== at 0x4C2E2B3: realloc (vg_replace_malloc.c:836)
==16291== by 0x41EB1C: xrealloc (common-utils.c:62)
==16291== by 0x41DBD3: buffer_grow(buffer*, char const*, unsigned long) [clone .part.1] (buffer.c:40)
==16291== by 0x66E8FF: buffer_grow_char (buffer.h:40)
==16291== by 0x66E8FF: gdb_readline_no_editing (top.c:798)
==16291== by 0x66E8FF: command_line_input(char const*, char const*) (top.c:1249)
==16291== by 0x66EBD8: read_command_file(_IO_FILE*) (top.c:421)
==16291== by 0x412C0C: script_from_file(_IO_FILE*, char const*) (cli-script.c:1547)
==16291== by 0x40BE90: source_script_from_stream (cli-cmds.c:569)
==16291== by 0x40BE90: source_script_with_search(char const*, int, int) (cli-cmds.c:606)
==16291== by 0x54D567: catch_command_errors(void (*)(char const*, int), char const*, int) (main.c:379)
==16291== by 0x54EA84: captured_main_1 (main.c:994)
==16291== by 0x54EA84: captured_main (main.c:1167)
==16291== by 0x54EA84: gdb_main(captured_main_args*) (main.c:1193)
==16291== by 0x29DA27: main (gdb.c:32)
==16291==
==16291== VALGRIND_GDB_ERROR_END
gdb/ChangeLog
2018-12-31 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* top.c (command_line_input): Use unique_xmalloc_ptr to
manage memory allocated by readline.
2018-12-30 20:41:49 +01:00
|
|
|
|
|
2019-01-01 06:59:27 +01:00
|
|
|
|
For older changes see ChangeLog-2018.
|
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:
|
2019-01-01 06:59:27 +01:00
|
|
|
|
|