* amd64-sol2-tdep.c (amd64_sol2_gregset_reg_offset): Correct
[deliverable/binutils-gdb.git] / gdb / ada-exp.y
index 722db2fc079619cd29ae7ed0b6ef98036d5d2df8..d1c7367aa7120441d396871159c5b56b100236b2 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 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.
 
@@ -920,6 +920,7 @@ write_object_renaming (struct block *orig_left_context,
         break;
       case 'L':
        slice_state = LOWER_BOUND;
+       /* FALLTHROUGH */
       case 'S':
        renaming_expr += 1;
        if (isdigit (*renaming_expr))
@@ -1020,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);
@@ -1277,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. */
@@ -1286,12 +1287,12 @@ write_var_or_type (struct block *block, struct stoken name0)
             FIXME pnh 7/20/2007. */
          if (nsyms == 1)
            {
-             struct symbol *renaming =
+             struct symbol *ren_sym =
                ada_find_renaming_symbol (SYMBOL_LINKAGE_NAME (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);
@@ -1426,7 +1427,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
@@ -1448,8 +1449,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.024094 seconds and 4 git commands to generate.