* ada-lang.c (ada_find_any_type): Move check for primitive types ...
authorUlrich Weigand <uweigand@de.ibm.com>
Mon, 18 May 2009 14:00:08 +0000 (14:00 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Mon, 18 May 2009 14:00:08 +0000 (14:00 +0000)
(to_fixed_range_type): ... to here.

gdb/ChangeLog
gdb/ada-lang.c

index fe83b733c7c9b813230b032761880d0c2169628f..75520fcd4f3ef093f1600300e4e653c0221370b4 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-18  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * ada-lang.c (ada_find_any_type): Move check for primitive types ...
+       (to_fixed_range_type): ... to here.
+
 2009-05-18  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * ada-lang.c (desc_data_type): Remove, replace by ...
index bf88ac1d6fb73698eee9bc33a54a48ed6be3dd38..4a45a622b6580cff442dca6e824cdc38945f208d 100644 (file)
@@ -6481,22 +6481,19 @@ ada_find_any_symbol (const char *name)
   return sym;
 }
 
-/* Find a type named NAME.  Ignores ambiguity.  */
+/* Find a type named NAME.  Ignores ambiguity.  This routine will look
+   solely for types defined by debug info, it will not search the GDB
+   primitive types.  */
 
 struct type *
 ada_find_any_type (const char *name)
 {
   struct symbol *sym = ada_find_any_symbol (name);
-  struct type *type = NULL;
 
   if (sym != NULL)
-    type = SYMBOL_TYPE (sym);
+    return SYMBOL_TYPE (sym);
 
-  if (type == NULL)
-    type = language_lookup_primitive_type_by_name
-      (language_def (language_ada), current_gdbarch, name);
-
-  return type;
+  return NULL;
 }
 
 /* Given NAME and an associated BLOCK, search all symbols for
@@ -9451,6 +9448,11 @@ to_fixed_range_type (char *name, struct value *dval, struct objfile *objfile)
   struct type *base_type;
   char *subtype_info;
 
+  /* Also search primitive types if type symbol could not be found.  */
+  if (raw_type == NULL)
+    raw_type = language_lookup_primitive_type_by_name
+               (language_def (language_ada), current_gdbarch, name);
+
   if (raw_type == NULL)
     base_type = builtin_type_int32;
   else if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)