diff options
author | Pierre-Marie de Rodat <derodat@adacore.com> | 2015-04-03 10:40:52 +0200 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2015-04-03 15:23:49 +0200 |
commit | 961f41602529c9cd4f88af6c02fb61fb55100e27 (patch) | |
tree | ab5bd15848547f9a17611ed90c7b7a43b9ecfcff /gdb/gdbtypes.c | |
parent | cbf0179287a799be27e278a41f7705d4c20d9f11 (diff) |
Do not consider reference types as dynamic
Even when referenced types are dynamic, the corresponding referencing
type should not be considered as dynamic: it's only a pointer. This
prevents reference type for values not in memory to be resolved.
gdb/ChangeLog:
* gdbtypes.c (is_dynamic_type_internal): Remove special handling
of TYPE_CODE_REF types so that they are not considered as
dynamic depending on the referenced type.
(resolve_dynamic_type_internal): Likewise.
gdb/testsuite/ChangeLog:
* gdb.ada/funcall_ref.exp: New file.
* gdb.ada/funcall_ref/foo.adb: New file.
Diffstat (limited to 'gdb/gdbtypes.c')
-rw-r--r-- | gdb/gdbtypes.c | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 217ec7007e..6fb2e9a5f3 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -1752,10 +1752,6 @@ is_dynamic_type_internal (struct type *type, int top_level) { type = check_typedef (type); - /* We only want to recognize references at the outermost level. */ - if (top_level && TYPE_CODE (type) == TYPE_CODE_REF) - type = check_typedef (TYPE_TARGET_TYPE (type)); - /* Types that have a dynamic TYPE_DATA_LOCATION are considered dynamic, even if the type itself is statically defined. From a user's point of view, this may appear counter-intuitive; @@ -2045,21 +2041,6 @@ resolve_dynamic_type_internal (struct type *type, switch (TYPE_CODE (type)) { - case TYPE_CODE_REF: - { - struct property_addr_info pinfo; - - pinfo.type = check_typedef (TYPE_TARGET_TYPE (type)); - pinfo.addr = read_memory_typed_address (addr_stack->addr, type); - pinfo.next = addr_stack; - - resolved_type = copy_type (type); - TYPE_TARGET_TYPE (resolved_type) - = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (type), - &pinfo, top_level); - break; - } - case TYPE_CODE_ARRAY: resolved_type = resolve_dynamic_array (type, addr_stack); break; |