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