Add return address collection for tracepoints.
[external/binutils.git] / gdb / ax-gdb.c
1 /* GDB-specific functions for operating on agent expressions.
2
3    Copyright (C) 1998, 1999, 2000, 2001, 2003, 2007, 2008, 2009, 2010, 2011
4    Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
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.
12
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.
17
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/>.  */
20
21 #include "defs.h"
22 #include "symtab.h"
23 #include "symfile.h"
24 #include "gdbtypes.h"
25 #include "language.h"
26 #include "value.h"
27 #include "expression.h"
28 #include "command.h"
29 #include "gdbcmd.h"
30 #include "frame.h"
31 #include "target.h"
32 #include "ax.h"
33 #include "ax-gdb.h"
34 #include "gdb_string.h"
35 #include "block.h"
36 #include "regcache.h"
37 #include "user-regs.h"
38 #include "language.h"
39 #include "dictionary.h"
40 #include "breakpoint.h"
41 #include "tracepoint.h"
42 #include "cp-support.h"
43 #include "arch-utils.h"
44
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
49    code.
50
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
57    strings.
58
59    Remember, "GBD" stands for "Great Britain, Dammit!"  So be careful.  */
60 \f
61
62
63 /* Prototypes for local functions.  */
64
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  */
69
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);
73
74 static void gen_traced_pop (struct gdbarch *, struct agent_expr *,
75                             struct axs_value *);
76
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);
81
82
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);
89
90
91 static void gen_int_literal (struct agent_expr *ax,
92                              struct axs_value *value,
93                              LONGEST k, struct type *type);
94
95
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,
126                        enum agent_op op,
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,
144                                      struct type *type);
145 static void gen_struct_ref (struct expression *exp, struct agent_expr *ax,
146                             struct axs_value *value,
147                             char *field,
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);
165
166 static void agent_command (char *exp, int from_tty);
167 \f
168
169 /* Detecting constant expressions.  */
170
171 /* If the variable reference at *PC is a constant, return its value.
172    Otherwise, return zero.
173
174    Hey, Wally!  How can a variable reference be a constant?
175
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
181    situation.
182
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
187    proletariat?  */
188
189 static struct value *
190 const_var_ref (struct symbol *var)
191 {
192   struct type *type = SYMBOL_TYPE (var);
193
194   switch (SYMBOL_CLASS (var))
195     {
196     case LOC_CONST:
197       return value_from_longest (type, (LONGEST) SYMBOL_VALUE (var));
198
199     case LOC_LABEL:
200       return value_from_pointer (type, (CORE_ADDR) SYMBOL_VALUE_ADDRESS (var));
201
202     default:
203       return 0;
204     }
205 }
206
207
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
211    anywhere.  */
212 static struct value *
213 const_expr (union exp_element **pc)
214 {
215   enum exp_opcode op = (*pc)->opcode;
216   struct value *v1;
217
218   switch (op)
219     {
220     case OP_LONG:
221       {
222         struct type *type = (*pc)[1].type;
223         LONGEST k = (*pc)[2].longconst;
224
225         (*pc) += 4;
226         return value_from_longest (type, k);
227       }
228
229     case OP_VAR_VALUE:
230       {
231         struct value *v = const_var_ref ((*pc)[2].symbol);
232
233         (*pc) += 4;
234         return v;
235       }
236
237       /* We could add more operators in here.  */
238
239     case UNOP_NEG:
240       (*pc)++;
241       v1 = const_expr (pc);
242       if (v1)
243         return value_neg (v1);
244       else
245         return 0;
246
247     default:
248       return 0;
249     }
250 }
251
252
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)
257 {
258   union exp_element *tentative_pc = *pc;
259   struct value *v = const_expr (&tentative_pc);
260
261   /* If we got a value, then update the real PC.  */
262   if (v)
263     *pc = tentative_pc;
264
265   return v;
266 }
267 \f
268
269 /* Generating bytecode from GDB expressions: general assumptions */
270
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.
274
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.
281
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
287    with bignums!)
288
289    - We don't support side effects.  Thus, we don't have to worry about
290    GCC's generalized lvalues, function calls, etc.
291
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.
296
297    - We assume all subexpressions have a static, unchanging type.  If
298    we tried to support convenience variables, this would be a
299    problem.
300
301    - All values on the stack should always be fully zero- or
302    sign-extended.
303
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.)  */
311 \f
312
313 /* Generating bytecode from GDB expressions: the `trace' kludge  */
314
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.
318
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.
321
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
326    in GDB.
327
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
332    I've done.
333
334    Setting the flag trace_kludge to non-zero enables the code that
335    emits the trace bytecodes at the appropriate points.  */
336 int trace_kludge;
337
338 /* Scan for all static fields in the given class, including any base
339    classes, and generate tracing bytecodes for each.  */
340
341 static void
342 gen_trace_static_fields (struct gdbarch *gdbarch,
343                          struct agent_expr *ax,
344                          struct type *type)
345 {
346   int i, nbases = TYPE_N_BASECLASSES (type);
347   struct axs_value value;
348
349   CHECK_TYPEDEF (type);
350
351   for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
352     {
353       if (field_is_static (&TYPE_FIELD (type, i)))
354         {
355           gen_static_field (gdbarch, ax, &value, type, i);
356           if (value.optimized_out)
357             continue;
358           switch (value.kind)
359             {
360             case axs_lvalue_memory:
361               {
362                 int length = TYPE_LENGTH (check_typedef (value.type));
363
364                 ax_const_l (ax, length);
365                 ax_simple (ax, aop_trace);
366               }
367               break;
368
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);
373
374             default:
375               break;
376             }
377         }
378     }
379
380   /* Now scan through base classes recursively.  */
381   for (i = 0; i < nbases; i++)
382     {
383       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
384
385       gen_trace_static_fields (gdbarch, ax, basetype);
386     }
387 }
388
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.  */
392 static void
393 gen_traced_pop (struct gdbarch *gdbarch,
394                 struct agent_expr *ax, struct axs_value *value)
395 {
396   if (trace_kludge)
397     switch (value->kind)
398       {
399       case axs_rvalue:
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);
403         break;
404
405       case axs_lvalue_memory:
406         {
407           int length = TYPE_LENGTH (check_typedef (value->type));
408
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);
416         }
417         break;
418
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);
425         break;
426       }
427   else
428     /* If we're not tracing, just pop the value.  */
429     ax_simple (ax, aop_pop);
430
431   /* To trace C++ classes with static fields stored elsewhere.  */
432   if (trace_kludge
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);
436 }
437 \f
438
439
440 /* Generating bytecode from GDB expressions: helper functions */
441
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.  */
444 static void
445 gen_sign_extend (struct agent_expr *ax, struct type *type)
446 {
447   /* Do we need to sign-extend this?  */
448   if (!TYPE_UNSIGNED (type))
449     ax_ext (ax, TYPE_LENGTH (type) * TARGET_CHAR_BIT);
450 }
451
452
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
455    needed.  */
456 static void
457 gen_extend (struct agent_expr *ax, struct type *type)
458 {
459   int bits = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
460
461   /* I just had to.  */
462   ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, bits));
463 }
464
465
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.  */
469 static void
470 gen_fetch (struct agent_expr *ax, struct type *type)
471 {
472   if (trace_kludge)
473     {
474       /* Record the area of memory we're about to fetch.  */
475       ax_trace_quick (ax, TYPE_LENGTH (type));
476     }
477
478   switch (TYPE_CODE (type))
479     {
480     case TYPE_CODE_PTR:
481     case TYPE_CODE_REF:
482     case TYPE_CODE_ENUM:
483     case TYPE_CODE_INT:
484     case TYPE_CODE_CHAR:
485     case TYPE_CODE_BOOL:
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))
489         {
490         case 8 / TARGET_CHAR_BIT:
491           ax_simple (ax, aop_ref8);
492           break;
493         case 16 / TARGET_CHAR_BIT:
494           ax_simple (ax, aop_ref16);
495           break;
496         case 32 / TARGET_CHAR_BIT:
497           ax_simple (ax, aop_ref32);
498           break;
499         case 64 / TARGET_CHAR_BIT:
500           ax_simple (ax, aop_ref64);
501           break;
502
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.  */
507         default:
508           internal_error (__FILE__, __LINE__,
509                           _("gen_fetch: strange size"));
510         }
511
512       gen_sign_extend (ax, type);
513       break;
514
515     default:
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"));
522     }
523 }
524
525
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.  */
529 static void
530 gen_left_shift (struct agent_expr *ax, int distance)
531 {
532   if (distance > 0)
533     {
534       ax_const_l (ax, distance);
535       ax_simple (ax, aop_lsh);
536     }
537   else if (distance < 0)
538     {
539       ax_const_l (ax, -distance);
540       ax_simple (ax, aop_rsh_unsigned);
541     }
542 }
543 \f
544
545
546 /* Generating bytecode from GDB expressions: symbol references */
547
548 /* Generate code to push the base address of the argument portion of
549    the top stack frame.  */
550 static void
551 gen_frame_args_address (struct gdbarch *gdbarch, struct agent_expr *ax)
552 {
553   int frame_reg;
554   LONGEST frame_offset;
555
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);
560 }
561
562
563 /* Generate code to push the base address of the locals portion of the
564    top stack frame.  */
565 static void
566 gen_frame_locals_address (struct gdbarch *gdbarch, struct agent_expr *ax)
567 {
568   int frame_reg;
569   LONGEST frame_offset;
570
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);
575 }
576
577
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
582    thing.  */
583 static void
584 gen_offset (struct agent_expr *ax, int offset)
585 {
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
588      bytecode.  */
589   if (offset > 0)
590     {
591       ax_const_l (ax, offset);
592       ax_simple (ax, aop_add);
593     }
594   else if (offset < 0)
595     {
596       ax_const_l (ax, -offset);
597       ax_simple (ax, aop_sub);
598     }
599 }
600
601
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.  */
605 static void
606 gen_sym_offset (struct agent_expr *ax, struct symbol *var)
607 {
608   gen_offset (ax, SYMBOL_VALUE (var));
609 }
610
611
612 /* Generate code for a variable reference to AX.  The variable is the
613    symbol VAR.  Set VALUE to describe the result.  */
614
615 static void
616 gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
617              struct axs_value *value, struct symbol *var)
618 {
619   /* Dereference any typedefs.  */
620   value->type = check_typedef (SYMBOL_TYPE (var));
621   value->optimized_out = 0;
622
623   /* I'm imitating the code in read_var_value.  */
624   switch (SYMBOL_CLASS (var))
625     {
626     case LOC_CONST:             /* A constant, like an enum value.  */
627       ax_const_l (ax, (LONGEST) SYMBOL_VALUE (var));
628       value->kind = axs_rvalue;
629       break;
630
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;
634       break;
635
636     case LOC_CONST_BYTES:
637       internal_error (__FILE__, __LINE__,
638                       _("gen_var_ref: LOC_CONST_BYTES "
639                         "symbols are not supported"));
640
641       /* Variable at a fixed location in memory.  Easy.  */
642     case LOC_STATIC:
643       /* Push the address of the variable.  */
644       ax_const_l (ax, SYMBOL_VALUE_ADDRESS (var));
645       value->kind = axs_lvalue_memory;
646       break;
647
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;
652       break;
653
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;
661       break;
662
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;
667       break;
668
669     case LOC_TYPEDEF:
670       error (_("Cannot compute value of typedef `%s'."),
671              SYMBOL_PRINT_NAME (var));
672       break;
673
674     case LOC_BLOCK:
675       ax_const_l (ax, BLOCK_START (SYMBOL_BLOCK_VALUE (var)));
676       value->kind = axs_rvalue;
677       break;
678
679     case LOC_REGISTER:
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
682          right code.  */
683       value->kind = axs_lvalue_register;
684       value->u.reg = SYMBOL_REGISTER_OPS (var)->register_number (var, gdbarch);
685       break;
686
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;
694       break;
695
696     case LOC_UNRESOLVED:
697       {
698         struct minimal_symbol *msym
699           = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL);
700
701         if (!msym)
702           error (_("Couldn't resolve symbol `%s'."), SYMBOL_PRINT_NAME (var));
703
704         /* Push the address of the variable.  */
705         ax_const_l (ax, SYMBOL_VALUE_ADDRESS (msym));
706         value->kind = axs_lvalue_memory;
707       }
708       break;
709
710     case LOC_COMPUTED:
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);
717       break;
718
719     case LOC_OPTIMIZED_OUT:
720       /* Flag this, but don't say anything; leave it up to callers to
721          warn the user.  */
722       value->optimized_out = 1;
723       break;
724
725     default:
726       error (_("Cannot find value of botched symbol `%s'."),
727              SYMBOL_PRINT_NAME (var));
728       break;
729     }
730 }
731 \f
732
733
734 /* Generating bytecode from GDB expressions: literals */
735
736 static void
737 gen_int_literal (struct agent_expr *ax, struct axs_value *value, LONGEST k,
738                  struct type *type)
739 {
740   ax_const_l (ax, k);
741   value->kind = axs_rvalue;
742   value->type = check_typedef (type);
743 }
744 \f
745
746
747 /* Generating bytecode from GDB expressions: unary conversions, casts */
748
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
751    that.  */
752 static void
753 require_rvalue (struct agent_expr *ax, struct axs_value *value)
754 {
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."));
763
764   switch (value->kind)
765     {
766     case axs_rvalue:
767       /* It's already an rvalue.  */
768       break;
769
770     case axs_lvalue_memory:
771       /* The top of stack is the address of the object.  Dereference.  */
772       gen_fetch (ax, value->type);
773       break;
774
775     case axs_lvalue_register:
776       /* There's nothing on the stack, but value->u.reg is the
777          register number containing the value.
778
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);
783       break;
784     }
785
786   value->kind = axs_rvalue;
787 }
788
789
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.
794
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.
799
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.  */
805
806 static void
807 gen_usual_unary (struct expression *exp, struct agent_expr *ax,
808                  struct axs_value *value)
809 {
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?  */
813
814   /* Some types require special handling.  */
815   switch (TYPE_CODE (value->type))
816     {
817       /* Functions get converted to a pointer to the function.  */
818     case TYPE_CODE_FUNC:
819       value->type = lookup_pointer_type (value->type);
820       value->kind = axs_rvalue; /* Should always be true, but just in case.  */
821       break;
822
823       /* Arrays get converted to a pointer to their first element, and
824          are no longer an lvalue.  */
825     case TYPE_CODE_ARRAY:
826       {
827         struct type *elements = TYPE_TARGET_TYPE (value->type);
828
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.  */
833       }
834       break;
835
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:
840       return;
841
842       /* If the value is an enum or a bool, call it an integer.  */
843     case TYPE_CODE_ENUM:
844     case TYPE_CODE_BOOL:
845       value->type = builtin_type (exp->gdbarch)->builtin_int;
846       break;
847     }
848
849   /* If the value is an lvalue, dereference it.  */
850   require_rvalue (ax, value);
851 }
852
853
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.  */
856 static int
857 type_wider_than (struct type *type1, struct type *type2)
858 {
859   return (TYPE_LENGTH (type1) > TYPE_LENGTH (type2)
860           || (TYPE_LENGTH (type1) == TYPE_LENGTH (type2)
861               && TYPE_UNSIGNED (type1)
862               && !TYPE_UNSIGNED (type2)));
863 }
864
865
866 /* Return the "wider" of the two types TYPE1 and TYPE2.  */
867 static struct type *
868 max_type (struct type *type1, struct type *type2)
869 {
870   return type_wider_than (type1, type2) ? type1 : type2;
871 }
872
873
874 /* Generate code to convert a scalar value of type FROM to type TO.  */
875 static void
876 gen_conversion (struct agent_expr *ax, struct type *from, struct type *to)
877 {
878   /* Perhaps there is a more graceful way to state these rules.  */
879
880   /* If we're converting to a narrower type, then we need to clear out
881      the upper bits.  */
882   if (TYPE_LENGTH (to) < TYPE_LENGTH (from))
883     gen_extend (ax, from);
884
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))
888     {
889       if (TYPE_UNSIGNED (from) != TYPE_UNSIGNED (to))
890         gen_extend (ax, to);
891     }
892
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))
896     {
897       if (TYPE_UNSIGNED (to))
898         gen_extend (ax, to);
899     }
900 }
901
902
903 /* Return non-zero iff the type FROM will require any bytecodes to be
904    emitted to be converted to the type TO.  */
905 static int
906 is_nontrivial_conversion (struct type *from, struct type *to)
907 {
908   struct agent_expr *ax = new_agent_expr (NULL, 0);
909   int nontrivial;
910
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
916      gen_conversion.  */
917   gen_conversion (ax, from, to);
918   nontrivial = ax->len > 0;
919   free_agent_expr (ax);
920   return nontrivial;
921 }
922
923
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.  */
929 static void
930 gen_usual_arithmetic (struct expression *exp, struct agent_expr *ax,
931                       struct axs_value *value1, struct axs_value *value2)
932 {
933   /* Do the usual binary conversions.  */
934   if (TYPE_CODE (value1->type) == TYPE_CODE_INT
935       && TYPE_CODE (value2->type) == TYPE_CODE_INT)
936     {
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));
944
945       /* Deal with value2, on the top of the stack.  */
946       gen_conversion (ax, value2->type, target);
947
948       /* Deal with value1, not on the top of the stack.  Don't
949          generate the `swap' instructions if we're not actually going
950          to do anything.  */
951       if (is_nontrivial_conversion (value1->type, target))
952         {
953           ax_simple (ax, aop_swap);
954           gen_conversion (ax, value1->type, target);
955           ax_simple (ax, aop_swap);
956         }
957
958       value1->type = value2->type = check_typedef (target);
959     }
960 }
961
962
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.  */
966 static void
967 gen_integral_promotions (struct expression *exp, struct agent_expr *ax,
968                          struct axs_value *value)
969 {
970   const struct builtin_type *builtin = builtin_type (exp->gdbarch);
971
972   if (!type_wider_than (value->type, builtin->builtin_int))
973     {
974       gen_conversion (ax, value->type, builtin->builtin_int);
975       value->type = builtin->builtin_int;
976     }
977   else if (!type_wider_than (value->type, builtin->builtin_unsigned_int))
978     {
979       gen_conversion (ax, value->type, builtin->builtin_unsigned_int);
980       value->type = builtin->builtin_unsigned_int;
981     }
982 }
983
984
985 /* Generate code for a cast to TYPE.  */
986 static void
987 gen_cast (struct agent_expr *ax, struct axs_value *value, struct type *type)
988 {
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);
994
995   switch (TYPE_CODE (type))
996     {
997     case TYPE_CODE_PTR:
998     case TYPE_CODE_REF:
999       /* It's implementation-defined, and I'll bet this is what GCC
1000          does.  */
1001       break;
1002
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."));
1008
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
1015          this?  */
1016       break;
1017
1018     case TYPE_CODE_INT:
1019       gen_conversion (ax, value->type, type);
1020       break;
1021
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.  */
1027       break;
1028
1029     default:
1030       error (_("Casts to requested type are not yet implemented."));
1031     }
1032
1033   value->type = type;
1034 }
1035 \f
1036
1037
1038 /* Generating bytecode from GDB expressions: arithmetic */
1039
1040 /* Scale the integer on the top of the stack by the size of the target
1041    of the pointer type TYPE.  */
1042 static void
1043 gen_scale (struct agent_expr *ax, enum agent_op op, struct type *type)
1044 {
1045   struct type *element = TYPE_TARGET_TYPE (type);
1046
1047   if (TYPE_LENGTH (element) != 1)
1048     {
1049       ax_const_l (ax, TYPE_LENGTH (element));
1050       ax_simple (ax, op);
1051     }
1052 }
1053
1054
1055 /* Generate code for pointer arithmetic PTR + INT.  */
1056 static void
1057 gen_ptradd (struct agent_expr *ax, struct axs_value *value,
1058             struct axs_value *value1, struct axs_value *value2)
1059 {
1060   gdb_assert (pointer_type (value1->type));
1061   gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
1062
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;
1068 }
1069
1070
1071 /* Generate code for pointer arithmetic PTR - INT.  */
1072 static void
1073 gen_ptrsub (struct agent_expr *ax, struct axs_value *value,
1074             struct axs_value *value1, struct axs_value *value2)
1075 {
1076   gdb_assert (pointer_type (value1->type));
1077   gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
1078
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;
1084 }
1085
1086
1087 /* Generate code for pointer arithmetic PTR - PTR.  */
1088 static void
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)
1092 {
1093   gdb_assert (pointer_type (value1->type));
1094   gdb_assert (pointer_type (value2->type));
1095
1096   if (TYPE_LENGTH (TYPE_TARGET_TYPE (value1->type))
1097       != TYPE_LENGTH (TYPE_TARGET_TYPE (value2->type)))
1098     error (_("\
1099 First argument of `-' is a pointer, but second argument is neither\n\
1100 an integer nor a pointer of the same type."));
1101
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;
1106 }
1107
1108 static void
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)
1112 {
1113   if (pointer_type (value1->type) || pointer_type (value2->type))
1114     ax_simple (ax, aop_equal);
1115   else
1116     gen_binop (ax, value, value1, value2,
1117                aop_equal, aop_equal, 0, "equal");
1118   value->type = result_type;
1119   value->kind = axs_rvalue;
1120 }
1121
1122 static void
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)
1126 {
1127   if (pointer_type (value1->type) || pointer_type (value2->type))
1128     ax_simple (ax, aop_less_unsigned);
1129   else
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;
1134 }
1135
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 */
1142 static void
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)
1147 {
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);
1152
1153   ax_simple (ax,
1154              TYPE_UNSIGNED (value1->type) ? op_unsigned : op);
1155   if (may_carry)
1156     gen_extend (ax, value1->type);      /* catch overflow */
1157   value->type = value1->type;
1158   value->kind = axs_rvalue;
1159 }
1160
1161
1162 static void
1163 gen_logical_not (struct agent_expr *ax, struct axs_value *value,
1164                  struct type *result_type)
1165 {
1166   if (TYPE_CODE (value->type) != TYPE_CODE_INT
1167       && TYPE_CODE (value->type) != TYPE_CODE_PTR)
1168     error (_("Invalid type of operand to `!'."));
1169
1170   ax_simple (ax, aop_log_not);
1171   value->type = result_type;
1172 }
1173
1174
1175 static void
1176 gen_complement (struct agent_expr *ax, struct axs_value *value)
1177 {
1178   if (TYPE_CODE (value->type) != TYPE_CODE_INT)
1179     error (_("Invalid type of operand to `~'."));
1180
1181   ax_simple (ax, aop_bit_not);
1182   gen_extend (ax, value->type);
1183 }
1184 \f
1185
1186
1187 /* Generating bytecode from GDB expressions: * & . -> @ sizeof */
1188
1189 /* Dereference the value on the top of the stack.  */
1190 static void
1191 gen_deref (struct agent_expr *ax, struct axs_value *value)
1192 {
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"));
1198
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);
1209 }
1210
1211
1212 /* Produce the address of the lvalue on the top of the stack.  */
1213 static void
1214 gen_address_of (struct agent_expr *ax, struct axs_value *value)
1215 {
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
1221        change the type.  */
1222     value->type = lookup_pointer_type (value->type);
1223   else
1224     switch (value->kind)
1225       {
1226       case axs_rvalue:
1227         error (_("Operand of `&' is an rvalue, which has no address."));
1228
1229       case axs_lvalue_register:
1230         error (_("Operand of `&' is in a register, and has no address."));
1231
1232       case axs_lvalue_memory:
1233         value->kind = axs_rvalue;
1234         value->type = lookup_pointer_type (value->type);
1235         break;
1236       }
1237 }
1238
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
1242    structure.  */
1243 static void
1244 gen_bitfield_ref (struct expression *exp, struct agent_expr *ax,
1245                   struct axs_value *value, struct type *type,
1246                   int start, int end)
1247 {
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]));
1252
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.
1257
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:
1261      addr
1262      For the first fetch, we duplicate the address
1263      addr addr
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:
1267      addr frag1
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.  */
1278
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)
1283                     / TARGET_CHAR_BIT)
1284                    * TARGET_CHAR_BIT);
1285
1286   /* current bit offset within the structure */
1287   int offset;
1288
1289   /* The index in ops of the opcode we're considering.  */
1290   int op;
1291
1292   /* The number of fragments we generated in the process.  Probably
1293      equal to the number of `one' bits in bytesize, but who cares?  */
1294   int fragment_count;
1295
1296   /* Dereference any typedefs.  */
1297   type = check_typedef (type);
1298
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"));
1303
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;
1307   fragment_count = 0;
1308   for (op = num_ops - 1; op >= 0; op--)
1309     {
1310       /* number of bits that ops[op] would fetch */
1311       int op_size = 8 << op;
1312
1313       /* The stack at this point, from bottom to top, contains zero or
1314          more fragments, then the address.  */
1315
1316       /* Does this fetch fit within the bitfield?  */
1317       if (offset + op_size <= bound_end)
1318         {
1319           /* Is this the last fragment?  */
1320           int last_frag = (offset + op_size == bound_end);
1321
1322           if (!last_frag)
1323             ax_simple (ax, aop_dup);    /* keep a copy of the address */
1324
1325           /* Add the offset.  */
1326           gen_offset (ax, offset / TARGET_CHAR_BIT);
1327
1328           if (trace_kludge)
1329             {
1330               /* Record the area of memory we're about to fetch.  */
1331               ax_trace_quick (ax, op_size / TARGET_CHAR_BIT);
1332             }
1333
1334           /* Perform the fetch.  */
1335           ax_simple (ax, ops[op]);
1336
1337           /* Shift the bits we have to their proper position.
1338              gen_left_shift will generate right shifts when the operand
1339              is negative.
1340
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
1345              ^               ^               ^    ^
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
1349              value!
1350
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
1355              ^               ^               ^           ^   ^
1356              bit number     48              32              16          4   0
1357
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.
1361
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));
1373           else
1374             gen_left_shift (ax, offset - start);
1375
1376           if (!last_frag)
1377             /* Bring the copy of the address up to the top.  */
1378             ax_simple (ax, aop_swap);
1379
1380           offset += op_size;
1381           fragment_count++;
1382         }
1383     }
1384
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);
1389
1390   /* Sign- or zero-extend the value as appropriate.  */
1391   ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, end - start));
1392
1393   /* This is *not* an lvalue.  Ugh.  */
1394   value->kind = axs_rvalue;
1395   value->type = type;
1396 }
1397
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.  */
1402
1403 static void
1404 gen_primitive_field (struct expression *exp,
1405                      struct agent_expr *ax, struct axs_value *value,
1406                      int offset, int fieldno, struct type *type)
1407 {
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)));
1416   else
1417     {
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);
1422     }
1423 }
1424
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.  */
1427
1428 static int
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)
1432 {
1433   int i, rslt;
1434   int nbases = TYPE_N_BASECLASSES (type);
1435
1436   CHECK_TYPEDEF (type);
1437
1438   for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1439     {
1440       char *this_name = TYPE_FIELD_NAME (type, i);
1441
1442       if (this_name)
1443         {
1444           if (strcmp (field, this_name) == 0)
1445             {
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)))
1451                 {
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"),
1456                            field);
1457                   return 1;
1458                 }
1459
1460               gen_primitive_field (exp, ax, value, offset, i, type);
1461               return 1;
1462             }
1463 #if 0 /* is this right? */
1464           if (this_name[0] == '\0')
1465             internal_error (__FILE__, __LINE__,
1466                             _("find_field: anonymous unions not supported"));
1467 #endif
1468         }
1469     }
1470
1471   /* Now scan through base classes recursively.  */
1472   for (i = 0; i < nbases; i++)
1473     {
1474       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1475
1476       rslt = gen_struct_ref_recursive (exp, ax, value, field,
1477                                        offset + TYPE_BASECLASS_BITPOS (type, i)
1478                                        / TARGET_CHAR_BIT,
1479                                        basetype);
1480       if (rslt)
1481         return 1;
1482     }
1483
1484   /* Not found anywhere, flag so caller can complain.  */
1485   return 0;
1486 }
1487
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.  */
1493 static void
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)
1497 {
1498   struct type *type;
1499   int found;
1500
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))
1505     {
1506       require_rvalue (ax, value);
1507       gen_deref (ax, value);
1508     }
1509   type = check_typedef (value->type);
1510
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);
1516
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."));
1521
1522   /* Search through fields and base classes recursively.  */
1523   found = gen_struct_ref_recursive (exp, ax, value, field, 0, type);
1524   
1525   if (!found)
1526     error (_("Couldn't find member named `%s' in struct/union/class `%s'"),
1527            field, TYPE_TAG_NAME (type));
1528 }
1529
1530 static int
1531 gen_namespace_elt (struct expression *exp,
1532                    struct agent_expr *ax, struct axs_value *value,
1533                    const struct type *curtype, char *name);
1534 static int
1535 gen_maybe_namespace_elt (struct expression *exp,
1536                          struct agent_expr *ax, struct axs_value *value,
1537                          const struct type *curtype, char *name);
1538
1539 static void
1540 gen_static_field (struct gdbarch *gdbarch,
1541                   struct agent_expr *ax, struct axs_value *value,
1542                   struct type *type, int fieldno)
1543 {
1544   if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR)
1545     {
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;
1550     }
1551   else
1552     {
1553       const char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
1554       struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0);
1555
1556       if (sym)
1557         {
1558           gen_var_ref (gdbarch, ax, value, sym);
1559   
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.  */
1563         }
1564       else
1565         {
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;
1569         }
1570     }
1571 }
1572
1573 static int
1574 gen_struct_elt_for_reference (struct expression *exp,
1575                               struct agent_expr *ax, struct axs_value *value,
1576                               struct type *type, char *fieldname)
1577 {
1578   struct type *t = type;
1579   int i;
1580
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"));
1585
1586   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1587     {
1588       char *t_field_name = TYPE_FIELD_NAME (t, i);
1589
1590       if (t_field_name && strcmp (t_field_name, fieldname) == 0)
1591         {
1592           if (field_is_static (&TYPE_FIELD (t, i)))
1593             {
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"),
1598                        fieldname);
1599               return 1;
1600             }
1601           if (TYPE_FIELD_PACKED (t, i))
1602             error (_("pointers to bitfield members not allowed"));
1603
1604           /* FIXME we need a way to do "want_address" equivalent */       
1605
1606           error (_("Cannot reference non-static field \"%s\""), fieldname);
1607         }
1608     }
1609
1610   /* FIXME add other scoped-reference cases here */
1611
1612   /* Do a last-ditch lookup.  */
1613   return gen_maybe_namespace_elt (exp, ax, value, type, fieldname);
1614 }
1615
1616 /* C++: Return the member NAME of the namespace given by the type
1617    CURTYPE.  */
1618
1619 static int
1620 gen_namespace_elt (struct expression *exp,
1621                    struct agent_expr *ax, struct axs_value *value,
1622                    const struct type *curtype, char *name)
1623 {
1624   int found = gen_maybe_namespace_elt (exp, ax, value, curtype, name);
1625
1626   if (!found)
1627     error (_("No symbol \"%s\" in namespace \"%s\"."), 
1628            name, TYPE_TAG_NAME (curtype));
1629
1630   return found;
1631 }
1632
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).  */
1638
1639 static int
1640 gen_maybe_namespace_elt (struct expression *exp,
1641                          struct agent_expr *ax, struct axs_value *value,
1642                          const struct type *curtype, char *name)
1643 {
1644   const char *namespace_name = TYPE_TAG_NAME (curtype);
1645   struct symbol *sym;
1646
1647   sym = cp_lookup_symbol_namespace (namespace_name, name,
1648                                     block_for_pc (ax->scope),
1649                                     VAR_DOMAIN);
1650
1651   if (sym == NULL)
1652     return 0;
1653
1654   gen_var_ref (exp->gdbarch, ax, value, sym);
1655
1656   if (value->optimized_out)
1657     error (_("`%s' has been optimized out, cannot use"),
1658            SYMBOL_PRINT_NAME (sym));
1659
1660   return 1;
1661 }
1662
1663
1664 static int
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)
1669 {
1670   switch (TYPE_CODE (type))
1671     {
1672     case TYPE_CODE_STRUCT:
1673     case TYPE_CODE_UNION:
1674       return gen_struct_elt_for_reference (exp, ax, value, type, field);
1675       break;
1676     case TYPE_CODE_NAMESPACE:
1677       return gen_namespace_elt (exp, ax, value, type, field);
1678       break;
1679     default:
1680       internal_error (__FILE__, __LINE__,
1681                       _("non-aggregate type in gen_aggregate_elt_ref"));
1682     }
1683
1684   return 0;
1685 }
1686
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.
1692
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.  */
1698 static void
1699 gen_repeat (struct expression *exp, union exp_element **pc,
1700             struct agent_expr *ax, struct axs_value *value)
1701 {
1702   struct axs_value value1;
1703
1704   /* We don't want to turn this into an rvalue, so no conversions
1705      here.  */
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."));
1709
1710   /* Evaluate the length; it had better be a constant.  */
1711   {
1712     struct value *v = const_expr (pc);
1713     int length;
1714
1715     if (!v)
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);
1721     if (length <= 0)
1722       error (_("Right operand of `@' must be positive."));
1723
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.  */
1726     {
1727       /* FIXME-type-allocation: need a way to free this type when we are
1728          done with it.  */
1729       struct type *array
1730         = lookup_array_range_type (value1.type, 0, length - 1);
1731
1732       value->kind = axs_lvalue_memory;
1733       value->type = array;
1734     }
1735   }
1736 }
1737
1738
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.  */
1742 static void
1743 gen_sizeof (struct expression *exp, union exp_element **pc,
1744             struct agent_expr *ax, struct axs_value *value,
1745             struct type *size_type)
1746 {
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;
1753
1754   gen_expr (exp, pc, ax, value);
1755
1756   /* Throw away the code we just generated.  */
1757   ax->len = start;
1758
1759   ax_const_l (ax, TYPE_LENGTH (value->type));
1760   value->kind = axs_rvalue;
1761   value->type = size_type;
1762 }
1763 \f
1764
1765 /* Generating bytecode from GDB expressions: general recursive thingy  */
1766
1767 /* XXX: i18n */
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.  */
1770 static void
1771 gen_expr (struct expression *exp, union exp_element **pc,
1772           struct agent_expr *ax, struct axs_value *value)
1773 {
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;
1779
1780   /* If we're looking at a constant expression, just push its value.  */
1781   {
1782     struct value *v = maybe_const_expr (pc);
1783
1784     if (v)
1785       {
1786         ax_const_l (ax, value_as_long (v));
1787         value->kind = axs_rvalue;
1788         value->type = check_typedef (value_type (v));
1789         return;
1790       }
1791   }
1792
1793   /* Otherwise, go ahead and generate code for it.  */
1794   switch (op)
1795     {
1796       /* Binary arithmetic operators.  */
1797     case BINOP_ADD:
1798     case BINOP_SUB:
1799     case BINOP_MUL:
1800     case BINOP_DIV:
1801     case BINOP_REM:
1802     case BINOP_LSH:
1803     case BINOP_RSH:
1804     case BINOP_SUBSCRIPT:
1805     case BINOP_BITWISE_AND:
1806     case BINOP_BITWISE_IOR:
1807     case BINOP_BITWISE_XOR:
1808     case BINOP_EQUAL:
1809     case BINOP_NOTEQUAL:
1810     case BINOP_LESS:
1811     case BINOP_GTR:
1812     case BINOP_LEQ:
1813     case BINOP_GEQ:
1814       (*pc)++;
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);
1818       break;
1819
1820     case BINOP_LOGICAL_AND:
1821       (*pc)++;
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);
1833       ax_const_l (ax, 1);
1834       end = ax_goto (ax, aop_goto);
1835       ax_label (ax, go1, ax->len);
1836       ax_label (ax, go2, ax->len);
1837       ax_const_l (ax, 0);
1838       ax_label (ax, end, ax->len);
1839       value->kind = axs_rvalue;
1840       value->type = int_type;
1841       break;
1842
1843     case BINOP_LOGICAL_OR:
1844       (*pc)++;
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);
1852       ax_const_l (ax, 0);
1853       end = ax_goto (ax, aop_goto);
1854       ax_label (ax, if1, ax->len);
1855       ax_label (ax, if2, ax->len);
1856       ax_const_l (ax, 1);
1857       ax_label (ax, end, ax->len);
1858       value->kind = axs_rvalue;
1859       value->type = int_type;
1860       break;
1861
1862     case TERNOP_COND:
1863       (*pc)++;
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
1869          jump to do C.  */
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;
1882       break;
1883
1884     case BINOP_ASSIGN:
1885       (*pc)++;
1886       if ((*pc)[0].opcode == OP_INTERNALVAR)
1887         {
1888           char *name = internalvar_name ((*pc)[1].internalvar);
1889           struct trace_state_variable *tsv;
1890
1891           (*pc) += 3;
1892           gen_expr (exp, pc, ax, value);
1893           tsv = find_trace_state_variable (name);
1894           if (tsv)
1895             {
1896               ax_tsv (ax, aop_setv, tsv->number);
1897               if (trace_kludge)
1898                 ax_tsv (ax, aop_tracev, tsv->number);
1899             }
1900           else
1901             error (_("$%s is not a trace state variable, "
1902                      "may not assign to it"), name);
1903         }
1904       else
1905         error (_("May only assign to trace state variables"));
1906       break;
1907
1908     case BINOP_ASSIGN_MODIFY:
1909       (*pc)++;
1910       op2 = (*pc)[0].opcode;
1911       (*pc)++;
1912       (*pc)++;
1913       if ((*pc)[0].opcode == OP_INTERNALVAR)
1914         {
1915           char *name = internalvar_name ((*pc)[1].internalvar);
1916           struct trace_state_variable *tsv;
1917
1918           (*pc) += 3;
1919           tsv = find_trace_state_variable (name);
1920           if (tsv)
1921             {
1922               /* The tsv will be the left half of the binary operation.  */
1923               ax_tsv (ax, aop_getv, tsv->number);
1924               if (trace_kludge)
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);
1933               if (trace_kludge)
1934                 ax_tsv (ax, aop_tracev, tsv->number);
1935             }
1936           else
1937             error (_("$%s is not a trace state variable, "
1938                      "may not assign to it"), name);
1939         }
1940       else
1941         error (_("May only assign to trace state variables"));
1942       break;
1943
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.  */
1950     case BINOP_COMMA:
1951       (*pc)++;
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
1955          lvalue.  */
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.  */
1959       break;
1960
1961     case OP_LONG:               /* some integer constant */
1962       {
1963         struct type *type = (*pc)[1].type;
1964         LONGEST k = (*pc)[2].longconst;
1965
1966         (*pc) += 4;
1967         gen_int_literal (ax, value, k, type);
1968       }
1969       break;
1970
1971     case OP_VAR_VALUE:
1972       gen_var_ref (exp->gdbarch, ax, value, (*pc)[2].symbol);
1973
1974       if (value->optimized_out)
1975         error (_("`%s' has been optimized out, cannot use"),
1976                SYMBOL_PRINT_NAME ((*pc)[2].symbol));
1977
1978       (*pc) += 4;
1979       break;
1980
1981     case OP_REGISTER:
1982       {
1983         const char *name = &(*pc)[2].string;
1984         int reg;
1985
1986         (*pc) += 4 + BYTES_TO_EXP_ELEM ((*pc)[1].longconst + 1);
1987         reg = user_reg_map_name_to_regnum (exp->gdbarch, name, strlen (name));
1988         if (reg == -1)
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."),
1996                  name);
1997         value->kind = axs_lvalue_register;
1998         value->u.reg = reg;
1999         value->type = register_type (exp->gdbarch, reg);
2000       }
2001       break;
2002
2003     case OP_INTERNALVAR:
2004       {
2005         const char *name = internalvar_name ((*pc)[1].internalvar);
2006         struct trace_state_variable *tsv;
2007
2008         (*pc) += 3;
2009         tsv = find_trace_state_variable (name);
2010         if (tsv)
2011           {
2012             ax_tsv (ax, aop_getv, tsv->number);
2013             if (trace_kludge)
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;
2018           }
2019         else
2020           error (_("$%s is not a trace state variable; GDB agent "
2021                    "expressions cannot use convenience variables."), name);
2022       }
2023       break;
2024
2025       /* Weirdo operator: see comments for gen_repeat for details.  */
2026     case BINOP_REPEAT:
2027       /* Note that gen_repeat handles its own argument evaluation.  */
2028       (*pc)++;
2029       gen_repeat (exp, pc, ax, value);
2030       break;
2031
2032     case UNOP_CAST:
2033       {
2034         struct type *type = (*pc)[1].type;
2035
2036         (*pc) += 3;
2037         gen_expr (exp, pc, ax, value);
2038         gen_cast (ax, value, type);
2039       }
2040       break;
2041
2042     case UNOP_MEMVAL:
2043       {
2044         struct type *type = check_typedef ((*pc)[1].type);
2045
2046         (*pc) += 3;
2047         gen_expr (exp, pc, ax, value);
2048
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);
2054
2055         value->type = type;
2056         value->kind = axs_lvalue_memory;
2057       }
2058       break;
2059
2060     case UNOP_PLUS:
2061       (*pc)++;
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);
2065       break;
2066       
2067     case UNOP_NEG:
2068       (*pc)++;
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");
2077       break;
2078
2079     case UNOP_LOGICAL_NOT:
2080       (*pc)++;
2081       gen_expr (exp, pc, ax, value);
2082       gen_usual_unary (exp, ax, value);
2083       gen_logical_not (ax, value, int_type);
2084       break;
2085
2086     case UNOP_COMPLEMENT:
2087       (*pc)++;
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);
2092       break;
2093
2094     case UNOP_IND:
2095       (*pc)++;
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);
2101       break;
2102
2103     case UNOP_ADDR:
2104       (*pc)++;
2105       gen_expr (exp, pc, ax, value);
2106       gen_address_of (ax, value);
2107       break;
2108
2109     case UNOP_SIZEOF:
2110       (*pc)++;
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);
2116       break;
2117
2118     case STRUCTOP_STRUCT:
2119     case STRUCTOP_PTR:
2120       {
2121         int length = (*pc)[1].longconst;
2122         char *name = &(*pc)[2].string;
2123
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");
2131         else
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"));
2136       }
2137       break;
2138
2139     case OP_THIS:
2140       {
2141         char *this_name;
2142         struct symbol *sym, *func;
2143         struct block *b;
2144         const struct language_defn *lang;
2145
2146         b = block_for_pc (ax->scope);
2147         func = block_linkage_function (b);
2148         lang = language_def (SYMBOL_LANGUAGE (func));
2149
2150         sym = lookup_language_this (lang, b);
2151         if (!sym)
2152           error (_("no `%s' found"), lang->la_name_of_this);
2153
2154         gen_var_ref (exp->gdbarch, ax, value, sym);
2155
2156         if (value->optimized_out)
2157           error (_("`%s' has been optimized out, cannot use"),
2158                  SYMBOL_PRINT_NAME (sym));
2159
2160         (*pc) += 2;
2161       }
2162       break;
2163
2164     case OP_SCOPE:
2165       {
2166         struct type *type = (*pc)[1].type;
2167         int length = longest_to_int ((*pc)[2].longconst);
2168         char *name = &(*pc)[3].string;
2169         int found;
2170
2171         found = gen_aggregate_elt_ref (exp, ax, value, type, name,
2172                                        "?", "??");
2173         if (!found)
2174           error (_("There is no field named %s"), name);
2175         (*pc) += 5 + BYTES_TO_EXP_ELEM (length + 1);
2176       }
2177       break;
2178
2179     case OP_TYPE:
2180       error (_("Attempt to use a type name as an expression."));
2181
2182     default:
2183       error (_("Unsupported operator %s (%d) in expression."),
2184              op_string (op), op);
2185     }
2186 }
2187
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.  */
2191
2192 static void
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)
2197 {
2198   struct type *int_type = builtin_type (exp->gdbarch)->builtin_int;
2199
2200   gen_expr (exp, pc, ax, value2);
2201   gen_usual_unary (exp, ax, value2);
2202   gen_usual_arithmetic (exp, ax, value1, value2);
2203   switch (op)
2204     {
2205     case BINOP_ADD:
2206       if (TYPE_CODE (value1->type) == TYPE_CODE_INT
2207           && pointer_type (value2->type))
2208         {
2209           /* Swap the values and proceed normally.  */
2210           ax_simple (ax, aop_swap);
2211           gen_ptradd (ax, value, value2, value1);
2212         }
2213       else if (pointer_type (value1->type)
2214                && TYPE_CODE (value2->type) == TYPE_CODE_INT)
2215         gen_ptradd (ax, value, value1, value2);
2216       else
2217         gen_binop (ax, value, value1, value2,
2218                    aop_add, aop_add, 1, "addition");
2219       break;
2220     case BINOP_SUB:
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);
2229       else
2230         gen_binop (ax, value, value1, value2,
2231                    aop_sub, aop_sub, 1, "subtraction");
2232       break;
2233     case BINOP_MUL:
2234       gen_binop (ax, value, value1, value2,
2235                  aop_mul, aop_mul, 1, "multiplication");
2236       break;
2237     case BINOP_DIV:
2238       gen_binop (ax, value, value1, value2,
2239                  aop_div_signed, aop_div_unsigned, 1, "division");
2240       break;
2241     case BINOP_REM:
2242       gen_binop (ax, value, value1, value2,
2243                  aop_rem_signed, aop_rem_unsigned, 1, "remainder");
2244       break;
2245     case BINOP_LSH:
2246       gen_binop (ax, value, value1, value2,
2247                  aop_lsh, aop_lsh, 1, "left shift");
2248       break;
2249     case BINOP_RSH:
2250       gen_binop (ax, value, value1, value2,
2251                  aop_rsh_signed, aop_rsh_unsigned, 1, "right shift");
2252       break;
2253     case BINOP_SUBSCRIPT:
2254       {
2255         struct type *type;
2256
2257         if (binop_types_user_defined_p (op, value1->type, value2->type))
2258           {
2259             error (_("cannot subscript requested type: "
2260                      "cannot call user defined functions"));
2261           }
2262         else
2263           {
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)
2270               {
2271                 if (TYPE_NAME (type))
2272                   error (_("cannot subscript something of type `%s'"),
2273                          TYPE_NAME (type));
2274                 else
2275                   error (_("cannot subscript requested type"));
2276               }
2277           }
2278
2279         if (!is_integral_type (value2->type))
2280           error (_("Argument to arithmetic operation "
2281                    "not a number or boolean."));
2282
2283         gen_ptradd (ax, value, value1, value2);
2284         gen_deref (ax, value);
2285         break;
2286       }
2287     case BINOP_BITWISE_AND:
2288       gen_binop (ax, value, value1, value2,
2289                  aop_bit_and, aop_bit_and, 0, "bitwise and");
2290       break;
2291
2292     case BINOP_BITWISE_IOR:
2293       gen_binop (ax, value, value1, value2,
2294                  aop_bit_or, aop_bit_or, 0, "bitwise or");
2295       break;
2296       
2297     case BINOP_BITWISE_XOR:
2298       gen_binop (ax, value, value1, value2,
2299                  aop_bit_xor, aop_bit_xor, 0, "bitwise exclusive-or");
2300       break;
2301
2302     case BINOP_EQUAL:
2303       gen_equal (ax, value, value1, value2, int_type);
2304       break;
2305
2306     case BINOP_NOTEQUAL:
2307       gen_equal (ax, value, value1, value2, int_type);
2308       gen_logical_not (ax, value, int_type);
2309       break;
2310
2311     case BINOP_LESS:
2312       gen_less (ax, value, value1, value2, int_type);
2313       break;
2314
2315     case BINOP_GTR:
2316       ax_simple (ax, aop_swap);
2317       gen_less (ax, value, value1, value2, int_type);
2318       break;
2319
2320     case BINOP_LEQ:
2321       ax_simple (ax, aop_swap);
2322       gen_less (ax, value, value1, value2, int_type);
2323       gen_logical_not (ax, value, int_type);
2324       break;
2325
2326     case BINOP_GEQ:
2327       gen_less (ax, value, value1, value2, int_type);
2328       gen_logical_not (ax, value, int_type);
2329       break;
2330
2331     default:
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"));
2336     }
2337 }
2338 \f
2339
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.  */
2344
2345 struct agent_expr *
2346 gen_trace_for_var (CORE_ADDR scope, struct gdbarch *gdbarch,
2347                    struct symbol *var)
2348 {
2349   struct cleanup *old_chain = 0;
2350   struct agent_expr *ax = new_agent_expr (gdbarch, scope);
2351   struct axs_value value;
2352
2353   old_chain = make_cleanup_free_agent_expr (ax);
2354
2355   trace_kludge = 1;
2356   gen_var_ref (gdbarch, ax, &value, var);
2357
2358   /* If there is no actual variable to trace, flag it by returning
2359      an empty agent expression.  */
2360   if (value.optimized_out)
2361     {
2362       do_cleanups (old_chain);
2363       return NULL;
2364     }
2365
2366   /* Make sure we record the final object, and get rid of it.  */
2367   gen_traced_pop (gdbarch, ax, &value);
2368
2369   /* Oh, and terminate.  */
2370   ax_simple (ax, aop_end);
2371
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);
2376   return ax;
2377 }
2378
2379 /* Generating bytecode from GDB expressions: driver */
2380
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.  */
2386 struct agent_expr *
2387 gen_trace_for_expr (CORE_ADDR scope, struct expression *expr)
2388 {
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;
2393
2394   old_chain = make_cleanup_free_agent_expr (ax);
2395
2396   pc = expr->elts;
2397   trace_kludge = 1;
2398   value.optimized_out = 0;
2399   gen_expr (expr, &pc, ax, &value);
2400
2401   /* Make sure we record the final object, and get rid of it.  */
2402   gen_traced_pop (expr->gdbarch, ax, &value);
2403
2404   /* Oh, and terminate.  */
2405   ax_simple (ax, aop_end);
2406
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);
2411   return ax;
2412 }
2413
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.  */
2420
2421 struct agent_expr *
2422 gen_eval_for_expr (CORE_ADDR scope, struct expression *expr)
2423 {
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;
2428
2429   old_chain = make_cleanup_free_agent_expr (ax);
2430
2431   pc = expr->elts;
2432   trace_kludge = 0;
2433   value.optimized_out = 0;
2434   gen_expr (expr, &pc, ax, &value);
2435
2436   require_rvalue (ax, &value);
2437
2438   /* Oh, and terminate.  */
2439   ax_simple (ax, aop_end);
2440
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);
2445   return ax;
2446 }
2447
2448 struct agent_expr *
2449 gen_trace_for_return_address (CORE_ADDR scope, struct gdbarch *gdbarch)
2450 {
2451   struct cleanup *old_chain = 0;
2452   struct agent_expr *ax = new_agent_expr (gdbarch, scope);
2453   struct axs_value value;
2454
2455   old_chain = make_cleanup_free_agent_expr (ax);
2456
2457   trace_kludge = 1;
2458
2459   gdbarch_gen_return_address (gdbarch, ax, &value, scope);
2460
2461   /* Make sure we record the final object, and get rid of it.  */
2462   gen_traced_pop (gdbarch, ax, &value);
2463
2464   /* Oh, and terminate.  */
2465   ax_simple (ax, aop_end);
2466
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);
2471   return ax;
2472 }
2473
2474 static void
2475 agent_command (char *exp, int from_tty)
2476 {
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 */
2481
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."));
2488
2489   if (exp == 0)
2490     error_no_arg (_("expression to translate"));
2491
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)
2495     {
2496       agent = gen_trace_for_return_address (get_frame_pc (fi),
2497                                             get_current_arch ());
2498       old_chain = make_cleanup_free_agent_expr (agent);
2499     }
2500   else
2501     {
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);
2506     }
2507
2508   ax_reqs (agent);
2509   ax_print (gdb_stdout, agent);
2510
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.  */
2513
2514   do_cleanups (old_chain);
2515   dont_repeat ();
2516 }
2517
2518 /* Parse the given expression, compile it into an agent expression
2519    that does direct evaluation, and display the resulting
2520    expression.  */
2521
2522 static void
2523 agent_eval_command (char *exp, int from_tty)
2524 {
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 */
2529
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."));
2536
2537   if (exp == 0)
2538     error_no_arg (_("expression to translate"));
2539
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);
2544   ax_reqs (agent);
2545   ax_print (gdb_stdout, agent);
2546
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.  */
2549
2550   do_cleanups (old_chain);
2551   dont_repeat ();
2552 }
2553 \f
2554
2555 /* Initialization code.  */
2556
2557 void _initialize_ax_gdb (void);
2558 void
2559 _initialize_ax_gdb (void)
2560 {
2561   add_cmd ("agent", class_maintenance, agent_command,
2562            _("Translate an expression into "
2563              "remote agent bytecode for tracing."),
2564            &maintenancelist);
2565
2566   add_cmd ("agent-eval", class_maintenance, agent_eval_command,
2567            _("Translate an expression into remote "
2568              "agent bytecode for evaluation."),
2569            &maintenancelist);
2570 }