linux/tools/perf/util
Björn Töpel 7598f8bc13 perf probe: Fix probe definition for inlined functions
In commit 613f050d68 ("perf probe: Fix to probe on gcc generated
functions in modules"), the offset from symbol is, incorrectly, added
to the trace point address. This leads to incorrect probe trace points
for inlined functions and when using relative line number on symbols.

Prior this patch:
  $ perf probe -m nf_nat -D in_range
  p:probe/in_range nf_nat:in_range.isra.9+0
  $ perf probe -m i40e -D i40e_clean_rx_irq
  p:probe/i40e_clean_rx_irq i40e:i40e_napi_poll+2212
  $ perf probe -m i40e -D i40e_clean_rx_irq:16
  p:probe/i40e_clean_rx_irq i40e:i40e_lan_xmit_frame+626

After:
  $ perf probe -m nf_nat -D in_range
  p:probe/in_range nf_nat:in_range.isra.9+0
  $ perf probe -m i40e -D i40e_clean_rx_irq
  p:probe/i40e_clean_rx_irq i40e:i40e_napi_poll+1106
  $ perf probe -m i40e -D i40e_clean_rx_irq:16
  p:probe/i40e_clean_rx_irq i40e:i40e_napi_poll+2665

Committer testing:

Using 'pfunct', a tool found in the 'dwarves' package [1], one can ask what are
the functions that while not being explicitely marked as inline, were inlined
by the compiler:

  # pfunct --cc_inlined /lib/modules/4.12.0-rc4+/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko | head
  __ew32
  e1000_regdump
  e1000e_dump_ps_pages
  e1000_desc_unused
  e1000e_systim_to_hwtstamp
  e1000e_rx_hwtstamp
  e1000e_update_rdt_wa
  e1000e_update_tdt_wa
  e1000_put_txbuf
  e1000_consume_page

Then ask 'perf probe' to produce the kprobe_tracer probe definitions for two of
them:

  # perf probe -m e1000e -D e1000e_rx_hwtstamp
  p:probe/e1000e_rx_hwtstamp e1000e:e1000_receive_skb+74

  # perf probe -m e1000e -D e1000_consume_page
  p:probe/e1000_consume_page e1000e:e1000_clean_jumbo_rx_irq+876
  p:probe/e1000_consume_page_1 e1000e:e1000_clean_jumbo_rx_irq+1506
  p:probe/e1000_consume_page_2 e1000e:e1000_clean_rx_irq_ps+1074

Now lets concentrate on the 'e1000_consume_page' one, that was inlined twice in
e1000_clean_jumbo_rx_irq(), lets see what readelf says about the DWARF tags for
that function:

  $ readelf -wi /lib/modules/4.12.0-rc4+/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
  <SNIP>
  <1><13e27b>: Abbrev Number: 121 (DW_TAG_subprogram)
    <13e27c>   DW_AT_name        : (indirect string, offset: 0xa8945): e1000_clean_jumbo_rx_irq
    <13e287>   DW_AT_low_pc      : 0x17a30
  <3><13e6ef>: Abbrev Number: 119 (DW_TAG_inlined_subroutine)
    <13e6f0>   DW_AT_abstract_origin: <0x13ed2c>
    <13e6f4>   DW_AT_low_pc      : 0x17be6
  <SNIP>
  <1><13ed2c>: Abbrev Number: 142 (DW_TAG_subprogram)
     <13ed2e>   DW_AT_name        : (indirect string, offset: 0xa54c3): e1000_consume_page

So, the first time in e1000_clean_jumbo_rx_irq() where e1000_consume_page() is
inlined is at PC 0x17be6, which subtracted from e1000_clean_jumbo_rx_irq()'s
address, gives us the offset we should use in the probe definition:

  0x17be6 - 0x17a30 = 438

but above we have 876, which is twice as much.

Lets see the second inline expansion of e1000_consume_page() in
e1000_clean_jumbo_rx_irq():

  <3><13e86e>: Abbrev Number: 119 (DW_TAG_inlined_subroutine)
    <13e86f>   DW_AT_abstract_origin: <0x13ed2c>
    <13e873>   DW_AT_low_pc      : 0x17d21

  0x17d21 - 0x17a30 = 753

So we where adding it at twice the offset from the containing function as we
should.

And then after this patch:

  # perf probe -m e1000e -D e1000e_rx_hwtstamp
  p:probe/e1000e_rx_hwtstamp e1000e:e1000_receive_skb+37

  # perf probe -m e1000e -D e1000_consume_page
  p:probe/e1000_consume_page e1000e:e1000_clean_jumbo_rx_irq+438
  p:probe/e1000_consume_page_1 e1000e:e1000_clean_jumbo_rx_irq+753
  p:probe/e1000_consume_page_2 e1000e:e1000_clean_jumbo_rx_irq+1353
  #

Which matches the two first expansions and shows that because we were
doubling the offset it would spill over the next function:

  readelf -sw /lib/modules/4.12.0-rc4+/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
   673: 0000000000017a30  1626 FUNC    LOCAL  DEFAULT    2 e1000_clean_jumbo_rx_irq
   674: 0000000000018090  2013 FUNC    LOCAL  DEFAULT    2 e1000_clean_rx_irq_ps

This is the 3rd inline expansion of e1000_consume_page() in
e1000_clean_jumbo_rx_irq():

   <3><13ec77>: Abbrev Number: 119 (DW_TAG_inlined_subroutine)
    <13ec78>   DW_AT_abstract_origin: <0x13ed2c>
    <13ec7c>   DW_AT_low_pc      : 0x17f79

  0x17f79 - 0x17a30 = 1353

 So:

   0x17a30 + 2 * 1353 = 0x184c2

  And:

   0x184c2 - 0x18090 = 1074

Which explains the bogus third expansion for e1000_consume_page() to end up at:

   p:probe/e1000_consume_page_2 e1000e:e1000_clean_rx_irq_ps+1074

All fixed now :-)

