aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2009-05-18 13:47:44 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2009-05-18 13:47:44 +0000
commit17280b9f0a137dae1dbe2eb817b2d7ba18646cd6 (patch)
tree8685ba23990a06f72fae7dd19bded8d5b479586f /gdb
parent830bb937a1076fbaf1eae8f2a3bdce8bcf53f281 (diff)
downloadfsf-binutils-gdb-17280b9f0a137dae1dbe2eb817b2d7ba18646cd6.zip
fsf-binutils-gdb-17280b9f0a137dae1dbe2eb817b2d7ba18646cd6.tar.gz
fsf-binutils-gdb-17280b9f0a137dae1dbe2eb817b2d7ba18646cd6.tar.bz2
* ada-lang.c (ada_coerce_to_simple_array_type): Reimplement to
avoid creating a dummy value.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/ada-lang.c14
2 files changed, 12 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5e9931b..578ce18 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2009-05-18 Ulrich Weigand <uweigand@de.ibm.com>
+ * ada-lang.c (ada_coerce_to_simple_array_type): Reimplement to
+ avoid creating a dummy value.
+
+2009-05-18 Ulrich Weigand <uweigand@de.ibm.com>
+
* p-valprint.c (pascal_val_print): Use extract_typed_address
to extract reference value.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index f8d68c1..0725dbd 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -1689,13 +1689,13 @@ ada_coerce_to_simple_array (struct value *arr)
struct type *
ada_coerce_to_simple_array_type (struct type *type)
{
- struct value *mark = value_mark ();
- struct value *dummy = value_from_longest (builtin_type_int32, 0);
- struct type *result;
- deprecated_set_value_type (dummy, type);
- result = ada_type_of_array (dummy, 0);
- value_free_to_mark (mark);
- return result;
+ if (ada_is_packed_array_type (type))
+ return decode_packed_array_type (type);
+
+ if (ada_is_array_descriptor_type (type))
+ return ada_check_typedef (TYPE_TARGET_TYPE (desc_data_type (type)));
+
+ return type;
}
/* Non-zero iff TYPE represents a standard GNAT packed-array type. */