diff options
Diffstat (limited to 'gdb/f-exp.y')
-rw-r--r-- | gdb/f-exp.y | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/gdb/f-exp.y b/gdb/f-exp.y index 3b0f23d..92a70b4 100644 --- a/gdb/f-exp.y +++ b/gdb/f-exp.y @@ -540,32 +540,9 @@ exp : STRING_LITERAL variable: name_not_typename { struct block_symbol sym = $1.sym; - - if (sym.symbol) - { - if (symbol_read_needs_frame (sym.symbol)) - pstate->block_tracker->update (sym); - write_exp_elt_opcode (pstate, OP_VAR_VALUE); - write_exp_elt_block (pstate, sym.block); - write_exp_elt_sym (pstate, sym.symbol); - write_exp_elt_opcode (pstate, OP_VAR_VALUE); - break; - } - else - { - struct bound_minimal_symbol msymbol; - std::string arg = copy_name ($1.stoken); - - msymbol = - lookup_bound_minimal_symbol (arg.c_str ()); - if (msymbol.minsym != NULL) - write_exp_msymbol (pstate, msymbol); - else if (!have_full_symbols () && !have_partial_symbols ()) - error (_("No symbol table is loaded. Use the \"file\" command.")); - else - error (_("No symbol \"%s\" in current context."), - arg.c_str ()); - } + std::string name = copy_name ($1.stoken); + write_exp_symbol_reference (pstate, name.c_str (), + sym); } ; |