* breakpoint.c (ALL_BP_LOCATIONS, ALL_BP_LOCATIONS_SAFE): New
macros.
(bp_location_chain): New variable.
(allocate_bp_location): New function.
(set_raw_breakpoint): Use it.
(delete_breakpoint): Remove ->loc from the bp_location_chain.
``requested_address''.
* breakpoint.c (breakpoint_adjustment_warning)
(adjust_breakpoint_address): New static functions.
(print_it_typical): Issue warning if breakpoint's address is different
from its requested address.
(set_raw_breakpoint, set_longjmp_resume_breakpoint, watch_command_1)
(breakpoint_re_set_one): Set breakpoint's
``requested_address'' field. Set ``address'' field to the
result of calling adjust_breakpoint_address() on the requested
address.
* breakpoint.c (until_break_command): Add new argument. Use it to
decide whether to stop only at the current frame or not.
* breakpoint.h (until_break_command): Update prototype.
* infcmd.c (until_command): Add new argument to until_break_command
call.
(advance_command): New function.
(_initialize_infcmd): Update help string for 'until' command.
Add new 'advance' command.
selected_frame_address and selected_level with field
selected_frame_id.
(save_inferior_status): Update. Use get_frame_id.
(struct restore_selected_frame_args): Delete.
(restore_selected_frame): Update. Use frame_find_by_id.
(restore_inferior_status): Update.
* breakpoint.h (struct breakpoint): Change type of
watchpoint_frame to frame_id.
* breakpoint.c (insert_breakpoints): Use frame_find_by_id. Remove
call to get_current_frame.
(do_enable_breakpoint): Use frame_find_by_id. Remove call to
get_current_frame.
(watchpoint_check): Use frame_find_by_id.
* frame.h (record_selected_frame): Delete declaration.
* stack.c (record_selected_frame): Delete function.
* frame.h (struct frame_id): Define.
(get_frame_id): Declare.
(frame_find_by_id): Declare.
* frame.c (frame_find_by_id): New function.
(get_frame_id): New function.
`enable' and `disable' identifiers, because some platforms define
in their system headers symbols with global scope that go by those
names.
* breakpoint.h (enum enable_state): Rename from `enum enable'.
Also rename all the enum members to have the "bp_" prefix.
(struct breakpoint): Rename the `enable' member to `enable_state'.
(enum bpdisp): Rename all members to have the "disp_" prefix.
* breakpoint.c: All users of `enum enable' and `enum bpdisp'
changed.
(args_for_catchpoint_enable): Rename the `enable' member to
`enable_p'. All users changed.
* tracepoint.h (enum enable): Remove.
(struct tracepoint): The member `enabled' is now `int enabled_p'.
* tracepoint.c: All users of the `enabled' member changed.
* printcmd.c (struct display): The `status' member is now an int.
* memattr.h (struct mem_region): Rename the `status' member to
`enabled_p'.
(enum enable): Remove.
* memattr.c: Change all users of the `status' member of struct
mem_region to use `enabled_p' instead.
* infcmd.c (run_stack_dummy): Use disp_del instead of del.
* go32-nat.c: Remove the kludgey work-around for conflicts between
<dos.h> and "breakpoint.h".
* tui/tuiSourceWin.c: Use disp_del instead of del.
* tui/tuiSource.c: Use disp_del instead of del.
* tui/tuiDisassem.c: Use disp_del instead of del.
its address, to decide whether it's a watchpoint or not. Zero
is a valid code address.
(update_breakpoints_after_exec): Admonishing comments.
* breakpoint.h (struct breakpoint): Doc fixes.
* breakpoint.h (enum bpdisp): Add del_at_next_stop.
* breakpoint.c (insert_breakpoints, watchpoint_check,
bpstat_stop_status): Avoid bad references to memory freed via
delete_breakpoint on watchpoints going out of scope.
Do not delete these watchpoints, disable them and change their
disposition to del_at_next_stop instead.
(breakpoint_auto_delete): Delete all breakpoints whose disposition
is del_at_next_stop.
(breakpoint_init_inferior): Use switch to avoid reference to
already deleted breakpoint.
Fixes dangling pointer problems with watchpoints.
(bpstat_what_main_action): New code BPSTAT_WHAT_THROUGH_SIGTRAMP.
* breakpoint.c (bpstat_what): Return BPSTAT_WHAT_THROUGH_SIGTRAMP
if we hit a bp_through_sigtramp breakpoint. Remove kludge which
ignored bs->stop for a bp_step_resume breakpoint.
* infrun.c (wait_for_inferior): Make a through_sigtramp_breakpoint
which performs one (the check_sigtramp2 one) of the functions
which had been handled by the step_resume_breakpoint. For each
use of the step_resume_breakpoint, make it still use the
step_resume_breakpoint, use the through_sigtramp_breakpoint, or
operate on both.
Deal with BPSTAT_WHAT_THROUGH_SIGTRAMP return from bpstat_what.
When setting the frame address of the step resume breakpoint, set
it to the address for frame *before* the call instruction is
executed, not after.
that clears the `inserted' flag for all breakpoints and deletes
any breakpoints which should go away between runs of programs.
* inflow.c (generic_mourn_inferior), infrun.c (init_wait_for_inferior),
remote-es.c (es1800_load), comments in exec.c and corelow.c:
Use it instead of mark_breakpoints_out.
* breakpoint.c (mark_breakpoints_out): Update comment, tm-rs6000.h
uses it in a completely different context.
* breakpoint.c (breakpoint_re_set_one): Add bp_call_dummy case.
Some of the following is in #ifdef CALL_DUMMY_BREAKPOINT_OFFSET.
* breakpoint.h (enum bptype): Add bp_call_dummy.
(struct bpstat_what): Add call_dummy field.
* infrun.c (wait_for_inferior): Deal with it.
* breakpoint.c (bpstat_what): Deal with call dummy breakpoint.
* infcmd.c (run_stack_dummy): Set the call dummy breakpoint.
* config/sparc/tm-sparc.h: Define CALL_DUMMY_BREAKPOINT_OFFSET.
Remove bpstat_momentary_breakpoint. This was always kludgy
and is no longer used.
* breakpoint.h: Add enum bpstat_what.
breakpoint.h (struct bpstat), breakpoint.c (bpstat_stop_status):
stop and print fields of bpstat now per-breakpoint, not just
one for the whole chain.
breakpoint.{c,h} (bpstat_what): New function.
breakpoint.h: Remove bpstat_stop and bpstat_should_print.
infrun.c: Replace switch (stop_bpstat->breakpoint_at->type)
with call to bpstat_what.
README: Remove watchpoint/breakpoint bug from known bugs.
* breakpoint.h: Prototype bpstat_find_breakpoint.
breakpoint.h, tm-sun4os4.h, tm-sparc.h, sparc-tdep.c, tm-mips.h,
mips-tdep.h, tm-sun3.h, tm-68k.h, m68k-tdep.h: Add support for
stepping (and nexting) through longjmp(). Also, cleanup
breakpoint handling quite a bit by creating explicit breakpoint
types instead of using magic breakpoint numbers.
Makefile.in: Update version to 4.4.3