]> Git Repo - binutils.git/blob - gdb/findvar.c
gdb: remove SYMBOL_CLASS macro, add getter
[binutils.git] / gdb / findvar.c
1 /* Find a variable's value in memory, for GDB, the GNU debugger.
2
3    Copyright (C) 1986-2022 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "frame.h"
24 #include "value.h"
25 #include "gdbcore.h"
26 #include "inferior.h"
27 #include "target.h"
28 #include "symfile.h"            /* for overlay functions */
29 #include "regcache.h"
30 #include "user-regs.h"
31 #include "block.h"
32 #include "objfiles.h"
33 #include "language.h"
34 #include "dwarf2/loc.h"
35 #include "gdbsupport/selftest.h"
36
37 /* Basic byte-swapping routines.  All 'extract' functions return a
38    host-format integer from a target-format integer at ADDR which is
39    LEN bytes long.  */
40
41 #if TARGET_CHAR_BIT != 8 || HOST_CHAR_BIT != 8
42   /* 8 bit characters are a pretty safe assumption these days, so we
43      assume it throughout all these swapping routines.  If we had to deal with
44      9 bit characters, we would need to make len be in bits and would have
45      to re-write these routines...  */
46 you lose
47 #endif
48
49 template<typename T, typename>
50 T
51 extract_integer (gdb::array_view<const gdb_byte> buf, enum bfd_endian byte_order)
52 {
53   typename std::make_unsigned<T>::type retval = 0;
54
55   if (buf.size () > (int) sizeof (T))
56     error (_("\
57 That operation is not available on integers of more than %d bytes."),
58            (int) sizeof (T));
59
60   /* Start at the most significant end of the integer, and work towards
61      the least significant.  */
62   if (byte_order == BFD_ENDIAN_BIG)
63     {
64       size_t i = 0;
65
66       if (std::is_signed<T>::value)
67         {
68           /* Do the sign extension once at the start.  */
69           retval = ((LONGEST) buf[i] ^ 0x80) - 0x80;
70           ++i;
71         }
72       for (; i < buf.size (); ++i)
73         retval = (retval << 8) | buf[i];
74     }
75   else
76     {
77       ssize_t i = buf.size () - 1;
78
79       if (std::is_signed<T>::value)
80         {
81           /* Do the sign extension once at the start.  */
82           retval = ((LONGEST) buf[i] ^ 0x80) - 0x80;
83           --i;
84         }
85       for (; i >= 0; --i)
86         retval = (retval << 8) | buf[i];
87     }
88   return retval;
89 }
90
91 /* Explicit instantiations.  */
92 template LONGEST extract_integer<LONGEST> (gdb::array_view<const gdb_byte> buf,
93                                            enum bfd_endian byte_order);
94 template ULONGEST extract_integer<ULONGEST>
95   (gdb::array_view<const gdb_byte> buf, enum bfd_endian byte_order);
96
97 /* Sometimes a long long unsigned integer can be extracted as a
98    LONGEST value.  This is done so that we can print these values
99    better.  If this integer can be converted to a LONGEST, this
100    function returns 1 and sets *PVAL.  Otherwise it returns 0.  */
101
102 int
103 extract_long_unsigned_integer (const gdb_byte *addr, int orig_len,
104                                enum bfd_endian byte_order, LONGEST *pval)
105 {
106   const gdb_byte *p;
107   const gdb_byte *first_addr;
108   int len;
109
110   len = orig_len;
111   if (byte_order == BFD_ENDIAN_BIG)
112     {
113       for (p = addr;
114            len > (int) sizeof (LONGEST) && p < addr + orig_len;
115            p++)
116         {
117           if (*p == 0)
118             len--;
119           else
120             break;
121         }
122       first_addr = p;
123     }
124   else
125     {
126       first_addr = addr;
127       for (p = addr + orig_len - 1;
128            len > (int) sizeof (LONGEST) && p >= addr;
129            p--)
130         {
131           if (*p == 0)
132             len--;
133           else
134             break;
135         }
136     }
137
138   if (len <= (int) sizeof (LONGEST))
139     {
140       *pval = (LONGEST) extract_unsigned_integer (first_addr,
141                                                   sizeof (LONGEST),
142                                                   byte_order);
143       return 1;
144     }
145
146   return 0;
147 }
148
149
150 /* Treat the bytes at BUF as a pointer of type TYPE, and return the
151    address it represents.  */
152 CORE_ADDR
153 extract_typed_address (const gdb_byte *buf, struct type *type)
154 {
155   if (!type->is_pointer_or_reference ())
156     internal_error (__FILE__, __LINE__,
157                     _("extract_typed_address: "
158                     "type is not a pointer or reference"));
159
160   return gdbarch_pointer_to_address (type->arch (), type, buf);
161 }
162
163 /* All 'store' functions accept a host-format integer and store a
164    target-format integer at ADDR which is LEN bytes long.  */
165 template<typename T, typename>
166 void
167 store_integer (gdb_byte *addr, int len, enum bfd_endian byte_order,
168                T val)
169 {
170   gdb_byte *p;
171   gdb_byte *startaddr = addr;
172   gdb_byte *endaddr = startaddr + len;
173
174   /* Start at the least significant end of the integer, and work towards
175      the most significant.  */
176   if (byte_order == BFD_ENDIAN_BIG)
177     {
178       for (p = endaddr - 1; p >= startaddr; --p)
179         {
180           *p = val & 0xff;
181           val >>= 8;
182         }
183     }
184   else
185     {
186       for (p = startaddr; p < endaddr; ++p)
187         {
188           *p = val & 0xff;
189           val >>= 8;
190         }
191     }
192 }
193
194 /* Explicit instantiations.  */
195 template void store_integer (gdb_byte *addr, int len,
196                              enum bfd_endian byte_order,
197                              LONGEST val);
198
199 template void store_integer (gdb_byte *addr, int len,
200                              enum bfd_endian byte_order,
201                              ULONGEST val);
202
203 /* Store the address ADDR as a pointer of type TYPE at BUF, in target
204    form.  */
205 void
206 store_typed_address (gdb_byte *buf, struct type *type, CORE_ADDR addr)
207 {
208   if (!type->is_pointer_or_reference ())
209     internal_error (__FILE__, __LINE__,
210                     _("store_typed_address: "
211                     "type is not a pointer or reference"));
212
213   gdbarch_address_to_pointer (type->arch (), type, buf, addr);
214 }
215
216 /* Copy a value from SOURCE of size SOURCE_SIZE bytes to DEST of size DEST_SIZE
217    bytes.  If SOURCE_SIZE is greater than DEST_SIZE, then truncate the most
218    significant bytes.  If SOURCE_SIZE is less than DEST_SIZE then either sign
219    or zero extended according to IS_SIGNED.  Values are stored in memory with
220    endianness BYTE_ORDER.  */
221
222 void
223 copy_integer_to_size (gdb_byte *dest, int dest_size, const gdb_byte *source,
224                       int source_size, bool is_signed,
225                       enum bfd_endian byte_order)
226 {
227   signed int size_diff = dest_size - source_size;
228
229   /* Copy across everything from SOURCE that can fit into DEST.  */
230
231   if (byte_order == BFD_ENDIAN_BIG && size_diff > 0)
232     memcpy (dest + size_diff, source, source_size);
233   else if (byte_order == BFD_ENDIAN_BIG && size_diff < 0)
234     memcpy (dest, source - size_diff, dest_size);
235   else
236     memcpy (dest, source, std::min (source_size, dest_size));
237
238   /* Fill the remaining space in DEST by either zero extending or sign
239      extending.  */
240
241   if (size_diff > 0)
242     {
243       gdb_byte extension = 0;
244       if (is_signed
245           && ((byte_order != BFD_ENDIAN_BIG && source[source_size - 1] & 0x80)
246               || (byte_order == BFD_ENDIAN_BIG && source[0] & 0x80)))
247         extension = 0xff;
248
249       /* Extend into MSBs of SOURCE.  */
250       if (byte_order == BFD_ENDIAN_BIG)
251         memset (dest, extension, size_diff);
252       else
253         memset (dest + source_size, extension, size_diff);
254     }
255 }
256
257 /* Return a `value' with the contents of (virtual or cooked) register
258    REGNUM as found in the specified FRAME.  The register's type is
259    determined by register_type ().  */
260
261 struct value *
262 value_of_register (int regnum, struct frame_info *frame)
263 {
264   struct gdbarch *gdbarch = get_frame_arch (frame);
265   struct value *reg_val;
266
267   /* User registers lie completely outside of the range of normal
268      registers.  Catch them early so that the target never sees them.  */
269   if (regnum >= gdbarch_num_cooked_regs (gdbarch))
270     return value_of_user_reg (regnum, frame);
271
272   reg_val = value_of_register_lazy (frame, regnum);
273   value_fetch_lazy (reg_val);
274   return reg_val;
275 }
276
277 /* Return a `value' with the contents of (virtual or cooked) register
278    REGNUM as found in the specified FRAME.  The register's type is
279    determined by register_type ().  The value is not fetched.  */
280
281 struct value *
282 value_of_register_lazy (struct frame_info *frame, int regnum)
283 {
284   struct gdbarch *gdbarch = get_frame_arch (frame);
285   struct value *reg_val;
286   struct frame_info *next_frame;
287
288   gdb_assert (regnum < gdbarch_num_cooked_regs (gdbarch));
289
290   gdb_assert (frame != NULL);
291
292   next_frame = get_next_frame_sentinel_okay (frame);
293
294   /* In some cases NEXT_FRAME may not have a valid frame-id yet.  This can
295      happen if we end up trying to unwind a register as part of the frame
296      sniffer.  The only time that we get here without a valid frame-id is
297      if NEXT_FRAME is an inline frame.  If this is the case then we can
298      avoid getting into trouble here by skipping past the inline frames.  */
299   while (get_frame_type (next_frame) == INLINE_FRAME)
300     next_frame = get_next_frame_sentinel_okay (next_frame);
301
302   /* We should have a valid next frame.  */
303   gdb_assert (frame_id_p (get_frame_id (next_frame)));
304
305   reg_val = allocate_value_lazy (register_type (gdbarch, regnum));
306   VALUE_LVAL (reg_val) = lval_register;
307   VALUE_REGNUM (reg_val) = regnum;
308   VALUE_NEXT_FRAME_ID (reg_val) = get_frame_id (next_frame);
309
310   return reg_val;
311 }
312
313 /* Given a pointer of type TYPE in target form in BUF, return the
314    address it represents.  */
315 CORE_ADDR
316 unsigned_pointer_to_address (struct gdbarch *gdbarch,
317                              struct type *type, const gdb_byte *buf)
318 {
319   enum bfd_endian byte_order = type_byte_order (type);
320
321   return extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
322 }
323
324 CORE_ADDR
325 signed_pointer_to_address (struct gdbarch *gdbarch,
326                            struct type *type, const gdb_byte *buf)
327 {
328   enum bfd_endian byte_order = type_byte_order (type);
329
330   return extract_signed_integer (buf, TYPE_LENGTH (type), byte_order);
331 }
332
333 /* Given an address, store it as a pointer of type TYPE in target
334    format in BUF.  */
335 void
336 unsigned_address_to_pointer (struct gdbarch *gdbarch, struct type *type,
337                              gdb_byte *buf, CORE_ADDR addr)
338 {
339   enum bfd_endian byte_order = type_byte_order (type);
340
341   store_unsigned_integer (buf, TYPE_LENGTH (type), byte_order, addr);
342 }
343
344 void
345 address_to_signed_pointer (struct gdbarch *gdbarch, struct type *type,
346                            gdb_byte *buf, CORE_ADDR addr)
347 {
348   enum bfd_endian byte_order = type_byte_order (type);
349
350   store_signed_integer (buf, TYPE_LENGTH (type), byte_order, addr);
351 }
352 \f
353 /* See value.h.  */
354
355 enum symbol_needs_kind
356 symbol_read_needs (struct symbol *sym)
357 {
358   if (SYMBOL_COMPUTED_OPS (sym) != NULL)
359     return SYMBOL_COMPUTED_OPS (sym)->get_symbol_read_needs (sym);
360
361   switch (sym->aclass ())
362     {
363       /* All cases listed explicitly so that gcc -Wall will detect it if
364          we failed to consider one.  */
365     case LOC_COMPUTED:
366       gdb_assert_not_reached ("LOC_COMPUTED variable missing a method");
367
368     case LOC_REGISTER:
369     case LOC_ARG:
370     case LOC_REF_ARG:
371     case LOC_REGPARM_ADDR:
372     case LOC_LOCAL:
373       return SYMBOL_NEEDS_FRAME;
374
375     case LOC_UNDEF:
376     case LOC_CONST:
377     case LOC_STATIC:
378     case LOC_TYPEDEF:
379
380     case LOC_LABEL:
381       /* Getting the address of a label can be done independently of the block,
382          even if some *uses* of that address wouldn't work so well without
383          the right frame.  */
384
385     case LOC_BLOCK:
386     case LOC_CONST_BYTES:
387     case LOC_UNRESOLVED:
388     case LOC_OPTIMIZED_OUT:
389       return SYMBOL_NEEDS_NONE;
390     }
391   return SYMBOL_NEEDS_FRAME;
392 }
393
394 /* See value.h.  */
395
396 int
397 symbol_read_needs_frame (struct symbol *sym)
398 {
399   return symbol_read_needs (sym) == SYMBOL_NEEDS_FRAME;
400 }
401
402 /* Private data to be used with minsym_lookup_iterator_cb.  */
403
404 struct minsym_lookup_data
405 {
406   /* The name of the minimal symbol we are searching for.  */
407   const char *name;
408
409   /* The field where the callback should store the minimal symbol
410      if found.  It should be initialized to NULL before the search
411      is started.  */
412   struct bound_minimal_symbol result;
413 };
414
415 /* A callback function for gdbarch_iterate_over_objfiles_in_search_order.
416    It searches by name for a minimal symbol within the given OBJFILE.
417    The arguments are passed via CB_DATA, which in reality is a pointer
418    to struct minsym_lookup_data.  */
419
420 static int
421 minsym_lookup_iterator_cb (struct objfile *objfile, void *cb_data)
422 {
423   struct minsym_lookup_data *data = (struct minsym_lookup_data *) cb_data;
424
425   gdb_assert (data->result.minsym == NULL);
426
427   data->result = lookup_minimal_symbol (data->name, NULL, objfile);
428
429   /* The iterator should stop iff a match was found.  */
430   return (data->result.minsym != NULL);
431 }
432
433 /* Given static link expression and the frame it lives in, look for the frame
434    the static links points to and return it.  Return NULL if we could not find
435    such a frame.   */
436
437 static struct frame_info *
438 follow_static_link (struct frame_info *frame,
439                     const struct dynamic_prop *static_link)
440 {
441   CORE_ADDR upper_frame_base;
442
443   if (!dwarf2_evaluate_property (static_link, frame, NULL, &upper_frame_base))
444     return NULL;
445
446   /* Now climb up the stack frame until we reach the frame we are interested
447      in.  */
448   for (; frame != NULL; frame = get_prev_frame (frame))
449     {
450       struct symbol *framefunc = get_frame_function (frame);
451
452       /* Stacks can be quite deep: give the user a chance to stop this.  */
453       QUIT;
454
455       /* If we don't know how to compute FRAME's base address, don't give up:
456          maybe the frame we are looking for is upper in the stack frame.  */
457       if (framefunc != NULL
458           && SYMBOL_BLOCK_OPS (framefunc) != NULL
459           && SYMBOL_BLOCK_OPS (framefunc)->get_frame_base != NULL
460           && (SYMBOL_BLOCK_OPS (framefunc)->get_frame_base (framefunc, frame)
461               == upper_frame_base))
462         break;
463     }
464
465   return frame;
466 }
467
468 /* Assuming VAR is a symbol that can be reached from FRAME thanks to lexical
469    rules, look for the frame that is actually hosting VAR and return it.  If,
470    for some reason, we found no such frame, return NULL.
471
472    This kind of computation is necessary to correctly handle lexically nested
473    functions.
474
475    Note that in some cases, we know what scope VAR comes from but we cannot
476    reach the specific frame that hosts the instance of VAR we are looking for.
477    For backward compatibility purposes (with old compilers), we then look for
478    the first frame that can host it.  */
479
480 static struct frame_info *
481 get_hosting_frame (struct symbol *var, const struct block *var_block,
482                    struct frame_info *frame)
483 {
484   const struct block *frame_block = NULL;
485
486   if (!symbol_read_needs_frame (var))
487     return NULL;
488
489   /* Some symbols for local variables have no block: this happens when they are
490      not produced by a debug information reader, for instance when GDB creates
491      synthetic symbols.  Without block information, we must assume they are
492      local to FRAME. In this case, there is nothing to do.  */
493   else if (var_block == NULL)
494     return frame;
495
496   /* We currently assume that all symbols with a location list need a frame.
497      This is true in practice because selecting the location description
498      requires to compute the CFA, hence requires a frame.  However we have
499      tests that embed global/static symbols with null location lists.
500      We want to get <optimized out> instead of <frame required> when evaluating
501      them so return a frame instead of raising an error.  */
502   else if (var_block == block_global_block (var_block)
503            || var_block == block_static_block (var_block))
504     return frame;
505
506   /* We have to handle the "my_func::my_local_var" notation.  This requires us
507      to look for upper frames when we find no block for the current frame: here
508      and below, handle when frame_block == NULL.  */
509   if (frame != NULL)
510     frame_block = get_frame_block (frame, NULL);
511
512   /* Climb up the call stack until reaching the frame we are looking for.  */
513   while (frame != NULL && frame_block != var_block)
514     {
515       /* Stacks can be quite deep: give the user a chance to stop this.  */
516       QUIT;
517
518       if (frame_block == NULL)
519         {
520           frame = get_prev_frame (frame);
521           if (frame == NULL)
522             break;
523           frame_block = get_frame_block (frame, NULL);
524         }
525
526       /* If we failed to find the proper frame, fallback to the heuristic
527          method below.  */
528       else if (frame_block == block_global_block (frame_block))
529         {
530           frame = NULL;
531           break;
532         }
533
534       /* Assuming we have a block for this frame: if we are at the function
535          level, the immediate upper lexical block is in an outer function:
536          follow the static link.  */
537       else if (BLOCK_FUNCTION (frame_block))
538         {
539           const struct dynamic_prop *static_link
540             = block_static_link (frame_block);
541           int could_climb_up = 0;
542
543           if (static_link != NULL)
544             {
545               frame = follow_static_link (frame, static_link);
546               if (frame != NULL)
547                 {
548                   frame_block = get_frame_block (frame, NULL);
549                   could_climb_up = frame_block != NULL;
550                 }
551             }
552           if (!could_climb_up)
553             {
554               frame = NULL;
555               break;
556             }
557         }
558
559       else
560         /* We must be in some function nested lexical block.  Just get the
561            outer block: both must share the same frame.  */
562         frame_block = BLOCK_SUPERBLOCK (frame_block);
563     }
564
565   /* Old compilers may not provide a static link, or they may provide an
566      invalid one.  For such cases, fallback on the old way to evaluate
567      non-local references: just climb up the call stack and pick the first
568      frame that contains the variable we are looking for.  */
569   if (frame == NULL)
570     {
571       frame = block_innermost_frame (var_block);
572       if (frame == NULL)
573         {
574           if (BLOCK_FUNCTION (var_block)
575               && !block_inlined_p (var_block)
576               && BLOCK_FUNCTION (var_block)->print_name ())
577             error (_("No frame is currently executing in block %s."),
578                    BLOCK_FUNCTION (var_block)->print_name ());
579           else
580             error (_("No frame is currently executing in specified"
581                      " block"));
582         }
583     }
584
585   return frame;
586 }
587
588 /* See language.h.  */
589
590 struct value *
591 language_defn::read_var_value (struct symbol *var,
592                                const struct block *var_block,
593                                struct frame_info *frame) const
594 {
595   struct value *v;
596   struct type *type = SYMBOL_TYPE (var);
597   CORE_ADDR addr;
598   enum symbol_needs_kind sym_need;
599
600   /* Call check_typedef on our type to make sure that, if TYPE is
601      a TYPE_CODE_TYPEDEF, its length is set to the length of the target type
602      instead of zero.  However, we do not replace the typedef type by the
603      target type, because we want to keep the typedef in order to be able to
604      set the returned value type description correctly.  */
605   check_typedef (type);
606
607   sym_need = symbol_read_needs (var);
608   if (sym_need == SYMBOL_NEEDS_FRAME)
609     gdb_assert (frame != NULL);
610   else if (sym_need == SYMBOL_NEEDS_REGISTERS && !target_has_registers ())
611     error (_("Cannot read `%s' without registers"), var->print_name ());
612
613   if (frame != NULL)
614     frame = get_hosting_frame (var, var_block, frame);
615
616   if (SYMBOL_COMPUTED_OPS (var) != NULL)
617     return SYMBOL_COMPUTED_OPS (var)->read_variable (var, frame);
618
619   switch (var->aclass ())
620     {
621     case LOC_CONST:
622       if (is_dynamic_type (type))
623         {
624           /* Value is a constant byte-sequence and needs no memory access.  */
625           type = resolve_dynamic_type (type, {}, /* Unused address.  */ 0);
626         }
627       /* Put the constant back in target format. */
628       v = allocate_value (type);
629       store_signed_integer (value_contents_raw (v).data (), TYPE_LENGTH (type),
630                             type_byte_order (type),
631                             (LONGEST) SYMBOL_VALUE (var));
632       VALUE_LVAL (v) = not_lval;
633       return v;
634
635     case LOC_LABEL:
636       /* Put the constant back in target format.  */
637       v = allocate_value (type);
638       if (overlay_debugging)
639         {
640           struct objfile *var_objfile = symbol_objfile (var);
641           addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
642                                            var->obj_section (var_objfile));
643           store_typed_address (value_contents_raw (v).data (), type, addr);
644         }
645       else
646         store_typed_address (value_contents_raw (v).data (), type,
647                               SYMBOL_VALUE_ADDRESS (var));
648       VALUE_LVAL (v) = not_lval;
649       return v;
650
651     case LOC_CONST_BYTES:
652       if (is_dynamic_type (type))
653         {
654           /* Value is a constant byte-sequence and needs no memory access.  */
655           type = resolve_dynamic_type (type, {}, /* Unused address.  */ 0);
656         }
657       v = allocate_value (type);
658       memcpy (value_contents_raw (v).data (), SYMBOL_VALUE_BYTES (var),
659               TYPE_LENGTH (type));
660       VALUE_LVAL (v) = not_lval;
661       return v;
662
663     case LOC_STATIC:
664       if (overlay_debugging)
665         addr
666           = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
667                                       var->obj_section (symbol_objfile (var)));
668       else
669         addr = SYMBOL_VALUE_ADDRESS (var);
670       break;
671
672     case LOC_ARG:
673       addr = get_frame_args_address (frame);
674       if (!addr)
675         error (_("Unknown argument list address for `%s'."),
676                var->print_name ());
677       addr += SYMBOL_VALUE (var);
678       break;
679
680     case LOC_REF_ARG:
681       {
682         struct value *ref;
683         CORE_ADDR argref;
684
685         argref = get_frame_args_address (frame);
686         if (!argref)
687           error (_("Unknown argument list address for `%s'."),
688                  var->print_name ());
689         argref += SYMBOL_VALUE (var);
690         ref = value_at (lookup_pointer_type (type), argref);
691         addr = value_as_address (ref);
692         break;
693       }
694
695     case LOC_LOCAL:
696       addr = get_frame_locals_address (frame);
697       addr += SYMBOL_VALUE (var);
698       break;
699
700     case LOC_TYPEDEF:
701       error (_("Cannot look up value of a typedef `%s'."),
702              var->print_name ());
703       break;
704
705     case LOC_BLOCK:
706       if (overlay_debugging)
707         addr = symbol_overlayed_address
708           (BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (var)),
709            var->obj_section (symbol_objfile (var)));
710       else
711         addr = BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (var));
712       break;
713
714     case LOC_REGISTER:
715     case LOC_REGPARM_ADDR:
716       {
717         int regno = SYMBOL_REGISTER_OPS (var)
718                       ->register_number (var, get_frame_arch (frame));
719         struct value *regval;
720
721         if (var->aclass () == LOC_REGPARM_ADDR)
722           {
723             regval = value_from_register (lookup_pointer_type (type),
724                                           regno,
725                                           frame);
726
727             if (regval == NULL)
728               error (_("Value of register variable not available for `%s'."),
729                      var->print_name ());
730
731             addr = value_as_address (regval);
732           }
733         else
734           {
735             regval = value_from_register (type, regno, frame);
736
737             if (regval == NULL)
738               error (_("Value of register variable not available for `%s'."),
739                      var->print_name ());
740             return regval;
741           }
742       }
743       break;
744
745     case LOC_COMPUTED:
746       gdb_assert_not_reached ("LOC_COMPUTED variable missing a method");
747
748     case LOC_UNRESOLVED:
749       {
750         struct minsym_lookup_data lookup_data;
751         struct minimal_symbol *msym;
752         struct obj_section *obj_section;
753
754         memset (&lookup_data, 0, sizeof (lookup_data));
755         lookup_data.name = var->linkage_name ();
756
757         gdbarch_iterate_over_objfiles_in_search_order
758           (symbol_arch (var),
759            minsym_lookup_iterator_cb, &lookup_data,
760            symbol_objfile (var));
761         msym = lookup_data.result.minsym;
762
763         /* If we can't find the minsym there's a problem in the symbol info.
764            The symbol exists in the debug info, but it's missing in the minsym
765            table.  */
766         if (msym == NULL)
767           {
768             const char *flavour_name
769               = objfile_flavour_name (symbol_objfile (var));
770
771             /* We can't get here unless we've opened the file, so flavour_name
772                can't be NULL.  */
773             gdb_assert (flavour_name != NULL);
774             error (_("Missing %s symbol \"%s\"."),
775                    flavour_name, var->linkage_name ());
776           }
777         obj_section = msym->obj_section (lookup_data.result.objfile);
778         /* Relocate address, unless there is no section or the variable is
779            a TLS variable. */
780         if (obj_section == NULL
781             || (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
782            addr = MSYMBOL_VALUE_RAW_ADDRESS (msym);
783         else
784            addr = BMSYMBOL_VALUE_ADDRESS (lookup_data.result);
785         if (overlay_debugging)
786           addr = symbol_overlayed_address (addr, obj_section);
787         /* Determine address of TLS variable. */
788         if (obj_section
789             && (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
790           addr = target_translate_tls_address (obj_section->objfile, addr);
791       }
792       break;
793
794     case LOC_OPTIMIZED_OUT:
795       if (is_dynamic_type (type))
796         type = resolve_dynamic_type (type, {}, /* Unused address.  */ 0);
797       return allocate_optimized_out_value (type);
798
799     default:
800       error (_("Cannot look up value of a botched symbol `%s'."),
801              var->print_name ());
802       break;
803     }
804
805   v = value_at_lazy (type, addr);
806   return v;
807 }
808
809 /* Calls VAR's language read_var_value hook with the given arguments.  */
810
811 struct value *
812 read_var_value (struct symbol *var, const struct block *var_block,
813                 struct frame_info *frame)
814 {
815   const struct language_defn *lang = language_def (var->language ());
816
817   gdb_assert (lang != NULL);
818
819   return lang->read_var_value (var, var_block, frame);
820 }
821
822 /* Install default attributes for register values.  */
823
824 struct value *
825 default_value_from_register (struct gdbarch *gdbarch, struct type *type,
826                              int regnum, struct frame_id frame_id)
827 {
828   int len = TYPE_LENGTH (type);
829   struct value *value = allocate_value (type);
830   struct frame_info *frame;
831
832   VALUE_LVAL (value) = lval_register;
833   frame = frame_find_by_id (frame_id);
834
835   if (frame == NULL)
836     frame_id = null_frame_id;
837   else
838     frame_id = get_frame_id (get_next_frame_sentinel_okay (frame));
839
840   VALUE_NEXT_FRAME_ID (value) = frame_id;
841   VALUE_REGNUM (value) = regnum;
842
843   /* Any structure stored in more than one register will always be
844      an integral number of registers.  Otherwise, you need to do
845      some fiddling with the last register copied here for little
846      endian machines.  */
847   if (type_byte_order (type) == BFD_ENDIAN_BIG
848       && len < register_size (gdbarch, regnum))
849     /* Big-endian, and we want less than full size.  */
850     set_value_offset (value, register_size (gdbarch, regnum) - len);
851   else
852     set_value_offset (value, 0);
853
854   return value;
855 }
856
857 /* VALUE must be an lval_register value.  If regnum is the value's
858    associated register number, and len the length of the values type,
859    read one or more registers in FRAME, starting with register REGNUM,
860    until we've read LEN bytes.
861
862    If any of the registers we try to read are optimized out, then mark the
863    complete resulting value as optimized out.  */
864
865 void
866 read_frame_register_value (struct value *value, struct frame_info *frame)
867 {
868   struct gdbarch *gdbarch = get_frame_arch (frame);
869   LONGEST offset = 0;
870   LONGEST reg_offset = value_offset (value);
871   int regnum = VALUE_REGNUM (value);
872   int len = type_length_units (check_typedef (value_type (value)));
873
874   gdb_assert (VALUE_LVAL (value) == lval_register);
875
876   /* Skip registers wholly inside of REG_OFFSET.  */
877   while (reg_offset >= register_size (gdbarch, regnum))
878     {
879       reg_offset -= register_size (gdbarch, regnum);
880       regnum++;
881     }
882
883   /* Copy the data.  */
884   while (len > 0)
885     {
886       struct value *regval = get_frame_register_value (frame, regnum);
887       int reg_len = type_length_units (value_type (regval)) - reg_offset;
888
889       /* If the register length is larger than the number of bytes
890          remaining to copy, then only copy the appropriate bytes.  */
891       if (reg_len > len)
892         reg_len = len;
893
894       value_contents_copy (value, offset, regval, reg_offset, reg_len);
895
896       offset += reg_len;
897       len -= reg_len;
898       reg_offset = 0;
899       regnum++;
900     }
901 }
902
903 /* Return a value of type TYPE, stored in register REGNUM, in frame FRAME.  */
904
905 struct value *
906 value_from_register (struct type *type, int regnum, struct frame_info *frame)
907 {
908   struct gdbarch *gdbarch = get_frame_arch (frame);
909   struct type *type1 = check_typedef (type);
910   struct value *v;
911
912   if (gdbarch_convert_register_p (gdbarch, regnum, type1))
913     {
914       int optim, unavail, ok;
915
916       /* The ISA/ABI need to something weird when obtaining the
917          specified value from this register.  It might need to
918          re-order non-adjacent, starting with REGNUM (see MIPS and
919          i386).  It might need to convert the [float] register into
920          the corresponding [integer] type (see Alpha).  The assumption
921          is that gdbarch_register_to_value populates the entire value
922          including the location.  */
923       v = allocate_value (type);
924       VALUE_LVAL (v) = lval_register;
925       VALUE_NEXT_FRAME_ID (v) = get_frame_id (get_next_frame_sentinel_okay (frame));
926       VALUE_REGNUM (v) = regnum;
927       ok = gdbarch_register_to_value (gdbarch, frame, regnum, type1,
928                                       value_contents_raw (v).data (), &optim,
929                                       &unavail);
930
931       if (!ok)
932         {
933           if (optim)
934             mark_value_bytes_optimized_out (v, 0, TYPE_LENGTH (type));
935           if (unavail)
936             mark_value_bytes_unavailable (v, 0, TYPE_LENGTH (type));
937         }
938     }
939   else
940     {
941       /* Construct the value.  */
942       v = gdbarch_value_from_register (gdbarch, type,
943                                        regnum, get_frame_id (frame));
944
945       /* Get the data.  */
946       read_frame_register_value (v, frame);
947     }
948
949   return v;
950 }
951
952 /* Return contents of register REGNUM in frame FRAME as address.
953    Will abort if register value is not available.  */
954
955 CORE_ADDR
956 address_from_register (int regnum, struct frame_info *frame)
957 {
958   struct gdbarch *gdbarch = get_frame_arch (frame);
959   struct type *type = builtin_type (gdbarch)->builtin_data_ptr;
960   struct value *value;
961   CORE_ADDR result;
962   int regnum_max_excl = gdbarch_num_cooked_regs (gdbarch);
963
964   if (regnum < 0 || regnum >= regnum_max_excl)
965     error (_("Invalid register #%d, expecting 0 <= # < %d"), regnum,
966            regnum_max_excl);
967
968   /* This routine may be called during early unwinding, at a time
969      where the ID of FRAME is not yet known.  Calling value_from_register
970      would therefore abort in get_frame_id.  However, since we only need
971      a temporary value that is never used as lvalue, we actually do not
972      really need to set its VALUE_NEXT_FRAME_ID.  Therefore, we re-implement
973      the core of value_from_register, but use the null_frame_id.  */
974
975   /* Some targets require a special conversion routine even for plain
976      pointer types.  Avoid constructing a value object in those cases.  */
977   if (gdbarch_convert_register_p (gdbarch, regnum, type))
978     {
979       gdb_byte *buf = (gdb_byte *) alloca (TYPE_LENGTH (type));
980       int optim, unavail, ok;
981
982       ok = gdbarch_register_to_value (gdbarch, frame, regnum, type,
983                                       buf, &optim, &unavail);
984       if (!ok)
985         {
986           /* This function is used while computing a location expression.
987              Complain about the value being optimized out, rather than
988              letting value_as_address complain about some random register
989              the expression depends on not being saved.  */
990           error_value_optimized_out ();
991         }
992
993       return unpack_long (type, buf);
994     }
995
996   value = gdbarch_value_from_register (gdbarch, type, regnum, null_frame_id);
997   read_frame_register_value (value, frame);
998
999   if (value_optimized_out (value))
1000     {
1001       /* This function is used while computing a location expression.
1002          Complain about the value being optimized out, rather than
1003          letting value_as_address complain about some random register
1004          the expression depends on not being saved.  */
1005       error_value_optimized_out ();
1006     }
1007
1008   result = value_as_address (value);
1009   release_value (value);
1010
1011   return result;
1012 }
1013
1014 #if GDB_SELF_TEST
1015 namespace selftests {
1016 namespace findvar_tests {
1017
1018 /* Function to test copy_integer_to_size.  Store SOURCE_VAL with size
1019    SOURCE_SIZE to a buffer, making sure no sign extending happens at this
1020    stage.  Copy buffer to a new buffer using copy_integer_to_size.  Extract
1021    copied value and compare to DEST_VALU.  Copy again with a signed
1022    copy_integer_to_size and compare to DEST_VALS.  Do everything for both
1023    LITTLE and BIG target endians.  Use unsigned values throughout to make
1024    sure there are no implicit sign extensions.  */
1025
1026 static void
1027 do_cint_test (ULONGEST dest_valu, ULONGEST dest_vals, int dest_size,
1028               ULONGEST src_val, int src_size)
1029 {
1030   for (int i = 0; i < 2 ; i++)
1031     {
1032       gdb_byte srcbuf[sizeof (ULONGEST)] = {};
1033       gdb_byte destbuf[sizeof (ULONGEST)] = {};
1034       enum bfd_endian byte_order = i ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
1035
1036       /* Fill the src buffer (and later the dest buffer) with non-zero junk,
1037          to ensure zero extensions aren't hidden.  */
1038       memset (srcbuf, 0xaa, sizeof (srcbuf));
1039
1040       /* Store (and later extract) using unsigned to ensure there are no sign
1041          extensions.  */
1042       store_unsigned_integer (srcbuf, src_size, byte_order, src_val);
1043
1044       /* Test unsigned.  */
1045       memset (destbuf, 0xaa, sizeof (destbuf));
1046       copy_integer_to_size (destbuf, dest_size, srcbuf, src_size, false,
1047                             byte_order);
1048       SELF_CHECK (dest_valu == extract_unsigned_integer (destbuf, dest_size,
1049                                                          byte_order));
1050
1051       /* Test signed.  */
1052       memset (destbuf, 0xaa, sizeof (destbuf));
1053       copy_integer_to_size (destbuf, dest_size, srcbuf, src_size, true,
1054                             byte_order);
1055       SELF_CHECK (dest_vals == extract_unsigned_integer (destbuf, dest_size,
1056                                                          byte_order));
1057     }
1058 }
1059
1060 static void
1061 copy_integer_to_size_test ()
1062 {
1063   /* Destination is bigger than the source, which has the signed bit unset.  */
1064   do_cint_test (0x12345678, 0x12345678, 8, 0x12345678, 4);
1065   do_cint_test (0x345678, 0x345678, 8, 0x12345678, 3);
1066
1067   /* Destination is bigger than the source, which has the signed bit set.  */
1068   do_cint_test (0xdeadbeef, 0xffffffffdeadbeef, 8, 0xdeadbeef, 4);
1069   do_cint_test (0xadbeef, 0xffffffffffadbeef, 8, 0xdeadbeef, 3);
1070
1071   /* Destination is smaller than the source.  */
1072   do_cint_test (0x5678, 0x5678, 2, 0x12345678, 3);
1073   do_cint_test (0xbeef, 0xbeef, 2, 0xdeadbeef, 3);
1074
1075   /* Destination and source are the same size.  */
1076   do_cint_test (0x8765432112345678, 0x8765432112345678, 8, 0x8765432112345678,
1077                 8);
1078   do_cint_test (0x432112345678, 0x432112345678, 6, 0x8765432112345678, 6);
1079   do_cint_test (0xfeedbeaddeadbeef, 0xfeedbeaddeadbeef, 8, 0xfeedbeaddeadbeef,
1080                 8);
1081   do_cint_test (0xbeaddeadbeef, 0xbeaddeadbeef, 6, 0xfeedbeaddeadbeef, 6);
1082
1083   /* Destination is bigger than the source.  Source is bigger than 32bits.  */
1084   do_cint_test (0x3412345678, 0x3412345678, 8, 0x3412345678, 6);
1085   do_cint_test (0xff12345678, 0xff12345678, 8, 0xff12345678, 6);
1086   do_cint_test (0x432112345678, 0x432112345678, 8, 0x8765432112345678, 6);
1087   do_cint_test (0xff2112345678, 0xffffff2112345678, 8, 0xffffff2112345678, 6);
1088 }
1089
1090 } // namespace findvar_test
1091 } // namespace selftests
1092
1093 #endif
1094
1095 void _initialize_findvar ();
1096 void
1097 _initialize_findvar ()
1098 {
1099 #if GDB_SELF_TEST
1100   selftests::register_test
1101     ("copy_integer_to_size",
1102      selftests::findvar_tests::copy_integer_to_size_test);
1103 #endif
1104 }
This page took 0.086921 seconds and 4 git commands to generate.