/* GDB-specific functions for operating on agent expressions
- Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009
- Free Software Foundation, Inc.
+ Copyright (C) 1998-2017 Free Software Foundation, Inc.
This file is part of GDB.
#ifndef AX_GDB_H
#define AX_GDB_H
+#include "ax.h" /* For agent_expr_up. */
+
struct expression;
+union exp_element;
/* Types and enums */
/* The type of the subexpression. Even if lvalue == axs_lvalue_memory,
this is the type of the value itself; the value on the stack is a
- "pointer to" an object of this type. */
+ "pointer to" an object of this type. */
struct type *type;
+ /* If nonzero, this is a variable which does not actually exist in
+ the program. */
+ char optimized_out;
+
union
{
/* if kind == axs_lvalue_register, this is the register number */
record the value of all memory touched by the expression, and leave
no values on the stack. The caller can then use the ax_reqs
function to discover which registers the expression uses. */
-extern struct agent_expr *gen_trace_for_expr (CORE_ADDR, struct expression *);
+extern agent_expr_up gen_trace_for_expr (CORE_ADDR, struct expression *,
+ int);
+
+extern agent_expr_up gen_trace_for_var (CORE_ADDR, struct gdbarch *,
+ struct symbol *, int);
+
+extern agent_expr_up gen_trace_for_return_address (CORE_ADDR,
+ struct gdbarch *,
+ int);
+
+extern agent_expr_up gen_eval_for_expr (CORE_ADDR, struct expression *);
+
+extern void gen_expr (struct expression *exp, union exp_element **pc,
+ struct agent_expr *ax, struct axs_value *value);
+
+extern void require_rvalue (struct agent_expr *ax, struct axs_value *value);
+
+extern agent_expr_up gen_printf (CORE_ADDR, struct gdbarch *,
+ CORE_ADDR, LONGEST, const char *, int,
+ int, struct expression **);
#endif /* AX_GDB_H */