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