[PATCH] Handle LOC_COMPUTED variables in tracepoint actions
Stan Shebs
stan@codesourcery.com
Fri Dec 18 19:46:00 GMT 2009
The last time that anybody used tracepoints much, stabs was still the
norm and Dwarf 2 the newbie, and so nobody thought much about handling
variables with computed locations. Nowadays many local variables have
computed locations, and we have to generate appropriate agent expression
bytecodes. Worse, the top-level encoding machinery for tracepoint
actions will issue instructions to collect variables directly, not using
bytecodes, so we need to detect when bytecodes are necessary. (In
theory we could always generate bytecodes for collection expressions;
that would make a good cleanup for later.)
This patch doesn't handle every possible computed location, that's a big
project of its own (basically translating arbitrary dwarf2 bytecode
sequences into equivalent agent expression bytecodes), it just handles
frame/base register combinations that are typical for local vars. Even
the simplified version is a little arcane, so I'll leave it up for
comments for a few days before committing.
Stan
2009-12-18 Stan Shebs <stan@codesourcery.com>
* ax-gdb.h (gen_trace_for_var): Declare.
* ax-gdb.c (gen_trace_for_var): New function.
* dwarf2loc.c (dwarf_expr_frame_base_1): New function, split from...
(dwarf_expr_frame_base): ...here.
(dwarf2_tracepoint_var_ref): Add computed location case.
* tracepoint.c (collect_symbol): Add scope arg and LOC_COMPUTED
case.
(add_local_symbols): Update call to collect_symbol.
(encode_actions): Ditto.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: loccomp-patch-1
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20091218/c5826d91/attachment.ksh>
More information about the Gdb-patches
mailing list