1 /* GDB-specific functions for operating on agent expressions.
3 Copyright (C) 1998, 1999, 2000, 2001, 2003, 2007, 2008, 2009, 2010, 2011
4 Free Software Foundation, Inc.
6 This file is part of GDB.
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
27 #include "expression.h"
34 #include "gdb_string.h"
37 #include "user-regs.h"
39 #include "dictionary.h"
40 #include "breakpoint.h"
41 #include "tracepoint.h"
42 #include "cp-support.h"
43 #include "arch-utils.h"
45 /* To make sense of this file, you should read doc/agentexpr.texi.
46 Then look at the types and enums in ax-gdb.h. For the code itself,
47 look at gen_expr, towards the bottom; that's the main function that
48 looks at the GDB expressions and calls everything else to generate
51 I'm beginning to wonder whether it wouldn't be nicer to internally
52 generate trees, with types, and then spit out the bytecode in
53 linear form afterwards; we could generate fewer `swap', `ext', and
54 `zero_ext' bytecodes that way; it would make good constant folding
55 easier, too. But at the moment, I think we should be willing to
56 pay for the simplicity of this code with less-than-optimal bytecode
59 Remember, "GBD" stands for "Great Britain, Dammit!" So be careful. */
63 /* Prototypes for local functions. */
65 /* There's a standard order to the arguments of these functions:
66 union exp_element ** --- pointer into expression
67 struct agent_expr * --- agent expression buffer to generate code into
68 struct axs_value * --- describes value left on top of stack */
70 static struct value *const_var_ref (struct symbol *var);
71 static struct value *const_expr (union exp_element **pc);
72 static struct value *maybe_const_expr (union exp_element **pc);
74 static void gen_traced_pop (struct gdbarch *, struct agent_expr *,
77 static void gen_sign_extend (struct agent_expr *, struct type *);
78 static void gen_extend (struct agent_expr *, struct type *);
79 static void gen_fetch (struct agent_expr *, struct type *);
80 static void gen_left_shift (struct agent_expr *, int);
83 static void gen_frame_args_address (struct gdbarch *, struct agent_expr *);
84 static void gen_frame_locals_address (struct gdbarch *, struct agent_expr *);
85 static void gen_offset (struct agent_expr *ax, int offset);
86 static void gen_sym_offset (struct agent_expr *, struct symbol *);
87 static void gen_var_ref (struct gdbarch *, struct agent_expr *ax,
88 struct axs_value *value, struct symbol *var);
91 static void gen_int_literal (struct agent_expr *ax,
92 struct axs_value *value,
93 LONGEST k, struct type *type);
96 static void require_rvalue (struct agent_expr *ax, struct axs_value *value);
97 static void gen_usual_unary (struct expression *exp, struct agent_expr *ax,
98 struct axs_value *value);
99 static int type_wider_than (struct type *type1, struct type *type2);
100 static struct type *max_type (struct type *type1, struct type *type2);
101 static void gen_conversion (struct agent_expr *ax,
102 struct type *from, struct type *to);
103 static int is_nontrivial_conversion (struct type *from, struct type *to);
104 static void gen_usual_arithmetic (struct expression *exp,
105 struct agent_expr *ax,
106 struct axs_value *value1,
107 struct axs_value *value2);
108 static void gen_integral_promotions (struct expression *exp,
109 struct agent_expr *ax,
110 struct axs_value *value);
111 static void gen_cast (struct agent_expr *ax,
112 struct axs_value *value, struct type *type);
113 static void gen_scale (struct agent_expr *ax,
114 enum agent_op op, struct type *type);
115 static void gen_ptradd (struct agent_expr *ax, struct axs_value *value,
116 struct axs_value *value1, struct axs_value *value2);
117 static void gen_ptrsub (struct agent_expr *ax, struct axs_value *value,
118 struct axs_value *value1, struct axs_value *value2);
119 static void gen_ptrdiff (struct agent_expr *ax, struct axs_value *value,
120 struct axs_value *value1, struct axs_value *value2,
121 struct type *result_type);
122 static void gen_binop (struct agent_expr *ax,
123 struct axs_value *value,
124 struct axs_value *value1,
125 struct axs_value *value2,
127 enum agent_op op_unsigned, int may_carry, char *name);
128 static void gen_logical_not (struct agent_expr *ax, struct axs_value *value,
129 struct type *result_type);
130 static void gen_complement (struct agent_expr *ax, struct axs_value *value);
131 static void gen_deref (struct agent_expr *, struct axs_value *);
132 static void gen_address_of (struct agent_expr *, struct axs_value *);
133 static void gen_bitfield_ref (struct expression *exp, struct agent_expr *ax,
134 struct axs_value *value,
135 struct type *type, int start, int end);
136 static void gen_primitive_field (struct expression *exp,
137 struct agent_expr *ax,
138 struct axs_value *value,
139 int offset, int fieldno, struct type *type);
140 static int gen_struct_ref_recursive (struct expression *exp,
141 struct agent_expr *ax,
142 struct axs_value *value,
143 char *field, int offset,
145 static void gen_struct_ref (struct expression *exp, struct agent_expr *ax,
146 struct axs_value *value,
148 char *operator_name, char *operand_name);
149 static void gen_static_field (struct gdbarch *gdbarch,
150 struct agent_expr *ax, struct axs_value *value,
151 struct type *type, int fieldno);
152 static void gen_repeat (struct expression *exp, union exp_element **pc,
153 struct agent_expr *ax, struct axs_value *value);
154 static void gen_sizeof (struct expression *exp, union exp_element **pc,
155 struct agent_expr *ax, struct axs_value *value,
156 struct type *size_type);
157 static void gen_expr (struct expression *exp, union exp_element **pc,
158 struct agent_expr *ax, struct axs_value *value);
159 static void gen_expr_binop_rest (struct expression *exp,
160 enum exp_opcode op, union exp_element **pc,
161 struct agent_expr *ax,
162 struct axs_value *value,
163 struct axs_value *value1,
164 struct axs_value *value2);
166 static void agent_command (char *exp, int from_tty);
169 /* Detecting constant expressions. */
171 /* If the variable reference at *PC is a constant, return its value.
172 Otherwise, return zero.
174 Hey, Wally! How can a variable reference be a constant?
176 Well, Beav, this function really handles the OP_VAR_VALUE operator,
177 not specifically variable references. GDB uses OP_VAR_VALUE to
178 refer to any kind of symbolic reference: function names, enum
179 elements, and goto labels are all handled through the OP_VAR_VALUE
180 operator, even though they're constants. It makes sense given the
183 Gee, Wally, don'cha wonder sometimes if data representations that
184 subvert commonly accepted definitions of terms in favor of heavily
185 context-specific interpretations are really just a tool of the
186 programming hegemony to preserve their power and exclude the
189 static struct value *
190 const_var_ref (struct symbol *var)
192 struct type *type = SYMBOL_TYPE (var);
194 switch (SYMBOL_CLASS (var))
197 return value_from_longest (type, (LONGEST) SYMBOL_VALUE (var));
200 return value_from_pointer (type, (CORE_ADDR) SYMBOL_VALUE_ADDRESS (var));
208 /* If the expression starting at *PC has a constant value, return it.
209 Otherwise, return zero. If we return a value, then *PC will be
210 advanced to the end of it. If we return zero, *PC could be
212 static struct value *
213 const_expr (union exp_element **pc)
215 enum exp_opcode op = (*pc)->opcode;
222 struct type *type = (*pc)[1].type;
223 LONGEST k = (*pc)[2].longconst;
226 return value_from_longest (type, k);
231 struct value *v = const_var_ref ((*pc)[2].symbol);
237 /* We could add more operators in here. */
241 v1 = const_expr (pc);
243 return value_neg (v1);
253 /* Like const_expr, but guarantee also that *PC is undisturbed if the
254 expression is not constant. */
255 static struct value *
256 maybe_const_expr (union exp_element **pc)
258 union exp_element *tentative_pc = *pc;
259 struct value *v = const_expr (&tentative_pc);
261 /* If we got a value, then update the real PC. */
269 /* Generating bytecode from GDB expressions: general assumptions */
271 /* Here are a few general assumptions made throughout the code; if you
272 want to make a change that contradicts one of these, then you'd
273 better scan things pretty thoroughly.
275 - We assume that all values occupy one stack element. For example,
276 sometimes we'll swap to get at the left argument to a binary
277 operator. If we decide that void values should occupy no stack
278 elements, or that synthetic arrays (whose size is determined at
279 run time, created by the `@' operator) should occupy two stack
280 elements (address and length), then this will cause trouble.
282 - We assume the stack elements are infinitely wide, and that we
283 don't have to worry what happens if the user requests an
284 operation that is wider than the actual interpreter's stack.
285 That is, it's up to the interpreter to handle directly all the
286 integer widths the user has access to. (Woe betide the language
289 - We don't support side effects. Thus, we don't have to worry about
290 GCC's generalized lvalues, function calls, etc.
292 - We don't support floating point. Many places where we switch on
293 some type don't bother to include cases for floating point; there
294 may be even more subtle ways this assumption exists. For
295 example, the arguments to % must be integers.
297 - We assume all subexpressions have a static, unchanging type. If
298 we tried to support convenience variables, this would be a
301 - All values on the stack should always be fully zero- or
304 (I wasn't sure whether to choose this or its opposite --- that
305 only addresses are assumed extended --- but it turns out that
306 neither convention completely eliminates spurious extend
307 operations (if everything is always extended, then you have to
308 extend after add, because it could overflow; if nothing is
309 extended, then you end up producing extends whenever you change
310 sizes), and this is simpler.) */
313 /* Generating bytecode from GDB expressions: the `trace' kludge */
315 /* The compiler in this file is a general-purpose mechanism for
316 translating GDB expressions into bytecode. One ought to be able to
317 find a million and one uses for it.
319 However, at the moment it is HOPELESSLY BRAIN-DAMAGED for the sake
320 of expediency. Let he who is without sin cast the first stone.
322 For the data tracing facility, we need to insert `trace' bytecodes
323 before each data fetch; this records all the memory that the
324 expression touches in the course of evaluation, so that memory will
325 be available when the user later tries to evaluate the expression
328 This should be done (I think) in a post-processing pass, that walks
329 an arbitrary agent expression and inserts `trace' operations at the
330 appropriate points. But it's much faster to just hack them
331 directly into the code. And since we're in a crunch, that's what
334 Setting the flag trace_kludge to non-zero enables the code that
335 emits the trace bytecodes at the appropriate points. */
338 /* Scan for all static fields in the given class, including any base
339 classes, and generate tracing bytecodes for each. */
342 gen_trace_static_fields (struct gdbarch *gdbarch,
343 struct agent_expr *ax,
346 int i, nbases = TYPE_N_BASECLASSES (type);
347 struct axs_value value;
349 CHECK_TYPEDEF (type);
351 for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
353 if (field_is_static (&TYPE_FIELD (type, i)))
355 gen_static_field (gdbarch, ax, &value, type, i);
356 if (value.optimized_out)
360 case axs_lvalue_memory:
362 int length = TYPE_LENGTH (check_typedef (value.type));
364 ax_const_l (ax, length);
365 ax_simple (ax, aop_trace);
369 case axs_lvalue_register:
370 /* We don't actually need the register's value to be pushed,
371 just note that we need it to be collected. */
372 ax_reg_mask (ax, value.u.reg);
380 /* Now scan through base classes recursively. */
381 for (i = 0; i < nbases; i++)
383 struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
385 gen_trace_static_fields (gdbarch, ax, basetype);
389 /* Trace the lvalue on the stack, if it needs it. In either case, pop
390 the value. Useful on the left side of a comma, and at the end of
391 an expression being used for tracing. */
393 gen_traced_pop (struct gdbarch *gdbarch,
394 struct agent_expr *ax, struct axs_value *value)
400 /* We don't trace rvalues, just the lvalues necessary to
401 produce them. So just dispose of this value. */
402 ax_simple (ax, aop_pop);
405 case axs_lvalue_memory:
407 int length = TYPE_LENGTH (check_typedef (value->type));
409 /* There's no point in trying to use a trace_quick bytecode
410 here, since "trace_quick SIZE pop" is three bytes, whereas
411 "const8 SIZE trace" is also three bytes, does the same
412 thing, and the simplest code which generates that will also
413 work correctly for objects with large sizes. */
414 ax_const_l (ax, length);
415 ax_simple (ax, aop_trace);
419 case axs_lvalue_register:
420 /* We don't actually need the register's value to be on the
421 stack, and the target will get heartburn if the register is
422 larger than will fit in a stack, so just mark it for
423 collection and be done with it. */
424 ax_reg_mask (ax, value->u.reg);
428 /* If we're not tracing, just pop the value. */
429 ax_simple (ax, aop_pop);
431 /* To trace C++ classes with static fields stored elsewhere. */
433 && (TYPE_CODE (value->type) == TYPE_CODE_STRUCT
434 || TYPE_CODE (value->type) == TYPE_CODE_UNION))
435 gen_trace_static_fields (gdbarch, ax, value->type);
440 /* Generating bytecode from GDB expressions: helper functions */
442 /* Assume that the lower bits of the top of the stack is a value of
443 type TYPE, and the upper bits are zero. Sign-extend if necessary. */
445 gen_sign_extend (struct agent_expr *ax, struct type *type)
447 /* Do we need to sign-extend this? */
448 if (!TYPE_UNSIGNED (type))
449 ax_ext (ax, TYPE_LENGTH (type) * TARGET_CHAR_BIT);
453 /* Assume the lower bits of the top of the stack hold a value of type
454 TYPE, and the upper bits are garbage. Sign-extend or truncate as
457 gen_extend (struct agent_expr *ax, struct type *type)
459 int bits = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
462 ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, bits));
466 /* Assume that the top of the stack contains a value of type "pointer
467 to TYPE"; generate code to fetch its value. Note that TYPE is the
468 target type, not the pointer type. */
470 gen_fetch (struct agent_expr *ax, struct type *type)
474 /* Record the area of memory we're about to fetch. */
475 ax_trace_quick (ax, TYPE_LENGTH (type));
478 switch (TYPE_CODE (type))
486 /* It's a scalar value, so we know how to dereference it. How
487 many bytes long is it? */
488 switch (TYPE_LENGTH (type))
490 case 8 / TARGET_CHAR_BIT:
491 ax_simple (ax, aop_ref8);
493 case 16 / TARGET_CHAR_BIT:
494 ax_simple (ax, aop_ref16);
496 case 32 / TARGET_CHAR_BIT:
497 ax_simple (ax, aop_ref32);
499 case 64 / TARGET_CHAR_BIT:
500 ax_simple (ax, aop_ref64);
503 /* Either our caller shouldn't have asked us to dereference
504 that pointer (other code's fault), or we're not
505 implementing something we should be (this code's fault).
506 In any case, it's a bug the user shouldn't see. */
508 internal_error (__FILE__, __LINE__,
509 _("gen_fetch: strange size"));
512 gen_sign_extend (ax, type);
516 /* Either our caller shouldn't have asked us to dereference that
517 pointer (other code's fault), or we're not implementing
518 something we should be (this code's fault). In any case,
519 it's a bug the user shouldn't see. */
520 internal_error (__FILE__, __LINE__,
521 _("gen_fetch: bad type code"));
526 /* Generate code to left shift the top of the stack by DISTANCE bits, or
527 right shift it by -DISTANCE bits if DISTANCE < 0. This generates
528 unsigned (logical) right shifts. */
530 gen_left_shift (struct agent_expr *ax, int distance)
534 ax_const_l (ax, distance);
535 ax_simple (ax, aop_lsh);
537 else if (distance < 0)
539 ax_const_l (ax, -distance);
540 ax_simple (ax, aop_rsh_unsigned);
546 /* Generating bytecode from GDB expressions: symbol references */
548 /* Generate code to push the base address of the argument portion of
549 the top stack frame. */
551 gen_frame_args_address (struct gdbarch *gdbarch, struct agent_expr *ax)
554 LONGEST frame_offset;
556 gdbarch_virtual_frame_pointer (gdbarch,
557 ax->scope, &frame_reg, &frame_offset);
558 ax_reg (ax, frame_reg);
559 gen_offset (ax, frame_offset);
563 /* Generate code to push the base address of the locals portion of the
566 gen_frame_locals_address (struct gdbarch *gdbarch, struct agent_expr *ax)
569 LONGEST frame_offset;
571 gdbarch_virtual_frame_pointer (gdbarch,
572 ax->scope, &frame_reg, &frame_offset);
573 ax_reg (ax, frame_reg);
574 gen_offset (ax, frame_offset);
578 /* Generate code to add OFFSET to the top of the stack. Try to
579 generate short and readable code. We use this for getting to
580 variables on the stack, and structure members. If we were
581 programming in ML, it would be clearer why these are the same
584 gen_offset (struct agent_expr *ax, int offset)
586 /* It would suffice to simply push the offset and add it, but this
587 makes it easier to read positive and negative offsets in the
591 ax_const_l (ax, offset);
592 ax_simple (ax, aop_add);
596 ax_const_l (ax, -offset);
597 ax_simple (ax, aop_sub);
602 /* In many cases, a symbol's value is the offset from some other
603 address (stack frame, base register, etc.) Generate code to add
604 VAR's value to the top of the stack. */
606 gen_sym_offset (struct agent_expr *ax, struct symbol *var)
608 gen_offset (ax, SYMBOL_VALUE (var));
612 /* Generate code for a variable reference to AX. The variable is the
613 symbol VAR. Set VALUE to describe the result. */
616 gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
617 struct axs_value *value, struct symbol *var)
619 /* Dereference any typedefs. */
620 value->type = check_typedef (SYMBOL_TYPE (var));
621 value->optimized_out = 0;
623 /* I'm imitating the code in read_var_value. */
624 switch (SYMBOL_CLASS (var))
626 case LOC_CONST: /* A constant, like an enum value. */
627 ax_const_l (ax, (LONGEST) SYMBOL_VALUE (var));
628 value->kind = axs_rvalue;
631 case LOC_LABEL: /* A goto label, being used as a value. */
632 ax_const_l (ax, (LONGEST) SYMBOL_VALUE_ADDRESS (var));
633 value->kind = axs_rvalue;
636 case LOC_CONST_BYTES:
637 internal_error (__FILE__, __LINE__,
638 _("gen_var_ref: LOC_CONST_BYTES "
639 "symbols are not supported"));
641 /* Variable at a fixed location in memory. Easy. */
643 /* Push the address of the variable. */
644 ax_const_l (ax, SYMBOL_VALUE_ADDRESS (var));
645 value->kind = axs_lvalue_memory;
648 case LOC_ARG: /* var lives in argument area of frame */
649 gen_frame_args_address (gdbarch, ax);
650 gen_sym_offset (ax, var);
651 value->kind = axs_lvalue_memory;
654 case LOC_REF_ARG: /* As above, but the frame slot really
655 holds the address of the variable. */
656 gen_frame_args_address (gdbarch, ax);
657 gen_sym_offset (ax, var);
658 /* Don't assume any particular pointer size. */
659 gen_fetch (ax, builtin_type (gdbarch)->builtin_data_ptr);
660 value->kind = axs_lvalue_memory;
663 case LOC_LOCAL: /* var lives in locals area of frame */
664 gen_frame_locals_address (gdbarch, ax);
665 gen_sym_offset (ax, var);
666 value->kind = axs_lvalue_memory;
670 error (_("Cannot compute value of typedef `%s'."),
671 SYMBOL_PRINT_NAME (var));
675 ax_const_l (ax, BLOCK_START (SYMBOL_BLOCK_VALUE (var)));
676 value->kind = axs_rvalue;
680 /* Don't generate any code at all; in the process of treating
681 this as an lvalue or rvalue, the caller will generate the
683 value->kind = axs_lvalue_register;
684 value->u.reg = SYMBOL_REGISTER_OPS (var)->register_number (var, gdbarch);
687 /* A lot like LOC_REF_ARG, but the pointer lives directly in a
688 register, not on the stack. Simpler than LOC_REGISTER
689 because it's just like any other case where the thing
690 has a real address. */
691 case LOC_REGPARM_ADDR:
692 ax_reg (ax, SYMBOL_REGISTER_OPS (var)->register_number (var, gdbarch));
693 value->kind = axs_lvalue_memory;
698 struct minimal_symbol *msym
699 = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL);
702 error (_("Couldn't resolve symbol `%s'."), SYMBOL_PRINT_NAME (var));
704 /* Push the address of the variable. */
705 ax_const_l (ax, SYMBOL_VALUE_ADDRESS (msym));
706 value->kind = axs_lvalue_memory;
711 /* FIXME: cagney/2004-01-26: It should be possible to
712 unconditionally call the SYMBOL_COMPUTED_OPS method when available.
713 Unfortunately DWARF 2 stores the frame-base (instead of the
714 function) location in a function's symbol. Oops! For the
715 moment enable this when/where applicable. */
716 SYMBOL_COMPUTED_OPS (var)->tracepoint_var_ref (var, gdbarch, ax, value);
719 case LOC_OPTIMIZED_OUT:
720 /* Flag this, but don't say anything; leave it up to callers to
722 value->optimized_out = 1;
726 error (_("Cannot find value of botched symbol `%s'."),
727 SYMBOL_PRINT_NAME (var));
734 /* Generating bytecode from GDB expressions: literals */
737 gen_int_literal (struct agent_expr *ax, struct axs_value *value, LONGEST k,
741 value->kind = axs_rvalue;
742 value->type = check_typedef (type);
747 /* Generating bytecode from GDB expressions: unary conversions, casts */
749 /* Take what's on the top of the stack (as described by VALUE), and
750 try to make an rvalue out of it. Signal an error if we can't do
753 require_rvalue (struct agent_expr *ax, struct axs_value *value)
755 /* Only deal with scalars, structs and such may be too large
756 to fit in a stack entry. */
757 value->type = check_typedef (value->type);
758 if (TYPE_CODE (value->type) == TYPE_CODE_ARRAY
759 || TYPE_CODE (value->type) == TYPE_CODE_STRUCT
760 || TYPE_CODE (value->type) == TYPE_CODE_UNION
761 || TYPE_CODE (value->type) == TYPE_CODE_FUNC)
762 error (_("Value not scalar: cannot be an rvalue."));
767 /* It's already an rvalue. */
770 case axs_lvalue_memory:
771 /* The top of stack is the address of the object. Dereference. */
772 gen_fetch (ax, value->type);
775 case axs_lvalue_register:
776 /* There's nothing on the stack, but value->u.reg is the
777 register number containing the value.
779 When we add floating-point support, this is going to have to
780 change. What about SPARC register pairs, for example? */
781 ax_reg (ax, value->u.reg);
782 gen_extend (ax, value->type);
786 value->kind = axs_rvalue;
790 /* Assume the top of the stack is described by VALUE, and perform the
791 usual unary conversions. This is motivated by ANSI 6.2.2, but of
792 course GDB expressions are not ANSI; they're the mishmash union of
793 a bunch of languages. Rah.
795 NOTE! This function promises to produce an rvalue only when the
796 incoming value is of an appropriate type. In other words, the
797 consumer of the value this function produces may assume the value
798 is an rvalue only after checking its type.
800 The immediate issue is that if the user tries to use a structure or
801 union as an operand of, say, the `+' operator, we don't want to try
802 to convert that structure to an rvalue; require_rvalue will bomb on
803 structs and unions. Rather, we want to simply pass the struct
804 lvalue through unchanged, and let `+' raise an error. */
807 gen_usual_unary (struct expression *exp, struct agent_expr *ax,
808 struct axs_value *value)
810 /* We don't have to generate any code for the usual integral
811 conversions, since values are always represented as full-width on
812 the stack. Should we tweak the type? */
814 /* Some types require special handling. */
815 switch (TYPE_CODE (value->type))
817 /* Functions get converted to a pointer to the function. */
819 value->type = lookup_pointer_type (value->type);
820 value->kind = axs_rvalue; /* Should always be true, but just in case. */
823 /* Arrays get converted to a pointer to their first element, and
824 are no longer an lvalue. */
825 case TYPE_CODE_ARRAY:
827 struct type *elements = TYPE_TARGET_TYPE (value->type);
829 value->type = lookup_pointer_type (elements);
830 value->kind = axs_rvalue;
831 /* We don't need to generate any code; the address of the array
832 is also the address of its first element. */
836 /* Don't try to convert structures and unions to rvalues. Let the
837 consumer signal an error. */
838 case TYPE_CODE_STRUCT:
839 case TYPE_CODE_UNION:
842 /* If the value is an enum or a bool, call it an integer. */
845 value->type = builtin_type (exp->gdbarch)->builtin_int;
849 /* If the value is an lvalue, dereference it. */
850 require_rvalue (ax, value);
854 /* Return non-zero iff the type TYPE1 is considered "wider" than the
855 type TYPE2, according to the rules described in gen_usual_arithmetic. */
857 type_wider_than (struct type *type1, struct type *type2)
859 return (TYPE_LENGTH (type1) > TYPE_LENGTH (type2)
860 || (TYPE_LENGTH (type1) == TYPE_LENGTH (type2)
861 && TYPE_UNSIGNED (type1)
862 && !TYPE_UNSIGNED (type2)));
866 /* Return the "wider" of the two types TYPE1 and TYPE2. */
868 max_type (struct type *type1, struct type *type2)
870 return type_wider_than (type1, type2) ? type1 : type2;
874 /* Generate code to convert a scalar value of type FROM to type TO. */
876 gen_conversion (struct agent_expr *ax, struct type *from, struct type *to)
878 /* Perhaps there is a more graceful way to state these rules. */
880 /* If we're converting to a narrower type, then we need to clear out
882 if (TYPE_LENGTH (to) < TYPE_LENGTH (from))
883 gen_extend (ax, from);
885 /* If the two values have equal width, but different signednesses,
886 then we need to extend. */
887 else if (TYPE_LENGTH (to) == TYPE_LENGTH (from))
889 if (TYPE_UNSIGNED (from) != TYPE_UNSIGNED (to))
893 /* If we're converting to a wider type, and becoming unsigned, then
894 we need to zero out any possible sign bits. */
895 else if (TYPE_LENGTH (to) > TYPE_LENGTH (from))
897 if (TYPE_UNSIGNED (to))
903 /* Return non-zero iff the type FROM will require any bytecodes to be
904 emitted to be converted to the type TO. */
906 is_nontrivial_conversion (struct type *from, struct type *to)
908 struct agent_expr *ax = new_agent_expr (NULL, 0);
911 /* Actually generate the code, and see if anything came out. At the
912 moment, it would be trivial to replicate the code in
913 gen_conversion here, but in the future, when we're supporting
914 floating point and the like, it may not be. Doing things this
915 way allows this function to be independent of the logic in
917 gen_conversion (ax, from, to);
918 nontrivial = ax->len > 0;
919 free_agent_expr (ax);
924 /* Generate code to perform the "usual arithmetic conversions" (ANSI C
925 6.2.1.5) for the two operands of an arithmetic operator. This
926 effectively finds a "least upper bound" type for the two arguments,
927 and promotes each argument to that type. *VALUE1 and *VALUE2
928 describe the values as they are passed in, and as they are left. */
930 gen_usual_arithmetic (struct expression *exp, struct agent_expr *ax,
931 struct axs_value *value1, struct axs_value *value2)
933 /* Do the usual binary conversions. */
934 if (TYPE_CODE (value1->type) == TYPE_CODE_INT
935 && TYPE_CODE (value2->type) == TYPE_CODE_INT)
937 /* The ANSI integral promotions seem to work this way: Order the
938 integer types by size, and then by signedness: an n-bit
939 unsigned type is considered "wider" than an n-bit signed
940 type. Promote to the "wider" of the two types, and always
941 promote at least to int. */
942 struct type *target = max_type (builtin_type (exp->gdbarch)->builtin_int,
943 max_type (value1->type, value2->type));
945 /* Deal with value2, on the top of the stack. */
946 gen_conversion (ax, value2->type, target);
948 /* Deal with value1, not on the top of the stack. Don't
949 generate the `swap' instructions if we're not actually going
951 if (is_nontrivial_conversion (value1->type, target))
953 ax_simple (ax, aop_swap);
954 gen_conversion (ax, value1->type, target);
955 ax_simple (ax, aop_swap);
958 value1->type = value2->type = check_typedef (target);
963 /* Generate code to perform the integral promotions (ANSI 6.2.1.1) on
964 the value on the top of the stack, as described by VALUE. Assume
965 the value has integral type. */
967 gen_integral_promotions (struct expression *exp, struct agent_expr *ax,
968 struct axs_value *value)
970 const struct builtin_type *builtin = builtin_type (exp->gdbarch);
972 if (!type_wider_than (value->type, builtin->builtin_int))
974 gen_conversion (ax, value->type, builtin->builtin_int);
975 value->type = builtin->builtin_int;
977 else if (!type_wider_than (value->type, builtin->builtin_unsigned_int))
979 gen_conversion (ax, value->type, builtin->builtin_unsigned_int);
980 value->type = builtin->builtin_unsigned_int;
985 /* Generate code for a cast to TYPE. */
987 gen_cast (struct agent_expr *ax, struct axs_value *value, struct type *type)
989 /* GCC does allow casts to yield lvalues, so this should be fixed
990 before merging these changes into the trunk. */
991 require_rvalue (ax, value);
992 /* Dereference typedefs. */
993 type = check_typedef (type);
995 switch (TYPE_CODE (type))
999 /* It's implementation-defined, and I'll bet this is what GCC
1003 case TYPE_CODE_ARRAY:
1004 case TYPE_CODE_STRUCT:
1005 case TYPE_CODE_UNION:
1006 case TYPE_CODE_FUNC:
1007 error (_("Invalid type cast: intended type must be scalar."));
1009 case TYPE_CODE_ENUM:
1010 case TYPE_CODE_BOOL:
1011 /* We don't have to worry about the size of the value, because
1012 all our integral values are fully sign-extended, and when
1013 casting pointers we can do anything we like. Is there any
1014 way for us to know what GCC actually does with a cast like
1019 gen_conversion (ax, value->type, type);
1022 case TYPE_CODE_VOID:
1023 /* We could pop the value, and rely on everyone else to check
1024 the type and notice that this value doesn't occupy a stack
1025 slot. But for now, leave the value on the stack, and
1026 preserve the "value == stack element" assumption. */
1030 error (_("Casts to requested type are not yet implemented."));
1038 /* Generating bytecode from GDB expressions: arithmetic */
1040 /* Scale the integer on the top of the stack by the size of the target
1041 of the pointer type TYPE. */
1043 gen_scale (struct agent_expr *ax, enum agent_op op, struct type *type)
1045 struct type *element = TYPE_TARGET_TYPE (type);
1047 if (TYPE_LENGTH (element) != 1)
1049 ax_const_l (ax, TYPE_LENGTH (element));
1055 /* Generate code for pointer arithmetic PTR + INT. */
1057 gen_ptradd (struct agent_expr *ax, struct axs_value *value,
1058 struct axs_value *value1, struct axs_value *value2)
1060 gdb_assert (pointer_type (value1->type));
1061 gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
1063 gen_scale (ax, aop_mul, value1->type);
1064 ax_simple (ax, aop_add);
1065 gen_extend (ax, value1->type); /* Catch overflow. */
1066 value->type = value1->type;
1067 value->kind = axs_rvalue;
1071 /* Generate code for pointer arithmetic PTR - INT. */
1073 gen_ptrsub (struct agent_expr *ax, struct axs_value *value,
1074 struct axs_value *value1, struct axs_value *value2)
1076 gdb_assert (pointer_type (value1->type));
1077 gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
1079 gen_scale (ax, aop_mul, value1->type);
1080 ax_simple (ax, aop_sub);
1081 gen_extend (ax, value1->type); /* Catch overflow. */
1082 value->type = value1->type;
1083 value->kind = axs_rvalue;
1087 /* Generate code for pointer arithmetic PTR - PTR. */
1089 gen_ptrdiff (struct agent_expr *ax, struct axs_value *value,
1090 struct axs_value *value1, struct axs_value *value2,
1091 struct type *result_type)
1093 gdb_assert (pointer_type (value1->type));
1094 gdb_assert (pointer_type (value2->type));
1096 if (TYPE_LENGTH (TYPE_TARGET_TYPE (value1->type))
1097 != TYPE_LENGTH (TYPE_TARGET_TYPE (value2->type)))
1099 First argument of `-' is a pointer, but second argument is neither\n\
1100 an integer nor a pointer of the same type."));
1102 ax_simple (ax, aop_sub);
1103 gen_scale (ax, aop_div_unsigned, value1->type);
1104 value->type = result_type;
1105 value->kind = axs_rvalue;
1109 gen_equal (struct agent_expr *ax, struct axs_value *value,
1110 struct axs_value *value1, struct axs_value *value2,
1111 struct type *result_type)
1113 if (pointer_type (value1->type) || pointer_type (value2->type))
1114 ax_simple (ax, aop_equal);
1116 gen_binop (ax, value, value1, value2,
1117 aop_equal, aop_equal, 0, "equal");
1118 value->type = result_type;
1119 value->kind = axs_rvalue;
1123 gen_less (struct agent_expr *ax, struct axs_value *value,
1124 struct axs_value *value1, struct axs_value *value2,
1125 struct type *result_type)
1127 if (pointer_type (value1->type) || pointer_type (value2->type))
1128 ax_simple (ax, aop_less_unsigned);
1130 gen_binop (ax, value, value1, value2,
1131 aop_less_signed, aop_less_unsigned, 0, "less than");
1132 value->type = result_type;
1133 value->kind = axs_rvalue;
1136 /* Generate code for a binary operator that doesn't do pointer magic.
1137 We set VALUE to describe the result value; we assume VALUE1 and
1138 VALUE2 describe the two operands, and that they've undergone the
1139 usual binary conversions. MAY_CARRY should be non-zero iff the
1140 result needs to be extended. NAME is the English name of the
1141 operator, used in error messages */
1143 gen_binop (struct agent_expr *ax, struct axs_value *value,
1144 struct axs_value *value1, struct axs_value *value2,
1145 enum agent_op op, enum agent_op op_unsigned,
1146 int may_carry, char *name)
1148 /* We only handle INT op INT. */
1149 if ((TYPE_CODE (value1->type) != TYPE_CODE_INT)
1150 || (TYPE_CODE (value2->type) != TYPE_CODE_INT))
1151 error (_("Invalid combination of types in %s."), name);
1154 TYPE_UNSIGNED (value1->type) ? op_unsigned : op);
1156 gen_extend (ax, value1->type); /* catch overflow */
1157 value->type = value1->type;
1158 value->kind = axs_rvalue;
1163 gen_logical_not (struct agent_expr *ax, struct axs_value *value,
1164 struct type *result_type)
1166 if (TYPE_CODE (value->type) != TYPE_CODE_INT
1167 && TYPE_CODE (value->type) != TYPE_CODE_PTR)
1168 error (_("Invalid type of operand to `!'."));
1170 ax_simple (ax, aop_log_not);
1171 value->type = result_type;
1176 gen_complement (struct agent_expr *ax, struct axs_value *value)
1178 if (TYPE_CODE (value->type) != TYPE_CODE_INT)
1179 error (_("Invalid type of operand to `~'."));
1181 ax_simple (ax, aop_bit_not);
1182 gen_extend (ax, value->type);
1187 /* Generating bytecode from GDB expressions: * & . -> @ sizeof */
1189 /* Dereference the value on the top of the stack. */
1191 gen_deref (struct agent_expr *ax, struct axs_value *value)
1193 /* The caller should check the type, because several operators use
1194 this, and we don't know what error message to generate. */
1195 if (!pointer_type (value->type))
1196 internal_error (__FILE__, __LINE__,
1197 _("gen_deref: expected a pointer"));
1199 /* We've got an rvalue now, which is a pointer. We want to yield an
1200 lvalue, whose address is exactly that pointer. So we don't
1201 actually emit any code; we just change the type from "Pointer to
1202 T" to "T", and mark the value as an lvalue in memory. Leave it
1203 to the consumer to actually dereference it. */
1204 value->type = check_typedef (TYPE_TARGET_TYPE (value->type));
1205 if (TYPE_CODE (value->type) == TYPE_CODE_VOID)
1206 error (_("Attempt to dereference a generic pointer."));
1207 value->kind = ((TYPE_CODE (value->type) == TYPE_CODE_FUNC)
1208 ? axs_rvalue : axs_lvalue_memory);
1212 /* Produce the address of the lvalue on the top of the stack. */
1214 gen_address_of (struct agent_expr *ax, struct axs_value *value)
1216 /* Special case for taking the address of a function. The ANSI
1217 standard describes this as a special case, too, so this
1218 arrangement is not without motivation. */
1219 if (TYPE_CODE (value->type) == TYPE_CODE_FUNC)
1220 /* The value's already an rvalue on the stack, so we just need to
1222 value->type = lookup_pointer_type (value->type);
1224 switch (value->kind)
1227 error (_("Operand of `&' is an rvalue, which has no address."));
1229 case axs_lvalue_register:
1230 error (_("Operand of `&' is in a register, and has no address."));
1232 case axs_lvalue_memory:
1233 value->kind = axs_rvalue;
1234 value->type = lookup_pointer_type (value->type);
1239 /* Generate code to push the value of a bitfield of a structure whose
1240 address is on the top of the stack. START and END give the
1241 starting and one-past-ending *bit* numbers of the field within the
1244 gen_bitfield_ref (struct expression *exp, struct agent_expr *ax,
1245 struct axs_value *value, struct type *type,
1248 /* Note that ops[i] fetches 8 << i bits. */
1249 static enum agent_op ops[]
1250 = {aop_ref8, aop_ref16, aop_ref32, aop_ref64};
1251 static int num_ops = (sizeof (ops) / sizeof (ops[0]));
1253 /* We don't want to touch any byte that the bitfield doesn't
1254 actually occupy; we shouldn't make any accesses we're not
1255 explicitly permitted to. We rely here on the fact that the
1256 bytecode `ref' operators work on unaligned addresses.
1258 It takes some fancy footwork to get the stack to work the way
1259 we'd like. Say we're retrieving a bitfield that requires three
1260 fetches. Initially, the stack just contains the address:
1262 For the first fetch, we duplicate the address
1264 then add the byte offset, do the fetch, and shift and mask as
1265 needed, yielding a fragment of the value, properly aligned for
1266 the final bitwise or:
1268 then we swap, and repeat the process:
1269 frag1 addr --- address on top
1270 frag1 addr addr --- duplicate it
1271 frag1 addr frag2 --- get second fragment
1272 frag1 frag2 addr --- swap again
1273 frag1 frag2 frag3 --- get third fragment
1274 Notice that, since the third fragment is the last one, we don't
1275 bother duplicating the address this time. Now we have all the
1276 fragments on the stack, and we can simply `or' them together,
1277 yielding the final value of the bitfield. */
1279 /* The first and one-after-last bits in the field, but rounded down
1280 and up to byte boundaries. */
1281 int bound_start = (start / TARGET_CHAR_BIT) * TARGET_CHAR_BIT;
1282 int bound_end = (((end + TARGET_CHAR_BIT - 1)
1286 /* current bit offset within the structure */
1289 /* The index in ops of the opcode we're considering. */
1292 /* The number of fragments we generated in the process. Probably
1293 equal to the number of `one' bits in bytesize, but who cares? */
1296 /* Dereference any typedefs. */
1297 type = check_typedef (type);
1299 /* Can we fetch the number of bits requested at all? */
1300 if ((end - start) > ((1 << num_ops) * 8))
1301 internal_error (__FILE__, __LINE__,
1302 _("gen_bitfield_ref: bitfield too wide"));
1304 /* Note that we know here that we only need to try each opcode once.
1305 That may not be true on machines with weird byte sizes. */
1306 offset = bound_start;
1308 for (op = num_ops - 1; op >= 0; op--)
1310 /* number of bits that ops[op] would fetch */
1311 int op_size = 8 << op;
1313 /* The stack at this point, from bottom to top, contains zero or
1314 more fragments, then the address. */
1316 /* Does this fetch fit within the bitfield? */
1317 if (offset + op_size <= bound_end)
1319 /* Is this the last fragment? */
1320 int last_frag = (offset + op_size == bound_end);
1323 ax_simple (ax, aop_dup); /* keep a copy of the address */
1325 /* Add the offset. */
1326 gen_offset (ax, offset / TARGET_CHAR_BIT);
1330 /* Record the area of memory we're about to fetch. */
1331 ax_trace_quick (ax, op_size / TARGET_CHAR_BIT);
1334 /* Perform the fetch. */
1335 ax_simple (ax, ops[op]);
1337 /* Shift the bits we have to their proper position.
1338 gen_left_shift will generate right shifts when the operand
1341 A big-endian field diagram to ponder:
1342 byte 0 byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7
1343 +------++------++------++------++------++------++------++------+
1344 xxxxAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCxxxxxxxxxxx
1346 bit number 16 32 48 53
1347 These are bit numbers as supplied by GDB. Note that the
1348 bit numbers run from right to left once you've fetched the
1351 A little-endian field diagram to ponder:
1352 byte 7 byte 6 byte 5 byte 4 byte 3 byte 2 byte 1 byte 0
1353 +------++------++------++------++------++------++------++------+
1354 xxxxxxxxxxxAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCxxxx
1356 bit number 48 32 16 4 0
1358 In both cases, the most significant end is on the left
1359 (i.e. normal numeric writing order), which means that you
1360 don't go crazy thinking about `left' and `right' shifts.
1362 We don't have to worry about masking yet:
1363 - If they contain garbage off the least significant end, then we
1364 must be looking at the low end of the field, and the right
1365 shift will wipe them out.
1366 - If they contain garbage off the most significant end, then we
1367 must be looking at the most significant end of the word, and
1368 the sign/zero extension will wipe them out.
1369 - If we're in the interior of the word, then there is no garbage
1370 on either end, because the ref operators zero-extend. */
1371 if (gdbarch_byte_order (exp->gdbarch) == BFD_ENDIAN_BIG)
1372 gen_left_shift (ax, end - (offset + op_size));
1374 gen_left_shift (ax, offset - start);
1377 /* Bring the copy of the address up to the top. */
1378 ax_simple (ax, aop_swap);
1385 /* Generate enough bitwise `or' operations to combine all the
1386 fragments we left on the stack. */
1387 while (fragment_count-- > 1)
1388 ax_simple (ax, aop_bit_or);
1390 /* Sign- or zero-extend the value as appropriate. */
1391 ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, end - start));
1393 /* This is *not* an lvalue. Ugh. */
1394 value->kind = axs_rvalue;
1398 /* Generate bytecodes for field number FIELDNO of type TYPE. OFFSET
1399 is an accumulated offset (in bytes), will be nonzero for objects
1400 embedded in other objects, like C++ base classes. Behavior should
1401 generally follow value_primitive_field. */
1404 gen_primitive_field (struct expression *exp,
1405 struct agent_expr *ax, struct axs_value *value,
1406 int offset, int fieldno, struct type *type)
1408 /* Is this a bitfield? */
1409 if (TYPE_FIELD_PACKED (type, fieldno))
1410 gen_bitfield_ref (exp, ax, value, TYPE_FIELD_TYPE (type, fieldno),
1411 (offset * TARGET_CHAR_BIT
1412 + TYPE_FIELD_BITPOS (type, fieldno)),
1413 (offset * TARGET_CHAR_BIT
1414 + TYPE_FIELD_BITPOS (type, fieldno)
1415 + TYPE_FIELD_BITSIZE (type, fieldno)));
1418 gen_offset (ax, offset
1419 + TYPE_FIELD_BITPOS (type, fieldno) / TARGET_CHAR_BIT);
1420 value->kind = axs_lvalue_memory;
1421 value->type = TYPE_FIELD_TYPE (type, fieldno);
1425 /* Search for the given field in either the given type or one of its
1426 base classes. Return 1 if found, 0 if not. */
1429 gen_struct_ref_recursive (struct expression *exp, struct agent_expr *ax,
1430 struct axs_value *value,
1431 char *field, int offset, struct type *type)
1434 int nbases = TYPE_N_BASECLASSES (type);
1436 CHECK_TYPEDEF (type);
1438 for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1440 char *this_name = TYPE_FIELD_NAME (type, i);
1444 if (strcmp (field, this_name) == 0)
1446 /* Note that bytecodes for the struct's base (aka
1447 "this") will have been generated already, which will
1448 be unnecessary but not harmful if the static field is
1449 being handled as a global. */
1450 if (field_is_static (&TYPE_FIELD (type, i)))
1452 gen_static_field (exp->gdbarch, ax, value, type, i);
1453 if (value->optimized_out)
1454 error (_("static field `%s' has been "
1455 "optimized out, cannot use"),
1460 gen_primitive_field (exp, ax, value, offset, i, type);
1463 #if 0 /* is this right? */
1464 if (this_name[0] == '\0')
1465 internal_error (__FILE__, __LINE__,
1466 _("find_field: anonymous unions not supported"));
1471 /* Now scan through base classes recursively. */
1472 for (i = 0; i < nbases; i++)
1474 struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1476 rslt = gen_struct_ref_recursive (exp, ax, value, field,
1477 offset + TYPE_BASECLASS_BITPOS (type, i)
1484 /* Not found anywhere, flag so caller can complain. */
1488 /* Generate code to reference the member named FIELD of a structure or
1489 union. The top of the stack, as described by VALUE, should have
1490 type (pointer to a)* struct/union. OPERATOR_NAME is the name of
1491 the operator being compiled, and OPERAND_NAME is the kind of thing
1492 it operates on; we use them in error messages. */
1494 gen_struct_ref (struct expression *exp, struct agent_expr *ax,
1495 struct axs_value *value, char *field,
1496 char *operator_name, char *operand_name)
1501 /* Follow pointers until we reach a non-pointer. These aren't the C
1502 semantics, but they're what the normal GDB evaluator does, so we
1503 should at least be consistent. */
1504 while (pointer_type (value->type))
1506 require_rvalue (ax, value);
1507 gen_deref (ax, value);
1509 type = check_typedef (value->type);
1511 /* This must yield a structure or a union. */
1512 if (TYPE_CODE (type) != TYPE_CODE_STRUCT
1513 && TYPE_CODE (type) != TYPE_CODE_UNION)
1514 error (_("The left operand of `%s' is not a %s."),
1515 operator_name, operand_name);
1517 /* And it must be in memory; we don't deal with structure rvalues,
1518 or structures living in registers. */
1519 if (value->kind != axs_lvalue_memory)
1520 error (_("Structure does not live in memory."));
1522 /* Search through fields and base classes recursively. */
1523 found = gen_struct_ref_recursive (exp, ax, value, field, 0, type);
1526 error (_("Couldn't find member named `%s' in struct/union/class `%s'"),
1527 field, TYPE_TAG_NAME (type));
1531 gen_namespace_elt (struct expression *exp,
1532 struct agent_expr *ax, struct axs_value *value,
1533 const struct type *curtype, char *name);
1535 gen_maybe_namespace_elt (struct expression *exp,
1536 struct agent_expr *ax, struct axs_value *value,
1537 const struct type *curtype, char *name);
1540 gen_static_field (struct gdbarch *gdbarch,
1541 struct agent_expr *ax, struct axs_value *value,
1542 struct type *type, int fieldno)
1544 if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR)
1546 ax_const_l (ax, TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
1547 value->kind = axs_lvalue_memory;
1548 value->type = TYPE_FIELD_TYPE (type, fieldno);
1549 value->optimized_out = 0;
1553 const char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
1554 struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0);
1558 gen_var_ref (gdbarch, ax, value, sym);
1560 /* Don't error if the value was optimized out, we may be
1561 scanning all static fields and just want to pass over this
1562 and continue with the rest. */
1566 /* Silently assume this was optimized out; class printing
1567 will let the user know why the data is missing. */
1568 value->optimized_out = 1;
1574 gen_struct_elt_for_reference (struct expression *exp,
1575 struct agent_expr *ax, struct axs_value *value,
1576 struct type *type, char *fieldname)
1578 struct type *t = type;
1581 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1582 && TYPE_CODE (t) != TYPE_CODE_UNION)
1583 internal_error (__FILE__, __LINE__,
1584 _("non-aggregate type to gen_struct_elt_for_reference"));
1586 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1588 char *t_field_name = TYPE_FIELD_NAME (t, i);
1590 if (t_field_name && strcmp (t_field_name, fieldname) == 0)
1592 if (field_is_static (&TYPE_FIELD (t, i)))
1594 gen_static_field (exp->gdbarch, ax, value, t, i);
1595 if (value->optimized_out)
1596 error (_("static field `%s' has been "
1597 "optimized out, cannot use"),
1601 if (TYPE_FIELD_PACKED (t, i))
1602 error (_("pointers to bitfield members not allowed"));
1604 /* FIXME we need a way to do "want_address" equivalent */
1606 error (_("Cannot reference non-static field \"%s\""), fieldname);
1610 /* FIXME add other scoped-reference cases here */
1612 /* Do a last-ditch lookup. */
1613 return gen_maybe_namespace_elt (exp, ax, value, type, fieldname);
1616 /* C++: Return the member NAME of the namespace given by the type
1620 gen_namespace_elt (struct expression *exp,
1621 struct agent_expr *ax, struct axs_value *value,
1622 const struct type *curtype, char *name)
1624 int found = gen_maybe_namespace_elt (exp, ax, value, curtype, name);
1627 error (_("No symbol \"%s\" in namespace \"%s\"."),
1628 name, TYPE_TAG_NAME (curtype));
1633 /* A helper function used by value_namespace_elt and
1634 value_struct_elt_for_reference. It looks up NAME inside the
1635 context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
1636 is a class and NAME refers to a type in CURTYPE itself (as opposed
1637 to, say, some base class of CURTYPE). */
1640 gen_maybe_namespace_elt (struct expression *exp,
1641 struct agent_expr *ax, struct axs_value *value,
1642 const struct type *curtype, char *name)
1644 const char *namespace_name = TYPE_TAG_NAME (curtype);
1647 sym = cp_lookup_symbol_namespace (namespace_name, name,
1648 block_for_pc (ax->scope),
1654 gen_var_ref (exp->gdbarch, ax, value, sym);
1656 if (value->optimized_out)
1657 error (_("`%s' has been optimized out, cannot use"),
1658 SYMBOL_PRINT_NAME (sym));
1665 gen_aggregate_elt_ref (struct expression *exp,
1666 struct agent_expr *ax, struct axs_value *value,
1667 struct type *type, char *field,
1668 char *operator_name, char *operand_name)
1670 switch (TYPE_CODE (type))
1672 case TYPE_CODE_STRUCT:
1673 case TYPE_CODE_UNION:
1674 return gen_struct_elt_for_reference (exp, ax, value, type, field);
1676 case TYPE_CODE_NAMESPACE:
1677 return gen_namespace_elt (exp, ax, value, type, field);
1680 internal_error (__FILE__, __LINE__,
1681 _("non-aggregate type in gen_aggregate_elt_ref"));
1687 /* Generate code for GDB's magical `repeat' operator.
1688 LVALUE @ INT creates an array INT elements long, and whose elements
1689 have the same type as LVALUE, located in memory so that LVALUE is
1690 its first element. For example, argv[0]@argc gives you the array
1691 of command-line arguments.
1693 Unfortunately, because we have to know the types before we actually
1694 have a value for the expression, we can't implement this perfectly
1695 without changing the type system, having values that occupy two
1696 stack slots, doing weird things with sizeof, etc. So we require
1697 the right operand to be a constant expression. */
1699 gen_repeat (struct expression *exp, union exp_element **pc,
1700 struct agent_expr *ax, struct axs_value *value)
1702 struct axs_value value1;
1704 /* We don't want to turn this into an rvalue, so no conversions
1706 gen_expr (exp, pc, ax, &value1);
1707 if (value1.kind != axs_lvalue_memory)
1708 error (_("Left operand of `@' must be an object in memory."));
1710 /* Evaluate the length; it had better be a constant. */
1712 struct value *v = const_expr (pc);
1716 error (_("Right operand of `@' must be a "
1717 "constant, in agent expressions."));
1718 if (TYPE_CODE (value_type (v)) != TYPE_CODE_INT)
1719 error (_("Right operand of `@' must be an integer."));
1720 length = value_as_long (v);
1722 error (_("Right operand of `@' must be positive."));
1724 /* The top of the stack is already the address of the object, so
1725 all we need to do is frob the type of the lvalue. */
1727 /* FIXME-type-allocation: need a way to free this type when we are
1730 = lookup_array_range_type (value1.type, 0, length - 1);
1732 value->kind = axs_lvalue_memory;
1733 value->type = array;
1739 /* Emit code for the `sizeof' operator.
1740 *PC should point at the start of the operand expression; we advance it
1741 to the first instruction after the operand. */
1743 gen_sizeof (struct expression *exp, union exp_element **pc,
1744 struct agent_expr *ax, struct axs_value *value,
1745 struct type *size_type)
1747 /* We don't care about the value of the operand expression; we only
1748 care about its type. However, in the current arrangement, the
1749 only way to find an expression's type is to generate code for it.
1750 So we generate code for the operand, and then throw it away,
1751 replacing it with code that simply pushes its size. */
1752 int start = ax->len;
1754 gen_expr (exp, pc, ax, value);
1756 /* Throw away the code we just generated. */
1759 ax_const_l (ax, TYPE_LENGTH (value->type));
1760 value->kind = axs_rvalue;
1761 value->type = size_type;
1765 /* Generating bytecode from GDB expressions: general recursive thingy */
1768 /* A gen_expr function written by a Gen-X'er guy.
1769 Append code for the subexpression of EXPR starting at *POS_P to AX. */
1771 gen_expr (struct expression *exp, union exp_element **pc,
1772 struct agent_expr *ax, struct axs_value *value)
1774 /* Used to hold the descriptions of operand expressions. */
1775 struct axs_value value1, value2, value3;
1776 enum exp_opcode op = (*pc)[0].opcode, op2;
1777 int if1, go1, if2, go2, end;
1778 struct type *int_type = builtin_type (exp->gdbarch)->builtin_int;
1780 /* If we're looking at a constant expression, just push its value. */
1782 struct value *v = maybe_const_expr (pc);
1786 ax_const_l (ax, value_as_long (v));
1787 value->kind = axs_rvalue;
1788 value->type = check_typedef (value_type (v));
1793 /* Otherwise, go ahead and generate code for it. */
1796 /* Binary arithmetic operators. */
1804 case BINOP_SUBSCRIPT:
1805 case BINOP_BITWISE_AND:
1806 case BINOP_BITWISE_IOR:
1807 case BINOP_BITWISE_XOR:
1809 case BINOP_NOTEQUAL:
1815 gen_expr (exp, pc, ax, &value1);
1816 gen_usual_unary (exp, ax, &value1);
1817 gen_expr_binop_rest (exp, op, pc, ax, value, &value1, &value2);
1820 case BINOP_LOGICAL_AND:
1822 /* Generate the obvious sequence of tests and jumps. */
1823 gen_expr (exp, pc, ax, &value1);
1824 gen_usual_unary (exp, ax, &value1);
1825 if1 = ax_goto (ax, aop_if_goto);
1826 go1 = ax_goto (ax, aop_goto);
1827 ax_label (ax, if1, ax->len);
1828 gen_expr (exp, pc, ax, &value2);
1829 gen_usual_unary (exp, ax, &value2);
1830 if2 = ax_goto (ax, aop_if_goto);
1831 go2 = ax_goto (ax, aop_goto);
1832 ax_label (ax, if2, ax->len);
1834 end = ax_goto (ax, aop_goto);
1835 ax_label (ax, go1, ax->len);
1836 ax_label (ax, go2, ax->len);
1838 ax_label (ax, end, ax->len);
1839 value->kind = axs_rvalue;
1840 value->type = int_type;
1843 case BINOP_LOGICAL_OR:
1845 /* Generate the obvious sequence of tests and jumps. */
1846 gen_expr (exp, pc, ax, &value1);
1847 gen_usual_unary (exp, ax, &value1);
1848 if1 = ax_goto (ax, aop_if_goto);
1849 gen_expr (exp, pc, ax, &value2);
1850 gen_usual_unary (exp, ax, &value2);
1851 if2 = ax_goto (ax, aop_if_goto);
1853 end = ax_goto (ax, aop_goto);
1854 ax_label (ax, if1, ax->len);
1855 ax_label (ax, if2, ax->len);
1857 ax_label (ax, end, ax->len);
1858 value->kind = axs_rvalue;
1859 value->type = int_type;
1864 gen_expr (exp, pc, ax, &value1);
1865 gen_usual_unary (exp, ax, &value1);
1866 /* For (A ? B : C), it's easiest to generate subexpression
1867 bytecodes in order, but if_goto jumps on true, so we invert
1868 the sense of A. Then we can do B by dropping through, and
1870 gen_logical_not (ax, &value1, int_type);
1871 if1 = ax_goto (ax, aop_if_goto);
1872 gen_expr (exp, pc, ax, &value2);
1873 gen_usual_unary (exp, ax, &value2);
1874 end = ax_goto (ax, aop_goto);
1875 ax_label (ax, if1, ax->len);
1876 gen_expr (exp, pc, ax, &value3);
1877 gen_usual_unary (exp, ax, &value3);
1878 ax_label (ax, end, ax->len);
1879 /* This is arbitary - what if B and C are incompatible types? */
1880 value->type = value2.type;
1881 value->kind = value2.kind;
1886 if ((*pc)[0].opcode == OP_INTERNALVAR)
1888 char *name = internalvar_name ((*pc)[1].internalvar);
1889 struct trace_state_variable *tsv;
1892 gen_expr (exp, pc, ax, value);
1893 tsv = find_trace_state_variable (name);
1896 ax_tsv (ax, aop_setv, tsv->number);
1898 ax_tsv (ax, aop_tracev, tsv->number);
1901 error (_("$%s is not a trace state variable, "
1902 "may not assign to it"), name);
1905 error (_("May only assign to trace state variables"));
1908 case BINOP_ASSIGN_MODIFY:
1910 op2 = (*pc)[0].opcode;
1913 if ((*pc)[0].opcode == OP_INTERNALVAR)
1915 char *name = internalvar_name ((*pc)[1].internalvar);
1916 struct trace_state_variable *tsv;
1919 tsv = find_trace_state_variable (name);
1922 /* The tsv will be the left half of the binary operation. */
1923 ax_tsv (ax, aop_getv, tsv->number);
1925 ax_tsv (ax, aop_tracev, tsv->number);
1926 /* Trace state variables are always 64-bit integers. */
1927 value1.kind = axs_rvalue;
1928 value1.type = builtin_type (exp->gdbarch)->builtin_long_long;
1929 /* Now do right half of expression. */
1930 gen_expr_binop_rest (exp, op2, pc, ax, value, &value1, &value2);
1931 /* We have a result of the binary op, set the tsv. */
1932 ax_tsv (ax, aop_setv, tsv->number);
1934 ax_tsv (ax, aop_tracev, tsv->number);
1937 error (_("$%s is not a trace state variable, "
1938 "may not assign to it"), name);
1941 error (_("May only assign to trace state variables"));
1944 /* Note that we need to be a little subtle about generating code
1945 for comma. In C, we can do some optimizations here because
1946 we know the left operand is only being evaluated for effect.
1947 However, if the tracing kludge is in effect, then we always
1948 need to evaluate the left hand side fully, so that all the
1949 variables it mentions get traced. */
1952 gen_expr (exp, pc, ax, &value1);
1953 /* Don't just dispose of the left operand. We might be tracing,
1954 in which case we want to emit code to trace it if it's an
1956 gen_traced_pop (exp->gdbarch, ax, &value1);
1957 gen_expr (exp, pc, ax, value);
1958 /* It's the consumer's responsibility to trace the right operand. */
1961 case OP_LONG: /* some integer constant */
1963 struct type *type = (*pc)[1].type;
1964 LONGEST k = (*pc)[2].longconst;
1967 gen_int_literal (ax, value, k, type);
1972 gen_var_ref (exp->gdbarch, ax, value, (*pc)[2].symbol);
1974 if (value->optimized_out)
1975 error (_("`%s' has been optimized out, cannot use"),
1976 SYMBOL_PRINT_NAME ((*pc)[2].symbol));
1983 const char *name = &(*pc)[2].string;
1986 (*pc) += 4 + BYTES_TO_EXP_ELEM ((*pc)[1].longconst + 1);
1987 reg = user_reg_map_name_to_regnum (exp->gdbarch, name, strlen (name));
1989 internal_error (__FILE__, __LINE__,
1990 _("Register $%s not available"), name);
1991 /* No support for tracing user registers yet. */
1992 if (reg >= gdbarch_num_regs (exp->gdbarch)
1993 + gdbarch_num_pseudo_regs (exp->gdbarch))
1994 error (_("'%s' is a user-register; "
1995 "GDB cannot yet trace user-register contents."),
1997 value->kind = axs_lvalue_register;
1999 value->type = register_type (exp->gdbarch, reg);
2003 case OP_INTERNALVAR:
2005 const char *name = internalvar_name ((*pc)[1].internalvar);
2006 struct trace_state_variable *tsv;
2009 tsv = find_trace_state_variable (name);
2012 ax_tsv (ax, aop_getv, tsv->number);
2014 ax_tsv (ax, aop_tracev, tsv->number);
2015 /* Trace state variables are always 64-bit integers. */
2016 value->kind = axs_rvalue;
2017 value->type = builtin_type (exp->gdbarch)->builtin_long_long;
2020 error (_("$%s is not a trace state variable; GDB agent "
2021 "expressions cannot use convenience variables."), name);
2025 /* Weirdo operator: see comments for gen_repeat for details. */
2027 /* Note that gen_repeat handles its own argument evaluation. */
2029 gen_repeat (exp, pc, ax, value);
2034 struct type *type = (*pc)[1].type;
2037 gen_expr (exp, pc, ax, value);
2038 gen_cast (ax, value, type);
2044 struct type *type = check_typedef ((*pc)[1].type);
2047 gen_expr (exp, pc, ax, value);
2049 /* If we have an axs_rvalue or an axs_lvalue_memory, then we
2050 already have the right value on the stack. For
2051 axs_lvalue_register, we must convert. */
2052 if (value->kind == axs_lvalue_register)
2053 require_rvalue (ax, value);
2056 value->kind = axs_lvalue_memory;
2062 /* + FOO is equivalent to 0 + FOO, which can be optimized. */
2063 gen_expr (exp, pc, ax, value);
2064 gen_usual_unary (exp, ax, value);
2069 /* -FOO is equivalent to 0 - FOO. */
2070 gen_int_literal (ax, &value1, 0,
2071 builtin_type (exp->gdbarch)->builtin_int);
2072 gen_usual_unary (exp, ax, &value1); /* shouldn't do much */
2073 gen_expr (exp, pc, ax, &value2);
2074 gen_usual_unary (exp, ax, &value2);
2075 gen_usual_arithmetic (exp, ax, &value1, &value2);
2076 gen_binop (ax, value, &value1, &value2, aop_sub, aop_sub, 1, "negation");
2079 case UNOP_LOGICAL_NOT:
2081 gen_expr (exp, pc, ax, value);
2082 gen_usual_unary (exp, ax, value);
2083 gen_logical_not (ax, value, int_type);
2086 case UNOP_COMPLEMENT:
2088 gen_expr (exp, pc, ax, value);
2089 gen_usual_unary (exp, ax, value);
2090 gen_integral_promotions (exp, ax, value);
2091 gen_complement (ax, value);
2096 gen_expr (exp, pc, ax, value);
2097 gen_usual_unary (exp, ax, value);
2098 if (!pointer_type (value->type))
2099 error (_("Argument of unary `*' is not a pointer."));
2100 gen_deref (ax, value);
2105 gen_expr (exp, pc, ax, value);
2106 gen_address_of (ax, value);
2111 /* Notice that gen_sizeof handles its own operand, unlike most
2112 of the other unary operator functions. This is because we
2113 have to throw away the code we generate. */
2114 gen_sizeof (exp, pc, ax, value,
2115 builtin_type (exp->gdbarch)->builtin_int);
2118 case STRUCTOP_STRUCT:
2121 int length = (*pc)[1].longconst;
2122 char *name = &(*pc)[2].string;
2124 (*pc) += 4 + BYTES_TO_EXP_ELEM (length + 1);
2125 gen_expr (exp, pc, ax, value);
2126 if (op == STRUCTOP_STRUCT)
2127 gen_struct_ref (exp, ax, value, name, ".", "structure or union");
2128 else if (op == STRUCTOP_PTR)
2129 gen_struct_ref (exp, ax, value, name, "->",
2130 "pointer to a structure or union");
2132 /* If this `if' chain doesn't handle it, then the case list
2133 shouldn't mention it, and we shouldn't be here. */
2134 internal_error (__FILE__, __LINE__,
2135 _("gen_expr: unhandled struct case"));
2142 struct symbol *sym, *func;
2144 const struct language_defn *lang;
2146 b = block_for_pc (ax->scope);
2147 func = block_linkage_function (b);
2148 lang = language_def (SYMBOL_LANGUAGE (func));
2150 sym = lookup_language_this (lang, b);
2152 error (_("no `%s' found"), lang->la_name_of_this);
2154 gen_var_ref (exp->gdbarch, ax, value, sym);
2156 if (value->optimized_out)
2157 error (_("`%s' has been optimized out, cannot use"),
2158 SYMBOL_PRINT_NAME (sym));
2166 struct type *type = (*pc)[1].type;
2167 int length = longest_to_int ((*pc)[2].longconst);
2168 char *name = &(*pc)[3].string;
2171 found = gen_aggregate_elt_ref (exp, ax, value, type, name,
2174 error (_("There is no field named %s"), name);
2175 (*pc) += 5 + BYTES_TO_EXP_ELEM (length + 1);
2180 error (_("Attempt to use a type name as an expression."));
2183 error (_("Unsupported operator %s (%d) in expression."),
2184 op_string (op), op);
2188 /* This handles the middle-to-right-side of code generation for binary
2189 expressions, which is shared between regular binary operations and
2190 assign-modify (+= and friends) expressions. */
2193 gen_expr_binop_rest (struct expression *exp,
2194 enum exp_opcode op, union exp_element **pc,
2195 struct agent_expr *ax, struct axs_value *value,
2196 struct axs_value *value1, struct axs_value *value2)
2198 struct type *int_type = builtin_type (exp->gdbarch)->builtin_int;
2200 gen_expr (exp, pc, ax, value2);
2201 gen_usual_unary (exp, ax, value2);
2202 gen_usual_arithmetic (exp, ax, value1, value2);
2206 if (TYPE_CODE (value1->type) == TYPE_CODE_INT
2207 && pointer_type (value2->type))
2209 /* Swap the values and proceed normally. */
2210 ax_simple (ax, aop_swap);
2211 gen_ptradd (ax, value, value2, value1);
2213 else if (pointer_type (value1->type)
2214 && TYPE_CODE (value2->type) == TYPE_CODE_INT)
2215 gen_ptradd (ax, value, value1, value2);
2217 gen_binop (ax, value, value1, value2,
2218 aop_add, aop_add, 1, "addition");
2221 if (pointer_type (value1->type)
2222 && TYPE_CODE (value2->type) == TYPE_CODE_INT)
2223 gen_ptrsub (ax,value, value1, value2);
2224 else if (pointer_type (value1->type)
2225 && pointer_type (value2->type))
2226 /* FIXME --- result type should be ptrdiff_t */
2227 gen_ptrdiff (ax, value, value1, value2,
2228 builtin_type (exp->gdbarch)->builtin_long);
2230 gen_binop (ax, value, value1, value2,
2231 aop_sub, aop_sub, 1, "subtraction");
2234 gen_binop (ax, value, value1, value2,
2235 aop_mul, aop_mul, 1, "multiplication");
2238 gen_binop (ax, value, value1, value2,
2239 aop_div_signed, aop_div_unsigned, 1, "division");
2242 gen_binop (ax, value, value1, value2,
2243 aop_rem_signed, aop_rem_unsigned, 1, "remainder");
2246 gen_binop (ax, value, value1, value2,
2247 aop_lsh, aop_lsh, 1, "left shift");
2250 gen_binop (ax, value, value1, value2,
2251 aop_rsh_signed, aop_rsh_unsigned, 1, "right shift");
2253 case BINOP_SUBSCRIPT:
2257 if (binop_types_user_defined_p (op, value1->type, value2->type))
2259 error (_("cannot subscript requested type: "
2260 "cannot call user defined functions"));
2264 /* If the user attempts to subscript something that is not
2265 an array or pointer type (like a plain int variable for
2266 example), then report this as an error. */
2267 type = check_typedef (value1->type);
2268 if (TYPE_CODE (type) != TYPE_CODE_ARRAY
2269 && TYPE_CODE (type) != TYPE_CODE_PTR)
2271 if (TYPE_NAME (type))
2272 error (_("cannot subscript something of type `%s'"),
2275 error (_("cannot subscript requested type"));
2279 if (!is_integral_type (value2->type))
2280 error (_("Argument to arithmetic operation "
2281 "not a number or boolean."));
2283 gen_ptradd (ax, value, value1, value2);
2284 gen_deref (ax, value);
2287 case BINOP_BITWISE_AND:
2288 gen_binop (ax, value, value1, value2,
2289 aop_bit_and, aop_bit_and, 0, "bitwise and");
2292 case BINOP_BITWISE_IOR:
2293 gen_binop (ax, value, value1, value2,
2294 aop_bit_or, aop_bit_or, 0, "bitwise or");
2297 case BINOP_BITWISE_XOR:
2298 gen_binop (ax, value, value1, value2,
2299 aop_bit_xor, aop_bit_xor, 0, "bitwise exclusive-or");
2303 gen_equal (ax, value, value1, value2, int_type);
2306 case BINOP_NOTEQUAL:
2307 gen_equal (ax, value, value1, value2, int_type);
2308 gen_logical_not (ax, value, int_type);
2312 gen_less (ax, value, value1, value2, int_type);
2316 ax_simple (ax, aop_swap);
2317 gen_less (ax, value, value1, value2, int_type);
2321 ax_simple (ax, aop_swap);
2322 gen_less (ax, value, value1, value2, int_type);
2323 gen_logical_not (ax, value, int_type);
2327 gen_less (ax, value, value1, value2, int_type);
2328 gen_logical_not (ax, value, int_type);
2332 /* We should only list operators in the outer case statement
2333 that we actually handle in the inner case statement. */
2334 internal_error (__FILE__, __LINE__,
2335 _("gen_expr: op case sets don't match"));
2340 /* Given a single variable and a scope, generate bytecodes to trace
2341 its value. This is for use in situations where we have only a
2342 variable's name, and no parsed expression; for instance, when the
2343 name comes from a list of local variables of a function. */
2346 gen_trace_for_var (CORE_ADDR scope, struct gdbarch *gdbarch,
2349 struct cleanup *old_chain = 0;
2350 struct agent_expr *ax = new_agent_expr (gdbarch, scope);
2351 struct axs_value value;
2353 old_chain = make_cleanup_free_agent_expr (ax);
2356 gen_var_ref (gdbarch, ax, &value, var);
2358 /* If there is no actual variable to trace, flag it by returning
2359 an empty agent expression. */
2360 if (value.optimized_out)
2362 do_cleanups (old_chain);
2366 /* Make sure we record the final object, and get rid of it. */
2367 gen_traced_pop (gdbarch, ax, &value);
2369 /* Oh, and terminate. */
2370 ax_simple (ax, aop_end);
2372 /* We have successfully built the agent expr, so cancel the cleanup
2373 request. If we add more cleanups that we always want done, this
2374 will have to get more complicated. */
2375 discard_cleanups (old_chain);
2379 /* Generating bytecode from GDB expressions: driver */
2381 /* Given a GDB expression EXPR, return bytecode to trace its value.
2382 The result will use the `trace' and `trace_quick' bytecodes to
2383 record the value of all memory touched by the expression. The
2384 caller can then use the ax_reqs function to discover which
2385 registers it relies upon. */
2387 gen_trace_for_expr (CORE_ADDR scope, struct expression *expr)
2389 struct cleanup *old_chain = 0;
2390 struct agent_expr *ax = new_agent_expr (expr->gdbarch, scope);
2391 union exp_element *pc;
2392 struct axs_value value;
2394 old_chain = make_cleanup_free_agent_expr (ax);
2398 value.optimized_out = 0;
2399 gen_expr (expr, &pc, ax, &value);
2401 /* Make sure we record the final object, and get rid of it. */
2402 gen_traced_pop (expr->gdbarch, ax, &value);
2404 /* Oh, and terminate. */
2405 ax_simple (ax, aop_end);
2407 /* We have successfully built the agent expr, so cancel the cleanup
2408 request. If we add more cleanups that we always want done, this
2409 will have to get more complicated. */
2410 discard_cleanups (old_chain);
2414 /* Given a GDB expression EXPR, return a bytecode sequence that will
2415 evaluate and return a result. The bytecodes will do a direct
2416 evaluation, using the current data on the target, rather than
2417 recording blocks of memory and registers for later use, as
2418 gen_trace_for_expr does. The generated bytecode sequence leaves
2419 the result of expression evaluation on the top of the stack. */
2422 gen_eval_for_expr (CORE_ADDR scope, struct expression *expr)
2424 struct cleanup *old_chain = 0;
2425 struct agent_expr *ax = new_agent_expr (expr->gdbarch, scope);
2426 union exp_element *pc;
2427 struct axs_value value;
2429 old_chain = make_cleanup_free_agent_expr (ax);
2433 value.optimized_out = 0;
2434 gen_expr (expr, &pc, ax, &value);
2436 require_rvalue (ax, &value);
2438 /* Oh, and terminate. */
2439 ax_simple (ax, aop_end);
2441 /* We have successfully built the agent expr, so cancel the cleanup
2442 request. If we add more cleanups that we always want done, this
2443 will have to get more complicated. */
2444 discard_cleanups (old_chain);
2449 gen_trace_for_return_address (CORE_ADDR scope, struct gdbarch *gdbarch)
2451 struct cleanup *old_chain = 0;
2452 struct agent_expr *ax = new_agent_expr (gdbarch, scope);
2453 struct axs_value value;
2455 old_chain = make_cleanup_free_agent_expr (ax);
2459 gdbarch_gen_return_address (gdbarch, ax, &value, scope);
2461 /* Make sure we record the final object, and get rid of it. */
2462 gen_traced_pop (gdbarch, ax, &value);
2464 /* Oh, and terminate. */
2465 ax_simple (ax, aop_end);
2467 /* We have successfully built the agent expr, so cancel the cleanup
2468 request. If we add more cleanups that we always want done, this
2469 will have to get more complicated. */
2470 discard_cleanups (old_chain);
2475 agent_command (char *exp, int from_tty)
2477 struct cleanup *old_chain = 0;
2478 struct expression *expr;
2479 struct agent_expr *agent;
2480 struct frame_info *fi = get_current_frame (); /* need current scope */
2482 /* We don't deal with overlay debugging at the moment. We need to
2483 think more carefully about this. If you copy this code into
2484 another command, change the error message; the user shouldn't
2485 have to know anything about agent expressions. */
2486 if (overlay_debugging)
2487 error (_("GDB can't do agent expression translation with overlays."));
2490 error_no_arg (_("expression to translate"));
2492 /* Recognize the return address collection directive specially. Note
2493 that it is not really an expression of any sort. */
2494 if (strcmp (exp, "$_ret") == 0)
2496 agent = gen_trace_for_return_address (get_frame_pc (fi),
2497 get_current_arch ());
2498 old_chain = make_cleanup_free_agent_expr (agent);
2502 expr = parse_expression (exp);
2503 old_chain = make_cleanup (free_current_contents, &expr);
2504 agent = gen_trace_for_expr (get_frame_pc (fi), expr);
2505 make_cleanup_free_agent_expr (agent);
2509 ax_print (gdb_stdout, agent);
2511 /* It would be nice to call ax_reqs here to gather some general info
2512 about the expression, and then print out the result. */
2514 do_cleanups (old_chain);
2518 /* Parse the given expression, compile it into an agent expression
2519 that does direct evaluation, and display the resulting
2523 agent_eval_command (char *exp, int from_tty)
2525 struct cleanup *old_chain = 0;
2526 struct expression *expr;
2527 struct agent_expr *agent;
2528 struct frame_info *fi = get_current_frame (); /* need current scope */
2530 /* We don't deal with overlay debugging at the moment. We need to
2531 think more carefully about this. If you copy this code into
2532 another command, change the error message; the user shouldn't
2533 have to know anything about agent expressions. */
2534 if (overlay_debugging)
2535 error (_("GDB can't do agent expression translation with overlays."));
2538 error_no_arg (_("expression to translate"));
2540 expr = parse_expression (exp);
2541 old_chain = make_cleanup (free_current_contents, &expr);
2542 agent = gen_eval_for_expr (get_frame_pc (fi), expr);
2543 make_cleanup_free_agent_expr (agent);
2545 ax_print (gdb_stdout, agent);
2547 /* It would be nice to call ax_reqs here to gather some general info
2548 about the expression, and then print out the result. */
2550 do_cleanups (old_chain);
2555 /* Initialization code. */
2557 void _initialize_ax_gdb (void);
2559 _initialize_ax_gdb (void)
2561 add_cmd ("agent", class_maintenance, agent_command,
2562 _("Translate an expression into "
2563 "remote agent bytecode for tracing."),
2566 add_cmd ("agent-eval", class_maintenance, agent_eval_command,
2567 _("Translate an expression into remote "
2568 "agent bytecode for evaluation."),