This patch solves a number of problems related to variables with Dwarf2 location expressions - which these days, means just about every local in optimized code. :-) Perhaps the most interesting part is that I finally got tired of working blind and filled out description location functions, so now both "info scope" and "info address" have quite a lot of say about variables. Try things like "info scope handle_inferior_event" to get some truly awesome verbiage. :-) Since there's a lot of new code here, I'll leave it up for a couple days before committing. Stan 2010-04-15 Stan Shebs Nathan Sidwell * dwarf2loc.c (struct axs_var_loc): New struct. (dwarf2_tracepoint_var_loc): New function. (dwarf2_tracepoint_var_access): New function. (dwarf2_tracepoint_var_ref): Use dwarf2_tracepoint_var_loc, deal with DW_OP_piece. (locexpr_describe_location_piece): New function. (locexpr_describe_location_1): New function. (locexpr_describe_location): Call it, update signature. (loclist_describe_location): Rewrite to loop over locations, update signature. * symtab.h (struct symbol_computed_ops): Add address to describe_location arguments, return void. * printcmd.c (address_info): Get context PC, pass to computed location description. * tracepoint.c (scope_info): Ditto. * ax-gdb.c (trace_kludge): Export.