From 2b0a523adeb5ab8b20135375dccb3cacce582fbe Mon Sep 17 00:00:00 2001 From: Anuj Mittal Date: Mon, 24 Feb 2020 07:51:09 +0800 Subject: linux-intel: backport commit from mainline to fix perf builds Fixes errors: | /build/tmp/work/intel_core2_32-poky-linux/perf/1.0-r9/recipe-sysroot-native/usr/bin/i686-poky-linux/../../libexec/i686-poky-linux/gcc/i686-poky-linux/9.2.0/ld: /build/tmp/work/intel_core2_32-poky-linux/perf/1.0-r9/perf-1.0/perf-in.o: in function `find_address_in_section': /usr/src/debug/perf/1.0-r9/perf-1.0/tools/perf/util/srcline.c:200: undefined reference to `bfd_get_section_flags' | /build/tmp/work/intel_core2_32-poky-linux/perf/1.0-r9/recipe-sysroot-native/usr/bin/i686-poky-linux/../../libexec/i686-poky-linux/gcc/i686-poky-linux/9.2.0/ld: /usr/src/debug/perf/1.0-r9/perf-1.0/tools/perf/util/srcline.c:204: undefined reference to `bfd_get_section_vma' | /build/tmp/work/intel_core2_32-poky-linux/perf/1.0-r9/recipe-sysroot-native/usr/bin/i686-poky-linux/../../libexec/i686-poky-linux/gcc/i686-poky-linux/9.2.0/ld: /usr/src/debug/perf/1.0-r9/perf-1.0/tools/perf/util/srcline.c:205: undefined reference to `bfd_get_section_size' | collect2: error: ld returned 1 exit status Also see: http://git.openembedded.org/openembedded-core/commit/?id=16e943690bdbdf2e60a2fe33950697278018c7d1 Include the patch in recipe untils it's not available in linux-intel LTS tree. Signed-off-by: Anuj Mittal --- recipes-kernel/linux/linux-intel.inc | 1 + .../linux-intel/perf-fix-build-with-binutils.patch | 60 ++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 recipes-kernel/linux/linux-intel/perf-fix-build-with-binutils.patch diff --git a/recipes-kernel/linux/linux-intel.inc b/recipes-kernel/linux/linux-intel.inc index 6bd9837d..cd1ecb23 100644 --- a/recipes-kernel/linux/linux-intel.inc +++ b/recipes-kernel/linux/linux-intel.inc @@ -8,6 +8,7 @@ KERNEL_CONFIG_URI ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;n SRC_URI = " \ git://github.com/intel/linux-intel-lts.git;protocol=https;name=machine;branch=${KBRANCH}; \ ${KERNEL_CONFIG_URI} \ + file://perf-fix-build-with-binutils.patch \ " SRC_URI_append_core2-32-intel-common = " file://disable_skylake_sound.cfg" diff --git a/recipes-kernel/linux/linux-intel/perf-fix-build-with-binutils.patch b/recipes-kernel/linux/linux-intel/perf-fix-build-with-binutils.patch new file mode 100644 index 00000000..1470a5d7 --- /dev/null +++ b/recipes-kernel/linux/linux-intel/perf-fix-build-with-binutils.patch @@ -0,0 +1,60 @@ +From 0ada120c883d4f1f6aafd01cf0fbb10d8bbba015 Mon Sep 17 00:00:00 2001 +From: Changbin Du +Date: Tue, 28 Jan 2020 23:29:38 +0800 +Subject: [PATCH] perf: Make perf able to build with latest libbfd + +libbfd has changed the bfd_section_* macros to inline functions +bfd_section_ since 2019-09-18. See below two commits: + o http://www.sourceware.org/ml/gdb-cvs/2019-09/msg00064.html + o https://www.sourceware.org/ml/gdb-cvs/2019-09/msg00072.html + +This fix make perf able to build with both old and new libbfd. + +Signed-off-by: Changbin Du +Acked-by: Jiri Olsa +Cc: Peter Zijlstra +Link: http://lore.kernel.org/lkml/20200128152938.31413-1-changbin.du@gmail.com +Signed-off-by: Arnaldo Carvalho de Melo + +Upstream-Status: Backport [https://github.com/torvalds/linux/commit/0ada120c883d4f1f6aafd01cf0fbb10d8bbba015] +Signed-off-by: Anuj Mittal +--- + tools/perf/util/srcline.c | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c +index 6ccf6f6d09df9..5b7d6c16d33fe 100644 +--- a/tools/perf/util/srcline.c ++++ b/tools/perf/util/srcline.c +@@ -193,16 +193,30 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data) + bfd_vma pc, vma; + bfd_size_type size; + struct a2l_data *a2l = data; ++ flagword flags; + + if (a2l->found) + return; + +- if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0) ++#ifdef bfd_get_section_flags ++ flags = bfd_get_section_flags(abfd, section); ++#else ++ flags = bfd_section_flags(section); ++#endif ++ if ((flags & SEC_ALLOC) == 0) + return; + + pc = a2l->addr; ++#ifdef bfd_get_section_vma + vma = bfd_get_section_vma(abfd, section); ++#else ++ vma = bfd_section_vma(section); ++#endif ++#ifdef bfd_get_section_size + size = bfd_get_section_size(section); ++#else ++ size = bfd_section_size(section); ++#endif + + if (pc < vma || pc >= vma + size) + return; -- cgit v1.2.3-54-g00ecf