This commit builds on work started in the following two commits: commit24ed6739b6Date: Thu Jan 30 14:35:40 2020 +0000 gdb/remote: Restore support for 'S' stop reply packet commitcada5fc921Date: Wed Mar 11 12:30:13 2020 +0000 gdb: Handle W and X remote packets without giving a warning This is related to how GDB handles remote targets that send back 'S' packets. In the first of the above commits we fixed GDB's ability to handle a single process, single threaded target that sends back 'S' packets. Although the 'T' packet would always be preferred to 'S' these days, there's nothing really wrong with 'S' for this situation. The second commit above fixed an oversight in the first commit, a single-process, multi-threaded target can send back a process wide event, for example the process exited event 'W' without including a process-id, this also is fine as there is no ambiguity in this case. In PR gdb/26819 we run into yet another problem with the above commits. In this case we have a single process with two threads, GDB hits a breakpoint in thread 2 and then performs a stepi: (gdb) b main Breakpoint 1 at 0x1212340830: file infinite_loop.S, line 10. (gdb) c Continuing. Thread 2 hit Breakpoint 1, main () at infinite_loop.S:10 10 in infinite_loop.S (gdb) set debug remote 1 (gdb) stepi Sending packet: $vCont;s:2#24...Packet received: S05 ../binutils-gdb/gdb/infrun.c:5807: internal-error: int finish_step_over(execution_control_state*): Assertion `ecs->event_thread->control.trap_expected' failed. What happens in this case is that on the RISC-V target displaced stepping is not supported, so when the stepi is issued GDB steps just thread 2. As only a single thread was set running the target decides that is can get away with sending back an 'S' packet without a thread-id. GDB then associates the stop with thread 1 (the first non-exited thread), but as thread 1 was not previously set executing the assertion seen above triggers. As an aside I am surprised that the target sends pack 'S' in this situation. The target is happy to send back 'T' (including thread-id) when multiple threads are set running, so (to me) it would seem easier to just always use the 'T' packet when multiple threads are in use. However, the target only uses 'T' when multiple threads are actually executing, otherwise an 'S' packet it used. Still, when looking at the above situation we can see that GDB should be able to understand which thread the 'S' reply is referring too. The problem is that is that in commit24ed6739b6(above) when a stop reply comes in with no thread-id we look for the first non-exited thread and select that as the thread the stop applies too. What we should really do is select the first non-exited, resumed thread, and associate the stop event with this thread. In the above example both thread 1 and 2 are non-exited, but only thread 2 is resumed, so this is what we should use. There's a test for this issue included which works with stock gdbserver by disabling use of the 'T' packet, and enabling 'scheduler-locking' within GDB so only one thread is set running. gdb/ChangeLog: PR gdb/26819 * remote.c (remote_target::select_thread_for_ambiguous_stop_reply): New member function. (remote_target::process_stop_reply): Call select_thread_for_ambiguous_stop_reply. gdb/testsuite/ChangeLog: PR gdb/26819 * gdb.server/stop-reply-no-thread-multi.c: New file. * gdb.server/stop-reply-no-thread-multi.exp: New file. Change-Id: I9b49d76c2a99063dcc76203fa0f5270a72825d15
363 lines
11 KiB
Plaintext
363 lines
11 KiB
Plaintext
2021-01-13 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
PR gdb/26819
|
||
* remote.c
|
||
(remote_target::select_thread_for_ambiguous_stop_reply): New
|
||
member function.
|
||
(remote_target::process_stop_reply): Call
|
||
select_thread_for_ambiguous_stop_reply.
|
||
|
||
2021-01-13 Simon Marchi <simon.marchi@efficios.com>
|
||
|
||
* record-btrace.c (class record_btrace_target): Remove.
|
||
(record_btrace_target::commit_resume): Remove.
|
||
* record-full.c (class record_full_target): Remove.
|
||
(record_full_target::commit_resume): Remove.
|
||
|
||
2021-01-13 Simon Marchi <simon.marchi@efficios.com>
|
||
|
||
* remote.c (enum class resume_state): New.
|
||
(struct resumed_pending_vcont_info): New.
|
||
(struct remote_thread_info) <resume_state, set_not_resumed,
|
||
set_resumed_pending_vcont, resumed_pending_vcont_info,
|
||
set_resumed, m_resume_state, m_resumed_pending_vcont_info>:
|
||
New.
|
||
<last_resume_step, last_resume_sig, vcont_resumed>: Remove.
|
||
(remote_target::remote_add_thread): Adjust.
|
||
(remote_target::process_initial_stop_replies): Adjust.
|
||
(remote_target::resume): Adjust.
|
||
(remote_target::commit_resume): Rely on state in
|
||
remote_thread_info and not on tp->executing.
|
||
(remote_target::process_stop_reply): Adjust.
|
||
|
||
2021-01-13 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* arc-tdep.h (arc_debug_printf): New.
|
||
* arc-tdep.c: Use arc_debug_printf.
|
||
* arc-linux-nat.c (arc_linux_nat_debug_printf): Add and use.
|
||
* arc-linux-tdep.c (arc_linux_debug_printf): Add and use.
|
||
* arc-newlib-tdep.c (arc_newlib_debug_printf): Add and use.
|
||
|
||
2021-01-13 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* arc-tdep.h (arc_debug): Change type to bool.
|
||
* arc-tdep.c (arc_debug): Change type to bool.
|
||
(arc_analyze_prologue): Adjust.
|
||
(_initialize_arc_tdep): Use add_setshow_boolean_cmd.
|
||
* arc-linux-nat.c (ps_get_thread_area): Adjust.
|
||
|
||
2021-01-13 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* auto-load.c (auto_load_objfile_script_1): Use bool.
|
||
(execute_script_contents): Use bool.
|
||
|
||
2021-01-13 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* auto-load.h (auto_load_gdb_scripts_enabled): Return bool, move
|
||
comment here.
|
||
* auto-load.c (auto_load_gdb_scripts_enabled): Return bool, move
|
||
comment to header.
|
||
* extension-priv.h (struct extension_language_script_ops)
|
||
<auto_load_enabled>: Return bool.
|
||
* extension.h (ext_lang_auto_load_enabled): Return bool, move
|
||
comment here.
|
||
* extension.c (ext_lang_auto_load_enabled): Return bool, move
|
||
comment to header.
|
||
* guile/guile-header.h (gdbscm_auto_load_enabled): Return bool,
|
||
move comment here.
|
||
* guile/scm-auto-load.c (gdbscm_auto_load_enabled): Return bool,
|
||
move comment to header.
|
||
* python/python-header.h (gdbpy_auto_load_enabled): Return bool,
|
||
move comment here.
|
||
* python/py-auto-load.c (gdbpy_auto_load_enabled): Return bool,
|
||
move comment to header.
|
||
|
||
2021-01-13 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* auto-load.h (file_is_auto_load_safe): Change return type to
|
||
bool, move comment here.
|
||
* auto-load.c (file_is_auto_load_safe): Change return type and
|
||
advice_printed to bool. Move comment to header.
|
||
|
||
2021-01-13 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* jit.c (jit_debug_printf): New, use throughout file.
|
||
|
||
2021-01-12 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* infrun.c (normal_stop): Fix indentation.
|
||
|
||
2021-01-12 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* top.h (readnow_symbol_files, readnever_symbol_files): Move
|
||
declarations to ...
|
||
* symfile.h: ... here.
|
||
* symfile.c: Update doc.
|
||
|
||
2021-01-12 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* target.h (baud_rate, serial_parity): Move declarations...
|
||
* serial.h: ... here.
|
||
* main.c: Include serial.h.
|
||
* serial.c (baud_rate, serial_parity): Update doc.
|
||
|
||
2021-01-12 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* top.c (pre_init_ui_hook): Remove.
|
||
|
||
2021-01-12 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
|
||
|
||
* aarch64-tdep.c (aarch64_vnh_type): Add "bf" field in h registers.
|
||
(aarch64_vnv_type): Add "bf" type in h field of v registers.
|
||
* features/aarch64-fpu.c (create_feature_aarch64_fpu): Regenerated.
|
||
* features/aarch64-fpu.xml: Add bfloat16 type.
|
||
|
||
2021-01-12 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* expprint.c (dump_subexp_body_standard): Handle OP_BOOL.
|
||
|
||
2021-01-12 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* f-exp.y (dot_ops): Rename to...
|
||
(fortran_operators): ...this. Add a header comment. Add symbol
|
||
based operators.
|
||
(yylex): Update to use fortran_operators not dot_ops. Remove
|
||
special handling for '**', this is now included in
|
||
fortran_operators.
|
||
|
||
2021-01-11 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* arch/aarch64-insn.h (aarch64_debug_printf): New.
|
||
* arch/aarch64-insn.c: Use aarch64_debug_printf.
|
||
* aarch64-tdep.c: Use aarch64_debug_printf.
|
||
|
||
2021-01-11 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* solib-aix.c (solib_aix_debug_printf): New, use throughout
|
||
file.
|
||
|
||
2021-01-11 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* jit.c (jit_debug): Change type to bool.
|
||
(_initialize_jit): Adjust.
|
||
|
||
2021-01-09 Tom Tromey <tom@tromey.com>
|
||
|
||
PR compile/23672
|
||
* compile/compile.c (compile_to_object): Avoid crash when
|
||
osabi_triplet_regexp returns NULL.
|
||
|
||
2021-01-09 Tom Tromey <tom@tromey.com>
|
||
|
||
* tracepoint.h (class collection_list) <append_exp>: Take a
|
||
std::string.
|
||
* tracepoint.c (collection_list::append_exp): Take a std::string.
|
||
(encode_actions_1): Update.
|
||
|
||
2021-01-08 Tom Tromey <tromey@adacore.com>
|
||
|
||
* parse.c (parse_expression): Add void_context_p parameter. Use
|
||
parse_exp_in_context.
|
||
* printcmd.c (print_command_1): Change voidprint to bool. Pass to
|
||
parse_expression.
|
||
(print_command, call_command): Update.
|
||
* expression.h (parse_expression): Add void_context_p parameter.
|
||
|
||
2021-01-08 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* value.c (set_value_component_location): Adjust the VALUE_LVAL
|
||
for internalvar components that have a dynamic location.
|
||
|
||
2021-01-08 Tom de Vries <tdevries@suse.de>
|
||
|
||
PR gdb/26881
|
||
* breakpoint.c (create_exception_master_breakpoint_probe)
|
||
(create_exception_master_breakpoint_hook): Factor out
|
||
of ...
|
||
(create_exception_master_breakpoint): ... here. Only try to install
|
||
the master exception breakpoint in objfile.debug using the
|
||
_Unwind_DebugHook method, if the install using probes in objfile
|
||
failed.
|
||
|
||
2021-01-08 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* f-lang.c (fortran_value_subarray): Call value_from_component.
|
||
|
||
2021-01-07 Mike Frysinger <vapier@gentoo.org>
|
||
|
||
* remote-sim.c: Include memory-map.h.
|
||
(gdbsim_target): Define memory_map override.
|
||
(gdbsim_target::memory_map): Define.
|
||
|
||
2021-01-07 Tom Tromey <tromey@adacore.com>
|
||
|
||
* ada-lang.c (do_full_match): Conditionally skip "_ada_" prefix.
|
||
|
||
2021-01-07 Tom Tromey <tromey@adacore.com>
|
||
|
||
* ada-lang.c (add_component_interval): Start loop using vector's
|
||
updated size.
|
||
|
||
2021-01-06 Tom Tromey <tromey@adacore.com>
|
||
|
||
* ada-lang.c (ada_evaluate_subexp) <BINOP_ADD, BINOP_SUB>:
|
||
Do not cast result.
|
||
* valarith.c (fixed_point_binop): Handle multiplication
|
||
and division specially.
|
||
* valops.c (value_to_gdb_mpq): New function.
|
||
(value_cast_to_fixed_point): Use it.
|
||
|
||
2021-01-05 Hannes Domani <ssbssa@yahoo.de>
|
||
|
||
* tui/tui-winsource.c (tui_source_window_base::refresh_window):
|
||
Call wnoutrefresh instead of tui_win_info::refresh_window.
|
||
|
||
2021-01-05 Hannes Domani <ssbssa@yahoo.de>
|
||
|
||
* tui/tui-source.c (tui_source_window::show_line_number):
|
||
Redraw second space after line number.
|
||
|
||
2021-01-05 Hannes Domani <ssbssa@yahoo.de>
|
||
|
||
PR tui/26927
|
||
* tui/tui-winsource.c (tui_source_window_base::refresh_window):
|
||
Fix source pad size in prefresh.
|
||
(tui_source_window_base::show_source_content): Grow source pad
|
||
if necessary.
|
||
|
||
2021-01-04 Mike Frysinger <vapier@gentoo.org>
|
||
|
||
* bfin-tdep.c (bfin_push_dummy_call): Use align_up.
|
||
(bfin_frame_align): Use align_down.
|
||
|
||
2021-01-04 Tom de Vries <tdevries@suse.de>
|
||
|
||
* buildsym.c (buildsym_compunit::record_line): Filter out end-of-seq
|
||
terminators that do not terminate anything.
|
||
|
||
2021-01-04 Simon Marchi <simon.marchi@efficios.com>
|
||
|
||
* debug.c (debug_print_depth): New.
|
||
* infrun.h (INFRUN_SCOPED_DEBUG_START_END): New.
|
||
(INFRUN_SCOPED_DEBUG_ENTER_EXIT): New.
|
||
* infrun.c (start_step_over): Use
|
||
INFRUN_SCOPED_DEBUG_ENTER_EXIT.
|
||
(proceed): Use INFRUN_SCOPED_DEBUG_ENTER_EXIT and
|
||
INFRUN_SCOPED_DEBUG_START_END.
|
||
(fetch_inferior_event): Use INFRUN_SCOPED_DEBUG_ENTER_EXIT.
|
||
|
||
2021-01-04 Simon Marchi <simon.marchi@efficios.com>
|
||
|
||
* infrun.c (print_target_wait_results): Use infrun_debug_printf.
|
||
|
||
2021-01-04 Simon Marchi <simon.marchi@efficios.com>
|
||
|
||
* utils.c (vfprintf_unfiltered): Print timestamp only when
|
||
previous debug output ended with a newline.
|
||
|
||
2021-01-04 Luis Machado <luis.machado@linaro.org>
|
||
|
||
Update all users of trad_frame_saved_reg to use the new member
|
||
functions.
|
||
|
||
Remote all struct keywords from declarations of trad_frame_saved_reg
|
||
types, except on forward declarations.
|
||
|
||
* aarch64-tdep.c: Update.
|
||
* alpha-mdebug-tdep.c: Update.
|
||
* alpha-tdep.c: Update.
|
||
* arc-tdep.c: Update.
|
||
* arm-tdep.c: Update.
|
||
* avr-tdep.c: Update.
|
||
* cris-tdep.c: Update.
|
||
* csky-tdep.c: Update.
|
||
* frv-tdep.c: Update.
|
||
* hppa-linux-tdep.c: Update.
|
||
* hppa-tdep.c: Update.
|
||
* hppa-tdep.h: Update.
|
||
* lm32-tdep.c: Update.
|
||
* m32r-linux-tdep.c: Update.
|
||
* m32r-tdep.c: Update.
|
||
* m68hc11-tdep.c: Update.
|
||
* mips-tdep.c: Update.
|
||
* moxie-tdep.c: Update.
|
||
* riscv-tdep.c: Update.
|
||
* rs6000-tdep.c: Update.
|
||
* s390-linux-tdep.c: Update.
|
||
* s390-tdep.c: Update.
|
||
* score-tdep.c: Update.
|
||
* sparc-netbsd-tdep.c: Update.
|
||
* sparc-sol2-tdep.c: Update.
|
||
* sparc64-fbsd-tdep.c: Update.
|
||
* sparc64-netbsd-tdep.c: Update.
|
||
* sparc64-obsd-tdep.c: Update.
|
||
* sparc64-sol2-tdep.c: Update.
|
||
* tilegx-tdep.c: Update.
|
||
* v850-tdep.c: Update.
|
||
* vax-tdep.c: Update.
|
||
|
||
* frame-unwind.c (frame_unwind_got_bytes): Make parameter const.
|
||
* frame-unwind.h (frame_unwind_got_bytes): Likewise.
|
||
|
||
* trad-frame.c: Update.
|
||
Remove TF_REG_* enum.
|
||
(trad_frame_alloc_saved_regs): Add a static assertion to check for
|
||
a trivially-constructible struct.
|
||
(trad_frame_reset_saved_regs): Adjust to use member function.
|
||
(trad_frame_value_p): Likewise.
|
||
(trad_frame_addr_p): Likewise.
|
||
(trad_frame_realreg_p): Likewise.
|
||
(trad_frame_value_bytes_p): Likewise.
|
||
(trad_frame_set_value): Likewise.
|
||
(trad_frame_set_realreg): Likewise.
|
||
(trad_frame_set_addr): Likewise.
|
||
(trad_frame_set_unknown): Likewise.
|
||
(trad_frame_set_value_bytes): Likewise.
|
||
(trad_frame_get_prev_register): Likewise.
|
||
* trad-frame.h: Update.
|
||
(trad_frame_saved_reg_kind): New enum.
|
||
(struct trad_frame_saved_reg) <addr, realreg, data>: Remove.
|
||
<m_kind, m_reg>: New member fields.
|
||
<set_value, set_realreg, set_addr, set_unknown, set_value_bytes>
|
||
<kind, value, realreg, addr, value_bytes, is_value, is_realreg>
|
||
<is_addr, is_unknown, is_value_bytes>: New member functions.
|
||
|
||
2021-01-02 Simon Marchi <simon.marchi@polymtl.ca>
|
||
|
||
* target-float.c: Fix typos.
|
||
|
||
2021-01-02 Hannes Domani <ssbssa@yahoo.de>
|
||
|
||
* gdb-gdb.py.in: Fix main_type.flds_bnds.bounds pretty printer.
|
||
|
||
2021-01-01 Joel Brobecker <brobecker@adacore.com>
|
||
|
||
* gdbarch.sh: Update copyright year range.
|
||
|
||
2021-01-01 Joel Brobecker <brobecker@adacore.com>
|
||
|
||
Update copyright year range in copyright header of all GDB files.
|
||
|
||
2021-01-01 Joel Brobecker <brobecker@adacore.com>
|
||
|
||
* copyright.py (get_update_list): Add "gdbserver" and "gdbsupport"
|
||
to the list of directories to update.
|
||
|
||
2021-01-01 Joel Brobecker <brobecker@adacore.com>
|
||
|
||
* top.c (print_gdb_version): Update copyright year.
|
||
|
||
2021-01-01 Joel Brobecker <brobecker@adacore.com>
|
||
|
||
* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2020.
|
||
|
||
For older changes see ChangeLog-2020.
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
coding: utf-8
|
||
End:
|