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