OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [gdb/] [ax-gdb.c] - Blame information for rev 25

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.