[1] https://git.kernel.org/pub/scm/devel/pahole/pahole.git/

Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: Magnus Karlsson <magnus.karlsson@intel.com>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: stable@vger.kernel.org
Fixes: 613f050d68 ("perf probe: Fix to probe on gcc generated functions in modules")
Link: http://lkml.kernel.org/r/20170621164134.5701-1-bjorn.topel@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2017-06-22 16:08:09 -03:00
..
c++ perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
include perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
intel-pt-decoder perf/core improvements and fixes: 2017-03-16 17:29:23 +01:00
libunwind perf unwind: Fix wrongly used regs for aarch64 unwind 2016-06-23 10:30:31 -03:00
scripting-engines perf script: Fix outdated comment for perf-trace-python 2017-06-07 20:23:22 -03:00
Build perf memswap: Split the byteswap memory range wrappers from util.[ch] 2017-04-25 15:45:35 -03:00
PERF-VERSION-GEN
annotate.c perf annotate: Use dso__decompress_kmodule_path() 2017-06-08 15:39:02 -03:00
annotate.h perf annotate: Fix missing number of samples for source_line_samples 2017-04-04 21:08:00 -03:00
auxtrace.c perf tools: Move sane ctype stuff from util.h to sane_ctype.h 2017-04-19 13:01:48 -03:00
auxtrace.h perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
block-range.c perf annotate: Add branch stack / basic block 2016-09-08 13:44:03 -03:00
block-range.h perf annotate: Add branch stack / basic block 2016-09-08 13:44:03 -03:00
bpf-loader.c perf str{filter,list}: Disentangle headers 2017-04-19 13:01:52 -03:00
bpf-loader.h perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
bpf-prologue.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
bpf-prologue.h perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
build-id.c perf symbols: Kill dso__build_id_is_kmod() 2017-06-08 15:39:34 -03:00
build-id.h perf symbols: Kill dso__build_id_is_kmod() 2017-06-08 15:39:34 -03:00
cache.h perf tools: Remove support for command aliases 2017-03-28 11:19:59 -03:00
call-path.c perf tools: Refactor code to move call path handling out of thread-stack 2016-05-06 13:00:43 -03:00
call-path.h perf tools: Refactor code to move call path handling out of thread-stack 2016-05-06 13:00:43 -03:00
callchain.c perf report: Don't crash on invalid maps in `-g srcline` mode 2017-05-24 08:41:47 +02:00
callchain.h perf report: Enable sorting by srcline as key 2017-03-27 12:13:28 -03:00
cgroup.c perf tools: Replace STR() calls with __stringify() 2017-04-19 13:01:47 -03:00
cgroup.h perf cgroup: Convert cgroup_sel.refcnt from atomic_t to refcount_t 2017-03-03 19:07:14 -03:00
cloexec.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
cloexec.h tools build: Add test for sched_getcpu() 2017-03-03 19:07:19 -03:00
color.c perf tools: Uninline scnprintf() and vscnprint() 2016-07-12 15:20:24 -03:00
color.h perf tools: Remove string.h, unistd.h and sys/stat.h from util.h 2017-04-24 13:43:33 -03:00
comm.c perf tools: Remove string.h from util.h 2017-04-24 13:43:32 -03:00
comm.h
compress.h perf tools: Add compress.h for the *_decompress_to_file() headers 2017-04-24 12:33:33 -03:00
config.c perf tools: Remove string.h, unistd.h and sys/stat.h from util.h 2017-04-24 13:43:33 -03:00
config.h perf config: Mark where are config items from (user or system) 2016-11-14 13:10:37 -03:00
counts.c perf tools: Move path related functions to util/path.h 2017-04-19 13:01:53 -03:00
counts.h perf stat: Move perf_counts struct and functions into separate object 2015-08-08 14:16:49 -03:00
cpumap.c perf tools: Remove include dirent.h from util.h 2017-04-19 13:01:55 -03:00
cpumap.h perf cpumap: Introduce cpu_map__snprint_mask() 2017-03-03 19:07:17 -03:00
cs-etm.h perf tools: Add coresight etm PMU record capabilities 2016-09-22 12:19:40 -03:00
ctype.c perf tools: Move sane ctype stuff from util.h to sane_ctype.h 2017-04-19 13:01:48 -03:00
data-convert-bt.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
data-convert-bt.h perf data ctf: Pass convert options through opts structure 2016-06-28 10:54:55 -03:00
data-convert.h perf data ctf: Add 'all' option 2016-06-28 10:54:56 -03:00
data.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
data.h perf data: Add perf_data_file__switch() helper 2016-04-14 08:57:54 -03:00
db-export.c perf thread: Adopt get_main_thread from db-export.c 2016-05-30 12:41:43 -03:00
db-export.h perf script: Add call path id to exported sample in db export 2016-05-06 13:00:53 -03:00
debug.c perf tools: Remove poll.h and wait.h from util.h 2017-04-24 13:43:34 -03:00
debug.h perf debug: Move dump_stack() and sighandler_dump_stack() to debug.h 2017-04-24 12:33:31 -03:00
demangle-java.c perf tools: Move sane ctype stuff from util.h to sane_ctype.h 2017-04-19 13:01:48 -03:00
demangle-java.h perf symbols: add Java demangling support 2016-02-05 09:46:45 -03:00
demangle-rust.c perf symbols: Add Rust demangling 2016-07-12 16:12:38 -03:00
demangle-rust.h perf symbols: Add Rust demangling 2016-07-12 16:12:38 -03:00
drv_configs.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
drv_configs.h perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
dso.c perf tools: Consolidate error path in __open_dso() 2017-06-08 15:39:13 -03:00
dso.h perf tools: Introduce dso__decompress_kmodule_{fd,path} 2017-06-08 15:38:55 -03:00
dump-insn.c perf script: Add 'brstackinsn' for branch stacks 2017-03-16 09:24:35 -03:00
dump-insn.h perf script: Add 'brstackinsn' for branch stacks 2017-03-16 09:24:35 -03:00
dwarf-aux.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
dwarf-aux.h perf probe: Match linkage name with mangled name 2016-09-29 11:17:08 -03:00
dwarf-regs.c perf tools: Add include <linux/kernel.h> where ARRAY_SIZE() is used 2017-04-19 13:01:44 -03:00
env.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
env.h perf header: Transform nodes string info to struct 2016-07-04 19:39:01 -03:00
event.c perf symbols: Accept symbols starting at address 0 2017-05-02 18:23:04 -03:00
event.h perf tools: Fix spelling mistakes 2017-05-04 09:59:53 -03:00
evlist.c perf tools: Remove sys/ioctl.h from util.h 2017-04-24 13:43:32 -03:00
evlist.h perf tools: Add signal.h to places using its definitions 2017-04-20 13:22:43 -03:00
evsel.c perf evsel: Fix probing of precise_ip level for default cycles event 2017-06-14 15:44:29 -03:00
evsel.h perf pmu: Add support for MetricName JSON attribute 2017-03-23 11:42:31 -03:00
evsel_fprintf.c perf script: Add --inline option for debugging 2017-05-24 08:41:48 +02:00
expr.h perf tools: Add a simple expression parser for JSON 2017-03-23 11:39:27 -03:00
expr.y perf tools: Add a simple expression parser for JSON 2017-03-23 11:39:27 -03:00
find-vdso-map.c
genelf.c perf jit: Generate .eh_frame/.eh_frame_hdr in DSO 2016-10-24 11:07:40 -03:00
genelf.h perf jit: Generate .eh_frame/.eh_frame_hdr in DSO 2016-10-24 11:07:40 -03:00
genelf_debug.c perf jit: add source line info support 2016-02-05 12:33:09 -03:00
generate-cmdlist.sh perf tools: Do not show trace command if it's not compiled in 2016-01-08 12:46:17 -03:00
group.h perf stat: Basic support for TopDown in perf stat 2016-06-06 17:04:15 -03:00
header.c perf tools: Fix build with ARCH=x86_64 2017-06-14 15:44:29 -03:00
header.h perf pmu: Use pmu_events table to create aliases 2016-10-03 19:58:00 -03:00
help-unknown-cmd.c perf tools: Remove poll.h and wait.h from util.h 2017-04-24 13:43:34 -03:00
help-unknown-cmd.h perf tools: Move help_unknown_cmd() to its own file 2015-12-14 12:30:37 -03:00
hist.c perf tools: Use just forward declarations for struct thread where possible 2017-04-24 13:43:35 -03:00
hist.h perf tools: Add 'cgroup_id' sort order keyword 2017-03-14 15:17:37 -03:00
intel-bts.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
intel-bts.h perf tools: Add Intel BTS support 2015-08-21 11:34:10 -03:00
intel-pt.c perf memswap: Split the byteswap memory range wrappers from util.[ch] 2017-04-25 15:45:35 -03:00
intel-pt.h perf intel-pt: Record address filter in AUXTRACE_INFO event 2016-09-29 11:17:05 -03:00
intlist.c
intlist.h perf intlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:39:19 -03:00
jit.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
jitdump.c perf str{filter,list}: Disentangle headers 2017-04-19 13:01:52 -03:00
jitdump.h perf jit: Add unwinding support 2016-10-24 11:07:39 -03:00
kvm-stat.h perf kvm/powerpc: Port perf kvm stat to powerpc 2016-01-29 17:49:54 -03:00
levenshtein.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
levenshtein.h
llvm-utils.c perf tools: Remove poll.h and wait.h from util.h 2017-04-24 13:43:34 -03:00
llvm-utils.h perf llvm: Extract helpers in llvm-utils.c 2016-12-05 15:51:42 -03:00
lzma.c perf tools: Add compress.h for the *_decompress_to_file() headers 2017-04-24 12:33:33 -03:00
machine.c perf symbols: Set module info when build-id event found 2017-06-05 14:17:58 -03:00
machine.h perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
map.c perf symbols: Allow user probes on versioned symbols 2017-05-02 18:23:11 -03:00
map.h perf symbols: Allow user probes on versioned symbols 2017-05-02 18:23:11 -03:00
mem-events.c perf mem: Fix display of data source snoop indication 2017-04-24 12:33:32 -03:00
mem-events.h perf c2c report: Add struct c2c_stats::tot_hitm field 2016-11-23 10:44:05 -03:00
memswap.c perf memswap: Split the byteswap memory range wrappers from util.[ch] 2017-04-25 15:45:35 -03:00
memswap.h perf memswap: Split the byteswap memory range wrappers from util.[ch] 2017-04-25 15:45:35 -03:00
namespaces.c perf tools: Remove string.h from util.h 2017-04-24 13:43:32 -03:00
namespaces.h perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
ordered-events.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
ordered-events.h perf ordered_events: Introduce reinit() 2016-04-14 08:57:54 -03:00
parse-branch-options.c perf tools: Add missing object file to the python binding linkage list 2016-10-28 11:29:45 -02:00
parse-branch-options.h perf tools: Implement branch_type event parameter 2016-10-24 11:07:35 -03:00
parse-events.c perf tools: Remove sys/ioctl.h from util.h 2017-04-24 13:43:32 -03:00
parse-events.h perf list: Move extra details printing to new option 2017-03-23 11:42:31 -03:00
parse-events.l perf jevents: Handle events including .c and .o 2016-10-17 11:24:18 -03:00
parse-events.y perf pmu: Special case uncore_ prefix 2017-03-21 16:10:59 -03:00
parse-regs-options.c perf subcmd: Create subcmd library 2015-12-17 14:27:14 -03:00
parse-regs-options.h perf record: Add ability to name registers to record 2015-08-31 18:01:33 -03:00
path.c perf tools: Move path related functions to util/path.h 2017-04-19 13:01:53 -03:00
path.h perf tools: Move path related functions to util/path.h 2017-04-19 13:01:53 -03:00
perf-hooks-list.h perf tools: Introduce perf hooks 2016-11-29 12:13:27 -03:00
perf-hooks.c perf tools: Add include <linux/kernel.h> where ARRAY_SIZE() is used 2017-04-19 13:01:44 -03:00
perf-hooks.h perf tools: Pass context to perf hook functions 2016-12-05 15:51:42 -03:00
perf_regs.c perf/sdt/x86: Move OP parser to tools/perf/arch/x86/ 2017-03-28 12:25:30 -03:00
perf_regs.h perf/sdt/x86: Move OP parser to tools/perf/arch/x86/ 2017-03-28 12:25:30 -03:00
pmu.c perf tools: Remove string.h, unistd.h and sys/stat.h from util.h 2017-04-24 13:43:33 -03:00
pmu.h perf list: Move extra details printing to new option 2017-03-23 11:42:31 -03:00
pmu.l
pmu.y
print_binary.c perf tools: Move print_binary definitions to separate files 2017-04-19 13:01:50 -03:00
print_binary.h perf tools: Move print_binary definitions to separate files 2017-04-19 13:01:50 -03:00
probe-event.c perf probe: Fix probe definition for inlined functions 2017-06-22 16:08:09 -03:00
probe-event.h perf str{filter,list}: Disentangle headers 2017-04-19 13:01:52 -03:00
probe-file.c perf tools: Remove string.h, unistd.h and sys/stat.h from util.h 2017-04-24 13:43:33 -03:00
probe-file.h perf str{filter,list}: Disentangle headers 2017-04-19 13:01:52 -03:00
probe-finder.c perf str{filter,list}: Disentangle headers 2017-04-19 13:01:52 -03:00
probe-finder.h perf tools: Move sane ctype stuff from util.h to sane_ctype.h 2017-04-19 13:01:48 -03:00
pstack.c
pstack.h
python-ext-sources perf tools: Move units conversion/formatting routines to separate object 2017-04-20 13:22:44 -03:00
python.c perf callchain: Move callchain specific routines from util.[ch] 2017-04-24 13:43:26 -03:00
quote.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
quote.h perf quote: Disentangle headers 2016-07-12 15:19:55 -03:00
rb_resort.h perf rb_resort: Rename for_each() macros to for_each_entry() 2016-06-23 11:35:07 -03:00
rblist.c
rblist.h
record.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
sane_ctype.h perf tools: Move sane ctype stuff from util.h to sane_ctype.h 2017-04-19 13:01:48 -03:00
session.c perf memswap: Split the byteswap memory range wrappers from util.[ch] 2017-04-25 15:45:35 -03:00
session.h perf tools: Use just forward declarations for struct thread where possible 2017-04-24 13:43:35 -03:00
setup.py perf python: Filter out -specs=/a/b/c from the python binding cc options 2017-02-17 10:31:13 -03:00
sort.c perf tools: Use just forward declarations for struct thread where possible 2017-04-24 13:43:35 -03:00
sort.h perf tools: Use just forward declarations for struct thread where possible 2017-04-24 13:43:35 -03:00
srcline.c perf report: Do not drop last inlined frame 2017-05-24 08:41:48 +02:00
srcline.h perf tools: Move srcline definitions to separate header 2017-04-19 13:01:50 -03:00
stat-shadow.c perf pmu: Add support for MetricName JSON attribute 2017-03-23 11:42:31 -03:00
stat.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
stat.h perf stat: Output JSON MetricExpr metric 2017-03-23 11:42:30 -03:00
strbuf.c tools lib string: Adopt prefixcmp() from perf and subcmd 2017-04-26 15:49:21 -03:00
strbuf.h perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
strfilter.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
strfilter.h
string.c perf tools: Move extra string util functions to util/string2.h 2017-04-19 13:01:51 -03:00
string2.h perf tools: Move extra string util functions to util/string2.h 2017-04-19 13:01:51 -03:00
strlist.c perf tools: Remove string.h, unistd.h and sys/stat.h from util.h 2017-04-24 13:43:33 -03:00
strlist.h perf tools: Rename strlist_for_each() macros to for_each_entry() 2016-06-23 11:35:01 -03:00
svghelper.c perf timechart: Use NSEC_PER_U?SEC 2016-08-23 15:37:33 -03:00
svghelper.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
symbol-elf.c perf symbols: Keep DSO->symtab_type after decompress 2017-06-08 15:39:26 -03:00
symbol-minimal.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
symbol.c perf symbols: Kill dso__build_id_is_kmod() 2017-06-08 15:39:34 -03:00
symbol.h perf symbols: Allow user probes on versioned symbols 2017-05-02 18:23:11 -03:00
symbol_fprintf.c perf symbols: No need to check if sym->name is NULL 2017-02-13 17:22:34 -03:00
syscalltbl.c perf tools: Build syscall table .c header from kernel's syscall_64.tbl 2016-04-08 09:58:14 -03:00
syscalltbl.h perf tools: Allow generating per-arch syscall table arrays 2016-04-08 09:58:14 -03:00
target.c perf target: str_error_r() always returns the buffer it receives 2016-07-29 11:54:35 -03:00
target.h
term.c perf tools: Don't include terminal handling headers in util.h 2017-04-19 13:01:53 -03:00
term.h perf tools: Move term functions out of util.c 2015-12-09 13:42:02 -03:00
thread-stack.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
thread-stack.h perf script: Add callindent option 2016-06-23 17:04:26 -03:00
thread.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
thread.h perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
thread_map.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
thread_map.h perf thread_map: Convert thread_map.refcnt from atomic_t to refcount_t 2017-03-03 19:07:16 -03:00
time-utils.c perf tools: Move timestamp routines from util.h to time-utils.h 2017-04-20 13:22:44 -03:00
time-utils.h perf tools: Move timestamp routines from util.h to time-utils.h 2017-04-20 13:22:44 -03:00
tool.h perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
top.c
top.h perf tools: Remove sys/ioctl.h from util.h 2017-04-24 13:43:32 -03:00
trace-event-info.c perf tools: Create for_each_event macro for tracepoints iteration 2017-01-31 16:20:08 -03:00
trace-event-parse.c perf tools: Move sane ctype stuff from util.h to sane_ctype.h 2017-04-19 13:01:48 -03:00
trace-event-read.c perf utils: Null terminate buf in read_ftrace_printk() 2017-03-27 15:37:35 -03:00
trace-event-scripting.c perf scripting: Don't die if scripting can't be setup, disable it 2016-10-28 11:29:44 -02:00
trace-event.c perf tools: Introduce trace_event__tp_format_id() 2016-07-12 16:14:52 -03:00
trace-event.h perf util: Save pid-cmdline mapping into tracing header 2017-01-26 11:42:59 -03:00
trigger.h perf tools: Introduce trigger class 2016-04-28 09:58:58 -03:00
tsc.c perf tools: Use 64-bit shifts with (TSC) time conversion 2016-03-08 10:11:18 +01:00
tsc.h perf jit: Add support for using TSC as a timestamp 2016-04-01 18:42:55 -03:00
units.c perf units: Move parse_tag_value() to units.[ch] 2017-04-26 15:40:31 -03:00
units.h perf units: Move parse_tag_value() to units.[ch] 2017-04-26 15:40:31 -03:00
unwind-libdw.c perf unwind: Report module before querying isactivation in dwfl unwind 2017-06-16 14:37:30 -03:00
unwind-libdw.h perf tools: Use just forward declarations for struct thread where possible 2017-04-24 13:43:35 -03:00
unwind-libunwind-local.c perf report: Fix off-by-one for non-activation frames 2017-05-24 08:41:48 +02:00
unwind-libunwind.c perf unwind: Add initialized arg into unwind__prepare_access 2016-07-04 20:27:12 -03:00
unwind.h perf unwind: Provide only forward declarations for pointer types 2017-04-20 13:22:43 -03:00
usage.c perf tools: Simplify die() mechanism 2016-03-23 12:32:31 -03:00
util-cxx.h perf clang: Update test case to use real BPF script 2016-12-05 15:51:44 -03:00
util.c perf units: Move parse_tag_value() to units.[ch] 2017-04-26 15:40:31 -03:00
util.h tools lib string: Adopt prefixcmp() from perf and subcmd 2017-04-26 15:49:21 -03:00
values.c perf tools: Don't die on a print function 2017-04-04 12:11:07 -03:00
values.h perf tools: Use normal error reporting when processing PERF_RECORD_READ events 2016-10-24 11:07:44 -03:00
vdso.c perf tools: Include errno.h where needed 2017-04-19 13:01:51 -03:00
vdso.h
xyarray.c perf tools: Remove string.h from util.h 2017-04-24 13:43:32 -03:00
xyarray.h
zlib.c perf tools: Add compress.h for the *_decompress_to_file() headers 2017-04-24 12:33:33 -03:00