change section name in gdb/NEWS for changes in GDB 8.3
[external/binutils.git] / gdb / ax-gdb.c
1 /* GDB-specific functions for operating on agent expressions.
2
3    Copyright (C) 1998-2019 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "symfile.h"
23 #include "gdbtypes.h"
24 #include "language.h"
25 #include "value.h"
26 #include "expression.h"
27 #include "command.h"
28 #include "gdbcmd.h"
29 #include "frame.h"
30 #include "target.h"
31 #include "ax.h"
32 #include "ax-gdb.h"
33 #include "block.h"
34 #include "regcache.h"
35 #include "user-regs.h"
36 #include "dictionary.h"
37 #include "breakpoint.h"
38 #include "tracepoint.h"
39 #include "cp-support.h"
40 #include "arch-utils.h"
41 #include "cli/cli-utils.h"
42 #include "linespec.h"
43 #include "location.h"
44 #include "objfiles.h"
45 #include "typeprint.h"
46 #include "valprint.h"
47 #include "c-lang.h"
48
49 #include "common/format.h"
50
51 /* To make sense of this file, you should read doc/agentexpr.texi.
52    Then look at the types and enums in ax-gdb.h.  For the code itself,
53    look at gen_expr, towards the bottom; that's the main function that
54    looks at the GDB expressions and calls everything else to generate
55    code.
56
57    I'm beginning to wonder whether it wouldn't be nicer to internally
58    generate trees, with types, and then spit out the bytecode in
59    linear form afterwards; we could generate fewer `swap', `ext', and
60    `zero_ext' bytecodes that way; it would make good constant folding
61    easier, too.  But at the moment, I think we should be willing to
62    pay for the simplicity of this code with less-than-optimal bytecode
63    strings.
64
65    Remember, "GBD" stands for "Great Britain, Dammit!"  So be careful.  */
66 \f
67
68
69 /* Prototypes for local functions.  */
70
71 /* There's a standard order to the arguments of these functions:
72    union exp_element ** --- pointer into expression
73    struct agent_expr * --- agent expression buffer to generate code into
74    struct axs_value * --- describes value left on top of stack  */
75
76 static struct value *const_var_ref (struct symbol *var);
77 static struct value *const_expr (union exp_element **pc);
78 static struct value *maybe_const_expr (union exp_element **pc);
79
80 static void gen_traced_pop (struct agent_expr *, struct axs_value *);
81
82 static void gen_sign_extend (struct agent_expr *, struct type *);
83 static void gen_extend (struct agent_expr *, struct type *);
84 static void gen_fetch (struct agent_expr *, struct type *);
85 static void gen_left_shift (struct agent_expr *, int);
86
87
88 static void gen_frame_args_address (struct agent_expr *);
89 static void gen_frame_locals_address (struct agent_expr *);
90 static void gen_offset (struct agent_expr *ax, int offset);
91 static void gen_sym_offset (struct agent_expr *, struct symbol *);
92 static void gen_var_ref (struct agent_expr *ax, struct axs_value *value,
93                          struct symbol *var);
94
95
96 static void gen_int_literal (struct agent_expr *ax,
97                              struct axs_value *value,
98                              LONGEST k, struct type *type);
99
100 static void gen_usual_unary (struct agent_expr *ax, struct axs_value *value);
101 static int type_wider_than (struct type *type1, struct type *type2);
102 static struct type *max_type (struct type *type1, struct type *type2);
103 static void gen_conversion (struct agent_expr *ax,
104                             struct type *from, struct type *to);
105 static int is_nontrivial_conversion (struct type *from, struct type *to);
106 static void gen_usual_arithmetic (struct agent_expr *ax,
107                                   struct axs_value *value1,
108                                   struct axs_value *value2);
109 static void gen_integral_promotions (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,
128                        const char *name);
129 static void gen_logical_not (struct agent_expr *ax, struct axs_value *value,
130                              struct type *result_type);
131 static void gen_complement (struct agent_expr *ax, struct axs_value *value);
132 static void gen_deref (struct axs_value *);
133 static void gen_address_of (struct axs_value *);
134 static void gen_bitfield_ref (struct agent_expr *ax, struct axs_value *value,
135                               struct type *type, int start, int end);
136 static void gen_primitive_field (struct agent_expr *ax,
137                                  struct axs_value *value,
138                                  int offset, int fieldno, struct type *type);
139 static int gen_struct_ref_recursive (struct agent_expr *ax,
140                                      struct axs_value *value,
141                                      const char *field, int offset,
142                                      struct type *type);
143 static void gen_struct_ref (struct agent_expr *ax,
144                             struct axs_value *value,
145                             const char *field,
146                             const char *operator_name,
147                             const char *operand_name);
148 static void gen_static_field (struct agent_expr *ax, struct axs_value *value,
149                               struct type *type, int fieldno);
150 static void gen_repeat (struct expression *exp, union exp_element **pc,
151                         struct agent_expr *ax, struct axs_value *value);
152 static void gen_sizeof (struct expression *exp, union exp_element **pc,
153                         struct agent_expr *ax, struct axs_value *value,
154                         struct type *size_type);
155 static void gen_expr_binop_rest (struct expression *exp,
156                                  enum exp_opcode op, union exp_element **pc,
157                                  struct agent_expr *ax,
158                                  struct axs_value *value,
159                                  struct axs_value *value1,
160                                  struct axs_value *value2);
161 \f
162
163 /* Detecting constant expressions.  */
164
165 /* If the variable reference at *PC is a constant, return its value.
166    Otherwise, return zero.
167
168    Hey, Wally!  How can a variable reference be a constant?
169
170    Well, Beav, this function really handles the OP_VAR_VALUE operator,
171    not specifically variable references.  GDB uses OP_VAR_VALUE to
172    refer to any kind of symbolic reference: function names, enum
173    elements, and goto labels are all handled through the OP_VAR_VALUE
174    operator, even though they're constants.  It makes sense given the
175    situation.
176
177    Gee, Wally, don'cha wonder sometimes if data representations that
178    subvert commonly accepted definitions of terms in favor of heavily
179    context-specific interpretations are really just a tool of the
180    programming hegemony to preserve their power and exclude the
181    proletariat?  */
182
183 static struct value *
184 const_var_ref (struct symbol *var)
185 {
186   struct type *type = SYMBOL_TYPE (var);
187
188   switch (SYMBOL_CLASS (var))
189     {
190     case LOC_CONST:
191       return value_from_longest (type, (LONGEST) SYMBOL_VALUE (var));
192
193     case LOC_LABEL:
194       return value_from_pointer (type, (CORE_ADDR) SYMBOL_VALUE_ADDRESS (var));
195
196     default:
197       return 0;
198     }
199 }
200
201
202 /* If the expression starting at *PC has a constant value, return it.
203    Otherwise, return zero.  If we return a value, then *PC will be
204    advanced to the end of it.  If we return zero, *PC could be
205    anywhere.  */
206 static struct value *
207 const_expr (union exp_element **pc)
208 {
209   enum exp_opcode op = (*pc)->opcode;
210   struct value *v1;
211
212   switch (op)
213     {
214     case OP_LONG:
215       {
216         struct type *type = (*pc)[1].type;
217         LONGEST k = (*pc)[2].longconst;
218
219         (*pc) += 4;
220         return value_from_longest (type, k);
221       }
222
223     case OP_VAR_VALUE:
224       {
225         struct value *v = const_var_ref ((*pc)[2].symbol);
226
227         (*pc) += 4;
228         return v;
229       }
230
231       /* We could add more operators in here.  */
232
233     case UNOP_NEG:
234       (*pc)++;
235       v1 = const_expr (pc);
236       if (v1)
237         return value_neg (v1);
238       else
239         return 0;
240
241     default:
242       return 0;
243     }
244 }
245
246
247 /* Like const_expr, but guarantee also that *PC is undisturbed if the
248    expression is not constant.  */
249 static struct value *
250 maybe_const_expr (union exp_element **pc)
251 {
252   union exp_element *tentative_pc = *pc;
253   struct value *v = const_expr (&tentative_pc);
254
255   /* If we got a value, then update the real PC.  */
256   if (v)
257     *pc = tentative_pc;
258
259   return v;
260 }
261 \f
262
263 /* Generating bytecode from GDB expressions: general assumptions */
264
265 /* Here are a few general assumptions made throughout the code; if you
266    want to make a change that contradicts one of these, then you'd
267    better scan things pretty thoroughly.
268
269    - We assume that all values occupy one stack element.  For example,
270    sometimes we'll swap to get at the left argument to a binary
271    operator.  If we decide that void values should occupy no stack
272    elements, or that synthetic arrays (whose size is determined at
273    run time, created by the `@' operator) should occupy two stack
274    elements (address and length), then this will cause trouble.
275
276    - We assume the stack elements are infinitely wide, and that we
277    don't have to worry what happens if the user requests an
278    operation that is wider than the actual interpreter's stack.
279    That is, it's up to the interpreter to handle directly all the
280    integer widths the user has access to.  (Woe betide the language
281    with bignums!)
282
283    - We don't support side effects.  Thus, we don't have to worry about
284    GCC's generalized lvalues, function calls, etc.
285
286    - We don't support floating point.  Many places where we switch on
287    some type don't bother to include cases for floating point; there
288    may be even more subtle ways this assumption exists.  For
289    example, the arguments to % must be integers.
290
291    - We assume all subexpressions have a static, unchanging type.  If
292    we tried to support convenience variables, this would be a
293    problem.
294
295    - All values on the stack should always be fully zero- or
296    sign-extended.
297
298    (I wasn't sure whether to choose this or its opposite --- that
299    only addresses are assumed extended --- but it turns out that
300    neither convention completely eliminates spurious extend
301    operations (if everything is always extended, then you have to
302    extend after add, because it could overflow; if nothing is
303    extended, then you end up producing extends whenever you change
304    sizes), and this is simpler.)  */
305 \f
306
307 /* Scan for all static fields in the given class, including any base
308    classes, and generate tracing bytecodes for each.  */
309
310 static void
311 gen_trace_static_fields (struct agent_expr *ax,
312                          struct type *type)
313 {
314   int i, nbases = TYPE_N_BASECLASSES (type);
315   struct axs_value value;
316
317   type = check_typedef (type);
318
319   for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
320     {
321       if (field_is_static (&TYPE_FIELD (type, i)))
322         {
323           gen_static_field (ax, &value, type, i);
324           if (value.optimized_out)
325             continue;
326           switch (value.kind)
327             {
328             case axs_lvalue_memory:
329               {
330                 /* Initialize the TYPE_LENGTH if it is a typedef.  */
331                 check_typedef (value.type);
332                 ax_const_l (ax, TYPE_LENGTH (value.type));
333                 ax_simple (ax, aop_trace);
334               }
335               break;
336
337             case axs_lvalue_register:
338               /* We don't actually need the register's value to be pushed,
339                  just note that we need it to be collected.  */
340               ax_reg_mask (ax, value.u.reg);
341
342             default:
343               break;
344             }
345         }
346     }
347
348   /* Now scan through base classes recursively.  */
349   for (i = 0; i < nbases; i++)
350     {
351       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
352
353       gen_trace_static_fields (ax, basetype);
354     }
355 }
356
357 /* Trace the lvalue on the stack, if it needs it.  In either case, pop
358    the value.  Useful on the left side of a comma, and at the end of
359    an expression being used for tracing.  */
360 static void
361 gen_traced_pop (struct agent_expr *ax, struct axs_value *value)
362 {
363   int string_trace = 0;
364   if (ax->trace_string
365       && TYPE_CODE (value->type) == TYPE_CODE_PTR
366       && c_textual_element_type (check_typedef (TYPE_TARGET_TYPE (value->type)),
367                                  's'))
368     string_trace = 1;
369
370   if (ax->tracing)
371     switch (value->kind)
372       {
373       case axs_rvalue:
374         if (string_trace)
375           {
376             ax_const_l (ax, ax->trace_string);
377             ax_simple (ax, aop_tracenz);
378           }
379         else
380           /* We don't trace rvalues, just the lvalues necessary to
381              produce them.  So just dispose of this value.  */
382           ax_simple (ax, aop_pop);
383         break;
384
385       case axs_lvalue_memory:
386         {
387           /* Initialize the TYPE_LENGTH if it is a typedef.  */
388           check_typedef (value->type);
389
390           if (string_trace)
391             {
392               gen_fetch (ax, value->type);
393               ax_const_l (ax, ax->trace_string);
394               ax_simple (ax, aop_tracenz);
395             }
396           else
397             {
398               /* There's no point in trying to use a trace_quick bytecode
399                  here, since "trace_quick SIZE pop" is three bytes, whereas
400                  "const8 SIZE trace" is also three bytes, does the same
401                  thing, and the simplest code which generates that will also
402                  work correctly for objects with large sizes.  */
403               ax_const_l (ax, TYPE_LENGTH (value->type));
404               ax_simple (ax, aop_trace);
405             }
406         }
407         break;
408
409       case axs_lvalue_register:
410         /* We don't actually need the register's value to be on the
411            stack, and the target will get heartburn if the register is
412            larger than will fit in a stack, so just mark it for
413            collection and be done with it.  */
414         ax_reg_mask (ax, value->u.reg);
415        
416         /* But if the register points to a string, assume the value
417            will fit on the stack and push it anyway.  */
418         if (string_trace)
419           {
420             ax_reg (ax, value->u.reg);
421             ax_const_l (ax, ax->trace_string);
422             ax_simple (ax, aop_tracenz);
423           }
424         break;
425       }
426   else
427     /* If we're not tracing, just pop the value.  */
428     ax_simple (ax, aop_pop);
429
430   /* To trace C++ classes with static fields stored elsewhere.  */
431   if (ax->tracing
432       && (TYPE_CODE (value->type) == TYPE_CODE_STRUCT
433           || TYPE_CODE (value->type) == TYPE_CODE_UNION))
434     gen_trace_static_fields (ax, value->type);
435 }
436 \f
437
438
439 /* Generating bytecode from GDB expressions: helper functions */
440
441 /* Assume that the lower bits of the top of the stack is a value of
442    type TYPE, and the upper bits are zero.  Sign-extend if necessary.  */
443 static void
444 gen_sign_extend (struct agent_expr *ax, struct type *type)
445 {
446   /* Do we need to sign-extend this?  */
447   if (!TYPE_UNSIGNED (type))
448     ax_ext (ax, TYPE_LENGTH (type) * TARGET_CHAR_BIT);
449 }
450
451
452 /* Assume the lower bits of the top of the stack hold a value of type
453    TYPE, and the upper bits are garbage.  Sign-extend or truncate as
454    needed.  */
455 static void
456 gen_extend (struct agent_expr *ax, struct type *type)
457 {
458   int bits = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
459
460   /* I just had to.  */
461   ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, bits));
462 }
463
464
465 /* Assume that the top of the stack contains a value of type "pointer
466    to TYPE"; generate code to fetch its value.  Note that TYPE is the
467    target type, not the pointer type.  */
468 static void
469 gen_fetch (struct agent_expr *ax, struct type *type)
470 {
471   if (ax->tracing)
472     {
473       /* Record the area of memory we're about to fetch.  */
474       ax_trace_quick (ax, TYPE_LENGTH (type));
475     }
476
477   if (TYPE_CODE (type) == TYPE_CODE_RANGE)
478     type = TYPE_TARGET_TYPE (type);
479
480   switch (TYPE_CODE (type))
481     {
482     case TYPE_CODE_PTR:
483     case TYPE_CODE_REF:
484     case TYPE_CODE_RVALUE_REF:
485     case TYPE_CODE_ENUM:
486     case TYPE_CODE_INT:
487     case TYPE_CODE_CHAR:
488     case TYPE_CODE_BOOL:
489       /* It's a scalar value, so we know how to dereference it.  How
490          many bytes long is it?  */
491       switch (TYPE_LENGTH (type))
492         {
493         case 8 / TARGET_CHAR_BIT:
494           ax_simple (ax, aop_ref8);
495           break;
496         case 16 / TARGET_CHAR_BIT:
497           ax_simple (ax, aop_ref16);
498           break;
499         case 32 / TARGET_CHAR_BIT:
500           ax_simple (ax, aop_ref32);
501           break;
502         case 64 / TARGET_CHAR_BIT:
503           ax_simple (ax, aop_ref64);
504           break;
505
506           /* Either our caller shouldn't have asked us to dereference
507              that pointer (other code's fault), or we're not
508              implementing something we should be (this code's fault).
509              In any case, it's a bug the user shouldn't see.  */
510         default:
511           internal_error (__FILE__, __LINE__,
512                           _("gen_fetch: strange size"));
513         }
514
515       gen_sign_extend (ax, type);
516       break;
517
518     default:
519       /* Our caller requested us to dereference a pointer from an unsupported
520          type.  Error out and give callers a chance to handle the failure
521          gracefully.  */
522       error (_("gen_fetch: Unsupported type code `%s'."),
523              TYPE_NAME (type));
524     }
525 }
526
527
528 /* Generate code to left shift the top of the stack by DISTANCE bits, or
529    right shift it by -DISTANCE bits if DISTANCE < 0.  This generates
530    unsigned (logical) right shifts.  */
531 static void
532 gen_left_shift (struct agent_expr *ax, int distance)
533 {
534   if (distance > 0)
535     {
536       ax_const_l (ax, distance);
537       ax_simple (ax, aop_lsh);
538     }
539   else if (distance < 0)
540     {
541       ax_const_l (ax, -distance);
542       ax_simple (ax, aop_rsh_unsigned);
543     }
544 }
545 \f
546
547
548 /* Generating bytecode from GDB expressions: symbol references */
549
550 /* Generate code to push the base address of the argument portion of
551    the top stack frame.  */
552 static void
553 gen_frame_args_address (struct agent_expr *ax)
554 {
555   int frame_reg;
556   LONGEST frame_offset;
557
558   gdbarch_virtual_frame_pointer (ax->gdbarch,
559                                  ax->scope, &frame_reg, &frame_offset);
560   ax_reg (ax, frame_reg);
561   gen_offset (ax, frame_offset);
562 }
563
564
565 /* Generate code to push the base address of the locals portion of the
566    top stack frame.  */
567 static void
568 gen_frame_locals_address (struct agent_expr *ax)
569 {
570   int frame_reg;
571   LONGEST frame_offset;
572
573   gdbarch_virtual_frame_pointer (ax->gdbarch,
574                                  ax->scope, &frame_reg, &frame_offset);
575   ax_reg (ax, frame_reg);
576   gen_offset (ax, frame_offset);
577 }
578
579
580 /* Generate code to add OFFSET to the top of the stack.  Try to
581    generate short and readable code.  We use this for getting to
582    variables on the stack, and structure members.  If we were
583    programming in ML, it would be clearer why these are the same
584    thing.  */
585 static void
586 gen_offset (struct agent_expr *ax, int offset)
587 {
588   /* It would suffice to simply push the offset and add it, but this
589      makes it easier to read positive and negative offsets in the
590      bytecode.  */
591   if (offset > 0)
592     {
593       ax_const_l (ax, offset);
594       ax_simple (ax, aop_add);
595     }
596   else if (offset < 0)
597     {
598       ax_const_l (ax, -offset);
599       ax_simple (ax, aop_sub);
600     }
601 }
602
603
604 /* In many cases, a symbol's value is the offset from some other
605    address (stack frame, base register, etc.)  Generate code to add
606    VAR's value to the top of the stack.  */
607 static void
608 gen_sym_offset (struct agent_expr *ax, struct symbol *var)
609 {
610   gen_offset (ax, SYMBOL_VALUE (var));
611 }
612
613
614 /* Generate code for a variable reference to AX.  The variable is the
615    symbol VAR.  Set VALUE to describe the result.  */
616
617 static void
618 gen_var_ref (struct agent_expr *ax, struct axs_value *value, struct symbol *var)
619 {
620   /* Dereference any typedefs.  */
621   value->type = check_typedef (SYMBOL_TYPE (var));
622   value->optimized_out = 0;
623
624   if (SYMBOL_COMPUTED_OPS (var) != NULL)
625     {
626       SYMBOL_COMPUTED_OPS (var)->tracepoint_var_ref (var, ax, value);
627       return;
628     }
629
630   /* I'm imitating the code in read_var_value.  */
631   switch (SYMBOL_CLASS (var))
632     {
633     case LOC_CONST:             /* A constant, like an enum value.  */
634       ax_const_l (ax, (LONGEST) SYMBOL_VALUE (var));
635       value->kind = axs_rvalue;
636       break;
637
638     case LOC_LABEL:             /* A goto label, being used as a value.  */
639       ax_const_l (ax, (LONGEST) SYMBOL_VALUE_ADDRESS (var));
640       value->kind = axs_rvalue;
641       break;
642
643     case LOC_CONST_BYTES:
644       internal_error (__FILE__, __LINE__,
645                       _("gen_var_ref: LOC_CONST_BYTES "
646                         "symbols are not supported"));
647
648       /* Variable at a fixed location in memory.  Easy.  */
649     case LOC_STATIC:
650       /* Push the address of the variable.  */
651       ax_const_l (ax, SYMBOL_VALUE_ADDRESS (var));
652       value->kind = axs_lvalue_memory;
653       break;
654
655     case LOC_ARG:               /* var lives in argument area of frame */
656       gen_frame_args_address (ax);
657       gen_sym_offset (ax, var);
658       value->kind = axs_lvalue_memory;
659       break;
660
661     case LOC_REF_ARG:           /* As above, but the frame slot really
662                                    holds the address of the variable.  */
663       gen_frame_args_address (ax);
664       gen_sym_offset (ax, var);
665       /* Don't assume any particular pointer size.  */
666       gen_fetch (ax, builtin_type (ax->gdbarch)->builtin_data_ptr);
667       value->kind = axs_lvalue_memory;
668       break;
669
670     case LOC_LOCAL:             /* var lives in locals area of frame */
671       gen_frame_locals_address (ax);
672       gen_sym_offset (ax, var);
673       value->kind = axs_lvalue_memory;
674       break;
675
676     case LOC_TYPEDEF:
677       error (_("Cannot compute value of typedef `%s'."),
678              SYMBOL_PRINT_NAME (var));
679       break;
680
681     case LOC_BLOCK:
682       ax_const_l (ax, BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (var)));
683       value->kind = axs_rvalue;
684       break;
685
686     case LOC_REGISTER:
687       /* Don't generate any code at all; in the process of treating
688          this as an lvalue or rvalue, the caller will generate the
689          right code.  */
690       value->kind = axs_lvalue_register;
691       value->u.reg
692         = SYMBOL_REGISTER_OPS (var)->register_number (var, ax->gdbarch);
693       break;
694
695       /* A lot like LOC_REF_ARG, but the pointer lives directly in a
696          register, not on the stack.  Simpler than LOC_REGISTER
697          because it's just like any other case where the thing
698          has a real address.  */
699     case LOC_REGPARM_ADDR:
700       ax_reg (ax,
701               SYMBOL_REGISTER_OPS (var)->register_number (var, ax->gdbarch));
702       value->kind = axs_lvalue_memory;
703       break;
704
705     case LOC_UNRESOLVED:
706       {
707         struct bound_minimal_symbol msym
708           = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL);
709
710         if (!msym.minsym)
711           error (_("Couldn't resolve symbol `%s'."), SYMBOL_PRINT_NAME (var));
712
713         /* Push the address of the variable.  */
714         ax_const_l (ax, BMSYMBOL_VALUE_ADDRESS (msym));
715         value->kind = axs_lvalue_memory;
716       }
717       break;
718
719     case LOC_COMPUTED:
720       gdb_assert_not_reached (_("LOC_COMPUTED variable missing a method"));
721
722     case LOC_OPTIMIZED_OUT:
723       /* Flag this, but don't say anything; leave it up to callers to
724          warn the user.  */
725       value->optimized_out = 1;
726       break;
727
728     default:
729       error (_("Cannot find value of botched symbol `%s'."),
730              SYMBOL_PRINT_NAME (var));
731       break;
732     }
733 }
734
735 /* Generate code for a minimal symbol variable reference to AX.  The
736    variable is the symbol MINSYM, of OBJFILE.  Set VALUE to describe
737    the result.  */
738
739 static void
740 gen_msym_var_ref (agent_expr *ax, axs_value *value,
741                   minimal_symbol *msymbol, objfile *objf)
742 {
743   CORE_ADDR address;
744   type *t = find_minsym_type_and_address (msymbol, objf, &address);
745   value->type = t;
746   value->optimized_out = false;
747   ax_const_l (ax, address);
748   value->kind = axs_lvalue_memory;
749 }
750
751 \f
752
753
754 /* Generating bytecode from GDB expressions: literals */
755
756 static void
757 gen_int_literal (struct agent_expr *ax, struct axs_value *value, LONGEST k,
758                  struct type *type)
759 {
760   ax_const_l (ax, k);
761   value->kind = axs_rvalue;
762   value->type = check_typedef (type);
763 }
764 \f
765
766
767 /* Generating bytecode from GDB expressions: unary conversions, casts */
768
769 /* Take what's on the top of the stack (as described by VALUE), and
770    try to make an rvalue out of it.  Signal an error if we can't do
771    that.  */
772 void
773 require_rvalue (struct agent_expr *ax, struct axs_value *value)
774 {
775   /* Only deal with scalars, structs and such may be too large
776      to fit in a stack entry.  */
777   value->type = check_typedef (value->type);
778   if (TYPE_CODE (value->type) == TYPE_CODE_ARRAY
779       || TYPE_CODE (value->type) == TYPE_CODE_STRUCT
780       || TYPE_CODE (value->type) == TYPE_CODE_UNION
781       || TYPE_CODE (value->type) == TYPE_CODE_FUNC)
782     error (_("Value not scalar: cannot be an rvalue."));
783
784   switch (value->kind)
785     {
786     case axs_rvalue:
787       /* It's already an rvalue.  */
788       break;
789
790     case axs_lvalue_memory:
791       /* The top of stack is the address of the object.  Dereference.  */
792       gen_fetch (ax, value->type);
793       break;
794
795     case axs_lvalue_register:
796       /* There's nothing on the stack, but value->u.reg is the
797          register number containing the value.
798
799          When we add floating-point support, this is going to have to
800          change.  What about SPARC register pairs, for example?  */
801       ax_reg (ax, value->u.reg);
802       gen_extend (ax, value->type);
803       break;
804     }
805
806   value->kind = axs_rvalue;
807 }
808
809
810 /* Assume the top of the stack is described by VALUE, and perform the
811    usual unary conversions.  This is motivated by ANSI 6.2.2, but of
812    course GDB expressions are not ANSI; they're the mishmash union of
813    a bunch of languages.  Rah.
814
815    NOTE!  This function promises to produce an rvalue only when the
816    incoming value is of an appropriate type.  In other words, the
817    consumer of the value this function produces may assume the value
818    is an rvalue only after checking its type.
819
820    The immediate issue is that if the user tries to use a structure or
821    union as an operand of, say, the `+' operator, we don't want to try
822    to convert that structure to an rvalue; require_rvalue will bomb on
823    structs and unions.  Rather, we want to simply pass the struct
824    lvalue through unchanged, and let `+' raise an error.  */
825
826 static void
827 gen_usual_unary (struct agent_expr *ax, struct axs_value *value)
828 {
829   /* We don't have to generate any code for the usual integral
830      conversions, since values are always represented as full-width on
831      the stack.  Should we tweak the type?  */
832
833   /* Some types require special handling.  */
834   switch (TYPE_CODE (value->type))
835     {
836       /* Functions get converted to a pointer to the function.  */
837     case TYPE_CODE_FUNC:
838       value->type = lookup_pointer_type (value->type);
839       value->kind = axs_rvalue; /* Should always be true, but just in case.  */
840       break;
841
842       /* Arrays get converted to a pointer to their first element, and
843          are no longer an lvalue.  */
844     case TYPE_CODE_ARRAY:
845       {
846         struct type *elements = TYPE_TARGET_TYPE (value->type);
847
848         value->type = lookup_pointer_type (elements);
849         value->kind = axs_rvalue;
850         /* We don't need to generate any code; the address of the array
851            is also the address of its first element.  */
852       }
853       break;
854
855       /* Don't try to convert structures and unions to rvalues.  Let the
856          consumer signal an error.  */
857     case TYPE_CODE_STRUCT:
858     case TYPE_CODE_UNION:
859       return;
860     }
861
862   /* If the value is an lvalue, dereference it.  */
863   require_rvalue (ax, value);
864 }
865
866
867 /* Return non-zero iff the type TYPE1 is considered "wider" than the
868    type TYPE2, according to the rules described in gen_usual_arithmetic.  */
869 static int
870 type_wider_than (struct type *type1, struct type *type2)
871 {
872   return (TYPE_LENGTH (type1) > TYPE_LENGTH (type2)
873           || (TYPE_LENGTH (type1) == TYPE_LENGTH (type2)
874               && TYPE_UNSIGNED (type1)
875               && !TYPE_UNSIGNED (type2)));
876 }
877
878
879 /* Return the "wider" of the two types TYPE1 and TYPE2.  */
880 static struct type *
881 max_type (struct type *type1, struct type *type2)
882 {
883   return type_wider_than (type1, type2) ? type1 : type2;
884 }
885
886
887 /* Generate code to convert a scalar value of type FROM to type TO.  */
888 static void
889 gen_conversion (struct agent_expr *ax, struct type *from, struct type *to)
890 {
891   /* Perhaps there is a more graceful way to state these rules.  */
892
893   /* If we're converting to a narrower type, then we need to clear out
894      the upper bits.  */
895   if (TYPE_LENGTH (to) < TYPE_LENGTH (from))
896     gen_extend (ax, to);
897
898   /* If the two values have equal width, but different signednesses,
899      then we need to extend.  */
900   else if (TYPE_LENGTH (to) == TYPE_LENGTH (from))
901     {
902       if (TYPE_UNSIGNED (from) != TYPE_UNSIGNED (to))
903         gen_extend (ax, to);
904     }
905
906   /* If we're converting to a wider type, and becoming unsigned, then
907      we need to zero out any possible sign bits.  */
908   else if (TYPE_LENGTH (to) > TYPE_LENGTH (from))
909     {
910       if (TYPE_UNSIGNED (to))
911         gen_extend (ax, to);
912     }
913 }
914
915
916 /* Return non-zero iff the type FROM will require any bytecodes to be
917    emitted to be converted to the type TO.  */
918 static int
919 is_nontrivial_conversion (struct type *from, struct type *to)
920 {
921   agent_expr_up ax (new agent_expr (NULL, 0));
922   int nontrivial;
923
924   /* Actually generate the code, and see if anything came out.  At the
925      moment, it would be trivial to replicate the code in
926      gen_conversion here, but in the future, when we're supporting
927      floating point and the like, it may not be.  Doing things this
928      way allows this function to be independent of the logic in
929      gen_conversion.  */
930   gen_conversion (ax.get (), from, to);
931   nontrivial = ax->len > 0;
932   return nontrivial;
933 }
934
935
936 /* Generate code to perform the "usual arithmetic conversions" (ANSI C
937    6.2.1.5) for the two operands of an arithmetic operator.  This
938    effectively finds a "least upper bound" type for the two arguments,
939    and promotes each argument to that type.  *VALUE1 and *VALUE2
940    describe the values as they are passed in, and as they are left.  */
941 static void
942 gen_usual_arithmetic (struct agent_expr *ax, struct axs_value *value1,
943                       struct axs_value *value2)
944 {
945   /* Do the usual binary conversions.  */
946   if (TYPE_CODE (value1->type) == TYPE_CODE_INT
947       && TYPE_CODE (value2->type) == TYPE_CODE_INT)
948     {
949       /* The ANSI integral promotions seem to work this way: Order the
950          integer types by size, and then by signedness: an n-bit
951          unsigned type is considered "wider" than an n-bit signed
952          type.  Promote to the "wider" of the two types, and always
953          promote at least to int.  */
954       struct type *target = max_type (builtin_type (ax->gdbarch)->builtin_int,
955                                       max_type (value1->type, value2->type));
956
957       /* Deal with value2, on the top of the stack.  */
958       gen_conversion (ax, value2->type, target);
959
960       /* Deal with value1, not on the top of the stack.  Don't
961          generate the `swap' instructions if we're not actually going
962          to do anything.  */
963       if (is_nontrivial_conversion (value1->type, target))
964         {
965           ax_simple (ax, aop_swap);
966           gen_conversion (ax, value1->type, target);
967           ax_simple (ax, aop_swap);
968         }
969
970       value1->type = value2->type = check_typedef (target);
971     }
972 }
973
974
975 /* Generate code to perform the integral promotions (ANSI 6.2.1.1) on
976    the value on the top of the stack, as described by VALUE.  Assume
977    the value has integral type.  */
978 static void
979 gen_integral_promotions (struct agent_expr *ax, struct axs_value *value)
980 {
981   const struct builtin_type *builtin = builtin_type (ax->gdbarch);
982
983   if (!type_wider_than (value->type, builtin->builtin_int))
984     {
985       gen_conversion (ax, value->type, builtin->builtin_int);
986       value->type = builtin->builtin_int;
987     }
988   else if (!type_wider_than (value->type, builtin->builtin_unsigned_int))
989     {
990       gen_conversion (ax, value->type, builtin->builtin_unsigned_int);
991       value->type = builtin->builtin_unsigned_int;
992     }
993 }
994
995
996 /* Generate code for a cast to TYPE.  */
997 static void
998 gen_cast (struct agent_expr *ax, struct axs_value *value, struct type *type)
999 {
1000   /* GCC does allow casts to yield lvalues, so this should be fixed
1001      before merging these changes into the trunk.  */
1002   require_rvalue (ax, value);
1003   /* Dereference typedefs.  */
1004   type = check_typedef (type);
1005
1006   switch (TYPE_CODE (type))
1007     {
1008     case TYPE_CODE_PTR:
1009     case TYPE_CODE_REF:
1010     case TYPE_CODE_RVALUE_REF:
1011       /* It's implementation-defined, and I'll bet this is what GCC
1012          does.  */
1013       break;
1014
1015     case TYPE_CODE_ARRAY:
1016     case TYPE_CODE_STRUCT:
1017     case TYPE_CODE_UNION:
1018     case TYPE_CODE_FUNC:
1019       error (_("Invalid type cast: intended type must be scalar."));
1020
1021     case TYPE_CODE_ENUM:
1022     case TYPE_CODE_BOOL:
1023       /* We don't have to worry about the size of the value, because
1024          all our integral values are fully sign-extended, and when
1025          casting pointers we can do anything we like.  Is there any
1026          way for us to know what GCC actually does with a cast like
1027          this?  */
1028       break;
1029
1030     case TYPE_CODE_INT:
1031       gen_conversion (ax, value->type, type);
1032       break;
1033
1034     case TYPE_CODE_VOID:
1035       /* We could pop the value, and rely on everyone else to check
1036          the type and notice that this value doesn't occupy a stack
1037          slot.  But for now, leave the value on the stack, and
1038          preserve the "value == stack element" assumption.  */
1039       break;
1040
1041     default:
1042       error (_("Casts to requested type are not yet implemented."));
1043     }
1044
1045   value->type = type;
1046 }
1047 \f
1048
1049
1050 /* Generating bytecode from GDB expressions: arithmetic */
1051
1052 /* Scale the integer on the top of the stack by the size of the target
1053    of the pointer type TYPE.  */
1054 static void
1055 gen_scale (struct agent_expr *ax, enum agent_op op, struct type *type)
1056 {
1057   struct type *element = TYPE_TARGET_TYPE (type);
1058
1059   if (TYPE_LENGTH (element) != 1)
1060     {
1061       ax_const_l (ax, TYPE_LENGTH (element));
1062       ax_simple (ax, op);
1063     }
1064 }
1065
1066
1067 /* Generate code for pointer arithmetic PTR + INT.  */
1068 static void
1069 gen_ptradd (struct agent_expr *ax, struct axs_value *value,
1070             struct axs_value *value1, struct axs_value *value2)
1071 {
1072   gdb_assert (pointer_type (value1->type));
1073   gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
1074
1075   gen_scale (ax, aop_mul, value1->type);
1076   ax_simple (ax, aop_add);
1077   gen_extend (ax, value1->type);        /* Catch overflow.  */
1078   value->type = value1->type;
1079   value->kind = axs_rvalue;
1080 }
1081
1082
1083 /* Generate code for pointer arithmetic PTR - INT.  */
1084 static void
1085 gen_ptrsub (struct agent_expr *ax, struct axs_value *value,
1086             struct axs_value *value1, struct axs_value *value2)
1087 {
1088   gdb_assert (pointer_type (value1->type));
1089   gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
1090
1091   gen_scale (ax, aop_mul, value1->type);
1092   ax_simple (ax, aop_sub);
1093   gen_extend (ax, value1->type);        /* Catch overflow.  */
1094   value->type = value1->type;
1095   value->kind = axs_rvalue;
1096 }
1097
1098
1099 /* Generate code for pointer arithmetic PTR - PTR.  */
1100 static void
1101 gen_ptrdiff (struct agent_expr *ax, struct axs_value *value,
1102              struct axs_value *value1, struct axs_value *value2,
1103              struct type *result_type)
1104 {
1105   gdb_assert (pointer_type (value1->type));
1106   gdb_assert (pointer_type (value2->type));
1107
1108   if (TYPE_LENGTH (TYPE_TARGET_TYPE (value1->type))
1109       != TYPE_LENGTH (TYPE_TARGET_TYPE (value2->type)))
1110     error (_("\
1111 First argument of `-' is a pointer, but second argument is neither\n\
1112 an integer nor a pointer of the same type."));
1113
1114   ax_simple (ax, aop_sub);
1115   gen_scale (ax, aop_div_unsigned, value1->type);
1116   value->type = result_type;
1117   value->kind = axs_rvalue;
1118 }
1119
1120 static void
1121 gen_equal (struct agent_expr *ax, struct axs_value *value,
1122            struct axs_value *value1, struct axs_value *value2,
1123            struct type *result_type)
1124 {
1125   if (pointer_type (value1->type) || pointer_type (value2->type))
1126     ax_simple (ax, aop_equal);
1127   else
1128     gen_binop (ax, value, value1, value2,
1129                aop_equal, aop_equal, 0, "equal");
1130   value->type = result_type;
1131   value->kind = axs_rvalue;
1132 }
1133
1134 static void
1135 gen_less (struct agent_expr *ax, struct axs_value *value,
1136           struct axs_value *value1, struct axs_value *value2,
1137           struct type *result_type)
1138 {
1139   if (pointer_type (value1->type) || pointer_type (value2->type))
1140     ax_simple (ax, aop_less_unsigned);
1141   else
1142     gen_binop (ax, value, value1, value2,
1143                aop_less_signed, aop_less_unsigned, 0, "less than");
1144   value->type = result_type;
1145   value->kind = axs_rvalue;
1146 }
1147
1148 /* Generate code for a binary operator that doesn't do pointer magic.
1149    We set VALUE to describe the result value; we assume VALUE1 and
1150    VALUE2 describe the two operands, and that they've undergone the
1151    usual binary conversions.  MAY_CARRY should be non-zero iff the
1152    result needs to be extended.  NAME is the English name of the
1153    operator, used in error messages */
1154 static void
1155 gen_binop (struct agent_expr *ax, struct axs_value *value,
1156            struct axs_value *value1, struct axs_value *value2,
1157            enum agent_op op, enum agent_op op_unsigned,
1158            int may_carry, const char *name)
1159 {
1160   /* We only handle INT op INT.  */
1161   if ((TYPE_CODE (value1->type) != TYPE_CODE_INT)
1162       || (TYPE_CODE (value2->type) != TYPE_CODE_INT))
1163     error (_("Invalid combination of types in %s."), name);
1164
1165   ax_simple (ax,
1166              TYPE_UNSIGNED (value1->type) ? op_unsigned : op);
1167   if (may_carry)
1168     gen_extend (ax, value1->type);      /* catch overflow */
1169   value->type = value1->type;
1170   value->kind = axs_rvalue;
1171 }
1172
1173
1174 static void
1175 gen_logical_not (struct agent_expr *ax, struct axs_value *value,
1176                  struct type *result_type)
1177 {
1178   if (TYPE_CODE (value->type) != TYPE_CODE_INT
1179       && TYPE_CODE (value->type) != TYPE_CODE_PTR)
1180     error (_("Invalid type of operand to `!'."));
1181
1182   ax_simple (ax, aop_log_not);
1183   value->type = result_type;
1184 }
1185
1186
1187 static void
1188 gen_complement (struct agent_expr *ax, struct axs_value *value)
1189 {
1190   if (TYPE_CODE (value->type) != TYPE_CODE_INT)
1191     error (_("Invalid type of operand to `~'."));
1192
1193   ax_simple (ax, aop_bit_not);
1194   gen_extend (ax, value->type);
1195 }
1196 \f
1197
1198
1199 /* Generating bytecode from GDB expressions: * & . -> @ sizeof */
1200
1201 /* Dereference the value on the top of the stack.  */
1202 static void
1203 gen_deref (struct axs_value *value)
1204 {
1205   /* The caller should check the type, because several operators use
1206      this, and we don't know what error message to generate.  */
1207   if (!pointer_type (value->type))
1208     internal_error (__FILE__, __LINE__,
1209                     _("gen_deref: expected a pointer"));
1210
1211   /* We've got an rvalue now, which is a pointer.  We want to yield an
1212      lvalue, whose address is exactly that pointer.  So we don't
1213      actually emit any code; we just change the type from "Pointer to
1214      T" to "T", and mark the value as an lvalue in memory.  Leave it
1215      to the consumer to actually dereference it.  */
1216   value->type = check_typedef (TYPE_TARGET_TYPE (value->type));
1217   if (TYPE_CODE (value->type) == TYPE_CODE_VOID)
1218     error (_("Attempt to dereference a generic pointer."));
1219   value->kind = ((TYPE_CODE (value->type) == TYPE_CODE_FUNC)
1220                  ? axs_rvalue : axs_lvalue_memory);
1221 }
1222
1223
1224 /* Produce the address of the lvalue on the top of the stack.  */
1225 static void
1226 gen_address_of (struct axs_value *value)
1227 {
1228   /* Special case for taking the address of a function.  The ANSI
1229      standard describes this as a special case, too, so this
1230      arrangement is not without motivation.  */
1231   if (TYPE_CODE (value->type) == TYPE_CODE_FUNC)
1232     /* The value's already an rvalue on the stack, so we just need to
1233        change the type.  */
1234     value->type = lookup_pointer_type (value->type);
1235   else
1236     switch (value->kind)
1237       {
1238       case axs_rvalue:
1239         error (_("Operand of `&' is an rvalue, which has no address."));
1240
1241       case axs_lvalue_register:
1242         error (_("Operand of `&' is in a register, and has no address."));
1243
1244       case axs_lvalue_memory:
1245         value->kind = axs_rvalue;
1246         value->type = lookup_pointer_type (value->type);
1247         break;
1248       }
1249 }
1250
1251 /* Generate code to push the value of a bitfield of a structure whose
1252    address is on the top of the stack.  START and END give the
1253    starting and one-past-ending *bit* numbers of the field within the
1254    structure.  */
1255 static void
1256 gen_bitfield_ref (struct agent_expr *ax, struct axs_value *value,
1257                   struct type *type, int start, int end)
1258 {
1259   /* Note that ops[i] fetches 8 << i bits.  */
1260   static enum agent_op ops[]
1261     = {aop_ref8, aop_ref16, aop_ref32, aop_ref64};
1262   static int num_ops = (sizeof (ops) / sizeof (ops[0]));
1263
1264   /* We don't want to touch any byte that the bitfield doesn't
1265      actually occupy; we shouldn't make any accesses we're not
1266      explicitly permitted to.  We rely here on the fact that the
1267      bytecode `ref' operators work on unaligned addresses.
1268
1269      It takes some fancy footwork to get the stack to work the way
1270      we'd like.  Say we're retrieving a bitfield that requires three
1271      fetches.  Initially, the stack just contains the address:
1272      addr
1273      For the first fetch, we duplicate the address
1274      addr addr
1275      then add the byte offset, do the fetch, and shift and mask as
1276      needed, yielding a fragment of the value, properly aligned for
1277      the final bitwise or:
1278      addr frag1
1279      then we swap, and repeat the process:
1280      frag1 addr                    --- address on top
1281      frag1 addr addr               --- duplicate it
1282      frag1 addr frag2              --- get second fragment
1283      frag1 frag2 addr              --- swap again
1284      frag1 frag2 frag3             --- get third fragment
1285      Notice that, since the third fragment is the last one, we don't
1286      bother duplicating the address this time.  Now we have all the
1287      fragments on the stack, and we can simply `or' them together,
1288      yielding the final value of the bitfield.  */
1289
1290   /* The first and one-after-last bits in the field, but rounded down
1291      and up to byte boundaries.  */
1292   int bound_start = (start / TARGET_CHAR_BIT) * TARGET_CHAR_BIT;
1293   int bound_end = (((end + TARGET_CHAR_BIT - 1)
1294                     / TARGET_CHAR_BIT)
1295                    * TARGET_CHAR_BIT);
1296
1297   /* current bit offset within the structure */
1298   int offset;
1299
1300   /* The index in ops of the opcode we're considering.  */
1301   int op;
1302
1303   /* The number of fragments we generated in the process.  Probably
1304      equal to the number of `one' bits in bytesize, but who cares?  */
1305   int fragment_count;
1306
1307   /* Dereference any typedefs.  */
1308   type = check_typedef (type);
1309
1310   /* Can we fetch the number of bits requested at all?  */
1311   if ((end - start) > ((1 << num_ops) * 8))
1312     internal_error (__FILE__, __LINE__,
1313                     _("gen_bitfield_ref: bitfield too wide"));
1314
1315   /* Note that we know here that we only need to try each opcode once.
1316      That may not be true on machines with weird byte sizes.  */
1317   offset = bound_start;
1318   fragment_count = 0;
1319   for (op = num_ops - 1; op >= 0; op--)
1320     {
1321       /* number of bits that ops[op] would fetch */
1322       int op_size = 8 << op;
1323
1324       /* The stack at this point, from bottom to top, contains zero or
1325          more fragments, then the address.  */
1326
1327       /* Does this fetch fit within the bitfield?  */
1328       if (offset + op_size <= bound_end)
1329         {
1330           /* Is this the last fragment?  */
1331           int last_frag = (offset + op_size == bound_end);
1332
1333           if (!last_frag)
1334             ax_simple (ax, aop_dup);    /* keep a copy of the address */
1335
1336           /* Add the offset.  */
1337           gen_offset (ax, offset / TARGET_CHAR_BIT);
1338
1339           if (ax->tracing)
1340             {
1341               /* Record the area of memory we're about to fetch.  */
1342               ax_trace_quick (ax, op_size / TARGET_CHAR_BIT);
1343             }
1344
1345           /* Perform the fetch.  */
1346           ax_simple (ax, ops[op]);
1347
1348           /* Shift the bits we have to their proper position.
1349              gen_left_shift will generate right shifts when the operand
1350              is negative.
1351
1352              A big-endian field diagram to ponder:
1353              byte 0  byte 1  byte 2  byte 3  byte 4  byte 5  byte 6  byte 7
1354              +------++------++------++------++------++------++------++------+
1355              xxxxAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCxxxxxxxxxxx
1356              ^               ^               ^    ^
1357              bit number      16              32              48   53
1358              These are bit numbers as supplied by GDB.  Note that the
1359              bit numbers run from right to left once you've fetched the
1360              value!
1361
1362              A little-endian field diagram to ponder:
1363              byte 7  byte 6  byte 5  byte 4  byte 3  byte 2  byte 1  byte 0
1364              +------++------++------++------++------++------++------++------+
1365              xxxxxxxxxxxAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCxxxx
1366              ^               ^               ^           ^   ^
1367              bit number     48              32              16          4   0
1368
1369              In both cases, the most significant end is on the left
1370              (i.e. normal numeric writing order), which means that you
1371              don't go crazy thinking about `left' and `right' shifts.
1372
1373              We don't have to worry about masking yet:
1374              - If they contain garbage off the least significant end, then we
1375              must be looking at the low end of the field, and the right
1376              shift will wipe them out.
1377              - If they contain garbage off the most significant end, then we
1378              must be looking at the most significant end of the word, and
1379              the sign/zero extension will wipe them out.
1380              - If we're in the interior of the word, then there is no garbage
1381              on either end, because the ref operators zero-extend.  */
1382           if (gdbarch_byte_order (ax->gdbarch) == BFD_ENDIAN_BIG)
1383             gen_left_shift (ax, end - (offset + op_size));
1384           else
1385             gen_left_shift (ax, offset - start);
1386
1387           if (!last_frag)
1388             /* Bring the copy of the address up to the top.  */
1389             ax_simple (ax, aop_swap);
1390
1391           offset += op_size;
1392           fragment_count++;
1393         }
1394     }
1395
1396   /* Generate enough bitwise `or' operations to combine all the
1397      fragments we left on the stack.  */
1398   while (fragment_count-- > 1)
1399     ax_simple (ax, aop_bit_or);
1400
1401   /* Sign- or zero-extend the value as appropriate.  */
1402   ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, end - start));
1403
1404   /* This is *not* an lvalue.  Ugh.  */
1405   value->kind = axs_rvalue;
1406   value->type = type;
1407 }
1408
1409 /* Generate bytecodes for field number FIELDNO of type TYPE.  OFFSET
1410    is an accumulated offset (in bytes), will be nonzero for objects
1411    embedded in other objects, like C++ base classes.  Behavior should
1412    generally follow value_primitive_field.  */
1413
1414 static void
1415 gen_primitive_field (struct agent_expr *ax, struct axs_value *value,
1416                      int offset, int fieldno, struct type *type)
1417 {
1418   /* Is this a bitfield?  */
1419   if (TYPE_FIELD_PACKED (type, fieldno))
1420     gen_bitfield_ref (ax, value, TYPE_FIELD_TYPE (type, fieldno),
1421                       (offset * TARGET_CHAR_BIT
1422                        + TYPE_FIELD_BITPOS (type, fieldno)),
1423                       (offset * TARGET_CHAR_BIT
1424                        + TYPE_FIELD_BITPOS (type, fieldno)
1425                        + TYPE_FIELD_BITSIZE (type, fieldno)));
1426   else
1427     {
1428       gen_offset (ax, offset
1429                   + TYPE_FIELD_BITPOS (type, fieldno) / TARGET_CHAR_BIT);
1430       value->kind = axs_lvalue_memory;
1431       value->type = TYPE_FIELD_TYPE (type, fieldno);
1432     }
1433 }
1434
1435 /* Search for the given field in either the given type or one of its
1436    base classes.  Return 1 if found, 0 if not.  */
1437
1438 static int
1439 gen_struct_ref_recursive (struct agent_expr *ax, struct axs_value *value,
1440                           const char *field, int offset, struct type *type)
1441 {
1442   int i, rslt;
1443   int nbases = TYPE_N_BASECLASSES (type);
1444
1445   type = check_typedef (type);
1446
1447   for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1448     {
1449       const char *this_name = TYPE_FIELD_NAME (type, i);
1450
1451       if (this_name)
1452         {
1453           if (strcmp (field, this_name) == 0)
1454             {
1455               /* Note that bytecodes for the struct's base (aka
1456                  "this") will have been generated already, which will
1457                  be unnecessary but not harmful if the static field is
1458                  being handled as a global.  */
1459               if (field_is_static (&TYPE_FIELD (type, i)))
1460                 {
1461                   gen_static_field (ax, value, type, i);
1462                   if (value->optimized_out)
1463                     error (_("static field `%s' has been "
1464                              "optimized out, cannot use"),
1465                            field);
1466                   return 1;
1467                 }
1468
1469               gen_primitive_field (ax, value, offset, i, type);
1470               return 1;
1471             }
1472 #if 0 /* is this right? */
1473           if (this_name[0] == '\0')
1474             internal_error (__FILE__, __LINE__,
1475                             _("find_field: anonymous unions not supported"));
1476 #endif
1477         }
1478     }
1479
1480   /* Now scan through base classes recursively.  */
1481   for (i = 0; i < nbases; i++)
1482     {
1483       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1484
1485       rslt = gen_struct_ref_recursive (ax, value, field,
1486                                        offset + TYPE_BASECLASS_BITPOS (type, i)
1487                                        / TARGET_CHAR_BIT,
1488                                        basetype);
1489       if (rslt)
1490         return 1;
1491     }
1492
1493   /* Not found anywhere, flag so caller can complain.  */
1494   return 0;
1495 }
1496
1497 /* Generate code to reference the member named FIELD of a structure or
1498    union.  The top of the stack, as described by VALUE, should have
1499    type (pointer to a)* struct/union.  OPERATOR_NAME is the name of
1500    the operator being compiled, and OPERAND_NAME is the kind of thing
1501    it operates on; we use them in error messages.  */
1502 static void
1503 gen_struct_ref (struct agent_expr *ax, struct axs_value *value,
1504                 const char *field, const char *operator_name,
1505                 const char *operand_name)
1506 {
1507   struct type *type;
1508   int found;
1509
1510   /* Follow pointers until we reach a non-pointer.  These aren't the C
1511      semantics, but they're what the normal GDB evaluator does, so we
1512      should at least be consistent.  */
1513   while (pointer_type (value->type))
1514     {
1515       require_rvalue (ax, value);
1516       gen_deref (value);
1517     }
1518   type = check_typedef (value->type);
1519
1520   /* This must yield a structure or a union.  */
1521   if (TYPE_CODE (type) != TYPE_CODE_STRUCT
1522       && TYPE_CODE (type) != TYPE_CODE_UNION)
1523     error (_("The left operand of `%s' is not a %s."),
1524            operator_name, operand_name);
1525
1526   /* And it must be in memory; we don't deal with structure rvalues,
1527      or structures living in registers.  */
1528   if (value->kind != axs_lvalue_memory)
1529     error (_("Structure does not live in memory."));
1530
1531   /* Search through fields and base classes recursively.  */
1532   found = gen_struct_ref_recursive (ax, value, field, 0, type);
1533   
1534   if (!found)
1535     error (_("Couldn't find member named `%s' in struct/union/class `%s'"),
1536            field, TYPE_NAME (type));
1537 }
1538
1539 static int
1540 gen_namespace_elt (struct agent_expr *ax, struct axs_value *value,
1541                    const struct type *curtype, char *name);
1542 static int
1543 gen_maybe_namespace_elt (struct agent_expr *ax, struct axs_value *value,
1544                          const struct type *curtype, char *name);
1545
1546 static void
1547 gen_static_field (struct agent_expr *ax, struct axs_value *value,
1548                   struct type *type, int fieldno)
1549 {
1550   if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR)
1551     {
1552       ax_const_l (ax, TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
1553       value->kind = axs_lvalue_memory;
1554       value->type = TYPE_FIELD_TYPE (type, fieldno);
1555       value->optimized_out = 0;
1556     }
1557   else
1558     {
1559       const char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
1560       struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0).symbol;
1561
1562       if (sym)
1563         {
1564           gen_var_ref (ax, value, sym);
1565   
1566           /* Don't error if the value was optimized out, we may be
1567              scanning all static fields and just want to pass over this
1568              and continue with the rest.  */
1569         }
1570       else
1571         {
1572           /* Silently assume this was optimized out; class printing
1573              will let the user know why the data is missing.  */
1574           value->optimized_out = 1;
1575         }
1576     }
1577 }
1578
1579 static int
1580 gen_struct_elt_for_reference (struct agent_expr *ax, struct axs_value *value,
1581                               struct type *type, char *fieldname)
1582 {
1583   struct type *t = type;
1584   int i;
1585
1586   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1587       && TYPE_CODE (t) != TYPE_CODE_UNION)
1588     internal_error (__FILE__, __LINE__,
1589                     _("non-aggregate type to gen_struct_elt_for_reference"));
1590
1591   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
1592     {
1593       const char *t_field_name = TYPE_FIELD_NAME (t, i);
1594
1595       if (t_field_name && strcmp (t_field_name, fieldname) == 0)
1596         {
1597           if (field_is_static (&TYPE_FIELD (t, i)))
1598             {
1599               gen_static_field (ax, value, t, i);
1600               if (value->optimized_out)
1601                 error (_("static field `%s' has been "
1602                          "optimized out, cannot use"),
1603                        fieldname);
1604               return 1;
1605             }
1606           if (TYPE_FIELD_PACKED (t, i))
1607             error (_("pointers to bitfield members not allowed"));
1608
1609           /* FIXME we need a way to do "want_address" equivalent */       
1610
1611           error (_("Cannot reference non-static field \"%s\""), fieldname);
1612         }
1613     }
1614
1615   /* FIXME add other scoped-reference cases here */
1616
1617   /* Do a last-ditch lookup.  */
1618   return gen_maybe_namespace_elt (ax, value, type, fieldname);
1619 }
1620
1621 /* C++: Return the member NAME of the namespace given by the type
1622    CURTYPE.  */
1623
1624 static int
1625 gen_namespace_elt (struct agent_expr *ax, struct axs_value *value,
1626                    const struct type *curtype, char *name)
1627 {
1628   int found = gen_maybe_namespace_elt (ax, value, curtype, name);
1629
1630   if (!found)
1631     error (_("No symbol \"%s\" in namespace \"%s\"."), 
1632            name, TYPE_NAME (curtype));
1633
1634   return found;
1635 }
1636
1637 /* A helper function used by value_namespace_elt and
1638    value_struct_elt_for_reference.  It looks up NAME inside the
1639    context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
1640    is a class and NAME refers to a type in CURTYPE itself (as opposed
1641    to, say, some base class of CURTYPE).  */
1642
1643 static int
1644 gen_maybe_namespace_elt (struct agent_expr *ax, struct axs_value *value,
1645                          const struct type *curtype, char *name)
1646 {
1647   const char *namespace_name = TYPE_NAME (curtype);
1648   struct block_symbol sym;
1649
1650   sym = cp_lookup_symbol_namespace (namespace_name, name,
1651                                     block_for_pc (ax->scope),
1652                                     VAR_DOMAIN);
1653
1654   if (sym.symbol == NULL)
1655     return 0;
1656
1657   gen_var_ref (ax, value, sym.symbol);
1658
1659   if (value->optimized_out)
1660     error (_("`%s' has been optimized out, cannot use"),
1661            SYMBOL_PRINT_NAME (sym.symbol));
1662
1663   return 1;
1664 }
1665
1666
1667 static int
1668 gen_aggregate_elt_ref (struct agent_expr *ax, struct axs_value *value,
1669                        struct type *type, char *field)
1670 {
1671   switch (TYPE_CODE (type))
1672     {
1673     case TYPE_CODE_STRUCT:
1674     case TYPE_CODE_UNION:
1675       return gen_struct_elt_for_reference (ax, value, type, field);
1676       break;
1677     case TYPE_CODE_NAMESPACE:
1678       return gen_namespace_elt (ax, value, type, field);
1679       break;
1680     default:
1681       internal_error (__FILE__, __LINE__,
1682                       _("non-aggregate type in gen_aggregate_elt_ref"));
1683     }
1684
1685   return 0;
1686 }
1687
1688 /* Generate code for GDB's magical `repeat' operator.
1689    LVALUE @ INT creates an array INT elements long, and whose elements
1690    have the same type as LVALUE, located in memory so that LVALUE is
1691    its first element.  For example, argv[0]@argc gives you the array
1692    of command-line arguments.
1693
1694    Unfortunately, because we have to know the types before we actually
1695    have a value for the expression, we can't implement this perfectly
1696    without changing the type system, having values that occupy two
1697    stack slots, doing weird things with sizeof, etc.  So we require
1698    the right operand to be a constant expression.  */
1699 static void
1700 gen_repeat (struct expression *exp, union exp_element **pc,
1701             struct agent_expr *ax, struct axs_value *value)
1702 {
1703   struct axs_value value1;
1704
1705   /* We don't want to turn this into an rvalue, so no conversions
1706      here.  */
1707   gen_expr (exp, pc, ax, &value1);
1708   if (value1.kind != axs_lvalue_memory)
1709     error (_("Left operand of `@' must be an object in memory."));
1710
1711   /* Evaluate the length; it had better be a constant.  */
1712   {
1713     struct value *v = const_expr (pc);
1714     int length;
1715
1716     if (!v)
1717       error (_("Right operand of `@' must be a "
1718                "constant, in agent expressions."));
1719     if (TYPE_CODE (value_type (v)) != TYPE_CODE_INT)
1720       error (_("Right operand of `@' must be an integer."));
1721     length = value_as_long (v);
1722     if (length <= 0)
1723       error (_("Right operand of `@' must be positive."));
1724
1725     /* The top of the stack is already the address of the object, so
1726        all we need to do is frob the type of the lvalue.  */
1727     {
1728       /* FIXME-type-allocation: need a way to free this type when we are
1729          done with it.  */
1730       struct type *array
1731         = lookup_array_range_type (value1.type, 0, length - 1);
1732
1733       value->kind = axs_lvalue_memory;
1734       value->type = array;
1735     }
1736   }
1737 }
1738
1739
1740 /* Emit code for the `sizeof' operator.
1741    *PC should point at the start of the operand expression; we advance it
1742    to the first instruction after the operand.  */
1743 static void
1744 gen_sizeof (struct expression *exp, union exp_element **pc,
1745             struct agent_expr *ax, struct axs_value *value,
1746             struct type *size_type)
1747 {
1748   /* We don't care about the value of the operand expression; we only
1749      care about its type.  However, in the current arrangement, the
1750      only way to find an expression's type is to generate code for it.
1751      So we generate code for the operand, and then throw it away,
1752      replacing it with code that simply pushes its size.  */
1753   int start = ax->len;
1754
1755   gen_expr (exp, pc, ax, value);
1756
1757   /* Throw away the code we just generated.  */
1758   ax->len = start;
1759
1760   ax_const_l (ax, TYPE_LENGTH (value->type));
1761   value->kind = axs_rvalue;
1762   value->type = size_type;
1763 }
1764 \f
1765
1766 /* Generate bytecode for a cast to TO_TYPE.  Advance *PC over the
1767    subexpression.  */
1768
1769 static void
1770 gen_expr_for_cast (struct expression *exp, union exp_element **pc,
1771                    struct agent_expr *ax, struct axs_value *value,
1772                    struct type *to_type)
1773 {
1774   enum exp_opcode op = (*pc)[0].opcode;
1775
1776   /* Don't let symbols be handled with gen_expr because that throws an
1777      "unknown type" error for no-debug data symbols.  Instead, we want
1778      the cast to reinterpret such symbols.  */
1779   if (op == OP_VAR_MSYM_VALUE || op == OP_VAR_VALUE)
1780     {
1781       if (op == OP_VAR_VALUE)
1782         {
1783           gen_var_ref (ax, value, (*pc)[2].symbol);
1784
1785           if (value->optimized_out)
1786             error (_("`%s' has been optimized out, cannot use"),
1787                    SYMBOL_PRINT_NAME ((*pc)[2].symbol));
1788         }
1789       else
1790         gen_msym_var_ref (ax, value, (*pc)[2].msymbol, (*pc)[1].objfile);
1791       if (TYPE_CODE (value->type) == TYPE_CODE_ERROR)
1792         value->type = to_type;
1793       (*pc) += 4;
1794     }
1795   else
1796     gen_expr (exp, pc, ax, value);
1797   gen_cast (ax, value, to_type);
1798 }
1799
1800 /* Generating bytecode from GDB expressions: general recursive thingy  */
1801
1802 /* XXX: i18n */
1803 /* A gen_expr function written by a Gen-X'er guy.
1804    Append code for the subexpression of EXPR starting at *POS_P to AX.  */
1805 void
1806 gen_expr (struct expression *exp, union exp_element **pc,
1807           struct agent_expr *ax, struct axs_value *value)
1808 {
1809   /* Used to hold the descriptions of operand expressions.  */
1810   struct axs_value value1, value2, value3;
1811   enum exp_opcode op = (*pc)[0].opcode, op2;
1812   int if1, go1, if2, go2, end;
1813   struct type *int_type = builtin_type (ax->gdbarch)->builtin_int;
1814
1815   /* If we're looking at a constant expression, just push its value.  */
1816   {
1817     struct value *v = maybe_const_expr (pc);
1818
1819     if (v)
1820       {
1821         ax_const_l (ax, value_as_long (v));
1822         value->kind = axs_rvalue;
1823         value->type = check_typedef (value_type (v));
1824         return;
1825       }
1826   }
1827
1828   /* Otherwise, go ahead and generate code for it.  */
1829   switch (op)
1830     {
1831       /* Binary arithmetic operators.  */
1832     case BINOP_ADD:
1833     case BINOP_SUB:
1834     case BINOP_MUL:
1835     case BINOP_DIV:
1836     case BINOP_REM:
1837     case BINOP_LSH:
1838     case BINOP_RSH:
1839     case BINOP_SUBSCRIPT:
1840     case BINOP_BITWISE_AND:
1841     case BINOP_BITWISE_IOR:
1842     case BINOP_BITWISE_XOR:
1843     case BINOP_EQUAL:
1844     case BINOP_NOTEQUAL:
1845     case BINOP_LESS:
1846     case BINOP_GTR:
1847     case BINOP_LEQ:
1848     case BINOP_GEQ:
1849       (*pc)++;
1850       gen_expr (exp, pc, ax, &value1);
1851       gen_usual_unary (ax, &value1);
1852       gen_expr_binop_rest (exp, op, pc, ax, value, &value1, &value2);
1853       break;
1854
1855     case BINOP_LOGICAL_AND:
1856       (*pc)++;
1857       /* Generate the obvious sequence of tests and jumps.  */
1858       gen_expr (exp, pc, ax, &value1);
1859       gen_usual_unary (ax, &value1);
1860       if1 = ax_goto (ax, aop_if_goto);
1861       go1 = ax_goto (ax, aop_goto);
1862       ax_label (ax, if1, ax->len);
1863       gen_expr (exp, pc, ax, &value2);
1864       gen_usual_unary (ax, &value2);
1865       if2 = ax_goto (ax, aop_if_goto);
1866       go2 = ax_goto (ax, aop_goto);
1867       ax_label (ax, if2, ax->len);
1868       ax_const_l (ax, 1);
1869       end = ax_goto (ax, aop_goto);
1870       ax_label (ax, go1, ax->len);
1871       ax_label (ax, go2, ax->len);
1872       ax_const_l (ax, 0);
1873       ax_label (ax, end, ax->len);
1874       value->kind = axs_rvalue;
1875       value->type = int_type;
1876       break;
1877
1878     case BINOP_LOGICAL_OR:
1879       (*pc)++;
1880       /* Generate the obvious sequence of tests and jumps.  */
1881       gen_expr (exp, pc, ax, &value1);
1882       gen_usual_unary (ax, &value1);
1883       if1 = ax_goto (ax, aop_if_goto);
1884       gen_expr (exp, pc, ax, &value2);
1885       gen_usual_unary (ax, &value2);
1886       if2 = ax_goto (ax, aop_if_goto);
1887       ax_const_l (ax, 0);
1888       end = ax_goto (ax, aop_goto);
1889       ax_label (ax, if1, ax->len);
1890       ax_label (ax, if2, ax->len);
1891       ax_const_l (ax, 1);
1892       ax_label (ax, end, ax->len);
1893       value->kind = axs_rvalue;
1894       value->type = int_type;
1895       break;
1896
1897     case TERNOP_COND:
1898       (*pc)++;
1899       gen_expr (exp, pc, ax, &value1);
1900       gen_usual_unary (ax, &value1);
1901       /* For (A ? B : C), it's easiest to generate subexpression
1902          bytecodes in order, but if_goto jumps on true, so we invert
1903          the sense of A.  Then we can do B by dropping through, and
1904          jump to do C.  */
1905       gen_logical_not (ax, &value1, int_type);
1906       if1 = ax_goto (ax, aop_if_goto);
1907       gen_expr (exp, pc, ax, &value2);
1908       gen_usual_unary (ax, &value2);
1909       end = ax_goto (ax, aop_goto);
1910       ax_label (ax, if1, ax->len);
1911       gen_expr (exp, pc, ax, &value3);
1912       gen_usual_unary (ax, &value3);
1913       ax_label (ax, end, ax->len);
1914       /* This is arbitary - what if B and C are incompatible types? */
1915       value->type = value2.type;
1916       value->kind = value2.kind;
1917       break;
1918
1919     case BINOP_ASSIGN:
1920       (*pc)++;
1921       if ((*pc)[0].opcode == OP_INTERNALVAR)
1922         {
1923           char *name = internalvar_name ((*pc)[1].internalvar);
1924           struct trace_state_variable *tsv;
1925
1926           (*pc) += 3;
1927           gen_expr (exp, pc, ax, value);
1928           tsv = find_trace_state_variable (name);
1929           if (tsv)
1930             {
1931               ax_tsv (ax, aop_setv, tsv->number);
1932               if (ax->tracing)
1933                 ax_tsv (ax, aop_tracev, tsv->number);
1934             }
1935           else
1936             error (_("$%s is not a trace state variable, "
1937                      "may not assign to it"), name);
1938         }
1939       else
1940         error (_("May only assign to trace state variables"));
1941       break;
1942
1943     case BINOP_ASSIGN_MODIFY:
1944       (*pc)++;
1945       op2 = (*pc)[0].opcode;
1946       (*pc)++;
1947       (*pc)++;
1948       if ((*pc)[0].opcode == OP_INTERNALVAR)
1949         {
1950           char *name = internalvar_name ((*pc)[1].internalvar);
1951           struct trace_state_variable *tsv;
1952
1953           (*pc) += 3;
1954           tsv = find_trace_state_variable (name);
1955           if (tsv)
1956             {
1957               /* The tsv will be the left half of the binary operation.  */
1958               ax_tsv (ax, aop_getv, tsv->number);
1959               if (ax->tracing)
1960                 ax_tsv (ax, aop_tracev, tsv->number);
1961               /* Trace state variables are always 64-bit integers.  */
1962               value1.kind = axs_rvalue;
1963               value1.type = builtin_type (ax->gdbarch)->builtin_long_long;
1964               /* Now do right half of expression.  */
1965               gen_expr_binop_rest (exp, op2, pc, ax, value, &value1, &value2);
1966               /* We have a result of the binary op, set the tsv.  */
1967               ax_tsv (ax, aop_setv, tsv->number);
1968               if (ax->tracing)
1969                 ax_tsv (ax, aop_tracev, tsv->number);
1970             }
1971           else
1972             error (_("$%s is not a trace state variable, "
1973                      "may not assign to it"), name);
1974         }
1975       else
1976         error (_("May only assign to trace state variables"));
1977       break;
1978
1979       /* Note that we need to be a little subtle about generating code
1980          for comma.  In C, we can do some optimizations here because
1981          we know the left operand is only being evaluated for effect.
1982          However, if the tracing kludge is in effect, then we always
1983          need to evaluate the left hand side fully, so that all the
1984          variables it mentions get traced.  */
1985     case BINOP_COMMA:
1986       (*pc)++;
1987       gen_expr (exp, pc, ax, &value1);
1988       /* Don't just dispose of the left operand.  We might be tracing,
1989          in which case we want to emit code to trace it if it's an
1990          lvalue.  */
1991       gen_traced_pop (ax, &value1);
1992       gen_expr (exp, pc, ax, value);
1993       /* It's the consumer's responsibility to trace the right operand.  */
1994       break;
1995
1996     case OP_LONG:               /* some integer constant */
1997       {
1998         struct type *type = (*pc)[1].type;
1999         LONGEST k = (*pc)[2].longconst;
2000
2001         (*pc) += 4;
2002         gen_int_literal (ax, value, k, type);
2003       }
2004       break;
2005
2006     case OP_VAR_VALUE:
2007       gen_var_ref (ax, value, (*pc)[2].symbol);
2008
2009       if (value->optimized_out)
2010         error (_("`%s' has been optimized out, cannot use"),
2011                SYMBOL_PRINT_NAME ((*pc)[2].symbol));
2012
2013       if (TYPE_CODE (value->type) == TYPE_CODE_ERROR)
2014         error_unknown_type (SYMBOL_PRINT_NAME ((*pc)[2].symbol));
2015
2016       (*pc) += 4;
2017       break;
2018
2019     case OP_VAR_MSYM_VALUE:
2020       gen_msym_var_ref (ax, value, (*pc)[2].msymbol, (*pc)[1].objfile);
2021
2022       if (TYPE_CODE (value->type) == TYPE_CODE_ERROR)
2023         error_unknown_type (MSYMBOL_PRINT_NAME ((*pc)[2].msymbol));
2024
2025       (*pc) += 4;
2026       break;
2027
2028     case OP_REGISTER:
2029       {
2030         const char *name = &(*pc)[2].string;
2031         int reg;
2032
2033         (*pc) += 4 + BYTES_TO_EXP_ELEM ((*pc)[1].longconst + 1);
2034         reg = user_reg_map_name_to_regnum (ax->gdbarch, name, strlen (name));
2035         if (reg == -1)
2036           internal_error (__FILE__, __LINE__,
2037                           _("Register $%s not available"), name);
2038         /* No support for tracing user registers yet.  */
2039         if (reg >= gdbarch_num_cooked_regs (ax->gdbarch))
2040           error (_("'%s' is a user-register; "
2041                    "GDB cannot yet trace user-register contents."),
2042                  name);
2043         value->kind = axs_lvalue_register;
2044         value->u.reg = reg;
2045         value->type = register_type (ax->gdbarch, reg);
2046       }
2047       break;
2048
2049     case OP_INTERNALVAR:
2050       {
2051         struct internalvar *var = (*pc)[1].internalvar;
2052         const char *name = internalvar_name (var);
2053         struct trace_state_variable *tsv;
2054
2055         (*pc) += 3;
2056         tsv = find_trace_state_variable (name);
2057         if (tsv)
2058           {
2059             ax_tsv (ax, aop_getv, tsv->number);
2060             if (ax->tracing)
2061               ax_tsv (ax, aop_tracev, tsv->number);
2062             /* Trace state variables are always 64-bit integers.  */
2063             value->kind = axs_rvalue;
2064             value->type = builtin_type (ax->gdbarch)->builtin_long_long;
2065           }
2066         else if (! compile_internalvar_to_ax (var, ax, value))
2067           error (_("$%s is not a trace state variable; GDB agent "
2068                    "expressions cannot use convenience variables."), name);
2069       }
2070       break;
2071
2072       /* Weirdo operator: see comments for gen_repeat for details.  */
2073     case BINOP_REPEAT:
2074       /* Note that gen_repeat handles its own argument evaluation.  */
2075       (*pc)++;
2076       gen_repeat (exp, pc, ax, value);
2077       break;
2078
2079     case UNOP_CAST:
2080       {
2081         struct type *type = (*pc)[1].type;
2082
2083         (*pc) += 3;
2084         gen_expr_for_cast (exp, pc, ax, value, type);
2085       }
2086       break;
2087
2088     case UNOP_CAST_TYPE:
2089       {
2090         int offset;
2091         struct value *val;
2092         struct type *type;
2093
2094         ++*pc;
2095         offset = *pc - exp->elts;
2096         val = evaluate_subexp (NULL, exp, &offset, EVAL_AVOID_SIDE_EFFECTS);
2097         type = value_type (val);
2098         *pc = &exp->elts[offset];
2099         gen_expr_for_cast (exp, pc, ax, value, type);
2100       }
2101       break;
2102
2103     case UNOP_MEMVAL:
2104       {
2105         struct type *type = check_typedef ((*pc)[1].type);
2106
2107         (*pc) += 3;
2108         gen_expr (exp, pc, ax, value);
2109
2110         /* If we have an axs_rvalue or an axs_lvalue_memory, then we
2111            already have the right value on the stack.  For
2112            axs_lvalue_register, we must convert.  */
2113         if (value->kind == axs_lvalue_register)
2114           require_rvalue (ax, value);
2115
2116         value->type = type;
2117         value->kind = axs_lvalue_memory;
2118       }
2119       break;
2120
2121     case UNOP_MEMVAL_TYPE:
2122       {
2123         int offset;
2124         struct value *val;
2125         struct type *type;
2126
2127         ++*pc;
2128         offset = *pc - exp->elts;
2129         val = evaluate_subexp (NULL, exp, &offset, EVAL_AVOID_SIDE_EFFECTS);
2130         type = value_type (val);
2131         *pc = &exp->elts[offset];
2132
2133         gen_expr (exp, pc, ax, value);
2134
2135         /* If we have an axs_rvalue or an axs_lvalue_memory, then we
2136            already have the right value on the stack.  For
2137            axs_lvalue_register, we must convert.  */
2138         if (value->kind == axs_lvalue_register)
2139           require_rvalue (ax, value);
2140
2141         value->type = type;
2142         value->kind = axs_lvalue_memory;
2143       }
2144       break;
2145
2146     case UNOP_PLUS:
2147       (*pc)++;
2148       /* + FOO is equivalent to 0 + FOO, which can be optimized.  */
2149       gen_expr (exp, pc, ax, value);
2150       gen_usual_unary (ax, value);
2151       break;
2152       
2153     case UNOP_NEG:
2154       (*pc)++;
2155       /* -FOO is equivalent to 0 - FOO.  */
2156       gen_int_literal (ax, &value1, 0,
2157                        builtin_type (ax->gdbarch)->builtin_int);
2158       gen_usual_unary (ax, &value1);    /* shouldn't do much */
2159       gen_expr (exp, pc, ax, &value2);
2160       gen_usual_unary (ax, &value2);
2161       gen_usual_arithmetic (ax, &value1, &value2);
2162       gen_binop (ax, value, &value1, &value2, aop_sub, aop_sub, 1, "negation");
2163       break;
2164
2165     case UNOP_LOGICAL_NOT:
2166       (*pc)++;
2167       gen_expr (exp, pc, ax, value);
2168       gen_usual_unary (ax, value);
2169       gen_logical_not (ax, value, int_type);
2170       break;
2171
2172     case UNOP_COMPLEMENT:
2173       (*pc)++;
2174       gen_expr (exp, pc, ax, value);
2175       gen_usual_unary (ax, value);
2176       gen_integral_promotions (ax, value);
2177       gen_complement (ax, value);
2178       break;
2179
2180     case UNOP_IND:
2181       (*pc)++;
2182       gen_expr (exp, pc, ax, value);
2183       gen_usual_unary (ax, value);
2184       if (!pointer_type (value->type))
2185         error (_("Argument of unary `*' is not a pointer."));
2186       gen_deref (value);
2187       break;
2188
2189     case UNOP_ADDR:
2190       (*pc)++;
2191       gen_expr (exp, pc, ax, value);
2192       gen_address_of (value);
2193       break;
2194
2195     case UNOP_SIZEOF:
2196       (*pc)++;
2197       /* Notice that gen_sizeof handles its own operand, unlike most
2198          of the other unary operator functions.  This is because we
2199          have to throw away the code we generate.  */
2200       gen_sizeof (exp, pc, ax, value,
2201                   builtin_type (ax->gdbarch)->builtin_int);
2202       break;
2203
2204     case STRUCTOP_STRUCT:
2205     case STRUCTOP_PTR:
2206       {
2207         int length = (*pc)[1].longconst;
2208         char *name = &(*pc)[2].string;
2209
2210         (*pc) += 4 + BYTES_TO_EXP_ELEM (length + 1);
2211         gen_expr (exp, pc, ax, value);
2212         if (op == STRUCTOP_STRUCT)
2213           gen_struct_ref (ax, value, name, ".", "structure or union");
2214         else if (op == STRUCTOP_PTR)
2215           gen_struct_ref (ax, value, name, "->",
2216                           "pointer to a structure or union");
2217         else
2218           /* If this `if' chain doesn't handle it, then the case list
2219              shouldn't mention it, and we shouldn't be here.  */
2220           internal_error (__FILE__, __LINE__,
2221                           _("gen_expr: unhandled struct case"));
2222       }
2223       break;
2224
2225     case OP_THIS:
2226       {
2227         struct symbol *sym, *func;
2228         const struct block *b;
2229         const struct language_defn *lang;
2230
2231         b = block_for_pc (ax->scope);
2232         func = block_linkage_function (b);
2233         lang = language_def (SYMBOL_LANGUAGE (func));
2234
2235         sym = lookup_language_this (lang, b).symbol;
2236         if (!sym)
2237           error (_("no `%s' found"), lang->la_name_of_this);
2238
2239         gen_var_ref (ax, value, sym);
2240
2241         if (value->optimized_out)
2242           error (_("`%s' has been optimized out, cannot use"),
2243                  SYMBOL_PRINT_NAME (sym));
2244
2245         (*pc) += 2;
2246       }
2247       break;
2248
2249     case OP_SCOPE:
2250       {
2251         struct type *type = (*pc)[1].type;
2252         int length = longest_to_int ((*pc)[2].longconst);
2253         char *name = &(*pc)[3].string;
2254         int found;
2255
2256         found = gen_aggregate_elt_ref (ax, value, type, name);
2257         if (!found)
2258           error (_("There is no field named %s"), name);
2259         (*pc) += 5 + BYTES_TO_EXP_ELEM (length + 1);
2260       }
2261       break;
2262
2263     case OP_TYPE:
2264     case OP_TYPEOF:
2265     case OP_DECLTYPE:
2266       error (_("Attempt to use a type name as an expression."));
2267
2268     default:
2269       error (_("Unsupported operator %s (%d) in expression."),
2270              op_name (exp, op), op);
2271     }
2272 }
2273
2274 /* This handles the middle-to-right-side of code generation for binary
2275    expressions, which is shared between regular binary operations and
2276    assign-modify (+= and friends) expressions.  */
2277
2278 static void
2279 gen_expr_binop_rest (struct expression *exp,
2280                      enum exp_opcode op, union exp_element **pc,
2281                      struct agent_expr *ax, struct axs_value *value,
2282                      struct axs_value *value1, struct axs_value *value2)
2283 {
2284   struct type *int_type = builtin_type (ax->gdbarch)->builtin_int;
2285
2286   gen_expr (exp, pc, ax, value2);
2287   gen_usual_unary (ax, value2);
2288   gen_usual_arithmetic (ax, value1, value2);
2289   switch (op)
2290     {
2291     case BINOP_ADD:
2292       if (TYPE_CODE (value1->type) == TYPE_CODE_INT
2293           && pointer_type (value2->type))
2294         {
2295           /* Swap the values and proceed normally.  */
2296           ax_simple (ax, aop_swap);
2297           gen_ptradd (ax, value, value2, value1);
2298         }
2299       else if (pointer_type (value1->type)
2300                && TYPE_CODE (value2->type) == TYPE_CODE_INT)
2301         gen_ptradd (ax, value, value1, value2);
2302       else
2303         gen_binop (ax, value, value1, value2,
2304                    aop_add, aop_add, 1, "addition");
2305       break;
2306     case BINOP_SUB:
2307       if (pointer_type (value1->type)
2308           && TYPE_CODE (value2->type) == TYPE_CODE_INT)
2309         gen_ptrsub (ax,value, value1, value2);
2310       else if (pointer_type (value1->type)
2311                && pointer_type (value2->type))
2312         /* FIXME --- result type should be ptrdiff_t */
2313         gen_ptrdiff (ax, value, value1, value2,
2314                      builtin_type (ax->gdbarch)->builtin_long);
2315       else
2316         gen_binop (ax, value, value1, value2,
2317                    aop_sub, aop_sub, 1, "subtraction");
2318       break;
2319     case BINOP_MUL:
2320       gen_binop (ax, value, value1, value2,
2321                  aop_mul, aop_mul, 1, "multiplication");
2322       break;
2323     case BINOP_DIV:
2324       gen_binop (ax, value, value1, value2,
2325                  aop_div_signed, aop_div_unsigned, 1, "division");
2326       break;
2327     case BINOP_REM:
2328       gen_binop (ax, value, value1, value2,
2329                  aop_rem_signed, aop_rem_unsigned, 1, "remainder");
2330       break;
2331     case BINOP_LSH:
2332       gen_binop (ax, value, value1, value2,
2333                  aop_lsh, aop_lsh, 1, "left shift");
2334       break;
2335     case BINOP_RSH:
2336       gen_binop (ax, value, value1, value2,
2337                  aop_rsh_signed, aop_rsh_unsigned, 1, "right shift");
2338       break;
2339     case BINOP_SUBSCRIPT:
2340       {
2341         struct type *type;
2342
2343         if (binop_types_user_defined_p (op, value1->type, value2->type))
2344           {
2345             error (_("cannot subscript requested type: "
2346                      "cannot call user defined functions"));
2347           }
2348         else
2349           {
2350             /* If the user attempts to subscript something that is not
2351                an array or pointer type (like a plain int variable for
2352                example), then report this as an error.  */
2353             type = check_typedef (value1->type);
2354             if (TYPE_CODE (type) != TYPE_CODE_ARRAY
2355                 && TYPE_CODE (type) != TYPE_CODE_PTR)
2356               {
2357                 if (TYPE_NAME (type))
2358                   error (_("cannot subscript something of type `%s'"),
2359                          TYPE_NAME (type));
2360                 else
2361                   error (_("cannot subscript requested type"));
2362               }
2363           }
2364
2365         if (!is_integral_type (value2->type))
2366           error (_("Argument to arithmetic operation "
2367                    "not a number or boolean."));
2368
2369         gen_ptradd (ax, value, value1, value2);
2370         gen_deref (value);
2371         break;
2372       }
2373     case BINOP_BITWISE_AND:
2374       gen_binop (ax, value, value1, value2,
2375                  aop_bit_and, aop_bit_and, 0, "bitwise and");
2376       break;
2377
2378     case BINOP_BITWISE_IOR:
2379       gen_binop (ax, value, value1, value2,
2380                  aop_bit_or, aop_bit_or, 0, "bitwise or");
2381       break;
2382       
2383     case BINOP_BITWISE_XOR:
2384       gen_binop (ax, value, value1, value2,
2385                  aop_bit_xor, aop_bit_xor, 0, "bitwise exclusive-or");
2386       break;
2387
2388     case BINOP_EQUAL:
2389       gen_equal (ax, value, value1, value2, int_type);
2390       break;
2391
2392     case BINOP_NOTEQUAL:
2393       gen_equal (ax, value, value1, value2, int_type);
2394       gen_logical_not (ax, value, int_type);
2395       break;
2396
2397     case BINOP_LESS:
2398       gen_less (ax, value, value1, value2, int_type);
2399       break;
2400
2401     case BINOP_GTR:
2402       ax_simple (ax, aop_swap);
2403       gen_less (ax, value, value1, value2, int_type);
2404       break;
2405
2406     case BINOP_LEQ:
2407       ax_simple (ax, aop_swap);
2408       gen_less (ax, value, value1, value2, int_type);
2409       gen_logical_not (ax, value, int_type);
2410       break;
2411
2412     case BINOP_GEQ:
2413       gen_less (ax, value, value1, value2, int_type);
2414       gen_logical_not (ax, value, int_type);
2415       break;
2416
2417     default:
2418       /* We should only list operators in the outer case statement
2419          that we actually handle in the inner case statement.  */
2420       internal_error (__FILE__, __LINE__,
2421                       _("gen_expr: op case sets don't match"));
2422     }
2423 }
2424 \f
2425
2426 /* Given a single variable and a scope, generate bytecodes to trace
2427    its value.  This is for use in situations where we have only a
2428    variable's name, and no parsed expression; for instance, when the
2429    name comes from a list of local variables of a function.  */
2430
2431 agent_expr_up
2432 gen_trace_for_var (CORE_ADDR scope, struct gdbarch *gdbarch,
2433                    struct symbol *var, int trace_string)
2434 {
2435   agent_expr_up ax (new agent_expr (gdbarch, scope));
2436   struct axs_value value;
2437
2438   ax->tracing = 1;
2439   ax->trace_string = trace_string;
2440   gen_var_ref (ax.get (), &value, var);
2441
2442   /* If there is no actual variable to trace, flag it by returning
2443      an empty agent expression.  */
2444   if (value.optimized_out)
2445     return agent_expr_up ();
2446
2447   /* Make sure we record the final object, and get rid of it.  */
2448   gen_traced_pop (ax.get (), &value);
2449
2450   /* Oh, and terminate.  */
2451   ax_simple (ax.get (), aop_end);
2452
2453   return ax;
2454 }
2455
2456 /* Generating bytecode from GDB expressions: driver */
2457
2458 /* Given a GDB expression EXPR, return bytecode to trace its value.
2459    The result will use the `trace' and `trace_quick' bytecodes to
2460    record the value of all memory touched by the expression.  The
2461    caller can then use the ax_reqs function to discover which
2462    registers it relies upon.  */
2463
2464 agent_expr_up
2465 gen_trace_for_expr (CORE_ADDR scope, struct expression *expr,
2466                     int trace_string)
2467 {
2468   agent_expr_up ax (new agent_expr (expr->gdbarch, scope));
2469   union exp_element *pc;
2470   struct axs_value value;
2471
2472   pc = expr->elts;
2473   ax->tracing = 1;
2474   ax->trace_string = trace_string;
2475   value.optimized_out = 0;
2476   gen_expr (expr, &pc, ax.get (), &value);
2477
2478   /* Make sure we record the final object, and get rid of it.  */
2479   gen_traced_pop (ax.get (), &value);
2480
2481   /* Oh, and terminate.  */
2482   ax_simple (ax.get (), aop_end);
2483
2484   return ax;
2485 }
2486
2487 /* Given a GDB expression EXPR, return a bytecode sequence that will
2488    evaluate and return a result.  The bytecodes will do a direct
2489    evaluation, using the current data on the target, rather than
2490    recording blocks of memory and registers for later use, as
2491    gen_trace_for_expr does.  The generated bytecode sequence leaves
2492    the result of expression evaluation on the top of the stack.  */
2493
2494 agent_expr_up
2495 gen_eval_for_expr (CORE_ADDR scope, struct expression *expr)
2496 {
2497   agent_expr_up ax (new agent_expr (expr->gdbarch, scope));
2498   union exp_element *pc;
2499   struct axs_value value;
2500
2501   pc = expr->elts;
2502   ax->tracing = 0;
2503   value.optimized_out = 0;
2504   gen_expr (expr, &pc, ax.get (), &value);
2505
2506   require_rvalue (ax.get (), &value);
2507
2508   /* Oh, and terminate.  */
2509   ax_simple (ax.get (), aop_end);
2510
2511   return ax;
2512 }
2513
2514 agent_expr_up
2515 gen_trace_for_return_address (CORE_ADDR scope, struct gdbarch *gdbarch,
2516                               int trace_string)
2517 {
2518   agent_expr_up ax (new agent_expr (gdbarch, scope));
2519   struct axs_value value;
2520
2521   ax->tracing = 1;
2522   ax->trace_string = trace_string;
2523
2524   gdbarch_gen_return_address (gdbarch, ax.get (), &value, scope);
2525
2526   /* Make sure we record the final object, and get rid of it.  */
2527   gen_traced_pop (ax.get (), &value);
2528
2529   /* Oh, and terminate.  */
2530   ax_simple (ax.get (), aop_end);
2531
2532   return ax;
2533 }
2534
2535 /* Given a collection of printf-style arguments, generate code to
2536    evaluate the arguments and pass everything to a special
2537    bytecode.  */
2538
2539 agent_expr_up
2540 gen_printf (CORE_ADDR scope, struct gdbarch *gdbarch,
2541             CORE_ADDR function, LONGEST channel,
2542             const char *format, int fmtlen,
2543             int nargs, struct expression **exprs)
2544 {
2545   agent_expr_up ax (new agent_expr (gdbarch, scope));
2546   union exp_element *pc;
2547   struct axs_value value;
2548   int tem;
2549
2550   /* We're computing values, not doing side effects.  */
2551   ax->tracing = 0;
2552
2553   /* Evaluate and push the args on the stack in reverse order,
2554      for simplicity of collecting them on the target side.  */
2555   for (tem = nargs - 1; tem >= 0; --tem)
2556     {
2557       pc = exprs[tem]->elts;
2558       value.optimized_out = 0;
2559       gen_expr (exprs[tem], &pc, ax.get (), &value);
2560       require_rvalue (ax.get (), &value);
2561     }
2562
2563   /* Push function and channel.  */
2564   ax_const_l (ax.get (), channel);
2565   ax_const_l (ax.get (), function);
2566
2567   /* Issue the printf bytecode proper.  */
2568   ax_simple (ax.get (), aop_printf);
2569   ax_raw_byte (ax.get (), nargs);
2570   ax_string (ax.get (), format, fmtlen);
2571
2572   /* And terminate.  */
2573   ax_simple (ax.get (), aop_end);
2574
2575   return ax;
2576 }
2577
2578 static void
2579 agent_eval_command_one (const char *exp, int eval, CORE_ADDR pc)
2580 {
2581   const char *arg;
2582   int trace_string = 0;
2583
2584   if (!eval)
2585     {
2586       if (*exp == '/')
2587         exp = decode_agent_options (exp, &trace_string);
2588     }
2589
2590   agent_expr_up agent;
2591
2592   arg = exp;
2593   if (!eval && strcmp (arg, "$_ret") == 0)
2594     {
2595       agent = gen_trace_for_return_address (pc, get_current_arch (),
2596                                             trace_string);
2597     }
2598   else
2599     {
2600       expression_up expr = parse_exp_1 (&arg, pc, block_for_pc (pc), 0);
2601
2602       if (eval)
2603         {
2604           gdb_assert (trace_string == 0);
2605           agent = gen_eval_for_expr (pc, expr.get ());
2606         }
2607       else
2608         agent = gen_trace_for_expr (pc, expr.get (), trace_string);
2609     }
2610
2611   ax_reqs (agent.get ());
2612   ax_print (gdb_stdout, agent.get ());
2613
2614   /* It would be nice to call ax_reqs here to gather some general info
2615      about the expression, and then print out the result.  */
2616
2617   dont_repeat ();
2618 }
2619
2620 static void
2621 agent_command_1 (const char *exp, int eval)
2622 {
2623   /* We don't deal with overlay debugging at the moment.  We need to
2624      think more carefully about this.  If you copy this code into
2625      another command, change the error message; the user shouldn't
2626      have to know anything about agent expressions.  */
2627   if (overlay_debugging)
2628     error (_("GDB can't do agent expression translation with overlays."));
2629
2630   if (exp == 0)
2631     error_no_arg (_("expression to translate"));
2632
2633   if (check_for_argument (&exp, "-at", sizeof ("-at") - 1))
2634     {
2635       struct linespec_result canonical;
2636
2637       exp = skip_spaces (exp);
2638
2639       event_location_up location
2640         = new_linespec_location (&exp, symbol_name_match_type::WILD);
2641       decode_line_full (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
2642                         (struct symtab *) NULL, 0, &canonical,
2643                         NULL, NULL);
2644       exp = skip_spaces (exp);
2645       if (exp[0] == ',')
2646         {
2647           exp++;
2648           exp = skip_spaces (exp);
2649         }
2650       for (const auto &lsal : canonical.lsals)
2651         for (const auto &sal : lsal.sals)
2652           agent_eval_command_one (exp, eval, sal.pc);
2653     }
2654   else
2655     agent_eval_command_one (exp, eval, get_frame_pc (get_current_frame ()));
2656
2657   dont_repeat ();
2658 }
2659
2660 static void
2661 agent_command (const char *exp, int from_tty)
2662 {
2663   agent_command_1 (exp, 0);
2664 }
2665
2666 /* Parse the given expression, compile it into an agent expression
2667    that does direct evaluation, and display the resulting
2668    expression.  */
2669
2670 static void
2671 agent_eval_command (const char *exp, int from_tty)
2672 {
2673   agent_command_1 (exp, 1);
2674 }
2675
2676 /* Parse the given expression, compile it into an agent expression
2677    that does a printf, and display the resulting expression.  */
2678
2679 static void
2680 maint_agent_printf_command (const char *cmdrest, int from_tty)
2681 {
2682   struct frame_info *fi = get_current_frame (); /* need current scope */
2683   const char *format_start, *format_end;
2684
2685   /* We don't deal with overlay debugging at the moment.  We need to
2686      think more carefully about this.  If you copy this code into
2687      another command, change the error message; the user shouldn't
2688      have to know anything about agent expressions.  */
2689   if (overlay_debugging)
2690     error (_("GDB can't do agent expression translation with overlays."));
2691
2692   if (cmdrest == 0)
2693     error_no_arg (_("expression to translate"));
2694
2695   cmdrest = skip_spaces (cmdrest);
2696
2697   if (*cmdrest++ != '"')
2698     error (_("Must start with a format string."));
2699
2700   format_start = cmdrest;
2701
2702   format_pieces fpieces (&cmdrest);
2703
2704   format_end = cmdrest;
2705
2706   if (*cmdrest++ != '"')
2707     error (_("Bad format string, non-terminated '\"'."));
2708   
2709   cmdrest = skip_spaces (cmdrest);
2710
2711   if (*cmdrest != ',' && *cmdrest != 0)
2712     error (_("Invalid argument syntax"));
2713
2714   if (*cmdrest == ',')
2715     cmdrest++;
2716   cmdrest = skip_spaces (cmdrest);
2717
2718   std::vector<struct expression *> argvec;
2719   while (*cmdrest != '\0')
2720     {
2721       const char *cmd1;
2722
2723       cmd1 = cmdrest;
2724       expression_up expr = parse_exp_1 (&cmd1, 0, (struct block *) 0, 1);
2725       argvec.push_back (expr.release ());
2726       cmdrest = cmd1;
2727       if (*cmdrest == ',')
2728         ++cmdrest;
2729       /* else complain? */
2730     }
2731
2732
2733   agent_expr_up agent = gen_printf (get_frame_pc (fi), get_current_arch (),
2734                                     0, 0,
2735                                     format_start, format_end - format_start,
2736                                     argvec.size (), argvec.data ());
2737   ax_reqs (agent.get ());
2738   ax_print (gdb_stdout, agent.get ());
2739
2740   /* It would be nice to call ax_reqs here to gather some general info
2741      about the expression, and then print out the result.  */
2742
2743   dont_repeat ();
2744 }
2745
2746 /* Initialization code.  */
2747
2748 void
2749 _initialize_ax_gdb (void)
2750 {
2751   add_cmd ("agent", class_maintenance, agent_command,
2752            _("\
2753 Translate an expression into remote agent bytecode for tracing.\n\
2754 Usage: maint agent [-at LOCATION,] EXPRESSION\n\
2755 If -at is given, generate remote agent bytecode for this location.\n\
2756 If not, generate remote agent bytecode for current frame pc address."),
2757            &maintenancelist);
2758
2759   add_cmd ("agent-eval", class_maintenance, agent_eval_command,
2760            _("\
2761 Translate an expression into remote agent bytecode for evaluation.\n\
2762 Usage: maint agent-eval [-at LOCATION,] EXPRESSION\n\
2763 If -at is given, generate remote agent bytecode for this location.\n\
2764 If not, generate remote agent bytecode for current frame pc address."),
2765            &maintenancelist);
2766
2767   add_cmd ("agent-printf", class_maintenance, maint_agent_printf_command,
2768            _("Translate an expression into remote "
2769              "agent bytecode for evaluation and display the bytecodes."),
2770            &maintenancelist);
2771 }