linux/tools/perf/util
Linus Torvalds 343a9f3540 The biggest change here is the updates to kprobes
Back in January I posted patches to create function based events. These were
 the events that you suggested I make to allow developers to easily create
 events in code where no trace event exists. After posting those changes for
 review, it was suggested that we implement this instead with kprobes.
 
 The problem with kprobes is that the interface is too complex and needs to
 be simplified. Masami Hiramatsu posted patches in March and I've been
 playing with them a bit. There's been a bit of clean up in the kprobe code
 that was inspired by the function based event patches, and a couple of
 enhancements to the kprobe event interface.
 
  - If the arch supports it (we added support for x86), you can place a
    kprobe event at the start of a function and use $arg1, $arg2, etc
    to reference the arguments of a function. (Before you needed to know
    what register or where on the stack the argument was).
 
  - The second is a way to see array of events. For example, if you reference
    a mac address, you can add:
 
    echo 'p:mac ip_rcv perm_addr=+574($arg2):x8[6]' > kprobe_events
 
    And this will produce:
 
    mac: (ip_rcv+0x0/0x140) perm_addr={0x52,0x54,0x0,0xc0,0x76,0xec}
 
 Other changes include
 
  - Exporting trace_dump_stack to modules
 
  - Have the stack tracer trace the entire stack (stop trying to remove
    tracing itself, as we keep removing too much).
 
  - Added support for SDT in uprobes
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCW9hdjxQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qmtbAP9GS/o2WSvsYLSIw4+mF94eCL06lUxp
 rRrktkEofm/PagEAl2JNmvHrAJN+LIrajqXTbwlZ7Ckk1rZhCW41Am7qnQs=
 =sTUM
 -----END PGP SIGNATURE-----

Merge tag 'trace-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace

Pull tracing updates from Steven Rostedt:
 "The biggest change here is the updates to kprobes

  Back in January I posted patches to create function based events.
  These were the events that you suggested I make to allow developers to
  easily create events in code where no trace event exists. After
  posting those changes for review, it was suggested that we implement
  this instead with kprobes.

  The problem with kprobes is that the interface is too complex and
  needs to be simplified. Masami Hiramatsu posted patches in March and
  I've been playing with them a bit. There's been a bit of clean up in
  the kprobe code that was inspired by the function based event patches,
  and a couple of enhancements to the kprobe event interface.

   - If the arch supports it (we added support for x86), you can place a
     kprobe event at the start of a function and use $arg1, $arg2, etc
     to reference the arguments of a function. (Before you needed to
     know what register or where on the stack the argument was).

   - The second is a way to see array of events. For example, if you
     reference a mac address, you can add:

	echo 'p:mac ip_rcv perm_addr=+574($arg2):x8[6]' > kprobe_events

     And this will produce:

	mac: (ip_rcv+0x0/0x140) perm_addr={0x52,0x54,0x0,0xc0,0x76,0xec}

  Other changes include

   - Exporting trace_dump_stack to modules

   - Have the stack tracer trace the entire stack (stop trying to remove
     tracing itself, as we keep removing too much).

   - Added support for SDT in uprobes"

[ SDT - "Statically Defined Tracing" are userspace markers for tracing.
  Let's not use random TLA's in explanations unless they are fairly
  well-established as generic (at least for kernel people) - Linus ]

* tag 'trace-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (24 commits)
  tracing: Have stack tracer trace full stack
  tracing: Export trace_dump_stack to modules
  tracing: probeevent: Fix uninitialized used of offset in parse args
  tracing/kprobes: Allow kprobe-events to record module symbol
  tracing/kprobes: Check the probe on unloaded module correctly
  tracing/uprobes: Fix to return -EFAULT if copy_from_user failed
  tracing: probeevent: Add $argN for accessing function args
  x86: ptrace: Add function argument access API
  tracing: probeevent: Add array type support
  tracing: probeevent: Add symbol type
  tracing: probeevent: Unify fetch_insn processing common part
  tracing: probeevent: Append traceprobe_ for exported function
  tracing: probeevent: Return consumed bytes of dynamic area
  tracing: probeevent: Unify fetch type tables
  tracing: probeevent: Introduce new argument fetching code
  tracing: probeevent: Remove NOKPROBE_SYMBOL from print functions
  tracing: probeevent: Cleanup argument field definition
  tracing: probeevent: Cleanup print argument functions
  trace_uprobe: support reference counter in fd-based uprobe
  perf probe: Support SDT markers having reference counter (semaphore)
  ...
