xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/ada-varobj.c (revision a24efa7dea9f1f56c3bdb15a927d3516792ace1c)
1 /* varobj support for Ada.
2 
3    Copyright (C) 2012-2015 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 "ada-lang.h"
22 #include "varobj.h"
23 #include "language.h"
24 #include "valprint.h"
25 
26 /* Implementation principle used in this unit:
27 
28    For our purposes, the meat of the varobj object is made of two
29    elements: The varobj's (struct) value, and the varobj's (struct)
30    type.  In most situations, the varobj has a non-NULL value, and
31    the type becomes redundant, as it can be directly derived from
32    the value.  In the initial implementation of this unit, most
33    routines would only take a value, and return a value.
34 
35    But there are many situations where it is possible for a varobj
36    to have a NULL value.  For instance, if the varobj becomes out of
37    scope.  Or better yet, when the varobj is the child of another
38    NULL pointer varobj.  In that situation, we must rely on the type
39    instead of the value to create the child varobj.
40 
41    That's why most functions below work with a (value, type) pair.
42    The value may or may not be NULL.  But the type is always expected
43    to be set.  When the value is NULL, then we work with the type
44    alone, and keep the value NULL.  But when the value is not NULL,
45    then we work using the value, because it provides more information.
46    But we still always set the type as well, even if that type could
47    easily be derived from the value.  The reason behind this is that
48    it allows the code to use the type without having to worry about
49    it being set or not.  It makes the code clearer.  */
50 
51 static int ada_varobj_get_number_of_children (struct value *parent_value,
52 					      struct type *parent_type);
53 
54 /* A convenience function that decodes the VALUE_PTR/TYPE_PTR couple:
55    If there is a value (*VALUE_PTR not NULL), then perform the decoding
56    using it, and compute the associated type from the resulting value.
57    Otherwise, compute a static approximation of *TYPE_PTR, leaving
58    *VALUE_PTR unchanged.
59 
60    The results are written in place.  */
61 
62 static void
63 ada_varobj_decode_var (struct value **value_ptr, struct type **type_ptr)
64 {
65   if (*value_ptr)
66     {
67       *value_ptr = ada_get_decoded_value (*value_ptr);
68       *type_ptr = ada_check_typedef (value_type (*value_ptr));
69     }
70   else
71     *type_ptr = ada_get_decoded_type (*type_ptr);
72 }
73 
74 /* Return a string containing an image of the given scalar value.
75    VAL is the numeric value, while TYPE is the value's type.
76    This is useful for plain integers, of course, but even more
77    so for enumerated types.
78 
79    The result should be deallocated by xfree after use.  */
80 
81 static char *
82 ada_varobj_scalar_image (struct type *type, LONGEST val)
83 {
84   struct ui_file *buf = mem_fileopen ();
85   struct cleanup *cleanups = make_cleanup_ui_file_delete (buf);
86   char *result;
87 
88   ada_print_scalar (type, val, buf);
89   result = ui_file_xstrdup (buf, NULL);
90   do_cleanups (cleanups);
91 
92   return result;
93 }
94 
95 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair designates
96    a struct or union, compute the (CHILD_VALUE, CHILD_TYPE) couple
97    corresponding to the field number FIELDNO.  */
98 
99 static void
100 ada_varobj_struct_elt (struct value *parent_value,
101 		       struct type *parent_type,
102 		       int fieldno,
103 		       struct value **child_value,
104 		       struct type **child_type)
105 {
106   struct value *value = NULL;
107   struct type *type = NULL;
108 
109   if (parent_value)
110     {
111       value = value_field (parent_value, fieldno);
112       type = value_type (value);
113     }
114   else
115     type = TYPE_FIELD_TYPE (parent_type, fieldno);
116 
117   if (child_value)
118     *child_value = value;
119   if (child_type)
120     *child_type = type;
121 }
122 
123 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a pointer or
124    reference, return a (CHILD_VALUE, CHILD_TYPE) couple corresponding
125    to the dereferenced value.  */
126 
127 static void
128 ada_varobj_ind (struct value *parent_value,
129 		struct type *parent_type,
130 		struct value **child_value,
131 		struct type **child_type)
132 {
133   struct value *value = NULL;
134   struct type *type = NULL;
135 
136   if (ada_is_array_descriptor_type (parent_type))
137     {
138       /* This can only happen when PARENT_VALUE is NULL.  Otherwise,
139 	 ada_get_decoded_value would have transformed our parent_type
140 	 into a simple array pointer type.  */
141       gdb_assert (parent_value == NULL);
142       gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF);
143 
144       /* Decode parent_type by the equivalent pointer to (decoded)
145 	 array.  */
146       while (TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
147 	parent_type = TYPE_TARGET_TYPE (parent_type);
148       parent_type = ada_coerce_to_simple_array_type (parent_type);
149       parent_type = lookup_pointer_type (parent_type);
150     }
151 
152   /* If parent_value is a null pointer, then only perform static
153      dereferencing.  We cannot dereference null pointers.  */
154   if (parent_value && value_as_address (parent_value) == 0)
155     parent_value = NULL;
156 
157   if (parent_value)
158     {
159       value = ada_value_ind (parent_value);
160       type = value_type (value);
161     }
162   else
163     type = TYPE_TARGET_TYPE (parent_type);
164 
165   if (child_value)
166     *child_value = value;
167   if (child_type)
168     *child_type = type;
169 }
170 
171 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a simple
172    array (TYPE_CODE_ARRAY), return the (CHILD_VALUE, CHILD_TYPE)
173    pair corresponding to the element at ELT_INDEX.  */
174 
175 static void
176 ada_varobj_simple_array_elt (struct value *parent_value,
177 			     struct type *parent_type,
178 			     int elt_index,
179 			     struct value **child_value,
180 			     struct type **child_type)
181 {
182   struct value *value = NULL;
183   struct type *type = NULL;
184 
185   if (parent_value)
186     {
187       struct value *index_value =
188 	value_from_longest (TYPE_INDEX_TYPE (parent_type), elt_index);
189 
190       value = ada_value_subscript (parent_value, 1, &index_value);
191       type = value_type (value);
192     }
193   else
194     type = TYPE_TARGET_TYPE (parent_type);
195 
196   if (child_value)
197     *child_value = value;
198   if (child_type)
199     *child_type = type;
200 }
201 
202 /* Given the decoded value and decoded type of a variable object,
203    adjust the value and type to those necessary for getting children
204    of the variable object.
205 
206    The replacement is performed in place.  */
207 
208 static void
209 ada_varobj_adjust_for_child_access (struct value **value,
210 				    struct type **type)
211 {
212    /* Pointers to struct/union types are special: Instead of having
213       one child (the struct), their children are the components of
214       the struct/union type.  We handle this situation by dereferencing
215       the (value, type) couple.  */
216   if (TYPE_CODE (*type) == TYPE_CODE_PTR
217       && (TYPE_CODE (TYPE_TARGET_TYPE (*type)) == TYPE_CODE_STRUCT
218           || TYPE_CODE (TYPE_TARGET_TYPE (*type)) == TYPE_CODE_UNION)
219       && !ada_is_array_descriptor_type (TYPE_TARGET_TYPE (*type))
220       && !ada_is_constrained_packed_array_type (TYPE_TARGET_TYPE (*type)))
221     ada_varobj_ind (*value, *type, value, type);
222 
223   /* If this is a tagged type, we need to transform it a bit in order
224      to be able to fetch its full view.  As always with tagged types,
225      we can only do that if we have a value.  */
226   if (*value != NULL && ada_is_tagged_type (*type, 1))
227     {
228       *value = ada_tag_value_at_base_address (*value);
229       *type = value_type (*value);
230     }
231 }
232 
233 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is an array
234    (any type of array, "simple" or not), return the number of children
235    that this array contains.  */
236 
237 static int
238 ada_varobj_get_array_number_of_children (struct value *parent_value,
239 					 struct type *parent_type)
240 {
241   LONGEST lo, hi;
242 
243   if (!get_array_bounds (parent_type, &lo, &hi))
244     {
245       /* Could not get the array bounds.  Pretend this is an empty array.  */
246       warning (_("unable to get bounds of array, assuming null array"));
247       return 0;
248     }
249 
250   /* Ada allows the upper bound to be less than the lower bound,
251      in order to specify empty arrays...  */
252   if (hi < lo)
253     return 0;
254 
255   return hi - lo + 1;
256 }
257 
258 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a struct or
259    union, return the number of children this struct contains.  */
260 
261 static int
262 ada_varobj_get_struct_number_of_children (struct value *parent_value,
263 					  struct type *parent_type)
264 {
265   int n_children = 0;
266   int i;
267 
268   gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
269 	      || TYPE_CODE (parent_type) == TYPE_CODE_UNION);
270 
271   for (i = 0; i < TYPE_NFIELDS (parent_type); i++)
272     {
273       if (ada_is_ignored_field (parent_type, i))
274 	continue;
275 
276       if (ada_is_wrapper_field (parent_type, i))
277 	{
278 	  struct value *elt_value;
279 	  struct type *elt_type;
280 
281 	  ada_varobj_struct_elt (parent_value, parent_type, i,
282 				 &elt_value, &elt_type);
283 	  if (ada_is_tagged_type (elt_type, 0))
284 	    {
285 	      /* We must not use ada_varobj_get_number_of_children
286 		 to determine is element's number of children, because
287 		 this function first calls ada_varobj_decode_var,
288 		 which "fixes" the element.  For tagged types, this
289 		 includes reading the object's tag to determine its
290 		 real type, which happens to be the parent_type, and
291 		 leads to an infinite loop (because the element gets
292 		 fixed back into the parent).  */
293 	      n_children += ada_varobj_get_struct_number_of_children
294 		(elt_value, elt_type);
295 	    }
296 	  else
297 	    n_children += ada_varobj_get_number_of_children (elt_value, elt_type);
298 	}
299       else if (ada_is_variant_part (parent_type, i))
300 	{
301 	  /* In normal situations, the variant part of the record should
302 	     have been "fixed". Or, in other words, it should have been
303 	     replaced by the branch of the variant part that is relevant
304 	     for our value.  But there are still situations where this
305 	     can happen, however (Eg. when our parent is a NULL pointer).
306 	     We do not support showing this part of the record for now,
307 	     so just pretend this field does not exist.  */
308 	}
309       else
310 	n_children++;
311     }
312 
313   return n_children;
314 }
315 
316 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair designates
317    a pointer, return the number of children this pointer has.  */
318 
319 static int
320 ada_varobj_get_ptr_number_of_children (struct value *parent_value,
321 				       struct type *parent_type)
322 {
323   struct type *child_type = TYPE_TARGET_TYPE (parent_type);
324 
325   /* Pointer to functions and to void do not have a child, since
326      you cannot print what they point to.  */
327   if (TYPE_CODE (child_type) == TYPE_CODE_FUNC
328       || TYPE_CODE (child_type) == TYPE_CODE_VOID)
329     return 0;
330 
331   /* All other types have 1 child.  */
332   return 1;
333 }
334 
335 /* Return the number of children for the (PARENT_VALUE, PARENT_TYPE)
336    pair.  */
337 
338 static int
339 ada_varobj_get_number_of_children (struct value *parent_value,
340 				   struct type *parent_type)
341 {
342   ada_varobj_decode_var (&parent_value, &parent_type);
343   ada_varobj_adjust_for_child_access (&parent_value, &parent_type);
344 
345   /* A typedef to an array descriptor in fact represents a pointer
346      to an unconstrained array.  These types always have one child
347      (the unconstrained array).  */
348   if (ada_is_array_descriptor_type (parent_type)
349       && TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
350     return 1;
351 
352   if (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY)
353     return ada_varobj_get_array_number_of_children (parent_value,
354 						    parent_type);
355 
356   if (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
357       || TYPE_CODE (parent_type) == TYPE_CODE_UNION)
358     return ada_varobj_get_struct_number_of_children (parent_value,
359 						     parent_type);
360 
361   if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
362     return ada_varobj_get_ptr_number_of_children (parent_value,
363 						  parent_type);
364 
365   /* All other types have no child.  */
366   return 0;
367 }
368 
369 /* Describe the child of the (PARENT_VALUE, PARENT_TYPE) pair
370    whose index is CHILD_INDEX:
371 
372      - If CHILD_NAME is not NULL, then a copy of the child's name
373        is saved in *CHILD_NAME.  This copy must be deallocated
374        with xfree after use.
375 
376      - If CHILD_VALUE is not NULL, then save the child's value
377        in *CHILD_VALUE. Same thing for the child's type with
378        CHILD_TYPE if not NULL.
379 
380      - If CHILD_PATH_EXPR is not NULL, then compute the child's
381        path expression.  The resulting string must be deallocated
382        after use with xfree.
383 
384        Computing the child's path expression requires the PARENT_PATH_EXPR
385        to be non-NULL.  Otherwise, PARENT_PATH_EXPR may be null if
386        CHILD_PATH_EXPR is NULL.
387 
388   PARENT_NAME is the name of the parent, and should never be NULL.  */
389 
390 static void ada_varobj_describe_child (struct value *parent_value,
391 				       struct type *parent_type,
392 				       const char *parent_name,
393 				       const char *parent_path_expr,
394 				       int child_index,
395 				       char **child_name,
396 				       struct value **child_value,
397 				       struct type **child_type,
398 				       char **child_path_expr);
399 
400 /* Same as ada_varobj_describe_child, but limited to struct/union
401    objects.  */
402 
403 static void
404 ada_varobj_describe_struct_child (struct value *parent_value,
405 				  struct type *parent_type,
406 				  const char *parent_name,
407 				  const char *parent_path_expr,
408 				  int child_index,
409 				  char **child_name,
410 				  struct value **child_value,
411 				  struct type **child_type,
412 				  char **child_path_expr)
413 {
414   int fieldno;
415   int childno = 0;
416 
417   gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT);
418 
419   for (fieldno = 0; fieldno < TYPE_NFIELDS (parent_type); fieldno++)
420     {
421       if (ada_is_ignored_field (parent_type, fieldno))
422 	continue;
423 
424       if (ada_is_wrapper_field (parent_type, fieldno))
425 	{
426 	  struct value *elt_value;
427 	  struct type *elt_type;
428 	  int elt_n_children;
429 
430 	  ada_varobj_struct_elt (parent_value, parent_type, fieldno,
431 				 &elt_value, &elt_type);
432 	  if (ada_is_tagged_type (elt_type, 0))
433 	    {
434 	      /* Same as in ada_varobj_get_struct_number_of_children:
435 		 For tagged types, we must be careful to not call
436 		 ada_varobj_get_number_of_children, to prevent our
437 		 element from being fixed back into the parent.  */
438 	      elt_n_children = ada_varobj_get_struct_number_of_children
439 		(elt_value, elt_type);
440 	    }
441 	  else
442 	    elt_n_children =
443 	      ada_varobj_get_number_of_children (elt_value, elt_type);
444 
445 	  /* Is the child we're looking for one of the children
446 	     of this wrapper field?  */
447 	  if (child_index - childno < elt_n_children)
448 	    {
449 	      if (ada_is_tagged_type (elt_type, 0))
450 		{
451 		  /* Same as in ada_varobj_get_struct_number_of_children:
452 		     For tagged types, we must be careful to not call
453 		     ada_varobj_describe_child, to prevent our element
454 		     from being fixed back into the parent.  */
455 		  ada_varobj_describe_struct_child
456 		    (elt_value, elt_type, parent_name, parent_path_expr,
457 		     child_index - childno, child_name, child_value,
458 		     child_type, child_path_expr);
459 		}
460 	      else
461 		ada_varobj_describe_child (elt_value, elt_type,
462 					   parent_name, parent_path_expr,
463 					   child_index - childno,
464 					   child_name, child_value,
465 					   child_type, child_path_expr);
466 	      return;
467 	    }
468 
469 	  /* The child we're looking for is beyond this wrapper
470 	     field, so skip all its children.  */
471 	  childno += elt_n_children;
472 	  continue;
473 	}
474       else if (ada_is_variant_part (parent_type, fieldno))
475 	{
476 	  /* In normal situations, the variant part of the record should
477 	     have been "fixed". Or, in other words, it should have been
478 	     replaced by the branch of the variant part that is relevant
479 	     for our value.  But there are still situations where this
480 	     can happen, however (Eg. when our parent is a NULL pointer).
481 	     We do not support showing this part of the record for now,
482 	     so just pretend this field does not exist.  */
483 	  continue;
484 	}
485 
486       if (childno == child_index)
487 	{
488 	  if (child_name)
489 	    {
490 	      /* The name of the child is none other than the field's
491 		 name, except that we need to strip suffixes from it.
492 		 For instance, fields with alignment constraints will
493 		 have an __XVA suffix added to them.  */
494 	      const char *field_name = TYPE_FIELD_NAME (parent_type, fieldno);
495 	      int child_name_len = ada_name_prefix_len (field_name);
496 
497 	      *child_name = xstrprintf ("%.*s", child_name_len, field_name);
498 	    }
499 
500 	  if (child_value && parent_value)
501 	    ada_varobj_struct_elt (parent_value, parent_type, fieldno,
502 				   child_value, NULL);
503 
504 	  if (child_type)
505 	    ada_varobj_struct_elt (parent_value, parent_type, fieldno,
506 				   NULL, child_type);
507 
508 	  if (child_path_expr)
509 	    {
510 	      /* The name of the child is none other than the field's
511 		 name, except that we need to strip suffixes from it.
512 		 For instance, fields with alignment constraints will
513 		 have an __XVA suffix added to them.  */
514 	      const char *field_name = TYPE_FIELD_NAME (parent_type, fieldno);
515 	      int child_name_len = ada_name_prefix_len (field_name);
516 
517 	      *child_path_expr =
518 		xstrprintf ("(%s).%.*s", parent_path_expr,
519 			    child_name_len, field_name);
520 	    }
521 
522 	  return;
523 	}
524 
525       childno++;
526     }
527 
528   /* Something went wrong.  Either we miscounted the number of
529      children, or CHILD_INDEX was too high.  But we should never
530      reach here.  We don't have enough information to recover
531      nicely, so just raise an assertion failure.  */
532   gdb_assert_not_reached ("unexpected code path");
533 }
534 
535 /* Same as ada_varobj_describe_child, but limited to pointer objects.
536 
537    Note that CHILD_INDEX is unused in this situation, but still provided
538    for consistency of interface with other routines describing an object's
539    child.  */
540 
541 static void
542 ada_varobj_describe_ptr_child (struct value *parent_value,
543 			       struct type *parent_type,
544 			       const char *parent_name,
545 			       const char *parent_path_expr,
546 			       int child_index,
547 			       char **child_name,
548 			       struct value **child_value,
549 			       struct type **child_type,
550 			       char **child_path_expr)
551 {
552   if (child_name)
553     *child_name = xstrprintf ("%s.all", parent_name);
554 
555   if (child_value && parent_value)
556     ada_varobj_ind (parent_value, parent_type, child_value, NULL);
557 
558   if (child_type)
559     ada_varobj_ind (parent_value, parent_type, NULL, child_type);
560 
561   if (child_path_expr)
562     *child_path_expr = xstrprintf ("(%s).all", parent_path_expr);
563 }
564 
565 /* Same as ada_varobj_describe_child, limited to simple array objects
566    (TYPE_CODE_ARRAY only).
567 
568    Assumes that the (PARENT_VALUE, PARENT_TYPE) pair is properly decoded.
569    This is done by ada_varobj_describe_child before calling us.  */
570 
571 static void
572 ada_varobj_describe_simple_array_child (struct value *parent_value,
573 					struct type *parent_type,
574 					const char *parent_name,
575 					const char *parent_path_expr,
576 					int child_index,
577 					char **child_name,
578 					struct value **child_value,
579 					struct type **child_type,
580 					char **child_path_expr)
581 {
582   struct type *index_type;
583   int real_index;
584 
585   gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY);
586 
587   index_type = TYPE_INDEX_TYPE (parent_type);
588   real_index = child_index + ada_discrete_type_low_bound (index_type);
589 
590   if (child_name)
591     *child_name = ada_varobj_scalar_image (index_type, real_index);
592 
593   if (child_value && parent_value)
594     ada_varobj_simple_array_elt (parent_value, parent_type, real_index,
595 				 child_value, NULL);
596 
597   if (child_type)
598     ada_varobj_simple_array_elt (parent_value, parent_type, real_index,
599 				 NULL, child_type);
600 
601   if (child_path_expr)
602     {
603       char *index_img = ada_varobj_scalar_image (index_type, real_index);
604       struct cleanup *cleanups = make_cleanup (xfree, index_img);
605 
606       /* Enumeration litterals by themselves are potentially ambiguous.
607 	 For instance, consider the following package spec:
608 
609 	    package Pck is
610 	       type Color is (Red, Green, Blue, White);
611 	       type Blood_Cells is (White, Red);
612 	    end Pck;
613 
614 	 In this case, the litteral "red" for instance, or even
615 	 the fully-qualified litteral "pck.red" cannot be resolved
616 	 by itself.  Type qualification is needed to determine which
617 	 enumeration litterals should be used.
618 
619 	 The following variable will be used to contain the name
620 	 of the array index type when such type qualification is
621 	 needed.  */
622       const char *index_type_name = NULL;
623 
624       /* If the index type is a range type, find the base type.  */
625       while (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
626 	index_type = TYPE_TARGET_TYPE (index_type);
627 
628       if (TYPE_CODE (index_type) == TYPE_CODE_ENUM
629 	  || TYPE_CODE (index_type) == TYPE_CODE_BOOL)
630 	{
631 	  index_type_name = ada_type_name (index_type);
632 	  if (index_type_name)
633 	    index_type_name = ada_decode (index_type_name);
634 	}
635 
636       if (index_type_name != NULL)
637 	*child_path_expr =
638 	  xstrprintf ("(%s)(%.*s'(%s))", parent_path_expr,
639 		      ada_name_prefix_len (index_type_name),
640 		      index_type_name, index_img);
641       else
642 	*child_path_expr =
643 	  xstrprintf ("(%s)(%s)", parent_path_expr, index_img);
644       do_cleanups (cleanups);
645     }
646 }
647 
648 /* See description at declaration above.  */
649 
650 static void
651 ada_varobj_describe_child (struct value *parent_value,
652 			   struct type *parent_type,
653 			   const char *parent_name,
654 			   const char *parent_path_expr,
655 			   int child_index,
656 			   char **child_name,
657 			   struct value **child_value,
658 			   struct type **child_type,
659 			   char **child_path_expr)
660 {
661   /* We cannot compute the child's path expression without
662      the parent's path expression.  This is a pre-condition
663      for calling this function.  */
664   if (child_path_expr)
665     gdb_assert (parent_path_expr != NULL);
666 
667   ada_varobj_decode_var (&parent_value, &parent_type);
668   ada_varobj_adjust_for_child_access (&parent_value, &parent_type);
669 
670   if (child_name)
671     *child_name = NULL;
672   if (child_value)
673     *child_value = NULL;
674   if (child_type)
675     *child_type = NULL;
676   if (child_path_expr)
677     *child_path_expr = NULL;
678 
679   if (ada_is_array_descriptor_type (parent_type)
680       && TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
681     {
682       ada_varobj_describe_ptr_child (parent_value, parent_type,
683 				     parent_name, parent_path_expr,
684 				     child_index, child_name,
685 				     child_value, child_type,
686 				     child_path_expr);
687       return;
688     }
689 
690   if (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY)
691     {
692       ada_varobj_describe_simple_array_child
693 	(parent_value, parent_type, parent_name, parent_path_expr,
694 	 child_index, child_name, child_value, child_type,
695 	 child_path_expr);
696       return;
697     }
698 
699   if (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT)
700     {
701       ada_varobj_describe_struct_child (parent_value, parent_type,
702 					parent_name, parent_path_expr,
703 					child_index, child_name,
704 					child_value, child_type,
705 					child_path_expr);
706       return;
707     }
708 
709   if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
710     {
711       ada_varobj_describe_ptr_child (parent_value, parent_type,
712 				     parent_name, parent_path_expr,
713 				     child_index, child_name,
714 				     child_value, child_type,
715 				     child_path_expr);
716       return;
717     }
718 
719   /* It should never happen.  But rather than crash, report dummy names
720      and return a NULL child_value.  */
721   if (child_name)
722     *child_name = xstrdup ("???");
723 }
724 
725 /* Return the name of the child number CHILD_INDEX of the (PARENT_VALUE,
726    PARENT_TYPE) pair.  PARENT_NAME is the name of the PARENT.
727 
728    The result should be deallocated after use with xfree.  */
729 
730 static char *
731 ada_varobj_get_name_of_child (struct value *parent_value,
732 			      struct type *parent_type,
733 			      const char *parent_name, int child_index)
734 {
735   char *child_name;
736 
737   ada_varobj_describe_child (parent_value, parent_type, parent_name,
738 			     NULL, child_index, &child_name, NULL,
739 			     NULL, NULL);
740   return child_name;
741 }
742 
743 /* Return the path expression of the child number CHILD_INDEX of
744    the (PARENT_VALUE, PARENT_TYPE) pair.  PARENT_NAME is the name
745    of the parent, and PARENT_PATH_EXPR is the parent's path expression.
746    Both must be non-NULL.
747 
748    The result must be deallocated after use with xfree.  */
749 
750 static char *
751 ada_varobj_get_path_expr_of_child (struct value *parent_value,
752 				   struct type *parent_type,
753 				   const char *parent_name,
754 				   const char *parent_path_expr,
755 				   int child_index)
756 {
757   char *child_path_expr;
758 
759   ada_varobj_describe_child (parent_value, parent_type, parent_name,
760 			     parent_path_expr, child_index, NULL,
761 			     NULL, NULL, &child_path_expr);
762 
763   return child_path_expr;
764 }
765 
766 /* Return the value of child number CHILD_INDEX of the (PARENT_VALUE,
767    PARENT_TYPE) pair.  PARENT_NAME is the name of the parent.  */
768 
769 static struct value *
770 ada_varobj_get_value_of_child (struct value *parent_value,
771 			       struct type *parent_type,
772 			       const char *parent_name, int child_index)
773 {
774   struct value *child_value;
775 
776   ada_varobj_describe_child (parent_value, parent_type, parent_name,
777 			     NULL, child_index, NULL, &child_value,
778 			     NULL, NULL);
779 
780   return child_value;
781 }
782 
783 /* Return the type of child number CHILD_INDEX of the (PARENT_VALUE,
784    PARENT_TYPE) pair.  */
785 
786 static struct type *
787 ada_varobj_get_type_of_child (struct value *parent_value,
788 			      struct type *parent_type,
789 			      int child_index)
790 {
791   struct type *child_type;
792 
793   ada_varobj_describe_child (parent_value, parent_type, NULL, NULL,
794 			     child_index, NULL, NULL, &child_type, NULL);
795 
796   return child_type;
797 }
798 
799 /* Return a string that contains the image of the given VALUE, using
800    the print options OPTS as the options for formatting the result.
801 
802    The resulting string must be deallocated after use with xfree.  */
803 
804 static char *
805 ada_varobj_get_value_image (struct value *value,
806 			    struct value_print_options *opts)
807 {
808   char *result;
809   struct ui_file *buffer;
810   struct cleanup *old_chain;
811 
812   buffer = mem_fileopen ();
813   old_chain = make_cleanup_ui_file_delete (buffer);
814 
815   common_val_print (value, buffer, 0, opts, current_language);
816   result = ui_file_xstrdup (buffer, NULL);
817 
818   do_cleanups (old_chain);
819   return result;
820 }
821 
822 /* Assuming that the (VALUE, TYPE) pair designates an array varobj,
823    return a string that is suitable for use in the "value" field of
824    the varobj output.  Most of the time, this is the number of elements
825    in the array inside square brackets, but there are situations where
826    it's useful to add more info.
827 
828    OPTS are the print options used when formatting the result.
829 
830    The result should be deallocated after use using xfree.  */
831 
832 static char *
833 ada_varobj_get_value_of_array_variable (struct value *value,
834 					struct type *type,
835 					struct value_print_options *opts)
836 {
837   char *result;
838   const int numchild = ada_varobj_get_array_number_of_children (value, type);
839 
840   /* If we have a string, provide its contents in the "value" field.
841      Otherwise, the only other way to inspect the contents of the string
842      is by looking at the value of each element, as in any other array,
843      which is not very convenient...  */
844   if (value
845       && ada_is_string_type (type)
846       && (opts->format == 0 || opts->format == 's'))
847     {
848       char *str;
849       struct cleanup *old_chain;
850 
851       str = ada_varobj_get_value_image (value, opts);
852       old_chain = make_cleanup (xfree, str);
853       result = xstrprintf ("[%d] %s", numchild, str);
854       do_cleanups (old_chain);
855     }
856   else
857     result = xstrprintf ("[%d]", numchild);
858 
859   return result;
860 }
861 
862 /* Return a string representation of the (VALUE, TYPE) pair, using
863    the given print options OPTS as our formatting options.  */
864 
865 static char *
866 ada_varobj_get_value_of_variable (struct value *value,
867 				  struct type *type,
868 				  struct value_print_options *opts)
869 {
870   char *result = NULL;
871 
872   ada_varobj_decode_var (&value, &type);
873 
874   switch (TYPE_CODE (type))
875     {
876     case TYPE_CODE_STRUCT:
877     case TYPE_CODE_UNION:
878       result = xstrdup ("{...}");
879       break;
880     case TYPE_CODE_ARRAY:
881       result = ada_varobj_get_value_of_array_variable (value, type, opts);
882       break;
883     default:
884       if (!value)
885 	result = xstrdup ("");
886       else
887 	result = ada_varobj_get_value_image (value, opts);
888       break;
889     }
890 
891   return result;
892 }
893 
894 /* Ada specific callbacks for VAROBJs.  */
895 
896 static int
897 ada_number_of_children (struct varobj *var)
898 {
899   return ada_varobj_get_number_of_children (var->value, var->type);
900 }
901 
902 static char *
903 ada_name_of_variable (struct varobj *parent)
904 {
905   return c_varobj_ops.name_of_variable (parent);
906 }
907 
908 static char *
909 ada_name_of_child (struct varobj *parent, int index)
910 {
911   return ada_varobj_get_name_of_child (parent->value, parent->type,
912 				       parent->name, index);
913 }
914 
915 static char*
916 ada_path_expr_of_child (struct varobj *child)
917 {
918   struct varobj *parent = child->parent;
919   const char *parent_path_expr = varobj_get_path_expr (parent);
920 
921   return ada_varobj_get_path_expr_of_child (parent->value,
922 					    parent->type,
923 					    parent->name,
924 					    parent_path_expr,
925 					    child->index);
926 }
927 
928 static struct value *
929 ada_value_of_child (struct varobj *parent, int index)
930 {
931   return ada_varobj_get_value_of_child (parent->value, parent->type,
932 					parent->name, index);
933 }
934 
935 static struct type *
936 ada_type_of_child (struct varobj *parent, int index)
937 {
938   return ada_varobj_get_type_of_child (parent->value, parent->type,
939 				       index);
940 }
941 
942 static char *
943 ada_value_of_variable (struct varobj *var, enum varobj_display_formats format)
944 {
945   struct value_print_options opts;
946 
947   varobj_formatted_print_options (&opts, format);
948 
949   return ada_varobj_get_value_of_variable (var->value, var->type, &opts);
950 }
951 
952 /* Implement the "value_is_changeable_p" routine for Ada.  */
953 
954 static int
955 ada_value_is_changeable_p (struct varobj *var)
956 {
957   struct type *type = var->value ? value_type (var->value) : var->type;
958 
959   if (ada_is_array_descriptor_type (type)
960       && TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
961     {
962       /* This is in reality a pointer to an unconstrained array.
963 	 its value is changeable.  */
964       return 1;
965     }
966 
967   if (ada_is_string_type (type))
968     {
969       /* We display the contents of the string in the array's
970 	 "value" field.  The contents can change, so consider
971 	 that the array is changeable.  */
972       return 1;
973     }
974 
975   return varobj_default_value_is_changeable_p (var);
976 }
977 
978 /* Implement the "value_has_mutated" routine for Ada.  */
979 
980 static int
981 ada_value_has_mutated (struct varobj *var, struct value *new_val,
982 		       struct type *new_type)
983 {
984   int i;
985   int from = -1;
986   int to = -1;
987 
988   /* If the number of fields have changed, then for sure the type
989      has mutated.  */
990   if (ada_varobj_get_number_of_children (new_val, new_type)
991       != var->num_children)
992     return 1;
993 
994   /* If the number of fields have remained the same, then we need
995      to check the name of each field.  If they remain the same,
996      then chances are the type hasn't mutated.  This is technically
997      an incomplete test, as the child's type might have changed
998      despite the fact that the name remains the same.  But we'll
999      handle this situation by saying that the child has mutated,
1000      not this value.
1001 
1002      If only part (or none!) of the children have been fetched,
1003      then only check the ones we fetched.  It does not matter
1004      to the frontend whether a child that it has not fetched yet
1005      has mutated or not. So just assume it hasn't.  */
1006 
1007   varobj_restrict_range (var->children, &from, &to);
1008   for (i = from; i < to; i++)
1009     if (strcmp (ada_varobj_get_name_of_child (new_val, new_type,
1010 					      var->name, i),
1011 		VEC_index (varobj_p, var->children, i)->name) != 0)
1012       return 1;
1013 
1014   return 0;
1015 }
1016 
1017 /* varobj operations for ada.  */
1018 
1019 const struct lang_varobj_ops ada_varobj_ops =
1020 {
1021   ada_number_of_children,
1022   ada_name_of_variable,
1023   ada_name_of_child,
1024   ada_path_expr_of_child,
1025   ada_value_of_child,
1026   ada_type_of_child,
1027   ada_value_of_variable,
1028   ada_value_is_changeable_p,
1029   ada_value_has_mutated,
1030   varobj_default_is_path_expr_parent
1031 };
1032