linux/tools/perf
Benjamin Peterson b92675f4a9 perf trace beauty ioctl: Fix off-by-one error in cmd->string table
While tracing a program that calls isatty(3), I noticed that strace
reported TCGETS for the request argument of the underlying ioctl(2)
syscall while perf trace reported TCSETS. strace is corrrect. The bug in
perf was due to the tty ioctl beauty table starting at 0x5400 rather
than 0x5401.

Committer testing:

  Using augmented_raw_syscalls.o and settings to make 'perf trace'
  use strace formatting, i.e. with this in ~/.perfconfig

  # cat ~/.perfconfig
  [trace]
	add_events = /home/acme/git/linux/tools/perf/examples/bpf/augmented_raw_syscalls.c
	show_zeros = yes
	show_duration = no
	no_inherit = yes
	show_timestamp = no
	show_arg_names = no
	args_alignment = 40
	show_prefix = yes

  # strace -e ioctl stty > /dev/null
  ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
  ioctl(1, TIOCGWINSZ, 0x7fff8a9b0860)    = -1 ENOTTY (Inappropriate ioctl for device)
  ioctl(1, TCGETS, 0x7fff8a9b0540)        = -1 ENOTTY (Inappropriate ioctl for device)
  +++ exited with 0 +++
  #

Before:

  # perf trace -e ioctl stty > /dev/null
  ioctl(0, TCSETS, 0x7fff2cf79f20)        = 0
  ioctl(1, TIOCSWINSZ, 0x7fff2cf79f40)    = -1 ENOTTY (Inappropriate ioctl for device)
  ioctl(1, TCSETS, 0x7fff2cf79c20)        = -1 ENOTTY (Inappropriate ioctl for device)
  #

After:

  # perf trace -e ioctl stty > /dev/null
  ioctl(0, TCGETS, 0x7ffed0763920)        = 0
  ioctl(1, TIOCGWINSZ, 0x7ffed0763940)    = -1 ENOTTY (Inappropriate ioctl for device)
  ioctl(1, TCGETS, 0x7ffed0763620)        = -1 ENOTTY (Inappropriate ioctl for device)
  #

Signed-off-by: Benjamin Peterson <benjamin@python.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Fixes: 1cc47f2d46 ("perf trace beauty ioctl: Improve 'cmd' beautifier")
Link: http://lkml.kernel.org/r/20190823033625.18814-1-benjamin@python.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2019-08-26 11:58:29 -03:00
..
arch perf record: Move record_opts and other record decls out of perf.h 2019-08-26 11:58:22 -03:00
bench Merge remote-tracking branch 'torvalds/master' into perf/core 2019-08-12 16:25:00 -03:00
Documentation perf report: Add --switch-on/--switch-off events 2019-08-16 12:14:33 -03:00
examples/bpf perf trace beauty: Add BPF augmenter for the 'rename' syscall 2019-07-29 18:34:42 -03:00
include/bpf perf include bpf: Add bpf_tail_call() prototype 2019-07-29 18:34:40 -03:00
jvmti tools build: Check if gettid() is available before providing helper 2019-07-07 17:53:09 -03:00
lib libperf: Fix alignment trap with xyarray contents in 'perf stat' 2019-08-22 17:16:57 -03:00
pmu-events perf vendor events intel: Add Tremontx event file v1.02 2019-08-15 12:04:04 -03:00
python treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 407 2019-06-05 17:37:14 +02:00
scripts perf scripts python: export-to-postgresql.py: Export switch events 2019-07-10 13:05:12 -03:00
tests perf tests: Fixes hang in zstd compression test by changing the source of random data 2019-08-26 11:58:29 -03:00
trace perf trace beauty ioctl: Fix off-by-one error in cmd->string table 2019-08-26 11:58:29 -03:00
ui perf sort: Remove needless headers from sort.h, provide fwd struct decls 2019-08-26 11:58:29 -03:00
util perf sort: Remove needless headers from sort.h, provide fwd struct decls 2019-08-26 11:58:29 -03:00
.gitignore
Build perf tools: Rename build libperf to perf 2019-02-14 15:18:08 -03:00
builtin-annotate.c perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
builtin-bench.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
builtin-buildid-cache.c perf data: Add global path holder 2019-02-22 16:52:07 -03:00
builtin-buildid-list.c perf data: Add global path holder 2019-02-22 16:52:07 -03:00
builtin-c2c.c perf cacheline: Move cacheline related routines to separate files 2019-08-26 11:58:29 -03:00
builtin-config.c perf tools: Add missing headers, mostly stdlib.h 2019-07-09 10:13:22 -03:00
builtin-data.c
builtin-diff.c perf srcline: Add missing srcline.h header to files needing its defs 2019-08-26 11:58:29 -03:00
builtin-evlist.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
builtin-ftrace.c libperf: Add perf_thread_map__nr/perf_thread_map__pid functions 2019-08-22 17:16:57 -03:00
builtin-help.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
builtin-inject.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
builtin-kallsyms.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 251 2019-06-05 17:30:26 +02:00
builtin-kmem.c perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
builtin-kvm.c libperf: Add threads to struct perf_evlist 2019-07-29 18:34:45 -03:00
builtin-list.c perf list: Output tool events 2019-04-01 14:49:25 -03:00
builtin-lock.c perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
builtin-mem.c perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
builtin-probe.c perf probe: Avoid calling freeing routine multiple times for same pointer 2019-07-23 09:04:41 -03:00
builtin-record.c perf record: Move record_opts and other record decls out of perf.h 2019-08-26 11:58:22 -03:00
builtin-report.c perf srcline: Add missing srcline.h header to files needing its defs 2019-08-26 11:58:29 -03:00
builtin-sched.c libperf: Add perf_cpu_map__new()/perf_cpu_map__read() functions 2019-07-29 18:34:45 -03:00
builtin-script.c perf srcline: Add missing srcline.h header to files needing its defs 2019-08-26 11:58:29 -03:00
builtin-stat.c perf record: Move record_opts and other record decls out of perf.h 2019-08-26 11:58:22 -03:00
builtin-timechart.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
builtin-top.c perf top: Add --switch-on/--switch-off events 2019-08-15 16:03:26 -03:00
builtin-trace.c perf record: Move record_opts and other record decls out of perf.h 2019-08-26 11:58:22 -03:00
builtin-version.c perf version: Fix segfault due to missing OPT_END() 2019-07-15 07:59:05 -03:00
builtin.h perf script: Add array bound checking to list_scripts 2019-03-11 16:33:19 -03:00
check-headers.sh tools headers: Grab copy of linux/const.h, needed by linux/bits.h 2019-08-20 12:08:23 -03:00
command-list.txt
CREDITS
design.txt perf/doc: Update design.txt for exclude_{host|guest} flags 2019-01-21 11:01:18 +01:00
Makefile
Makefile.config perf tools: tools/include should come before tools/uapi/include 2019-08-20 12:07:22 -03:00
Makefile.perf tools build: Add capability-related feature detection 2019-08-12 17:14:14 -03:00
MANIFEST tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
perf-archive.sh
perf-completion.sh
perf-read-vdso.c perf tools: Make find_vdso_map() more modular 2019-01-08 13:28:13 -03:00
perf-sys.h
perf-with-kcore.sh Merge branch 'x86/cpu' into perf/core, to pick up dependent changes 2019-06-17 12:29:16 +02:00
perf.c perf config: Honour $PERF_CONFIG env var to specify alternate .perfconfig 2019-08-12 16:26:02 -03:00
perf.h perf record: Move record_opts and other record decls out of perf.h 2019-08-26 11:58:22 -03:00