Updated copyright notices for most files.
[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    If FRAME is NULL, use the selected frame.  */
387
388 struct value *
389 read_var_value (struct symbol *var, struct frame_info *frame)
390 {
391   struct value *v;
392   struct type *type = SYMBOL_TYPE (var);
393   CORE_ADDR addr;
394   int len;
395
396   if (SYMBOL_CLASS (var) == LOC_COMPUTED
397       || SYMBOL_CLASS (var) == LOC_REGISTER)
398     /* These cases do not use V.  */
399     v = NULL;
400   else
401     {
402       v = allocate_value (type);
403       VALUE_LVAL (v) = lval_memory;     /* The most likely possibility.  */
404     }
405
406   len = TYPE_LENGTH (type);
407
408   /* FIXME drow/2003-09-06: this call to the selected frame should be
409      pushed upwards to the callers.  */
410   if (frame == NULL)
411     frame = deprecated_safe_get_selected_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       if (frame == NULL)
454         return 0;
455       addr = get_frame_args_address (frame);
456       if (!addr)
457         return 0;
458       addr += SYMBOL_VALUE (var);
459       break;
460
461     case LOC_REF_ARG:
462       {
463         struct value *ref;
464         CORE_ADDR argref;
465         if (frame == NULL)
466           return 0;
467         argref = get_frame_args_address (frame);
468         if (!argref)
469           return 0;
470         argref += SYMBOL_VALUE (var);
471         ref = value_at (lookup_pointer_type (type), argref);
472         addr = value_as_address (ref);
473         break;
474       }
475
476     case LOC_LOCAL:
477       if (frame == NULL)
478         return 0;
479       addr = get_frame_locals_address (frame);
480       addr += SYMBOL_VALUE (var);
481       break;
482
483     case LOC_TYPEDEF:
484       error (_("Cannot look up value of a typedef"));
485       break;
486
487     case LOC_BLOCK:
488       if (overlay_debugging)
489         VALUE_ADDRESS (v) = symbol_overlayed_address
490           (BLOCK_START (SYMBOL_BLOCK_VALUE (var)), SYMBOL_OBJ_SECTION (var));
491       else
492         VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (var));
493       return v;
494
495     case LOC_REGISTER:
496     case LOC_REGPARM_ADDR:
497       {
498         int regno = SYMBOL_VALUE (var);
499         struct value *regval;
500
501         if (frame == NULL)
502           return 0;
503
504         if (SYMBOL_CLASS (var) == LOC_REGPARM_ADDR)
505           {
506             regval = value_from_register (lookup_pointer_type (type),
507                                           regno,
508                                           frame);
509
510             if (regval == NULL)
511               error (_("Value of register variable not available."));
512
513             addr = value_as_address (regval);
514             VALUE_LVAL (v) = lval_memory;
515           }
516         else
517           {
518             regval = value_from_register (type, regno, frame);
519
520             if (regval == NULL)
521               error (_("Value of register variable not available."));
522             return regval;
523           }
524       }
525       break;
526
527     case LOC_COMPUTED:
528       /* FIXME: cagney/2004-01-26: It should be possible to
529          unconditionally call the SYMBOL_OPS method when available.
530          Unfortunately DWARF 2 stores the frame-base (instead of the
531          function) location in a function's symbol.  Oops!  For the
532          moment enable this when/where applicable.  */
533       if (frame == 0 && SYMBOL_OPS (var)->read_needs_frame (var))
534         return 0;
535       return SYMBOL_OPS (var)->read_variable (var, frame);
536
537     case LOC_UNRESOLVED:
538       {
539         struct minimal_symbol *msym;
540         struct obj_section *obj_section;
541
542         msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL);
543         if (msym == NULL)
544           return 0;
545         if (overlay_debugging)
546           addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (msym),
547                                            SYMBOL_OBJ_SECTION (msym));
548         else
549           addr = SYMBOL_VALUE_ADDRESS (msym);
550
551         obj_section = SYMBOL_OBJ_SECTION (msym);
552         if (obj_section
553             && (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
554           addr = target_translate_tls_address (obj_section->objfile, addr);
555       }
556       break;
557
558     case LOC_OPTIMIZED_OUT:
559       VALUE_LVAL (v) = not_lval;
560       set_value_optimized_out (v, 1);
561       return v;
562
563     default:
564       error (_("Cannot look up value of a botched symbol."));
565       break;
566     }
567
568   VALUE_ADDRESS (v) = addr;
569   set_value_lazy (v, 1);
570   return v;
571 }
572
573 /* Install default attributes for register values.  */
574
575 struct value *
576 default_value_from_register (struct type *type, int regnum,
577                              struct frame_info *frame)
578 {
579   struct gdbarch *gdbarch = get_frame_arch (frame);
580   int len = TYPE_LENGTH (type);
581   struct value *value = allocate_value (type);
582
583   VALUE_LVAL (value) = lval_register;
584   VALUE_FRAME_ID (value) = get_frame_id (frame);
585   VALUE_REGNUM (value) = regnum;
586
587   /* Any structure stored in more than one register will always be
588      an integral number of registers.  Otherwise, you need to do
589      some fiddling with the last register copied here for little
590      endian machines.  */
591   if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG
592       && len < register_size (gdbarch, regnum))
593     /* Big-endian, and we want less than full size.  */
594     set_value_offset (value, register_size (gdbarch, regnum) - len);
595   else
596     set_value_offset (value, 0);
597
598   return value;
599 }
600
601 /* Return a value of type TYPE, stored in register REGNUM, in frame FRAME.  */
602
603 struct value *
604 value_from_register (struct type *type, int regnum, struct frame_info *frame)
605 {
606   struct gdbarch *gdbarch = get_frame_arch (frame);
607   struct type *type1 = check_typedef (type);
608   struct value *v;
609
610   if (gdbarch_convert_register_p (gdbarch, regnum, type1))
611     {
612       /* The ISA/ABI need to something weird when obtaining the
613          specified value from this register.  It might need to
614          re-order non-adjacent, starting with REGNUM (see MIPS and
615          i386).  It might need to convert the [float] register into
616          the corresponding [integer] type (see Alpha).  The assumption
617          is that gdbarch_register_to_value populates the entire value
618          including the location.  */
619       v = allocate_value (type);
620       VALUE_LVAL (v) = lval_register;
621       VALUE_FRAME_ID (v) = get_frame_id (frame);
622       VALUE_REGNUM (v) = regnum;
623       gdbarch_register_to_value (gdbarch,
624                                  frame, regnum, type1, value_contents_raw (v));
625     }
626   else
627     {
628       int len = TYPE_LENGTH (type);
629
630       /* Construct the value.  */
631       v = gdbarch_value_from_register (gdbarch, type, regnum, frame);
632
633       /* Get the data.  */
634       if (!get_frame_register_bytes (frame, regnum, value_offset (v), len,
635                                      value_contents_raw (v)))
636         set_value_optimized_out (v, 1);
637     }
638   return v;
639 }
640
641 /* Return contents of register REGNUM in frame FRAME as address,
642    interpreted as value of type TYPE.   Will abort if register
643    value is not available.  */
644
645 CORE_ADDR
646 address_from_register (struct type *type, int regnum, struct frame_info *frame)
647 {
648   struct value *value;
649   CORE_ADDR result;
650
651   value = value_from_register (type, regnum, frame);
652   gdb_assert (value);
653
654   result = value_as_address (value);
655   release_value (value);
656   value_free (value);
657
658   return result;
659 }
660
661 \f
662 /* Given a struct symbol for a variable or function,
663    and a stack frame id, 
664    return a (pointer to a) struct value containing the properly typed
665    address.  */
666
667 struct value *
668 locate_var_value (struct symbol *var, struct frame_info *frame)
669 {
670   struct gdbarch *gdbarch;
671   CORE_ADDR addr = 0;
672   struct type *type = SYMBOL_TYPE (var);
673   struct value *lazy_value;
674
675   /* Evaluate it first; if the result is a memory address, we're fine.
676      Lazy evaluation pays off here. */
677
678   lazy_value = read_var_value (var, frame);
679   if (lazy_value == 0)
680     error (_("Address of \"%s\" is unknown."), SYMBOL_PRINT_NAME (var));
681
682   if ((VALUE_LVAL (lazy_value) == lval_memory && value_lazy (lazy_value))
683       || TYPE_CODE (type) == TYPE_CODE_FUNC)
684     {
685       struct value *val;
686
687       addr = VALUE_ADDRESS (lazy_value);
688       val = value_from_pointer (lookup_pointer_type (type), addr);
689       return val;
690     }
691
692   /* Not a memory address; check what the problem was.  */
693   switch (VALUE_LVAL (lazy_value))
694     {
695     case lval_register:
696       gdb_assert (frame);
697       gdbarch = get_frame_arch (frame);
698       gdb_assert (gdbarch_register_name
699                    (gdbarch, VALUE_REGNUM (lazy_value)) != NULL
700                   && *gdbarch_register_name
701                     (gdbarch, VALUE_REGNUM (lazy_value)) != '\0');
702       error (_("Address requested for identifier "
703                "\"%s\" which is in register $%s"),
704             SYMBOL_PRINT_NAME (var), 
705             gdbarch_register_name (gdbarch, VALUE_REGNUM (lazy_value)));
706       break;
707
708     default:
709       error (_("Can't take address of \"%s\" which isn't an lvalue."),
710              SYMBOL_PRINT_NAME (var));
711       break;
712     }
713   return 0;                     /* For lint -- never reached */
714 }