mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-25 19:14:52 +08:00
2001-05-10 Fernando Nasser <fnasser@redhat.com>
* varobj.c (c_number_of_children): Check for target type of void*, not the target type name. Allow dereferencing char*.
This commit is contained in:
parent
d7db6da9f6
commit
0755e6c1ab
@ -1,3 +1,8 @@
|
||||
2001-05-10 Fernando Nasser <fnasser@redhat.com>
|
||||
|
||||
* varobj.c (c_number_of_children): Check for target type of void*,
|
||||
not the target type name. Allow dereferencing char*.
|
||||
|
||||
2001-05-10 Fernando Nasser <fnasser@redhat.com>
|
||||
|
||||
* symfile.c (symbol_file_add_main_1): New static function.
|
||||
|
17
gdb/varobj.c
17
gdb/varobj.c
@ -1761,7 +1761,13 @@ c_number_of_children (struct varobj *var)
|
||||
case TYPE_CODE_PTR:
|
||||
/* This is where things get compilcated. All pointers have one child.
|
||||
Except, of course, for struct and union ptr, which we automagically
|
||||
dereference for the user and function ptrs, which have no children. */
|
||||
dereference for the user and function ptrs, which have no children.
|
||||
We also don't dereference void* as we don't know what to show.
|
||||
We can show char* so we allow it to be dereferenced. If you decide
|
||||
to test for it, please mind that a little magic is necessary to
|
||||
properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and
|
||||
TYPE_NAME == "char" */
|
||||
|
||||
switch (TYPE_CODE (target))
|
||||
{
|
||||
case TYPE_CODE_STRUCT:
|
||||
@ -1770,17 +1776,12 @@ c_number_of_children (struct varobj *var)
|
||||
break;
|
||||
|
||||
case TYPE_CODE_FUNC:
|
||||
case TYPE_CODE_VOID:
|
||||
children = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Don't dereference char* or void*. */
|
||||
if (TYPE_NAME (target) != NULL
|
||||
&& (STREQ (TYPE_NAME (target), "char")
|
||||
|| STREQ (TYPE_NAME (target), "void")))
|
||||
children = 0;
|
||||
else
|
||||
children = 1;
|
||||
children = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user