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