2012-03-27 Pedro Alves <palves@redhat.com>
[deliverable/binutils-gdb.git] / gdb / ada-exp.y
index e64d1eb4566ff66c5e8a37a2636323df6a15ed1e..226cc1d8f11d22814bd486e896be87b8b52350c9 100644 (file)
@@ -1,6 +1,6 @@
 /* YACC parser for Ada expressions, for GDB.
-   Copyright (C) 1986, 1989, 1990, 1991, 1993, 1994, 1997, 2000, 2003, 2004,
-   2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1986, 1989-1991, 1993-1994, 1997, 2000, 2003-2004,
+   2007-2012 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1021,7 +1021,7 @@ block_lookup (struct block *context, char *raw_name)
   else
     name = ada_encode (raw_name);
 
-  nsyms = ada_lookup_symbol_list (name, context, VAR_DOMAIN, &syms);
+  nsyms = ada_lookup_symbol_list (name, context, VAR_DOMAIN, &syms, 1);
   if (context == NULL
       && (nsyms == 0 || SYMBOL_CLASS (syms[0].sym) != LOC_BLOCK))
     symtab = lookup_symtab (name);
@@ -1278,7 +1278,7 @@ write_var_or_type (struct block *block, struct stoken name0)
 
          encoded_name[tail_index] = '\0';
          nsyms = ada_lookup_symbol_list (encoded_name, block,
-                                         VAR_DOMAIN, &syms);
+                                         VAR_DOMAIN, &syms, 1);
          encoded_name[tail_index] = terminator;
 
          /* A single symbol may rename a package or object. */
@@ -1287,12 +1287,11 @@ write_var_or_type (struct block *block, struct stoken name0)
             FIXME pnh 7/20/2007. */
          if (nsyms == 1)
            {
-             struct symbol *renaming =
-               ada_find_renaming_symbol (SYMBOL_LINKAGE_NAME (syms[0].sym), 
-                                         syms[0].block);
+             struct symbol *ren_sym =
+               ada_find_renaming_symbol (syms[0].sym, syms[0].block);
 
-             if (renaming != NULL)
-               syms[0].sym = renaming;
+             if (ren_sym != NULL)
+               syms[0].sym = ren_sym;
            }
 
          type_sym = select_possible_type_sym (syms, nsyms);
@@ -1427,7 +1426,7 @@ write_name_assoc (struct stoken name)
     {
       struct ada_symbol_info *syms;
       int nsyms = ada_lookup_symbol_list (name.ptr, expression_context_block,
-                                         VAR_DOMAIN, &syms);
+                                         VAR_DOMAIN, &syms, 1);
       if (nsyms != 1 || SYMBOL_CLASS (syms[0].sym) == LOC_TYPEDEF)
        write_exp_op_with_string (OP_NAME, name);
       else
@@ -1449,8 +1448,12 @@ convert_char_literal (struct type *type, LONGEST val)
   char name[7];
   int f;
 
-  if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM)
+  if (type == NULL)
     return val;
+  type = check_typedef (type);
+  if (TYPE_CODE (type) != TYPE_CODE_ENUM)
+    return val;
+
   xsnprintf (name, sizeof (name), "QU%02x", (int) val);
   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
     {
This page took 0.04919 seconds and 4 git commands to generate.