2018-10-30 09:49:56 -07:00
..
c++
cs-etm-decoder perf cs-etm: Fix start tracing packet handling 2018-07-31 10:57:56 -03:00
include
intel-pt-decoder perf intel-pt: Implement decoder flags for trace begin / end 2018-09-20 15:19:52 -03:00
libunwind
scripting-engines tools lib traceevent, perf tools: Rename enum print_arg_type to enum tep_print_arg_type 2018-09-19 17:17:44 -03:00
Build perf stat: Move the display functions to stat-display.c 2018-08-30 15:52:25 -03:00
PERF-VERSION-GEN
annotate.c perf annotate: Fix parsing aarch64 branch instructions after objdump update 2018-08-30 15:51:54 -03:00
annotate.h perf annotate: Fix parsing aarch64 branch instructions after objdump update 2018-08-30 15:51:54 -03:00
arm-spe-pkt-decoder.c
arm-spe-pkt-decoder.h
arm-spe.c
arm-spe.h
auxtrace.c perf tools: Add 'struct perf_mmap' arg to record__write() 2018-09-19 10:25:11 -03:00
auxtrace.h perf auxtrace: Include missing asm/bitsperlong.h to get BITS_PER_LONG 2018-10-08 14:23:43 -03:00
block-range.c
block-range.h
bpf-loader.c perf bpf-loader: use PTR_ERR_OR_ZERO inetead of return code 2018-09-19 10:25:09 -03:00
bpf-loader.h perf bpf: Make bpf__setup_output_event() return the bpf-output event 2018-08-08 15:55:58 -03:00
bpf-prologue.c
bpf-prologue.h
branch.c
branch.h
build-id.c
build-id.h
cache.h
call-path.c
call-path.h
callchain.c
callchain.h
cgroup.c
cgroup.h
cloexec.c
cloexec.h
color.c
color.h
comm.c
comm.h
compress.h perf tools: Add is_compressed callback to compressions array 2018-08-20 08:54:59 -03:00
config.c
config.h
counts.c
counts.h
cpumap.c
cpumap.h
cs-etm.c perf cs-etm: Generate branch sample for CS_ETM_TRACE_ON packet 2018-07-31 11:22:50 -03:00
cs-etm.h
ctype.c
data-convert-bt.c tools lib traceevent, perf tools: Rename enum format_flags to enum tep_format_flags 2018-09-19 17:14:13 -03:00
data-convert-bt.h
data-convert.h
data.c
data.h
db-export.c perf db-export: Add trace begin / end branch type variants 2018-09-20 11:10:25 -03:00
db-export.h
debug.c
debug.h
demangle-java.c
demangle-java.h
demangle-rust.c
demangle-rust.h
drv_configs.c
drv_configs.h
dso.c perf tools: Remove ext from struct kmod_path 2018-08-20 08:54:59 -03:00
dso.h perf tools: Remove ext from struct kmod_path 2018-08-20 08:54:59 -03:00
dump-insn.c
dump-insn.h
dwarf-aux.c
dwarf-aux.h
dwarf-regs.c
env.c
env.h
event.c perf tools: Stop fallbacking to kallsyms for vdso symbols lookup 2018-10-17 15:56:15 -03:00
event.h
evlist.c perf mmap: Store real cpu number in 'struct perf_mmap' 2018-08-20 08:54:59 -03:00
evlist.h
evsel.c Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-10-23 13:32:18 +01:00
evsel.h tools lib traceevent, perf tools: Rename struct format{_field} to struct tep_format{_field} 2018-09-19 17:13:15 -03:00
evsel_fprintf.c tools lib traceevent, perf tools: Rename struct format{_field} to struct tep_format{_field} 2018-09-19 17:13:15 -03:00
expr.h
expr.y
find-vdso-map.c
genelf.c
genelf.h
genelf_debug.c
generate-cmdlist.sh
group.h
header.c tools lib traceevent, perf tools: Rename struct event_format to struct tep_event_format 2018-09-19 17:11:50 -03:00
header.h perf tools: Remove perf_tool from event_op2 2018-09-19 10:25:10 -03:00
help-unknown-cmd.c
help-unknown-cmd.h
hist.c
hist.h
intel-bts.c
intel-bts.h
intel-pt.c perf intel-pt: Add decoder flags for trace begin / end 2018-09-20 15:19:51 -03:00
intel-pt.h
intlist.c
intlist.h
jit.h
jitdump.c
jitdump.h
kvm-stat.h
levenshtein.c
levenshtein.h
llvm-utils.c perf bpf: Give precedence to bpf header dir 2018-08-30 15:52:20 -03:00
llvm-utils.h perf llvm: Allow passing options to llc in addition to clang 2018-08-20 08:54:58 -03:00
lzma.c perf tools: Add lzma_is_compressed function 2018-08-20 08:54:59 -03:00
machine.c perf record: Use unmapped IP for inline callchain cursors 2018-10-05 11:18:09 -03:00
machine.h tools lib traceevent, perf tools: Rename pevent_set_* APIs 2018-08-13 15:22:10 -03:00
map.c Merge remote-tracking branch 'acme/perf/urgent' into perf/core 2018-09-18 17:20:41 -03:00
map.h perf map: Optimize maps__fixup_overlappings() 2018-08-08 15:56:00 -03:00
mem-events.c
mem-events.h
mem2node.c
mem2node.h
memswap.c
memswap.h
metricgroup.c perf list: Unify metric group description format with PMU event description 2018-07-31 11:35:44 -03:00
metricgroup.h
mmap.c perf tools: Add 'struct perf_mmap' arg to record__write() 2018-09-19 10:25:11 -03:00
mmap.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-10-24 06:47:44 +01:00
namespaces.c perf tools: Check for null when copying nsinfo. 2018-08-13 15:39:09 -03:00
namespaces.h
ordered-events.c perf ordered_events: Prevent crossing max_alloc_size 2018-09-19 10:25:08 -03:00
ordered-events.h perf ordered_events: Add 'struct ordered_events_buffer' layer 2018-09-19 10:24:57 -03:00
parse-branch-options.c
parse-branch-options.h
parse-events.c perf parser: Improve error message for PMU address filters 2018-08-20 08:54:58 -03:00
parse-events.h
parse-events.l
parse-events.y
parse-regs-options.c
parse-regs-options.h
path.c
path.h
perf-hooks-list.h
perf-hooks.c
perf-hooks.h
perf_regs.c
perf_regs.h
pmu.c Revert "perf tools: Fix PMU term format max value calculation" 2018-10-09 10:48:55 -03:00
pmu.h
pmu.l
pmu.y
print_binary.c
print_binary.h
probe-event.c perf probe: Support SDT markers having reference counter (semaphore) 2018-09-24 04:44:54 -04:00
probe-event.h perf probe: Support SDT markers having reference counter (semaphore) 2018-09-24 04:44:54 -04:00
probe-file.c perf probe: Support SDT markers having reference counter (semaphore) 2018-09-24 04:44:54 -04:00
probe-file.h perf probe: Support SDT markers having reference counter (semaphore) 2018-09-24 04:44:54 -04:00
probe-finder.c
probe-finder.h
pstack.c
pstack.h
python-ext-sources
python.c tools lib traceevent, perf tools: Rename enum format_flags to enum tep_format_flags 2018-09-19 17:14:13 -03:00
rb_resort.h
rblist.c
rblist.h
record.c
rwsem.c
rwsem.h
s390-cpumsf-kernel.h perf report: Add raw report support for s390 auxiliary trace 2018-08-08 15:26:48 -03:00
s390-cpumsf.c perf report: Create auxiliary trace data files for s390 2018-08-30 15:52:20 -03:00
s390-cpumsf.h perf auxtrace: Support for perf report -D for s390 2018-08-03 10:34:18 -03:00
sane_ctype.h
session.c perf tools: Remove perf_tool from event_op3 2018-09-19 10:25:10 -03:00
session.h perf tools: Remove perf_tool from event_op2 2018-09-19 10:25:10 -03:00
setns.c
setup.py perf python: More portable way to make CFLAGS work with clang 2018-10-08 14:30:45 -03:00
smt.c
smt.h
sort.c tools lib traceevent, perf tools: Rename enum format_flags to enum tep_format_flags 2018-09-19 17:14:13 -03:00
sort.h tools lib traceevent, perf tools: Rename struct pevent to struct tep_handle 2018-08-10 15:29:35 -03:00
srcline.c perf report: Don't crash on invalid inline debug information 2018-10-16 14:52:21 -03:00
srcline.h
stat-display.c perf stat: Move the display functions to stat-display.c 2018-08-30 15:52:25 -03:00
stat-shadow.c perf stat: Pass a 'struct perf_stat_config' argument to global print functions 2018-08-30 15:52:23 -03:00
stat.c perf tools: Remove perf_tool from event_op2 2018-09-19 10:25:10 -03:00
stat.h perf tools: Remove perf_tool from event_op2 2018-09-19 10:25:10 -03:00
strbuf.c perf strbuf: Match va_{add,copy} with va_end 2018-10-08 14:23:44 -03:00
strbuf.h
strfilter.c
strfilter.h
string.c
string2.h
strlist.c
strlist.h
svghelper.c
svghelper.h
symbol-elf.c perf probe: Support SDT markers having reference counter (semaphore) 2018-09-24 04:44:54 -04:00
symbol-minimal.c
symbol.c
symbol.h perf probe: Support SDT markers having reference counter (semaphore) 2018-09-24 04:44:54 -04:00
symbol_fprintf.c
syscalltbl.c
syscalltbl.h
target.c
target.h
term.c
term.h
thread-stack.c perf tools: Improve thread_stack__process() for trace begin / end 2018-09-20 15:19:50 -03:00
thread-stack.h
thread.c
thread.h
thread_map.c
thread_map.h
time-utils.c
time-utils.h
tool.h perf tools: Remove perf_tool from event_op3 2018-09-19 10:25:10 -03:00
top.c
top.h
trace-event-info.c perf tools: Cleanup trace-event-info 'tdata' leak 2018-10-08 14:23:45 -03:00
trace-event-parse.c tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file 2018-10-08 15:05:37 -03:00
trace-event-read.c tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file 2018-10-08 15:05:37 -03:00
trace-event-scripting.c tools lib traceevent, perf tools: Rename struct pevent to struct tep_handle 2018-08-10 15:29:35 -03:00
trace-event.c tools lib traceevent, perf tools: Rename struct event_format to struct tep_event_format 2018-09-19 17:11:50 -03:00
trace-event.h tools lib traceevent: Rename struct plugin_list to struct tep_plugin_list 2018-09-19 17:29:26 -03:00
trigger.h
tsc.c
tsc.h
units.c
units.h
unwind-libdw.c
unwind-libdw.h
unwind-libunwind-local.c
unwind-libunwind.c
unwind.h
usage.c
util-cxx.h
util.c perf util: Make copyfile_offset() global 2018-09-19 10:25:12 -03:00
util.h perf util: Make copyfile_offset() global 2018-09-19 10:25:12 -03:00
values.c
values.h
vdso.c
vdso.h
xyarray.c
xyarray.h
zlib.c perf tools: Add gzip_is_compressed function 2018-08-20 08:54:59 -03:00