1 /* varobj support for C and C++.
3 Copyright (C) 1999-2014 Free Software Foundation, Inc.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 #include "gdbthread.h"
24 static void cplus_class_num_children (struct type *type, int children[3]);
26 /* The names of varobjs representing anonymous structs or unions. */
27 #define ANONYMOUS_STRUCT_NAME _("<anonymous struct>")
28 #define ANONYMOUS_UNION_NAME _("<anonymous union>")
30 /* Does CHILD represent a child with no name? This happens when
31 the child is an anonmous struct or union and it has no field name
32 in its parent variable.
34 This has already been determined by *_describe_child. The easiest
35 thing to do is to compare the child's name with ANONYMOUS_*_NAME. */
38 varobj_is_anonymous_child (struct varobj *child)
40 return (strcmp (child->name, ANONYMOUS_STRUCT_NAME) == 0
41 || strcmp (child->name, ANONYMOUS_UNION_NAME) == 0);
44 /* Given the value and the type of a variable object,
45 adjust the value and type to those necessary
46 for getting children of the variable object.
47 This includes dereferencing top-level references
48 to all types and dereferencing pointers to
51 If LOOKUP_ACTUAL_TYPE is set the enclosing type of the
52 value will be fetched and if it differs from static type
53 the value will be casted to it.
55 Both TYPE and *TYPE should be non-null. VALUE
56 can be null if we want to only translate type.
57 *VALUE can be null as well -- if the parent
60 If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
61 depending on whether pointer was dereferenced
65 adjust_value_for_child_access (struct value **value,
68 int lookup_actual_type)
70 gdb_assert (type && *type);
75 *type = check_typedef (*type);
77 /* The type of value stored in varobj, that is passed
78 to us, is already supposed to be
79 reference-stripped. */
81 gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
83 /* Pointers to structures are treated just like
84 structures when accessing children. Don't
85 dererences pointers to other types. */
86 if (TYPE_CODE (*type) == TYPE_CODE_PTR)
88 struct type *target_type = get_target_type (*type);
89 if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
90 || TYPE_CODE (target_type) == TYPE_CODE_UNION)
94 volatile struct gdb_exception except;
96 TRY_CATCH (except, RETURN_MASK_ERROR)
98 *value = value_ind (*value);
101 if (except.reason < 0)
110 /* The 'get_target_type' function calls check_typedef on
111 result, so we can immediately check type code. No
112 need to call check_typedef here. */
114 /* Access a real type of the value (if necessary and possible). */
115 if (value && *value && lookup_actual_type)
117 struct type *enclosing_type;
118 int real_type_found = 0;
120 enclosing_type = value_actual_type (*value, 1, &real_type_found);
123 *type = enclosing_type;
124 *value = value_cast (enclosing_type, *value);
132 c_number_of_children (struct varobj *var)
134 struct type *type = varobj_get_value_type (var);
138 adjust_value_for_child_access (NULL, &type, NULL, 0);
139 target = get_target_type (type);
141 switch (TYPE_CODE (type))
143 case TYPE_CODE_ARRAY:
144 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
145 && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
146 children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
148 /* If we don't know how many elements there are, don't display
153 case TYPE_CODE_STRUCT:
154 case TYPE_CODE_UNION:
155 children = TYPE_NFIELDS (type);
159 /* The type here is a pointer to non-struct. Typically, pointers
160 have one child, except for function ptrs, which have no children,
161 and except for void*, as we don't know what to show.
163 We can show char* so we allow it to be dereferenced. If you decide
164 to test for it, please mind that a little magic is necessary to
165 properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and
166 TYPE_NAME == "char". */
167 if (TYPE_CODE (target) == TYPE_CODE_FUNC
168 || TYPE_CODE (target) == TYPE_CODE_VOID)
175 /* Other types have no children. */
183 c_name_of_variable (struct varobj *parent)
185 return xstrdup (parent->name);
188 /* Return the value of element TYPE_INDEX of a structure
189 value VALUE. VALUE's type should be a structure,
190 or union, or a typedef to struct/union.
192 Returns NULL if getting the value fails. Never throws. */
194 static struct value *
195 value_struct_element_index (struct value *value, int type_index)
197 struct value *result = NULL;
198 volatile struct gdb_exception e;
199 struct type *type = value_type (value);
201 type = check_typedef (type);
203 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
204 || TYPE_CODE (type) == TYPE_CODE_UNION);
206 TRY_CATCH (e, RETURN_MASK_ERROR)
208 if (field_is_static (&TYPE_FIELD (type, type_index)))
209 result = value_static_field (type, type_index);
211 result = value_primitive_field (value, 0, type_index, type);
223 /* Obtain the information about child INDEX of the variable
225 If CNAME is not null, sets *CNAME to the name of the child relative
227 If CVALUE is not null, sets *CVALUE to the value of the child.
228 If CTYPE is not null, sets *CTYPE to the type of the child.
230 If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
231 information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
235 c_describe_child (struct varobj *parent, int index,
236 char **cname, struct value **cvalue, struct type **ctype,
237 char **cfull_expression)
239 struct value *value = parent->value;
240 struct type *type = varobj_get_value_type (parent);
241 char *parent_expression = NULL;
243 volatile struct gdb_exception except;
251 if (cfull_expression)
253 *cfull_expression = NULL;
255 = varobj_get_path_expr (varobj_get_path_expr_parent (parent));
257 adjust_value_for_child_access (&value, &type, &was_ptr, 0);
259 switch (TYPE_CODE (type))
261 case TYPE_CODE_ARRAY:
264 = xstrdup (int_string (index
265 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
270 int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
272 TRY_CATCH (except, RETURN_MASK_ERROR)
274 *cvalue = value_subscript (value, real_index);
279 *ctype = get_target_type (type);
281 if (cfull_expression)
283 xstrprintf ("(%s)[%s]", parent_expression,
285 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
291 case TYPE_CODE_STRUCT:
292 case TYPE_CODE_UNION:
294 const char *field_name;
296 /* If the type is anonymous and the field has no name,
297 set an appropriate name. */
298 field_name = TYPE_FIELD_NAME (type, index);
299 if (field_name == NULL || *field_name == '\0')
303 if (TYPE_CODE (TYPE_FIELD_TYPE (type, index))
305 *cname = xstrdup (ANONYMOUS_STRUCT_NAME);
307 *cname = xstrdup (ANONYMOUS_UNION_NAME);
310 if (cfull_expression)
311 *cfull_expression = xstrdup ("");
316 *cname = xstrdup (field_name);
318 if (cfull_expression)
320 char *join = was_ptr ? "->" : ".";
322 *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression,
329 /* For C, varobj index is the same as type index. */
330 *cvalue = value_struct_element_index (value, index);
334 *ctype = TYPE_FIELD_TYPE (type, index);
340 *cname = xstrprintf ("*%s", parent->name);
344 TRY_CATCH (except, RETURN_MASK_ERROR)
346 *cvalue = value_ind (value);
349 if (except.reason < 0)
353 /* Don't use get_target_type because it calls
354 check_typedef and here, we want to show the true
355 declared type of the variable. */
357 *ctype = TYPE_TARGET_TYPE (type);
359 if (cfull_expression)
360 *cfull_expression = xstrprintf ("*(%s)", parent_expression);
365 /* This should not happen. */
367 *cname = xstrdup ("???");
368 if (cfull_expression)
369 *cfull_expression = xstrdup ("???");
370 /* Don't set value and type, we don't know then. */
375 c_name_of_child (struct varobj *parent, int index)
379 c_describe_child (parent, index, &name, NULL, NULL, NULL);
384 c_path_expr_of_child (struct varobj *child)
386 c_describe_child (child->parent, child->index, NULL, NULL, NULL,
388 return child->path_expr;
391 static struct value *
392 c_value_of_child (struct varobj *parent, int index)
394 struct value *value = NULL;
396 c_describe_child (parent, index, NULL, &value, NULL, NULL);
401 c_type_of_child (struct varobj *parent, int index)
403 struct type *type = NULL;
405 c_describe_child (parent, index, NULL, NULL, &type, NULL);
409 /* This returns the type of the variable. It also skips past typedefs
410 to return the real type of the variable. */
413 get_type (struct varobj *var)
419 type = check_typedef (type);
425 c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
427 /* BOGUS: if val_print sees a struct/class, or a reference to one,
428 it will print out its children instead of "{...}". So we need to
429 catch that case explicitly. */
430 struct type *type = get_type (var);
432 /* Strip top-level references. */
433 while (TYPE_CODE (type) == TYPE_CODE_REF)
434 type = check_typedef (TYPE_TARGET_TYPE (type));
436 switch (TYPE_CODE (type))
438 case TYPE_CODE_STRUCT:
439 case TYPE_CODE_UNION:
440 return xstrdup ("{...}");
443 case TYPE_CODE_ARRAY:
447 number = xstrprintf ("[%d]", var->num_children);
454 if (var->value == NULL)
456 /* This can happen if we attempt to get the value of a struct
457 member when the parent is an invalid pointer. This is an
458 error condition, so we should tell the caller. */
463 if (var->not_fetched && value_lazy (var->value))
464 /* Frozen variable and no value yet. We don't
465 implicitly fetch the value. MI response will
466 use empty string for the value, which is OK. */
469 gdb_assert (varobj_value_is_changeable_p (var));
470 gdb_assert (!value_lazy (var->value));
472 /* If the specified format is the current one,
473 we can reuse print_value. */
474 if (format == var->format)
475 return xstrdup (var->print_value);
477 return varobj_value_get_print_value (var->value, format, var);
484 /* varobj operations for c. */
486 const struct lang_varobj_ops c_varobj_ops =
488 c_number_of_children,
491 c_path_expr_of_child,
495 varobj_default_value_is_changeable_p,
496 NULL /* value_has_mutated */
499 /* A little convenience enum for dealing with C++/Java. */
502 v_public = 0, v_private, v_protected
508 cplus_number_of_children (struct varobj *var)
510 struct value *value = NULL;
512 int children, dont_know;
513 int lookup_actual_type = 0;
514 struct value_print_options opts;
519 get_user_print_options (&opts);
521 if (!CPLUS_FAKE_CHILD (var))
523 type = varobj_get_value_type (var);
525 /* It is necessary to access a real type (via RTTI). */
526 if (opts.objectprint)
529 lookup_actual_type = (TYPE_CODE (var->type) == TYPE_CODE_REF
530 || TYPE_CODE (var->type) == TYPE_CODE_PTR);
532 adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
534 if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT)
535 || ((TYPE_CODE (type)) == TYPE_CODE_UNION))
539 cplus_class_num_children (type, kids);
540 if (kids[v_public] != 0)
542 if (kids[v_private] != 0)
544 if (kids[v_protected] != 0)
547 /* Add any baseclasses. */
548 children += TYPE_N_BASECLASSES (type);
551 /* FIXME: save children in var. */
558 type = varobj_get_value_type (var->parent);
560 /* It is necessary to access a real type (via RTTI). */
561 if (opts.objectprint)
563 struct varobj *parent = var->parent;
565 value = parent->value;
566 lookup_actual_type = (TYPE_CODE (parent->type) == TYPE_CODE_REF
567 || TYPE_CODE (parent->type) == TYPE_CODE_PTR);
569 adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
571 cplus_class_num_children (type, kids);
572 if (strcmp (var->name, "public") == 0)
573 children = kids[v_public];
574 else if (strcmp (var->name, "private") == 0)
575 children = kids[v_private];
577 children = kids[v_protected];
582 children = c_number_of_children (var);
587 /* Compute # of public, private, and protected variables in this class.
588 That means we need to descend into all baseclasses and find out
589 how many are there, too. */
592 cplus_class_num_children (struct type *type, int children[3])
595 struct type *basetype = NULL;
597 children[v_public] = 0;
598 children[v_private] = 0;
599 children[v_protected] = 0;
601 vptr_fieldno = get_vptr_fieldno (type, &basetype);
602 for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
604 /* If we have a virtual table pointer, omit it. Even if virtual
605 table pointers are not specifically marked in the debug info,
606 they should be artificial. */
607 if ((type == basetype && i == vptr_fieldno)
608 || TYPE_FIELD_ARTIFICIAL (type, i))
611 if (TYPE_FIELD_PROTECTED (type, i))
612 children[v_protected]++;
613 else if (TYPE_FIELD_PRIVATE (type, i))
614 children[v_private]++;
616 children[v_public]++;
621 cplus_name_of_variable (struct varobj *parent)
623 return c_name_of_variable (parent);
626 enum accessibility { private_field, protected_field, public_field };
628 /* Check if field INDEX of TYPE has the specified accessibility.
629 Return 0 if so and 1 otherwise. */
632 match_accessibility (struct type *type, int index, enum accessibility acc)
634 if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
636 else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
638 else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
639 && !TYPE_FIELD_PROTECTED (type, index))
646 cplus_describe_child (struct varobj *parent, int index,
647 char **cname, struct value **cvalue, struct type **ctype,
648 char **cfull_expression)
653 int lookup_actual_type = 0;
654 char *parent_expression = NULL;
656 struct value_print_options opts;
664 if (cfull_expression)
665 *cfull_expression = NULL;
667 get_user_print_options (&opts);
669 var = (CPLUS_FAKE_CHILD (parent)) ? parent->parent : parent;
670 if (opts.objectprint)
671 lookup_actual_type = (TYPE_CODE (var->type) == TYPE_CODE_REF
672 || TYPE_CODE (var->type) == TYPE_CODE_PTR);
674 type = varobj_get_value_type (var);
675 if (cfull_expression)
677 = varobj_get_path_expr (varobj_get_path_expr_parent (var));
679 adjust_value_for_child_access (&value, &type, &was_ptr, lookup_actual_type);
681 if (TYPE_CODE (type) == TYPE_CODE_STRUCT
682 || TYPE_CODE (type) == TYPE_CODE_UNION)
684 char *join = was_ptr ? "->" : ".";
686 if (CPLUS_FAKE_CHILD (parent))
688 /* The fields of the class type are ordered as they
689 appear in the class. We are given an index for a
690 particular access control type ("public","protected",
691 or "private"). We must skip over fields that don't
692 have the access control we are looking for to properly
693 find the indexed field. */
694 int type_index = TYPE_N_BASECLASSES (type);
695 enum accessibility acc = public_field;
697 struct type *basetype = NULL;
698 const char *field_name;
700 vptr_fieldno = get_vptr_fieldno (type, &basetype);
701 if (strcmp (parent->name, "private") == 0)
703 else if (strcmp (parent->name, "protected") == 0)
704 acc = protected_field;
708 if ((type == basetype && type_index == vptr_fieldno)
709 || TYPE_FIELD_ARTIFICIAL (type, type_index))
711 else if (match_accessibility (type, type_index, acc))
717 /* If the type is anonymous and the field has no name,
718 set an appopriate name. */
719 field_name = TYPE_FIELD_NAME (type, type_index);
720 if (field_name == NULL || *field_name == '\0')
724 if (TYPE_CODE (TYPE_FIELD_TYPE (type, type_index))
726 *cname = xstrdup (ANONYMOUS_STRUCT_NAME);
727 else if (TYPE_CODE (TYPE_FIELD_TYPE (type, type_index))
729 *cname = xstrdup (ANONYMOUS_UNION_NAME);
732 if (cfull_expression)
733 *cfull_expression = xstrdup ("");
738 *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
740 if (cfull_expression)
742 = xstrprintf ("((%s)%s%s)", parent_expression, join,
747 *cvalue = value_struct_element_index (value, type_index);
750 *ctype = TYPE_FIELD_TYPE (type, type_index);
752 else if (index < TYPE_N_BASECLASSES (type))
754 /* This is a baseclass. */
756 *cname = xstrdup (TYPE_FIELD_NAME (type, index));
759 *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
763 *ctype = TYPE_FIELD_TYPE (type, index);
766 if (cfull_expression)
768 char *ptr = was_ptr ? "*" : "";
770 /* Cast the parent to the base' type. Note that in gdb,
773 will create an lvalue, for all appearences, so we don't
774 need to use more fancy:
778 When we are in the scope of the base class or of one
779 of its children, the type field name will be interpreted
780 as a constructor, if it exists. Therefore, we must
781 indicate that the name is a class name by using the
782 'class' keyword. See PR mi/11912 */
783 *cfull_expression = xstrprintf ("(%s(class %s%s) %s)",
785 TYPE_FIELD_NAME (type, index),
795 cplus_class_num_children (type, children);
797 /* Everything beyond the baseclasses can
798 only be "public", "private", or "protected"
800 The special "fake" children are always output by varobj in
801 this order. So if INDEX == 2, it MUST be "protected". */
802 index -= TYPE_N_BASECLASSES (type);
806 if (children[v_public] > 0)
808 else if (children[v_private] > 0)
811 access = "protected";
814 if (children[v_public] > 0)
816 if (children[v_private] > 0)
819 access = "protected";
821 else if (children[v_private] > 0)
822 access = "protected";
825 /* Must be protected. */
826 access = "protected";
835 *cname = xstrdup (access);
837 /* Value and type and full expression are null here. */
842 c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
847 cplus_name_of_child (struct varobj *parent, int index)
851 cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
856 cplus_path_expr_of_child (struct varobj *child)
858 cplus_describe_child (child->parent, child->index, NULL, NULL, NULL,
860 return child->path_expr;
863 static struct value *
864 cplus_value_of_child (struct varobj *parent, int index)
866 struct value *value = NULL;
868 cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
873 cplus_type_of_child (struct varobj *parent, int index)
875 struct type *type = NULL;
877 cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
882 cplus_value_of_variable (struct varobj *var,
883 enum varobj_display_formats format)
886 /* If we have one of our special types, don't print out
888 if (CPLUS_FAKE_CHILD (var))
891 return c_value_of_variable (var, format);
895 /* varobj operations for c++. */
897 const struct lang_varobj_ops cplus_varobj_ops =
899 cplus_number_of_children,
900 cplus_name_of_variable,
902 cplus_path_expr_of_child,
903 cplus_value_of_child,
905 cplus_value_of_variable,
906 varobj_default_value_is_changeable_p,
907 NULL /* value_has_mutated */