[PATCH -tip 0/7] perf-probe updates - data-structure support improvements, etc.

Masami Hiramatsu
2010-03-29T20:30:24Z

Hi Ingo,

Here are several updates of perf-probe. This series improves
data structure accessing.

- Set the name of argument which traces a data structure member
as the last member of the data structure reference (e.g. f_mode
of file->f_mode). This allows us to use perf-trace for tracin
data-structure members.

- Add the basic type support. This allows us to fetch the memory
with specified bitwidth. Usually, data-structure members are
packed on the memory, this means if we want to read a member
from memory, we have to access it with type casting.
kprobe-tracer now support tracing argument with basic types
(u8,u16,u32,u64,s8,s16,s32,s64), and perf-probe decodes the type
information of the members.

- Support canonical frame address, which is used for refering
frame-base on the kernel built without CONFIG_FRAME_POINTER.

TODOs (possible features):
- Support array element (var[N])
- Support string/dynamic arrays (*var, var[N..M])
- Support tracing static variables (non global)
- Support dynamic array-indexing (var[var2])
- Support force type-casting ((type)var)
- Show what deta-structure member is assigned to each argument.
- Better support for probes on modules
- More debugger like enhancements(%next, --disasm, etc.)

I decided to drop non-root user support (for --add/--del),
because this can set probes for getting sensitive data...

Thank you,

---

Masami Hiramatsu (7):
perf probe: Support DW_OP_call_frame_cfa in debuginfo
perf probe: Support basic type casting
perf probe: Query basic types from debuginfo
trace/kprobes: Support basic types
perf probe: Use the last field name as the argument name
perf probe: Support argument name
[BUGFIX] perf probe: Fix to close dwarf when failing to analyze it

Documentation/trace/kprobetrace.txt | 4
kernel/trace/trace.h | 16 -
kernel/trace/trace_kprobe.c | 535 +++++++++++++++++++------------
tools/perf/Documentation/perf-probe.txt | 11 +
tools/perf/builtin-probe.c | 4
tools/perf/util/probe-event.c | 70 +++-
tools/perf/util/probe-event.h | 3
tools/perf/util/probe-finder.c | 131 ++++++--
tools/perf/util/probe-finder.h | 1
9 files changed, 516 insertions(+), 259 deletions(-)