/* GDB-specific functions for operating on agent expressions
- Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1998-2020 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
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 struct agent_expr *gen_trace_for_var (CORE_ADDR, struct gdbarch *,
- struct symbol *);
+extern void require_rvalue (struct agent_expr *ax, struct axs_value *value);
-extern struct agent_expr *gen_eval_for_expr (CORE_ADDR, struct expression *);
+extern agent_expr_up gen_printf (CORE_ADDR, struct gdbarch *,
+ CORE_ADDR, LONGEST, const char *, int,
+ int, struct expression **);
#endif /* AX_GDB_H */