aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/ada-lang.c10
2 files changed, 11 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 18de389..15ed81b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2010-11-22 Joel Brobecker <brobecker@adacore.com>
+ * ada-lang.c (ada_check_typedef): Call ada_check_typedef only
+ if type1 is a typedef.
+
+2010-11-22 Joel Brobecker <brobecker@adacore.com>
+
* ada-lang.h (ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS): Add
"_finalizer" to the list.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 76b20e7..15c96b7 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -7756,10 +7756,12 @@ ada_check_typedef (struct type *type)
/* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
stubs pointing to arrays, as we don't create symbols for array
- types, only for the typedef-to-array types). This is why
- we process TYPE1 with ada_check_typedef before returning
- the result. */
- return ada_check_typedef (type1);
+ types, only for the typedef-to-array types). If that's the case,
+ strip the typedef layer. */
+ if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
+ type1 = ada_check_typedef (type1);
+
+ return type1;
}
}