/* Definitions for expressions designed to be executed on the agent
- Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
This file is part of GDB.
#define AGENTEXPR_H
#include "doublest.h" /* For DOUBLEST. */
+#include "vec.h"
/* It's sometimes useful to be able to debug programs that you can't
really stop for more than a fraction of a second. To this end, the
*/
int reg_mask_len;
unsigned char *reg_mask;
+
+ /* For the data tracing facility, we need to insert `trace' bytecodes
+ before each data fetch; this records all the memory that the
+ expression touches in the course of evaluation, so that memory will
+ be available when the user later tries to evaluate the expression
+ in GDB.
+
+ Setting the flag 'tracing' to non-zero enables the code that
+ emits the trace bytecodes at the appropriate points. */
+
+ unsigned int tracing : 1;
+
+ /* This indicates that pointers to chars should get an added
+ tracenz bytecode to record nonzero bytes, up to a length that
+ is the value of trace_string. */
+
+ int trace_string;
};
+/* Pointer to an agent_expr structure. */
+typedef struct agent_expr *agent_expr_p;
+
+/* Vector of pointers to agent expressions. */
+DEF_VEC_P (agent_expr_p);
+
/* The actual values of the various bytecode operations. */
enum agent_op
/* Assemble code to operate on a trace state variable. */
extern void ax_tsv (struct agent_expr *expr, enum agent_op op, int num);
-extern void ax_memcpy (struct agent_expr *x, const void *src, size_t n);
+/* Append a string to the bytecode stream. */
+extern void ax_string (struct agent_expr *x, const char *str, int slen);
\f
/* Functions for printing out expressions, and otherwise debugging