+2015-08-11 Keith Seitz <keiths@redhat.com>
+
+ * break-catch-throw.c (re_set_exception_catchpoint): Convert
+ linespec into explicit location.
+ * breakpoint.c (create_overlay_breakpoint)
+ (create_longjmp_master_breakpoint)
+ (create_std_terminate_master_breakpoint)
+ (create_exception_master_breakpoint): Convert linespec into explicit
+ location.
+ (update_static_tracepoint): Convert linespec into explicit location.
+ * linespec.c (enum offset_relative_sign, struct line_offset): Move
+ location.h.
+ (struct linespec) <expression, expr_pc, source_filename>
+ <function_name, label_name, line_offset>: Replace with ...
+ <explicit>: ... this.
+ <is_linespec>: New member.
+ (PARSER_EXPLICIT): New accessor macro.
+ (undefined_label_error): New function.
+ (source_file_not_found_error): New function.
+ (linespec_parse_basic): The parser result is now an explicit location.
+ Use PARSER_EXPLICIT to access it.
+ Use undefined_label_error.
+ (canonicalize_linespec): Convert canonical linespec into explicit
+ location.
+ Move string representation of location to explicit_location_to_linespec
+ and use it and explicit_location_to_string to save string
+ representations of the canonical location.
+ (create_sals_line_offset, convert_linespec_to_sals): `ls' contains an
+ explicit location. Update all references.
+ (convert_explicit_location_to_sals): New function.
+ (parse_linespec): Use PARSER_EXPLICIT to access the parser
+ result's explicit location.
+ (linespec_state_constructor): Initialize is_linespec.
+ Use PARSER_EXPLICIT.
+ (linespec_parser_delete): Use PARSER_EXPLICIT to access the parser's
+ result.
+ (event_location_to_sals): For linespec locations, set is_linespec.
+ Handle explicit locations.
+ (decode_objc): 'ls' contains an explicit location now. Update all
+ references.
+ (symtabs_from_filename): Use source_file_not_found_error.
+ * location.c (struct event_location.u) <explicit>: New member.
+ (initialize_explicit_location): New function.
+ (initialize_event_location): Initialize explicit locations.
+ (new_explicit_location, get_explicit_location)
+ (get_explicit_location_const): New functions.
+ (explicit_to_string_internal): New function; most of contents moved
+ from canonicalize_linespec.
+ (explicit_location_to_string): New function.
+ (explicit_location_to_linespec): New function.
+ (copy_event_location, delete_event_location)
+ (event_location_to_string_const, event_location_empty_p): Handle
+ explicit locations.
+ * location.h (enum offset_relative_sign, struct line_offset): Move
+ here from linespec.h.
+ (enum event_location_type): Add EXPLICIT_LOCATION.
+ (struct explicit_location): New structure.
+ (explicit_location_to_string): Declare.
+ (explicit_location_to_linespec): Declare.
+ (new_explicit_location, get_explicit_locationp
+ (get_explicit_location_const, initialize_explicit_location): Declare.
+
+2015-08-11 Keith Seitz <keiths@redhat.com>
+
+ * break-catch-throw.c (re_set_exception_catchpoint): Convert
+ linespec for stap probe to probe location.
+ * breakpoint.c (create_longjmp_master_breakpoint)
+ (create_exception_master_breakpoint): Likewise.
+ (break_command_1): Remove local variable `arg_cp'.
+ Check location type to set appropriate breakpoint ops methods.
+ (trace_command): Likewise.
+ * linespec.c (event_location_to_sals): Assert on probe locations.
+ * location.c (EL_PROBE): Add macro definition.
+ (new_probe_location, get_probe_location): New functions.
+ (copy_event_location, delete_event_location, event_location_to_string)
+ (string_to_event_location, event_location_empty_p): Handle probe
+ locations.
+ * location.h (enum event_location_type): Add PROBE_LOCATION.
+ (new_probe_location, get_probe_location): Declare.
+ * probe.c (parse_probes): Assert that LOCATION is a probe location.
+ Convert linespec into probe location.
+
+2015-08-11 Keith Seitz <keiths@redhat.com>
+
+ * breakpoint.c (create_thread_event_breakpoint, init_breakpoint_sal):
+ Convert linespec to address location.
+ * linespec.c (canonicalize_linespec): Do not handle address
+ locations here.
+ (convert_address_location_to_sals): New function; contents moved
+ from ...
+ (convert_linespc_to_sals): ... here.
+ (parse_linespec): Remove address locations from linespec grammar.
+ Remove handling of address locations.
+ (linespec_lex_to_end): Remove handling of address linespecs.
+ (event_location_to_sals): Handle ADDRESS_LOCATION.
+ (linespec_expression_to_pc): Export.
+ * linespec.h (linespec_expression_to_pc): Add declaration.
+ * location.c (struct event_location.u) <address>: New member.
+ (new_address_location, get_address_location): New functions.
+ (copy_event_location, delete_event_location, event_location_to_string)
+ (string_to_event_location, event_location_empty_p): Handle address
+ locations.
+ * location.h (enum event_location_type): Add ADDRESS_LOCATION.
+ (new_address_location, get_address_location): Declare.
+ * python/py-finishbreakpoint.c (bpfinishpy_init): Convert linespec
+ to address location.
+ * spu-tdep.c (spu_catch_start): Likewise.
+
+2015-08-11 Keith Seitz <keiths@redhat.com>
+
+ * ax-gdb.c: Include location.h.
+ (agent_command_1) Use linespec location instead of address
+ string.
+ * break-catch-throw.c: Include location.h.
+ (re_set_exception_catchpoint): Use linespec locations instead
+ of address strings.
+ * breakpoint.c: Include location.h.
+ (create_overlay_event_breakpoint, create_longjmp_master_breakpoint)
+ (create_std_terminate_master_breakpoint)
+ (create_exception_master_breakpoint, update_breakpoints_after_exec):
+ Use linespec location instead of address string.
+ (print_breakpoint_location): Use locations and
+ event_location_to_string.
+ Print extra_string for pending locations for non-MI streams.
+ (print_one_breakpoint_location): Use locations and
+ event_location_to_string.
+ (init_raw_breakpoint_without_location): Initialize b->location.
+ (create_thread_event_breakpoint): Use linespec location instead of
+ address string.
+ (init_breakpoint_sal): Likewise.
+ Only save extra_string if it is non-NULL and not the empty string.
+ Use event_location_to_string instead of `addr_string'.
+ Constify `p' and `endp'.
+ Use skip_spaces_const/skip_space_const instead of non-const versions.
+ Copy the location into the breakpoint.
+ If LOCATION is NULL, save the breakpoint address as a linespec location
+ instead of an address string.
+ (create_breakpoint_sal): Change `addr_string' parameter to a struct
+ event_location. All uses updated.
+ (create_breakpoints_sal): Likewise for local variable `addr_string'.
+ (parse_breakpoint_sals): Use locations instead of address strings.
+ Remove check for empty linespec with conditional.
+ Refactor.
+ (decode_static_tracepoint_spec): Make argument const and update
+ function.
+ (create_breakpoint): Change `arg' to a struct event_location and
+ rename.
+ Remove `copy_arg' and `addr_start'.
+ If EXTRA_STRING is empty, set it to NULL.
+ Don't populate `canonical' for pending breakpoints.
+ Pass `extra_string' to find_condition_and_thread.
+ Clear `extra_string' if `rest' was NULL.
+ Do not error with "garbage after location" if setting a dprintf
+ breakpoint.
+ Copy the location into the breakpoint instead of an address string.
+ (break_command_1): Use string_to_event_location and pass this to
+ create_breakpoint instead of an address string.
+ Check against `arg_cp' for a probe linespec.
+ (dprintf_command): Use string_to_event_location and pass this to
+ create_breakpoint instead of an address string.
+ Throw an exception if no format string was specified.
+ (print_recreate_ranged_breakpoint): Use event_location_to_string
+ instead of address strings.
+ (break_range_command, until_break_command)
+ (init_ada_exception_breakpoint): Use locations instead
+ of address strings.
+ (say_where): Print out extra_string for pending locations.
+ (base_breakpoint_dtor): Delete `location' and `location_range_end' of
+ the breakpoint.
+ (base_breakpoint_create_sals_from_location): Use struct event_location
+ instead of address string.
+ Remove `addr_start' and `copy_arg' parameters.
+ (base_breakpoint_decode_location): Use struct event_location instead of
+ address string.
+ (bkpt_re_set): Use locations instead of address strings.
+ Use event_location_empty_p to check for unset location.
+ (bkpt_print_recreate): Use event_location_to_string instead of
+ an address string.
+ Print out extra_string for pending locations.
+ (bkpt_create_sals_from_location, bkpt_decode_location)
+ (bkpt_probe_create_sals_from_location): Use struct event_location
+ instead of address string.
+ (bkpt_probe_decode_location): Use struct event_location instead of
+ address string.
+ (tracepoint_print_recreate): Use event_location_to_string to
+ recreate the tracepoint.
+ (tracepoint_create_sals_from_location, tracepoint_decode_location)
+ (tracepoint_probe_create_sals_from_location)
+ (tracepoint_probe_decode_location): Use struct event_location
+ instead of address string.
+ (dprintf_print_recreate): Use event_location_to_string to recreate
+ the dprintf.
+ (dprintf_re_set): Remove check for valid/missing format string.
+ (strace_marker_create_sals_from_location)
+ (strace_marker_create_breakpoints_sal, strace_marker_decode_location)
+ (update_static_tracepoint): Use struct event_location instead of
+ address string.
+ (location_to_sals): Likewise.
+ Pass `extra_string' to find_condition_and_thread.
+ For newly resolved pending breakpoint locations, clear the location's
+ string representation.
+ Assert that the breakpoint's condition string is NULL when
+ condition_not_parsed.
+ (breakpoint_re_set_default, create_sals_from_location_default)
+ (decode_location_default, trace_command, ftrace_command)
+ (strace_command, create_tracepoint_from_upload): Use locations
+ instead of address strings.
+ * breakpoint.h (struct breakpoint_ops) <create_sals_from_location>:
+ Use struct event_location instead of address string.
+ Update all uses.
+ <decode_location>: Likewise.
+ (struct breakpoint) <addr_string>: Change to struct event_location
+ and rename `location'.
+ <addr_string_range_end>: Change to struct event_location and rename
+ `location_range_end'.
+ (create_breakpoint): Use struct event_location instead of address
+ string.
+ * cli/cli-cmds.c: Include location.h.
+ (edit_command, list_command): Use locations instead of address strings.
+ * elfread.c: Include location.h.
+ (elf_gnu_ifunc_resolver_return_stop): Use event_location_to_string.
+ * guile/scm-breakpoint.c: Include location.h.
+ (bpscm_print_breakpoint_smob): Use event_location_to_string.
+ (gdbscm_register_breakpoint): Use locations instead of address
+ strings.
+ * linespec.c: Include location.h.
+ (struct ls_parser) <stream>: Change to const char *.
+ (PARSER_STREAM): Update.
+ (lionespec_lexer_lex_keyword): According to find_condition_and_thread,
+ keywords must be followed by whitespace.
+ (canonicalize_linespec): Save a linespec location into `canonical'.
+ Save a canonical linespec into `canonical'.
+ (parse_linespec): Change `argptr' to const char * and rename `arg'.
+ All uses updated.
+ Update function description.
+ (linespec_parser_new): Initialize `parser'.
+ Update initialization of parsing stream.
+ (event_location_to_sals): New function.
+ (decode_line_full): Change `argptr' to a struct event_location and
+ rename it `location'.
+ Use locations instead of address strings.
+ Call event_location_to_sals instead of parse_linespec.
+ (decode_line_1): Likewise.
+ (decode_line_with_current_source, decode_line_with_last_displayed)
+ Use locations instead of address strings.
+ (decode_objc): Likewise.
+ Change `argptr' to const char * and rename `arg'.
+ (destroy_linespec_result): Delete the linespec result's location
+ instead of freeing the address string.
+ * linespec.h (struct linespec_result) <addr_string>: Change to
+ struct event_location and rename to ...
+ <location>: ... this.
+ (decode_line_1, decode_line_full): Change `argptr' to struct
+ event_location. All callers updated.
+ * mi/mi-cmd-break.c: Include language.h, location.h, and linespec.h.
+ (mi_cmd_break_insert_1): Use locations instead of address strings.
+ Throw an error if there was "garbage" at the end of the specified
+ linespec.
+ * probe.c: Include location.h.
+ (parse_probes): Change `argptr' to struct event_location.
+ Use event locations instead of address strings.
+ * probe.h (parse_probes): Change `argptr' to struct event_location.
+ * python/py-breakpoint.c: Include location.h.
+ (bppy_get_location): Constify local variable `str'.
+ Use event_location_to_string.
+ (bppy_init): Use locations instead of address strings.
+ * python/py-finishbreakpoint.c: Include location.h.
+ (bpfinishpy_init): Remove local variable `addr_str'.
+ Use locations instead of address strings.
+ * python/python.c: Include location.h.
+ (gdbpy_decode_line): Use locations instead of address strings.
+ * remote.c: Include location.h.
+ (remote_download_tracepoint): Use locations instead of address
+ strings.
+ * spu-tdep.c: Include location.h.
+ (spu_catch_start): Remove local variable `buf'.
+ Use locations instead of address strings.
+ * tracepoint.c: Include location.h.
+ (scope_info): Use locations instead of address strings.
+ (encode_source_string): Constify parameter `src'.
+ * tracepoint.h (encode_source_string): Likewise.
+
+2015-08-11 Keith Seitz <keiths@redhat.com>
+
+ * Makefile.in (SFILES): Add location.c.
+ (HFILES_NO_SRCDIR): Add location.h.
+ (COMMON_OBS): Add location.o.
+ * linespec.c (linespec_lex_to_end): New function.
+ * linespec.h (linespec_lex_to_end): Declare.
+ * location.c: New file.
+ * location.h: New file.
+
+2015-08-11 Keith Seitz <keiths@redhat.com>
+
+ * breakpoint.h (struct breakpoint_ops) <create_sals_from_address>:
+ Renamed to create_sals_from_location.
+ <decode_linespec>: Renamed to decode_location.
+ Update all callers.
+ * breakpoint.c (create_sals_from_address_default): Renamed to ...
+ (create_sals_from_location_default): ... this.
+ (addr_string_to_sals): Renamed to ...
+ (location_to_sals): ... this.
+ (decode_linespec_default): Renamed to ...
+ (decode_location_default): ... this.
+ (base_breakpoint_create_sals_from_address): Renamed to ...
+ (base_breakpoint_create_sals_from_location): ... this.
+ (bkpt_create_sals_from_address): Renamed to ...
+ (bkpt_create_sals_from_location): ... this.
+ (bkpt_decode_linespec): Renamed to ...
+ (bkpt_decode_location): ... this.
+ (bkpt_probe_create_sals_from_address): Renamed to ...
+ (bkpt_probe_create_sals_from_location): ... this.
+ (tracepoint_create_sals_from_address): Renamed to ...
+ (tracepoint_create_sals_from_location): ... this.
+ (tracepoint_decode_linespec): Renamed to ...
+ (tracepoint_decode_location): ... this.
+ (tracepoint_probe_create_sals_from_address): Renamed to ...
+ (tracepoint_probe_create_sals_from_location): ... this.
+ (tracepoint_probe_decode_linespec): Renamed to ...
+ (tracepoint_probe_decode_location): ... this.
+ (strace_marker_create_sals_from_address): Renamed to ...
+ (strace_marker_create_sals_from_location): ... this.
+ (decode_linespec_default): Renamed to ...
+ (decode_location_default): ... this.
+
+2015-08-10 Doug Evans <dje@google.com>
+ Keith Seitz <keiths@redhat.com>
+
+ PR gdb/17960
+ * symtab.c (make_file_symbol_completion_list_1): Renamed from
+ make_file_symbol_completion_list and made static.
+ (make_file_symbol_completion_list): New function.
+
+2015-08-10 Joel Brobecker <brobecker@adacore.com>
+
+ * infrun.c (follow_fork, displaced_step_prepare, resume): Remove
+ trailing new-line at end of warning message.
+ (proceed): Add i18n marker to error messages.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * linux-nat.c (linux_nat_always_non_stop_p): Return 1.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * s390-linux-tdep.c (is_non_branch_ril)
+ (s390_displaced_step_copy_insn): New functions.
+ (s390_displaced_step_fixup): Update comment.
+ (s390_gdbarch_init): Install s390_displaced_step_copy_insn as
+ gdbarch_displaced_step_copy_insn hook.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * infrun.c (displaced_step_prepare_throw): Return -1 if
+ gdbarch_displaced_step_copy_insn returns NULL. Update intro
+ comment.
+ * rs6000-tdep.c (LWARX_MASK, LWARX_INSTRUCTION, LDARX_INSTRUCTION)
+ (STWCX_MASK, STWCX_INSTRUCTION, STDCX_INSTRUCTION): Move higher up
+ in file.
+ (ppc_displaced_step_copy_insn): New function.
+ (ppc_displaced_step_fixup): Update comment.
+ (rs6000_gdbarch_init): Install ppc_displaced_step_copy_insn as
+ gdbarch_displaced_step_copy_insn hook.
+ * gdbarch.sh (displaced_step_copy_insn): Document what happens on
+ NULL return.
+ * gdbarch.h: Regenerate.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * inferior.h (struct inferior) <displaced_stepping_failed>: New
+ field.
+ * infrun.c (use_displaced_stepping_now_p): New parameter 'inf'.
+ Return false if dispaced stepping failed before.
+ (resume): Pass the current inferior to
+ use_displaced_stepping_now_p. Wrap displaced_step_prepare in
+ TRY/CATCH. If we get a MEMORY_ERROR, set the inferior's
+ displaced_stepping_failed flag, and fall back to an in-line
+ step-over.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * darwin-nat.c (darwin_stop): Rename to ...
+ (darwin_interrupt): ... this.
+ (_initialize_darwin_inferior): Adjust.
+ * gnu-nat.c (gnu_stop): Delete.
+ (gnu_target): Don't install gnu_stop.
+ * inf-ptrace.c (inf_ptrace_stop): Rename to ...
+ (inf_ptrace_interrupt): ... this.
+ (inf_ptrace_target): Adjust.
+ * infcmd.c (interrupt_target_1): Use target_interrupt instead of
+ target_stop.
+ * linux-nat (linux_nat_stop): Rename to ...
+ (linux_nat_interrupt): ... this.
+ (linux_nat_stop): Reimplement.
+ (linux_nat_add_target): Install linux_nat_interrupt.
+ * nto-procfs.c (nto_interrupt_twice): Rename to ...
+ (nto_handle_sigint_twice): ... this.
+ (nto_interrupt): Rename to ...
+ (nto_handle_sigint): ... this. Call target_interrupt instead of
+ target_stop.
+ (procfs_wait): Adjust.
+ (procfs_stop): Rename to ...
+ (procfs_interrupt): ... this.
+ (init_procfs_targets): Adjust.
+ * procfs.c (procfs_stop): Rename to ...
+ (procfs_interrupt): ... this.
+ (procfs_target): Adjust.
+ * remote-m32r-sdi.c (m32r_stop): Rename to ...
+ (m32r_interrupt): ... this.
+ (init_m32r_ops): Adjust.
+ * remote-sim.c (gdbsim_stop_inferior): Rename to ...
+ (gdbsim_interrupt_inferior): ... this.
+ (gdbsim_stop): Rename to ...
+ (gdbsim_interrupt): ... this.
+ (gdbsim_cntrl_c): Adjust.
+ (init_gdbsim_ops): Adjust.
+ * remote.c (sync_remote_interrupt): Adjust comments.
+ (remote_stop_as): Rename to ...
+ (remote_interrupt_as): ... this.
+ (remote_stop): Adjust comment.
+ (remote_interrupt): New function.
+ (init_remote_ops): Install remote_interrupt.
+ * target.c (target_interrupt): New function.
+ * target.h (struct target_ops) <to_interrupt>: New field.
+ (target_interrupt): New declaration.
+ * windows-nat.c (windows_stop): Rename to ...
+ (windows_interrupt): ... this.
+ * target-delegates.c: Regenerate.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * signal-while-stepping-over-bp-other-thread.exp: Expect "restart
+ threads" as alternative to "switching back to stepped thread".
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * NEWS: Mention "maint set/show target-non-stop".
+ * breakpoint.c (update_global_location_list): Check
+ target_is_non_stop_p instead of non_stop.
+ * infcmd.c (attach_command_post_wait, attach_command): Likewise.
+ * infrun.c (show_can_use_displaced_stepping)
+ (can_use_displaced_stepping_p, start_step_over_inferior):
+ Likewise.
+ (internal_resume_ptid): New function.
+ (resume): Use it.
+ (proceed): Check target_is_non_stop_p instead of non_stop. If in
+ all-stop mode but the target is always in non-stop mode, start all
+ the other threads that are implicitly resumed too.
+ (for_each_just_stopped_thread, fetch_inferior_event)
+ (adjust_pc_after_break, stop_all_threads): Check
+ target_is_non_stop_p instead of non_stop.
+ (handle_inferior_event): Likewise. Handle detach-fork in all-stop
+ with the target always in non-stop mode.
+ (handle_signal_stop) <random signal>: Check target_is_non_stop_p
+ instead of non_stop.
+ (switch_back_to_stepped_thread): Check target_is_non_stop_p
+ instead of non_stop.
+ (keep_going_stepped_thread): Use internal_resume_ptid.
+ (stop_waiting): If in all-stop mode, and the target is in non-stop
+ mode, stop all threads.
+ (keep_going_pass): Likewise, when starting a new in-line step-over
+ sequence.
+ * linux-nat.c (get_pending_status, select_event_lwp)
+ (linux_nat_filter_event, linux_nat_wait_1, linux_nat_wait): Check
+ target_is_non_stop_p instead of non_stop.
+ (linux_nat_always_non_stop_p): New function.
+ (linux_nat_stop): Check target_is_non_stop_p instead of non_stop.
+ (linux_nat_add_target): Install linux_nat_always_non_stop_p.
+ * target-delegates.c: Regenerate.
+ * target.c (target_is_non_stop_p): New function.
+ (target_non_stop_enabled, target_non_stop_enabled_1): New globals.
+ (maint_set_target_non_stop_command)
+ (maint_show_target_non_stop_command): New functions.
+ (_initilize_target): Install "maint set/show target-non-stop"
+ commands.
+ * target.h (struct target_ops) <to_always_non_stop_p>: New field.
+ (target_non_stop_enabled): New declaration.
+ (target_is_non_stop_p): New declaration.
+
+2015-08-07 Pedro Alves <pedro@codesourcery.com>
+
+ * breakpoint.c (breakpoints_should_be_inserted_now): If any thread
+ has a pending status, return true.
+ * gdbthread.h: Include target/waitstatus.h.
+ (struct thread_suspend_state) <stop_reason, waitstatus_pending_p,
+ stop_pc>: New fields.
+ (struct thread_info) <resumed>: New field.
+ (set_resumed): Declare.
+ * infrun.c: Include "event-loop.h".
+ (infrun_async_inferior_event_token, infrun_is_async): New globals.
+ (infrun_async): New function.
+ (clear_step_over_info): Add debug output.
+ (displaced_step_in_progress_any_inferior): New function.
+ (displaced_step_fixup): New returns int.
+ (start_step_over): Handle in-line step-overs too. Assert the
+ thread is marked resumed.
+ (resume_cleanups): Clear the thread's resumed flag.
+ (resume): Set the thread's resumed flag. Return early if the
+ thread has a pending status. Allow stepping a breakpoint with no
+ signal.
+ (proceed): Adjust to check 'resumed' instead of 'executing'.
+ (clear_proceed_status_thread): If the thread has a pending status,
+ and that status is a finished step, discard the pending status.
+ (clear_proceed_status): Don't clear step_over_info here.
+ (random_pending_event_thread, do_target_wait): New functions.
+ (prepare_for_detach, wait_for_inferior, fetch_inferior_event): Use
+ do_target_wait.
+ (wait_one): New function.
+ (THREAD_STOPPED_BY): New macro.
+ (thread_stopped_by_watchpoint, thread_stopped_by_sw_breakpoint)
+ (thread_stopped_by_hw_breakpoint): New functions.
+ (switch_to_thread_cleanup, save_waitstatus, stop_all_threads): New
+ functions.
+ (handle_inferior_event): Also call set_resumed(false) on all
+ threads implicitly stopped by the event.
+ (restart_threads, resumed_thread_with_pending_status): New
+ functions.
+ (finish_step_over): If we were doing an in-line step-over before,
+ and no longer are after trying to start a new step-over, restart
+ all threads. If we have multiple threads with pending events,
+ save the current event and go through the event loop again.
+ (handle_signal_stop): Return early if finish_step_over returns
+ false.
+ <random signal>: If we get a signal while stepping over a
+ breakpoint in-line in non-stop mode, restart all threads. Clear
+ step_over_info before delivering the signal.
+ (keep_going_stepped_thread): Use internal_error instead of
+ gdb_assert. Mark the thread as resumed.
+ (keep_going_pass_signal): Assert the thread isn't already resumed.
+ If some other thread is doing an in-line step-over, defer the
+ resume. If we just started a new in-line step-over, stop all
+ threads. Don't clear step_over_info.
+ (infrun_async_inferior_event_handler): New function.
+ (_initialize_infrun): Create async event handler with
+ infrun_async_inferior_event_handler as callback.
+ (infrun_async): New declaration.
+ * target.c (target_async): New function.
+ * target.h (target_async): Declare macro and readd as function
+ declaration.
+ * target/waitstatus.h (enum target_stop_reason)
+ <TARGET_STOPPED_BY_SINGLE_STEP>: New value.
+ * thread.c (new_thread): Clear the new waitstatus field.
+ (set_resumed): New function.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * infrun.c (keep_going_stepped_thread): New function, factored out
+ from ...
+ (switch_back_to_stepped_thread): ... here.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * infrun.c (currently_stepping): Extend intro comment.
+ * target.h (target_resume): Extend intro comment.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * infrun.c (switch_back_to_stepped_thread): Use ecs->ptid instead
+ of inferior_ptid. If the stepped thread vanished, return 0
+ instead of resuming here. Use reset_ecs. Print the prev_pc and
+ the current stop_pc in log message. Clear trap_expected if the
+ thread advanced. Don't pass currently_stepping to
+ do_target_resume.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * gdbthread.h (struct thread_info) <prev_pc>: Extend comment.
+ * infrun.c (struct execution_control_state): Move higher up in the
+ file.
+ (reset_ecs): New function.
+ (start_step_over): Now returns int. Rewrite to use
+ keep_going_pass_signal instead of manually starting a displaced step.
+ (resume): Don't call set_running here. If displaced stepping
+ can't start now, clear trap_expected.
+ (find_thread_needs_step_over): Delete function.
+ (proceed): Set up finish_thread_state_cleanup. Call set_running.
+ If the current thread needs a step over, push it in the step-over
+ chain. Don't set insert breakpoints nor call resume directly
+ here. Instead rewrite to use start_step_over and
+ keep_going_pass_signal.
+ (finish_step_over): New function.
+ (handle_signal_stop): Call finish_step_over instead of
+ start_step_over.
+ (switch_back_to_stepped_thread): If the event thread needs another
+ step-over do that first. Use start_step_over.
+ (keep_going_pass_signal): New function, factored out from ...
+ (keep_going): ... here.
+ (_initialize_infrun): Comment moved here.
+ * thread.c (set_running_thread): New function.
+ (set_running, finish_thread_state): Use set_running_thread.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * gdbthread.h (struct thread_info) <step_over_prev,
+ step_over_next>: New fields.
+ (thread_step_over_chain_enqueue, thread_step_over_chain_remove)
+ (thread_step_over_chain_next, thread_is_in_step_over_chain): New
+ declarations.
+ * infrun.c (struct displaced_step_request): Delete.
+ (struct displaced_step_inferior_state) <step_request_queue>:
+ Delete field.
+ (displaced_step_prepare): Assert that trap_expected is set. Use
+ thread_step_over_chain_enqueue. Split starting a new displaced
+ step to ...
+ (start_step_over): ... this new function.
+ (resume): Assert the thread isn't waiting for a step over already.
+ (proceed): Assert the thread isn't waiting for a step over
+ already.
+ (infrun_thread_stop_requested): Adjust to remove threads from the
+ embedded step-over chain.
+ (handle_inferior_event) <fork/vfork>: Call start_step_over after
+ displaced_step_fixup.
+ (handle_signal_stop): Call start_step_over after
+ displaced_step_fixup.
+ * infrun.h (step_over_queue_head): New declaration.
+ * thread.c (step_over_chain_enqueue, step_over_chain_remove)
+ (thread_step_over_chain_next, thread_is_in_step_over_chain)
+ (thread_step_over_chain_enqueue)
+ (thread_step_over_chain_remove): New functions.
+ (delete_thread_1): Remove thread from the step-over chain.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * infrun.c (thread_still_needs_step_over): Rename to ...
+ (thread_still_needs_step_over_bp): ... this.
+ (enum step_over_what): New.
+ (thread_still_needs_step_over): Reimplement.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * remote.c (remote_wait_as): If not waiting for a stop reply,
+ return TARGET_WAITKIND_NO_RESUMED. If TARGET_WNOHANG is
+ requested, don't block waiting forever.
+
+2015-08-07 Pedro Alves <pedro@codesourcery.com>
+
+ * infrun.c (adjust_pc_after_break): Now takes thread_info and
+ waitstatus pointers instead of an ecs. Adjust.
+ (handle_inferior_event): Adjust caller.
+
+2015-08-07 Pedro Alves <palves@redhat.com>
+
+ * infrun.c (handle_inferior_event): If we get
+ TARGET_WAITKIND_SIGNALLED or TARGET_WAITKIND_EXITED in non-stop
+ mode, mark all threads of the exiting process as not-executing.
+ (normal_stop): If we get TARGET_WAITKIND_SIGNALLED or
+ TARGET_WAITKIND_EXITED in non-stop mode, finish all threads of the
+ exiting process, if inferior_ptid still points at a process.
+ * thread.c (struct current_thread_cleanup) <next>: New field.
+ (current_thread_cleanup_chain): New global.
+ (restore_current_thread_ptid_changed): New function.
+ (restore_current_thread_cleanup_dtor): Remove the cleanup from the
+ current_thread_cleanup_chain list.
+ (make_cleanup_restore_current_thread): Add the cleanup data to the
+ current_thread_cleanup_chain list.
+ (_initialize_thread): Install restore_current_thread_ptid_changed
+ as thread_ptid_changed observer.
+
2015-08-07 Joel Brobecker <brobecker@adacore.com>
* dtrace-probe.c (dtrace_process_dof): Ignore the objfile's DOF