aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
AgeCommit message (Collapse)AuthorFilesLines
2008-05-04gdb/Pedro Alves1-26/+60
* breakpoint.c (update_breakpoints_after_exec): Delete bp_longjmp and bp_longjmp_resume breakpoints. (breakpoint_address_is_meaningful): Claim bp_longjmp_resume as meaningful. (create_longjmp_breakpoint): Don't create bp_longjmp_resume breakpoints. Create bp_longjmp breakpoints as momentary breakpoints. (enable_longjmp_breakpoint): Delete. (set_longjmp_breakpoint): New. (disable_longjmp_breakpoint): Delete. (delete_longjmp_breakpoint): New. (set_longjmp_resume_breakpoint): Delete. (set_momentary_breakpoint_at_pc): New. (breakpoint_re_set_one): Don't delete bp_longjmp and bp_longjmp_resume breakpoints. (breakpoint_re_set): Don't create longjmp and longjmp-resume breakpoints. * infrun.c (step_resume_breakpoint): Add comment. (struct execution_control_state): Delete handling_longjmp member. (init_execution_control_state). Don't clear handling_longjmp. (context_switch): Don't context switch handling_longjmp. (handle_inferior_event): If handling a bp_longjmp breakpoint, create a bp_longjmp_resume breakpoint, and set it as current step_resume_breakpoint, then step over the longjmp breakpoint. If handling a bp_longjmp_resume breakpoint, don't delete the longjmp breakpoint, delete the longjmp-resume breakpoint, and stop stepping. (currently_stepping): Remove handling_longjmp from expression. (insert_step_resume_breakpoint_at_sal): Update comment. (insert_longjmp_resume_breakpoint): New. * breakpoint.h (set_momentary_breakpoint_at_pc): Declare. (enable_longjmp_breakpoint, disable_longjmp_breakpoint): Delete declarations. (set_longjmp_breakpoint, delete_longjmp_breakpoint): Declare. (set_longjmp_resume_breakpoint): Delete declaration. * gdbthread.h (save_infrun_state): Remove handling_longjmp parameter. (load_infrun_state): Delete *handling_longjmp parameter. * thread.c (save_infrun_state): Remove handling_longjmp parameter. Update body. (load_infrun_state): Delete *handling_longjmp parameter. Update body. * infcmd.c (disable_longjmp_breakpoint_cleanup): Delete. (delete_longjmp_breakpoint_cleanup): New. (step_1): Call set_longjmp_breakpoint instead of enable_longjmp_breakpoint. Use delete_longjmp_breakpoint_cleanup instead of disable_longjmp_breakpoint_cleanup when making cleanup. (step_1_continuation): Pass thread id in the continuation args to step_once. (step_once): Add thread parameter. Pass thread id the the continuation. gdb/testsuite/ * gdb.cp/annota2.exp: Adjust to breakpoints invalidations at different times.
2008-05-04 * inferior.h (read_pc_pid, write_pc_pid): Remove.Ulrich Weigand1-44/+58
* regcache.h (regcache_read_pc, regcache_write_pc): Add prototypes. * regcache.c (read_pc_pid): Remove, replace by ... (regcache_read_pc): ... this function. (write_pc_pid): Remove, replace by ... (regcache_write_pc): ... this function. (read_pc, write_pc): Update. * infrun.c (displaced_step_prepare): Replace read_pc_pid and write_pc_pid by regcache_read_pc and regcache_write_pc. (displaced_step_fixup): Likewise. (resume): Likewise. Use regcache arch instead of current_gdbarch. (prepare_to_proceed): Likewise. (proceed): Likewise. (adjust_pc_after_break): Likewise. (handle_inferior_event): Likewise. * linux-nat.c (cancel_breakpoint): Likewise. * linux-thread-db.c (check_event): Likewise. * aix-thread.c (aix_thread_wait): Likewise. * tracepoint.c (trace_dump_command): Likewise.
2008-05-03 * infrun.c (handle_inferior_event): Do not insert breakpoints atUlrich Weigand1-1/+2
TARGET_WAITKIND_LOADED events during startup (i.e. in the shell).
2008-05-02 Implement displaced stepping.Pedro Alves1-27/+505
gdb/ * gdbarch.sh (max_insn_length): New 'variable'. (displaced_step_copy, displaced_step_fixup) (displaced_step_free_closure, displaced_step_location): New functions. (struct displaced_step_closure): Add forward declaration. * gdbarch.c, gdbarch.h: Regenerated. * arch-utils.c: #include "objfiles.h". (simple_displaced_step_copy_insn) (simple_displaced_step_free_closure) (displaced_step_at_entry_point): New functions. * arch-utils.h (simple_displaced_step_copy_insn) (simple_displaced_step_free_closure) (displaced_step_at_entry_point): New prototypes. * i386-tdep.c (I386_MAX_INSN_LEN): Rename to... (I386_MAX_MATCHED_INSN_LEN): ... this. (i386_absolute_jmp_p, i386_absolute_call_p) (i386_ret_p, i386_call_p, i386_breakpoint_p, i386_syscall_p) (i386_displaced_step_fixup): New functions. (struct i386_insn, i386_match_insn): Update. (i386_gdbarch_init): Set gdbarch_max_insn_length. * i386-tdep.h (I386_MAX_INSN_LEN): New. (i386_displaced_step_fixup): New prototype. * i386-linux-tdep.c (i386_linux_init_abi): Include "arch-utils.h". Register gdbarch_displaced_step_copy, gdbarch_displaced_step_fixup, gdbarch_displaced_step_free_closure, and gdbarch_displaced_step_location functions. * infrun.c (debug_displaced): New variable. (show_debug_displaced): New function. (struct displaced_step_request): New struct. (displaced_step_request_queue, displaced_step_ptid) (displaced_step_gdbarch, displaced_step_closure) (displaced_step_original, displaced_step_copy) (displaced_step_saved_copy, can_use_displaced_stepping): New variables. (show_can_use_displaced_stepping, use_displaced_stepping) (displaced_step_clear, cleanup_displaced_step_closure) (displaced_step_dump_bytes, displaced_step_prepare) (displaced_step_clear_cleanup, write_memory_ptid) (displaced_step_fixup): New functions. (resume): Call displaced_step_prepare. (proceed): Call read_pc once, and remember the value. If using displaced stepping, don't remove breakpoints. (handle_inferior_event): Call displaced_step_fixup. Add some debugging output. When we try to step over a breakpoint, but get a signal to deliver to the thread instead, ensure the step-resume breakpoint is actually inserted. If a thread hop is needed, and displaced stepping is enabled, don't remove breakpoints. (init_wait_for_inferior): Call displaced_step_clear. (_initialize_infrun): Add "set debug displaced" command. Add "maint set can-use-displaced-stepping" command. Clear displaced_step_ptid. * inferior.h (debug_displaced): Declare variable. (displaced_step_dump_bytes): Declare function. * Makefile.in (arch-utils.o, i386-linux-tdep.o): Update dependencies. gdb/testsuite/ * gdb.asm/asmsrc1.s: Add scratch space. gdb/doc/ * gdb.texinfo (Debugging Output): Document "set/show debug displaced". (Maintenance Commands): Document "maint set/show can-use-displaced-stepping".
2008-05-022008-05-02 Andrew Stubbs <andrew.stubbs@st.com>Andrew Stubbs1-1/+4
* main.h (batch_silent): Declare. * event-top.c: Include main.h. (gdb_setup_readline): Remove extern batch_silent declaration. * infrun.c (normal_stop): Don't print source location when running in --batch-silent mode. * Makefile.in (event-top.o): Add main.h dependency.
2008-05-012008-05-01 Daniel Jacobowitz <dan@codesourcery.com>Daniel Jacobowitz1-7/+11
Pedro Alves <pedro@codesourcery.com> Based on work by Jan Kratochvil <jan.kratochvil@redhat.com> and Jeff Johnston <jjohnstn@redhat.com>. * NEWS: Mention attach to stopped process fix. * infcmd.c (detach_command, disconnect_command): Discard the thread list. * infrun.c (handle_inferior_event): Do not ignore non-SIGSTOP while attaching. Use signal_stop_state. (signal_stop_state): Check stop_soon. * linux-nat.c (kill_lwp): Declare earlier. (pid_is_stopped, linux_nat_post_attach_wait): New. (lin_lwp_attach_lwp): Use linux_nat_post_attach_wait. Update comments. (linux_nat_attach): Use linux_nat_post_attach_wait. (detach_callback, linux_nat_detach): Improve handling for signalled processes. (linux_nat_pid_to_str): Always print out the LWP ID if it differs from the process ID. * Makefile.in (infcmd.o): Update. 2008-05-01 Jan Kratochvil <jan.kratochvil@redhat.com> Daniel Jacobowitz <dan@codesourcery.com> * gdb.threads/attach-into-signal.c, gdb.threads/attach-into-signal.exp, gdb.threads/attach-stopped.c, gdb.threads/attach-stopped.exp, gdb.threads/attachstop-mt.c, gdb.threads/attachstop-mt.exp: New.
2008-04-25 * breakpoint.h (enum bpstat_what_main_action): DeletePedro Alves1-4/+1
BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE. * breakpoint.c (clrs): Delete. (bpstat_what): Update table. * infrun.c (handle_inferior_event): Remove BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE handling.
2008-04-24 exec_cleanup murder.Vladimir Prus1-7/+2
* breakpoint.c (until_break_command_continuation): Add the 'error' parameter. Directly delete the breakoint as opposed to running cleanups. (until_break_command): Install continuation only after starting the target. Don't use exec cleanups, use ordinary cleanups. Discard cleanups is successfully started the target in async mode. (make_cleanup_delete_breakpoint): Remove. * breakpoint.h (make_cleanup_delete_breakpoint): Remove declaration. * defs.h (do_exec_cleanups, make_exec_cleanup): Remove declarations. (struct continations): Add the 'error' parameter to the continuation_hook field. (add_continuation, do_all_continuations) (add_intermediate_continuation) (do_all_intermediate_continuations): Add the 'error' parameter. * exceptions.c (throw_exception): Don't call do_exec_cleanups. * inf-loop.c (inferior_event_handler): Instead of calling discard_all_continuations, use do_all_continuations with 1 as 'error' parameter. Pass 0 as 'error' parameter in existing uses of discard_all_continuations. * infcmd.c (step_1): Do not use exec cleanup. For async case, discard cleanups. (step_once): Install continuation only after resuming the target. (step_1_continuation): Disable longjmp breakpoint on error. (finish_command_continuation): Add the error parameter. Delete the finish breakpoint directly, do not use cleanups. (finish_command): Do not use exec_cleanups. Always setup continuation. For sync case, immediately run them. (attach_command_continuation): Add the error parameter. * infrun.c (fetch_inferior_event): Do not use exec cleanups to remove step_resume_breakpoint -- adjust delete it directly. * interps.c (interp_set): Adjust call to do_all_continations. * mi/mi-interp.c (mi_interpreter_exec_continuation): Do not do exec cleanups. * mi/mi-main.c (mi_cmd_target_select): Do not do exec cleanups. (mi_cmd_execute): Do not use exec_cleanup. (mi_execute_async_cli_command): Simplify the string concatenation logic. Do no use exec cleanup. (mi_exec_async_cli_cmd_continuation): New parameter error. Free last_async_command. * top.c (command_line_handler_continuation): New parameter error. * utils.c (exec_cleanup_chain, make_exec_cleanup) (do_exec_cleanups): Remove. (add_continuation, do_all_continations) (add_intermediate_continuation) (do_all_intermediate_continuations): New parameter error.
2008-04-24 * breakpoint.h (bp_location_p): New typedef.Vladimir Prus1-29/+28
Register a vector of bp_location_p. * breakpoint.c (always_inserted_mode) (show_always_inserted_mode): New. (unlink_locations_from_global_list): Remove. (update_global_location_list) (update_global_location_list_nothrow): New. (update_watchpoint): Don't free locations. (should_insert_location): New. (insert_bp_location): Use should_insert_location. (insert_breakpoint_locations): Copied from insert_breakpoints. (insert_breakpoint): Use insert_breakpoint_locations. (bpstat_stop_status): Call update_global_location_list when disabling breakpoint. (allocate_bp_location): Don't add to bp_location_chain. (set_raw_breakpoint) (create_longjmp_breakpoint, enable_longjmp_breakpoint) (disable_longjmp_breakpoint, create_overlay_event_breakpoint) (enable_overlay_breakpoints, disable_overlay_breakpoints) (set_longjmp_resume_breakpoint) (enable_watchpoints_after_interactive_call_stop) (disable_watchpoints_before_interactive_call_start) (create_internal_breakpoint) (create_fork_vfork_event_catchpoint) (create_exec_event_catchpoint, set_momentary_breakpoint) (create_breakpoints, break_command_1, watch_command_1) (create_exception_catchpoint) (handle_gnu_v3_exceptions) (disable_breakpoint, breakpoint_re_set_one) (create_thread_event_breakpoint, create_solib_event_breakpoint) (create_ada_exception_breakpoint): : Don't call check_duplicates. Call update_global_location_list. (delete_breakpoint): Don't remove locations and don't try to reinsert them. Call update_global_location_list. (update_breakpoint_locations): Likewise. (restore_always_inserted_mode): New. (update_breakpoints_after_exec): Temporary disable always inserted mode. * Makefile.in: Update dependencies. * infrun.c (proceed): Remove breakpoints while stepping over breakpoint. (handle_inferior_event): Don't remove or insert breakpoints. * linux-fork.c (checkpoint_command): Remove breakpoints before fork and insert after. (linux_fork_context): Remove breakpoints before switch and insert after. * target.c (target_disconnect, target_detach): Remove breakpoints from target.
2008-04-15PR gdb/2424Aleksandar Ristovski1-5/+3
* infrun.c (normal_stop) Move breakpoint_auto_delete further down to allow printing to 'see' real reason of stop. This fixes PR 2424. * breakpoint.c (bpdisp_texst): New function. The function takes over the role of bpstats static array in print_one_breakpoint_location. (print_it_typical): Print "Temporary breakpoint" instead of just "Breakpoint" when breakpoint is, well, temporary. For mi-like protocols, print disp field. (print_one_breakpoint_location): Removed bpdisps static definition. Call new bpstat_text function to get value for 'disp' field. (mention): Print "Temporary breakpoint" instead of just "Breakpoint".
2008-03-15 Remove ignoring leading exec events code.Vladimir Prus1-19/+0
* fork-child.c (startup_inferior): Do not set inferior_ignoring_leading_exec_events. * inf-child.c (inf_child_reported_exec_events_per_exec_call): Remove. (inf_child_target): Do not set to_reported_exec_events_per_exec_call. * infrun.c (inferior_ignoring_leading_exec_events): Remove. (handle_inferior_event): Remove code for ignoring leading exec events. * target.c (update_current_target): Do not inherit, or default, to_reported_exec_events_per_exec_call. (debug_to_reported_exec_events_per_exec_call): Remove. (setup_target_debug): Do not set to_reported_exec_events_per_exec_call. * target.h (target_reported_exec_events_per_exec_call): Remove. (struct target): Remove the to_reported_exec_events_per_exec_call field.
2008-01-29 * Makefile.in (symfile.o): Update.Daniel Jacobowitz1-24/+13
* NEWS: Mention exec tracing support. * inf-ttrace.c (inf_ttrace_wait): Return TARGET_WAITKIND_EXECD for exec events. * infcmd.c (kill_if_already_running, detach_command) (disconnect_command): Replace SOLIB_RESTART with no_shared_libraries. * infrun.c (MAY_FOLLOW_EXEC, may_follow_exec): Delete. (follow_exec): Do not check may_follow_exec. Do not mourn and push targets. Apply the sysroot path to the loaded executable. Use no_shared_libraries. * linux-nat.c (linux_child_follow_fork): Print fork following messages if verbose. (kill_wait_callback): Kill again before waiting a second time. * symfile.c (symbol_file_clear): Replace SOLIB_RESTART with no_shared_libraries. * gdb.base/foll-exec.exp: Update header. Skip on remote targets. Run on GNU/Linux. (do_exec_tests): Check for systems which do not support catchpoints. Do not match START. * gdb.base/foll-fork.exp: Update header. Skip on remote targets. Run on GNU/Linux. Enable verbose output. (check_fork_catchpoints): New. (explicit_fork_child_follow, catch_fork_child_follow) (tcatch_fork_parent_follow): Update expected messages. (do_fork_tests): Use check_fork_catchpoints. * gdb.base/foll-vfork.exp: Update header. Skip on remote targets. Run on GNU/Linux. Enable verbose output. (check_vfork_catchpoints): New. (vfork_parent_follow_to_bp, tcatch_vfork_then_child_follow): Update expected messages. (do_vfork_and_exec_tests): Use check_fork_catchpoints.
2008-01-29 * infrun.c (wait_for_inferior): Add treat_exec_as_sigtrap parameterJoel Brobecker1-4/+19
and use it. (proceed, start_remote): Update call to wait_for_inferior. * inferior.h (wait_for_inferior): Update declaration. * fork-child.c, infcmd.c, solib-irix.c, solib-osf.c, solib-sunos.c, solib-svr4.c, win32-nat.c: Update calls to wait_for_inferior. * inf-ttrace.c (inf_ttrace_wait): Report TTEVT_EXEC events as TARGET_WAITKIND_EXECD instead of TARGET_WAITKIND_STOPPED.
2008-01-23 Inform about new thread in a single place.Vladimir Prus1-7/+1
* thread.c (add_thread_silent): Renamed from add_thread. (print_thread_events): New variable definition. (show_print_thread_events): New function. (_initialize_thread): Add "set print thread-events" and "show print thread-events" commands. (add_thread): Announce new thread. * gdbthread.h (add_thread_silent): Declare. (print_thread_events): New variable declaration. * inf-ttrace.c (inf_ttrace_wait): Don't inform about new thread, as add_thread is always called too, and will take care of that. * infrun.c (handle_inferior_event): Likewise. * procfs.c (procfs_wait): Likewise. * remote.c (remote_currthread): Likewise. * sol-thread.c (sol_thread_wait): Likewise. * win32-nat.c (get_win32_debug_event): Likewise. * linux-thread-db.c (attach_thread): Likewise. Remove the verbose parameter. (check_event): Make detach_thread be verbose only if print_thread_events is set. * linux-nat.c (lin_lwp_attach_lwp): Don't inform about new thread. This is called only from linux-thread-db.c:attach_thread, which will take care. Remove the verbose parameter. * linux-nat.h (lin_lwp_attach_lwp): Adjust prototype.
2008-01-21 * infrun.c (handle_inferior_event): IfVladimir Prus1-18/+1
we failed to remove breakpoints, error, don't try to increment PC by hand.
2008-01-01 Updated copyright notices for most files.Daniel Jacobowitz1-2/+2
2007-12-23 * infrun.c (handle_inferior_event): Remove code that made usJoel Brobecker1-14/+0
stop when stepping into the last line of the current function.
2007-12-19 * infrun.c (handle_inferior_event): Fix spelling in comment.Joel Brobecker1-1/+1
2007-12-16 * target.h (target_pid_or_tid_to_str): Remove.Vladimir Prus1-2/+2
* infrun.c (handle_inferior_event): Use target_pid_to_str instead of target_pid_or_tid_to_str. (normal_stop): Likewise.
2007-12-07 * infrun.c (init_wait_for_inferior): Reset target_last_wait_ptid.Daniel Jacobowitz1-1/+5
(handle_inferior_event): Clear stop_stack_dummy earlier.
2007-12-06 Localize infrun use of remove_breakpoints.Vladimir Prus1-5/+5
* infrun.c (handle_inferior_event): Remove calls to remove_breakpoints, except where needed to communicate change of breakpoint locations to inferior. (keep_going): If steppping over breakpoint, remove breakpoints.
2007-12-06 Clarify infrun variable naming.Vladimir Prus1-45/+72
* infrun.c (trap_expected): Rename to stepping_over_breakpoint. Document. (stepping_past_breakpoint): Remove. (stepping_past_breakpoint_ptdi): Renamed to deferred_step_ptid. (struct execution_control_state): Rename the another_trap field to stepping_over_breakpoint. (struct inferior_status): Rename the trap_expected field to stepping_over_breakpoint. (clear_proceed_status, proceed) (init_execution_control_state, context_switch) (handle_inferior_event, currently_stepping) (keep_going, save_inferior_status) (restore_inferior_status, prepare_to_proceed): Adjust. * gdbthread.h (struct thread_info): Rename the trap_expected field to stepping_over_breakpoint. * thread.c (load_infrun_state, save_infrun_state): Adjust.
2007-11-30 * infrun.c (handle_inferior_event): Don'tVladimir Prus1-17/+6
ignore beakpoints if trap_expected is set.
2007-11-30 Make insert_breakpoints return void.Vladimir Prus1-1/+6
* breakpoint.h (insert_breakpoints): Change return type to void. * breakpoint.c (insert_breakpoints): Change return type to void. Rename local return_val variable to error. * infrun.c (keep_going): Instead of checking return value from insert_breakpoints, catch exception.
2007-11-29 Stop infrun from tracking breakpoint insertion status.Vladimir Prus1-44/+17
The checks of breakpoints_inserted before calling remove_breakpoints are removed, as remove_breakpoint won't touch uninserted breakpoints. In a number of places, we're interested if a breakpoint is inserted at particular PC, and we now use breakpoint_inserted_here_p. In a few places, insert_breakpoints can be called unconditionally, since it won't try to insert already inserted breakpoint. * breakpoint.h (regular_breakpoint_inserted_here_p): New declaration. * breakpoint.c (regular_breakpoint_inserted_here_p): New. (breakpoint_inserted_here_p): Use regular_breakpoint_inserted_here_p. * infrun.c (breakpoints_inserted): Remove. (resume): Don't check for breakpoints_inserted before remove_hw_watchpoints. Use breakpoint_inserted_here_p. (proceed, init_wait_for_inferior): Don't set breakpoints_inserted. (handle_inferior_event): Don't use breakpoints_inserted. Use breakpoints_meant_to_be_inserted and breakpoints_inserted_here_p. (insert_step_resume_breakpoint_at_sal, keep_going): Use breakpoints_meant_to_be_inserted. Don't set breakpoints_inserted. (normal_stop): Don't check for breakpoints_inserted. Don't set breakpoints_inserted. (keep_going): Don't check for breakpoints_inserted. (insert_step_resume_breakpoint_at_sal): Don't insert breakpoints
2007-11-28 * infrun.c (resume): Set right thread even ifVladimir Prus1-1/+2
stepping over breakpoint using software single step.
2007-11-20 * infrun.c (resume): Clarify logic thatVladimir Prus1-7/+33
decides if a single thread must be resumed. Add comments.
2007-11-022007-11-02 Markus Deuling <deuling@de.ibm.com>Ulrich Weigand1-2/+4
* frame.c (frame_id_inner): Add gdbarch parameter. Replace current_gdbarch by gdbarch. (frame_find_by_id, get_prev_frame_1): Use get_frame_arch to get at the current architecture by frame_info. * frame.h (frame_id_inner): Add gdbarch parameter. * stack.c (return_command): Use get_frame_arch to get at the current architecture by frame_info. Update call of frame_id_inner. * infrun.c (handle_inferior_event): Likewise. * dummy-frame.c (dummy_frame_push): Use get_regcache_arch to get at the current architecture by regcache. Update call of frame_id_inner.
2007-10-012007-09-16 Daniel Jacobowitz <dan@codesourcery.com>Daniel Jacobowitz1-44/+42
Jeff Johnston <jjohnstn@redhat.com> * breakpoint.c (watchpoints_triggered): New. (bpstat_stop_status): Remove STOPPED_BY_WATCHPOINT argument. Check watchpoint_triggered instead. Combine handling for software and hardware watchpoints. Do not use target_stopped_data_address here. Always check a watchpoint if its scope breakpoint triggers. Do not stop for thread or overlay events. Improve check for triggered watchpoints without a value change. (watch_command_1): Insert the scope breakpoint first. Link the scope breakpoint to the watchpoint. * breakpoint.h (enum watchpoint_triggered): New. (struct breakpoint): Add watchpoint_triggered. (bpstat_stop_status): Update prototype. (watchpoints_triggered): Declare. * infrun.c (enum infwait_status): Add infwait_step_watch_state. (stepped_after_stopped_by_watchpoint): Delete. (handle_inferior_event): Make stepped_after_stopped_by_watchpoint local. Handle infwait_step_watch_state. Update calls to bpstat_stop_status. Use watchpoints_triggered to check watchpoints. * remote.c (stepped_after_stopped_by_watchpoint): Remove extern. (remote_stopped_data_address): Do not check it. * gdb.texinfo (Setting Watchpoints): Adjust warning text about multi-threaded watchpoints. * gdbint.texinfo (Watchpoints): Describe how watchpoints are checked. Describe sticky notification. Expand description of steppable and continuable watchpoints. (Watchpoints and Threads): New subsection. * gdb.threads/watchthreads.c (thread_function): Sleep between iterations. * gdb.threads/watchthreads.exp: Allow two watchpoints to trigger at once for S/390. Generate matching fails and passes.
2007-09-22 * breakpoint.c (do_restore_lang_radix_cleanup): Remove.Vladimir Prus1-8/+0
(resolve_pending_breakpoint): Remove. (re_enable_breakpoints_in_shlibs): Remove. (unlink_locations_from_global_list): New. (update_breakpoint_locations): New. (breakpoint_re_set_one): Don't bail out on pending breakpoints. Use parse_condition and update_breakpoint_location to reset breakpoint. Ignore 'symbol not found' error from decode_line_1. (breakpoint_re_set): Don't emit newline before the reason why breakpoint is not reset. (do_enable_breakpoint): Don't specially process pending breakpoints. (free_bp_location): New. (break_command_1): For pending breakpoints, initialize all fields of a sal with zeroes. * breakpoint.h (re_enable_breakpoints_in_shlibs): Remove. * infcmd.c (post_create_inferior): Don't call re_enable_breakpoints_in_shlibs. * infrun.c (handle_inferior_event): Likewise. * solib-irix.c (irix_solib_create_inferior_hook): Likewise. * solib-osf.c (osf_solib_create_inferior_hook): Likewise. * win32-nat.c (get_win32_debug_event): Likewise.
2007-09-17 * infrun.c (insert_step_resume_breakpoint_at_frame): Add assertionJoel Brobecker1-0/+1
that return_frame is not null.
2007-09-10 * infrun.c (stepping_past_breakpoint): New global variable.Ulrich Weigand1-27/+57
(stepping_past_breakpoint_ptid): Likewise. (prepare_to_proceed): Add STEP parameter. Do not check for Ctrl-C. Only switch threads if we need to single-step over a breakpoint hit in the previously selected thread. If stepping, remember previous thread to switch back to in STEPPING_PAST_BREAKPOINT[_PTID]. Call switch_to_thread instead of copying its contents. (proceed): Pass STEP to prepare_to_proceed. Always set ONEPROC if prepare_to_proceed returns true. (init_wait_for_inferior): Reset STEPPING_PAST_BREAKPOINT. (context_switch): Call switch_to_thread. (handle_inferior_event): Switch back to previous thread if requested in STEPPING_PAST_BREAKPOINT[_PTID] by prepare_to_proceed. * gdbthread.h (switch_to_thread): Add prototype. * thread.c (switch_to_thread): Make global.
2007-08-23 Switch the license of all .c files to GPLv3.Joel Brobecker1-4/+2
Switch the license of all .h files to GPLv3. Switch the license of all .cc files to GPLv3.
2007-07-02 * infrun.c (inferior_ignoring_startup_exec_events): Delete.Daniel Jacobowitz1-14/+65
(start_remote): Use STOP_QUIETLY_REMOTE. (handle_inferior_event): Do not condition TARGET_WAITKIND_LOADED support on a SOLIB_ADD definition. Update breakpoints_inserted. Update to match shared library event breakpoint support. Only resume if appropriate. Handle STOP_QUIETLY_REMOTE. (normal_stop): Handle TARGET_WAITKIND_LOADED. * fork-child.c (startup_inferior): Do not set inferior_ignoring_startup_exec_events * inferior.h (inferior_ignoring_startup_exec_events): Delete declaration. (enum stop_kind): Improve documentation. Add STOP_QUIETLY_REMOTE. * config/gdbserver.exp (gdb_reconnect): New. * gdb.base/so-disc-shr.c, gdb.base/solib-disc.c, gdb.base/solib-disc.exp: New files. * lib/gdb.exp (gdb_test_multiple): Allow tests to match "Ending remote debugging". (gdb_compile): Add shlib_load flag. * lib/gdbserver-support.exp (gdbserver_run): Save the protocol and port. (gdbserver_reconnect): New.
2007-06-22 * infrun.c (adjust_pc_after_break): Do not assume software single-stepUlrich Weigand1-54/+34
is always active if SOFTWARE_SINGLE_STEP_P is true. (resume): Use gdbarch_software_single_step[_p] instead of SOFTWARE_SINGLE_STEP[_P]. (handle_inferior_event): Do not check for SOFTWARE_SINGLE_STEP_P. * gdbarch.sh (software_single_step): Remove target macro. * gdbarch.h, gdbarch.c: Regenerate.
2007-06-22 * infrun.c (clear_proceed_status): Clean up stop_registers.Ulrich Weigand1-20/+15
(normal_stop): Allocate regcache for stop_registers. (struct inferior_status): Remove stop_registers member. (save_inferior_status): Do not save stop_registers. (restore_inferior_status): Do not restore stop_registers. (discard_inferior_status): Do not discard stop_registers. (build_infrun): Remove. (_initialize_infrun): Do not swap stop_registers.
2007-06-182007-06-18 Markus Deuling <deuling@de.ibm.com>Ulrich Weigand1-1/+2
* gdbarch.sh (DEPRECATED_FUNCTION_START_OFFSET): Replace by gdbarch_deprecated_function_start_offset. * symtab.c (find_function_start_sal)skip_prologue_using_sal): Likewise. * linespec.c (minsym_found): Likewise. * infrun.c (handle_inferior_event): Likewise. * infcall.c (find_function_addr): Likewise. * cli/cli-cmds.c (disassemble_command): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
2007-06-16 * regcache.c (struct regcache): Add ptid_t member.Ulrich Weigand1-4/+5
(regcache_xmalloc): Initialize it. (regcache_cpy_no_passthrough): Do not refer to current_regcache. (regcache_dup): Likewise. (regcache_dup_no_passthrough): Likewise. (current_regcache): Make static. (registers_ptid): Remove variable. (get_thread_regcache): New function. (get_current_regcache): New function. (registers_changed): Implement by freeing current regcache. (regcache_raw_read): Do not refer to current_regcache. Set inferior_ptid to regcache->ptid while calling target routines. (regcache_raw_write): Likewise. (regcache_raw_supply): Do not refer to current_regcache. (read_pc_pid): Use thread regcache. Do not modify inferior_ptid. (write_pc_pid): Likewise. (build_regcache): Remove. (_initialize_regcache): Do not call DEPRECATED_REGISTER_GDBARCH_SWAP or deprecated_register_gdbarch_swap. Do not initialize registers_ptid. * regcache.h (get_current_regcache): Add prototype. (get_thread_regcache): Likewise. (current_regcache): Remove declaration. * corelow.c (core_open): Replace current_regcache by get_current_regcache (). * frame.c (frame_pop): Likewise. (put_frame_register): Likewise. (get_current_frame, create_new_frame): Likewise. * mi/mi-main.c (mi_cmd_data_write_register_values): Likewise. * stack.c (return_command): Likewise. * infcall.c (call_function_by_hand): Likewise. * infrun.c (resume): Likewise. (save_inferior_status, restore_inferior_status): Likewise. * linux-fork.c (fork_load_infrun_state): Likewise. (fork_save_infrun_state): Likewise. * win32-nat.c (win32_resume): Likewise. * i386fbsd-nat.c (i386fbsd_resume): Likewise. * monitor.c (monitor_wait): Likewise. * remote.c (remote_wait): Likewise. * remote-mips.c (mips_wait): Likewise. * bsd-kvm.c (bsd_kvm_open): Likewise (bsd_kvm_proc_cmd, bsd_kvm_pcb_cmd): Likewise. * fbsd-nat.c (fbsd_make_corefile_notes): Likewise. * i386-linux-nat.c (i386_linux_resume): Likewise. * ia64-linux-nat.c (ia64_linux_insert_watchpoint): Likewise. (ia64_linux_stopped_data_address): Likewise. * frv-tdep.c (frv_fdpic_loadmap_addresses): Likewise. * m32c-tdep.c (m32c_virtual_frame_pointer): Likewise. * mep-tdep.c (current_me_module, current_options): Likewise. * mips-tdep.c (deprecated_mips_set_processor_regs_hack): Likewise. * linux-nat.c (linux_nat_do_thread_registers): Use thread regcache instead of current_regcache. Call target_fetch_registers. (linux_nat_corefile_thread_callback): Update call site. (linux_nat_do_registers): Likewise. * procfs.c (procfs_do_thread_registers): Use thread regcache instead of current_regcache. (procfs_make_note_section): Likewise. * proc-service.c (ps_lgetregs, ps_lsetregs): Likewise. (ps_lgetfpregs, ps_lsetfpregs): Likewise. * sol-thread.c (ps_lgetregs, ps_lsetregs): Likewise. (ps_lgetfpregs, ps_lsetfpregs): Likewise.
2007-06-15 * gdbarch.sh (get_longjmp_target): Add FRAME argument.Ulrich Weigand1-1/+2
* gdbarch.c, gdbarch.h: Regenerate. * infrun.c (handle_inferior_event): Pass current frame to gdbarch_get_longjmp_target. * alpha-tdep.c (alpha_get_longjmp_target): Add FRAME argument. Read registers from FRAME instead of using read_register. Use get_frame_arch instead of current_gdbarch. * arm-tdep.c (arm_get_longjmp_target): Likewise. * i386-tdep.c (i386_get_longjmp_target): Likewise. * m68k-tdep.c (m68k_get_longjmp_target): Likewise. * mips-linux-tdep.c (mips_linux_get_longjmp_target): Likewise. (mips64_linux_get_longjmp_target): Likewise. * mipsnbsd-tdep.c (mipsnbsd_get_longjmp_target): Likewise.
2007-06-15 * gdbarch.sh (skip_trampoline_code): Add FRAME argument.Ulrich Weigand1-4/+6
* gdbarch.c, gdbarch.h: Regenerate. * arch-utils.c (generic_skip_trampoline_code): Add FRAME argument. * arch-utils.h (generic_skip_trampoline_code): Likewise. * infrun.c (handle_inferior_event): Pass current frame to gdbarch_skip_trampoline_code and skip_language_trampoline. * language.c (unk_lang_trampoline): Add FRAME argument. (skip_language_trampoline): Add FRAME argument. Pass it to skip_trampoline callback. * language.h: Add forward declaration of struct frame_info. (struct language_defn): Add FRAME argument to skip_trampoline. (skip_language_trampoline): Add FRAME argument. * cp-abi.c (cplus_skip_trampoline): Add FRAME argument. Pass it to skip_trampoline callback. * cp-abi.h: Add forward declaration of struct frame_info. (cplus_skip_trampoline): Add FRAME argument. (struct cp_abi_ops): Add FRAME argument to skip_trampoline callback. * gnu-v3-abi.c (gnuv3_skip_trampoline): Add FRAME argument. Pass it to gdbarch_skip_trampoline_code. * objc-lang.c (objc_skip_trampoline): Add FRAME argument. Pass it to gdbarch_skip_trampoline_code. * minsyms.c (find_solib_trampoline_target): Add FRAME argument. * symtab.h (find_solib_trampoline_target): Likewise. * obsd-tdep.c (obsd_skip_solib_resolver): Pass current frame to find_solib_trampoline_target. * arm-tdep.c (arm_skip_stub): Add FRAME argument. Read registers from FRAME instead of calling read_register. * hppa-hpux-tdep.c (hppa_hpux_skip_trampoline_code): Add FRAME argument. Read registers from FRAME instead of using read_register. * hppa-tdep.c (hppa_skip_trampoline_code): Likewise. * hppa-tdep.h (hppa_skip_trampoline_code): Add FRAME argument. * i386-cygwin-tdep.c (i386_cygwin_skip_trampoline_code): Add FRAME argument. * m32c-tdep.c (m32c_skip_trampoline_code): Add FRAME argument. * mips-tdep.c (mips_skip_trampoline_code): Add FRAME argument. Read registers from FRAME instead of using read_signed_register. * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Add FRAME argument. (ppc64_standard_linkage_target): Likewise. Read registers from FRAME instead of using read_register. (ppc64_skip_trampoline_code): Add FRAME argument. Pass it to ppc64_standard_linkage_target. * rs6000-tdep.c (rs6000_skip_trampoline_code): Add FRAME argument. Pass it to find_solib_trampoline_target. Read registers from FRAME instead of using read_register. * xstormy16-tdep.c (xstormy16_skip_trampoline_code): Add FRAME argument.
2007-06-15 * gdbarch.sh (software_single_step): Replace REGCACHE argument byUlrich Weigand1-1/+1
FRAME argument. * gdbarch.c, gdbarch.h: Regenerate. * infrun.c (resume): Pass current frame to SOFTWARE_SINGLE_STEP. * alpha-tdep.c (alpha_next_pc): Add FRAME argument. Retrieve registers from FRAME instead of using read_register. (alpha_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to alpha_next_pc. Use get_frame_pc instead of read_pc. * alpha-tdep.h (alpha_software_single_step): Replace REGCACHE argument by FRAME. * arm-tdep.c (shifted_reg_val): Add FRAME argument. Read registers from FRAME instead of using read_register. (thumb_get_next_pc): Likewise. (arm_get_next_pc): Likewise. (arm_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to arm_get_next_pc. Use get_frame_pc instead of read_register. * arm-tdep.h (arm_software_single_step): Replace REGCACHE argument by FRAME. * cris-tdep.c (find_step_target): Add FRAME argument. Read registers from FRAME instead of using read_register. (cris_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to find_step_target. * mips-tdep.c (mips32_next_pc): Add FRAME argument. Read registers from FRAME instead of using read_register / read_signed_register. (extended_mips16_next_pc): Likewise. (mips16_next_pc): Likewise. (mips_next_pc): Likewise. (mips_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to mips_next_pc. Use get_frame_pc instead of read_pc. * mips-tdep.h (mips_software_single_step): Replace REGCACHE argument by FRAME. * rs6000-tdep.c (branch_dest): Add FRAME argument. Use it instead of current frame. Read registers from FRAME. (deal_with_atomic_sequence): Add FRAME argument. Pass it to branch_dest. Use get_frame_pc instead of read_pc. (rs6000_software_single_step): Likewise. (bl_to_blrl_insn_p): Do not call branch_dest. * rs6000-tdep.h (rs6000_software_single_step): Replace REGCACHE argument by FRAME. * sparc64-linux-tdep.c (sparc64_linux_step_trap): Add FRAME argument. Read registers from FRAME instead of current regcache. * sparc-linux-tdep.c (sparc32_linux_step_trap): Likewise. * sparcnbsd-tdep.c (sparcnbsd_step_trap): Likewise. * sparc-tdep.c (sparc_address_from_register): Remove. (sparc_analyze_control_transfer): Pass FRAME argument instead of GDBARCH. Pass FRAME to step_trap callback. (sparc_step_trap): Add FRAME argument. (space_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to sparc_analyze_control_transfer. Read registers from FRAME instead of calling sparc_address_from_register. * sparc-tdep.h (struct gdbarch_tdep): Add FRAME argument to step_trap callback. (sparc_address_from_register): Remove prototype. (sparc_software_single_step): Replace REGCACHE argument by FRAME. (sparcnbsd_step_trap): Add FRAME argument. * spu-tdep.c (spu_software_single_step): Replace REGCACHE argument by FRAME. Read registers from FRAME instead of REGCACHE.
2007-06-092007-06-09 Markus Deuling <deuling@de.ibm.com>Ulrich Weigand1-3/+5
* gdbarch.sh (SKIP_TRAMPOLINE_CODE): Replace by gdbarch_skip_trampoline_code. * rs6000-tdep.c (rs6000_in_solib_return_trampoline): Likewise (comment). * objc-lang.c (objc_skip_trampoline) (objc_submethod_helper_data): Likewise. * m32c-lang.c (m32c_skip_trampoline_code): Likewise (comment). * infrun.c (handle_inferior_event): Likewise. * gnu-v3-abi.c (gnuv3_skip_trampoline): Likewise. * gdbarch.sh (IN_SOLIB_RETURN_TRAMPOLINE): Replace by gdbarch_in_solib_return_trampoline. * rs6000-tdep.c (rs6000_in_solib_return_trampoline): Likewise (comment). * infrun.c (handle_inferior_event): Likewise. * hppa-tdep.c (hppa_stub_unwind_sniffer): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
2007-06-092007-06-09 Markus Deuling <deuling@de.ibm.com>Ulrich Weigand1-1/+2
* gdbarch.sh (SKIP_PROLOGUE): Replace by gdbarch_skip_prologue. * symtab.c (find_function_start_sal, in_prologue): Likewise. * linespec.c (minsym_found): Likewise. * infrun.c (step_into_function): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
2007-06-092007-06-09 Markus Deuling <deuling@de.ibm.com>Ulrich Weigand1-14/+15
* gdbarch.sh (DECR_PC_AFTER_BREAK): Replace by gdbarch_decr_pc_after_break. * tracepoint.c (trace_dump_command): Likewise. * solib-sunos.c (sunos_solib_create_inferior_hook): Likewise. * linux-thread-db.c (check_event): Likewise. * linux-nat.c (cancel_breakpoints_callback): Likewise. * infrun.c (adjust_pc_after_break, normal_stop): Likewise. * frame.h: Likewise (comment). * dummy-frame.c (deprecated_pc_in_call_dummy): Likewise. * aix-thread.c (aix_thread_wait): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
2007-06-092007-06-09 Markus Deuling <deuling@de.ibm.com>Ulrich Weigand1-2/+4
* gdbarch.sh (ADDR_BITS_REMOVE): Replace by gdbarch_addr_bits_remove. * value.c (value_as_address): Likewise (comment). * remote-mips.c (common_breakpoint): Likewise. * regcache.c (read_pc_pid): Likewise. * printcmd.c (do_one_display): Likewise. * monitor.c (monitor_write_memory, monitor_read_memory) (monitor_insert_breakpoint): Likewise. * mips-tdep.c (heuristic_proc_start): Likewise. * infrun.c (insert_step_resume_breakpoint_at_frame) (insert_step_resume_breakpoint_at_caller): Likewise. * buildsym.c (record_line): Likewise. * arm-tdep.c (arm_scan_prologue, thumb_get_next_pc) (arm_get_next_pc): Likewise. * armnbsd-nat.c (arm_supply_gregset, fetch_register, store_register) (store_regs): Likewise. * arm-linux-tdep.c (arm_linux_supply_gregset): Likewise. * arm-linux-nat.c (fetch_register, fetch_regs): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
2007-06-062007-06-06 Markus Deuling <deuling@de.ibm.com>Ulrich Weigand1-7/+8
* gdbarch.sh (HAVE_NONSTEPPABLE_WATCHPOINT): Replace by gdbarch_have_nonsteppable_watchpoint. * infrun.c (handle_inferior_event, adjust_pc_after_break): Likewise. * gdbarch.sh (CANNOT_STEP_BREAKPOINT): Replace by gdbarch_cannot_step_breakpoint. * infrun.c (resume): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
2007-06-06 * gdbarch.sh (GET_LONGJMP_TARGET): Replace by gdbarch_get_longjmp_target.Ulrich Weigand1-1/+2
* infrun.c (handle_inferior_event): Likewise. * gdbarch.sh (GET_LONGJMP_TARGET_P): Replace by gdbarch_get_longjmp_target_p. * breakpoint.c (breakpoint_re_set): Likewise. * infrun.c (handle_inferior_event): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
2007-05-23 * breakpoint.h (enum bpstat_what_main_action): RemoveDaniel Jacobowitz1-9/+0
BPSTAT_WHAT_THROUGH_SIGTRAMP. * infrun.c (process_event_stop_test): Do not check for it.
2007-05-07 * gdbarch.sh: Add skip_permanent_breakpoint callback.Ulrich Weigand1-18/+9
* gdbarch.h, gdbarch.c: Regenerate. * infrun.c (SKIP_PERMANENT_BREAKPOINT): Remove default definition. (resume): Call gdbarch_skip_permanent_breakpoint instead of SKIP_PERMANENT_BREAKPOINT. Inline default case. * hppa-hpux-tdep.c (hppa_skip_permanent_breakpoint): Make static. Add REGCACHE argument. Use it instead of read/write_register. (hppa_hpux_init_abi): Install hppa_skip_permanent_breakpoint. * config/pa/tm-hppah.h: Delete file. * config/pa/hppa64.mt (DEPRECATED_TM_FILE): Set to tm-hppa.h. * config/pa/hppahpux.mt (DEPRECATED_TM_FILE): Likewise.
2007-04-14 * gdbarch.sh (software_single_step): Remove "insert_breakpoints_p" andUlrich Weigand1-4/+4
"sig" arguments, add "regcache" argument. * gdbarch.c, gdbarch.h: Regenerate. * infrun.c (resume): Update SOFTWARE_SINGLE_STEP call arguments. (handle_inferior_event): Call remove_single_step_breakpoints directly instead of calling SOFTWARE_SINGLE_STEP to remove breakpoints. * alpha-tdep.c (alpha_software_single_step): Update argument list. Remove handling of !insert_breakpoints_p case. * arm-tdep.c (arm_software_single_step): Likewise. * cris-tdep.c (cris_software_single_step): Likewise. * mips-tdep.c (mips_software_single_step): Likewise. * rs6000-tdep.c (rs6000_software_single_step): Likewise. * sparc-tdep.c (sparc_software_single_step): Likewise. * spu-tdep.c (spu_software_single_step): Likewise. * alpha-tdep.h (alpha_software_single_step): Update prototype. * mips-tdep.h (mips_software_single_step): Likewise. * rs6000-tdep.h (rs6000_software_single_step): Likewise. * sparc-tdep.h (sparc_software_single_step): Likewise.