gdb/
[external/binutils.git] / gdb / findvar.c
1 /* Find a variable's value in memory, for GDB, the GNU debugger.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009,
5    2010, 2011 Free Software Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "symtab.h"
24 #include "gdbtypes.h"
25 #include "frame.h"
26 #include "value.h"
27 #include "gdbcore.h"
28 #include "inferior.h"
29 #include "target.h"
30 #include "gdb_string.h"
31 #include "gdb_assert.h"
32 #include "floatformat.h"
33 #include "symfile.h"            /* for overlay functions */
34 #include "regcache.h"
35 #include "user-regs.h"
36 #include "block.h"
37 #include "objfiles.h"
38
39 /* Basic byte-swapping routines.  All 'extract' functions return a
40    host-format integer from a target-format integer at ADDR which is
41    LEN bytes long.  */
42
43 #if TARGET_CHAR_BIT != 8 || HOST_CHAR_BIT != 8
44   /* 8 bit characters are a pretty safe assumption these days, so we
45      assume it throughout all these swapping routines.  If we had to deal with
46      9 bit characters, we would need to make len be in bits and would have
47      to re-write these routines...  */
48 you lose
49 #endif
50
51 LONGEST
52 extract_signed_integer (const gdb_byte *addr, int len,
53                         enum bfd_endian byte_order)
54 {
55   LONGEST retval;
56   const unsigned char *p;
57   const unsigned char *startaddr = addr;
58   const unsigned char *endaddr = startaddr + len;
59
60   if (len > (int) sizeof (LONGEST))
61     error (_("\
62 That operation is not available on integers of more than %d bytes."),
63            (int) sizeof (LONGEST));
64
65   /* Start at the most significant end of the integer, and work towards
66      the least significant.  */
67   if (byte_order == BFD_ENDIAN_BIG)
68     {
69       p = startaddr;
70       /* Do the sign extension once at the start.  */
71       retval = ((LONGEST) * p ^ 0x80) - 0x80;
72       for (++p; p < endaddr; ++p)
73         retval = (retval << 8) | *p;
74     }
75   else
76     {
77       p = endaddr - 1;
78       /* Do the sign extension once at the start.  */
79       retval = ((LONGEST) * p ^ 0x80) - 0x80;
80       for (--p; p >= startaddr; --p)
81         retval = (retval << 8) | *p;
82     }
83   return retval;
84 }
85
86 ULONGEST
87 extract_unsigned_integer (const gdb_byte *addr, int len,
88                           enum bfd_endian byte_order)
89 {
90   ULONGEST retval;
91   const unsigned char *p;
92   const unsigned char *startaddr = addr;
93   const unsigned char *endaddr = startaddr + len;
94
95   if (len > (int) sizeof (ULONGEST))
96     error (_("\
97 That operation is not available on integers of more than %d bytes."),
98            (int) sizeof (ULONGEST));
99
100   /* Start at the most significant end of the integer, and work towards
101      the least significant.  */
102   retval = 0;
103   if (byte_order == BFD_ENDIAN_BIG)
104     {
105       for (p = startaddr; p < endaddr; ++p)
106         retval = (retval << 8) | *p;
107     }
108   else
109     {
110       for (p = endaddr - 1; p >= startaddr; --p)
111         retval = (retval << 8) | *p;
112     }
113   return retval;
114 }
115
116 /* Sometimes a long long unsigned integer can be extracted as a
117    LONGEST value.  This is done so that we can print these values
118    better.  If this integer can be converted to a LONGEST, this
119    function returns 1 and sets *PVAL.  Otherwise it returns 0.  */
120
121 int
122 extract_long_unsigned_integer (const gdb_byte *addr, int orig_len,
123                                enum bfd_endian byte_order, LONGEST *pval)
124 {
125   const gdb_byte *p;
126   const gdb_byte *first_addr;
127   int len;
128
129   len = orig_len;
130   if (byte_order == BFD_ENDIAN_BIG)
131     {
132       for (p = addr;
133            len > (int) sizeof (LONGEST) && p < addr + orig_len;
134            p++)
135         {
136           if (*p == 0)
137             len--;
138           else
139             break;
140         }
141       first_addr = p;
142     }
143   else
144     {
145       first_addr = addr;
146       for (p = addr + orig_len - 1;
147            len > (int) sizeof (LONGEST) && p >= addr;
148            p--)
149         {
150           if (*p == 0)
151             len--;
152           else
153             break;
154         }
155     }
156
157   if (len <= (int) sizeof (LONGEST))
158     {
159       *pval = (LONGEST) extract_unsigned_integer (first_addr,
160                                                   sizeof (LONGEST),
161                                                   byte_order);
162       return 1;
163     }
164
165   return 0;
166 }
167
168
169 /* Treat the bytes at BUF as a pointer of type TYPE, and return the
170    address it represents.  */
171 CORE_ADDR
172 extract_typed_address (const gdb_byte *buf, struct type *type)
173 {
174   if (TYPE_CODE (type) != TYPE_CODE_PTR
175       && TYPE_CODE (type) != TYPE_CODE_REF)
176     internal_error (__FILE__, __LINE__,
177                     _("extract_typed_address: "
178                     "type is not a pointer or reference"));
179
180   return gdbarch_pointer_to_address (get_type_arch (type), type, buf);
181 }
182
183 /* All 'store' functions accept a host-format integer and store a
184    target-format integer at ADDR which is LEN bytes long.  */
185
186 void
187 store_signed_integer (gdb_byte *addr, int len,
188                       enum bfd_endian byte_order, LONGEST val)
189 {
190   gdb_byte *p;
191   gdb_byte *startaddr = addr;
192   gdb_byte *endaddr = startaddr + len;
193
194   /* Start at the least significant end of the integer, and work towards
195      the most significant.  */
196   if (byte_order == BFD_ENDIAN_BIG)
197     {
198       for (p = endaddr - 1; p >= startaddr; --p)
199         {
200           *p = val & 0xff;
201           val >>= 8;
202         }
203     }
204   else
205     {
206       for (p = startaddr; p < endaddr; ++p)
207         {
208           *p = val & 0xff;
209           val >>= 8;
210         }
211     }
212 }
213
214 void
215 store_unsigned_integer (gdb_byte *addr, int len,
216                         enum bfd_endian byte_order, ULONGEST val)
217 {
218   unsigned char *p;
219   unsigned char *startaddr = (unsigned char *) addr;
220   unsigned char *endaddr = startaddr + len;
221
222   /* Start at the least significant end of the integer, and work towards
223      the most significant.  */
224   if (byte_order == BFD_ENDIAN_BIG)
225     {
226       for (p = endaddr - 1; p >= startaddr; --p)
227         {
228           *p = val & 0xff;
229           val >>= 8;
230         }
231     }
232   else
233     {
234       for (p = startaddr; p < endaddr; ++p)
235         {
236           *p = val & 0xff;
237           val >>= 8;
238         }
239     }
240 }
241
242 /* Store the address ADDR as a pointer of type TYPE at BUF, in target
243    form.  */
244 void
245 store_typed_address (gdb_byte *buf, struct type *type, CORE_ADDR addr)
246 {
247   if (TYPE_CODE (type) != TYPE_CODE_PTR
248       && TYPE_CODE (type) != TYPE_CODE_REF)
249     internal_error (__FILE__, __LINE__,
250                     _("store_typed_address: "
251                     "type is not a pointer or reference"));
252
253   gdbarch_address_to_pointer (get_type_arch (type), type, buf, addr);
254 }
255
256
257
258 /* Return a `value' with the contents of (virtual or cooked) register
259    REGNUM as found in the specified FRAME.  The register's type is
260    determined by register_type().  */
261
262 struct value *
263 value_of_register (int regnum, struct frame_info *frame)
264 {
265   struct gdbarch *gdbarch = get_frame_arch (frame);
266   CORE_ADDR addr;
267   int optim;
268   struct value *reg_val;
269   int realnum;
270   gdb_byte raw_buffer[MAX_REGISTER_SIZE];
271   enum lval_type lval;
272
273   /* User registers lie completely outside of the range of normal
274      registers.  Catch them early so that the target never sees them.  */
275   if (regnum >= gdbarch_num_regs (gdbarch)
276                 + gdbarch_num_pseudo_regs (gdbarch))
277     return value_of_user_reg (regnum, frame);
278
279   frame_register (frame, regnum, &optim, &lval, &addr, &realnum, raw_buffer);
280
281   reg_val = allocate_value (register_type (gdbarch, regnum));
282
283   memcpy (value_contents_raw (reg_val), raw_buffer,
284           register_size (gdbarch, regnum));
285   VALUE_LVAL (reg_val) = lval;
286   set_value_address (reg_val, addr);
287   VALUE_REGNUM (reg_val) = regnum;
288   set_value_optimized_out (reg_val, optim);
289   VALUE_FRAME_ID (reg_val) = get_frame_id (frame);
290   return reg_val;
291 }
292
293 /* Return a `value' with the contents of (virtual or cooked) register
294    REGNUM as found in the specified FRAME.  The register's type is
295    determined by register_type().  The value is not fetched.  */
296
297 struct value *
298 value_of_register_lazy (struct frame_info *frame, int regnum)
299 {
300   struct gdbarch *gdbarch = get_frame_arch (frame);
301   struct value *reg_val;
302
303   gdb_assert (regnum < (gdbarch_num_regs (gdbarch)
304                         + gdbarch_num_pseudo_regs (gdbarch)));
305
306   /* We should have a valid (i.e. non-sentinel) frame.  */
307   gdb_assert (frame_id_p (get_frame_id (frame)));
308
309   reg_val = allocate_value_lazy (register_type (gdbarch, regnum));
310   VALUE_LVAL (reg_val) = lval_register;
311   VALUE_REGNUM (reg_val) = regnum;
312   VALUE_FRAME_ID (reg_val) = get_frame_id (frame);
313   return reg_val;
314 }
315
316 /* Given a pointer of type TYPE in target form in BUF, return the
317    address it represents.  */
318 CORE_ADDR
319 unsigned_pointer_to_address (struct gdbarch *gdbarch,
320                              struct type *type, const gdb_byte *buf)
321 {
322   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
323
324   return extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
325 }
326
327 CORE_ADDR
328 signed_pointer_to_address (struct gdbarch *gdbarch,
329                            struct type *type, const gdb_byte *buf)
330 {
331   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
332
333   return extract_signed_integer (buf, TYPE_LENGTH (type), byte_order);
334 }
335
336 /* Given an address, store it as a pointer of type TYPE in target
337    format in BUF.  */
338 void
339 unsigned_address_to_pointer (struct gdbarch *gdbarch, struct type *type,
340                              gdb_byte *buf, CORE_ADDR addr)
341 {
342   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
343
344   store_unsigned_integer (buf, TYPE_LENGTH (type), byte_order, addr);
345 }
346
347 void
348 address_to_signed_pointer (struct gdbarch *gdbarch, struct type *type,
349                            gdb_byte *buf, CORE_ADDR addr)
350 {
351   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
352
353   store_signed_integer (buf, TYPE_LENGTH (type), byte_order, addr);
354 }
355 \f
356 /* Will calling read_var_value or locate_var_value on SYM end
357    up caring what frame it is being evaluated relative to?  SYM must
358    be non-NULL.  */
359 int
360 symbol_read_needs_frame (struct symbol *sym)
361 {
362   switch (SYMBOL_CLASS (sym))
363     {
364       /* All cases listed explicitly so that gcc -Wall will detect it if
365          we failed to consider one.  */
366     case LOC_COMPUTED:
367       /* FIXME: cagney/2004-01-26: It should be possible to
368          unconditionally call the SYMBOL_COMPUTED_OPS method when available.
369          Unfortunately DWARF 2 stores the frame-base (instead of the
370          function) location in a function's symbol.  Oops!  For the
371          moment enable this when/where applicable.  */
372       return SYMBOL_COMPUTED_OPS (sym)->read_needs_frame (sym);
373
374     case LOC_REGISTER:
375     case LOC_ARG:
376     case LOC_REF_ARG:
377     case LOC_REGPARM_ADDR:
378     case LOC_LOCAL:
379       return 1;
380
381     case LOC_UNDEF:
382     case LOC_CONST:
383     case LOC_STATIC:
384     case LOC_TYPEDEF:
385
386     case LOC_LABEL:
387       /* Getting the address of a label can be done independently of the block,
388          even if some *uses* of that address wouldn't work so well without
389          the right frame.  */
390
391     case LOC_BLOCK:
392     case LOC_CONST_BYTES:
393     case LOC_UNRESOLVED:
394     case LOC_OPTIMIZED_OUT:
395       return 0;
396     }
397   return 1;
398 }
399
400 /* Given a struct symbol for a variable,
401    and a stack frame id, read the value of the variable
402    and return a (pointer to a) struct value containing the value.
403    If the variable cannot be found, return a zero pointer.  */
404
405 struct value *
406 read_var_value (struct symbol *var, struct frame_info *frame)
407 {
408   struct value *v;
409   struct type *type = SYMBOL_TYPE (var);
410   CORE_ADDR addr;
411   int len;
412
413   /* Call check_typedef on our type to make sure that, if TYPE is
414      a TYPE_CODE_TYPEDEF, its length is set to the length of the target type
415      instead of zero.  However, we do not replace the typedef type by the
416      target type, because we want to keep the typedef in order to be able to
417      set the returned value type description correctly.  */
418   check_typedef (type);
419
420   len = TYPE_LENGTH (type);
421
422   if (symbol_read_needs_frame (var))
423     gdb_assert (frame);
424
425   switch (SYMBOL_CLASS (var))
426     {
427     case LOC_CONST:
428       /* Put the constant back in target format.  */
429       v = allocate_value (type);
430       store_signed_integer (value_contents_raw (v), len,
431                             gdbarch_byte_order (get_type_arch (type)),
432                             (LONGEST) SYMBOL_VALUE (var));
433       VALUE_LVAL (v) = not_lval;
434       return v;
435
436     case LOC_LABEL:
437       /* Put the constant back in target format.  */
438       v = allocate_value (type);
439       if (overlay_debugging)
440         {
441           CORE_ADDR addr
442             = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
443                                         SYMBOL_OBJ_SECTION (var));
444
445           store_typed_address (value_contents_raw (v), type, addr);
446         }
447       else
448         store_typed_address (value_contents_raw (v), type,
449                               SYMBOL_VALUE_ADDRESS (var));
450       VALUE_LVAL (v) = not_lval;
451       return v;
452
453     case LOC_CONST_BYTES:
454       v = allocate_value (type);
455       memcpy (value_contents_raw (v), SYMBOL_VALUE_BYTES (var), len);
456       VALUE_LVAL (v) = not_lval;
457       return v;
458
459     case LOC_STATIC:
460       v = allocate_value_lazy (type);
461       if (overlay_debugging)
462         addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
463                                          SYMBOL_OBJ_SECTION (var));
464       else
465         addr = SYMBOL_VALUE_ADDRESS (var);
466       break;
467
468     case LOC_ARG:
469       addr = get_frame_args_address (frame);
470       if (!addr)
471         return 0;
472       addr += SYMBOL_VALUE (var);
473       v = allocate_value_lazy (type);
474       break;
475
476     case LOC_REF_ARG:
477       {
478         struct value *ref;
479         CORE_ADDR argref;
480
481         argref = get_frame_args_address (frame);
482         if (!argref)
483           return 0;
484         argref += SYMBOL_VALUE (var);
485         ref = value_at (lookup_pointer_type (type), argref);
486         addr = value_as_address (ref);
487         v = allocate_value_lazy (type);
488         break;
489       }
490
491     case LOC_LOCAL:
492       addr = get_frame_locals_address (frame);
493       addr += SYMBOL_VALUE (var);
494       v = allocate_value_lazy (type);
495       break;
496
497     case LOC_TYPEDEF:
498       error (_("Cannot look up value of a typedef"));
499       break;
500
501     case LOC_BLOCK:
502       v = allocate_value_lazy (type);
503       if (overlay_debugging)
504         addr = symbol_overlayed_address
505           (BLOCK_START (SYMBOL_BLOCK_VALUE (var)), SYMBOL_OBJ_SECTION (var));
506       else
507         addr = BLOCK_START (SYMBOL_BLOCK_VALUE (var));
508       break;
509
510     case LOC_REGISTER:
511     case LOC_REGPARM_ADDR:
512       {
513         int regno = SYMBOL_REGISTER_OPS (var)
514                       ->register_number (var, get_frame_arch (frame));
515         struct value *regval;
516
517         if (SYMBOL_CLASS (var) == LOC_REGPARM_ADDR)
518           {
519             regval = value_from_register (lookup_pointer_type (type),
520                                           regno,
521                                           frame);
522
523             if (regval == NULL)
524               error (_("Value of register variable not available."));
525
526             addr = value_as_address (regval);
527             v = allocate_value_lazy (type);
528           }
529         else
530           {
531             regval = value_from_register (type, regno, frame);
532
533             if (regval == NULL)
534               error (_("Value of register variable not available."));
535             return regval;
536           }
537       }
538       break;
539
540     case LOC_COMPUTED:
541       /* FIXME: cagney/2004-01-26: It should be possible to
542          unconditionally call the SYMBOL_COMPUTED_OPS method when available.
543          Unfortunately DWARF 2 stores the frame-base (instead of the
544          function) location in a function's symbol.  Oops!  For the
545          moment enable this when/where applicable.  */
546       return SYMBOL_COMPUTED_OPS (var)->read_variable (var, frame);
547
548     case LOC_UNRESOLVED:
549       {
550         struct minimal_symbol *msym;
551         struct obj_section *obj_section;
552
553         msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL);
554         if (msym == NULL)
555           return 0;
556         if (overlay_debugging)
557           addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (msym),
558                                            SYMBOL_OBJ_SECTION (msym));
559         else
560           addr = SYMBOL_VALUE_ADDRESS (msym);
561
562         obj_section = SYMBOL_OBJ_SECTION (msym);
563         if (obj_section
564             && (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
565           addr = target_translate_tls_address (obj_section->objfile, addr);
566         v = allocate_value_lazy (type);
567       }
568       break;
569
570     case LOC_OPTIMIZED_OUT:
571       v = allocate_value_lazy (type);
572       VALUE_LVAL (v) = not_lval;
573       set_value_optimized_out (v, 1);
574       return v;
575
576     default:
577       error (_("Cannot look up value of a botched symbol."));
578       break;
579     }
580
581   VALUE_LVAL (v) = lval_memory;
582   set_value_address (v, addr);
583   return v;
584 }
585
586 /* Install default attributes for register values.  */
587
588 struct value *
589 default_value_from_register (struct type *type, int regnum,
590                              struct frame_info *frame)
591 {
592   struct gdbarch *gdbarch = get_frame_arch (frame);
593   int len = TYPE_LENGTH (type);
594   struct value *value = allocate_value (type);
595
596   VALUE_LVAL (value) = lval_register;
597   VALUE_FRAME_ID (value) = get_frame_id (frame);
598   VALUE_REGNUM (value) = regnum;
599
600   /* Any structure stored in more than one register will always be
601      an integral number of registers.  Otherwise, you need to do
602      some fiddling with the last register copied here for little
603      endian machines.  */
604   if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG
605       && len < register_size (gdbarch, regnum))
606     /* Big-endian, and we want less than full size.  */
607     set_value_offset (value, register_size (gdbarch, regnum) - len);
608   else
609     set_value_offset (value, 0);
610
611   return value;
612 }
613
614 /* Return a value of type TYPE, stored in register REGNUM, in frame FRAME.  */
615
616 struct value *
617 value_from_register (struct type *type, int regnum, struct frame_info *frame)
618 {
619   struct gdbarch *gdbarch = get_frame_arch (frame);
620   struct type *type1 = check_typedef (type);
621   struct value *v;
622
623   if (gdbarch_convert_register_p (gdbarch, regnum, type1))
624     {
625       /* The ISA/ABI need to something weird when obtaining the
626          specified value from this register.  It might need to
627          re-order non-adjacent, starting with REGNUM (see MIPS and
628          i386).  It might need to convert the [float] register into
629          the corresponding [integer] type (see Alpha).  The assumption
630          is that gdbarch_register_to_value populates the entire value
631          including the location.  */
632       v = allocate_value (type);
633       VALUE_LVAL (v) = lval_register;
634       VALUE_FRAME_ID (v) = get_frame_id (frame);
635       VALUE_REGNUM (v) = regnum;
636       gdbarch_register_to_value (gdbarch,
637                                  frame, regnum, type1, value_contents_raw (v));
638     }
639   else
640     {
641       int len = TYPE_LENGTH (type);
642
643       /* Construct the value.  */
644       v = gdbarch_value_from_register (gdbarch, type, regnum, frame);
645
646       /* Get the data.  */
647       if (!get_frame_register_bytes (frame, regnum, value_offset (v), len,
648                                      value_contents_raw (v)))
649         set_value_optimized_out (v, 1);
650     }
651   return v;
652 }
653
654 /* Return contents of register REGNUM in frame FRAME as address,
655    interpreted as value of type TYPE.   Will abort if register
656    value is not available.  */
657
658 CORE_ADDR
659 address_from_register (struct type *type, int regnum, struct frame_info *frame)
660 {
661   struct value *value;
662   CORE_ADDR result;
663
664   value = value_from_register (type, regnum, frame);
665   gdb_assert (value);
666
667   result = value_as_address (value);
668   release_value (value);
669   value_free (value);
670
671   return result;
672 }