| Index: gdb/breakpoint.h
|
| diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
|
| index 4e4f875d14c917bf3c971c87ea0ac9b41b00c31a..be0658fc442ff3101ba57d6d3c1d661ad94b160b 100644
|
| --- a/gdb/breakpoint.h
|
| +++ b/gdb/breakpoint.h
|
| @@ -1,5 +1,5 @@
|
| /* Data structures associated with breakpoints in GDB.
|
| - Copyright (C) 1992-2004, 2007-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -24,10 +24,11 @@
|
| #include "vec.h"
|
| #include "ax.h"
|
| #include "command.h"
|
| +#include "break-common.h"
|
|
|
| struct value;
|
| struct block;
|
| -struct breakpoint_object;
|
| +struct gdbpy_breakpoint_object;
|
| struct get_number_or_range_state;
|
| struct thread_info;
|
| struct bpstats;
|
| @@ -215,15 +216,6 @@ enum bpdisp
|
| disp_donttouch /* Leave it alone */
|
| };
|
|
|
| -enum target_hw_bp_type
|
| - {
|
| - hw_write = 0, /* Common HW watchpoint */
|
| - hw_read = 1, /* Read HW watchpoint */
|
| - hw_access = 2, /* Access HW watchpoint */
|
| - hw_execute = 3 /* Execute HW breakpoint */
|
| - };
|
| -
|
| -
|
| /* Status of breakpoint conditions used when synchronizing
|
| conditions with the target. */
|
|
|
| @@ -465,13 +457,17 @@ struct bp_location
|
| it becomes 0 this location is retired. */
|
| int events_till_retirement;
|
|
|
| - /* Line number of this address. */
|
| + /* Line number which was used to place this location.
|
| +
|
| + Breakpoint placed into a comment keeps it's user specified line number
|
| + despite ADDRESS resolves into a different line number. */
|
|
|
| int line_number;
|
|
|
| - /* Source file name of this address. */
|
| + /* Symtab which was used to place this location. This is used
|
| + to find the corresponding source file name. */
|
|
|
| - char *source_file;
|
| + struct symtab *symtab;
|
| };
|
|
|
| /* This structure is a collection of function pointers that, if available,
|
| @@ -575,8 +571,7 @@ struct breakpoint_ops
|
| This function is called inside `create_breakpoint'. */
|
| void (*create_breakpoints_sal) (struct gdbarch *,
|
| struct linespec_result *,
|
| - struct linespec_sals *, char *,
|
| - char *,
|
| + char *, char *,
|
| enum bptype, enum bpdisp, int, int,
|
| int, const struct breakpoint_ops *,
|
| int, int, int, unsigned);
|
| @@ -588,6 +583,14 @@ struct breakpoint_ops
|
| This function is called inside `addr_string_to_sals'. */
|
| void (*decode_linespec) (struct breakpoint *, char **,
|
| struct symtabs_and_lines *);
|
| +
|
| + /* Return true if this breakpoint explains a signal. See
|
| + bpstat_explains_signal. */
|
| + int (*explains_signal) (struct breakpoint *, enum gdb_signal);
|
| +
|
| + /* Called after evaluating the breakpoint's condition,
|
| + and only if it evaluated true. */
|
| + void (*after_condition_true) (struct bpstats *bs);
|
| };
|
|
|
| /* Helper for breakpoint_ops->print_recreate implementations. Prints
|
| @@ -700,7 +703,8 @@ struct breakpoint
|
| there is no condition. */
|
| char *cond_string;
|
|
|
| - /* String form of extra parameters, or NULL if there are none. */
|
| + /* String form of extra parameters, or NULL if there are none.
|
| + Malloc'd. */
|
| char *extra_string;
|
|
|
| /* Holds the address of the related watchpoint_scope breakpoint
|
| @@ -733,8 +737,8 @@ struct breakpoint
|
| Python object that has been associated with this breakpoint.
|
| This is always NULL for a GDB that is not script enabled. It
|
| can sometimes be NULL for enabled GDBs as not all breakpoint
|
| - types are tracked by the Python scripting API. */
|
| - struct breakpoint_object *py_bp_object;
|
| + types are tracked by the scripting language API. */
|
| + struct gdbpy_breakpoint_object *py_bp_object;
|
| };
|
|
|
| /* An instance of this type is used to represent a watchpoint. It
|
| @@ -756,12 +760,12 @@ struct watchpoint
|
| struct expression *exp;
|
| /* The largest block within which it is valid, or NULL if it is
|
| valid anywhere (e.g. consists just of global symbols). */
|
| - struct block *exp_valid_block;
|
| + const struct block *exp_valid_block;
|
| /* The conditional expression if any. */
|
| struct expression *cond_exp;
|
| /* The largest block within which it is valid, or NULL if it is
|
| valid anywhere (e.g. consists just of global symbols). */
|
| - struct block *cond_exp_valid_block;
|
| + const struct block *cond_exp_valid_block;
|
| /* Value of the watchpoint the last time we checked it, or NULL when
|
| we do not know the value yet or the value was not readable. VAL
|
| is never lazy. */
|
| @@ -979,11 +983,10 @@ struct bpstat_what bpstat_what (bpstat);
|
| /* Find the bpstat associated with a breakpoint. NULL otherwise. */
|
| bpstat bpstat_find_breakpoint (bpstat, struct breakpoint *);
|
|
|
| -/* Nonzero if a signal that we got in wait() was due to circumstances
|
| - explained by the BS. */
|
| -/* Currently that is true if we have hit a breakpoint, or if there is
|
| - a watchpoint enabled. */
|
| -#define bpstat_explains_signal(bs) ((bs) != NULL)
|
| +/* Nonzero if a signal that we got in target_wait() was due to
|
| + circumstances explained by the bpstat; the signal is therefore not
|
| + random. */
|
| +extern int bpstat_explains_signal (bpstat, enum gdb_signal);
|
|
|
| /* Nonzero is this bpstat causes a stop. */
|
| extern int bpstat_causes_stop (bpstat);
|
| @@ -1183,7 +1186,10 @@ extern void awatch_command_wrapper (char *, int, int);
|
| extern void rwatch_command_wrapper (char *, int, int);
|
| extern void tbreak_command (char *, int);
|
|
|
| +extern struct breakpoint_ops base_breakpoint_ops;
|
| extern struct breakpoint_ops bkpt_breakpoint_ops;
|
| +extern struct breakpoint_ops tracepoint_breakpoint_ops;
|
| +extern struct breakpoint_ops dprintf_breakpoint_ops;
|
|
|
| extern void initialize_breakpoint_ops (void);
|
|
|
| @@ -1212,8 +1218,14 @@ extern void
|
| char *addr_string,
|
| const struct breakpoint_ops *ops,
|
| int tempflag,
|
| + int enabled,
|
| int from_tty);
|
|
|
| +extern void init_catchpoint (struct breakpoint *b,
|
| + struct gdbarch *gdbarch, int tempflag,
|
| + char *cond_string,
|
| + const struct breakpoint_ops *ops);
|
| +
|
| /* Add breakpoint B on the breakpoint list, and notify the user, the
|
| target and breakpoint_created observers of its existence. If
|
| INTERNAL is non-zero, the breakpoint number will be allocated from
|
| @@ -1236,7 +1248,7 @@ enum breakpoint_create_flags
|
| extern int create_breakpoint (struct gdbarch *gdbarch, char *arg,
|
| char *cond_string, int thread,
|
| char *extra_string,
|
| - int parse_condition_and_thread,
|
| + int parse_arg,
|
| int tempflag, enum bptype wanted_type,
|
| int ignore_count,
|
| enum auto_boolean pending_break_support,
|
| @@ -1284,7 +1296,7 @@ extern void update_breakpoints_after_exec (void);
|
|
|
| It is an error to use this function on the process whose id is
|
| inferior_ptid. */
|
| -extern int detach_breakpoints (int);
|
| +extern int detach_breakpoints (ptid_t ptid);
|
|
|
| /* This function is called when program space PSPACE is about to be
|
| deleted. It takes care of updating breakpoints to not reference
|
| @@ -1404,6 +1416,11 @@ extern void disable_breakpoints_in_shlibs (void);
|
| /* This function returns TRUE if ep is a catchpoint. */
|
| extern int is_catchpoint (struct breakpoint *);
|
|
|
| +/* Shared helper function (MI and CLI) for creating and installing
|
| + a shared object event catchpoint. */
|
| +extern void add_solib_catchpoint (char *arg, int is_load, int is_temp,
|
| + int enabled);
|
| +
|
| /* Enable breakpoints and delete when hit. Called with ARG == NULL
|
| deletes all breakpoints. */
|
| extern void delete_command (char *arg, int from_tty);
|
| @@ -1515,6 +1532,8 @@ extern int user_breakpoint_p (struct breakpoint *);
|
| /* Attempt to determine architecture of location identified by SAL. */
|
| extern struct gdbarch *get_sal_arch (struct symtab_and_line sal);
|
|
|
| -extern void handle_solib_event (void);
|
| +extern void breakpoint_free_objfile (struct objfile *objfile);
|
| +
|
| +extern char *ep_parse_optional_if_clause (char **arg);
|
|
|
| #endif /* !defined (BREAKPOINT_H) */
|
|
|