X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fax-gdb.h;h=dacacfc9ce578ba79a741efa11cd118e0e6d6b35;hb=b1b53fb3ef077bf4412da53f0057b9c0e9ed4f3e;hp=3764b692e6426da93d8cb2859fba21a5cc3cf6e3;hpb=abd8680d6efd97e7ba848a6392ee3ad72be18cd0;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ax-gdb.h b/gdb/ax-gdb.h index 3764b692e6..dacacfc9ce 100644 --- a/gdb/ax-gdb.h +++ b/gdb/ax-gdb.h @@ -1,11 +1,11 @@ /* GDB-specific functions for operating on agent expressions - Copyright 1998 Free Software Foundation, Inc. + Copyright (C) 1998-2016 Free Software Foundation, Inc. This file is part of GDB. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -14,13 +14,13 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #ifndef AX_GDB_H #define AX_GDB_H - + +struct expression; +union exp_element; /* Types and enums */ @@ -78,9 +78,13 @@ struct axs_value /* 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 */ @@ -92,23 +96,32 @@ struct axs_value /* Translating GDB expressions into agent expressions. */ -/* Given a GDB expression EXPR, translate it into the agent bytecode, - and return it. FLAGS are from enum expr_to_agent_flags. */ -extern struct agent_expr *expr_to_agent PARAMS ((struct expression * EXPR, - struct axs_value * VALUE)); - -/* Given a GDB expression EXPR denoting an lvalue in memory, produce a - string of agent bytecode which will leave its address and size on - the top of stack. Return the agent expression. */ -extern struct agent_expr *expr_to_address_and_size - PARAMS ((struct expression * EXPR)); - /* Given a GDB expression EXPR, return bytecode to trace its value. The result will use the `trace' and `trace_quick' bytecodes to 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 PARAMS ((CORE_ADDR, - struct expression *)); +extern struct agent_expr *gen_trace_for_expr (CORE_ADDR, struct expression *, + int); + +extern struct agent_expr *gen_trace_for_var (CORE_ADDR, struct gdbarch *, + struct symbol *, int); + +extern struct agent_expr *gen_trace_for_return_address (CORE_ADDR, + struct gdbarch *, + int); + +extern struct agent_expr *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); + +struct format_piece; +extern struct agent_expr *gen_printf (CORE_ADDR, struct gdbarch *, + CORE_ADDR, LONGEST, const char *, int, + struct format_piece *, + int, struct expression **); #endif /* AX_GDB_H */