2013-03-15 15:28:49 +00:00
2014-01-03 14:32:32 +00:00
i f e q ( $( src -perf ) , )
src-perf := $( srctree) /tools/perf
e n d i f
2013-03-15 15:28:49 +00:00
2014-01-03 14:32:32 +00:00
i f e q ( $( obj -perf ) , )
obj-perf := $( OUTPUT)
2013-03-15 15:28:49 +00:00
e n d i f
2014-01-03 14:32:32 +00:00
i f n e q ( $( obj -perf ) , )
obj-perf := $( abspath $( obj-perf) ) /
e n d i f
LIB_INCLUDE := $( srctree) /tools/lib/
CFLAGS := $( EXTRA_CFLAGS) $( EXTRA_WARNINGS)
i n c l u d e $( src -perf ) / c o n f i g / M a k e f i l e . a r c h
NO_PERF_REGS := 1
# Additional ARCH settings for x86
i f e q ( $( ARCH ) , x 8 6 )
2013-04-15 02:06:58 +00:00
ifeq ( ${ IS_X86_64 } , 1)
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT
2013-04-15 02:06:58 +00:00
ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
2013-11-01 13:51:32 +00:00
LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
else
LIBUNWIND_LIBS = -lunwind -lunwind-x86
2013-04-15 02:06:58 +00:00
endif
NO_PERF_REGS := 0
2013-03-15 15:28:49 +00:00
e n d i f
2014-04-28 12:32:33 +00:00
2013-09-26 11:36:36 +00:00
i f e q ( $( ARCH ) , a r m )
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-arm
e n d i f
2013-03-15 15:28:49 +00:00
2014-04-28 12:32:33 +00:00
i f e q ( $( ARCH ) , a r m 6 4 )
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-aarch64
e n d i f
2014-05-16 08:41:11 +00:00
# So far there's only x86 and arm libdw unwind support merged in perf.
2014-04-20 08:50:00 +00: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 08:41:11 +00:00
i f n e q ( $( ARCH ) , $( filter $ ( ARCH ) ,x 86 arm ) )
2014-04-20 08:50:00 +00:00
NO_LIBDW_DWARF_UNWIND := 1
e n d i f
2013-12-10 12:24:04 +00:00
i f e q ( $( LIBUNWIND_LIBS ) , )
NO_LIBUNWIND := 1
e l s e
#
# For linking with debug library, run like:
#
# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
#
ifdef LIBUNWIND_DIR
LIBUNWIND_CFLAGS = -I$( LIBUNWIND_DIR) /include
LIBUNWIND_LDFLAGS = -L$( LIBUNWIND_DIR) /lib
endif
LIBUNWIND_LDFLAGS += $( LIBUNWIND_LIBS)
# Set per-feature check compilation flags
FEATURE_CHECK_CFLAGS-libunwind = $( LIBUNWIND_CFLAGS)
FEATURE_CHECK_LDFLAGS-libunwind = $( LIBUNWIND_LDFLAGS)
FEATURE_CHECK_CFLAGS-libunwind-debug-frame = $( LIBUNWIND_CFLAGS)
FEATURE_CHECK_LDFLAGS-libunwind-debug-frame = $( LIBUNWIND_LDFLAGS)
e n d i f
2013-03-15 15:28:49 +00:00
i f e q ( $( NO_PERF_REGS ) , 0 )
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_PERF_REGS_SUPPORT
2013-03-15 15:28:49 +00:00
e n d i f
2013-03-24 23:32:01 +00:00
2014-02-19 15:52:56 +00:00
i f n d e f N O _ L I B E L F
# 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
endif
2014-03-26 22:44:05 +00:00
FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $( LIBDW_CFLAGS)
FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $( LIBDW_LDFLAGS) -ldw
2014-02-19 15:52:56 +00:00
e n d i f
2013-05-24 12:35:23 +00:00
# include ARCH specific config
- i n c l u d e $( src -perf ) / a r c h / $( ARCH ) / M a k e f i l e
i n c l u d e $( src -perf ) / c o n f i g / u t i l i t i e s . m a k
2013-03-24 23:32:01 +00:00
i f e q ( $( call get -executable ,$ ( FLEX ) ) , )
2013-04-15 02:06:58 +00:00
dummy := $( error Error: $( FLEX) is missing on this system, please install it)
2013-03-24 23:32:01 +00:00
e n d i f
i f e q ( $( call get -executable ,$ ( BISON ) ) , )
2013-04-15 02:06:58 +00:00
dummy := $( error Error: $( BISON) is missing on this system, please install it)
2013-03-24 23:32:01 +00:00
e n d i f
2013-03-24 23:40:48 +00:00
# Treat warnings as errors unless directed not to
i f n e q ( $( WERROR ) , 0 )
2013-04-15 02:06:58 +00:00
CFLAGS += -Werror
2013-03-24 23:40:48 +00:00
e n d i f
2013-10-22 07:34:05 +00:00
i f n d e f D E B U G
DEBUG := 0
e n d i f
2013-10-10 06:05:25 +00:00
i f e q ( $( DEBUG ) , 0 )
2013-04-15 02:06:58 +00:00
CFLAGS += -O6
2013-03-24 23:40:48 +00:00
e n d i f
i f d e f P A R S E R _ D E B U G
2013-04-15 02:06:58 +00:00
PARSER_DEBUG_BISON := -t
PARSER_DEBUG_FLEX := -d
CFLAGS += -DPARSER_DEBUG
2013-03-24 23:40:48 +00:00
e n d i f
2014-07-29 06:57:19 +00:00
i f n d e f N O _ L I B P Y T H O N
perf tools: Default to python version 2
According to PEP 394 recommendation [1], it's more portable to use
python2 rather than plain python to refer python binary version 2.
Since there're distros using python3 by default like Arch, and we don't
support python3 (yet), it'd be better using python2 explicitly.
But older versions (prior to 2.7) seem not to provide python2 but just
python. Given that it's only old version, try python2 first and then
fallback to python. It'll ensure that it always points to python 2.x.
I tested (compiles and perf script runs) with the combinations:
1) python -> python2.x, python-config -> python2.x-config
python2 N/A, python2-config N/A
2) python -> python3.x, python-config -> python3.x-config
python2 -> python2.x, python2-config -> python2.x-config
3) python -> python2.x, python-config -> python2.x-config
python2 -> python2.x, python2-config -> python2.x-config
4) python -> python2.x, python-config -> python2.x-config
python2 -> python2.x, python2-config N/A
Based on / replaces the patch 2/2 by Namhyung Kim.
[1] https://www.python.org/dev/peps/pep-0394
Based-on-patch-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Thomas Ilsche <thomas.ilsche@tu-dresden.de>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/53DF8493.6070206@tu-dresden.de
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2014-08-04 13:03:15 +00: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)
2014-07-29 06:57:19 +00:00
override PYTHON_CONFIG := \
perf tools: Default to python version 2
According to PEP 394 recommendation [1], it's more portable to use
python2 rather than plain python to refer python binary version 2.
Since there're distros using python3 by default like Arch, and we don't
support python3 (yet), it'd be better using python2 explicitly.
But older versions (prior to 2.7) seem not to provide python2 but just
python. Given that it's only old version, try python2 first and then
fallback to python. It'll ensure that it always points to python 2.x.
I tested (compiles and perf script runs) with the combinations:
1) python -> python2.x, python-config -> python2.x-config
python2 N/A, python2-config N/A
2) python -> python3.x, python-config -> python3.x-config
python2 -> python2.x, python2-config -> python2.x-config
3) python -> python2.x, python-config -> python2.x-config
python2 -> python2.x, python2-config -> python2.x-config
4) python -> python2.x, python-config -> python2.x-config
python2 -> python2.x, python2-config N/A
Based on / replaces the patch 2/2 by Namhyung Kim.
[1] https://www.python.org/dev/peps/pep-0394
Based-on-patch-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Thomas Ilsche <thomas.ilsche@tu-dresden.de>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/53DF8493.6070206@tu-dresden.de
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2014-08-04 13:03:15 +00:00
$( call get-executable-or-default,PYTHON_CONFIG,$( PYTHON2_CONFIG) )
2014-07-29 06:57:19 +00:00
PYTHON_CONFIG_SQ := $( call shell-sq,$( PYTHON_CONFIG) )
PYTHON_EMBED_LDOPTS := $( shell $( PYTHON_CONFIG_SQ) --ldflags 2>/dev/null)
PYTHON_EMBED_CCOPTS := $( shell $( PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
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)
e n d i f
2013-04-15 02:32:28 +00:00
CFLAGS += -fno-omit-frame-pointer
CFLAGS += -ggdb3
CFLAGS += -funwind-tables
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -std= gnu99
2013-03-21 10:30:54 +00:00
2014-04-27 16:51:05 +00: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-07 05:20:06 +00:00
EXTLIBS = -lpthread -lrt -lm -ldl
2013-03-24 23:40:48 +00:00
2013-10-03 13:05:56 +00:00
i f n e q ( $( OUTPUT ) , )
OUTPUT_FEATURES = $( OUTPUT) config/feature-checks/
$( shell mkdir -p $( OUTPUT_FEATURES) )
e n d i f
2013-10-01 12:14:31 +00:00
feature_check = $( eval $( feature_check_code) )
2013-09-30 08:08:24 +00:00
d e f i n e f e a t u r e _ c h e c k _ c o d e
2013-12-21 05:48:11 +00:00
feature-$( 1) := $( shell $( MAKE) OUTPUT = $( OUTPUT_FEATURES) CFLAGS = " $( EXTRA_CFLAGS) $( FEATURE_CHECK_CFLAGS-$( 1) ) " LDFLAGS = " $( LDFLAGS) $( FEATURE_CHECK_LDFLAGS-$( 1) ) " -C config/feature-checks test-$1 .bin >/dev/null 2>/dev/null && echo 1 || echo 0)
2013-10-01 12:14:31 +00:00
e n d e f
feature_set = $( eval $( feature_set_code) )
d e f i n e f e a t u r e _ s e t _ c o d e
feature-$( 1) := 1
2013-09-30 08:08:24 +00:00
e n d e f
#
# Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output:
#
2013-10-02 07:54:43 +00:00
#
# Note that this is not a complete list of all feature tests, just
# those that are typically built on a fully configured system.
#
# [ Feature tests not mentioned here have to be built explicitly in
# the rule that uses them - an example for that is the 'bionic'
# feature check. ]
#
CORE_FEATURE_TESTS = \
backtrace \
dwarf \
2013-10-07 07:38:28 +00:00
fortify-source \
2014-07-14 10:02:53 +00:00
sync-compare-and-swap \
2013-10-07 08:34:20 +00:00
glibc \
2013-09-30 13:01:56 +00:00
gtk2 \
2013-09-30 13:08:30 +00:00
gtk2-infobar \
2013-10-02 07:54:43 +00:00
libaudit \
libbfd \
libelf \
libelf-getphdrnum \
libelf-mmap \
libnuma \
2013-09-30 13:15:36 +00:00
libperl \
2013-09-30 13:18:37 +00:00
libpython \
2013-09-30 13:40:04 +00:00
libpython-version \
2013-10-02 07:54:43 +00:00
libslang \
libunwind \
2013-11-14 07:33:24 +00:00
stackprotector-all \
2014-02-19 15:52:58 +00:00
timerfd \
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 07:51:38 +00:00
libdw-dwarf-unwind \
zlib
2013-09-30 08:08:24 +00:00
2014-02-19 15:52:54 +00:00
LIB_FEATURE_TESTS = \
dwarf \
glibc \
gtk2 \
libaudit \
libbfd \
libelf \
libnuma \
libperl \
libpython \
libslang \
2014-02-19 15:52:58 +00:00
libunwind \
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 07:51:38 +00:00
libdw-dwarf-unwind \
zlib
2014-02-19 15:52:54 +00:00
VF_FEATURE_TESTS = \
backtrace \
fortify-source \
2014-07-14 10:02:53 +00:00
sync-compare-and-swap \
2014-02-19 15:52:54 +00:00
gtk2-infobar \
libelf-getphdrnum \
libelf-mmap \
libpython-version \
stackprotector-all \
timerfd \
libunwind-debug-frame \
2014-04-23 14:53:25 +00:00
bionic \
liberty \
liberty-z \
2014-10-23 21:16:03 +00:00
cplus-demangle \
compile-32 \
compile-x32
2014-02-19 15:52:54 +00:00
2014-01-07 12:47:18 +00:00
# Set FEATURE_CHECK_(C|LD)FLAGS-all for all CORE_FEATURE_TESTS features.
# If in the future we need per-feature checks/flags for features not
# mentioned in this list we need to refactor this ;-).
set_test_all_flags = $( eval $( set_test_all_flags_code) )
d e f i n e s e t _ t e s t _ a l l _ f l a g s _ c o d e
FEATURE_CHECK_CFLAGS-all += $( FEATURE_CHECK_CFLAGS-$( 1) )
FEATURE_CHECK_LDFLAGS-all += $( FEATURE_CHECK_LDFLAGS-$( 1) )
e n d e f
$( foreach feat ,$ ( CORE_FEATURE_TESTS ) ,$ ( call set_test_all_flags ,$ ( feat ) ) )
2013-10-01 12:14:31 +00:00
#
# Special fast-path for the 'all features are available' case:
#
2013-10-02 08:01:42 +00:00
$( call feature_check ,all ,$ ( MSG ) )
#
# Just in case the build freshly failed, make sure we print the
# feature matrix:
#
2013-10-01 12:14:31 +00:00
i f e q ( $( feature -all ) , 1 )
2013-10-02 07:54:43 +00:00
#
# test-all.c passed - just set all the core feature flags to 1:
#
$( foreach feat,$( CORE_FEATURE_TESTS) ,$( call feature_set,$( feat) ) )
2013-10-01 12:14:31 +00:00
e l s e
2013-12-21 05:48:11 +00:00
$( shell $( MAKE) OUTPUT = $( OUTPUT_FEATURES) CFLAGS = " $( EXTRA_CFLAGS) " LDFLAGS = $( LDFLAGS) -i -j -C config/feature-checks $( addsuffix .bin,$( CORE_FEATURE_TESTS) ) >/dev/null 2>& 1)
2013-10-02 07:54:43 +00:00
$( foreach feat,$( CORE_FEATURE_TESTS) ,$( call feature_check,$( feat) ) )
2013-10-01 12:14:31 +00:00
e n d i f
2013-09-30 11:48:44 +00:00
i f e q ( $( feature -stackprotector -all ) , 1 )
2013-04-15 02:06:58 +00:00
CFLAGS += -fstack-protector-all
2013-03-24 23:40:48 +00:00
e n d i f
2013-10-10 06:05:25 +00:00
i f e q ( $( DEBUG ) , 0 )
2013-10-07 07:38:28 +00:00
ifeq ( $( feature-fortify-source) , 1)
2013-04-15 02:06:58 +00:00
CFLAGS += -D_FORTIFY_SOURCE= 2
endif
2013-03-24 23:40:48 +00:00
e n d i f
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( src-perf) /util/include
CFLAGS += -I$( src-perf) /arch/$( ARCH) /include
2014-01-09 14:00:52 +00:00
CFLAGS += -I$( srctree) /tools/include/
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( srctree) /arch/$( ARCH) /include/uapi
CFLAGS += -I$( srctree) /arch/$( ARCH) /include
CFLAGS += -I$( srctree) /include/uapi
CFLAGS += -I$( srctree) /include
2013-05-24 12:35:23 +00:00
# $(obj-perf) for generated common-cmds.h
# $(obj-perf)/util for generated bison/flex headers
i f n e q ( $( OUTPUT ) , )
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( obj-perf) /util
CFLAGS += -I$( obj-perf)
2013-05-24 12:35:23 +00:00
e n d i f
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( src-perf) /util
CFLAGS += -I$( src-perf)
2013-06-11 15:29:18 +00:00
CFLAGS += -I$( LIB_INCLUDE)
2013-05-24 12:35:23 +00:00
2013-04-15 02:32:28 +00:00
CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS= 64 -D_GNU_SOURCE
2013-03-24 23:40:48 +00:00
2014-07-14 10:02:53 +00:00
i f e q ( $( feature -sync -compare -and -swap ) , 1 )
CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
e n d i f
2013-05-24 12:35:24 +00:00
i f n d e f N O _ B I O N I C
2013-10-29 16:43:15 +00:00
$( call feature_check,bionic)
2013-09-30 12:11:46 +00:00
ifeq ( $( feature-bionic) , 1)
BIONIC := 1
EXTLIBS := $( filter-out -lrt,$( EXTLIBS) )
EXTLIBS := $( filter-out -lpthread,$( EXTLIBS) )
endif
2013-03-24 23:40:48 +00:00
e n d i f
2013-03-24 23:45:08 +00:00
i f d e f N O _ L I B E L F
2013-04-15 02:06:58 +00:00
NO_DWARF := 1
NO_DEMANGLE := 1
NO_LIBUNWIND := 1
2014-02-19 15:52:57 +00:00
NO_LIBDW_DWARF_UNWIND := 1
2013-03-24 23:45:08 +00:00
e l s e
2013-09-30 12:20:25 +00:00
ifeq ( $( feature-libelf) , 0)
2013-10-07 08:34:20 +00:00
ifeq ( $( feature-glibc) , 1)
2013-09-30 12:11:16 +00:00
LIBC_SUPPORT := 1
endif
ifeq ( $( BIONIC) ,1)
LIBC_SUPPORT := 1
endif
ifeq ( $( LIBC_SUPPORT) ,1)
msg := $( warning No libelf found, disables 'probe' tool, please install elfutils-libelf-devel/libelf-dev) ;
NO_LIBELF := 1
NO_DWARF := 1
NO_DEMANGLE := 1
2014-03-25 12:35:11 +00:00
NO_LIBUNWIND := 1
NO_LIBDW_DWARF_UNWIND := 1
2013-09-30 12:11:16 +00:00
else
2014-06-05 15:46:04 +00: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 12:11:16 +00:00
endif
2013-04-15 02:06:58 +00:00
else
2014-02-19 15:52:58 +00: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 08:35:39 +00:00
ifneq ( $( feature-dwarf) , 1)
2013-09-30 12:11:16 +00: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
endif # Dwarf support
2013-10-02 13:30:35 +00:00
endif # libelf support
2013-03-24 23:45:08 +00:00
e n d i f # NO_LIBELF
i f n d e f N O _ L I B E L F
2013-10-07 08:05:51 +00:00
CFLAGS += -DHAVE_LIBELF_SUPPORT
2014-11-07 05:20:06 +00:00
EXTLIBS += -lelf
2013-03-24 23:48:14 +00:00
2013-09-30 13:02:28 +00:00
ifeq ( $( feature-libelf-mmap) , 1)
2013-10-07 08:05:51 +00:00
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
endif
2013-03-24 23:48:14 +00:00
2013-09-30 12:35:27 +00:00
ifeq ( $( feature-libelf-getphdrnum) , 1)
2013-10-07 08:05:51 +00:00
CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
endif
# include ARCH specific config
-include $( src-perf) /arch/$( ARCH) /Makefile
2013-03-24 23:48:14 +00:00
2013-10-07 08:05:51 +00: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)
2014-11-07 05:20:06 +00:00
EXTLIBS += -ldw
2013-10-07 08:05:51 +00:00
endif # PERF_HAVE_DWARF_REGS
endif # NO_DWARF
2013-03-24 23:45:08 +00:00
e n d i f # NO_LIBELF
2013-03-24 23:53:03 +00:00
2014-08-25 08:25:06 +00:00
i f e q ( $( ARCH ) , p o w e r p c )
ifndef NO_DWARF
CFLAGS += -DHAVE_SKIP_CALLCHAIN_IDX
endif
e n d i f
2013-03-24 23:53:03 +00:00
i f n d e f N O _ L I B U N W I N D
2013-09-30 12:45:44 +00:00
ifneq ( $( feature-libunwind) , 1)
2014-02-19 15:52:58 +00:00
msg := $( warning No libunwind found. Please install libunwind-dev[ el] >= 1.1 and/or set LIBUNWIND_DIR) ;
2013-10-07 08:30:47 +00:00
NO_LIBUNWIND := 1
2014-02-19 15:52:58 +00:00
endif
e n d i f
dwarf-post-unwind := 1
dwarf-post-unwind-text := BUG
# setup DWARF post unwinder
i f d e f N O _ L I B U N W I N D
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 23:51:29 +00:00
else
2014-02-19 15:52:58 +00:00
dwarf-post-unwind-text := libdw
endif
e l s e
dwarf-post-unwind-text := libunwind
# Enable libunwind support by default.
ifndef NO_LIBDW_DWARF_UNWIND
NO_LIBDW_DWARF_UNWIND := 1
endif
e n d i f
i f e q ( $( dwarf -post -unwind ) , 1 )
CFLAGS += -DHAVE_DWARF_UNWIND_SUPPORT
e l s e
NO_DWARF_UNWIND := 1
e n d i f
i f n d e f N O _ L I B U N W I N D
2014-04-28 12:32:33 +00:00
ifeq ( $( ARCH) ,$( filter $( ARCH) ,arm arm64) )
2014-02-19 15:52:58 +00: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 23:51:29 +00:00
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
endif
2014-02-19 15:52:58 +00:00
else
# non-ARM has no dwarf_find_debug_frame() function:
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
endif
CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
EXTLIBS += $( LIBUNWIND_LIBS)
CFLAGS += $( LIBUNWIND_CFLAGS)
LDFLAGS += $( LIBUNWIND_LDFLAGS)
2013-09-30 12:45:44 +00:00
e n d i f
2013-03-24 23:54:36 +00:00
i f n d e f N O _ L I B A U D I T
2013-09-30 12:55:31 +00:00
ifneq ( $( feature-libaudit) , 1)
2013-04-15 02:06:58 +00: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 10:07:11 +00:00
CFLAGS += -DHAVE_LIBAUDIT_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -laudit
endif
2013-03-24 23:54:36 +00:00
e n d i f
2013-03-24 23:56:08 +00:00
i f d e f N O _ N E W T
2013-04-15 02:06:58 +00:00
NO_SLANG = 1
2013-03-24 23:56:08 +00:00
e n d i f
i f n d e f N O _ S L A N G
2013-09-30 12:57:54 +00:00
ifneq ( $( feature-libslang) , 1)
2013-04-15 02:06:58 +00:00
msg := $( warning slang not found, disables TUI support. Please install slang-devel or libslang-dev) ;
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 10:07:11 +00:00
CFLAGS += -DHAVE_SLANG_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -lslang
endif
2013-03-24 23:56:08 +00:00
e n d i f
2013-03-17 23:09:24 +00:00
i f n d e f N O _ G T K 2
2014-01-15 10:44:08 +00:00
FLAGS_GTK2 = $( CFLAGS) $( LDFLAGS) $( EXTLIBS) $( shell $( PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)
2013-09-30 13:01:56 +00:00
ifneq ( $( feature-gtk2) , 1)
2013-04-15 02:06:58 +00:00
msg := $( warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev) ;
NO_GTK2 := 1
else
2013-09-30 13:08:30 +00:00
ifeq ( $( feature-gtk2-infobar) , 1)
2013-09-13 06:27:43 +00:00
GTK_CFLAGS := -DHAVE_GTK_INFO_BAR_SUPPORT
2013-04-15 02:06:58 +00:00
endif
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_GTK2_SUPPORT
2014-01-15 10:44:08 +00: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 18:55:54 +00:00
EXTLIBS += -ldl
2013-04-15 02:06:58 +00:00
endif
2013-03-17 23:09:24 +00:00
e n d i f
2013-03-17 23:19:44 +00:00
grep-libs = $( filter -l%,$( 1) )
strip-libs = $( filter-out -l%,$( 1) )
i f d e f N O _ L I B P E R L
2013-04-15 02:06:58 +00:00
CFLAGS += -DNO_LIBPERL
2013-03-17 23:19:44 +00:00
e l s e
2013-04-15 02:06:58 +00: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 13:15:36 +00:00
ifneq ( $( feature-libperl) , 1)
2013-04-15 02:06:58 +00:00
CFLAGS += -DNO_LIBPERL
NO_LIBPERL := 1
2014-05-26 19:02:30 +00:00
msg := $( warning Missing perl devel files. Disabling perl scripting support, consider installing perl-ExtUtils-Embed) ;
2013-04-15 02:06:58 +00:00
else
LDFLAGS += $( PERL_EMBED_LDFLAGS)
EXTLIBS += $( PERL_EMBED_LIBADD)
endif
2013-03-17 23:19:44 +00:00
e n d i f
2013-03-17 23:35:32 +00:00
2013-10-29 16:43:16 +00:00
i f e q ( $( feature -timerfd ) , 1 )
CFLAGS += -DHAVE_TIMERFD_SUPPORT
e l s e
msg := $( warning No timerfd support. Disables 'perf kvm stat live' ) ;
e n d i f
2013-03-17 23:35:32 +00:00
disable-python = $( eval $( disable-python_code) )
d e f i n e d i s a b l e - p y t h o n _ c o d e
2013-03-21 10:30:54 +00:00
CFLAGS += -DNO_LIBPYTHON
2013-03-17 23:35:32 +00:00
$( if $( 1) ,$( warning No $( 1) was found) )
$( warning Python support will not be built)
NO_LIBPYTHON := 1
e n d e f
2014-07-29 06:57:19 +00:00
i f d e f N O _ L I B P Y T H O N
$( call disable-python)
2013-03-17 23:35:32 +00:00
e l s e
2014-07-29 06:57:19 +00:00
ifndef PYTHON
$( call disable-python,python interpreter)
2013-03-17 23:35:32 +00:00
else
2014-07-29 06:57:19 +00:00
PYTHON_WORD := $( call shell-wordify,$( PYTHON) )
2013-03-17 23:35:32 +00:00
ifndef PYTHON_CONFIG
$( call disable-python,python-config tool)
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) )
PYTHON_EMBED_LIBADD := $( call grep-libs,$( PYTHON_EMBED_LDOPTS) )
PYTHON_EMBED_CCOPTS := $( shell $( PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
FLAGS_PYTHON_EMBED := $( PYTHON_EMBED_CCOPTS) $( PYTHON_EMBED_LDOPTS)
2013-09-30 13:18:37 +00:00
ifneq ( $( feature-libpython) , 1)
2013-03-17 23:35:32 +00:00
$( call disable-python,Python.h ( for Python 2.x) )
else
2013-09-30 13:40:04 +00:00
ifneq ( $( feature-libpython-version) , 1)
2013-03-17 23:35:32 +00: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 10:41:05 +00:00
LDFLAGS += $( PYTHON_EMBED_LDFLAGS)
2013-03-17 23:35:32 +00:00
EXTLIBS += $( PYTHON_EMBED_LIBADD)
2013-05-24 12:35:23 +00:00
LANG_BINDINGS += $( obj-perf) python/perf.so
2013-03-17 23:35:32 +00:00
endif
endif
endif
endif
e n d i f
2013-03-17 23:38:16 +00:00
2013-10-10 20:24:00 +00:00
i f e q ( $( feature -libbfd ) , 1 )
2014-04-23 14:53:25 +00: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 20:24:00 +00:00
e n d i f
2013-03-17 23:38:16 +00:00
i f d e f N O _ D E M A N G L E
2013-04-15 02:06:58 +00:00
CFLAGS += -DNO_DEMANGLE
2013-03-17 23:38:16 +00:00
e l s e
2013-09-30 10:07:11 +00:00
ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -liberty
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00:00
else
2013-10-10 20:24:00 +00:00
ifneq ( $( feature-libbfd) , 1)
2014-04-23 14:53:25 +00: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 13:15:09 +00:00
ifeq ( $( feature-cplus-demangle) , 1)
2013-04-15 02:06:58 +00:00
EXTLIBS += -liberty
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00:00
else
msg := $( warning No bfd.h/libbfd found, install binutils-dev[ el] /zlib-static to gain symbol demangling)
CFLAGS += -DNO_DEMANGLE
endif
endif
endif
endif
endif
2013-03-17 23:38:16 +00:00
e n d i f
2013-03-17 23:41:04 +00:00
2013-10-10 20:24:00 +00:00
i f n e q ( $( filter -lbfd ,$ ( EXTLIBS ) ) , )
CFLAGS += -DHAVE_LIBBFD_SUPPORT
e n d i f
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 07:51:38 +00:00
i f n d e f N O _ Z L I B
ifeq ( $( feature-zlib) , 1)
CFLAGS += -DHAVE_ZLIB_SUPPORT
EXTLIBS += -lz
else
NO_ZLIB := 1
endif
e n d i f
2013-03-17 23:41:04 +00:00
i f n d e f N O _ B A C K T R A C E
2013-09-30 14:49:38 +00:00
ifeq ( $( feature-backtrace) , 1)
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_BACKTRACE_SUPPORT
2013-04-15 02:06:58 +00:00
endif
2013-03-17 23:41:04 +00:00
e n d i f
2013-03-17 23:45:27 +00:00
i f n d e f N O _ L I B N U M A
2013-09-30 11:37:10 +00:00
ifeq ( $( feature-libnuma) , 0)
2013-12-02 15:26:48 +00:00
msg := $( warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev) ;
2013-04-15 02:06:58 +00:00
NO_LIBNUMA := 1
else
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_LIBNUMA_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -lnuma
endif
2013-03-17 23:45:27 +00:00
e n d i f
2013-03-17 23:56:01 +00:00
2014-07-03 13:59:49 +00:00
i f d e f H A V E _ K V M _ S T A T _ S U P P O R T
CFLAGS += -DHAVE_KVM_STAT_SUPPORT
e n d i f
2014-10-23 21:16:03 +00:00
i f e q ( $ { I S _ 6 4 _ B I T } , 1 )
ifndef NO_PERF_READ_VDSO32
$( call feature_check,compile-32)
2014-10-23 10:45:24 +00:00
ifeq ( $( feature-compile-32) , 1)
CFLAGS += -DHAVE_PERF_READ_VDSO32
else
2014-10-23 21:16:03 +00:00
NO_PERF_READ_VDSO32 := 1
endif
endif
ifneq ( ${ IS_X86_64 } , 1)
NO_PERF_READ_VDSOX32 := 1
endif
ifndef NO_PERF_READ_VDSOX32
$( call feature_check,compile-x32)
2014-10-23 10:45:24 +00:00
ifeq ( $( feature-compile-x32) , 1)
CFLAGS += -DHAVE_PERF_READ_VDSOX32
else
2014-10-23 21:16:03 +00:00
NO_PERF_READ_VDSOX32 := 1
endif
endif
e l s e
NO_PERF_READ_VDSO32 := 1
NO_PERF_READ_VDSOX32 := 1
e n d i f
2013-03-17 23:56:01 +00: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
i f n d e f D E S T D I R
2014-06-02 16:44:34 +00:00
prefix ?= $( HOME)
2013-03-17 23:56:01 +00:00
e n d i f
bindir_relative = bin
bindir = $( prefix) /$( bindir_relative)
mandir = share/man
infodir = share/info
perfexecdir = libexec/perf-core
sharedir = $( prefix) /share
template_dir = share/perf-core/templates
htmldir = share/doc/perf-doc
i f e q ( $( prefix ) , / u s r )
sysconfdir = /etc
ETC_PERFCONFIG = $( sysconfdir) /perfconfig
e l s e
sysconfdir = $( prefix) /etc
ETC_PERFCONFIG = etc/perfconfig
e n d i f
2014-08-25 14:55:52 +00:00
i f n d e f l i b
2013-09-13 06:27:43 +00:00
i f e q ( $( IS_X 86_ 64) , 1 )
lib = lib64
e l s e
2013-03-17 23:56:01 +00:00
lib = lib
2013-09-13 06:27:43 +00:00
e n d i f
2014-08-25 14:55:52 +00:00
e n d i f # lib
2013-09-13 06:27:43 +00:00
libdir = $( prefix) /$( lib)
2013-03-17 23:56:01 +00:00
# Shell quote (do not use $(call) to accommodate ancient setups);
ETC_PERFCONFIG_SQ = $( subst ',' \' ' ,$( ETC_PERFCONFIG) )
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) )
prefix_SQ = $( subst ',' \' ' ,$( prefix) )
sysconfdir_SQ = $( subst ',' \' ' ,$( sysconfdir) )
2013-09-13 06:27:43 +00:00
libdir_SQ = $( subst ',' \' ' ,$( libdir) )
2013-03-17 23:56:01 +00:00
i f n e q ( $( filter /%,$ ( firstword $ ( perfexecdir ) ) ) , )
perfexec_instdir = $( perfexecdir)
e l s e
perfexec_instdir = $( prefix) /$( perfexecdir)
e n d i f
perfexec_instdir_SQ = $( subst ',' \' ' ,$( perfexec_instdir) )
2013-12-03 13:09:21 +00:00
# If we install to $(HOME) we keep the traceevent default:
# $(HOME)/.traceevent/plugins
# Otherwise we install plugins into the global $(libdir).
i f d e f D E S T D I R
plugindir = $( libdir) /traceevent/plugins
2014-01-22 15:01:48 +00:00
plugindir_SQ = $( subst ',' \' ' ,$( plugindir) )
2013-12-03 13:09:21 +00:00
e n d i f
2014-02-19 15:52:54 +00:00
#
# Print the result of the feature test:
#
2014-02-19 15:52:55 +00:00
feature_print_status = $( eval $( feature_print_status_code) ) $( info $( MSG) )
2014-02-19 15:52:54 +00:00
2014-02-19 15:52:55 +00:00
d e f i n e f e a t u r e _ p r i n t _ s t a t u s _ c o d e
2014-02-19 15:52:54 +00:00
ifeq ( $( feature-$( 1) ) , 1)
MSG = $( shell printf '...%30s: [ \033[32mon\033[m ]' $( 1) )
else
MSG = $( shell printf '...%30s: [ \033[31mOFF\033[m ]' $( 1) )
endif
e n d e f
2014-02-19 15:52:55 +00:00
feature_print_var = $( eval $( feature_print_var_code) ) $( info $( MSG) )
d e f i n e f e a t u r e _ p r i n t _ v a r _ c o d e
MSG = $( shell printf '...%30s: %s' $( 1) $( $( 1) ) )
e n d e f
feature_print_text = $( eval $( feature_print_text_code) ) $( info $( MSG) )
d e f i n e f e a t u r e _ p r i n t _ t e x t _ c o d e
MSG = $( shell printf '...%30s: %s' $( 1) $( 2) )
e n d e f
2014-02-19 15:52:54 +00:00
PERF_FEATURES := $( foreach feat,$( LIB_FEATURE_TESTS) ,feature-$( feat) ( $( feature-$( feat) ) ) )
PERF_FEATURES_FILE := $( shell touch $( OUTPUT) PERF-FEATURES; cat $( OUTPUT) PERF-FEATURES)
2014-02-19 15:52:58 +00:00
i f e q ( $( dwarf -post -unwind ) , 1 )
PERF_FEATURES += dwarf-post-unwind( $( dwarf-post-unwind-text) )
e n d i f
2014-02-19 15:52:54 +00:00
# The $(display_lib) controls the default detection message
# output. It's set if:
# - detected features differes from stored features from
# last build (in PERF-FEATURES file)
# - one of the $(LIB_FEATURE_TESTS) is not detected
# - VF is enabled
i f n e q ( "$(PERF_FEATURES)" , "$(PERF_FEATURES_FILE)" )
$( shell echo " $( PERF_FEATURES) " > $( OUTPUT) PERF-FEATURES)
display_lib := 1
e n d i f
feature_check = $( eval $( feature_check_code) )
d e f i n e f e a t u r e _ c h e c k _ c o d e
ifneq ( $( feature-$( 1) ) , 1)
display_lib := 1
endif
e n d e f
$( foreach feat ,$ ( LIB_FEATURE_TESTS ) ,$ ( call feature_check ,$ ( feat ) ) )
i f e q ( $( VF ) , 1 )
display_lib := 1
display_vf := 1
e n d i f
i f e q ( $( display_lib ) , 1 )
$( info )
$( info Auto-detecting system features:)
2014-02-19 15:52:55 +00:00
$( foreach feat,$( LIB_FEATURE_TESTS) ,$( call feature_print_status,$( feat) ,) )
2014-02-19 15:52:58 +00:00
ifeq ( $( dwarf-post-unwind) ,1)
$( call feature_print_text,"DWARF post unwind library" , $( dwarf-post-unwind-text) )
endif
2014-02-19 15:52:54 +00:00
e n d i f
i f e q ( $( display_vf ) , 1 )
2014-02-19 15:52:55 +00:00
$( foreach feat,$( VF_FEATURE_TESTS) ,$( call feature_print_status,$( feat) ,) )
$( info )
$( call feature_print_var,prefix)
$( call feature_print_var,bindir)
$( call feature_print_var,libdir)
$( call feature_print_var,sysconfdir)
2014-02-19 15:52:58 +00:00
$( call feature_print_var,LIBUNWIND_DIR)
$( call feature_print_var,LIBDW_DIR)
2014-02-19 15:52:54 +00:00
e n d i f
i f e q ( $( display_lib ) , 1 )
$( info )
e n d i f