aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/breakpoint.h')
-rw-r--r--gdb/breakpoint.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index 07e3fc9..7e8c597 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -22,6 +22,7 @@
#include "frame.h"
#include "value.h"
#include "vec.h"
+#include "ax.h"
struct value;
struct block;
@@ -215,6 +216,16 @@ enum target_hw_bp_type
};
+/* Status of breakpoint conditions used when synchronizing
+ conditions with the target. */
+
+enum condition_status
+ {
+ condition_unchanged = 0,
+ condition_modified,
+ condition_updated
+ };
+
/* Information used by targets to insert and remove breakpoints. */
struct bp_target_info
@@ -249,6 +260,10 @@ struct bp_target_info
(e.g. if a remote stub handled the details). We may still need
the size to remove the breakpoint safely. */
int placed_size;
+
+ /* Vector of conditions the target should evaluate if it supports target-side
+ breakpoint conditions. */
+ VEC(agent_expr_p) *conditions;
};
/* GDB maintains two types of information about each breakpoint (or
@@ -315,6 +330,30 @@ struct bp_location
the owner breakpoint object. */
struct expression *cond;
+ /* Conditional expression in agent expression
+ bytecode form. This is used for stub-side breakpoint
+ condition evaluation. */
+ struct agent_expr *cond_bytecode;
+
+ /* Signals that the condition has changed since the last time
+ we updated the global location list. This means the condition
+ needs to be sent to the target again. This is used together
+ with target-side breakpoint conditions.
+
+ condition_unchanged: It means there has been no condition changes.
+
+ condition_modified: It means this location had its condition modified.
+
+ condition_updated: It means we already marked all the locations that are
+ duplicates of this location and thus we don't need to call
+ force_breakpoint_reinsertion (...) for this location. */
+
+ enum condition_status condition_changed;
+
+ /* Signals that breakpoint conditions need to be re-synched with the
+ target. This has no use other than target-side breakpoints. */
+ char needs_update;
+
/* This location's address is in an unloaded solib, and so this
location should not be inserted. It will be automatically
enabled when that solib is loaded. */
@@ -726,6 +765,11 @@ struct watchpoint
CORE_ADDR hw_wp_mask;
};
+/* Return true if BPT is either a software breakpoint or a hardware
+ breakpoint. */
+
+extern int is_breakpoint (const struct breakpoint *bpt);
+
/* Returns true if BPT is really a watchpoint. */
extern int is_watchpoint (const struct breakpoint *bpt);