2010-03-12 Stan Shebs <stan@codesourcery.com>
[external/binutils.git] / gdb / ax-gdb.c
1 /* GDB-specific functions for operating on agent expressions.
2
3    Copyright (C) 1998, 1999, 2000, 2001, 2003, 2007, 2008, 2009, 2010
4    Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
21 #include "defs.h"
22 #include "symtab.h"
23 #include "symfile.h"
24 #include "gdbtypes.h"
25 #include "language.h"
26 #include "value.h"
27 #include "expression.h"
28 #include "command.h"
29 #include "gdbcmd.h"
30 #include "frame.h"
31 #include "target.h"
32 #include "ax.h"
33 #include "ax-gdb.h"
34 #include "gdb_string.h"
35 #include "block.h"
36 #include "regcache.h"
37 #include "user-regs.h"
38 #include "language.h"
39 #include "dictionary.h"
40 #include "breakpoint.h"
41 #include "tracepoint.h"
42
43 /* To make sense of this file, you should read doc/agentexpr.texi.
44    Then look at the types and enums in ax-gdb.h.  For the code itself,
45    look at gen_expr, towards the bottom; that's the main function that
46    looks at the GDB expressions and calls everything else to generate
47    code.
48
49    I'm beginning to wonder whether it wouldn't be nicer to internally
50    generate trees, with types, and then spit out the bytecode in
51    linear form afterwards; we could generate fewer `swap', `ext', and
52    `zero_ext' bytecodes that way; it would make good constant folding
53    easier, too.  But at the moment, I think we should be willing to
54    pay for the simplicity of this code with less-than-optimal bytecode
55    strings.
56
57    Remember, "GBD" stands for "Great Britain, Dammit!"  So be careful.  */
58 \f
59
60
61 /* Prototypes for local functions. */
62
63 /* There's a standard order to the arguments of these functions:
64    union exp_element ** --- pointer into expression
65    struct agent_expr * --- agent expression buffer to generate code into
66    struct axs_value * --- describes value left on top of stack  */
67
68 static struct value *const_var_ref (struct symbol *var);
69 static struct value *const_expr (union exp_element **pc);
70 static struct value *maybe_const_expr (union exp_element **pc);
71
72 static void gen_traced_pop (struct agent_expr *, struct axs_value *);
73
74 static void gen_sign_extend (struct agent_expr *, struct type *);
75 static void gen_extend (struct agent_expr *, struct type *);
76 static void gen_fetch (struct agent_expr *, struct type *);
77 static void gen_left_shift (struct agent_expr *, int);
78
79
80 static void gen_frame_args_address (struct gdbarch *, struct agent_expr *);
81 static void gen_frame_locals_address (struct gdbarch *, struct agent_expr *);
82 static void gen_offset (struct agent_expr *ax, int offset);
83 static void gen_sym_offset (struct agent_expr *, struct symbol *);
84 static void gen_var_ref (struct gdbarch *, struct agent_expr *ax,
85                          struct axs_value *value, struct symbol *var);
86
87
88 static void gen_int_literal (struct agent_expr *ax,
89                              struct axs_value *value,
90                              LONGEST k, struct type *type);
91
92
93 static void require_rvalue (struct agent_expr *ax, struct axs_value *value);
94 static void gen_usual_unary (struct expression *exp, struct agent_expr *ax,
95                              struct axs_value *value);
96 static int type_wider_than (struct type *type1, struct type *type2);
97 static struct type *max_type (struct type *type1, struct type *type2);
98 static void gen_conversion (struct agent_expr *ax,
99                             struct type *from, struct type *to);
100 static int is_nontrivial_conversion (struct type *from, struct type *to);
101 static void gen_usual_arithmetic (struct expression *exp,
102                                   struct agent_expr *ax,
103                                   struct axs_value *value1,
104                                   struct axs_value *value2);
105 static void gen_integral_promotions (struct expression *exp,
106                                      struct agent_expr *ax,
107                                      struct axs_value *value);
108 static void gen_cast (struct agent_expr *ax,
109                       struct axs_value *value, struct type *type);
110 static void gen_scale (struct agent_expr *ax,
111                        enum agent_op op, struct type *type);
112 static void gen_ptradd (struct agent_expr *ax, struct axs_value *value,
113                         struct axs_value *value1, struct axs_value *value2);
114 static void gen_ptrsub (struct agent_expr *ax, struct axs_value *value,
115                         struct axs_value *value1, struct axs_value *value2);
116 static void gen_ptrdiff (struct agent_expr *ax, struct axs_value *value,
117                          struct axs_value *value1, struct axs_value *value2,
118                          struct type *result_type);
119 static void gen_binop (struct agent_expr *ax,
120                        struct axs_value *value,
121                        struct axs_value *value1,
122                        struct axs_value *value2,
123                        enum agent_op op,
124                        enum agent_op op_unsigned, int may_carry, char *name);
125 static void gen_logical_not (struct agent_expr *ax, struct axs_value *value,
126                              struct type *result_type);
127 static void gen_complement (struct agent_expr *ax, struct axs_value *value);
128 static void gen_deref (struct agent_expr *, struct axs_value *);
129 static void gen_address_of (struct agent_expr *, struct axs_value *);
130 static int find_field (struct type *type, char *name);
131 static void gen_bitfield_ref (struct expression *exp, struct agent_expr *ax,
132                               struct axs_value *value,
133                               struct type *type, int start, int end);
134 static void gen_struct_ref (struct expression *exp, struct agent_expr *ax,
135                             struct axs_value *value,
136                             char *field,
137                             char *operator_name, char *operand_name);
138 static void gen_repeat (struct expression *exp, union exp_element **pc,
139                         struct agent_expr *ax, struct axs_value *value);
140 static void gen_sizeof (struct expression *exp, union exp_element **pc,
141                         struct agent_expr *ax, struct axs_value *value,
142                         struct type *size_type);
143 static void gen_expr (struct expression *exp, union exp_element **pc,
144                       struct agent_expr *ax, struct axs_value *value);
145 static void gen_expr_binop_rest (struct expression *exp,
146                                  enum exp_opcode op, union exp_element **pc,
147                                  struct agent_expr *ax,
148                                  struct axs_value *value,
149                                  struct axs_value *value1,
150                                  struct axs_value *value2);
151
152 static void agent_command (char *exp, int from_tty);
153 \f
154
155 /* Detecting constant expressions.  */
156
157 /* If the variable reference at *PC is a constant, return its value.
158    Otherwise, return zero.
159
160    Hey, Wally!  How can a variable reference be a constant?
161
162    Well, Beav, this function really handles the OP_VAR_VALUE operator,
163    not specifically variable references.  GDB uses OP_VAR_VALUE to
164    refer to any kind of symbolic reference: function names, enum
165    elements, and goto labels are all handled through the OP_VAR_VALUE
166    operator, even though they're constants.  It makes sense given the
167    situation.
168
169    Gee, Wally, don'cha wonder sometimes if data representations that
170    subvert commonly accepted definitions of terms in favor of heavily
171    context-specific interpretations are really just a tool of the
172    programming hegemony to preserve their power and exclude the
173    proletariat?  */
174
175 static struct value *
176 const_var_ref (struct symbol *var)
177 {
178   struct type *type = SYMBOL_TYPE (var);
179
180   switch (SYMBOL_CLASS (var))
181     {
182     case LOC_CONST:
183       return value_from_longest (type, (LONGEST) SYMBOL_VALUE (var));
184
185     case LOC_LABEL:
186       return value_from_pointer (type, (CORE_ADDR) SYMBOL_VALUE_ADDRESS (var));
187
188     default:
189       return 0;
190     }
191 }
192
193
194 /* If the expression starting at *PC has a constant value, return it.
195    Otherwise, return zero.  If we return a value, then *PC will be
196    advanced to the end of it.  If we return zero, *PC could be
197    anywhere.  */
198 static struct value *
199 const_expr (union exp_element **pc)
200 {
201   enum exp_opcode op = (*pc)->opcode;
202   struct value *v1;
203
204   switch (op)
205     {
206     case OP_LONG:
207       {
208         struct type *type = (*pc)[1].type;
209         LONGEST k = (*pc)[2].longconst;
210         (*pc) += 4;
211         return value_from_longest (type, k);
212       }
213
214     case OP_VAR_VALUE:
215       {
216         struct value *v = const_var_ref ((*pc)[2].symbol);
217         (*pc) += 4;
218         return v;
219       }
220
221       /* We could add more operators in here.  */
222
223     case UNOP_NEG:
224       (*pc)++;
225       v1 = const_expr (pc);
226       if (v1)
227         return value_neg (v1);
228       else
229         return 0;
230
231     default:
232       return 0;
233     }
234 }
235
236
237 /* Like const_expr, but guarantee also that *PC is undisturbed if the
238    expression is not constant.  */
239 static struct value *
240 maybe_const_expr (union exp_element **pc)
241 {
242   union exp_element *tentative_pc = *pc;
243   struct value *v = const_expr (&tentative_pc);
244
245   /* If we got a value, then update the real PC.  */
246   if (v)
247     *pc = tentative_pc;
248
249   return v;
250 }
251 \f
252
253 /* Generating bytecode from GDB expressions: general assumptions */
254
255 /* Here are a few general assumptions made throughout the code; if you
256    want to make a change that contradicts one of these, then you'd
257    better scan things pretty thoroughly.
258
259    - We assume that all values occupy one stack element.  For example,
260    sometimes we'll swap to get at the left argument to a binary
261    operator.  If we decide that void values should occupy no stack
262    elements, or that synthetic arrays (whose size is determined at
263    run time, created by the `@' operator) should occupy two stack
264    elements (address and length), then this will cause trouble.
265
266    - We assume the stack elements are infinitely wide, and that we
267    don't have to worry what happens if the user requests an
268    operation that is wider than the actual interpreter's stack.
269    That is, it's up to the interpreter to handle directly all the
270    integer widths the user has access to.  (Woe betide the language
271    with bignums!)
272
273    - We don't support side effects.  Thus, we don't have to worry about
274    GCC's generalized lvalues, function calls, etc.
275
276    - We don't support floating point.  Many places where we switch on
277    some type don't bother to include cases for floating point; there
278    may be even more subtle ways this assumption exists.  For
279    example, the arguments to % must be integers.
280
281    - We assume all subexpressions have a static, unchanging type.  If
282    we tried to support convenience variables, this would be a
283    problem.
284
285    - All values on the stack should always be fully zero- or
286    sign-extended.
287
288    (I wasn't sure whether to choose this or its opposite --- that
289    only addresses are assumed extended --- but it turns out that
290    neither convention completely eliminates spurious extend
291    operations (if everything is always extended, then you have to
292    extend after add, because it could overflow; if nothing is
293    extended, then you end up producing extends whenever you change
294    sizes), and this is simpler.)  */
295 \f
296
297 /* Generating bytecode from GDB expressions: the `trace' kludge  */
298
299 /* The compiler in this file is a general-purpose mechanism for
300    translating GDB expressions into bytecode.  One ought to be able to
301    find a million and one uses for it.
302
303    However, at the moment it is HOPELESSLY BRAIN-DAMAGED for the sake
304    of expediency.  Let he who is without sin cast the first stone.
305
306    For the data tracing facility, we need to insert `trace' bytecodes
307    before each data fetch; this records all the memory that the
308    expression touches in the course of evaluation, so that memory will
309    be available when the user later tries to evaluate the expression
310    in GDB.
311
312    This should be done (I think) in a post-processing pass, that walks
313    an arbitrary agent expression and inserts `trace' operations at the
314    appropriate points.  But it's much faster to just hack them
315    directly into the code.  And since we're in a crunch, that's what
316    I've done.
317
318    Setting the flag trace_kludge to non-zero enables the code that
319    emits the trace bytecodes at the appropriate points.  */
320 static int trace_kludge;
321
322 /* Trace the lvalue on the stack, if it needs it.  In either case, pop
323    the value.  Useful on the left side of a comma, and at the end of
324    an expression being used for tracing.  */
325 static void
326 gen_traced_pop (struct agent_expr *ax, struct axs_value *value)
327 {
328   if (trace_kludge)
329     switch (value->kind)
330       {
331       case axs_rvalue:
332         /* We don't trace rvalues, just the lvalues necessary to
333            produce them.  So just dispose of this value.  */
334         ax_simple (ax, aop_pop);
335         break;
336
337       case axs_lvalue_memory:
338         {
339           int length = TYPE_LENGTH (check_typedef (value->type));
340
341           /* There's no point in trying to use a trace_quick bytecode
342              here, since "trace_quick SIZE pop" is three bytes, whereas
343              "const8 SIZE trace" is also three bytes, does the same
344              thing, and the simplest code which generates that will also
345              work correctly for objects with large sizes.  */
346           ax_const_l (ax, length);
347           ax_simple (ax, aop_trace);
348         }
349         break;
350
351       case axs_lvalue_register:
352         /* We need to mention the register somewhere in the bytecode,
353            so ax_reqs will pick it up and add it to the mask of
354            registers used.  */
355         ax_reg (ax, value->u.reg);
356         ax_simple (ax, aop_pop);
357         break;
358       }
359   else
360     /* If we're not tracing, just pop the value.  */
361     ax_simple (ax, aop_pop);
362 }
363 \f
364
365
366 /* Generating bytecode from GDB expressions: helper functions */
367
368 /* Assume that the lower bits of the top of the stack is a value of
369    type TYPE, and the upper bits are zero.  Sign-extend if necessary.  */
370 static void
371 gen_sign_extend (struct agent_expr *ax, struct type *type)
372 {
373   /* Do we need to sign-extend this?  */
374   if (!TYPE_UNSIGNED (type))
375     ax_ext (ax, TYPE_LENGTH (type) * TARGET_CHAR_BIT);
376 }
377
378
379 /* Assume the lower bits of the top of the stack hold a value of type
380    TYPE, and the upper bits are garbage.  Sign-extend or truncate as
381    needed.  */
382 static void
383 gen_extend (struct agent_expr *ax, struct type *type)
384 {
385   int bits = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
386   /* I just had to.  */
387   ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, bits));
388 }
389
390
391 /* Assume that the top of the stack contains a value of type "pointer
392    to TYPE"; generate code to fetch its value.  Note that TYPE is the
393    target type, not the pointer type.  */
394 static void
395 gen_fetch (struct agent_expr *ax, struct type *type)
396 {
397   if (trace_kludge)
398     {
399       /* Record the area of memory we're about to fetch.  */
400       ax_trace_quick (ax, TYPE_LENGTH (type));
401     }
402
403   switch (TYPE_CODE (type))
404     {
405     case TYPE_CODE_PTR:
406     case TYPE_CODE_REF:
407     case TYPE_CODE_ENUM:
408     case TYPE_CODE_INT:
409     case TYPE_CODE_CHAR:
410       /* It's a scalar value, so we know how to dereference it.  How
411          many bytes long is it?  */
412       switch (TYPE_LENGTH (type))
413         {
414         case 8 / TARGET_CHAR_BIT:
415           ax_simple (ax, aop_ref8);
416           break;
417         case 16 / TARGET_CHAR_BIT:
418           ax_simple (ax, aop_ref16);
419           break;
420         case 32 / TARGET_CHAR_BIT:
421           ax_simple (ax, aop_ref32);
422           break;
423         case 64 / TARGET_CHAR_BIT:
424           ax_simple (ax, aop_ref64);
425           break;
426
427           /* Either our caller shouldn't have asked us to dereference
428              that pointer (other code's fault), or we're not
429              implementing something we should be (this code's fault).
430              In any case, it's a bug the user shouldn't see.  */
431         default:
432           internal_error (__FILE__, __LINE__,
433                           _("gen_fetch: strange size"));
434         }
435
436       gen_sign_extend (ax, type);
437       break;
438
439     default:
440       /* Either our caller shouldn't have asked us to dereference that
441          pointer (other code's fault), or we're not implementing
442          something we should be (this code's fault).  In any case,
443          it's a bug the user shouldn't see.  */
444       internal_error (__FILE__, __LINE__,
445                       _("gen_fetch: bad type code"));
446     }
447 }
448
449
450 /* Generate code to left shift the top of the stack by DISTANCE bits, or
451    right shift it by -DISTANCE bits if DISTANCE < 0.  This generates
452    unsigned (logical) right shifts.  */
453 static void
454 gen_left_shift (struct agent_expr *ax, int distance)
455 {
456   if (distance > 0)
457     {
458       ax_const_l (ax, distance);
459       ax_simple (ax, aop_lsh);
460     }
461   else if (distance < 0)
462     {
463       ax_const_l (ax, -distance);
464       ax_simple (ax, aop_rsh_unsigned);
465     }
466 }
467 \f
468
469
470 /* Generating bytecode from GDB expressions: symbol references */
471
472 /* Generate code to push the base address of the argument portion of
473    the top stack frame.  */
474 static void
475 gen_frame_args_address (struct gdbarch *gdbarch, struct agent_expr *ax)
476 {
477   int frame_reg;
478   LONGEST frame_offset;
479
480   gdbarch_virtual_frame_pointer (gdbarch,
481                                  ax->scope, &frame_reg, &frame_offset);
482   ax_reg (ax, frame_reg);
483   gen_offset (ax, frame_offset);
484 }
485
486
487 /* Generate code to push the base address of the locals portion of the
488    top stack frame.  */
489 static void
490 gen_frame_locals_address (struct gdbarch *gdbarch, struct agent_expr *ax)
491 {
492   int frame_reg;
493   LONGEST frame_offset;
494
495   gdbarch_virtual_frame_pointer (gdbarch,
496                                  ax->scope, &frame_reg, &frame_offset);
497   ax_reg (ax, frame_reg);
498   gen_offset (ax, frame_offset);
499 }
500
501
502 /* Generate code to add OFFSET to the top of the stack.  Try to
503    generate short and readable code.  We use this for getting to
504    variables on the stack, and structure members.  If we were
505    programming in ML, it would be clearer why these are the same
506    thing.  */
507 static void
508 gen_offset (struct agent_expr *ax, int offset)
509 {
510   /* It would suffice to simply push the offset and add it, but this
511      makes it easier to read positive and negative offsets in the
512      bytecode.  */
513   if (offset > 0)
514     {
515       ax_const_l (ax, offset);
516       ax_simple (ax, aop_add);
517     }
518   else if (offset < 0)
519     {
520       ax_const_l (ax, -offset);
521       ax_simple (ax, aop_sub);
522     }
523 }
524
525
526 /* In many cases, a symbol's value is the offset from some other
527    address (stack frame, base register, etc.)  Generate code to add
528    VAR's value to the top of the stack.  */
529 static void
530 gen_sym_offset (struct agent_expr *ax, struct symbol *var)
531 {
532   gen_offset (ax, SYMBOL_VALUE (var));
533 }
534
535
536 /* Generate code for a variable reference to AX.  The variable is the
537    symbol VAR.  Set VALUE to describe the result.  */
538
539 static void
540 gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
541              struct axs_value *value, struct symbol *var)
542 {
543   /* Dereference any typedefs. */
544   value->type = check_typedef (SYMBOL_TYPE (var));
545
546   /* I'm imitating the code in read_var_value.  */
547   switch (SYMBOL_CLASS (var))
548     {
549     case LOC_CONST:             /* A constant, like an enum value.  */
550       ax_const_l (ax, (LONGEST) SYMBOL_VALUE (var));
551       value->kind = axs_rvalue;
552       break;
553
554     case LOC_LABEL:             /* A goto label, being used as a value.  */
555       ax_const_l (ax, (LONGEST) SYMBOL_VALUE_ADDRESS (var));
556       value->kind = axs_rvalue;
557       break;
558
559     case LOC_CONST_BYTES:
560       internal_error (__FILE__, __LINE__,
561                       _("gen_var_ref: LOC_CONST_BYTES symbols are not supported"));
562
563       /* Variable at a fixed location in memory.  Easy.  */
564     case LOC_STATIC:
565       /* Push the address of the variable.  */
566       ax_const_l (ax, SYMBOL_VALUE_ADDRESS (var));
567       value->kind = axs_lvalue_memory;
568       break;
569
570     case LOC_ARG:               /* var lives in argument area of frame */
571       gen_frame_args_address (gdbarch, ax);
572       gen_sym_offset (ax, var);
573       value->kind = axs_lvalue_memory;
574       break;
575
576     case LOC_REF_ARG:           /* As above, but the frame slot really
577                                    holds the address of the variable.  */
578       gen_frame_args_address (gdbarch, ax);
579       gen_sym_offset (ax, var);
580       /* Don't assume any particular pointer size.  */
581       gen_fetch (ax, builtin_type (gdbarch)->builtin_data_ptr);
582       value->kind = axs_lvalue_memory;
583       break;
584
585     case LOC_LOCAL:             /* var lives in locals area of frame */
586       gen_frame_locals_address (gdbarch, ax);
587       gen_sym_offset (ax, var);
588       value->kind = axs_lvalue_memory;
589       break;
590
591     case LOC_TYPEDEF:
592       error (_("Cannot compute value of typedef `%s'."),
593              SYMBOL_PRINT_NAME (var));
594       break;
595
596     case LOC_BLOCK:
597       ax_const_l (ax, BLOCK_START (SYMBOL_BLOCK_VALUE (var)));
598       value->kind = axs_rvalue;
599       break;
600
601     case LOC_REGISTER:
602       /* Don't generate any code at all; in the process of treating
603          this as an lvalue or rvalue, the caller will generate the
604          right code.  */
605       value->kind = axs_lvalue_register;
606       value->u.reg = SYMBOL_REGISTER_OPS (var)->register_number (var, gdbarch);
607       break;
608
609       /* A lot like LOC_REF_ARG, but the pointer lives directly in a
610          register, not on the stack.  Simpler than LOC_REGISTER
611          because it's just like any other case where the thing
612          has a real address.  */
613     case LOC_REGPARM_ADDR:
614       ax_reg (ax, SYMBOL_REGISTER_OPS (var)->register_number (var, gdbarch));
615       value->kind = axs_lvalue_memory;
616       break;
617
618     case LOC_UNRESOLVED:
619       {
620         struct minimal_symbol *msym
621           = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL);
622         if (!msym)
623           error (_("Couldn't resolve symbol `%s'."), SYMBOL_PRINT_NAME (var));
624
625         /* Push the address of the variable.  */
626         ax_const_l (ax, SYMBOL_VALUE_ADDRESS (msym));
627         value->kind = axs_lvalue_memory;
628       }
629       break;
630
631     case LOC_COMPUTED:
632       /* FIXME: cagney/2004-01-26: It should be possible to
633          unconditionally call the SYMBOL_COMPUTED_OPS method when available.
634          Unfortunately DWARF 2 stores the frame-base (instead of the
635          function) location in a function's symbol.  Oops!  For the
636          moment enable this when/where applicable.  */
637       SYMBOL_COMPUTED_OPS (var)->tracepoint_var_ref (var, gdbarch, ax, value);
638       break;
639
640     case LOC_OPTIMIZED_OUT:
641       error (_("The variable `%s' has been optimized out."),
642              SYMBOL_PRINT_NAME (var));
643       break;
644
645     default:
646       error (_("Cannot find value of botched symbol `%s'."),
647              SYMBOL_PRINT_NAME (var));
648       break;
649     }
650 }
651 \f
652
653
654 /* Generating bytecode from GDB expressions: literals */
655
656 static void
657 gen_int_literal (struct agent_expr *ax, struct axs_value *value, LONGEST k,
658                  struct type *type)
659 {
660   ax_const_l (ax, k);
661   value->kind = axs_rvalue;
662   value->type = check_typedef (type);
663 }
664 \f
665
666
667 /* Generating bytecode from GDB expressions: unary conversions, casts */
668
669 /* Take what's on the top of the stack (as described by VALUE), and
670    try to make an rvalue out of it.  Signal an error if we can't do
671    that.  */
672 static void
673 require_rvalue (struct agent_expr *ax, struct axs_value *value)
674 {
675   switch (value->kind)
676     {
677     case axs_rvalue:
678       /* It's already an rvalue.  */
679       break;
680
681     case axs_lvalue_memory:
682       /* The top of stack is the address of the object.  Dereference.  */
683       gen_fetch (ax, value->type);
684       break;
685
686     case axs_lvalue_register:
687       /* There's nothing on the stack, but value->u.reg is the
688          register number containing the value.
689
690          When we add floating-point support, this is going to have to
691          change.  What about SPARC register pairs, for example?  */
692       ax_reg (ax, value->u.reg);
693       gen_extend (ax, value->type);
694       break;
695     }
696
697   value->kind = axs_rvalue;
698 }
699
700
701 /* Assume the top of the stack is described by VALUE, and perform the
702    usual unary conversions.  This is motivated by ANSI 6.2.2, but of
703    course GDB expressions are not ANSI; they're the mishmash union of
704    a bunch of languages.  Rah.
705
706    NOTE!  This function promises to produce an rvalue only when the
707    incoming value is of an appropriate type.  In other words, the
708    consumer of the value this function produces may assume the value
709    is an rvalue only after checking its type.
710
711    The immediate issue is that if the user tries to use a structure or
712    union as an operand of, say, the `+' operator, we don't want to try
713    to convert that structure to an rvalue; require_rvalue will bomb on
714    structs and unions.  Rather, we want to simply pass the struct
715    lvalue through unchanged, and let `+' raise an error.  */
716
717 static void
718 gen_usual_unary (struct expression *exp, struct agent_expr *ax,
719                  struct axs_value *value)
720 {
721   /* We don't have to generate any code for the usual integral
722      conversions, since values are always represented as full-width on
723      the stack.  Should we tweak the type?  */
724
725   /* Some types require special handling.  */
726   switch (TYPE_CODE (value->type))
727     {
728       /* Functions get converted to a pointer to the function.  */
729     case TYPE_CODE_FUNC:
730       value->type = lookup_pointer_type (value->type);
731       value->kind = axs_rvalue; /* Should always be true, but just in case.  */
732       break;
733
734       /* Arrays get converted to a pointer to their first element, and
735          are no longer an lvalue.  */
736     case TYPE_CODE_ARRAY:
737       {
738         struct type *elements = TYPE_TARGET_TYPE (value->type);
739         value->type = lookup_pointer_type (elements);
740         value->kind = axs_rvalue;
741         /* We don't need to generate any code; the address of the array
742            is also the address of its first element.  */
743       }
744       break;
745
746       /* Don't try to convert structures and unions to rvalues.  Let the
747          consumer signal an error.  */
748     case TYPE_CODE_STRUCT:
749     case TYPE_CODE_UNION:
750       return;
751
752       /* If the value is an enum, call it an integer.  */
753     case TYPE_CODE_ENUM:
754       value->type = builtin_type (exp->gdbarch)->builtin_int;
755       break;
756     }
757
758   /* If the value is an lvalue, dereference it.  */
759   require_rvalue (ax, value);
760 }
761
762
763 /* Return non-zero iff the type TYPE1 is considered "wider" than the
764    type TYPE2, according to the rules described in gen_usual_arithmetic.  */
765 static int
766 type_wider_than (struct type *type1, struct type *type2)
767 {
768   return (TYPE_LENGTH (type1) > TYPE_LENGTH (type2)
769           || (TYPE_LENGTH (type1) == TYPE_LENGTH (type2)
770               && TYPE_UNSIGNED (type1)
771               && !TYPE_UNSIGNED (type2)));
772 }
773
774
775 /* Return the "wider" of the two types TYPE1 and TYPE2.  */
776 static struct type *
777 max_type (struct type *type1, struct type *type2)
778 {
779   return type_wider_than (type1, type2) ? type1 : type2;
780 }
781
782
783 /* Generate code to convert a scalar value of type FROM to type TO.  */
784 static void
785 gen_conversion (struct agent_expr *ax, struct type *from, struct type *to)
786 {
787   /* Perhaps there is a more graceful way to state these rules.  */
788
789   /* If we're converting to a narrower type, then we need to clear out
790      the upper bits.  */
791   if (TYPE_LENGTH (to) < TYPE_LENGTH (from))
792     gen_extend (ax, from);
793
794   /* If the two values have equal width, but different signednesses,
795      then we need to extend.  */
796   else if (TYPE_LENGTH (to) == TYPE_LENGTH (from))
797     {
798       if (TYPE_UNSIGNED (from) != TYPE_UNSIGNED (to))
799         gen_extend (ax, to);
800     }
801
802   /* If we're converting to a wider type, and becoming unsigned, then
803      we need to zero out any possible sign bits.  */
804   else if (TYPE_LENGTH (to) > TYPE_LENGTH (from))
805     {
806       if (TYPE_UNSIGNED (to))
807         gen_extend (ax, to);
808     }
809 }
810
811
812 /* Return non-zero iff the type FROM will require any bytecodes to be
813    emitted to be converted to the type TO.  */
814 static int
815 is_nontrivial_conversion (struct type *from, struct type *to)
816 {
817   struct agent_expr *ax = new_agent_expr (0);
818   int nontrivial;
819
820   /* Actually generate the code, and see if anything came out.  At the
821      moment, it would be trivial to replicate the code in
822      gen_conversion here, but in the future, when we're supporting
823      floating point and the like, it may not be.  Doing things this
824      way allows this function to be independent of the logic in
825      gen_conversion.  */
826   gen_conversion (ax, from, to);
827   nontrivial = ax->len > 0;
828   free_agent_expr (ax);
829   return nontrivial;
830 }
831
832
833 /* Generate code to perform the "usual arithmetic conversions" (ANSI C
834    6.2.1.5) for the two operands of an arithmetic operator.  This
835    effectively finds a "least upper bound" type for the two arguments,
836    and promotes each argument to that type.  *VALUE1 and *VALUE2
837    describe the values as they are passed in, and as they are left.  */
838 static void
839 gen_usual_arithmetic (struct expression *exp, struct agent_expr *ax,
840                       struct axs_value *value1, struct axs_value *value2)
841 {
842   /* Do the usual binary conversions.  */
843   if (TYPE_CODE (value1->type) == TYPE_CODE_INT
844       && TYPE_CODE (value2->type) == TYPE_CODE_INT)
845     {
846       /* The ANSI integral promotions seem to work this way: Order the
847          integer types by size, and then by signedness: an n-bit
848          unsigned type is considered "wider" than an n-bit signed
849          type.  Promote to the "wider" of the two types, and always
850          promote at least to int.  */
851       struct type *target = max_type (builtin_type (exp->gdbarch)->builtin_int,
852                                       max_type (value1->type, value2->type));
853
854       /* Deal with value2, on the top of the stack.  */
855       gen_conversion (ax, value2->type, target);
856
857       /* Deal with value1, not on the top of the stack.  Don't
858          generate the `swap' instructions if we're not actually going
859          to do anything.  */
860       if (is_nontrivial_conversion (value1->type, target))
861         {
862           ax_simple (ax, aop_swap);
863           gen_conversion (ax, value1->type, target);
864           ax_simple (ax, aop_swap);
865         }
866
867       value1->type = value2->type = check_typedef (target);
868     }
869 }
870
871
872 /* Generate code to perform the integral promotions (ANSI 6.2.1.1) on
873    the value on the top of the stack, as described by VALUE.  Assume
874    the value has integral type.  */
875 static void
876 gen_integral_promotions (struct expression *exp, struct agent_expr *ax,
877                          struct axs_value *value)
878 {
879   const struct builtin_type *builtin = builtin_type (exp->gdbarch);
880
881   if (!type_wider_than (value->type, builtin->builtin_int))
882     {
883       gen_conversion (ax, value->type, builtin->builtin_int);
884       value->type = builtin->builtin_int;
885     }
886   else if (!type_wider_than (value->type, builtin->builtin_unsigned_int))
887     {
888       gen_conversion (ax, value->type, builtin->builtin_unsigned_int);
889       value->type = builtin->builtin_unsigned_int;
890     }
891 }
892
893
894 /* Generate code for a cast to TYPE.  */
895 static void
896 gen_cast (struct agent_expr *ax, struct axs_value *value, struct type *type)
897 {
898   /* GCC does allow casts to yield lvalues, so this should be fixed
899      before merging these changes into the trunk.  */
900   require_rvalue (ax, value);
901   /* Dereference typedefs. */
902   type = check_typedef (type);
903
904   switch (TYPE_CODE (type))
905     {
906     case TYPE_CODE_PTR:
907     case TYPE_CODE_REF:
908       /* It's implementation-defined, and I'll bet this is what GCC
909          does.  */
910       break;
911
912     case TYPE_CODE_ARRAY:
913     case TYPE_CODE_STRUCT:
914     case TYPE_CODE_UNION:
915     case TYPE_CODE_FUNC:
916       error (_("Invalid type cast: intended type must be scalar."));
917
918     case TYPE_CODE_ENUM:
919       /* We don't have to worry about the size of the value, because
920          all our integral values are fully sign-extended, and when
921          casting pointers we can do anything we like.  Is there any
922          way for us to know what GCC actually does with a cast like
923          this?  */
924       break;
925
926     case TYPE_CODE_INT:
927       gen_conversion (ax, value->type, type);
928       break;
929
930     case TYPE_CODE_VOID:
931       /* We could pop the value, and rely on everyone else to check
932          the type and notice that this value doesn't occupy a stack
933          slot.  But for now, leave the value on the stack, and
934          preserve the "value == stack element" assumption.  */
935       break;
936
937     default:
938       error (_("Casts to requested type are not yet implemented."));
939     }
940
941   value->type = type;
942 }
943 \f
944
945
946 /* Generating bytecode from GDB expressions: arithmetic */
947
948 /* Scale the integer on the top of the stack by the size of the target
949    of the pointer type TYPE.  */
950 static void
951 gen_scale (struct agent_expr *ax, enum agent_op op, struct type *type)
952 {
953   struct type *element = TYPE_TARGET_TYPE (type);
954
955   if (TYPE_LENGTH (element) != 1)
956     {
957       ax_const_l (ax, TYPE_LENGTH (element));
958       ax_simple (ax, op);
959     }
960 }
961
962
963 /* Generate code for pointer arithmetic PTR + INT.  */
964 static void
965 gen_ptradd (struct agent_expr *ax, struct axs_value *value,
966             struct axs_value *value1, struct axs_value *value2)
967 {
968   gdb_assert (pointer_type (value1->type));
969   gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
970
971   gen_scale (ax, aop_mul, value1->type);
972   ax_simple (ax, aop_add);
973   gen_extend (ax, value1->type);        /* Catch overflow.  */
974   value->type = value1->type;
975   value->kind = axs_rvalue;
976 }
977
978
979 /* Generate code for pointer arithmetic PTR - INT.  */
980 static void
981 gen_ptrsub (struct agent_expr *ax, struct axs_value *value,
982             struct axs_value *value1, struct axs_value *value2)
983 {
984   gdb_assert (pointer_type (value1->type));
985   gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
986
987   gen_scale (ax, aop_mul, value1->type);
988   ax_simple (ax, aop_sub);
989   gen_extend (ax, value1->type);        /* Catch overflow.  */
990   value->type = value1->type;
991   value->kind = axs_rvalue;
992 }
993
994
995 /* Generate code for pointer arithmetic PTR - PTR.  */
996 static void
997 gen_ptrdiff (struct agent_expr *ax, struct axs_value *value,
998              struct axs_value *value1, struct axs_value *value2,
999              struct type *result_type)
1000 {
1001   gdb_assert (pointer_type (value1->type));
1002   gdb_assert (pointer_type (value2->type));
1003
1004   if (TYPE_LENGTH (TYPE_TARGET_TYPE (value1->type))
1005       != TYPE_LENGTH (TYPE_TARGET_TYPE (value2->type)))
1006     error (_("\
1007 First argument of `-' is a pointer, but second argument is neither\n\
1008 an integer nor a pointer of the same type."));
1009
1010   ax_simple (ax, aop_sub);
1011   gen_scale (ax, aop_div_unsigned, value1->type);
1012   value->type = result_type;
1013   value->kind = axs_rvalue;
1014 }
1015
1016
1017 /* Generate code for a binary operator that doesn't do pointer magic.
1018    We set VALUE to describe the result value; we assume VALUE1 and
1019    VALUE2 describe the two operands, and that they've undergone the
1020    usual binary conversions.  MAY_CARRY should be non-zero iff the
1021    result needs to be extended.  NAME is the English name of the
1022    operator, used in error messages */
1023 static void
1024 gen_binop (struct agent_expr *ax, struct axs_value *value,
1025            struct axs_value *value1, struct axs_value *value2, enum agent_op op,
1026            enum agent_op op_unsigned, int may_carry, char *name)
1027 {
1028   /* We only handle INT op INT.  */
1029   if ((TYPE_CODE (value1->type) != TYPE_CODE_INT)
1030       || (TYPE_CODE (value2->type) != TYPE_CODE_INT))
1031     error (_("Invalid combination of types in %s."), name);
1032
1033   ax_simple (ax,
1034              TYPE_UNSIGNED (value1->type) ? op_unsigned : op);
1035   if (may_carry)
1036     gen_extend (ax, value1->type);      /* catch overflow */
1037   value->type = value1->type;
1038   value->kind = axs_rvalue;
1039 }
1040
1041
1042 static void
1043 gen_logical_not (struct agent_expr *ax, struct axs_value *value,
1044                  struct type *result_type)
1045 {
1046   if (TYPE_CODE (value->type) != TYPE_CODE_INT
1047       && TYPE_CODE (value->type) != TYPE_CODE_PTR)
1048     error (_("Invalid type of operand to `!'."));
1049
1050   ax_simple (ax, aop_log_not);
1051   value->type = result_type;
1052 }
1053
1054
1055 static void
1056 gen_complement (struct agent_expr *ax, struct axs_value *value)
1057 {
1058   if (TYPE_CODE (value->type) != TYPE_CODE_INT)
1059     error (_("Invalid type of operand to `~'."));
1060
1061   ax_simple (ax, aop_bit_not);
1062   gen_extend (ax, value->type);
1063 }
1064 \f
1065
1066
1067 /* Generating bytecode from GDB expressions: * & . -> @ sizeof */
1068
1069 /* Dereference the value on the top of the stack.  */
1070 static void
1071 gen_deref (struct agent_expr *ax, struct axs_value *value)
1072 {
1073   /* The caller should check the type, because several operators use
1074      this, and we don't know what error message to generate.  */
1075   if (!pointer_type (value->type))
1076     internal_error (__FILE__, __LINE__,
1077                     _("gen_deref: expected a pointer"));
1078
1079   /* We've got an rvalue now, which is a pointer.  We want to yield an
1080      lvalue, whose address is exactly that pointer.  So we don't
1081      actually emit any code; we just change the type from "Pointer to
1082      T" to "T", and mark the value as an lvalue in memory.  Leave it
1083      to the consumer to actually dereference it.  */
1084   value->type = check_typedef (TYPE_TARGET_TYPE (value->type));
1085   if (TYPE_CODE (value->type) == TYPE_CODE_VOID)
1086     error (_("Attempt to dereference a generic pointer."));
1087   value->kind = ((TYPE_CODE (value->type) == TYPE_CODE_FUNC)
1088                  ? axs_rvalue : axs_lvalue_memory);
1089 }
1090
1091
1092 /* Produce the address of the lvalue on the top of the stack.  */
1093 static void
1094 gen_address_of (struct agent_expr *ax, struct axs_value *value)
1095 {
1096   /* Special case for taking the address of a function.  The ANSI
1097      standard describes this as a special case, too, so this
1098      arrangement is not without motivation.  */
1099   if (TYPE_CODE (value->type) == TYPE_CODE_FUNC)
1100     /* The value's already an rvalue on the stack, so we just need to
1101        change the type.  */
1102     value->type = lookup_pointer_type (value->type);
1103   else
1104     switch (value->kind)
1105       {
1106       case axs_rvalue:
1107         error (_("Operand of `&' is an rvalue, which has no address."));
1108
1109       case axs_lvalue_register:
1110         error (_("Operand of `&' is in a register, and has no address."));
1111
1112       case axs_lvalue_memory:
1113         value->kind = axs_rvalue;
1114         value->type = lookup_pointer_type (value->type);
1115         break;
1116       }
1117 }
1118
1119
1120 /* A lot of this stuff will have to change to support C++.  But we're
1121    not going to deal with that at the moment.  */
1122
1123 /* Find the field in the structure type TYPE named NAME, and return
1124    its index in TYPE's field array.  */
1125 static int
1126 find_field (struct type *type, char *name)
1127 {
1128   int i;
1129
1130   CHECK_TYPEDEF (type);
1131
1132   /* Make sure this isn't C++.  */
1133   if (TYPE_N_BASECLASSES (type) != 0)
1134     internal_error (__FILE__, __LINE__,
1135                     _("find_field: derived classes supported"));
1136
1137   for (i = 0; i < TYPE_NFIELDS (type); i++)
1138     {
1139       char *this_name = TYPE_FIELD_NAME (type, i);
1140
1141       if (this_name)
1142         {
1143           if (strcmp (name, this_name) == 0)
1144             return i;
1145
1146           if (this_name[0] == '\0')
1147             internal_error (__FILE__, __LINE__,
1148                             _("find_field: anonymous unions not supported"));
1149         }
1150     }
1151
1152   error (_("Couldn't find member named `%s' in struct/union `%s'"),
1153          name, TYPE_TAG_NAME (type));
1154
1155   return 0;
1156 }
1157
1158
1159 /* Generate code to push the value of a bitfield of a structure whose
1160    address is on the top of the stack.  START and END give the
1161    starting and one-past-ending *bit* numbers of the field within the
1162    structure.  */
1163 static void
1164 gen_bitfield_ref (struct expression *exp, struct agent_expr *ax,
1165                   struct axs_value *value, struct type *type,
1166                   int start, int end)
1167 {
1168   /* Note that ops[i] fetches 8 << i bits.  */
1169   static enum agent_op ops[]
1170   =
1171   {aop_ref8, aop_ref16, aop_ref32, aop_ref64};
1172   static int num_ops = (sizeof (ops) / sizeof (ops[0]));
1173
1174   /* We don't want to touch any byte that the bitfield doesn't
1175      actually occupy; we shouldn't make any accesses we're not
1176      explicitly permitted to.  We rely here on the fact that the
1177      bytecode `ref' operators work on unaligned addresses.
1178
1179      It takes some fancy footwork to get the stack to work the way
1180      we'd like.  Say we're retrieving a bitfield that requires three
1181      fetches.  Initially, the stack just contains the address:
1182      addr
1183      For the first fetch, we duplicate the address
1184      addr addr
1185      then add the byte offset, do the fetch, and shift and mask as
1186      needed, yielding a fragment of the value, properly aligned for
1187      the final bitwise or:
1188      addr frag1
1189      then we swap, and repeat the process:
1190      frag1 addr                    --- address on top
1191      frag1 addr addr               --- duplicate it
1192      frag1 addr frag2              --- get second fragment
1193      frag1 frag2 addr              --- swap again
1194      frag1 frag2 frag3             --- get third fragment
1195      Notice that, since the third fragment is the last one, we don't
1196      bother duplicating the address this time.  Now we have all the
1197      fragments on the stack, and we can simply `or' them together,
1198      yielding the final value of the bitfield.  */
1199
1200   /* The first and one-after-last bits in the field, but rounded down
1201      and up to byte boundaries.  */
1202   int bound_start = (start / TARGET_CHAR_BIT) * TARGET_CHAR_BIT;
1203   int bound_end = (((end + TARGET_CHAR_BIT - 1)
1204                     / TARGET_CHAR_BIT)
1205                    * TARGET_CHAR_BIT);
1206
1207   /* current bit offset within the structure */
1208   int offset;
1209
1210   /* The index in ops of the opcode we're considering.  */
1211   int op;
1212
1213   /* The number of fragments we generated in the process.  Probably
1214      equal to the number of `one' bits in bytesize, but who cares?  */
1215   int fragment_count;
1216
1217   /* Dereference any typedefs. */
1218   type = check_typedef (type);
1219
1220   /* Can we fetch the number of bits requested at all?  */
1221   if ((end - start) > ((1 << num_ops) * 8))
1222     internal_error (__FILE__, __LINE__,
1223                     _("gen_bitfield_ref: bitfield too wide"));
1224
1225   /* Note that we know here that we only need to try each opcode once.
1226      That may not be true on machines with weird byte sizes.  */
1227   offset = bound_start;
1228   fragment_count = 0;
1229   for (op = num_ops - 1; op >= 0; op--)
1230     {
1231       /* number of bits that ops[op] would fetch */
1232       int op_size = 8 << op;
1233
1234       /* The stack at this point, from bottom to top, contains zero or
1235          more fragments, then the address.  */
1236
1237       /* Does this fetch fit within the bitfield?  */
1238       if (offset + op_size <= bound_end)
1239         {
1240           /* Is this the last fragment?  */
1241           int last_frag = (offset + op_size == bound_end);
1242
1243           if (!last_frag)
1244             ax_simple (ax, aop_dup);    /* keep a copy of the address */
1245
1246           /* Add the offset.  */
1247           gen_offset (ax, offset / TARGET_CHAR_BIT);
1248
1249           if (trace_kludge)
1250             {
1251               /* Record the area of memory we're about to fetch.  */
1252               ax_trace_quick (ax, op_size / TARGET_CHAR_BIT);
1253             }
1254
1255           /* Perform the fetch.  */
1256           ax_simple (ax, ops[op]);
1257
1258           /* Shift the bits we have to their proper position.
1259              gen_left_shift will generate right shifts when the operand
1260              is negative.
1261
1262              A big-endian field diagram to ponder:
1263              byte 0  byte 1  byte 2  byte 3  byte 4  byte 5  byte 6  byte 7
1264              +------++------++------++------++------++------++------++------+
1265              xxxxAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCxxxxxxxxxxx
1266              ^               ^               ^    ^
1267              bit number      16              32              48   53
1268              These are bit numbers as supplied by GDB.  Note that the
1269              bit numbers run from right to left once you've fetched the
1270              value!
1271
1272              A little-endian field diagram to ponder:
1273              byte 7  byte 6  byte 5  byte 4  byte 3  byte 2  byte 1  byte 0
1274              +------++------++------++------++------++------++------++------+
1275              xxxxxxxxxxxAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCxxxx
1276              ^               ^               ^           ^   ^
1277              bit number     48              32              16          4   0
1278
1279              In both cases, the most significant end is on the left
1280              (i.e. normal numeric writing order), which means that you
1281              don't go crazy thinking about `left' and `right' shifts.
1282
1283              We don't have to worry about masking yet:
1284              - If they contain garbage off the least significant end, then we
1285              must be looking at the low end of the field, and the right
1286              shift will wipe them out.
1287              - If they contain garbage off the most significant end, then we
1288              must be looking at the most significant end of the word, and
1289              the sign/zero extension will wipe them out.
1290              - If we're in the interior of the word, then there is no garbage
1291              on either end, because the ref operators zero-extend.  */
1292           if (gdbarch_byte_order (exp->gdbarch) == BFD_ENDIAN_BIG)
1293             gen_left_shift (ax, end - (offset + op_size));
1294           else
1295             gen_left_shift (ax, offset - start);
1296
1297           if (!last_frag)
1298             /* Bring the copy of the address up to the top.  */
1299             ax_simple (ax, aop_swap);
1300
1301           offset += op_size;
1302           fragment_count++;
1303         }
1304     }
1305
1306   /* Generate enough bitwise `or' operations to combine all the
1307      fragments we left on the stack.  */
1308   while (fragment_count-- > 1)
1309     ax_simple (ax, aop_bit_or);
1310
1311   /* Sign- or zero-extend the value as appropriate.  */
1312   ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, end - start));
1313
1314   /* This is *not* an lvalue.  Ugh.  */
1315   value->kind = axs_rvalue;
1316   value->type = type;
1317 }
1318
1319
1320 /* Generate code to reference the member named FIELD of a structure or
1321    union.  The top of the stack, as described by VALUE, should have
1322    type (pointer to a)* struct/union.  OPERATOR_NAME is the name of
1323    the operator being compiled, and OPERAND_NAME is the kind of thing
1324    it operates on; we use them in error messages.  */
1325 static void
1326 gen_struct_ref (struct expression *exp, struct agent_expr *ax,
1327                 struct axs_value *value, char *field,
1328                 char *operator_name, char *operand_name)
1329 {
1330   struct type *type;
1331   int i;
1332
1333   /* Follow pointers until we reach a non-pointer.  These aren't the C
1334      semantics, but they're what the normal GDB evaluator does, so we
1335      should at least be consistent.  */
1336   while (pointer_type (value->type))
1337     {
1338       require_rvalue (ax, value);
1339       gen_deref (ax, value);
1340     }
1341   type = check_typedef (value->type);
1342
1343   /* This must yield a structure or a union.  */
1344   if (TYPE_CODE (type) != TYPE_CODE_STRUCT
1345       && TYPE_CODE (type) != TYPE_CODE_UNION)
1346     error (_("The left operand of `%s' is not a %s."),
1347            operator_name, operand_name);
1348
1349   /* And it must be in memory; we don't deal with structure rvalues,
1350      or structures living in registers.  */
1351   if (value->kind != axs_lvalue_memory)
1352     error (_("Structure does not live in memory."));
1353
1354   i = find_field (type, field);
1355
1356   /* Is this a bitfield?  */
1357   if (TYPE_FIELD_PACKED (type, i))
1358     gen_bitfield_ref (exp, ax, value, TYPE_FIELD_TYPE (type, i),
1359                       TYPE_FIELD_BITPOS (type, i),
1360                       (TYPE_FIELD_BITPOS (type, i)
1361                        + TYPE_FIELD_BITSIZE (type, i)));
1362   else
1363     {
1364       gen_offset (ax, TYPE_FIELD_BITPOS (type, i) / TARGET_CHAR_BIT);
1365       value->kind = axs_lvalue_memory;
1366       value->type = TYPE_FIELD_TYPE (type, i);
1367     }
1368 }
1369
1370
1371 /* Generate code for GDB's magical `repeat' operator.  
1372    LVALUE @ INT creates an array INT elements long, and whose elements
1373    have the same type as LVALUE, located in memory so that LVALUE is
1374    its first element.  For example, argv[0]@argc gives you the array
1375    of command-line arguments.
1376
1377    Unfortunately, because we have to know the types before we actually
1378    have a value for the expression, we can't implement this perfectly
1379    without changing the type system, having values that occupy two
1380    stack slots, doing weird things with sizeof, etc.  So we require
1381    the right operand to be a constant expression.  */
1382 static void
1383 gen_repeat (struct expression *exp, union exp_element **pc,
1384             struct agent_expr *ax, struct axs_value *value)
1385 {
1386   struct axs_value value1;
1387   /* We don't want to turn this into an rvalue, so no conversions
1388      here.  */
1389   gen_expr (exp, pc, ax, &value1);
1390   if (value1.kind != axs_lvalue_memory)
1391     error (_("Left operand of `@' must be an object in memory."));
1392
1393   /* Evaluate the length; it had better be a constant.  */
1394   {
1395     struct value *v = const_expr (pc);
1396     int length;
1397
1398     if (!v)
1399       error (_("Right operand of `@' must be a constant, in agent expressions."));
1400     if (TYPE_CODE (value_type (v)) != TYPE_CODE_INT)
1401       error (_("Right operand of `@' must be an integer."));
1402     length = value_as_long (v);
1403     if (length <= 0)
1404       error (_("Right operand of `@' must be positive."));
1405
1406     /* The top of the stack is already the address of the object, so
1407        all we need to do is frob the type of the lvalue.  */
1408     {
1409       /* FIXME-type-allocation: need a way to free this type when we are
1410          done with it.  */
1411       struct type *array
1412         = lookup_array_range_type (value1.type, 0, length - 1);
1413
1414       value->kind = axs_lvalue_memory;
1415       value->type = array;
1416     }
1417   }
1418 }
1419
1420
1421 /* Emit code for the `sizeof' operator.
1422    *PC should point at the start of the operand expression; we advance it
1423    to the first instruction after the operand.  */
1424 static void
1425 gen_sizeof (struct expression *exp, union exp_element **pc,
1426             struct agent_expr *ax, struct axs_value *value,
1427             struct type *size_type)
1428 {
1429   /* We don't care about the value of the operand expression; we only
1430      care about its type.  However, in the current arrangement, the
1431      only way to find an expression's type is to generate code for it.
1432      So we generate code for the operand, and then throw it away,
1433      replacing it with code that simply pushes its size.  */
1434   int start = ax->len;
1435   gen_expr (exp, pc, ax, value);
1436
1437   /* Throw away the code we just generated.  */
1438   ax->len = start;
1439
1440   ax_const_l (ax, TYPE_LENGTH (value->type));
1441   value->kind = axs_rvalue;
1442   value->type = size_type;
1443 }
1444 \f
1445
1446 /* Generating bytecode from GDB expressions: general recursive thingy  */
1447
1448 /* XXX: i18n */
1449 /* A gen_expr function written by a Gen-X'er guy.
1450    Append code for the subexpression of EXPR starting at *POS_P to AX.  */
1451 static void
1452 gen_expr (struct expression *exp, union exp_element **pc,
1453           struct agent_expr *ax, struct axs_value *value)
1454 {
1455   /* Used to hold the descriptions of operand expressions.  */
1456   struct axs_value value1, value2, value3;
1457   enum exp_opcode op = (*pc)[0].opcode, op2;
1458   int if1, go1, if2, go2, end;
1459
1460   /* If we're looking at a constant expression, just push its value.  */
1461   {
1462     struct value *v = maybe_const_expr (pc);
1463
1464     if (v)
1465       {
1466         ax_const_l (ax, value_as_long (v));
1467         value->kind = axs_rvalue;
1468         value->type = check_typedef (value_type (v));
1469         return;
1470       }
1471   }
1472
1473   /* Otherwise, go ahead and generate code for it.  */
1474   switch (op)
1475     {
1476       /* Binary arithmetic operators.  */
1477     case BINOP_ADD:
1478     case BINOP_SUB:
1479     case BINOP_MUL:
1480     case BINOP_DIV:
1481     case BINOP_REM:
1482     case BINOP_LSH:
1483     case BINOP_RSH:
1484     case BINOP_SUBSCRIPT:
1485     case BINOP_BITWISE_AND:
1486     case BINOP_BITWISE_IOR:
1487     case BINOP_BITWISE_XOR:
1488     case BINOP_EQUAL:
1489     case BINOP_NOTEQUAL:
1490     case BINOP_LESS:
1491     case BINOP_GTR:
1492     case BINOP_LEQ:
1493     case BINOP_GEQ:
1494       (*pc)++;
1495       gen_expr (exp, pc, ax, &value1);
1496       gen_usual_unary (exp, ax, &value1);
1497       gen_expr_binop_rest (exp, op, pc, ax, value, &value1, &value2);
1498       break;
1499
1500     case BINOP_LOGICAL_AND:
1501       (*pc)++;
1502       /* Generate the obvious sequence of tests and jumps.  */
1503       gen_expr (exp, pc, ax, &value1);
1504       gen_usual_unary (exp, ax, &value1);
1505       if1 = ax_goto (ax, aop_if_goto);
1506       go1 = ax_goto (ax, aop_goto);
1507       ax_label (ax, if1, ax->len);
1508       gen_expr (exp, pc, ax, &value2);
1509       gen_usual_unary (exp, ax, &value2);
1510       if2 = ax_goto (ax, aop_if_goto);
1511       go2 = ax_goto (ax, aop_goto);
1512       ax_label (ax, if2, ax->len);
1513       ax_const_l (ax, 1);
1514       end = ax_goto (ax, aop_goto);
1515       ax_label (ax, go1, ax->len);
1516       ax_label (ax, go2, ax->len);
1517       ax_const_l (ax, 0);
1518       ax_label (ax, end, ax->len);
1519       value->kind = axs_rvalue;
1520       value->type = language_bool_type (exp->language_defn, exp->gdbarch);
1521       break;
1522
1523     case BINOP_LOGICAL_OR:
1524       (*pc)++;
1525       /* Generate the obvious sequence of tests and jumps.  */
1526       gen_expr (exp, pc, ax, &value1);
1527       gen_usual_unary (exp, ax, &value1);
1528       if1 = ax_goto (ax, aop_if_goto);
1529       gen_expr (exp, pc, ax, &value2);
1530       gen_usual_unary (exp, ax, &value2);
1531       if2 = ax_goto (ax, aop_if_goto);
1532       ax_const_l (ax, 0);
1533       end = ax_goto (ax, aop_goto);
1534       ax_label (ax, if1, ax->len);
1535       ax_label (ax, if2, ax->len);
1536       ax_const_l (ax, 1);
1537       ax_label (ax, end, ax->len);
1538       value->kind = axs_rvalue;
1539       value->type = language_bool_type (exp->language_defn, exp->gdbarch);
1540       break;
1541
1542     case TERNOP_COND:
1543       (*pc)++;
1544       gen_expr (exp, pc, ax, &value1);
1545       gen_usual_unary (exp, ax, &value1);
1546       /* For (A ? B : C), it's easiest to generate subexpression
1547          bytecodes in order, but if_goto jumps on true, so we invert
1548          the sense of A.  Then we can do B by dropping through, and
1549          jump to do C.  */
1550       gen_logical_not (ax, &value1,
1551                        language_bool_type (exp->language_defn, exp->gdbarch));
1552       if1 = ax_goto (ax, aop_if_goto);
1553       gen_expr (exp, pc, ax, &value2);
1554       gen_usual_unary (exp, ax, &value2);
1555       end = ax_goto (ax, aop_goto);
1556       ax_label (ax, if1, ax->len);
1557       gen_expr (exp, pc, ax, &value3);
1558       gen_usual_unary (exp, ax, &value3);
1559       ax_label (ax, end, ax->len);
1560       /* This is arbitary - what if B and C are incompatible types? */
1561       value->type = value2.type;
1562       value->kind = value2.kind;
1563       break;
1564
1565     case BINOP_ASSIGN:
1566       (*pc)++;
1567       if ((*pc)[0].opcode == OP_INTERNALVAR)
1568         {
1569           char *name = internalvar_name ((*pc)[1].internalvar);
1570           struct trace_state_variable *tsv;
1571           (*pc) += 3;
1572           gen_expr (exp, pc, ax, value);
1573           tsv = find_trace_state_variable (name);
1574           if (tsv)
1575             {
1576               ax_tsv (ax, aop_setv, tsv->number);
1577               if (trace_kludge)
1578                 ax_tsv (ax, aop_tracev, tsv->number);
1579             }
1580           else
1581             error (_("$%s is not a trace state variable, may not assign to it"), name);
1582         }
1583       else
1584         error (_("May only assign to trace state variables"));
1585       break;
1586
1587     case BINOP_ASSIGN_MODIFY:
1588       (*pc)++;
1589       op2 = (*pc)[0].opcode;
1590       (*pc)++;
1591       (*pc)++;
1592       if ((*pc)[0].opcode == OP_INTERNALVAR)
1593         {
1594           char *name = internalvar_name ((*pc)[1].internalvar);
1595           struct trace_state_variable *tsv;
1596           (*pc) += 3;
1597           tsv = find_trace_state_variable (name);
1598           if (tsv)
1599             {
1600               /* The tsv will be the left half of the binary operation.  */
1601               ax_tsv (ax, aop_getv, tsv->number);
1602               if (trace_kludge)
1603                 ax_tsv (ax, aop_tracev, tsv->number);
1604               /* Trace state variables are always 64-bit integers.  */
1605               value1.kind = axs_rvalue;
1606               value1.type = builtin_type (exp->gdbarch)->builtin_long_long;
1607               /* Now do right half of expression.  */
1608               gen_expr_binop_rest (exp, op2, pc, ax, value, &value1, &value2);
1609               /* We have a result of the binary op, set the tsv.  */
1610               ax_tsv (ax, aop_setv, tsv->number);
1611               if (trace_kludge)
1612                 ax_tsv (ax, aop_tracev, tsv->number);
1613             }
1614           else
1615             error (_("$%s is not a trace state variable, may not assign to it"), name);
1616         }
1617       else
1618         error (_("May only assign to trace state variables"));
1619       break;
1620
1621       /* Note that we need to be a little subtle about generating code
1622          for comma.  In C, we can do some optimizations here because
1623          we know the left operand is only being evaluated for effect.
1624          However, if the tracing kludge is in effect, then we always
1625          need to evaluate the left hand side fully, so that all the
1626          variables it mentions get traced.  */
1627     case BINOP_COMMA:
1628       (*pc)++;
1629       gen_expr (exp, pc, ax, &value1);
1630       /* Don't just dispose of the left operand.  We might be tracing,
1631          in which case we want to emit code to trace it if it's an
1632          lvalue.  */
1633       gen_traced_pop (ax, &value1);
1634       gen_expr (exp, pc, ax, value);
1635       /* It's the consumer's responsibility to trace the right operand.  */
1636       break;
1637
1638     case OP_LONG:               /* some integer constant */
1639       {
1640         struct type *type = (*pc)[1].type;
1641         LONGEST k = (*pc)[2].longconst;
1642         (*pc) += 4;
1643         gen_int_literal (ax, value, k, type);
1644       }
1645       break;
1646
1647     case OP_VAR_VALUE:
1648       gen_var_ref (exp->gdbarch, ax, value, (*pc)[2].symbol);
1649       (*pc) += 4;
1650       break;
1651
1652     case OP_REGISTER:
1653       {
1654         const char *name = &(*pc)[2].string;
1655         int reg;
1656         (*pc) += 4 + BYTES_TO_EXP_ELEM ((*pc)[1].longconst + 1);
1657         reg = user_reg_map_name_to_regnum (exp->gdbarch, name, strlen (name));
1658         if (reg == -1)
1659           internal_error (__FILE__, __LINE__,
1660                           _("Register $%s not available"), name);
1661         if (reg >= gdbarch_num_regs (exp->gdbarch))
1662           error (_("'%s' is a pseudo-register; "
1663                    "GDB cannot yet trace pseudoregister contents."),
1664                  name);
1665         value->kind = axs_lvalue_register;
1666         value->u.reg = reg;
1667         value->type = register_type (exp->gdbarch, reg);
1668       }
1669       break;
1670
1671     case OP_INTERNALVAR:
1672       {
1673         const char *name = internalvar_name ((*pc)[1].internalvar);
1674         struct trace_state_variable *tsv;
1675         (*pc) += 3;
1676         tsv = find_trace_state_variable (name);
1677         if (tsv)
1678           {
1679             ax_tsv (ax, aop_getv, tsv->number);
1680             if (trace_kludge)
1681               ax_tsv (ax, aop_tracev, tsv->number);
1682             /* Trace state variables are always 64-bit integers.  */
1683             value->kind = axs_rvalue;
1684             value->type = builtin_type (exp->gdbarch)->builtin_long_long;
1685           }
1686         else
1687           error (_("$%s is not a trace state variable; GDB agent expressions cannot use convenience variables."), name);
1688       }
1689       break;
1690
1691       /* Weirdo operator: see comments for gen_repeat for details.  */
1692     case BINOP_REPEAT:
1693       /* Note that gen_repeat handles its own argument evaluation.  */
1694       (*pc)++;
1695       gen_repeat (exp, pc, ax, value);
1696       break;
1697
1698     case UNOP_CAST:
1699       {
1700         struct type *type = (*pc)[1].type;
1701         (*pc) += 3;
1702         gen_expr (exp, pc, ax, value);
1703         gen_cast (ax, value, type);
1704       }
1705       break;
1706
1707     case UNOP_MEMVAL:
1708       {
1709         struct type *type = check_typedef ((*pc)[1].type);
1710         (*pc) += 3;
1711         gen_expr (exp, pc, ax, value);
1712         /* I'm not sure I understand UNOP_MEMVAL entirely.  I think
1713            it's just a hack for dealing with minsyms; you take some
1714            integer constant, pretend it's the address of an lvalue of
1715            the given type, and dereference it.  */
1716         if (value->kind != axs_rvalue)
1717           /* This would be weird.  */
1718           internal_error (__FILE__, __LINE__,
1719                           _("gen_expr: OP_MEMVAL operand isn't an rvalue???"));
1720         value->type = type;
1721         value->kind = axs_lvalue_memory;
1722       }
1723       break;
1724
1725     case UNOP_PLUS:
1726       (*pc)++;
1727       /* + FOO is equivalent to 0 + FOO, which can be optimized. */
1728       gen_expr (exp, pc, ax, value);
1729       gen_usual_unary (exp, ax, value);
1730       break;
1731       
1732     case UNOP_NEG:
1733       (*pc)++;
1734       /* -FOO is equivalent to 0 - FOO.  */
1735       gen_int_literal (ax, &value1, 0,
1736                        builtin_type (exp->gdbarch)->builtin_int);
1737       gen_usual_unary (exp, ax, &value1);       /* shouldn't do much */
1738       gen_expr (exp, pc, ax, &value2);
1739       gen_usual_unary (exp, ax, &value2);
1740       gen_usual_arithmetic (exp, ax, &value1, &value2);
1741       gen_binop (ax, value, &value1, &value2, aop_sub, aop_sub, 1, "negation");
1742       break;
1743
1744     case UNOP_LOGICAL_NOT:
1745       (*pc)++;
1746       gen_expr (exp, pc, ax, value);
1747       gen_usual_unary (exp, ax, value);
1748       gen_logical_not (ax, value,
1749                        language_bool_type (exp->language_defn, exp->gdbarch));
1750       break;
1751
1752     case UNOP_COMPLEMENT:
1753       (*pc)++;
1754       gen_expr (exp, pc, ax, value);
1755       gen_usual_unary (exp, ax, value);
1756       gen_integral_promotions (exp, ax, value);
1757       gen_complement (ax, value);
1758       break;
1759
1760     case UNOP_IND:
1761       (*pc)++;
1762       gen_expr (exp, pc, ax, value);
1763       gen_usual_unary (exp, ax, value);
1764       if (!pointer_type (value->type))
1765         error (_("Argument of unary `*' is not a pointer."));
1766       gen_deref (ax, value);
1767       break;
1768
1769     case UNOP_ADDR:
1770       (*pc)++;
1771       gen_expr (exp, pc, ax, value);
1772       gen_address_of (ax, value);
1773       break;
1774
1775     case UNOP_SIZEOF:
1776       (*pc)++;
1777       /* Notice that gen_sizeof handles its own operand, unlike most
1778          of the other unary operator functions.  This is because we
1779          have to throw away the code we generate.  */
1780       gen_sizeof (exp, pc, ax, value,
1781                   builtin_type (exp->gdbarch)->builtin_int);
1782       break;
1783
1784     case STRUCTOP_STRUCT:
1785     case STRUCTOP_PTR:
1786       {
1787         int length = (*pc)[1].longconst;
1788         char *name = &(*pc)[2].string;
1789
1790         (*pc) += 4 + BYTES_TO_EXP_ELEM (length + 1);
1791         gen_expr (exp, pc, ax, value);
1792         if (op == STRUCTOP_STRUCT)
1793           gen_struct_ref (exp, ax, value, name, ".", "structure or union");
1794         else if (op == STRUCTOP_PTR)
1795           gen_struct_ref (exp, ax, value, name, "->",
1796                           "pointer to a structure or union");
1797         else
1798           /* If this `if' chain doesn't handle it, then the case list
1799              shouldn't mention it, and we shouldn't be here.  */
1800           internal_error (__FILE__, __LINE__,
1801                           _("gen_expr: unhandled struct case"));
1802       }
1803       break;
1804
1805     case OP_THIS:
1806       {
1807         char *this_name;
1808         struct symbol *func, *sym;
1809         struct block *b;
1810
1811         func = block_linkage_function (block_for_pc (ax->scope));
1812         this_name = language_def (SYMBOL_LANGUAGE (func))->la_name_of_this;
1813         b = SYMBOL_BLOCK_VALUE (func);
1814
1815         /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
1816            symbol instead of the LOC_ARG one (if both exist).  */
1817         sym = lookup_block_symbol (b, this_name, VAR_DOMAIN);
1818         if (!sym)
1819           error (_("no `%s' found"), this_name);
1820
1821         gen_var_ref (exp->gdbarch, ax, value, sym);
1822         (*pc) += 2;
1823       }
1824       break;
1825
1826     case OP_TYPE:
1827       error (_("Attempt to use a type name as an expression."));
1828
1829     default:
1830       error (_("Unsupported operator in expression."));
1831     }
1832 }
1833
1834 /* This handles the middle-to-right-side of code generation for binary
1835    expressions, which is shared between regular binary operations and
1836    assign-modify (+= and friends) expressions.  */
1837
1838 static void
1839 gen_expr_binop_rest (struct expression *exp,
1840                      enum exp_opcode op, union exp_element **pc,
1841                      struct agent_expr *ax, struct axs_value *value,
1842                      struct axs_value *value1, struct axs_value *value2)
1843 {
1844   gen_expr (exp, pc, ax, value2);
1845   gen_usual_unary (exp, ax, value2);
1846   gen_usual_arithmetic (exp, ax, value1, value2);
1847   switch (op)
1848     {
1849     case BINOP_ADD:
1850       if (TYPE_CODE (value1->type) == TYPE_CODE_INT
1851           && pointer_type (value2->type))
1852         {
1853           /* Swap the values and proceed normally.  */
1854           ax_simple (ax, aop_swap);
1855           gen_ptradd (ax, value, value2, value1);
1856         }
1857       else if (pointer_type (value1->type)
1858                && TYPE_CODE (value2->type) == TYPE_CODE_INT)
1859         gen_ptradd (ax, value, value1, value2);
1860       else
1861         gen_binop (ax, value, value1, value2,
1862                    aop_add, aop_add, 1, "addition");
1863       break;
1864     case BINOP_SUB:
1865       if (pointer_type (value1->type)
1866           && TYPE_CODE (value2->type) == TYPE_CODE_INT)
1867         gen_ptrsub (ax,value, value1, value2);
1868       else if (pointer_type (value1->type)
1869                && pointer_type (value2->type))
1870         /* FIXME --- result type should be ptrdiff_t */
1871         gen_ptrdiff (ax, value, value1, value2,
1872                      builtin_type (exp->gdbarch)->builtin_long);
1873       else
1874         gen_binop (ax, value, value1, value2,
1875                    aop_sub, aop_sub, 1, "subtraction");
1876       break;
1877     case BINOP_MUL:
1878       gen_binop (ax, value, value1, value2,
1879                  aop_mul, aop_mul, 1, "multiplication");
1880       break;
1881     case BINOP_DIV:
1882       gen_binop (ax, value, value1, value2,
1883                  aop_div_signed, aop_div_unsigned, 1, "division");
1884       break;
1885     case BINOP_REM:
1886       gen_binop (ax, value, value1, value2,
1887                  aop_rem_signed, aop_rem_unsigned, 1, "remainder");
1888       break;
1889     case BINOP_LSH:
1890       gen_binop (ax, value, value1, value2,
1891                  aop_lsh, aop_lsh, 1, "left shift");
1892       break;
1893     case BINOP_RSH:
1894       gen_binop (ax, value, value1, value2,
1895                  aop_rsh_signed, aop_rsh_unsigned, 1, "right shift");
1896       break;
1897     case BINOP_SUBSCRIPT:
1898       {
1899         struct type *type;
1900
1901         if (binop_types_user_defined_p (op, value1->type, value2->type))
1902           {
1903             error (_("\
1904 cannot subscript requested type: cannot call user defined functions"));
1905           }
1906         else
1907           {
1908             /* If the user attempts to subscript something that is not
1909                an array or pointer type (like a plain int variable for
1910                example), then report this as an error.  */
1911             type = check_typedef (value1->type);
1912             if (TYPE_CODE (type) != TYPE_CODE_ARRAY
1913                 && TYPE_CODE (type) != TYPE_CODE_PTR)
1914               {
1915                 if (TYPE_NAME (type))
1916                   error (_("cannot subscript something of type `%s'"),
1917                          TYPE_NAME (type));
1918                 else
1919                   error (_("cannot subscript requested type"));
1920               }
1921           }
1922
1923         if (!is_integral_type (value2->type))
1924           error (_("Argument to arithmetic operation not a number or boolean."));
1925
1926         gen_ptradd (ax, value, value1, value2);
1927         gen_deref (ax, value);
1928         break;
1929       }
1930     case BINOP_BITWISE_AND:
1931       gen_binop (ax, value, value1, value2,
1932                  aop_bit_and, aop_bit_and, 0, "bitwise and");
1933       break;
1934
1935     case BINOP_BITWISE_IOR:
1936       gen_binop (ax, value, value1, value2,
1937                  aop_bit_or, aop_bit_or, 0, "bitwise or");
1938       break;
1939       
1940     case BINOP_BITWISE_XOR:
1941       gen_binop (ax, value, value1, value2,
1942                  aop_bit_xor, aop_bit_xor, 0, "bitwise exclusive-or");
1943       break;
1944
1945     case BINOP_EQUAL:
1946       gen_binop (ax, value, value1, value2,
1947                  aop_equal, aop_equal, 0, "equal");
1948       break;
1949
1950     case BINOP_NOTEQUAL:
1951       gen_binop (ax, value, value1, value2,
1952                  aop_equal, aop_equal, 0, "equal");
1953       gen_logical_not (ax, value,
1954                        language_bool_type (exp->language_defn,
1955                                            exp->gdbarch));
1956       break;
1957
1958     case BINOP_LESS:
1959       gen_binop (ax, value, value1, value2,
1960                  aop_less_signed, aop_less_unsigned, 0, "less than");
1961       break;
1962
1963     case BINOP_GTR:
1964       ax_simple (ax, aop_swap);
1965       gen_binop (ax, value, value1, value2,
1966                  aop_less_signed, aop_less_unsigned, 0, "less than");
1967       break;
1968
1969     case BINOP_LEQ:
1970       ax_simple (ax, aop_swap);
1971       gen_binop (ax, value, value1, value2,
1972                  aop_less_signed, aop_less_unsigned, 0, "less than");
1973       gen_logical_not (ax, value,
1974                        language_bool_type (exp->language_defn,
1975                                            exp->gdbarch));
1976       break;
1977
1978     case BINOP_GEQ:
1979       gen_binop (ax, value, value1, value2,
1980                  aop_less_signed, aop_less_unsigned, 0, "less than");
1981       gen_logical_not (ax, value,
1982                        language_bool_type (exp->language_defn,
1983                                            exp->gdbarch));
1984       break;
1985
1986     default:
1987       /* We should only list operators in the outer case statement
1988          that we actually handle in the inner case statement.  */
1989       internal_error (__FILE__, __LINE__,
1990                       _("gen_expr: op case sets don't match"));
1991     }
1992 }
1993 \f
1994
1995 /* Given a single variable and a scope, generate bytecodes to trace
1996    its value.  This is for use in situations where we have only a
1997    variable's name, and no parsed expression; for instance, when the
1998    name comes from a list of local variables of a function.  */
1999
2000 struct agent_expr *
2001 gen_trace_for_var (CORE_ADDR scope, struct symbol *var)
2002 {
2003   struct cleanup *old_chain = 0;
2004   struct agent_expr *ax = new_agent_expr (scope);
2005   struct axs_value value;
2006
2007   old_chain = make_cleanup_free_agent_expr (ax);
2008
2009   trace_kludge = 1;
2010   gen_var_ref (NULL, ax, &value, var);
2011
2012   /* Make sure we record the final object, and get rid of it.  */
2013   gen_traced_pop (ax, &value);
2014
2015   /* Oh, and terminate.  */
2016   ax_simple (ax, aop_end);
2017
2018   /* We have successfully built the agent expr, so cancel the cleanup
2019      request.  If we add more cleanups that we always want done, this
2020      will have to get more complicated.  */
2021   discard_cleanups (old_chain);
2022   return ax;
2023 }
2024
2025 /* Generating bytecode from GDB expressions: driver */
2026
2027 /* Given a GDB expression EXPR, return bytecode to trace its value.
2028    The result will use the `trace' and `trace_quick' bytecodes to
2029    record the value of all memory touched by the expression.  The
2030    caller can then use the ax_reqs function to discover which
2031    registers it relies upon.  */
2032 struct agent_expr *
2033 gen_trace_for_expr (CORE_ADDR scope, struct expression *expr)
2034 {
2035   struct cleanup *old_chain = 0;
2036   struct agent_expr *ax = new_agent_expr (scope);
2037   union exp_element *pc;
2038   struct axs_value value;
2039
2040   old_chain = make_cleanup_free_agent_expr (ax);
2041
2042   pc = expr->elts;
2043   trace_kludge = 1;
2044   gen_expr (expr, &pc, ax, &value);
2045
2046   /* Make sure we record the final object, and get rid of it.  */
2047   gen_traced_pop (ax, &value);
2048
2049   /* Oh, and terminate.  */
2050   ax_simple (ax, aop_end);
2051
2052   /* We have successfully built the agent expr, so cancel the cleanup
2053      request.  If we add more cleanups that we always want done, this
2054      will have to get more complicated.  */
2055   discard_cleanups (old_chain);
2056   return ax;
2057 }
2058
2059 /* Given a GDB expression EXPR, return a bytecode sequence that will
2060    evaluate and return a result.  The bytecodes will do a direct
2061    evaluation, using the current data on the target, rather than
2062    recording blocks of memory and registers for later use, as
2063    gen_trace_for_expr does.  The generated bytecode sequence leaves
2064    the result of expression evaluation on the top of the stack.  */
2065
2066 struct agent_expr *
2067 gen_eval_for_expr (CORE_ADDR scope, struct expression *expr)
2068 {
2069   struct cleanup *old_chain = 0;
2070   struct agent_expr *ax = new_agent_expr (scope);
2071   union exp_element *pc;
2072   struct axs_value value;
2073
2074   old_chain = make_cleanup_free_agent_expr (ax);
2075
2076   pc = expr->elts;
2077   trace_kludge = 0;
2078   gen_expr (expr, &pc, ax, &value);
2079
2080   /* Oh, and terminate.  */
2081   ax_simple (ax, aop_end);
2082
2083   /* We have successfully built the agent expr, so cancel the cleanup
2084      request.  If we add more cleanups that we always want done, this
2085      will have to get more complicated.  */
2086   discard_cleanups (old_chain);
2087   return ax;
2088 }
2089
2090 static void
2091 agent_command (char *exp, int from_tty)
2092 {
2093   struct cleanup *old_chain = 0;
2094   struct expression *expr;
2095   struct agent_expr *agent;
2096   struct frame_info *fi = get_current_frame (); /* need current scope */
2097
2098   /* We don't deal with overlay debugging at the moment.  We need to
2099      think more carefully about this.  If you copy this code into
2100      another command, change the error message; the user shouldn't
2101      have to know anything about agent expressions.  */
2102   if (overlay_debugging)
2103     error (_("GDB can't do agent expression translation with overlays."));
2104
2105   if (exp == 0)
2106     error_no_arg (_("expression to translate"));
2107
2108   expr = parse_expression (exp);
2109   old_chain = make_cleanup (free_current_contents, &expr);
2110   agent = gen_trace_for_expr (get_frame_pc (fi), expr);
2111   make_cleanup_free_agent_expr (agent);
2112   ax_print (gdb_stdout, agent);
2113
2114   /* It would be nice to call ax_reqs here to gather some general info
2115      about the expression, and then print out the result.  */
2116
2117   do_cleanups (old_chain);
2118   dont_repeat ();
2119 }
2120
2121 /* Parse the given expression, compile it into an agent expression
2122    that does direct evaluation, and display the resulting
2123    expression.  */
2124
2125 static void
2126 agent_eval_command (char *exp, int from_tty)
2127 {
2128   struct cleanup *old_chain = 0;
2129   struct expression *expr;
2130   struct agent_expr *agent;
2131   struct frame_info *fi = get_current_frame (); /* need current scope */
2132
2133   /* We don't deal with overlay debugging at the moment.  We need to
2134      think more carefully about this.  If you copy this code into
2135      another command, change the error message; the user shouldn't
2136      have to know anything about agent expressions.  */
2137   if (overlay_debugging)
2138     error (_("GDB can't do agent expression translation with overlays."));
2139
2140   if (exp == 0)
2141     error_no_arg (_("expression to translate"));
2142
2143   expr = parse_expression (exp);
2144   old_chain = make_cleanup (free_current_contents, &expr);
2145   agent = gen_eval_for_expr (get_frame_pc (fi), expr);
2146   make_cleanup_free_agent_expr (agent);
2147   ax_print (gdb_stdout, agent);
2148
2149   /* It would be nice to call ax_reqs here to gather some general info
2150      about the expression, and then print out the result.  */
2151
2152   do_cleanups (old_chain);
2153   dont_repeat ();
2154 }
2155 \f
2156
2157 /* Initialization code.  */
2158
2159 void _initialize_ax_gdb (void);
2160 void
2161 _initialize_ax_gdb (void)
2162 {
2163   add_cmd ("agent", class_maintenance, agent_command,
2164            _("Translate an expression into remote agent bytecode for tracing."),
2165            &maintenancelist);
2166
2167   add_cmd ("agent-eval", class_maintenance, agent_eval_command,
2168            _("Translate an expression into remote agent bytecode for evaluation."),
2169            &maintenancelist);
2170 }