Index: gdb/ada-exp.y |
diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y |
index d8c21a4f1107e7596af82b427c0a3af8f3772b9d..1a80b0b1fe49d6934c60d4b0ded832e3427cfabb 100644 |
--- a/gdb/ada-exp.y |
+++ b/gdb/ada-exp.y |
@@ -94,6 +94,12 @@ |
#define yytoks ada_toks /* With YYDEBUG defined */ |
#define yyname ada_name /* With YYDEBUG defined */ |
#define yyrule ada_rule /* With YYDEBUG defined */ |
+#define yyss ada_yyss |
+#define yysslim ada_yysslim |
+#define yyssp ada_yyssp |
+#define yystacksize ada_yystacksize |
+#define yyvs ada_yyvs |
+#define yyvsp ada_yyvsp |
#ifndef YYDEBUG |
#define YYDEBUG 1 /* Default to yydebug support */ |
@@ -867,8 +873,7 @@ write_object_renaming (struct block *orig_left_context, |
{ |
char *name; |
enum { SIMPLE_INDEX, LOWER_BOUND, UPPER_BOUND } slice_state; |
- struct symbol *sym; |
- struct block *block; |
+ struct ada_symbol_info sym_info; |
if (max_depth <= 0) |
error (_("Could not find renamed symbol")); |
@@ -877,29 +882,28 @@ write_object_renaming (struct block *orig_left_context, |
orig_left_context = get_selected_block (NULL); |
name = obsavestring (renamed_entity, renamed_entity_len, &temp_parse_space); |
- sym = ada_lookup_encoded_symbol (name, orig_left_context, VAR_DOMAIN, |
- &block); |
- if (sym == NULL) |
+ ada_lookup_encoded_symbol (name, orig_left_context, VAR_DOMAIN, &sym_info); |
+ if (sym_info.sym == NULL) |
error (_("Could not find renamed variable: %s"), ada_decode (name)); |
- else if (SYMBOL_CLASS (sym) == LOC_TYPEDEF) |
+ else if (SYMBOL_CLASS (sym_info.sym) == LOC_TYPEDEF) |
/* We have a renaming of an old-style renaming symbol. Don't |
trust the block information. */ |
- block = orig_left_context; |
+ sym_info.block = orig_left_context; |
{ |
const char *inner_renamed_entity; |
int inner_renamed_entity_len; |
const char *inner_renaming_expr; |
- switch (ada_parse_renaming (sym, &inner_renamed_entity, |
+ switch (ada_parse_renaming (sym_info.sym, &inner_renamed_entity, |
&inner_renamed_entity_len, |
&inner_renaming_expr)) |
{ |
case ADA_NOT_RENAMING: |
- write_var_from_sym (orig_left_context, block, sym); |
+ write_var_from_sym (orig_left_context, sym_info.block, sym_info.sym); |
break; |
case ADA_OBJECT_RENAMING: |
- write_object_renaming (block, |
+ write_object_renaming (sym_info.block, |
inner_renamed_entity, inner_renamed_entity_len, |
inner_renaming_expr, max_depth - 1); |
break; |
@@ -939,7 +943,7 @@ write_object_renaming (struct block *orig_left_context, |
{ |
const char *end; |
char *index_name; |
- struct symbol *index_sym; |
+ struct ada_symbol_info index_sym_info; |
end = strchr (renaming_expr, 'X'); |
if (end == NULL) |
@@ -950,14 +954,15 @@ write_object_renaming (struct block *orig_left_context, |
&temp_parse_space); |
renaming_expr = end; |
- index_sym = ada_lookup_encoded_symbol (index_name, NULL, |
- VAR_DOMAIN, &block); |
- if (index_sym == NULL) |
+ ada_lookup_encoded_symbol (index_name, NULL, VAR_DOMAIN, |
+ &index_sym_info); |
+ if (index_sym_info.sym == NULL) |
error (_("Could not find %s"), index_name); |
- else if (SYMBOL_CLASS (index_sym) == LOC_TYPEDEF) |
+ else if (SYMBOL_CLASS (index_sym_info.sym) == LOC_TYPEDEF) |
/* Index is an old-style renaming symbol. */ |
- block = orig_left_context; |
- write_var_from_sym (NULL, block, index_sym); |
+ index_sym_info.block = orig_left_context; |
+ write_var_from_sym (NULL, index_sym_info.block, |
+ index_sym_info.sym); |
} |
if (slice_state == SIMPLE_INDEX) |
{ |
@@ -1021,7 +1026,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 +1283,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. */ |
@@ -1288,8 +1293,7 @@ write_var_or_type (struct block *block, struct stoken name0) |
if (nsyms == 1) |
{ |
struct symbol *ren_sym = |
- ada_find_renaming_symbol (SYMBOL_LINKAGE_NAME (syms[0].sym), |
- syms[0].block); |
+ ada_find_renaming_symbol (syms[0].sym, syms[0].block); |
if (ren_sym != NULL) |
syms[0].sym = ren_sym; |
@@ -1427,7 +1431,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 |
@@ -1459,7 +1463,7 @@ convert_char_literal (struct type *type, LONGEST val) |
for (f = 0; f < TYPE_NFIELDS (type); f += 1) |
{ |
if (strcmp (name, TYPE_FIELD_NAME (type, f)) == 0) |
- return TYPE_FIELD_BITPOS (type, f); |
+ return TYPE_FIELD_ENUMVAL (type, f); |
} |
return val; |
} |