/* Everything about breakpoints, for GDB.
- Copyright 1986, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1986, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999, 2000
Free Software Foundation, Inc.
This file is part of GDB.
static void until_break_command_continuation (struct continuation_arg *arg);
-static void
-catch_command_1 PARAMS ((char *, int, int));
+static void catch_command_1 (char *, int, int);
-static void
-enable_delete_command PARAMS ((char *, int));
+static void enable_delete_command (char *, int);
-static void
-enable_delete_breakpoint PARAMS ((struct breakpoint *));
+static void enable_delete_breakpoint (struct breakpoint *);
-static void
-enable_once_command PARAMS ((char *, int));
+static void enable_once_command (char *, int);
-static void
-enable_once_breakpoint PARAMS ((struct breakpoint *));
+static void enable_once_breakpoint (struct breakpoint *);
-static void
-disable_command PARAMS ((char *, int));
+static void disable_command (char *, int);
-static void
-enable_command PARAMS ((char *, int));
+static void enable_command (char *, int);
-static void
-map_breakpoint_numbers PARAMS ((char *, void (*)(struct breakpoint *)));
+static void map_breakpoint_numbers (char *, void (*)(struct breakpoint *));
-static void
-ignore_command PARAMS ((char *, int));
+static void ignore_command (char *, int);
-static int breakpoint_re_set_one PARAMS ((PTR));
+static int breakpoint_re_set_one (PTR);
-static void
-clear_command PARAMS ((char *, int));
+static void clear_command (char *, int);
-static void
-catch_command PARAMS ((char *, int));
+static void catch_command (char *, int);
-static void
-handle_gnu_4_16_catch_command PARAMS ((char *, int, int));
+static void handle_gnu_4_16_catch_command (char *, int, int);
-static struct symtabs_and_lines
-get_catch_sals PARAMS ((int));
+static struct symtabs_and_lines get_catch_sals (int);
-static void
-watch_command PARAMS ((char *, int));
+static void watch_command (char *, int);
-static int
-can_use_hardware_watchpoint PARAMS ((struct value *));
+static int can_use_hardware_watchpoint (struct value *);
-static void break_at_finish_command PARAMS ((char *, int));
-static void break_at_finish_at_depth_command PARAMS ((char *, int));
+static void break_at_finish_command (char *, int);
+static void break_at_finish_at_depth_command (char *, int);
-void
-tbreak_command PARAMS ((char *, int));
+void tbreak_command (char *, int);
-static void tbreak_at_finish_command PARAMS ((char *, int));
+static void tbreak_at_finish_command (char *, int);
-static void
-break_command_1 PARAMS ((char *, int, int));
+static void break_command_1 (char *, int, int);
-static void
-mention PARAMS ((struct breakpoint *));
+static void mention (struct breakpoint *);
-struct breakpoint *
- set_raw_breakpoint PARAMS ((struct symtab_and_line));
+struct breakpoint *set_raw_breakpoint (struct symtab_and_line);
-static void
-check_duplicates PARAMS ((CORE_ADDR, asection *));
+static void check_duplicates (CORE_ADDR, asection *);
-static void
-describe_other_breakpoints PARAMS ((CORE_ADDR, asection *));
+static void describe_other_breakpoints (CORE_ADDR, asection *);
-static void
-breakpoints_info PARAMS ((char *, int));
+static void breakpoints_info (char *, int);
-static void
-breakpoint_1 PARAMS ((int, int));
+static void breakpoint_1 (int, int);
-static bpstat
- bpstat_alloc PARAMS ((struct breakpoint *, bpstat));
+static bpstat bpstat_alloc (struct breakpoint *, bpstat);
-static int breakpoint_cond_eval PARAMS ((PTR));
+static int breakpoint_cond_eval (PTR);
-static void
-cleanup_executing_breakpoints PARAMS ((PTR));
+static void cleanup_executing_breakpoints (PTR);
-static void
-commands_command PARAMS ((char *, int));
+static void commands_command (char *, int);
-static void
-condition_command PARAMS ((char *, int));
+static void condition_command (char *, int);
-static int
-get_number_trailer PARAMS ((char **, int));
+static int get_number_trailer (char **, int);
-void
-set_breakpoint_count PARAMS ((int));
+void set_breakpoint_count (int);
#if 0
-static struct breakpoint *
- create_temp_exception_breakpoint PARAMS ((CORE_ADDR));
+static struct breakpoint *create_temp_exception_breakpoint (CORE_ADDR);
#endif
typedef enum
}
insertion_state_t;
-static int
-remove_breakpoint PARAMS ((struct breakpoint *, insertion_state_t));
+static int remove_breakpoint (struct breakpoint *, insertion_state_t);
-static enum print_stop_action print_it_typical PARAMS ((bpstat));
+static enum print_stop_action print_it_typical (bpstat);
static enum print_stop_action print_bp_stop_message (bpstat bs);
}
args_for_catchpoint_enable;
-static int watchpoint_check PARAMS ((PTR));
+static int watchpoint_check (PTR);
-static int cover_target_enable_exception_callback PARAMS ((PTR));
+static int cover_target_enable_exception_callback (PTR);
-static void maintenance_info_breakpoints PARAMS ((char *, int));
+static void maintenance_info_breakpoints (char *, int);
#ifdef GET_LONGJMP_TARGET
-static void create_longjmp_breakpoint PARAMS ((char *));
+static void create_longjmp_breakpoint (char *);
#endif
-static int hw_breakpoint_used_count PARAMS ((void));
+static int hw_breakpoint_used_count (void);
-static int hw_watchpoint_used_count PARAMS ((enum bptype, int *));
+static int hw_watchpoint_used_count (enum bptype, int *);
-static void hbreak_command PARAMS ((char *, int));
+static void hbreak_command (char *, int);
-static void thbreak_command PARAMS ((char *, int));
+static void thbreak_command (char *, int);
-static void watch_command_1 PARAMS ((char *, int, int));
+static void watch_command_1 (char *, int, int);
-static void rwatch_command PARAMS ((char *, int));
+static void rwatch_command (char *, int);
-static void awatch_command PARAMS ((char *, int));
+static void awatch_command (char *, int);
-static void do_enable_breakpoint PARAMS ((struct breakpoint *, enum bpdisp));
+static void do_enable_breakpoint (struct breakpoint *, enum bpdisp);
-static void solib_load_unload_1 PARAMS ((char *hookname,
- int tempflag,
- char *dll_pathname,
- char *cond_string,
- enum bptype bp_kind));
+static void solib_load_unload_1 (char *hookname,
+ int tempflag,
+ char *dll_pathname,
+ char *cond_string, enum bptype bp_kind);
-static void create_fork_vfork_event_catchpoint PARAMS ((int tempflag,
- char *cond_string,
- enum bptype bp_kind));
+static void create_fork_vfork_event_catchpoint (int tempflag,
+ char *cond_string,
+ enum bptype bp_kind);
-static void break_at_finish_at_depth_command_1 PARAMS ((char *arg,
- int flag,
- int from_tty));
+static void break_at_finish_at_depth_command_1 (char *arg,
+ int flag, int from_tty);
-static void break_at_finish_command_1 PARAMS ((char *arg,
- int flag,
- int from_tty));
+static void break_at_finish_command_1 (char *arg, int flag, int from_tty);
-static void stop_command PARAMS ((char *arg, int from_tty));
+static void stop_command (char *arg, int from_tty);
-static void stopin_command PARAMS ((char *arg, int from_tty));
+static void stopin_command (char *arg, int from_tty);
-static void stopat_command PARAMS ((char *arg, int from_tty));
+static void stopat_command (char *arg, int from_tty);
-static char *ep_find_event_name_end PARAMS ((char *arg));
+static char *ep_find_event_name_end (char *arg);
-static char *ep_parse_optional_if_clause PARAMS ((char **arg));
+static char *ep_parse_optional_if_clause (char **arg);
-static char *ep_parse_optional_filename PARAMS ((char **arg));
+static char *ep_parse_optional_filename (char **arg);
#if defined(CHILD_INSERT_EXEC_CATCHPOINT)
-static void catch_exec_command_1 PARAMS ((char *arg, int tempflag,
- int from_tty));
+static void catch_exec_command_1 (char *arg, int tempflag, int from_tty);
#endif
-static void create_exception_catchpoint
- PARAMS ((int tempflag, char *cond_string,
- enum exception_event_kind ex_event,
- struct symtab_and_line * sal));
+static void create_exception_catchpoint
+ (int tempflag, char *cond_string,
+ enum exception_event_kind ex_event, struct symtab_and_line *sal);
-static void catch_exception_command_1
- PARAMS ((enum exception_event_kind ex_event,
- char *arg, int tempflag, int from_tty));
+static void catch_exception_command_1
+ (enum exception_event_kind ex_event, char *arg, int tempflag, int from_tty);
-static void tcatch_command PARAMS ((char *arg, int from_tty));
+static void tcatch_command (char *arg, int from_tty);
-static void ep_skip_leading_whitespace PARAMS ((char **s));
+static void ep_skip_leading_whitespace (char **s);
/* Prototypes for exported functions. */
-static void
-awatch_command PARAMS ((char *, int));
+static void awatch_command (char *, int);
-static void
-do_enable_breakpoint PARAMS ((struct breakpoint *, enum bpdisp));
+static void do_enable_breakpoint (struct breakpoint *, enum bpdisp);
/* If FALSE, gdb will not use hardware support for watchpoints, even
if such is available. */
static int can_use_hw_watchpoints;
-void _initialize_breakpoint PARAMS ((void));
+void _initialize_breakpoint (void);
-void set_breakpoint_count PARAMS ((int));
+void set_breakpoint_count (int);
extern int addressprint; /* Print machine addresses? */
/* Set breakpoint count to NUM. */
void
-set_breakpoint_count (num)
- int num;
+set_breakpoint_count (int num)
{
breakpoint_count = num;
set_internalvar (lookup_internalvar ("bpnum"),
/* Used in run_command to zero the hit count when a new run starts. */
void
-clear_breakpoint_hit_counts ()
+clear_breakpoint_hit_counts (void)
{
struct breakpoint *b;
TRAILER is a character which can be found after the number; most
commonly this is `-'. If you don't want a trailer, use \0. */
static int
-get_number_trailer (pp, trailer)
- char **pp;
- int trailer;
+get_number_trailer (char **pp, int trailer)
{
int retval = 0; /* default */
char *p = *pp;
/* Like get_number_trailer, but don't allow a trailer. */
int
-get_number (pp)
- char **pp;
+get_number (char **pp)
{
return get_number_trailer (pp, '\0');
}
*/
int
-get_number_or_range (pp)
- char **pp;
+get_number_or_range (char **pp)
{
static int last_retval, end_value;
static char *end_ptr;
/* condition N EXP -- set break condition of breakpoint N to EXP. */
static void
-condition_command (arg, from_tty)
- char *arg;
- int from_tty;
+condition_command (char *arg, int from_tty)
{
register struct breakpoint *b;
char *p;
/* ARGSUSED */
static void
-commands_command (arg, from_tty)
- char *arg;
- int from_tty;
+commands_command (char *arg, int from_tty)
{
register struct breakpoint *b;
char *p;
shadow contents, not the breakpoints themselves. From breakpoint.c. */
int
-read_memory_nobpt (memaddr, myaddr, len)
- CORE_ADDR memaddr;
- char *myaddr;
- unsigned len;
+read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len)
{
int status;
struct breakpoint *b;
or an `errno' value if could not write the inferior. */
int
-insert_breakpoints ()
+insert_breakpoints (void)
{
register struct breakpoint *b, *temp;
int return_val = 0; /* return success code. */
b->type == bp_read_watchpoint ||
b->type == bp_access_watchpoint)
&& b->enable == enabled
+ && b->disposition != del_at_next_stop
&& !b->inserted
&& !b->duplicate)
{
}
else
{
- printf_filtered ("Hardware watchpoint %d deleted", b->number);
+ printf_filtered ("Hardware watchpoint %d deleted ", b->number);
printf_filtered ("because the program has left the block \n");
printf_filtered ("in which its expression is valid.\n");
if (b->related_breakpoint)
/* Restore the frame and level. */
if ((saved_frame != selected_frame) ||
(saved_level != selected_frame_level))
- select_and_print_frame (saved_frame, saved_level);
+ select_frame (saved_frame, saved_level);
if (val)
return_val = val; /* remember failure */
int
-remove_breakpoints ()
+remove_breakpoints (void)
{
register struct breakpoint *b;
int val;
}
int
-reattach_breakpoints (pid)
- int pid;
+remove_hw_watchpoints (void)
+{
+ register struct breakpoint *b;
+ int val;
+
+ ALL_BREAKPOINTS (b)
+ {
+ if (b->inserted
+ && (b->type == bp_hardware_watchpoint
+ || b->type == bp_read_watchpoint
+ || b->type == bp_access_watchpoint))
+ {
+ val = remove_breakpoint (b, mark_uninserted);
+ if (val != 0)
+ return val;
+ }
+ }
+ return 0;
+}
+
+int
+reattach_breakpoints (int pid)
{
register struct breakpoint *b;
int val;
}
void
-update_breakpoints_after_exec ()
+update_breakpoints_after_exec (void)
{
struct breakpoint *b;
struct breakpoint *temp;
}
int
-detach_breakpoints (pid)
- int pid;
+detach_breakpoints (int pid)
{
register struct breakpoint *b;
int val;
}
static int
-remove_breakpoint (b, is)
- struct breakpoint *b;
- insertion_state_t is;
+remove_breakpoint (struct breakpoint *b, insertion_state_t is)
{
int val;
/* Clear the "inserted" flag in all breakpoints. */
void
-mark_breakpoints_out ()
+mark_breakpoints_out (void)
{
register struct breakpoint *b;
void
-breakpoint_init_inferior (context)
- enum inf_context context;
+breakpoint_init_inferior (enum inf_context context)
{
register struct breakpoint *b, *temp;
static int warning_needed = 0;
the target, to advance the PC past the breakpoint. */
enum breakpoint_here
-breakpoint_here_p (pc)
- CORE_ADDR pc;
+breakpoint_here_p (CORE_ADDR pc)
{
register struct breakpoint *b;
int any_breakpoint_here = 0;
at PC. */
int
-breakpoint_inserted_here_p (pc)
- CORE_ADDR pc;
+breakpoint_inserted_here_p (CORE_ADDR pc)
{
register struct breakpoint *b;
bp_call_dummy breakpoint. */
int
-frame_in_dummy (frame)
- struct frame_info *frame;
+frame_in_dummy (struct frame_info *frame)
{
struct breakpoint *b;
return 0;
}
-/* breakpoint_match_thread (PC, PID) returns true if the breakpoint at PC
- is valid for process/thread PID. */
+/* breakpoint_thread_match (PC, PID) returns true if the breakpoint at
+ PC is valid for process/thread PID. */
int
-breakpoint_thread_match (pc, pid)
- CORE_ADDR pc;
- int pid;
+breakpoint_thread_match (CORE_ADDR pc, int pid)
{
struct breakpoint *b;
int thread;
in breakpoint.h. */
int
-ep_is_catchpoint (ep)
- struct breakpoint *ep;
+ep_is_catchpoint (struct breakpoint *ep)
{
return
(ep->type == bp_catch_load)
}
int
-ep_is_shlib_catchpoint (ep)
- struct breakpoint *ep;
+ep_is_shlib_catchpoint (struct breakpoint *ep)
{
return
(ep->type == bp_catch_load)
}
int
-ep_is_exception_catchpoint (ep)
- struct breakpoint *ep;
+ep_is_exception_catchpoint (struct breakpoint *ep)
{
return
(ep->type == bp_catch_catch)
Also free any storage that is part of a bpstat. */
void
-bpstat_clear (bsp)
- bpstat *bsp;
+bpstat_clear (bpstat *bsp)
{
bpstat p;
bpstat q;
is part of the bpstat is copied as well. */
bpstat
-bpstat_copy (bs)
- bpstat bs;
+bpstat_copy (bpstat bs)
{
bpstat p = NULL;
bpstat tmp;
/* Find the bpstat associated with this breakpoint */
bpstat
-bpstat_find_breakpoint (bsp, breakpoint)
- bpstat bsp;
- struct breakpoint *breakpoint;
+bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
{
if (bsp == NULL)
return NULL;
See wait_for_inferior's use of this function. */
struct breakpoint *
-bpstat_find_step_resume_breakpoint (bsp)
- bpstat bsp;
+bpstat_find_step_resume_breakpoint (bpstat bsp)
{
if (bsp == NULL)
error ("Internal error (bpstat_find_step_resume_breakpoint)");
Return 0 if passed a bpstat which does not indicate any breakpoints. */
int
-bpstat_num (bsp)
- bpstat *bsp;
+bpstat_num (bpstat *bsp)
{
struct breakpoint *b;
/* Modify BS so that the actions will not be performed. */
void
-bpstat_clear_actions (bs)
- bpstat bs;
+bpstat_clear_actions (bpstat bs)
{
for (; bs != NULL; bs = bs->next)
{
/* Stub for cleaning up our state if we error-out of a breakpoint command */
/* ARGSUSED */
static void
-cleanup_executing_breakpoints (ignore)
- PTR ignore;
+cleanup_executing_breakpoints (PTR ignore)
{
executing_breakpoint_commands = 0;
}
the global "breakpoint_proceeded" after each command. */
void
-bpstat_do_actions (bsp)
- bpstat *bsp;
+bpstat_do_actions (bpstat *bsp)
{
bpstat bs;
struct cleanup *old_chain;
analysis. */
static enum print_stop_action
-print_it_typical (bs)
- bpstat bs;
+print_it_typical (bpstat bs)
{
#ifdef UI_OUT
struct cleanup *old_chain;
struct ui_stream *stb;
stb = ui_out_stream_new (uiout);
- old_chain = make_cleanup ((make_cleanup_func) ui_out_stream_delete, stb);
+ old_chain = make_cleanup_ui_out_stream_delete (stb);
#endif /* UI_OUT */
/* bs->breakpoint_at can be NULL if it was a momentary breakpoint
which has since been deleted. */
further info to be printed.*/
enum print_stop_action
-bpstat_print (bs)
- bpstat bs;
+bpstat_print (bpstat bs)
{
int val;
make it pass through catch_errors. */
static int
-breakpoint_cond_eval (exp)
- PTR exp;
+breakpoint_cond_eval (PTR exp)
{
value_ptr mark = value_mark ();
int i = !value_true (evaluate_expression ((struct expression *) exp));
/* Allocate a new bpstat and chain it to the current one. */
static bpstat
-bpstat_alloc (b, cbs)
- register struct breakpoint *b;
- bpstat cbs; /* Current "bs" value */
+bpstat_alloc (struct breakpoint *b, bpstat cbs /* Current "bs" value */ )
{
bpstat bs;
/* Check watchpoint condition. */
static int
-watchpoint_check (p)
- PTR p;
+watchpoint_check (PTR p)
{
bpstat bs = (bpstat) p;
struct breakpoint *b;
commands, FIXME??? fields. */
bpstat
-bpstat_stop_status (pc, not_a_breakpoint)
- CORE_ADDR *pc;
- int not_a_breakpoint;
+bpstat_stop_status (CORE_ADDR *pc, int not_a_breakpoint)
{
register struct breakpoint *b, *temp;
CORE_ADDR bp_addr;
/* Stop. */
break;
case WP_VALUE_CHANGED:
+ if (b->type == bp_read_watchpoint)
+ {
+ /* Don't stop: read watchpoints shouldn't fire if
+ the value has changed. This is for targets which
+ cannot set read-only watchpoints. */
+ bs->print_it = print_it_noop;
+ bs->stop = 0;
+ continue;
+ }
+ ++(b->hit_count);
+ break;
case WP_VALUE_NOT_CHANGED:
/* Stop. */
++(b->hit_count);
\f
/* Tell what to do about this bpstat. */
struct bpstat_what
-bpstat_what (bs)
- bpstat bs;
+bpstat_what (bpstat bs)
{
/* Classify each bpstat as one of the following. */
enum class
/*bp_noisy */
{sn, sn, sn, sn, sn, sn, sn, sr, ts, shl, shlr},
/*long_jump */
- {slr, ss, sn, slr, err, err, err, sr, ts, shl, shlr},
+ {slr, ss, sn, slr, slr, err, err, sr, ts, shl, shlr},
/*long_resume */
{clr, ss, sn, clrs, err, err, err, sr, ts, shl, shlr},
/*step_resume */
just to things like whether watchpoints are set. */
int
-bpstat_should_step ()
+bpstat_should_step (void)
{
struct breakpoint *b;
ALL_BREAKPOINTS (b)
/* Nonzero if there are enabled hardware watchpoints. */
int
-bpstat_have_active_hw_watchpoints ()
+bpstat_have_active_hw_watchpoints (void)
{
struct breakpoint *b;
ALL_BREAKPOINTS (b)
function returns another bpstat which contains only the catchpoints
on that first list, if any. */
void
-bpstat_get_triggered_catchpoints (ep_list, cp_list)
- bpstat ep_list;
- bpstat *cp_list;
+bpstat_get_triggered_catchpoints (bpstat ep_list, bpstat *cp_list)
{
struct bpstats root_bs[1];
bpstat bs = root_bs;
is nonzero, process only watchpoints. */
static void
-breakpoint_1 (bnum, allflag)
- int bnum;
- int allflag;
+breakpoint_1 (int bnum, int allflag)
{
register struct breakpoint *b;
CORE_ADDR last_addr = (CORE_ADDR) -1;
/* ARGSUSED */
static void
-breakpoints_info (bnum_exp, from_tty)
- char *bnum_exp;
- int from_tty;
+breakpoints_info (char *bnum_exp, int from_tty)
{
int bnum = -1;
/* ARGSUSED */
static void
-maintenance_info_breakpoints (bnum_exp, from_tty)
- char *bnum_exp;
- int from_tty;
+maintenance_info_breakpoints (char *bnum_exp, int from_tty)
{
int bnum = -1;
/* Print a message describing any breakpoints set at PC. */
static void
-describe_other_breakpoints (pc, section)
- CORE_ADDR pc;
- asection *section;
+describe_other_breakpoints (CORE_ADDR pc, asection *section)
{
register int others = 0;
register struct breakpoint *b;
for the `break' command with no arguments. */
void
-set_default_breakpoint (valid, addr, symtab, line)
- int valid;
- CORE_ADDR addr;
- struct symtab *symtab;
- int line;
+set_default_breakpoint (int valid, CORE_ADDR addr, struct symtab *symtab,
+ int line)
{
default_breakpoint_valid = valid;
default_breakpoint_address = addr;
the official one, and the rest as duplicates. */
static void
-check_duplicates (address, section)
- CORE_ADDR address;
- asection *section;
+check_duplicates (CORE_ADDR address, asection *section)
{
register struct breakpoint *b;
register int count = 0;
your arguments BEFORE calling this routine! */
struct breakpoint *
-set_raw_breakpoint (sal)
- struct symtab_and_line sal;
+set_raw_breakpoint (struct symtab_and_line sal)
{
register struct breakpoint *b, *b1;
#ifdef GET_LONGJMP_TARGET
static void
-create_longjmp_breakpoint (func_name)
- char *func_name;
+create_longjmp_breakpoint (char *func_name)
{
struct symtab_and_line sal;
struct breakpoint *b;
set_longjmp_resume_breakpoint() to figure out where we are going. */
void
-enable_longjmp_breakpoint ()
+enable_longjmp_breakpoint (void)
{
register struct breakpoint *b;
}
void
-disable_longjmp_breakpoint ()
+disable_longjmp_breakpoint (void)
{
register struct breakpoint *b;
}
struct breakpoint *
-create_thread_event_breakpoint (address)
- CORE_ADDR address;
+create_thread_event_breakpoint (CORE_ADDR address)
{
struct breakpoint *b;
struct symtab_and_line sal;
#ifdef SOLIB_ADD
void
-remove_solib_event_breakpoints ()
+remove_solib_event_breakpoints (void)
{
register struct breakpoint *b, *temp;
}
struct breakpoint *
-create_solib_event_breakpoint (address)
- CORE_ADDR address;
+create_solib_event_breakpoint (CORE_ADDR address)
{
struct breakpoint *b;
struct symtab_and_line sal;
apply to enabled breakpoints, disabled ones can just stay disabled. */
void
-disable_breakpoints_in_shlibs (silent)
- int silent;
+disable_breakpoints_in_shlibs (int silent)
{
struct breakpoint *b;
int disabled_shlib_breaks = 0;
/* Try to reenable any breakpoints in shared libraries. */
void
-re_enable_breakpoints_in_shlibs ()
+re_enable_breakpoints_in_shlibs (void)
{
struct breakpoint *b;
#endif
static void
-solib_load_unload_1 (hookname, tempflag, dll_pathname, cond_string, bp_kind)
- char *hookname;
- int tempflag;
- char *dll_pathname;
- char *cond_string;
- enum bptype bp_kind;
+solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname,
+ char *cond_string, enum bptype bp_kind)
{
struct breakpoint *b;
struct symtabs_and_lines sals;
}
void
-create_solib_load_event_breakpoint (hookname, tempflag,
- dll_pathname, cond_string)
- char *hookname;
- int tempflag;
- char *dll_pathname;
- char *cond_string;
+create_solib_load_event_breakpoint (char *hookname, int tempflag,
+ char *dll_pathname, char *cond_string)
{
solib_load_unload_1 (hookname, tempflag, dll_pathname,
cond_string, bp_catch_load);
}
void
-create_solib_unload_event_breakpoint (hookname, tempflag,
- dll_pathname, cond_string)
- char *hookname;
- int tempflag;
- char *dll_pathname;
- char *cond_string;
+create_solib_unload_event_breakpoint (char *hookname, int tempflag,
+ char *dll_pathname, char *cond_string)
{
solib_load_unload_1 (hookname,tempflag, dll_pathname,
cond_string, bp_catch_unload);
}
static void
-create_fork_vfork_event_catchpoint (tempflag, cond_string, bp_kind)
- int tempflag;
- char *cond_string;
- enum bptype bp_kind;
+create_fork_vfork_event_catchpoint (int tempflag, char *cond_string,
+ enum bptype bp_kind)
{
struct symtab_and_line sal;
struct breakpoint *b;
}
void
-create_fork_event_catchpoint (tempflag, cond_string)
- int tempflag;
- char *cond_string;
+create_fork_event_catchpoint (int tempflag, char *cond_string)
{
create_fork_vfork_event_catchpoint (tempflag, cond_string, bp_catch_fork);
}
void
-create_vfork_event_catchpoint (tempflag, cond_string)
- int tempflag;
- char *cond_string;
+create_vfork_event_catchpoint (int tempflag, char *cond_string)
{
create_fork_vfork_event_catchpoint (tempflag, cond_string, bp_catch_vfork);
}
void
-create_exec_event_catchpoint (tempflag, cond_string)
- int tempflag;
- char *cond_string;
+create_exec_event_catchpoint (int tempflag, char *cond_string)
{
struct symtab_and_line sal;
struct breakpoint *b;
}
static int
-hw_breakpoint_used_count ()
+hw_breakpoint_used_count (void)
{
register struct breakpoint *b;
int i = 0;
}
static int
-hw_watchpoint_used_count (type, other_type_used)
- enum bptype type;
- int *other_type_used;
+hw_watchpoint_used_count (enum bptype type, int *other_type_used)
{
register struct breakpoint *b;
int i = 0;
that gets deleted automatically... */
void
-set_longjmp_resume_breakpoint (pc, frame)
- CORE_ADDR pc;
- struct frame_info *frame;
+set_longjmp_resume_breakpoint (CORE_ADDR pc, struct frame_info *frame)
{
register struct breakpoint *b;
}
void
-disable_watchpoints_before_interactive_call_start ()
+disable_watchpoints_before_interactive_call_start (void)
{
struct breakpoint *b;
}
void
-enable_watchpoints_after_interactive_call_stop ()
+enable_watchpoints_after_interactive_call_stop (void)
{
struct breakpoint *b;
Restrict it to frame FRAME if FRAME is nonzero. */
struct breakpoint *
-set_momentary_breakpoint (sal, frame, type)
- struct symtab_and_line sal;
- struct frame_info *frame;
- enum bptype type;
+set_momentary_breakpoint (struct symtab_and_line sal, struct frame_info *frame,
+ enum bptype type)
{
register struct breakpoint *b;
b = set_raw_breakpoint (sal);
/* Tell the user we have just set a breakpoint B. */
static void
-mention (b)
- struct breakpoint *b;
+mention (struct breakpoint *b)
{
int say_where = 0;
#ifdef UI_OUT
struct ui_stream *stb;
stb = ui_out_stream_new (uiout);
- old_chain = make_cleanup ((make_cleanup_func) ui_out_stream_delete, stb);
+ old_chain = make_cleanup_ui_out_stream_delete (stb);
#endif /* UI_OUT */
/* FIXME: This is misplaced; mention() is called by things (like hitting a
second bit : 0 normal breakpoint, 1 hardware breakpoint. */
static void
-break_command_1 (arg, flag, from_tty)
- char *arg;
- int flag, from_tty;
+break_command_1 (char *arg, int flag, int from_tty)
{
int tempflag, hardwareflag;
struct symtabs_and_lines sals;
static void
-break_at_finish_at_depth_command_1 (arg, flag, from_tty)
- char *arg;
- int flag;
- int from_tty;
+break_at_finish_at_depth_command_1 (char *arg, int flag, int from_tty)
{
struct frame_info *frame;
CORE_ADDR low, high, selected_pc = 0;
static void
-break_at_finish_command_1 (arg, flag, from_tty)
- char *arg;
- int flag;
- int from_tty;
+break_at_finish_command_1 (char *arg, int flag, int from_tty)
{
char *addr_string, *break_string, *beg_addr_string;
CORE_ADDR low, high;
/* Helper function for break_command_1 and disassemble_command. */
void
-resolve_sal_pc (sal)
- struct symtab_and_line *sal;
+resolve_sal_pc (struct symtab_and_line *sal)
{
CORE_ADDR pc;
}
void
-break_command (arg, from_tty)
- char *arg;
- int from_tty;
+break_command (char *arg, int from_tty)
{
break_command_1 (arg, 0, from_tty);
}
static void
-break_at_finish_command (arg, from_tty)
- char *arg;
- int from_tty;
+break_at_finish_command (char *arg, int from_tty)
{
break_at_finish_command_1 (arg, 0, from_tty);
}
static void
-break_at_finish_at_depth_command (arg, from_tty)
- char *arg;
- int from_tty;
+break_at_finish_at_depth_command (char *arg, int from_tty)
{
break_at_finish_at_depth_command_1 (arg, 0, from_tty);
}
void
-tbreak_command (arg, from_tty)
- char *arg;
- int from_tty;
+tbreak_command (char *arg, int from_tty)
{
break_command_1 (arg, BP_TEMPFLAG, from_tty);
}
static void
-tbreak_at_finish_command (arg, from_tty)
- char *arg;
- int from_tty;
+tbreak_at_finish_command (char *arg, int from_tty)
{
break_at_finish_command_1 (arg, BP_TEMPFLAG, from_tty);
}
static void
-hbreak_command (arg, from_tty)
- char *arg;
- int from_tty;
+hbreak_command (char *arg, int from_tty)
{
break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
}
static void
-thbreak_command (arg, from_tty)
- char *arg;
- int from_tty;
+thbreak_command (char *arg, int from_tty)
{
break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
}
static void
-stop_command (arg, from_tty)
- char *arg;
- int from_tty;
+stop_command (char *arg, int from_tty)
{
printf_filtered ("Specify the type of breakpoint to set.\n\
Usage: stop in <function | address>\n\
}
static void
-stopin_command (arg, from_tty)
- char *arg;
- int from_tty;
+stopin_command (char *arg, int from_tty)
{
int badInput = 0;
}
static void
-stopat_command (arg, from_tty)
- char *arg;
- int from_tty;
+stopat_command (char *arg, int from_tty)
{
int badInput = 0;
hw_read: watch read,
hw_access: watch access (read or write) */
static void
-watch_command_1 (arg, accessflag, from_tty)
- char *arg;
- int accessflag;
- int from_tty;
+watch_command_1 (char *arg, int accessflag, int from_tty)
{
struct breakpoint *b;
struct symtab_and_line sal;
#endif
static int
-can_use_hardware_watchpoint (v)
- struct value *v;
+can_use_hardware_watchpoint (struct value *v)
{
int found_memory_cnt = 0;
struct value *head = v;
#ifdef UI_OUT
void
-watch_command_wrapper (arg, from_tty)
- char *arg;
- int from_tty;
+watch_command_wrapper (char *arg, int from_tty)
{
watch_command (arg, from_tty);
}
#endif
static void
-watch_command (arg, from_tty)
- char *arg;
- int from_tty;
+watch_command (char *arg, int from_tty)
{
watch_command_1 (arg, hw_write, from_tty);
}
#ifdef UI_OUT
void
-rwatch_command_wrapper (arg, from_tty)
- char *arg;
- int from_tty;
+rwatch_command_wrapper (char *arg, int from_tty)
{
rwatch_command (arg, from_tty);
}
#endif
static void
-rwatch_command (arg, from_tty)
- char *arg;
- int from_tty;
+rwatch_command (char *arg, int from_tty)
{
watch_command_1 (arg, hw_read, from_tty);
}
#ifdef UI_OUT
void
-awatch_command_wrapper (arg, from_tty)
- char *arg;
- int from_tty;
+awatch_command_wrapper (char *arg, int from_tty)
{
awatch_command (arg, from_tty);
}
#endif
static void
-awatch_command (arg, from_tty)
- char *arg;
- int from_tty;
+awatch_command (char *arg, int from_tty)
{
watch_command_1 (arg, hw_access, from_tty);
}
{
struct cleanup *cleanups;
- cleanups = (struct cleanup *) arg->data;
+ cleanups = (struct cleanup *) arg->data.pointer;
do_exec_cleanups (cleanups);
}
/* ARGSUSED */
void
-until_break_command (arg, from_tty)
- char *arg;
- int from_tty;
+until_break_command (char *arg, int from_tty)
{
struct symtabs_and_lines sals;
struct symtab_and_line sal;
breakpoint = set_momentary_breakpoint (sal, selected_frame, bp_until);
if (!event_loop_p || !target_can_async_p ())
- old_chain = make_cleanup ((make_cleanup_func) delete_breakpoint,
- breakpoint);
+ old_chain = make_cleanup_delete_breakpoint (breakpoint);
else
- old_chain = make_exec_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ old_chain = make_exec_cleanup_delete_breakpoint (breakpoint);
/* If we are running asynchronously, and the target supports async
execution, we are not waiting for the target to stop, in the call
the exec_cleanup_chain. */
arg1 =
(struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
- arg1->next = NULL;
- arg1->data = (PTR) old_chain;
+ arg1->next = NULL;
+ arg1->data.pointer = old_chain;
add_continuation (until_break_command_continuation, arg1);
}
sal.pc = prev_frame->pc;
breakpoint = set_momentary_breakpoint (sal, prev_frame, bp_until);
if (!event_loop_p || !target_can_async_p ())
- make_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ make_cleanup_delete_breakpoint (breakpoint);
else
- make_exec_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ make_exec_cleanup_delete_breakpoint (breakpoint);
}
proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
/* These aren't used; I don't konw what they were for. */
/* Set a breakpoint at the catch clause for NAME. */
static int
-catch_breakpoint (name)
- char *name;
+catch_breakpoint (char *name)
{
}
static int
-disable_catch_breakpoint ()
+disable_catch_breakpoint (void)
{
}
static int
-delete_catch_breakpoint ()
+delete_catch_breakpoint (void)
{
}
static int
-enable_catch_breakpoint ()
+enable_catch_breakpoint (void)
{
}
#endif /* 0 */
/* For each catch clause identified in ARGS, run FUNCTION
with that clause as an argument. */
static struct symtabs_and_lines
-map_catch_names (args, function)
- char *args;
- int (*function) ();
+map_catch_names (char *args, int (*function) ())
{
register char *p = args;
register char *p1;
/* This shares a lot of code with `print_frame_label_vars' from stack.c. */
static struct symtabs_and_lines
-get_catch_sals (this_level_only)
- int this_level_only;
+get_catch_sals (int this_level_only)
{
register struct blockvector *bl;
register struct block *block;
}
static void
-ep_skip_leading_whitespace (s)
- char **s;
+ep_skip_leading_whitespace (char **s)
{
if ((s == NULL) || (*s == NULL))
return;
the token is returned. Else, NULL is returned. */
static char *
-ep_find_event_name_end (arg)
- char *arg;
+ep_find_event_name_end (char *arg)
{
char *s = arg;
char *event_name_end = NULL;
if clause in the arg string. */
static char *
-ep_parse_optional_if_clause (arg)
- char **arg;
+ep_parse_optional_if_clause (char **arg)
{
char *cond_string;
Note that clients needing to preserve the returned filename for
future access should copy it to their own buffers. */
static char *
-ep_parse_optional_filename (arg)
- char **arg;
+ep_parse_optional_filename (char **arg)
{
static char filename[1024];
char *arg_p = *arg;
catch_fork_kind;
#if defined(CHILD_INSERT_FORK_CATCHPOINT) || defined(CHILD_INSERT_VFORK_CATCHPOINT)
-static void catch_fork_command_1 PARAMS ((catch_fork_kind fork_kind,
- char *arg,
- int tempflag,
- int from_tty));
+static void catch_fork_command_1 (catch_fork_kind fork_kind,
+ char *arg, int tempflag, int from_tty);
static void
-catch_fork_command_1 (fork_kind, arg, tempflag, from_tty)
- catch_fork_kind fork_kind;
- char *arg;
- int tempflag;
- int from_tty;
+catch_fork_command_1 (catch_fork_kind fork_kind, char *arg, int tempflag,
+ int from_tty)
{
char *cond_string = NULL;
#if defined(CHILD_INSERT_EXEC_CATCHPOINT)
static void
-catch_exec_command_1 (arg, tempflag, from_tty)
- char *arg;
- int tempflag;
- int from_tty;
+catch_exec_command_1 (char *arg, int tempflag, int from_tty)
{
char *cond_string = NULL;
#if defined(SOLIB_ADD)
static void
-catch_load_command_1 (arg, tempflag, from_tty)
- char *arg;
- int tempflag;
- int from_tty;
+catch_load_command_1 (char *arg, int tempflag, int from_tty)
{
char *dll_pathname = NULL;
char *cond_string = NULL;
}
static void
-catch_unload_command_1 (arg, tempflag, from_tty)
- char *arg;
- int tempflag;
- int from_tty;
+catch_unload_command_1 (char *arg, int tempflag, int from_tty)
{
char *dll_pathname = NULL;
char *cond_string = NULL;
exception event callback */
static void
-create_exception_catchpoint (tempflag, cond_string, ex_event, sal)
- int tempflag;
- char *cond_string;
- enum exception_event_kind ex_event;
- struct symtab_and_line *sal;
+create_exception_catchpoint (int tempflag, char *cond_string,
+ enum exception_event_kind ex_event,
+ struct symtab_and_line *sal)
{
struct breakpoint *b;
int thread = -1; /* All threads. */
/* Deal with "catch catch" and "catch throw" commands */
static void
-catch_exception_command_1 (ex_event, arg, tempflag, from_tty)
- enum exception_event_kind ex_event;
- char *arg;
- int tempflag;
- int from_tty;
+catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
+ int tempflag, int from_tty)
{
char *cond_string = NULL;
struct symtab_and_line *sal = NULL;
inside a catch_errors */
static int
-cover_target_enable_exception_callback (arg)
- PTR arg;
+cover_target_enable_exception_callback (PTR arg)
{
args_for_catchpoint_enable *args = arg;
struct symtab_and_line *sal;
static void
-handle_gnu_4_16_catch_command (arg, tempflag, from_tty)
- char *arg;
- int tempflag;
- int from_tty;
+handle_gnu_4_16_catch_command (char *arg, int tempflag, int from_tty)
{
/* First, translate ARG into something we can deal with in terms
of breakpoints. */
/* This creates a temporary internal breakpoint
just to placate infrun */
static struct breakpoint *
-create_temp_exception_breakpoint (pc)
- CORE_ADDR pc;
+create_temp_exception_breakpoint (CORE_ADDR pc)
{
struct symtab_and_line sal;
struct breakpoint *b;
#endif
static void
-catch_command_1 (arg, tempflag, from_tty)
- char *arg;
- int tempflag;
- int from_tty;
+catch_command_1 (char *arg, int tempflag, int from_tty)
{
/* The first argument may be an event name, such as "start" or "load".
/* Used by the gui, could be made a worker for other things. */
struct breakpoint *
-set_breakpoint_sal (sal)
- struct symtab_and_line sal;
+set_breakpoint_sal (struct symtab_and_line sal)
{
struct breakpoint *b;
b = set_raw_breakpoint (sal);
/* These aren't used; I don't know what they were for. */
/* Disable breakpoints on all catch clauses described in ARGS. */
static void
-disable_catch (args)
- char *args;
+disable_catch (char *args)
{
/* Map the disable command to catch clauses described in ARGS. */
}
/* Enable breakpoints on all catch clauses described in ARGS. */
static void
-enable_catch (args)
- char *args;
+enable_catch (char *args)
{
/* Map the disable command to catch clauses described in ARGS. */
}
/* Delete breakpoints on all catch clauses in the active scope. */
static void
-delete_catch (args)
- char *args;
+delete_catch (char *args)
{
/* Map the delete command to catch clauses described in ARGS. */
}
#endif /* 0 */
static void
-catch_command (arg, from_tty)
- char *arg;
- int from_tty;
+catch_command (char *arg, int from_tty)
{
catch_command_1 (arg, 0, from_tty);
}
\f
static void
-tcatch_command (arg, from_tty)
- char *arg;
- int from_tty;
+tcatch_command (char *arg, int from_tty)
{
catch_command_1 (arg, 1, from_tty);
}
static void
-clear_command (arg, from_tty)
- char *arg;
- int from_tty;
+clear_command (char *arg, int from_tty)
{
register struct breakpoint *b, *b1;
int default_match;
This is called after any breakpoint is hit, or after errors. */
void
-breakpoint_auto_delete (bs)
- bpstat bs;
+breakpoint_auto_delete (bpstat bs)
{
struct breakpoint *b, *temp;
structures. */
void
-delete_breakpoint (bpt)
- struct breakpoint *bpt;
+delete_breakpoint (struct breakpoint *bpt)
{
register struct breakpoint *b;
register bpstat bs;
free ((PTR) bpt);
}
+static void
+do_delete_breakpoint_cleanup (void *b)
+{
+ delete_breakpoint (b);
+}
+
+struct cleanup *
+make_cleanup_delete_breakpoint (struct breakpoint *b)
+{
+ return make_cleanup (do_delete_breakpoint_cleanup, b);
+}
+
+struct cleanup *
+make_exec_cleanup_delete_breakpoint (struct breakpoint *b)
+{
+ return make_exec_cleanup (do_delete_breakpoint_cleanup, b);
+}
+
void
-delete_command (arg, from_tty)
- char *arg;
- int from_tty;
+delete_command (char *arg, int from_tty)
{
struct breakpoint *b, *temp;
Unused in this case. */
static int
-breakpoint_re_set_one (bint)
- PTR bint;
+breakpoint_re_set_one (PTR bint)
{
/* get past catch_errs */
struct breakpoint *b = (struct breakpoint *) bint;
/* Re-set all breakpoints after symbols have been re-loaded. */
void
-breakpoint_re_set ()
+breakpoint_re_set (void)
{
struct breakpoint *b, *temp;
enum language save_language;
- If the breakpoint is for all threads, leave it as-is.
- Else, reset it to the current thread for inferior_pid. */
void
-breakpoint_re_set_thread (b)
- struct breakpoint *b;
+breakpoint_re_set_thread (struct breakpoint *b)
{
if (b->thread != -1)
{
}
void
-set_ignore_count (bptnum, count, from_tty)
- int bptnum, count, from_tty;
+set_ignore_count (int bptnum, int count, int from_tty)
{
register struct breakpoint *b;
/* Clear the ignore counts of all breakpoints. */
void
-breakpoint_clear_ignore_counts ()
+breakpoint_clear_ignore_counts (void)
{
struct breakpoint *b;
/* Command to set ignore-count of breakpoint N to COUNT. */
static void
-ignore_command (args, from_tty)
- char *args;
- int from_tty;
+ignore_command (char *args, int from_tty)
{
char *p = args;
register int num;
whose numbers are given in ARGS. */
static void
-map_breakpoint_numbers (args, function)
- char *args;
- void (*function) PARAMS ((struct breakpoint *));
+map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *))
{
register char *p = args;
char *p1;
}
void
-disable_breakpoint (bpt)
- struct breakpoint *bpt;
+disable_breakpoint (struct breakpoint *bpt)
{
/* Never disable a watchpoint scope breakpoint; we want to
hit them when we leave scope so we can delete both the
/* ARGSUSED */
static void
-disable_command (args, from_tty)
- char *args;
- int from_tty;
+disable_command (char *args, int from_tty)
{
register struct breakpoint *bpt;
if (args == 0)
}
static void
-do_enable_breakpoint (bpt, disposition)
- struct breakpoint *bpt;
- enum bpdisp disposition;
+do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition)
{
struct frame_info *save_selected_frame = NULL;
int save_selected_frame_level = -1;
}
if (save_selected_frame_level >= 0)
- select_and_print_frame (save_selected_frame,
- save_selected_frame_level);
+ select_frame (save_selected_frame, save_selected_frame_level);
value_free_to_mark (mark);
}
if (modify_breakpoint_hook)
}
void
-enable_breakpoint (bpt)
- struct breakpoint *bpt;
+enable_breakpoint (struct breakpoint *bpt)
{
do_enable_breakpoint (bpt, bpt->disposition);
}
/* ARGSUSED */
static void
-enable_command (args, from_tty)
- char *args;
- int from_tty;
+enable_command (char *args, int from_tty)
{
register struct breakpoint *bpt;
if (args == 0)
}
static void
-enable_once_breakpoint (bpt)
- struct breakpoint *bpt;
+enable_once_breakpoint (struct breakpoint *bpt)
{
do_enable_breakpoint (bpt, disable);
}
/* ARGSUSED */
static void
-enable_once_command (args, from_tty)
- char *args;
- int from_tty;
+enable_once_command (char *args, int from_tty)
{
map_breakpoint_numbers (args, enable_once_breakpoint);
}
static void
-enable_delete_breakpoint (bpt)
- struct breakpoint *bpt;
+enable_delete_breakpoint (struct breakpoint *bpt)
{
do_enable_breakpoint (bpt, del);
}
/* ARGSUSED */
static void
-enable_delete_command (args, from_tty)
- char *args;
- int from_tty;
+enable_delete_command (char *args, int from_tty)
{
map_breakpoint_numbers (args, enable_delete_breakpoint);
}
/* Use default_breakpoint_'s, or nothing if they aren't valid. */
struct symtabs_and_lines
-decode_line_spec_1 (string, funfirstline)
- char *string;
- int funfirstline;
+decode_line_spec_1 (char *string, int funfirstline)
{
struct symtabs_and_lines sals;
if (string == 0)
}
\f
void
-_initialize_breakpoint ()
+_initialize_breakpoint (void)
{
struct cmd_list_element *c;