* gdbtypes.c (make_pointer_type, make_reference_type,
[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 (get_type_arch (type), 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 (get_type_arch (type), 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   set_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 gdbarch *gdbarch,
313                              struct type *type, const gdb_byte *buf)
314 {
315   return extract_unsigned_integer (buf, TYPE_LENGTH (type));
316 }
317
318 CORE_ADDR
319 signed_pointer_to_address (struct gdbarch *gdbarch,
320                            struct type *type, const gdb_byte *buf)
321 {
322   return extract_signed_integer (buf, TYPE_LENGTH (type));
323 }
324
325 /* Given an address, store it as a pointer of type TYPE in target
326    format in BUF.  */
327 void
328 unsigned_address_to_pointer (struct gdbarch *gdbarch, struct type *type,
329                              gdb_byte *buf, CORE_ADDR addr)
330 {
331   store_unsigned_integer (buf, TYPE_LENGTH (type), addr);
332 }
333
334 void
335 address_to_signed_pointer (struct gdbarch *gdbarch, struct type *type,
336                            gdb_byte *buf, CORE_ADDR addr)
337 {
338   store_signed_integer (buf, TYPE_LENGTH (type), addr);
339 }
340 \f
341 /* Will calling read_var_value or locate_var_value on SYM end
342    up caring what frame it is being evaluated relative to?  SYM must
343    be non-NULL.  */
344 int
345 symbol_read_needs_frame (struct symbol *sym)
346 {
347   switch (SYMBOL_CLASS (sym))
348     {
349       /* All cases listed explicitly so that gcc -Wall will detect it if
350          we failed to consider one.  */
351     case LOC_COMPUTED:
352       /* FIXME: cagney/2004-01-26: It should be possible to
353          unconditionally call the SYMBOL_COMPUTED_OPS method when available.
354          Unfortunately DWARF 2 stores the frame-base (instead of the
355          function) location in a function's symbol.  Oops!  For the
356          moment enable this when/where applicable.  */
357       return SYMBOL_COMPUTED_OPS (sym)->read_needs_frame (sym);
358
359     case LOC_REGISTER:
360     case LOC_ARG:
361     case LOC_REF_ARG:
362     case LOC_REGPARM_ADDR:
363     case LOC_LOCAL:
364       return 1;
365
366     case LOC_UNDEF:
367     case LOC_CONST:
368     case LOC_STATIC:
369     case LOC_TYPEDEF:
370
371     case LOC_LABEL:
372       /* Getting the address of a label can be done independently of the block,
373          even if some *uses* of that address wouldn't work so well without
374          the right frame.  */
375
376     case LOC_BLOCK:
377     case LOC_CONST_BYTES:
378     case LOC_UNRESOLVED:
379     case LOC_OPTIMIZED_OUT:
380       return 0;
381     }
382   return 1;
383 }
384
385 /* Given a struct symbol for a variable,
386    and a stack frame id, read the value of the variable
387    and return a (pointer to a) struct value containing the value. 
388    If the variable cannot be found, return a zero pointer.  */
389
390 struct value *
391 read_var_value (struct symbol *var, struct frame_info *frame)
392 {
393   struct value *v;
394   struct type *type = SYMBOL_TYPE (var);
395   CORE_ADDR addr;
396   int len;
397
398   if (SYMBOL_CLASS (var) == LOC_COMPUTED
399       || SYMBOL_CLASS (var) == LOC_REGISTER)
400     /* These cases do not use V.  */
401     v = NULL;
402   else
403     {
404       v = allocate_value (type);
405       VALUE_LVAL (v) = lval_memory;     /* The most likely possibility.  */
406     }
407
408   len = TYPE_LENGTH (type);
409
410   if (symbol_read_needs_frame (var))
411     gdb_assert (frame);
412
413   switch (SYMBOL_CLASS (var))
414     {
415     case LOC_CONST:
416       /* Put the constant back in target format.  */
417       store_signed_integer (value_contents_raw (v), len,
418                             (LONGEST) SYMBOL_VALUE (var));
419       VALUE_LVAL (v) = not_lval;
420       return v;
421
422     case LOC_LABEL:
423       /* Put the constant back in target format.  */
424       if (overlay_debugging)
425         {
426           CORE_ADDR addr
427             = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
428                                         SYMBOL_OBJ_SECTION (var));
429           store_typed_address (value_contents_raw (v), type, addr);
430         }
431       else
432         store_typed_address (value_contents_raw (v), type,
433                               SYMBOL_VALUE_ADDRESS (var));
434       VALUE_LVAL (v) = not_lval;
435       return v;
436
437     case LOC_CONST_BYTES:
438       {
439         memcpy (value_contents_raw (v), SYMBOL_VALUE_BYTES (var), len);
440         VALUE_LVAL (v) = not_lval;
441         return v;
442       }
443
444     case LOC_STATIC:
445       if (overlay_debugging)
446         addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
447                                          SYMBOL_OBJ_SECTION (var));
448       else
449         addr = SYMBOL_VALUE_ADDRESS (var);
450       break;
451
452     case LOC_ARG:
453       addr = get_frame_args_address (frame);
454       if (!addr)
455         return 0;
456       addr += SYMBOL_VALUE (var);
457       break;
458
459     case LOC_REF_ARG:
460       {
461         struct value *ref;
462         CORE_ADDR argref;
463         argref = get_frame_args_address (frame);
464         if (!argref)
465           return 0;
466         argref += SYMBOL_VALUE (var);
467         ref = value_at (lookup_pointer_type (type), argref);
468         addr = value_as_address (ref);
469         break;
470       }
471
472     case LOC_LOCAL:
473       addr = get_frame_locals_address (frame);
474       addr += SYMBOL_VALUE (var);
475       break;
476
477     case LOC_TYPEDEF:
478       error (_("Cannot look up value of a typedef"));
479       break;
480
481     case LOC_BLOCK:
482       if (overlay_debugging)
483         set_value_address (v, symbol_overlayed_address
484           (BLOCK_START (SYMBOL_BLOCK_VALUE (var)), SYMBOL_OBJ_SECTION (var)));
485       else
486         set_value_address (v, BLOCK_START (SYMBOL_BLOCK_VALUE (var)));
487       return v;
488
489     case LOC_REGISTER:
490     case LOC_REGPARM_ADDR:
491       {
492         int regno = SYMBOL_REGISTER_OPS (var)
493                       ->register_number (var, get_frame_arch (frame));
494         struct value *regval;
495
496         if (SYMBOL_CLASS (var) == LOC_REGPARM_ADDR)
497           {
498             regval = value_from_register (lookup_pointer_type (type),
499                                           regno,
500                                           frame);
501
502             if (regval == NULL)
503               error (_("Value of register variable not available."));
504
505             addr = value_as_address (regval);
506             VALUE_LVAL (v) = lval_memory;
507           }
508         else
509           {
510             regval = value_from_register (type, regno, frame);
511
512             if (regval == NULL)
513               error (_("Value of register variable not available."));
514             return regval;
515           }
516       }
517       break;
518
519     case LOC_COMPUTED:
520       /* FIXME: cagney/2004-01-26: It should be possible to
521          unconditionally call the SYMBOL_COMPUTED_OPS method when available.
522          Unfortunately DWARF 2 stores the frame-base (instead of the
523          function) location in a function's symbol.  Oops!  For the
524          moment enable this when/where applicable.  */
525       return SYMBOL_COMPUTED_OPS (var)->read_variable (var, frame);
526
527     case LOC_UNRESOLVED:
528       {
529         struct minimal_symbol *msym;
530         struct obj_section *obj_section;
531
532         msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL);
533         if (msym == NULL)
534           return 0;
535         if (overlay_debugging)
536           addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (msym),
537                                            SYMBOL_OBJ_SECTION (msym));
538         else
539           addr = SYMBOL_VALUE_ADDRESS (msym);
540
541         obj_section = SYMBOL_OBJ_SECTION (msym);
542         if (obj_section
543             && (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
544           addr = target_translate_tls_address (obj_section->objfile, addr);
545       }
546       break;
547
548     case LOC_OPTIMIZED_OUT:
549       VALUE_LVAL (v) = not_lval;
550       set_value_optimized_out (v, 1);
551       return v;
552
553     default:
554       error (_("Cannot look up value of a botched symbol."));
555       break;
556     }
557
558   set_value_address (v, addr);
559   set_value_lazy (v, 1);
560   return v;
561 }
562
563 /* Install default attributes for register values.  */
564
565 struct value *
566 default_value_from_register (struct type *type, int regnum,
567                              struct frame_info *frame)
568 {
569   struct gdbarch *gdbarch = get_frame_arch (frame);
570   int len = TYPE_LENGTH (type);
571   struct value *value = allocate_value (type);
572
573   VALUE_LVAL (value) = lval_register;
574   VALUE_FRAME_ID (value) = get_frame_id (frame);
575   VALUE_REGNUM (value) = regnum;
576
577   /* Any structure stored in more than one register will always be
578      an integral number of registers.  Otherwise, you need to do
579      some fiddling with the last register copied here for little
580      endian machines.  */
581   if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG
582       && len < register_size (gdbarch, regnum))
583     /* Big-endian, and we want less than full size.  */
584     set_value_offset (value, register_size (gdbarch, regnum) - len);
585   else
586     set_value_offset (value, 0);
587
588   return value;
589 }
590
591 /* Return a value of type TYPE, stored in register REGNUM, in frame FRAME.  */
592
593 struct value *
594 value_from_register (struct type *type, int regnum, struct frame_info *frame)
595 {
596   struct gdbarch *gdbarch = get_frame_arch (frame);
597   struct type *type1 = check_typedef (type);
598   struct value *v;
599
600   if (gdbarch_convert_register_p (gdbarch, regnum, type1))
601     {
602       /* The ISA/ABI need to something weird when obtaining the
603          specified value from this register.  It might need to
604          re-order non-adjacent, starting with REGNUM (see MIPS and
605          i386).  It might need to convert the [float] register into
606          the corresponding [integer] type (see Alpha).  The assumption
607          is that gdbarch_register_to_value populates the entire value
608          including the location.  */
609       v = allocate_value (type);
610       VALUE_LVAL (v) = lval_register;
611       VALUE_FRAME_ID (v) = get_frame_id (frame);
612       VALUE_REGNUM (v) = regnum;
613       gdbarch_register_to_value (gdbarch,
614                                  frame, regnum, type1, value_contents_raw (v));
615     }
616   else
617     {
618       int len = TYPE_LENGTH (type);
619
620       /* Construct the value.  */
621       v = gdbarch_value_from_register (gdbarch, type, regnum, frame);
622
623       /* Get the data.  */
624       if (!get_frame_register_bytes (frame, regnum, value_offset (v), len,
625                                      value_contents_raw (v)))
626         set_value_optimized_out (v, 1);
627     }
628   return v;
629 }
630
631 /* Return contents of register REGNUM in frame FRAME as address,
632    interpreted as value of type TYPE.   Will abort if register
633    value is not available.  */
634
635 CORE_ADDR
636 address_from_register (struct type *type, int regnum, struct frame_info *frame)
637 {
638   struct value *value;
639   CORE_ADDR result;
640
641   value = value_from_register (type, regnum, frame);
642   gdb_assert (value);
643
644   result = value_as_address (value);
645   release_value (value);
646   value_free (value);
647
648   return result;
649 }