2013-03-15 09:28:49 -06:00
2014-01-03 07:32:32 -07:00
ifeq ($(src-perf),)
src-perf := $(srctree)/tools/perf
endif
2013-03-15 09:28:49 -06:00
2014-01-03 07:32:32 -07:00
ifeq ($(obj-perf),)
obj-perf := $(OUTPUT)
2013-03-15 09:28:49 -06:00
endif
2014-01-03 07:32:32 -07:00
ifneq ($(obj-perf),)
obj-perf := $(abspath $(obj-perf))/
endif
2015-07-19 03:30:05 -06:00
$(shell printf "" > $(OUTPUT).config-detected)
2015-07-01 05:54:42 -06:00
detected = $(shell echo "$(1)=y" >> $(OUTPUT).config-detected)
detected_var = $(shell echo "$(1)=$($(1))" >> $(OUTPUT).config-detected)
2014-12-31 09:37:00 -07:00
2014-01-03 07:32:32 -07:00
CFLAGS := $(EXTRA_CFLAGS) $(EXTRA_WARNINGS)
2016-01-11 06:47:58 -07:00
include $(srctree)/tools/scripts/Makefile.arch
2014-01-03 07:32:32 -07:00
2014-12-29 07:03:09 -07:00
$(call detected_var,ARCH)
2014-01-03 07:32:32 -07:00
NO_PERF_REGS := 1
2016-02-19 22:02:47 -07:00
# Additional ARCH settings for ppc
ifeq ($(ARCH),powerpc)
NO_PERF_REGS := 0
2016-04-28 03:31:09 -06:00
LIBUNWIND_LIBS := -lunwind -lunwind-ppc64
2016-02-19 22:02:47 -07:00
endif
2014-01-03 07:32:32 -07:00
# Additional ARCH settings for x86
ifeq ($(ARCH),x86)
2014-12-29 07:03:09 -07:00
$(call detected,CONFIG_X86)
2015-01-11 19:20:55 -07:00
ifeq (${IS_64_BIT}, 1)
perf tools: Build syscall table .c header from kernel's syscall_64.tbl
We used libaudit to map ids to syscall names and vice-versa, but that
imposes a delay in supporting new syscalls, having to wait for libaudit
to get those new syscalls on its tables.
To remove that delay, for x86_64 initially, grab a copy of
arch/x86/entry/syscalls/syscall_64.tbl and use it to generate those
tables.
Syscalls currently not available in audit-libs:
# trace -e copy_file_range,membarrier,mlock2,pread64,pwrite64,timerfd_create,userfaultfd
Error: Invalid syscall copy_file_range, membarrier, mlock2, pread64, pwrite64, timerfd_create, userfaultfd
Hint: try 'perf list syscalls:sys_enter_*'
Hint: and: 'man syscalls'
#
With this patch:
# trace -e copy_file_range,membarrier,mlock2,pread64,pwrite64,timerfd_create,userfaultfd
8505.733 ( 0.010 ms): gnome-shell/2519 timerfd_create(flags: 524288) = 36
8506.688 ( 0.005 ms): gnome-shell/2519 timerfd_create(flags: 524288) = 40
30023.097 ( 0.025 ms): qemu-system-x8/24629 pwrite64(fd: 18, buf: 0x7f63ae382000, count: 4096, pos: 529592320) = 4096
31268.712 ( 0.028 ms): qemu-system-x8/24629 pwrite64(fd: 18, buf: 0x7f63afd8b000, count: 4096, pos: 2314133504) = 4096
31268.854 ( 0.016 ms): qemu-system-x8/24629 pwrite64(fd: 18, buf: 0x7f63afda2000, count: 4096, pos: 2314137600) = 4096
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-51xfjbxevdsucmnbc4ka5r88@git.kernel.org
[ Added make dep for 'prepare' in 'LIBPERF_IN', fix by Wang Nan to fix parallell build ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2016-04-04 16:05:36 -06:00
CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT -DHAVE_SYSCALL_TABLE -I$(OUTPUT)arch/x86/include/generated
2013-04-14 20:06:58 -06:00
ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
2013-11-01 07:51:32 -06:00
LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
2014-12-29 05:52:36 -07:00
$(call detected,CONFIG_X86_64)
2013-11-01 07:51:32 -06:00
else
2015-05-19 07:05:43 -06:00
LIBUNWIND_LIBS = -lunwind-x86 -llzma -lunwind
2013-04-14 20:06:58 -06:00
endif
NO_PERF_REGS := 0
2013-03-15 09:28:49 -06:00
endif
2014-04-28 06:32:33 -06:00
2013-09-26 05:36:36 -06:00
ifeq ($(ARCH),arm)
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-arm
endif
2013-03-15 09:28:49 -06:00
2014-04-28 06:32:33 -06:00
ifeq ($(ARCH),arm64)
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-aarch64
endif
2014-12-30 05:30:04 -07:00
ifeq ($(NO_PERF_REGS),0)
$(call detected,CONFIG_PERF_REGS)
endif
2014-05-16 02:41:11 -06:00
# So far there's only x86 and arm libdw unwind support merged in perf.
2014-04-20 02:50:00 -06:00
# Disable it on all other architectures in case libdw unwind
# support is detected in system. Add supported architectures
# to the check.
2014-05-16 02:41:11 -06:00
ifneq ($(ARCH),$(filter $(ARCH),x86 arm))
2014-04-20 02:50:00 -06:00
NO_LIBDW_DWARF_UNWIND := 1
endif
2013-12-10 05:24:04 -07:00
ifeq ($(LIBUNWIND_LIBS),)
NO_LIBUNWIND := 1
endif
2016-01-28 22:57:30 -07:00
#
# For linking with debug library, run like:
#
# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
#
2016-06-02 21:33:10 -06:00
libunwind_arch_set_flags = $(eval $(libunwind_arch_set_flags_code))
define libunwind_arch_set_flags_code
FEATURE_CHECK_CFLAGS-libunwind-$(1) = -I$(LIBUNWIND_DIR)/include
FEATURE_CHECK_LDFLAGS-libunwind-$(1) = -L$(LIBUNWIND_DIR)/lib
endef
2016-01-28 22:57:30 -07:00
ifdef LIBUNWIND_DIR
LIBUNWIND_CFLAGS = -I$(LIBUNWIND_DIR)/include
LIBUNWIND_LDFLAGS = -L$(LIBUNWIND_DIR)/lib
2016-06-02 21:33:10 -06:00
LIBUNWIND_ARCHS = x86 x86_64 arm aarch64 debug-frame-arm debug-frame-aarch64
$(foreach libunwind_arch,$(LIBUNWIND_ARCHS),$(call libunwind_arch_set_flags,$(libunwind_arch)))
2016-01-28 22:57:30 -07:00
endif
# Set per-feature check compilation flags
FEATURE_CHECK_CFLAGS-libunwind = $(LIBUNWIND_CFLAGS)
2016-06-02 21:33:14 -06:00
FEATURE_CHECK_LDFLAGS-libunwind = $(LIBUNWIND_LDFLAGS) $(LIBUNWIND_LIBS)
2016-01-28 22:57:30 -07:00
FEATURE_CHECK_CFLAGS-libunwind-debug-frame = $(LIBUNWIND_CFLAGS)
2016-06-02 21:33:14 -06:00
FEATURE_CHECK_LDFLAGS-libunwind-debug-frame = $(LIBUNWIND_LDFLAGS) $(LIBUNWIND_LIBS)
2013-12-10 05:24:04 -07:00
2013-03-15 09:28:49 -06:00
ifeq ($(NO_PERF_REGS),0)
2013-09-30 04:07:11 -06:00
CFLAGS += -DHAVE_PERF_REGS_SUPPORT
2013-03-15 09:28:49 -06:00
endif
2013-03-24 17:32:01 -06:00
2016-01-28 22:57:30 -07:00
# for linking with debug library, run like:
# make DEBUG=1 LIBDW_DIR=/opt/libdw/
ifdef LIBDW_DIR
LIBDW_CFLAGS := -I$(LIBDW_DIR)/include
LIBDW_LDFLAGS := -L$(LIBDW_DIR)/lib
2014-02-19 08:52:56 -07:00
endif
2016-01-28 22:57:30 -07:00
FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $(LIBDW_CFLAGS)
FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $(LIBDW_LDFLAGS) -ldw
2014-02-19 08:52:56 -07:00
2016-01-28 22:57:30 -07:00
# for linking with debug library, run like:
# make DEBUG=1 LIBBABELTRACE_DIR=/opt/libbabeltrace/
ifdef LIBBABELTRACE_DIR
LIBBABELTRACE_CFLAGS := -I$(LIBBABELTRACE_DIR)/include
LIBBABELTRACE_LDFLAGS := -L$(LIBBABELTRACE_DIR)/lib
2015-02-20 15:16:58 -07:00
endif
2016-01-28 22:57:30 -07:00
FEATURE_CHECK_CFLAGS-libbabeltrace := $(LIBBABELTRACE_CFLAGS)
FEATURE_CHECK_LDFLAGS-libbabeltrace := $(LIBBABELTRACE_LDFLAGS) -lbabeltrace-ctf
2015-02-20 15:16:58 -07:00
2016-07-11 13:38:05 -06:00
FEATURE_CHECK_CFLAGS-bpf = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi
2013-05-24 06:35:23 -06:00
# include ARCH specific config
-include $(src-perf)/arch/$(ARCH)/Makefile
2015-09-14 20:02:49 -06:00
ifdef PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
CFLAGS += -DHAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
endif
2016-03-18 10:57:20 -06:00
include $(srctree)/tools/scripts/utilities.mak
2013-03-24 17:32:01 -06:00
ifeq ($(call get-executable,$(FLEX)),)
2013-04-14 20:06:58 -06:00
dummy := $(error Error: $(FLEX) is missing on this system, please install it)
2013-03-24 17:32:01 -06:00
endif
ifeq ($(call get-executable,$(BISON)),)
2013-04-14 20:06:58 -06:00
dummy := $(error Error: $(BISON) is missing on this system, please install it)
2013-03-24 17:32:01 -06:00
endif
2013-03-24 17:40:48 -06:00
# Treat warnings as errors unless directed not to
ifneq ($(WERROR),0)
2013-04-14 20:06:58 -06:00
CFLAGS += -Werror
2013-03-24 17:40:48 -06:00
endif
2013-10-22 01:34:05 -06:00
ifndef DEBUG
DEBUG := 0
endif
2013-10-10 00:05:25 -06:00
ifeq ($(DEBUG),0)
2013-04-14 20:06:58 -06:00
CFLAGS += -O6
2013-03-24 17:40:48 -06:00
endif
ifdef PARSER_DEBUG
2013-04-14 20:06:58 -06:00
PARSER_DEBUG_BISON := -t
PARSER_DEBUG_FLEX := -d
CFLAGS += -DPARSER_DEBUG
2014-12-29 09:42:46 -07:00
$(call detected_var,PARSER_DEBUG_BISON)
$(call detected_var,PARSER_DEBUG_FLEX)
2013-03-24 17:40:48 -06:00
endif
2016-01-28 22:57:30 -07:00
# Try different combinations to accommodate systems that only have
# python[2][-config] in weird combinations but always preferring
# python2 and python2-config as per pep-0394. If we catch a
# python[-config] in version 3, the version check will kill it.
PYTHON2 := $(if $(call get-executable,python2),python2,python)
override PYTHON := $(call get-executable-or-default,PYTHON,$(PYTHON2))
PYTHON2_CONFIG := \
$(if $(call get-executable,$(PYTHON)-config),$(PYTHON)-config,python-config)
override PYTHON_CONFIG := \
$(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON2_CONFIG))
2014-07-29 00:57:19 -06:00
2016-01-28 22:57:30 -07:00
PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG))
2014-07-29 00:57:19 -06:00
2016-01-28 22:57:30 -07:00
PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null)
PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
2014-07-29 00:57:19 -06:00
2016-01-28 22:57:30 -07:00
FEATURE_CHECK_CFLAGS-libpython := $(PYTHON_EMBED_CCOPTS)
FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)
FEATURE_CHECK_CFLAGS-libpython-version := $(PYTHON_EMBED_CCOPTS)
FEATURE_CHECK_LDFLAGS-libpython-version := $(PYTHON_EMBED_LDOPTS)
2014-07-29 00:57:19 -06:00
2013-04-14 20:32:28 -06:00
CFLAGS += -fno-omit-frame-pointer
CFLAGS += -ggdb3
CFLAGS += -funwind-tables
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -std=gnu99
2013-03-21 04:30:54 -06:00
2014-04-27 10:51:05 -06:00
# Enforce a non-executable stack, as we may regress (again) in the future by
# adding assembler files missing the .GNU-stack linker note.
LDFLAGS += -Wl,-z,noexecstack
2014-11-06 22:20:06 -07:00
EXTLIBS = -lpthread -lrt -lm -ldl
2013-03-24 17:40:48 -06:00
2016-01-14 21:00:18 -07:00
ifeq ($(FEATURES_DUMP),)
2015-03-01 13:19:44 -07:00
include $(srctree)/tools/build/Makefile.feature
2016-01-14 21:00:18 -07:00
else
include $(FEATURES_DUMP)
endif
2013-10-01 06:14:31 -06:00
2013-09-30 05:48:44 -06:00
ifeq ($(feature-stackprotector-all), 1)
2013-04-14 20:06:58 -06:00
CFLAGS += -fstack-protector-all
2013-03-24 17:40:48 -06:00
endif
2013-10-10 00:05:25 -06:00
ifeq ($(DEBUG),0)
2013-10-07 01:38:28 -06:00
ifeq ($(feature-fortify-source), 1)
2013-04-14 20:06:58 -06:00
CFLAGS += -D_FORTIFY_SOURCE=2
endif
2013-03-24 17:40:48 -06:00
endif
2013-04-14 20:32:28 -06:00
CFLAGS += -I$(src-perf)/util/include
CFLAGS += -I$(src-perf)/arch/$(ARCH)/include
2016-07-11 07:28:48 -06:00
CFLAGS += -I$(srctree)/tools/include/uapi
2014-01-09 07:00:52 -07:00
CFLAGS += -I$(srctree)/tools/include/
2016-07-11 18:16:52 -06:00
CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/uapi
CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/
2016-07-11 13:38:05 -06:00
CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/
2013-05-24 06:35:23 -06:00
# $(obj-perf) for generated common-cmds.h
# $(obj-perf)/util for generated bison/flex headers
ifneq ($(OUTPUT),)
2013-04-14 20:32:28 -06:00
CFLAGS += -I$(obj-perf)/util
CFLAGS += -I$(obj-perf)
2013-05-24 06:35:23 -06:00
endif
2013-04-14 20:32:28 -06:00
CFLAGS += -I$(src-perf)/util
CFLAGS += -I$(src-perf)
2015-03-01 12:11:24 -07:00
CFLAGS += -I$(srctree)/tools/lib/
2013-05-24 06:35:23 -06:00
2013-04-14 20:32:28 -06:00
CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
2013-03-24 17:40:48 -06:00
2014-07-14 04:02:53 -06:00
ifeq ($(feature-sync-compare-and-swap), 1)
CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
endif
2015-01-13 06:43:24 -07:00
ifeq ($(feature-pthread-attr-setaffinity-np), 1)
CFLAGS += -DHAVE_PTHREAD_ATTR_SETAFFINITY_NP
endif
2013-05-24 06:35:24 -06:00
ifndef NO_BIONIC
2013-10-29 10:43:15 -06:00
$(call feature_check,bionic)
2013-09-30 06:11:46 -06:00
ifeq ($(feature-bionic), 1)
BIONIC := 1
EXTLIBS := $(filter-out -lrt,$(EXTLIBS))
EXTLIBS := $(filter-out -lpthread,$(EXTLIBS))
endif
2013-03-24 17:40:48 -06:00
endif
2013-03-24 17:45:08 -06:00
ifdef NO_LIBELF
2013-04-14 20:06:58 -06:00
NO_DWARF := 1
NO_DEMANGLE := 1
NO_LIBUNWIND := 1
2014-02-19 08:52:57 -07:00
NO_LIBDW_DWARF_UNWIND := 1
2015-10-14 06:41:12 -06:00
NO_LIBBPF := 1
2013-03-24 17:45:08 -06:00
else
2013-09-30 06:20:25 -06:00
ifeq ($(feature-libelf), 0)
2013-10-07 02:34:20 -06:00
ifeq ($(feature-glibc), 1)
2013-09-30 06:11:16 -06:00
LIBC_SUPPORT := 1
endif
ifeq ($(BIONIC),1)
LIBC_SUPPORT := 1
endif
ifeq ($(LIBC_SUPPORT),1)
2016-06-16 02:54:20 -06:00
msg := $(warning No libelf found, disables 'probe' tool and BPF support in 'perf record', please install libelf-dev, libelf-devel or elfutils-libelf-devel);
2013-09-30 06:11:16 -06:00
NO_LIBELF := 1
NO_DWARF := 1
NO_DEMANGLE := 1
2014-03-25 06:35:11 -06:00
NO_LIBUNWIND := 1
NO_LIBDW_DWARF_UNWIND := 1
2015-10-14 06:41:12 -06:00
NO_LIBBPF := 1
2013-09-30 06:11:16 -06:00
else
2014-06-05 09:46:04 -06:00
ifneq ($(filter s% -static%,$(LDFLAGS),),)
msg := $(error No static glibc found, please install glibc-static);
else
msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]);
endif
2013-09-30 06:11:16 -06:00
endif
2013-04-14 20:06:58 -06:00
else
2014-02-19 08:52:58 -07:00
ifndef NO_LIBDW_DWARF_UNWIND
ifneq ($(feature-libdw-dwarf-unwind),1)
NO_LIBDW_DWARF_UNWIND := 1
msg := $(warning No libdw DWARF unwind found, Please install elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR);
endif
endif
2013-10-07 02:35:39 -06:00
ifneq ($(feature-dwarf), 1)
2013-09-30 06:11:16 -06:00
msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev);
NO_DWARF := 1
2016-04-05 08:33:41 -06:00
else
ifneq ($(feature-dwarf_getlocations), 1)
msg := $(warning Old libdw.h, finding variables at given 'perf probe' point will not work, install elfutils-devel/libdw-dev >= 0.157);
else
CFLAGS += -DHAVE_DWARF_GETLOCATIONS
endif # dwarf_getlocations
2013-09-30 06:11:16 -06:00
endif # Dwarf support
2013-10-02 07:30:35 -06:00
endif # libelf support
2013-03-24 17:45:08 -06:00
endif # NO_LIBELF
2015-04-29 05:15:31 -06:00
ifdef NO_DWARF
NO_LIBDW_DWARF_UNWIND := 1
endif
2013-03-24 17:45:08 -06:00
ifndef NO_LIBELF
2013-10-07 02:05:51 -06:00
CFLAGS += -DHAVE_LIBELF_SUPPORT
2014-11-06 22:20:06 -07:00
EXTLIBS += -lelf
2014-12-29 15:52:25 -07:00
$(call detected,CONFIG_LIBELF)
2013-03-24 17:48:14 -06:00
2013-09-30 07:02:28 -06:00
ifeq ($(feature-libelf-mmap), 1)
2013-10-07 02:05:51 -06:00
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
endif
2013-03-24 17:48:14 -06:00
2013-09-30 06:35:27 -06:00
ifeq ($(feature-libelf-getphdrnum), 1)
2013-10-07 02:05:51 -06:00
CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
endif
2016-07-12 09:19:09 -06:00
ifeq ($(feature-libelf-gelf_getnote), 1)
CFLAGS += -DHAVE_GELF_GETNOTE_SUPPORT
else
msg := $(warning gelf_getnote() not found on libelf, SDT support disabled);
endif
2016-07-04 16:35:47 -06:00
ifeq ($(feature-libelf-getshdrstrndx), 1)
CFLAGS += -DHAVE_ELF_GETSHDRSTRNDX_SUPPORT
endif
2013-10-07 02:05:51 -06:00
ifndef NO_DWARF
ifeq ($(origin PERF_HAVE_DWARF_REGS), undefined)
msg := $(warning DWARF register mappings have not been defined for architecture $(ARCH), DWARF support disabled);
NO_DWARF := 1
else
CFLAGS += -DHAVE_DWARF_SUPPORT $(LIBDW_CFLAGS)
LDFLAGS += $(LIBDW_LDFLAGS)
2015-08-12 16:48:37 -06:00
DWARFLIBS := -ldw
ifeq ($(findstring -static,${LDFLAGS}),-static)
DWARFLIBS += -lelf -lebl -lz -llzma -lbz2
endif
EXTLIBS += ${DWARFLIBS}
2014-12-29 16:06:25 -07:00
$(call detected,CONFIG_DWARF)
2013-10-07 02:05:51 -06:00
endif # PERF_HAVE_DWARF_REGS
endif # NO_DWARF
2015-10-14 06:41:12 -06:00
ifndef NO_LIBBPF
ifeq ($(feature-bpf), 1)
CFLAGS += -DHAVE_LIBBPF_SUPPORT
$(call detected,CONFIG_LIBBPF)
endif
2015-11-16 05:10:10 -07:00
ifndef NO_DWARF
ifdef PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
CFLAGS += -DHAVE_BPF_PROLOGUE
$(call detected,CONFIG_BPF_PROLOGUE)
else
msg := $(warning BPF prologue is not supported by architecture $(ARCH), missing regs_query_register_offset());
endif
else
msg := $(warning DWARF support is off, BPF prologue is disabled);
endif
2015-10-14 06:41:12 -06:00
endif # NO_LIBBPF
2013-03-24 17:45:08 -06:00
endif # NO_LIBELF
2013-03-24 17:53:03 -06:00
2016-07-12 04:05:56 -06:00
ifndef NO_SDT
ifneq ($(feature-sdt), 1)
msg := $(warning No sys/sdt.h found, no SDT events are defined, please install systemtap-sdt-devel or systemtap-sdt-dev);
NO_SDT := 1;
else
CFLAGS += -DHAVE_SDT_EVENT
$(call detected,CONFIG_SDT_EVENT)
endif
endif
2016-03-10 09:41:13 -07:00
ifdef PERF_HAVE_JITDUMP
2016-10-13 04:59:36 -06:00
ifndef NO_LIBELF
2016-03-10 09:41:13 -07:00
$(call detected,CONFIG_JITDUMP)
CFLAGS += -DHAVE_JITDUMP
endif
endif
2014-08-25 02:25:06 -06:00
ifeq ($(ARCH),powerpc)
ifndef NO_DWARF
CFLAGS += -DHAVE_SKIP_CALLCHAIN_IDX
endif
endif
2013-03-24 17:53:03 -06:00
ifndef NO_LIBUNWIND
2016-06-02 21:33:15 -06:00
have_libunwind :=
2016-06-02 21:33:22 -06:00
ifeq ($(feature-libunwind-x86), 1)
$(call detected,CONFIG_LIBUNWIND_X86)
CFLAGS += -DHAVE_LIBUNWIND_X86_SUPPORT
LDFLAGS += -lunwind-x86
2016-06-15 05:03:56 -06:00
EXTLIBS_LIBUNWIND += -lunwind-x86
2016-06-02 21:33:22 -06:00
have_libunwind = 1
endif
2016-06-02 21:33:23 -06:00
ifeq ($(feature-libunwind-aarch64), 1)
$(call detected,CONFIG_LIBUNWIND_AARCH64)
CFLAGS += -DHAVE_LIBUNWIND_AARCH64_SUPPORT
LDFLAGS += -lunwind-aarch64
2016-06-15 05:03:56 -06:00
EXTLIBS_LIBUNWIND += -lunwind-aarch64
2016-06-02 21:33:23 -06:00
have_libunwind = 1
$(call feature_check,libunwind-debug-frame-aarch64)
ifneq ($(feature-libunwind-debug-frame-aarch64), 1)
msg := $(warning No debug_frame support found in libunwind-aarch64);
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME_AARCH64
endif
endif
2013-09-30 06:45:44 -06:00
ifneq ($(feature-libunwind), 1)
2014-02-19 08:52:58 -07:00
msg := $(warning No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR);
2016-06-02 21:33:15 -06:00
NO_LOCAL_LIBUNWIND := 1
else
have_libunwind := 1
$(call detected,CONFIG_LOCAL_LIBUNWIND)
endif
ifneq ($(have_libunwind), 1)
2013-10-07 02:30:47 -06:00
NO_LIBUNWIND := 1
2014-02-19 08:52:58 -07:00
endif
2016-06-02 21:33:15 -06:00
else
NO_LOCAL_LIBUNWIND := 1
2014-02-19 08:52:58 -07:00
endif
2015-10-14 06:41:12 -06:00
ifndef NO_LIBBPF
ifneq ($(feature-bpf), 1)
msg := $(warning BPF API too old. Please install recent kernel headers. BPF support in 'perf record' is disabled.)
NO_LIBBPF := 1
endif
endif
2014-02-19 08:52:58 -07:00
dwarf-post-unwind := 1
dwarf-post-unwind-text := BUG
# setup DWARF post unwinder
ifdef NO_LIBUNWIND
ifdef NO_LIBDW_DWARF_UNWIND
msg := $(warning Disabling post unwind, no support found.);
dwarf-post-unwind := 0
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM updates from Russell King:
"Included in this series are:
1. BE8 (modern big endian) changes for ARM from Ben Dooks
2. big.Little support from Nicolas Pitre and Dave Martin
3. support for LPAE systems with all system memory above 4GB
4. Perf updates from Will Deacon
5. Additional prefetching and other performance improvements from Will.
6. Neon-optimised AES implementation fro Ard.
7. A number of smaller fixes scattered around the place.
There is a rather horrid merge conflict in tools/perf - I was never
notified of the conflict because it originally occurred between Will's
tree and other stuff. Consequently I have a resolution which Will
forwarded me, which I'll forward on immediately after sending this
mail.
The other notable thing is I'm expecting some build breakage in the
crypto stuff on ARM only with Ard's AES patches. These were merged
into a stable git branch which others had already pulled, so there's
little I can do about this. The problem is caused because these
patches have a dependency on some code in the crypto git tree - I
tried requesting a branch I can pull to resolve these, and all I got
each time from the crypto people was "we'll revert our patches then"
which would only make things worse since I still don't have the
dependent patches. I've no idea what's going on there or how to
resolve that, and since I can't split these patches from the rest of
this pull request, I'm rather stuck with pushing this as-is or
reverting Ard's patches.
Since it should "come out in the wash" I've left them in - the only
build problems they seem to cause at the moment are with randconfigs,
and since it's a new feature anyway. However, if by -rc1 the
dependencies aren't in, I think it'd be best to revert Ard's patches"
I resolved the perf conflict roughly as per the patch sent by Russell,
but there may be some differences. Any errors are likely mine. Let's
see how the crypto issues work out..
* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (110 commits)
ARM: 7868/1: arm/arm64: remove atomic_clear_mask() in "include/asm/atomic.h"
ARM: 7867/1: include: asm: use 'int' instead of 'unsigned long' for 'oldval' in atomic_cmpxchg().
ARM: 7866/1: include: asm: use 'long long' instead of 'u64' within atomic.h
ARM: 7871/1: amba: Extend number of IRQS
ARM: 7887/1: Don't smp_cross_call() on UP devices in arch_irq_work_raise()
ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
ARM: 7880/1: Clear the IT state independent of the Thumb-2 mode
ARM: 7878/1: nommu: Implement dummy early_paging_init()
ARM: 7876/1: clear Thumb-2 IT state on exception handling
ARM: 7874/2: bL_switcher: Remove cpu_hotplug_driver_{lock,unlock}()
ARM: footbridge: fix build warnings for netwinder
ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu
ARM: fix misplaced arch_virt_to_idmap()
ARM: 7848/1: mcpm: Implement cpu_kill() to synchronise on powerdown
ARM: 7847/1: mcpm: Factor out logical-to-physical CPU translation
ARM: 7869/1: remove unused XSCALE_PMU Kconfig param
ARM: 7864/1: Handle 64-bit memory in case of 32-bit phys_addr_t
ARM: 7863/1: Let arm_add_memory() always use 64-bit arguments
ARM: 7862/1: pcpu: replace __get_cpu_var_uses
ARM: 7861/1: cacheflush: consolidate single-CPU ARMv7 cache disabling code
...
2013-11-13 16:51:29 -07:00
else
2014-02-19 08:52:58 -07:00
dwarf-post-unwind-text := libdw
2014-12-29 16:11:11 -07:00
$(call detected,CONFIG_LIBDW_DWARF_UNWIND)
2014-02-19 08:52:58 -07:00
endif
else
dwarf-post-unwind-text := libunwind
2014-12-29 16:11:11 -07:00
$(call detected,CONFIG_LIBUNWIND)
2014-02-19 08:52:58 -07:00
# Enable libunwind support by default.
ifndef NO_LIBDW_DWARF_UNWIND
NO_LIBDW_DWARF_UNWIND := 1
endif
endif
ifeq ($(dwarf-post-unwind),1)
CFLAGS += -DHAVE_DWARF_UNWIND_SUPPORT
2014-12-29 07:03:09 -07:00
$(call detected,CONFIG_DWARF_UNWIND)
2014-02-19 08:52:58 -07:00
else
NO_DWARF_UNWIND := 1
endif
2016-06-02 21:33:15 -06:00
ifndef NO_LOCAL_LIBUNWIND
2014-04-28 06:32:33 -06:00
ifeq ($(ARCH),$(filter $(ARCH),arm arm64))
2014-02-19 08:52:58 -07:00
$(call feature_check,libunwind-debug-frame)
ifneq ($(feature-libunwind-debug-frame), 1)
msg := $(warning No debug_frame support found in libunwind);
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM updates from Russell King:
"Included in this series are:
1. BE8 (modern big endian) changes for ARM from Ben Dooks
2. big.Little support from Nicolas Pitre and Dave Martin
3. support for LPAE systems with all system memory above 4GB
4. Perf updates from Will Deacon
5. Additional prefetching and other performance improvements from Will.
6. Neon-optimised AES implementation fro Ard.
7. A number of smaller fixes scattered around the place.
There is a rather horrid merge conflict in tools/perf - I was never
notified of the conflict because it originally occurred between Will's
tree and other stuff. Consequently I have a resolution which Will
forwarded me, which I'll forward on immediately after sending this
mail.
The other notable thing is I'm expecting some build breakage in the
crypto stuff on ARM only with Ard's AES patches. These were merged
into a stable git branch which others had already pulled, so there's
little I can do about this. The problem is caused because these
patches have a dependency on some code in the crypto git tree - I
tried requesting a branch I can pull to resolve these, and all I got
each time from the crypto people was "we'll revert our patches then"
which would only make things worse since I still don't have the
dependent patches. I've no idea what's going on there or how to
resolve that, and since I can't split these patches from the rest of
this pull request, I'm rather stuck with pushing this as-is or
reverting Ard's patches.
Since it should "come out in the wash" I've left them in - the only
build problems they seem to cause at the moment are with randconfigs,
and since it's a new feature anyway. However, if by -rc1 the
dependencies aren't in, I think it'd be best to revert Ard's patches"
I resolved the perf conflict roughly as per the patch sent by Russell,
but there may be some differences. Any errors are likely mine. Let's
see how the crypto issues work out..
* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (110 commits)
ARM: 7868/1: arm/arm64: remove atomic_clear_mask() in "include/asm/atomic.h"
ARM: 7867/1: include: asm: use 'int' instead of 'unsigned long' for 'oldval' in atomic_cmpxchg().
ARM: 7866/1: include: asm: use 'long long' instead of 'u64' within atomic.h
ARM: 7871/1: amba: Extend number of IRQS
ARM: 7887/1: Don't smp_cross_call() on UP devices in arch_irq_work_raise()
ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
ARM: 7880/1: Clear the IT state independent of the Thumb-2 mode
ARM: 7878/1: nommu: Implement dummy early_paging_init()
ARM: 7876/1: clear Thumb-2 IT state on exception handling
ARM: 7874/2: bL_switcher: Remove cpu_hotplug_driver_{lock,unlock}()
ARM: footbridge: fix build warnings for netwinder
ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu
ARM: fix misplaced arch_virt_to_idmap()
ARM: 7848/1: mcpm: Implement cpu_kill() to synchronise on powerdown
ARM: 7847/1: mcpm: Factor out logical-to-physical CPU translation
ARM: 7869/1: remove unused XSCALE_PMU Kconfig param
ARM: 7864/1: Handle 64-bit memory in case of 32-bit phys_addr_t
ARM: 7863/1: Let arm_add_memory() always use 64-bit arguments
ARM: 7862/1: pcpu: replace __get_cpu_var_uses
ARM: 7861/1: cacheflush: consolidate single-CPU ARMv7 cache disabling code
...
2013-11-13 16:51:29 -07:00
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
endif
2014-02-19 08:52:58 -07:00
else
# non-ARM has no dwarf_find_debug_frame() function:
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
endif
EXTLIBS += $(LIBUNWIND_LIBS)
2016-06-02 21:33:15 -06:00
LDFLAGS += $(LIBUNWIND_LIBS)
endif
ifndef NO_LIBUNWIND
CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
2014-02-19 08:52:58 -07:00
CFLAGS += $(LIBUNWIND_CFLAGS)
LDFLAGS += $(LIBUNWIND_LDFLAGS)
2016-06-15 05:03:56 -06:00
EXTLIBS += $(EXTLIBS_LIBUNWIND)
2013-09-30 06:45:44 -06:00
endif
2013-03-24 17:54:36 -06:00
ifndef NO_LIBAUDIT
2013-09-30 06:55:31 -06:00
ifneq ($(feature-libaudit), 1)
2013-04-14 20:06:58 -06:00
msg := $(warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev);
NO_LIBAUDIT := 1
else
2013-09-30 04:07:11 -06:00
CFLAGS += -DHAVE_LIBAUDIT_SUPPORT
2013-04-14 20:06:58 -06:00
EXTLIBS += -laudit
2014-12-29 07:13:44 -07:00
$(call detected,CONFIG_AUDIT)
2013-04-14 20:06:58 -06:00
endif
2013-03-24 17:54:36 -06:00
endif
2013-03-24 17:56:08 -06:00
2015-11-30 02:02:21 -07:00
ifndef NO_LIBCRYPTO
ifneq ($(feature-libcrypto), 1)
msg := $(warning No libcrypto.h found, disables jitted code injection, please install libssl-devel or libssl-dev);
NO_LIBCRYPTO := 1
else
CFLAGS += -DHAVE_LIBCRYPTO_SUPPORT
EXTLIBS += -lcrypto
$(call detected,CONFIG_CRYPTO)
endif
endif
2013-03-24 17:56:08 -06:00
ifdef NO_NEWT
2013-04-14 20:06:58 -06:00
NO_SLANG=1
2013-03-24 17:56:08 -06:00
endif
ifndef NO_SLANG
2013-09-30 06:57:54 -06:00
ifneq ($(feature-libslang), 1)
2016-06-27 07:59:57 -06:00
msg := $(warning slang not found, disables TUI support. Please install slang-devel, libslang-dev or libslang2-dev);
2013-04-14 20:06:58 -06:00
NO_SLANG := 1
else
# Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h
CFLAGS += -I/usr/include/slang
2013-09-30 04:07:11 -06:00
CFLAGS += -DHAVE_SLANG_SUPPORT
2013-04-14 20:06:58 -06:00
EXTLIBS += -lslang
2014-12-29 16:27:52 -07:00
$(call detected,CONFIG_SLANG)
2013-04-14 20:06:58 -06:00
endif
2013-03-24 17:56:08 -06:00
endif
2013-03-17 17:09:24 -06:00
ifndef NO_GTK2
2014-01-15 03:44:08 -07:00
FLAGS_GTK2=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)
2013-09-30 07:01:56 -06:00
ifneq ($(feature-gtk2), 1)
2013-04-14 20:06:58 -06:00
msg := $(warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev);
NO_GTK2 := 1
else
2013-09-30 07:08:30 -06:00
ifeq ($(feature-gtk2-infobar), 1)
2013-09-13 00:27:43 -06:00
GTK_CFLAGS := -DHAVE_GTK_INFO_BAR_SUPPORT
2013-04-14 20:06:58 -06:00
endif
2013-09-30 04:07:11 -06:00
CFLAGS += -DHAVE_GTK2_SUPPORT
2014-01-15 03:44:08 -07:00
GTK_CFLAGS += $(shell $(PKG_CONFIG) --cflags gtk+-2.0 2>/dev/null)
GTK_LIBS := $(shell $(PKG_CONFIG) --libs gtk+-2.0 2>/dev/null)
2013-09-26 12:55:54 -06:00
EXTLIBS += -ldl
2013-04-14 20:06:58 -06:00
endif
2013-03-17 17:09:24 -06:00
endif
2013-03-17 17:19:44 -06:00
grep-libs = $(filter -l%,$(1))
strip-libs = $(filter-out -l%,$(1))
ifdef NO_LIBPERL
2013-04-14 20:06:58 -06:00
CFLAGS += -DNO_LIBPERL
2013-03-17 17:19:44 -06:00
else
2013-04-14 20:06:58 -06:00
PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
2013-09-30 07:15:36 -06:00
ifneq ($(feature-libperl), 1)
2013-04-14 20:06:58 -06:00
CFLAGS += -DNO_LIBPERL
NO_LIBPERL := 1
2015-02-28 01:39:09 -07:00
msg := $(warning Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev);
2013-04-14 20:06:58 -06:00
else
LDFLAGS += $(PERL_EMBED_LDFLAGS)
EXTLIBS += $(PERL_EMBED_LIBADD)
2014-12-30 05:11:32 -07:00
$(call detected,CONFIG_LIBPERL)
2013-04-14 20:06:58 -06:00
endif
2013-03-17 17:19:44 -06:00
endif
2013-03-17 17:35:32 -06:00
2013-10-29 10:43:16 -06:00
ifeq ($(feature-timerfd), 1)
CFLAGS += -DHAVE_TIMERFD_SUPPORT
else
msg := $(warning No timerfd support. Disables 'perf kvm stat live');
endif
2013-03-17 17:35:32 -06:00
disable-python = $(eval $(disable-python_code))
define disable-python_code
2013-03-21 04:30:54 -06:00
CFLAGS += -DNO_LIBPYTHON
2015-02-28 01:33:45 -07:00
$(warning $1)
2013-03-17 17:35:32 -06:00
NO_LIBPYTHON := 1
endef
2014-07-29 00:57:19 -06:00
ifdef NO_LIBPYTHON
2015-02-28 01:33:45 -07:00
$(call disable-python,Python support disabled by user)
2013-03-17 17:35:32 -06:00
else
2014-07-29 00:57:19 -06:00
ifndef PYTHON
2015-02-28 01:33:45 -07:00
$(call disable-python,No python interpreter was found: disables Python support - please install python-devel/python-dev)
2013-03-17 17:35:32 -06:00
else
2014-07-29 00:57:19 -06:00
PYTHON_WORD := $(call shell-wordify,$(PYTHON))
2013-03-17 17:35:32 -06:00
ifndef PYTHON_CONFIG
2015-02-28 01:33:45 -07:00
$(call disable-python,No 'python-config' tool was found: disables Python support - please install python-devel/python-dev)
2013-03-17 17:35:32 -06:00
else
PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG))
PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null)
PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS))
2016-01-11 06:47:52 -07:00
PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil
2013-03-17 17:35:32 -06:00
PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS)
2013-09-30 07:18:37 -06:00
ifneq ($(feature-libpython), 1)
2015-02-28 01:33:45 -07:00
$(call disable-python,No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev)
2013-03-17 17:35:32 -06:00
else
2013-09-30 07:40:04 -06:00
ifneq ($(feature-libpython-version), 1)
2013-03-17 17:35:32 -06:00
$(warning Python 3 is not yet supported; please set)
$(warning PYTHON and/or PYTHON_CONFIG appropriately.)
$(warning If you also have Python 2 installed, then)
$(warning try something like:)
$(warning $(and ,))
$(warning $(and ,) make PYTHON=python2)
$(warning $(and ,))
$(warning Otherwise, disable Python support entirely:)
$(warning $(and ,))
$(warning $(and ,) make NO_LIBPYTHON=1)
$(warning $(and ,))
$(error $(and ,))
else
2013-03-21 04:41:05 -06:00
LDFLAGS += $(PYTHON_EMBED_LDFLAGS)
2013-03-17 17:35:32 -06:00
EXTLIBS += $(PYTHON_EMBED_LIBADD)
2013-05-24 06:35:23 -06:00
LANG_BINDINGS += $(obj-perf)python/perf.so
2014-12-30 05:11:32 -07:00
$(call detected,CONFIG_LIBPYTHON)
2013-03-17 17:35:32 -06:00
endif
endif
endif
endif
endif
2013-03-17 17:38:16 -06:00
2013-10-10 14:24:00 -06:00
ifeq ($(feature-libbfd), 1)
2014-04-23 08:53:25 -06:00
EXTLIBS += -lbfd
# call all detections now so we get correct
# status in VF output
$(call feature_check,liberty)
$(call feature_check,liberty-z)
$(call feature_check,cplus-demangle)
ifeq ($(feature-liberty), 1)
EXTLIBS += -liberty
else
ifeq ($(feature-liberty-z), 1)
EXTLIBS += -liberty -lz
endif
endif
2013-10-10 14:24:00 -06:00
endif
2013-03-17 17:38:16 -06:00
ifdef NO_DEMANGLE
2013-04-14 20:06:58 -06:00
CFLAGS += -DNO_DEMANGLE
2013-03-17 17:38:16 -06:00
else
2013-09-30 04:07:11 -06:00
ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-14 20:06:58 -06:00
EXTLIBS += -liberty
2013-09-30 04:07:11 -06:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-14 20:06:58 -06:00
else
2013-10-10 14:24:00 -06:00
ifneq ($(feature-libbfd), 1)
2014-04-23 08:53:25 -06:00
ifneq ($(feature-liberty), 1)
ifneq ($(feature-liberty-z), 1)
# we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT
# or any of 'bfd iberty z' trinity
2013-10-02 07:15:09 -06:00
ifeq ($(feature-cplus-demangle), 1)
2013-04-14 20:06:58 -06:00
EXTLIBS += -liberty
2013-09-30 04:07:11 -06:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-14 20:06:58 -06:00
else
2015-02-28 01:46:42 -07:00
msg := $(warning No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling)
2013-04-14 20:06:58 -06:00
CFLAGS += -DNO_DEMANGLE
endif
endif
endif
endif
endif
2013-03-17 17:38:16 -06:00
endif
2013-03-17 17:41:04 -06:00
2013-10-10 14:24:00 -06:00
ifneq ($(filter -lbfd,$(EXTLIBS)),)
CFLAGS += -DHAVE_LIBBFD_SUPPORT
endif
perf tools: Add gzip decompression support for kernel module
Now my Archlinux box shows module symbols correctly.
Before:
$ perf report --stdio
Failed to open /tmp/perf-3477.map, continuing without symbols
no symbols found in /usr/bin/date, maybe install a debug package?
No kallsyms or vmlinux with build-id 7b4ea0a49ae2111925857099aaf05c3246ff33e0 was found
[drm] with build id 7b4ea0a49ae2111925857099aaf05c3246ff33e0 not found, continuing without symbols
No kallsyms or vmlinux with build-id edd931629094b660ca9dec09a1b635c8d87aa2ee was found
[jbd2] with build id edd931629094b660ca9dec09a1b635c8d87aa2ee not found, continuing without symbols
No kallsyms or vmlinux with build-id a7b1eada671c34933e5610bb920b2ca4945a82c3 was found
[ext4] with build id a7b1eada671c34933e5610bb920b2ca4945a82c3 not found, continuing without symbols
No kallsyms or vmlinux with build-id d69511fa3e5840e770336ef45b06c83fef8d74e3 was found
[scsi_mod] with build id d69511fa3e5840e770336ef45b06c83fef8d74e3 not found, continuing without symbols
No kallsyms or vmlinux with build-id af0430af13461af058770ee9b87afc07922c2e77 was found
[libata] with build id af0430af13461af058770ee9b87afc07922c2e77 not found, continuing without symbols
No kallsyms or vmlinux with build-id aaeedff8160ce631a5f0333591c6ff291201d29f was found
[libahci] with build id aaeedff8160ce631a5f0333591c6ff291201d29f not found, continuing without symbols
No kallsyms or vmlinux with build-id c57907712becaf662dc4981824bb372c0441d605 was found
[mac80211] with build id c57907712becaf662dc4981824bb372c0441d605 not found, continuing without symbols
No kallsyms or vmlinux with build-id e0589077cc0ec8c3e4c40eb9f2d9e69d236bee8f was found
[iwldvm] with build id e0589077cc0ec8c3e4c40eb9f2d9e69d236bee8f not found, continuing without symbols
No kallsyms or vmlinux with build-id 2d86086bf136bf374a2f029cf85a48194f9b950b was found
[cfg80211] with build id 2d86086bf136bf374a2f029cf85a48194f9b950b not found, continuing without symbols
No kallsyms or vmlinux with build-id 4493c48599bdb3d91d0f8db5150e0be33fdd9221 was found
[iwlwifi] with build id 4493c48599bdb3d91d0f8db5150e0be33fdd9221 not found, continuing without symbols
...
#
# Overhead Command Shared Object Symbol
# ........ ............... ....................... ........................................................
#
0.03% swapper [ext4] [k] 0x000000000000fe2e
0.03% swapper [kernel.kallsyms] [k] account_entity_enqueue
0.03% swapper [ext4] [k] 0x000000000000fc2b
0.03% irq/50-iwlwifi [iwlwifi] [k] 0x000000000000200b
0.03% swapper [kernel.kallsyms] [k] ktime_add_safe
0.03% swapper [kernel.kallsyms] [k] elv_completed_request
0.03% swapper [libata] [k] 0x0000000000003997
0.03% swapper [libahci] [k] 0x0000000000001f25
0.03% swapper [kernel.kallsyms] [k] rb_next
0.03% swapper [kernel.kallsyms] [k] blk_finish_request
0.03% swapper [ext4] [k] 0x0000000000010248
0.00% perf [kernel.kallsyms] [k] native_write_msr_safe
After:
$ perf report --stdio
Failed to open /tmp/perf-3477.map, continuing without symbols
no symbols found in /usr/bin/tr, maybe install a debug package?
...
#
# Overhead Command Shared Object Symbol
# ........ ............... ........................... ......................................................
#
0.04% kworker/u16:3 [ext4] [k] ext4_read_block_bitmap
0.03% kworker/u16:0 [mac80211] [k] ieee80211_sta_reset_beacon_monitor
0.02% irq/50-iwlwifi [mac80211] [k] ieee80211_get_bssid
0.02% firefox [e1000e] [k] __ew32_prepare
0.02% swapper [libahci] [k] ahci_handle_port_interrupt
0.02% emacs libglib-2.0.so.0.4000.0 [.] g_mutex_unlock
0.02% swapper [e1000e] [k] e1000_clean_tx_irq
0.02% dwm [kernel.kallsyms] [k] __schedule
0.02% gnome-terminal- [vdso] [.] __vdso_clock_gettime
0.02% swapper [e1000e] [k] e1000_alloc_rx_buffers
0.02% irq/50-iwlwifi [mac80211] [k] ieee80211_rx
0.01% firefox [vdso] [.] __vdso_gettimeofday
0.01% irq/50-iwlwifi [iwlwifi] [k] iwl_pcie_rxq_restock.part.13
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/87h9yexshi.fsf@sejong.aot.lge.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2014-10-31 01:51:38 -06:00
ifndef NO_ZLIB
ifeq ($(feature-zlib), 1)
CFLAGS += -DHAVE_ZLIB_SUPPORT
EXTLIBS += -lz
2014-12-30 05:31:12 -07:00
$(call detected,CONFIG_ZLIB)
perf tools: Add gzip decompression support for kernel module
Now my Archlinux box shows module symbols correctly.
Before:
$ perf report --stdio
Failed to open /tmp/perf-3477.map, continuing without symbols
no symbols found in /usr/bin/date, maybe install a debug package?
No kallsyms or vmlinux with build-id 7b4ea0a49ae2111925857099aaf05c3246ff33e0 was found
[drm] with build id 7b4ea0a49ae2111925857099aaf05c3246ff33e0 not found, continuing without symbols
No kallsyms or vmlinux with build-id edd931629094b660ca9dec09a1b635c8d87aa2ee was found
[jbd2] with build id edd931629094b660ca9dec09a1b635c8d87aa2ee not found, continuing without symbols
No kallsyms or vmlinux with build-id a7b1eada671c34933e5610bb920b2ca4945a82c3 was found
[ext4] with build id a7b1eada671c34933e5610bb920b2ca4945a82c3 not found, continuing without symbols
No kallsyms or vmlinux with build-id d69511fa3e5840e770336ef45b06c83fef8d74e3 was found
[scsi_mod] with build id d69511fa3e5840e770336ef45b06c83fef8d74e3 not found, continuing without symbols
No kallsyms or vmlinux with build-id af0430af13461af058770ee9b87afc07922c2e77 was found
[libata] with build id af0430af13461af058770ee9b87afc07922c2e77 not found, continuing without symbols
No kallsyms or vmlinux with build-id aaeedff8160ce631a5f0333591c6ff291201d29f was found
[libahci] with build id aaeedff8160ce631a5f0333591c6ff291201d29f not found, continuing without symbols
No kallsyms or vmlinux with build-id c57907712becaf662dc4981824bb372c0441d605 was found
[mac80211] with build id c57907712becaf662dc4981824bb372c0441d605 not found, continuing without symbols
No kallsyms or vmlinux with build-id e0589077cc0ec8c3e4c40eb9f2d9e69d236bee8f was found
[iwldvm] with build id e0589077cc0ec8c3e4c40eb9f2d9e69d236bee8f not found, continuing without symbols
No kallsyms or vmlinux with build-id 2d86086bf136bf374a2f029cf85a48194f9b950b was found
[cfg80211] with build id 2d86086bf136bf374a2f029cf85a48194f9b950b not found, continuing without symbols
No kallsyms or vmlinux with build-id 4493c48599bdb3d91d0f8db5150e0be33fdd9221 was found
[iwlwifi] with build id 4493c48599bdb3d91d0f8db5150e0be33fdd9221 not found, continuing without symbols
...
#
# Overhead Command Shared Object Symbol
# ........ ............... ....................... ........................................................
#
0.03% swapper [ext4] [k] 0x000000000000fe2e
0.03% swapper [kernel.kallsyms] [k] account_entity_enqueue
0.03% swapper [ext4] [k] 0x000000000000fc2b
0.03% irq/50-iwlwifi [iwlwifi] [k] 0x000000000000200b
0.03% swapper [kernel.kallsyms] [k] ktime_add_safe
0.03% swapper [kernel.kallsyms] [k] elv_completed_request
0.03% swapper [libata] [k] 0x0000000000003997
0.03% swapper [libahci] [k] 0x0000000000001f25
0.03% swapper [kernel.kallsyms] [k] rb_next
0.03% swapper [kernel.kallsyms] [k] blk_finish_request
0.03% swapper [ext4] [k] 0x0000000000010248
0.00% perf [kernel.kallsyms] [k] native_write_msr_safe
After:
$ perf report --stdio
Failed to open /tmp/perf-3477.map, continuing without symbols
no symbols found in /usr/bin/tr, maybe install a debug package?
...
#
# Overhead Command Shared Object Symbol
# ........ ............... ........................... ......................................................
#
0.04% kworker/u16:3 [ext4] [k] ext4_read_block_bitmap
0.03% kworker/u16:0 [mac80211] [k] ieee80211_sta_reset_beacon_monitor
0.02% irq/50-iwlwifi [mac80211] [k] ieee80211_get_bssid
0.02% firefox [e1000e] [k] __ew32_prepare
0.02% swapper [libahci] [k] ahci_handle_port_interrupt
0.02% emacs libglib-2.0.so.0.4000.0 [.] g_mutex_unlock
0.02% swapper [e1000e] [k] e1000_clean_tx_irq
0.02% dwm [kernel.kallsyms] [k] __schedule
0.02% gnome-terminal- [vdso] [.] __vdso_clock_gettime
0.02% swapper [e1000e] [k] e1000_alloc_rx_buffers
0.02% irq/50-iwlwifi [mac80211] [k] ieee80211_rx
0.01% firefox [vdso] [.] __vdso_gettimeofday
0.01% irq/50-iwlwifi [iwlwifi] [k] iwl_pcie_rxq_restock.part.13
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/87h9yexshi.fsf@sejong.aot.lge.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2014-10-31 01:51:38 -06:00
else
NO_ZLIB := 1
endif
endif
2015-01-29 05:29:39 -07:00
ifndef NO_LZMA
ifeq ($(feature-lzma), 1)
CFLAGS += -DHAVE_LZMA_SUPPORT
EXTLIBS += -llzma
$(call detected,CONFIG_LZMA)
else
msg := $(warning No liblzma found, disables xz kernel module decompression, please install xz-devel/liblzma-dev);
NO_LZMA := 1
endif
endif
2013-03-17 17:41:04 -06:00
ifndef NO_BACKTRACE
2013-09-30 08:49:38 -06:00
ifeq ($(feature-backtrace), 1)
2013-09-30 04:07:11 -06:00
CFLAGS += -DHAVE_BACKTRACE_SUPPORT
2013-04-14 20:06:58 -06:00
endif
2013-03-17 17:41:04 -06:00
endif
2013-03-17 17:45:27 -06:00
ifndef NO_LIBNUMA
2013-09-30 05:37:10 -06:00
ifeq ($(feature-libnuma), 0)
2013-12-02 08:26:48 -07:00
msg := $(warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev);
2013-04-14 20:06:58 -06:00
NO_LIBNUMA := 1
else
2015-09-17 09:20:28 -06:00
ifeq ($(feature-numa_num_possible_cpus), 0)
msg := $(warning Old numa library found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev >= 2.0.8);
NO_LIBNUMA := 1
else
CFLAGS += -DHAVE_LIBNUMA_SUPPORT
EXTLIBS += -lnuma
$(call detected,CONFIG_NUMA)
endif
2013-04-14 20:06:58 -06:00
endif
2013-03-17 17:45:27 -06:00
endif
2013-03-17 17:56:01 -06:00
2014-07-03 07:59:49 -06:00
ifdef HAVE_KVM_STAT_SUPPORT
CFLAGS += -DHAVE_KVM_STAT_SUPPORT
endif
2014-10-23 15:16:03 -06:00
ifeq (${IS_64_BIT}, 1)
ifndef NO_PERF_READ_VDSO32
$(call feature_check,compile-32)
2014-10-23 04:45:24 -06:00
ifeq ($(feature-compile-32), 1)
CFLAGS += -DHAVE_PERF_READ_VDSO32
else
2014-10-23 15:16:03 -06:00
NO_PERF_READ_VDSO32 := 1
endif
endif
2015-03-17 16:27:48 -06:00
ifneq ($(ARCH), x86)
2014-10-23 15:16:03 -06:00
NO_PERF_READ_VDSOX32 := 1
endif
ifndef NO_PERF_READ_VDSOX32
$(call feature_check,compile-x32)
2014-10-23 04:45:24 -06:00
ifeq ($(feature-compile-x32), 1)
CFLAGS += -DHAVE_PERF_READ_VDSOX32
else
2014-10-23 15:16:03 -06:00
NO_PERF_READ_VDSOX32 := 1
endif
endif
else
NO_PERF_READ_VDSO32 := 1
NO_PERF_READ_VDSOX32 := 1
endif
2015-03-28 04:30:30 -06:00
ifdef LIBBABELTRACE
2015-03-11 02:00:41 -06:00
$(call feature_check,libbabeltrace)
ifeq ($(feature-libbabeltrace), 1)
2015-02-20 15:16:58 -07:00
CFLAGS += -DHAVE_LIBBABELTRACE_SUPPORT $(LIBBABELTRACE_CFLAGS)
LDFLAGS += $(LIBBABELTRACE_LDFLAGS)
EXTLIBS += -lbabeltrace-ctf
perf data: Add perf data to CTF conversion support
Adding 'perf data convert' to convert perf data file into different
format. This patch adds support for CTF format conversion.
To convert perf.data into CTF run:
$ perf data convert --to-ctf=./ctf-data/
[ perf data convert: Converted 'perf.data' into CTF data './ctf-data/' ]
[ perf data convert: Converted and wrote 11.268 MB (100230 samples) ]
The command will create CTF metadata out of perf.data file (or one
specified via -i option) and then convert all sample events into single
CTF stream.
Each sample_type bit is translated into separated CTF event field apart
from following exceptions:
PERF_SAMPLE_RAW - added in next patch
PERF_SAMPLE_READ - TODO
PERF_SAMPLE_CALLCHAIN - TODO
PERF_SAMPLE_BRANCH_STACK - TODO
PERF_SAMPLE_REGS_USER - TODO
PERF_SAMPLE_STACK_USER - TODO
$ perf --debug=data-convert=2 data convert ...
The converted CTF data could be analyzed by CTF tools, like babletrace
or tracecompass [1].
$ babeltrace ./ctf-data/
[03:19:13.962125533] (+?.?????????) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 1 }
[03:19:13.962130001] (+0.000004468) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 1 }
[03:19:13.962131936] (+0.000001935) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 8 }
[03:19:13.962133732] (+0.000001796) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 114 }
[03:19:13.962135557] (+0.000001825) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 2087 }
[03:19:13.962137627] (+0.000002070) cycles: { }, { ip = 0xFFFFFFFF81361938, tid = 20714, pid = 20714, period = 37582 }
[03:19:13.962161091] (+0.000023464) cycles: { }, { ip = 0xFFFFFFFF8124218F, tid = 20714, pid = 20714, period = 600246 }
[03:19:13.962517569] (+0.000356478) cycles: { }, { ip = 0xFFFFFFFF811A75DB, tid = 20714, pid = 20714, period = 1325731 }
[03:19:13.969518008] (+0.007000439) cycles: { }, { ip = 0x34080917B2, tid = 20714, pid = 20714, period = 1144298 }
The following members to the ctf-environment were decided to be added to
distinguish and specify perf CTF data:
- domain
It says "kernel" because it contains a kernel trace (not to be
confused with a user space like lttng-ust does)
- tracer_name
It says perf. This can be used to distinguish between lttng and perf
CTF based trace.
- version
The kernel version from stream. In addition to release, this is what
it looks like on a Debian kernel:
release = "3.14-1-amd64";
version = "3.14.0";
[1] http://projects.eclipse.org/projects/tools.tracecompass
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Reviewed-by: David Ahern <dsahern@gmail.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jeremie Galarneau <jgalar@efficios.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Tom Zanussi <tzanussi@gmail.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1424470628-5969-4-git-send-email-jolsa@kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-02-20 15:17:00 -07:00
$(call detected,CONFIG_LIBBABELTRACE)
2015-03-11 02:00:41 -06:00
else
msg := $(warning No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev);
2015-02-20 15:16:58 -07:00
endif
endif
2015-04-30 08:37:27 -06:00
ifndef NO_AUXTRACE
2016-09-16 09:49:58 -06:00
ifeq ($(ARCH),x86)
ifeq ($(feature-get_cpuid), 0)
msg := $(warning Your gcc lacks the __get_cpuid() builtin, disables support for auxtrace/Intel PT, please install a newer gcc);
NO_AUXTRACE := 1
endif
endif
ifndef NO_AUXTRACE
2015-09-17 09:54:30 -06:00
$(call detected,CONFIG_AUXTRACE)
CFLAGS += -DHAVE_AUXTRACE_SUPPORT
endif
2015-04-30 08:37:27 -06:00
endif
2016-11-02 07:35:49 -06:00
ifndef NO_JVMTI
ifneq (,$(wildcard /usr/sbin/update-java-alternatives))
JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}')
else
ifneq (,$(wildcard /usr/sbin/alternatives))
JDIR=$(shell alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g')
endif
endif
ifndef JDIR
$(warning No alternatives command found, you need to set JDIR= to point to the root of your Java directory)
NO_JVMTI := 1
endif
endif
ifndef NO_JVMTI
FEATURE_CHECK_CFLAGS-jvmti := -I$(JDIR)/include -I$(JDIR)/include/linux
$(call feature_check,jvmti)
ifeq ($(feature-jvmti), 1)
$(call detected_var,JDIR)
else
$(warning No openjdk development package found, please install JDK package)
NO_JVMTI := 1
endif
endif
2013-03-17 17:56:01 -06:00
# Among the variables below, these:
# perfexecdir
# template_dir
# mandir
# infodir
# htmldir
# ETC_PERFCONFIG (but not sysconfdir)
# can be specified as a relative path some/where/else;
# this is interpreted as relative to $(prefix) and "perf" at
# runtime figures out where they are based on the path to the executable.
# This can help installing the suite in a relocatable way.
# Make the path relative to DESTDIR, not to prefix
ifndef DESTDIR
2014-06-02 10:44:34 -06:00
prefix ?= $(HOME)
2013-03-17 17:56:01 -06:00
endif
bindir_relative = bin
2015-07-28 08:10:13 -06:00
bindir = $(abspath $(prefix)/$(bindir_relative))
2013-03-17 17:56:01 -06:00
mandir = share/man
infodir = share/info
perfexecdir = libexec/perf-core
sharedir = $(prefix)/share
template_dir = share/perf-core/templates
perf trace: Support 'strace' syscall event groups
I.e.:
$ cat ~/share/perf-core/strace/groups/file
access
chmod
creat
execve
faccessat
getcwd
lstat
mkdir
open
openat
quotactl
readlink
rename
rmdir
stat
statfs
symlink
unlink
$
Then, on a quiet desktop, try running this and then moving your mouse to
see the deluge of mouse related activity:
# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
probe:vfs_getname (on getname_flags:72 with pathname=filename:string)
You can now use it in all perf tools, such as:
perf record -e probe:vfs_getname -aR sleep 1
#
# trace --ev probe:vfs_getname --filter-pids 2232 -e file
0.042 (0.042 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.042 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/xterm")
0.100 (0.100 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.142 (0.018 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.142 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/index.theme")
0.192 (0.069 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.230 (0.017 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.230 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/usr/share/icons/Adwaita/cursors/xterm")
0.253 (0.041 ms): mousetweaks/2235 ... [continued]: open()) = 14
0.459 (0.008 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.459 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/left_side")
0.468 (0.017 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
Need to combine that raw_syscalls:sys_enter(open) + probe:vfs_getname +
raw_syscalls:sys_exit(open) sequence...
Now, if you're bored, please write some more syscall groups, like the ones
in 'strace' and send it our way :-)
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <mail@milianw.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-a42xklu59lcbxp7bbnic74a8@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-07-20 09:02:09 -06:00
STRACE_GROUPS_DIR = share/perf-core/strace/groups
2013-03-17 17:56:01 -06:00
htmldir = share/doc/perf-doc
2016-01-07 04:41:53 -07:00
tipdir = share/doc/perf-tip
2016-01-09 03:16:28 -07:00
srcdir = $(srctree)/tools/perf
2013-03-17 17:56:01 -06:00
ifeq ($(prefix),/usr)
sysconfdir = /etc
ETC_PERFCONFIG = $(sysconfdir)/perfconfig
else
sysconfdir = $(prefix)/etc
ETC_PERFCONFIG = etc/perfconfig
endif
2014-08-25 08:55:52 -06:00
ifndef lib
2015-03-17 16:27:48 -06:00
ifeq ($(ARCH)$(IS_64_BIT), x861)
2013-09-13 00:27:43 -06:00
lib = lib64
else
2013-03-17 17:56:01 -06:00
lib = lib
2013-09-13 00:27:43 -06:00
endif
2014-08-25 08:55:52 -06:00
endif # lib
2013-09-13 00:27:43 -06:00
libdir = $(prefix)/$(lib)
2013-03-17 17:56:01 -06:00
# Shell quote (do not use $(call) to accommodate ancient setups);
ETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG))
perf trace: Support 'strace' syscall event groups
I.e.:
$ cat ~/share/perf-core/strace/groups/file
access
chmod
creat
execve
faccessat
getcwd
lstat
mkdir
open
openat
quotactl
readlink
rename
rmdir
stat
statfs
symlink
unlink
$
Then, on a quiet desktop, try running this and then moving your mouse to
see the deluge of mouse related activity:
# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
probe:vfs_getname (on getname_flags:72 with pathname=filename:string)
You can now use it in all perf tools, such as:
perf record -e probe:vfs_getname -aR sleep 1
#
# trace --ev probe:vfs_getname --filter-pids 2232 -e file
0.042 (0.042 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.042 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/xterm")
0.100 (0.100 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.142 (0.018 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.142 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/index.theme")
0.192 (0.069 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.230 (0.017 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.230 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/usr/share/icons/Adwaita/cursors/xterm")
0.253 (0.041 ms): mousetweaks/2235 ... [continued]: open()) = 14
0.459 (0.008 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.459 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/left_side")
0.468 (0.017 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
Need to combine that raw_syscalls:sys_enter(open) + probe:vfs_getname +
raw_syscalls:sys_exit(open) sequence...
Now, if you're bored, please write some more syscall groups, like the ones
in 'strace' and send it our way :-)
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <mail@milianw.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-a42xklu59lcbxp7bbnic74a8@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-07-20 09:02:09 -06:00
STRACE_GROUPS_DIR_SQ = $(subst ','\'',$(STRACE_GROUPS_DIR))
2013-03-17 17:56:01 -06:00
DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
bindir_SQ = $(subst ','\'',$(bindir))
mandir_SQ = $(subst ','\'',$(mandir))
infodir_SQ = $(subst ','\'',$(infodir))
perfexecdir_SQ = $(subst ','\'',$(perfexecdir))
template_dir_SQ = $(subst ','\'',$(template_dir))
htmldir_SQ = $(subst ','\'',$(htmldir))
2016-01-07 04:41:53 -07:00
tipdir_SQ = $(subst ','\'',$(tipdir))
2013-03-17 17:56:01 -06:00
prefix_SQ = $(subst ','\'',$(prefix))
sysconfdir_SQ = $(subst ','\'',$(sysconfdir))
2013-09-13 00:27:43 -06:00
libdir_SQ = $(subst ','\'',$(libdir))
2016-01-09 03:16:28 -07:00
srcdir_SQ = $(subst ','\'',$(srcdir))
2013-03-17 17:56:01 -06:00
ifneq ($(filter /%,$(firstword $(perfexecdir))),)
perfexec_instdir = $(perfexecdir)
perf trace: Support 'strace' syscall event groups
I.e.:
$ cat ~/share/perf-core/strace/groups/file
access
chmod
creat
execve
faccessat
getcwd
lstat
mkdir
open
openat
quotactl
readlink
rename
rmdir
stat
statfs
symlink
unlink
$
Then, on a quiet desktop, try running this and then moving your mouse to
see the deluge of mouse related activity:
# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
probe:vfs_getname (on getname_flags:72 with pathname=filename:string)
You can now use it in all perf tools, such as:
perf record -e probe:vfs_getname -aR sleep 1
#
# trace --ev probe:vfs_getname --filter-pids 2232 -e file
0.042 (0.042 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.042 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/xterm")
0.100 (0.100 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.142 (0.018 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.142 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/index.theme")
0.192 (0.069 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.230 (0.017 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.230 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/usr/share/icons/Adwaita/cursors/xterm")
0.253 (0.041 ms): mousetweaks/2235 ... [continued]: open()) = 14
0.459 (0.008 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.459 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/left_side")
0.468 (0.017 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
Need to combine that raw_syscalls:sys_enter(open) + probe:vfs_getname +
raw_syscalls:sys_exit(open) sequence...
Now, if you're bored, please write some more syscall groups, like the ones
in 'strace' and send it our way :-)
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <mail@milianw.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-a42xklu59lcbxp7bbnic74a8@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-07-20 09:02:09 -06:00
STRACE_GROUPS_INSTDIR = $(STRACE_GROUPS_DIR)
2016-01-07 04:41:53 -07:00
tip_instdir = $(tipdir)
2013-03-17 17:56:01 -06:00
else
perfexec_instdir = $(prefix)/$(perfexecdir)
perf trace: Support 'strace' syscall event groups
I.e.:
$ cat ~/share/perf-core/strace/groups/file
access
chmod
creat
execve
faccessat
getcwd
lstat
mkdir
open
openat
quotactl
readlink
rename
rmdir
stat
statfs
symlink
unlink
$
Then, on a quiet desktop, try running this and then moving your mouse to
see the deluge of mouse related activity:
# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
probe:vfs_getname (on getname_flags:72 with pathname=filename:string)
You can now use it in all perf tools, such as:
perf record -e probe:vfs_getname -aR sleep 1
#
# trace --ev probe:vfs_getname --filter-pids 2232 -e file
0.042 (0.042 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.042 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/xterm")
0.100 (0.100 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.142 (0.018 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.142 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/index.theme")
0.192 (0.069 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.230 (0.017 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.230 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/usr/share/icons/Adwaita/cursors/xterm")
0.253 (0.041 ms): mousetweaks/2235 ... [continued]: open()) = 14
0.459 (0.008 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.459 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/left_side")
0.468 (0.017 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
Need to combine that raw_syscalls:sys_enter(open) + probe:vfs_getname +
raw_syscalls:sys_exit(open) sequence...
Now, if you're bored, please write some more syscall groups, like the ones
in 'strace' and send it our way :-)
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <mail@milianw.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-a42xklu59lcbxp7bbnic74a8@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-07-20 09:02:09 -06:00
STRACE_GROUPS_INSTDIR = $(prefix)/$(STRACE_GROUPS_DIR)
2016-01-07 04:41:53 -07:00
tip_instdir = $(prefix)/$(tipdir)
2013-03-17 17:56:01 -06:00
endif
perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir))
perf trace: Support 'strace' syscall event groups
I.e.:
$ cat ~/share/perf-core/strace/groups/file
access
chmod
creat
execve
faccessat
getcwd
lstat
mkdir
open
openat
quotactl
readlink
rename
rmdir
stat
statfs
symlink
unlink
$
Then, on a quiet desktop, try running this and then moving your mouse to
see the deluge of mouse related activity:
# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
probe:vfs_getname (on getname_flags:72 with pathname=filename:string)
You can now use it in all perf tools, such as:
perf record -e probe:vfs_getname -aR sleep 1
#
# trace --ev probe:vfs_getname --filter-pids 2232 -e file
0.042 (0.042 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.042 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/xterm")
0.100 (0.100 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.142 (0.018 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.142 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/index.theme")
0.192 (0.069 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.230 (0.017 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.230 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/usr/share/icons/Adwaita/cursors/xterm")
0.253 (0.041 ms): mousetweaks/2235 ... [continued]: open()) = 14
0.459 (0.008 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.459 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/left_side")
0.468 (0.017 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
Need to combine that raw_syscalls:sys_enter(open) + probe:vfs_getname +
raw_syscalls:sys_exit(open) sequence...
Now, if you're bored, please write some more syscall groups, like the ones
in 'strace' and send it our way :-)
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <mail@milianw.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-a42xklu59lcbxp7bbnic74a8@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-07-20 09:02:09 -06:00
STRACE_GROUPS_INSTDIR_SQ = $(subst ','\'',$(STRACE_GROUPS_INSTDIR))
2016-01-07 04:41:53 -07:00
tip_instdir_SQ = $(subst ','\'',$(tip_instdir))
2013-12-03 06:09:21 -07:00
# If we install to $(HOME) we keep the traceevent default:
# $(HOME)/.traceevent/plugins
# Otherwise we install plugins into the global $(libdir).
ifdef DESTDIR
plugindir=$(libdir)/traceevent/plugins
2014-01-22 08:01:48 -07:00
plugindir_SQ= $(subst ','\'',$(plugindir))
2013-12-03 06:09:21 -07:00
endif
2014-02-19 08:52:54 -07:00
2015-03-02 05:30:30 -07:00
print_var = $(eval $(print_var_code)) $(info $(MSG))
define print_var_code
2014-02-19 08:52:55 -07:00
MSG = $(shell printf '...%30s: %s' $(1) $($(1)))
endef
2014-02-19 08:52:54 -07:00
ifeq ($(VF),1)
2015-03-02 05:30:30 -07:00
$(call print_var,prefix)
$(call print_var,bindir)
$(call print_var,libdir)
$(call print_var,sysconfdir)
$(call print_var,LIBUNWIND_DIR)
$(call print_var,LIBDW_DIR)
2016-11-02 07:35:49 -06:00
$(call print_var,JDIR)
2015-12-23 10:58:31 -07:00
ifeq ($(dwarf-post-unwind),1)
$(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text))
endif
2014-02-19 08:52:54 -07:00
$(info )
endif
2014-12-29 07:03:09 -07:00
$(call detected_var,bindir_SQ)
$(call detected_var,PYTHON_WORD)
ifneq ($(OUTPUT),)
$(call detected_var,OUTPUT)
endif
2014-12-29 07:13:44 -07:00
$(call detected_var,htmldir_SQ)
$(call detected_var,infodir_SQ)
$(call detected_var,mandir_SQ)
2014-12-29 09:42:46 -07:00
$(call detected_var,ETC_PERFCONFIG_SQ)
perf trace: Support 'strace' syscall event groups
I.e.:
$ cat ~/share/perf-core/strace/groups/file
access
chmod
creat
execve
faccessat
getcwd
lstat
mkdir
open
openat
quotactl
readlink
rename
rmdir
stat
statfs
symlink
unlink
$
Then, on a quiet desktop, try running this and then moving your mouse to
see the deluge of mouse related activity:
# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
probe:vfs_getname (on getname_flags:72 with pathname=filename:string)
You can now use it in all perf tools, such as:
perf record -e probe:vfs_getname -aR sleep 1
#
# trace --ev probe:vfs_getname --filter-pids 2232 -e file
0.042 (0.042 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.042 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/xterm")
0.100 (0.100 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.142 (0.018 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.142 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/index.theme")
0.192 (0.069 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
0.230 (0.017 ms): mousetweaks/2235 open(filename: 0x14c3c10, mode: 438 ) ...
0.230 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/usr/share/icons/Adwaita/cursors/xterm")
0.253 (0.041 ms): mousetweaks/2235 ... [continued]: open()) = 14
0.459 (0.008 ms): mousetweaks/2235 open(filename: 0x14e3910, mode: 438 ) ...
0.459 ( ): probe:vfs_getname:(ffffffff812230bc) pathname="/home/acme/.icons/Adwaita/cursors/left_side")
0.468 (0.017 ms): mousetweaks/2235 ... [continued]: open()) = -1 ENOENT No such file or directory
Need to combine that raw_syscalls:sys_enter(open) + probe:vfs_getname +
raw_syscalls:sys_exit(open) sequence...
Now, if you're bored, please write some more syscall groups, like the ones
in 'strace' and send it our way :-)
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <mail@milianw.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-a42xklu59lcbxp7bbnic74a8@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-07-20 09:02:09 -06:00
$(call detected_var,STRACE_GROUPS_DIR_SQ)
2014-12-29 09:42:46 -07:00
$(call detected_var,prefix_SQ)
$(call detected_var,perfexecdir_SQ)
2016-01-07 04:41:53 -07:00
$(call detected_var,tipdir_SQ)
2016-01-09 03:16:28 -07:00
$(call detected_var,srcdir_SQ)
2014-12-29 16:16:01 -07:00
$(call detected_var,LIBDIR)
2014-12-29 16:34:23 -07:00
$(call detected_var,GTK_CFLAGS)
2014-12-30 05:11:32 -07:00
$(call detected_var,PERL_EMBED_CCOPTS)
$(call detected_var,PYTHON_EMBED_CCOPTS)