perf/urgent fixes
Subsystems (2)
Arnaldo Carvalho de Melo
maintainerHi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 65ea03e31e5ab47f784b1a701419264af97d3205:
Merge tag 'perf-urgent-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2015-07-15 13:31:21 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo
for you to fetch changes up to 3c71ba3f80bbd476bbfb2a008da9b676031cbd32:
perf tools: Really allow to specify custom CC, AR or LD (2015-07-15 11:57:28 -0300)
----------------------------------------------------------------
perf/urgent fixes:
User visible:
- Fix misplaced check for HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT in the auxtrace code, which made 'perf record' fail straight away in some architectures, even when auxtrace wasn't involved. (Adrian Hunter)
Developer stuff:
- Really allow to specify custom CC, AR or LD (Alexey Brodkin)
----------------------------------------------------------------
Adrian Hunter (1):
perf auxtrace: Fix misplaced check for HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
Alexey Brodkin (1):
perf tools: Really allow to specify custom CC, AR or LD
tools/perf/Makefile.perf | 19 ++++++++++++++++--- tools/perf/util/auxtrace.c | 10 +++++----- 2 files changed, 21 insertions(+), 8 deletions(-)
Arnaldo Carvalho de Melo
maintainerPATCH 1/2 perf auxtrace: Fix misplaced check for HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
From: Adrian Hunter <[email protected]>
Move the checking for HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT for AUX area mmaps until after checking if such mmaps are used anyway.
--- tools/perf/util/auxtrace.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
tools/perf/util/auxtrace.c +5 -5
@@ -53,11 +53,6 @@ int auxtrace_mmap__mmap(struct auxtrace_mmap *mm, {struct perf_event_mmap_page *pc = userpg; -#if BITS_PER_LONG !=64 && !defined(HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT ) -pr_err ("Cannot use AUX area tracing mmaps\n" ); -return -1 ; -#endif -WARN_ONCE (mm->base,"Uninitialized auxtrace_mmap\n" ); mm->userpg = userpg;
@@ -73,6 +68,11 @@ int auxtrace_mmap__mmap(struct auxtrace_mmap *mm,return 0 ; } +#if BITS_PER_LONG !=64 && !defined(HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT ) +pr_err ("Cannot use AUX area tracing mmaps\n" ); +return -1 ; +#endif + pc->aux_offset = mp->offset; pc->aux_size = mp->len;
Signature · 1 line
2.1.0
Arnaldo Carvalho de Melo
maintainerPATCH 2/2 perf tools: Really allow to specify custom CC, AR or LD
In reply to Arnaldo Carvalho de MeloFrom: Alexey Brodkin <[email protected]>
Commit 5ef7bbb09f7b ("perf tools: Allow to specify custom linker command") was meant to enable usage non $(CROSS_COMPILE)ld linker during perf building.
But implementation didn't take into account the fact that LD is a pre-defined variable in GNU Make. I.e. it is always defined.
Which means there's no point to check "LD ?= ..." because it will never succeed.
And so LD will be either that explicitly passed to make like this:
------->8-------
make LD=path_to_my_ld ...
------->8-------
or default value, which is host's "ld".
Latter leads to failure of cross-linkage because instead of cross linker "$(CROSS_COMPILE)ld" host's "ld" is used.
Fortunately there's a way to do correct substitution of $(CROSS_COMPILE)ld with user defined LD on command-line.
As a reference was used implementation in "tools/lib/traceevent/Makefile".
Build tested for x86_64 and ARC.
Thanks Jiri for this hint.
--- tools/perf/Makefile.perf | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-)
tools/perf/Makefile.perf +16 -3
@@ -109,9 +109,22 @@ $(OUTPUT)PERF-VERSION-FILE: ../../.git/HEAD $(Q)$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) $(Q)touch $(OUTPUT)PERF-VERSION-FILE -CC = $(CROSS_COMPILE)gcc -LD ?= $(CROSS_COMPILE)ld -AR = $(CROSS_COMPILE)ar +# Makefiles suck: This macro sets a default value of $(2) for the +# variable named by $(1), unless the variable has been set by +# environment or command line. This is necessary for CC and AR +# because make sets default values, so the simpler ?= approach +# won't work as expected. +define allow-override + $(if $(or $(findstring environment,$(origin $(1))),\ + $(findstring command line,$(origin $(1)))),,\ + $(eval $(1) = $(2))) +endef + +# Allow setting CC and AR and LD, or setting CROSS_COMPILE as a prefix. +$(call allow-override,CC,$(CROSS_COMPILE)gcc) +$(call allow-override,AR,$(CROSS_COMPILE)ar) +$(call allow-override,LD,$(CROSS_COMPILE)ld) + PKG_CONFIG = $(CROSS_COMPILE)pkg-config RM = rm -f
Signature · 1 line
2.1.0
Quoted 37 lines · Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit
65ea03e31e5ab47f784b1a701419264af97d3205:Merge tag 'perf-urgent-for-mingo' of
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linuxinto perf/urgent (2015-07-15 13:31:21 +0200)are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.gittags/perf-urgent-for-mingofor you to fetch changes up to
3c71ba3f80bbd476bbfb2a008da9b676031cbd32:perf tools: Really allow to specify custom CC, AR or LD (2015-07-15 11:57:28 -0300)
----------------------------------------------------------------
perf/urgent fixes:User visible:
- Fix misplaced check for
HAVE_SYNC_COMPARE_AND_SWAP_SUPPORTin the auxtrace code, which made 'perf record' fail straight away in some architectures, even when auxtrace wasn't involved. (Adrian Hunter)Developer stuff:
- Really allow to specify custom CC, AR or LD (Alexey Brodkin)
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>----------------------------------------------------------------
Adrian Hunter (1):
perf auxtrace: Fix misplaced check forHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
Quoted 6 lines
Alexey Brodkin (1):
perf tools: Really allow to specify custom CC, AR or LDtools/perf/Makefile.perf | 19 ++++++++++++++++--- tools/perf/util/auxtrace.c | 10 +++++----- 2 files changed, 21 insertions(+), 8 deletions(-)
Pulled, thanks Arnaldo!
Ingo