Bug#771340: linux-tools-3.16: perf not built for arm64
Package: linux-tools-3.16
Severity: important
Tags: patch
Dear Maintainer,
For arm64, perf is not being built for Jessie.
I have attached a patch which works for me on a Juno board.
A kernel patch is cherry-picked to fix a perf build bug (this only
affects the arm64 tree).
Also, I have modified the build-dep to explicitly pull in binutils-dev.
(I found that both binutils-dev and libiberty are needed for C++
demangling support).
Some other build logic is altered in particular the architectures list
is now set to: linux-any; and the install-tools rule is now an
unconditional dependency for binary-arch, this took me *ages* to
find :-(.
Please let me know if I've missed anything obvious or you would like me
to run additional tests.
Cheers,
--
Steve
diff -Nru linux-tools-3.16/debian/build/tools/perf/Makefile linux-tools-3.16/debian/build/tools/perf/Makefile
--- linux-tools-3.16/debian/build/tools/perf/Makefile 2014-09-09 05:06:33.000000000 +0000
+++ linux-tools-3.16/debian/build/tools/perf/Makefile 2014-11-28 14:08:45.000000000 +0000
@@ -12,6 +12,8 @@
NO_LIBUNWIND=
else ifeq ($(DEB_HOST_ARCH_CPU),arm)
KERNEL_ARCH_PERF = arm
+else ifeq ($(DEB_HOST_ARCH_CPU),arm64)
+ KERNEL_ARCH_PERF = arm64
else ifeq ($(DEB_HOST_ARCH_CPU),hppa)
KERNEL_ARCH_PERF = parisc
else ifeq ($(DEB_HOST_ARCH_CPU),i386)
diff -Nru linux-tools-3.16/debian/control linux-tools-3.16/debian/control
--- linux-tools-3.16/debian/control 2014-09-09 12:23:52.000000000 +0000
+++ linux-tools-3.16/debian/control 2014-11-28 15:09:07.000000000 +0000
@@ -4,7 +4,7 @@
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Uploaders: Bastian Blank <waldi@debian.org>, Ben Hutchings <ben@decadent.org.uk>, Jonathan Nieder <jrnieder@gmail.com>
Standards-Version: 3.9.4
-Build-Depends: debhelper (>> 7), python, asciidoc, bison, flex, libaudit-dev, libdw-dev, libelf-dev, libiberty-dev | binutils-dev (<< 2.23.91.20131123-1), libnewt-dev, libnuma-dev [amd64 i386 powerpc ppc64 ppc64el], libperl-dev, libunwind8-dev [amd64 i386], python-dev, xmlto, autoconf, automake, libtool, libglib2.0-dev, libudev-dev, libwrap0-dev
+Build-Depends: debhelper (>> 7), python, asciidoc, bison, flex, libaudit-dev, libdw-dev, libelf-dev, libiberty-dev, binutils-dev, libnewt-dev, libnuma-dev [amd64 i386 powerpc ppc64 ppc64el], libperl-dev, libunwind8-dev [amd64 i386], python-dev, xmlto, autoconf, automake, libtool, libglib2.0-dev, libudev-dev, libwrap0-dev
Vcs-Svn: svn://svn.debian.org/svn/kernel/dists/trunk/linux-tools/
Vcs-Browser: http://anonscm.debian.org/viewvc/kernel/dists/trunk/linux-tools/
@@ -17,7 +17,7 @@
Multi-Arch: foreign
Package: linux-tools-3.16
-Architecture: alpha amd64 armel armhf hppa i386 powerpc ppc64 ppc64el s390 s390x sh4 sparc sparc64
+Architecture: linux-any
Section: devel
Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ${python:Depends}
Recommends: linux-base (>= 3.4~)
diff -Nru linux-tools-3.16/debian/control.md5sum linux-tools-3.16/debian/control.md5sum
--- linux-tools-3.16/debian/control.md5sum 2014-09-09 12:23:52.000000000 +0000
+++ linux-tools-3.16/debian/control.md5sum 2014-11-28 15:09:07.000000000 +0000
@@ -1,4 +1,4 @@
ac3acacf0cde6d2cc424f28241bb0857 debian/bin/gencontrol.py
e22c0d8272eb6d18751657807e50bc3f debian/changelog
-d85b23bb34d1fc562998ab0c6117ff28 debian/templates/control.main.in
-96d01c999dbb871c3c6fecaad4b4901c debian/templates/control.source.in
+6167d5526bfd33090891989b0ab3d9ff debian/templates/control.main.in
+39974d9874415912d0e40cef24b78c46 debian/templates/control.source.in
diff -Nru linux-tools-3.16/debian/patches/fix-arm64-build.patch linux-tools-3.16/debian/patches/fix-arm64-build.patch
--- linux-tools-3.16/debian/patches/fix-arm64-build.patch 1970-01-01 00:00:00.000000000 +0000
+++ linux-tools-3.16/debian/patches/fix-arm64-build.patch 2014-11-28 16:16:52.000000000 +0000
@@ -0,0 +1,44 @@
+From: Steve Capper <steve.capper@linaro.org>
+Date: Fri, 28 Nov 2014 16:15:00 +0000
+Subject: Cherry-pick perf fix for arm64
+
+This is a cherry-pick of the following commit, needed for perf to build
+on arm64.
+
+commit 7d885749b6de2c9a1168d566e2380207b9177108
+Author: Mark Salter <msalter@redhat.com>
+Commit: Arnaldo Carvalho de Melo <acme@redhat.com>
+
+ perf tools: Fix arm64 build error
+
+ I'm seeing the following build error on arm64:
+
+ In file included from util/event.c:3:0:
+ util/event.h:95:17: error: 'PERF_REGS_MAX' undeclared here (not in a function)
+ u64 cache_regs[PERF_REGS_MAX];
+ ^
+
+ This patch adds a PERF_REGS_MAX definition for arm64.
+
+ Signed-off-by: Mark Salter <msalter@redhat.com>
+ Acked-by: Jean Pihet <jean.pihet@linaro.org>
+ Cc: Ingo Molnar <mingo@redhat.com>
+ Cc: Jean Pihet <jean.pihet@linaro.org>
+ Cc: Paul Mackerras <paulus@samba.org>
+ Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
+ Link: http://lkml.kernel.org/r/1406325766-8085-1-git-send-email-msalter@redhat.com
+ Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+
+
+Index: linux-tools-3.16/tools/perf/arch/arm64/include/perf_regs.h
+===================================================================
+--- linux-tools-3.16.orig/tools/perf/arch/arm64/include/perf_regs.h
++++ linux-tools-3.16/tools/perf/arch/arm64/include/perf_regs.h
+@@ -6,6 +6,7 @@
+ #include <asm/perf_regs.h>
+
+ #define PERF_REGS_MASK ((1ULL << PERF_REG_ARM64_MAX) - 1)
++#define PERF_REGS_MAX PERF_REG_ARM64_MAX
+ #define PERF_REG_IP PERF_REG_ARM64_PC
+ #define PERF_REG_SP PERF_REG_ARM64_SP
+
diff -Nru linux-tools-3.16/debian/patches/series linux-tools-3.16/debian/patches/series
--- linux-tools-3.16/debian/patches/series 2014-09-08 22:32:53.000000000 +0000
+++ linux-tools-3.16/debian/patches/series 2014-11-28 14:18:51.000000000 +0000
@@ -3,3 +3,4 @@
tools-perf-install.patch
usbip-document-tcp-wrappers.patch
kbuild-fix-recordmcount-dependency.patch
+fix-arm64-build.patch
diff -Nru linux-tools-3.16/debian/rules.real linux-tools-3.16/debian/rules.real
--- linux-tools-3.16/debian/rules.real 2014-09-08 22:32:53.000000000 +0000
+++ linux-tools-3.16/debian/rules.real 2014-11-28 15:39:07.000000000 +0000
@@ -8,10 +8,7 @@
# includes any binNMU part.
VERSION_DEBIAN_FULL := $(shell dpkg-parsechangelog | sed -ne 's,^Version: *\(.*\)$$,\1,p')
-binary-arch: install-kbuild install-usbip
-ifneq ($(filter alpha amd64 armel armhf hppa i386 powerpc ppc64 ppc64el s390 s390x sh4 sparc sparc64,$(DEB_BUILD_ARCH)),)
- binary-arch: install-tools
-endif
+binary-arch: install-kbuild install-usbip install-tools
build: $(STAMPS_DIR)/build
diff -Nru linux-tools-3.16/debian/templates/control.main.in linux-tools-3.16/debian/templates/control.main.in
--- linux-tools-3.16/debian/templates/control.main.in 2014-09-08 22:32:53.000000000 +0000
+++ linux-tools-3.16/debian/templates/control.main.in 2014-11-28 14:55:53.000000000 +0000
@@ -7,7 +7,7 @@
Package: linux-tools-@version@
Section: devel
-Architecture: alpha amd64 armel armhf hppa i386 powerpc ppc64 ppc64el s390 s390x sh4 sparc sparc64
+Architecture: linux-any
Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ${python:Depends}
Recommends: linux-base (>= 3.4~)
Suggests: linux-doc-@version@
diff -Nru linux-tools-3.16/debian/templates/control.source.in linux-tools-3.16/debian/templates/control.source.in
--- linux-tools-3.16/debian/templates/control.source.in 2014-09-08 22:32:53.000000000 +0000
+++ linux-tools-3.16/debian/templates/control.source.in 2014-11-28 15:00:53.000000000 +0000
@@ -6,7 +6,7 @@
Standards-Version: 3.9.4
Build-Depends:
debhelper (>> 7), python,
- asciidoc, bison, flex, libaudit-dev, libdw-dev, libelf-dev, libiberty-dev | binutils-dev (<< 2.23.91.20131123-1), libnewt-dev, libnuma-dev [amd64 i386 powerpc ppc64 ppc64el], libperl-dev, libunwind8-dev [amd64 i386], python-dev, xmlto,
+ asciidoc, bison, flex, libaudit-dev, libdw-dev, libelf-dev, libiberty-dev, binutils-dev, libnewt-dev, libnuma-dev [amd64 i386 powerpc ppc64 ppc64el], libperl-dev, libunwind8-dev [amd64 i386], python-dev, xmlto,
autoconf, automake, libtool, libglib2.0-dev, libudev-dev, libwrap0-dev
Vcs-Svn: svn://svn.debian.org/svn/kernel/dists/trunk/linux-tools/
Vcs-Browser: http://anonscm.debian.org/viewvc/kernel/dists/trunk/linux-tools/
Reply to: