]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
remote: stop reason and watchpoint data address per thread
authorPedro Alves <palves@redhat.com>
Mon, 30 Nov 2015 16:05:16 +0000 (16:05 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 30 Nov 2015 18:37:31 +0000 (18:37 +0000)
commit799a2abe613be0645b84f5aaa050f2f91e6ae3f7
tree403ea876b72cc8d2142181226306aa0a9cf36372
parent34c6591498f4363ef2c71d683cdaaa33d6a6ad64
remote: stop reason and watchpoint data address per thread

Running local-watch-wrong-thread.exp with "maint set target-non-stop
on" exposes that gdb/remote.c only records whether the target stopped
for a breakpoint/watchpoint plus the watchpoint data address *for the
last reported remote event*.  But in non-stop mode, we need to keep
that info per-thread, as each thread can end up with its own
last-status pending.

gdb/ChangeLog:
2015-11-30  Pedro Alves  <palves@redhat.com>

* remote.c (struct remote_state) <remote_watch_data_address,
stop_reason>: Delete fields.
(struct private_thread_info) <stop_reason, watch_data_address>:
New fields.
(resume_clear_thread_private_info): New function.
(append_pending_thread_resumptions): Call it.
(remote_resume): Clear all threads' private info.
(process_stop_reply): Adjust.
(remote_wait_as): Don't reference remote_state's stop_reason
field.
(remote_stopped_by_sw_breakpoint)
(remote_stopped_by_hw_breakpoint, remote_stopped_by_watchpoint)
(remote_stopped_data_address): Adjust to refer get data from the
current thread.
gdb/ChangeLog
gdb/remote.c