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