diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-02-01 18:54:01 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-02-01 18:54:01 +0000 |
commit | 56c1241406fe9e7e542f30f773ae2678ab8e7055 (patch) | |
tree | 71dff20fe25be77a3234f19fe5d16439b3918eb3 /gdb/ada-operator.def | |
parent | 4be0c94123d83c68608a584f778f376cd4c11902 (diff) | |
download | gdb-56c1241406fe9e7e542f30f773ae2678ab8e7055.zip gdb-56c1241406fe9e7e542f30f773ae2678ab8e7055.tar.gz gdb-56c1241406fe9e7e542f30f773ae2678ab8e7055.tar.bz2 |
gdb/
Fix debug printing of BINOP_IN, OP_OBJC_MSGCALL,
OP_F77_UNDETERMINED_ARGLIST, OP_COMPLEX, OP_OBJC_SELECTOR, OP_NAME,
OP_OBJC_NSSTRING, OP_F90_RANGE and OP_DECFLOAT.
* ada-operator.inc: Rename the file to ...
* ada-operator.def: ... here, wrap all the entries by macro OP.
* expprint.c (op_name_standard): Remove all the entries. Include
"std-operator.def" instead.
* expression.h (enum exp_opcode): Include "std-operator.def" and
"ada-operator.def". Move all the entries ...
* std-operator.def: ... here, wrap all the entries by macro OP.
Diffstat (limited to 'gdb/ada-operator.def')
-rw-r--r-- | gdb/ada-operator.def | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/gdb/ada-operator.def b/gdb/ada-operator.def new file mode 100644 index 0000000..c3dc8e1 --- /dev/null +++ b/gdb/ada-operator.def @@ -0,0 +1,99 @@ +/* Ada language operator definitions for GDB, the GNU debugger. + + Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2007, 2008, 2009, 2010, 2011 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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, see <http://www.gnu.org/licenses/>. */ + +/* X IN A'RANGE(N). N is an immediate operand, surrounded by + BINOP_IN_BOUNDS before and after. A is an array, X an index + value. Evaluates to true iff X is within range of the Nth + dimension (1-based) of A. (A multi-dimensional array + type is represented as array of array of ...) */ +OP (BINOP_IN_BOUNDS) + +/* X IN L .. U. True iff L <= X <= U. */ +OP (TERNOP_IN_RANGE) + +/* Ada attributes ('Foo). */ +OP (OP_ATR_FIRST) +OP (OP_ATR_LAST) +OP (OP_ATR_LENGTH) +OP (OP_ATR_IMAGE) +OP (OP_ATR_MAX) +OP (OP_ATR_MIN) +OP (OP_ATR_MODULUS) +OP (OP_ATR_POS) +OP (OP_ATR_SIZE) +OP (OP_ATR_TAG) +OP (OP_ATR_VAL) + +/* Ada type qualification. It is encoded as for UNOP_CAST, above, + and denotes the TYPE'(EXPR) construct. */ +OP (UNOP_QUAL) + +/* X IN TYPE. The `TYPE' argument is immediate, with + UNOP_IN_RANGE before and after it. True iff X is a member of + type TYPE (typically a subrange). */ +OP (UNOP_IN_RANGE) + +/* An aggregate. A single immediate operand, N>0, gives + the number of component specifications that follow. The + immediate operand is followed by a second OP_AGGREGATE. + Next come N component specifications. A component + specification is either an OP_OTHERS (others=>...), an + OP_CHOICES (for named associations), or other expression (for + positional aggregates only). Aggregates currently + occur only as the right sides of assignments. */ +OP (OP_AGGREGATE) + +/* An others clause. Followed by a single expression. */ +OP (OP_OTHERS) + +/* An aggregate component association. A single immediate operand, N, + gives the number of choices that follow. This is followed by a second + OP_CHOICES operator. Next come N operands, each of which is an + expression, an OP_DISCRETE_RANGE, or an OP_NAME---the latter + for a simple name that must be a record component name and does + not correspond to a single existing symbol. After the N choice + indicators comes an expression giving the value. + + In an aggregate such as (X => E1, ...), where X is a simple + name, X could syntactically be either a component_selector_name + or an expression used as a discrete_choice, depending on the + aggregate's type context. Since this is not known at parsing + time, we don't attempt to disambiguate X if it has multiple + definitions, but instead supply an OP_NAME. If X has a single + definition, we represent it with an OP_VAR_VALUE, even though + it may turn out to be within a record aggregate. Aggregate + evaluation can use either OP_NAMEs or OP_VAR_VALUEs to get a + record field name, and can evaluate OP_VAR_VALUE normally to + get its value as an expression. Unfortunately, we lose out in + cases where X has multiple meanings and is part of an array + aggregate. I hope these are not common enough to annoy users, + who can work around the problem in any case by putting + parentheses around X. */ +OP (OP_CHOICES) + +/* A positional aggregate component association. The operator is + followed by a single integer indicating the position in the + aggregate (0-based), followed by a second OP_POSITIONAL. Next + follows a single expression giving the component value. */ +OP (OP_POSITIONAL) + +/* A range of values. Followed by two expressions giving the + upper and lower bounds of the range. */ +OP (OP_DISCRETE_RANGE) |