summaryrefslogtreecommitdiffstats
path: root/debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch')
-rw-r--r--debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch b/debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch
new file mode 100644
index 000000000..e24915fe0
--- /dev/null
+++ b/debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch
@@ -0,0 +1,101 @@
+From: Andres Freund <andres@anarazel.de>
+Subject: [3/5] tools perf: Fix compilation error with new binutils
+Date: Sun, 3 Jul 2022 14:25:49 -0700
+Origin: https://lore.kernel.org/lkml/20220703212551.1114923-4-andres@anarazel.de/
+
+binutils changed the signature of init_disassemble_info(), which now causes
+compilation failures for tools/perf/util/annotate.c, e.g. on debian
+unstable. Relevant binutils commit:
+https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=60a3da00bd5407f07
+
+Wire up the feature test and switch to init_disassemble_info_compat(),
+which were introduced in prior commits, fixing the compilation failure.
+
+I verified that perf can still disassemble bpf programs by using bpftrace
+under load, recording a perf trace, and then annotating the bpf "function"
+with and without the changes. With old binutils there's no change in output
+before/after this patch. When comparing the output from old binutils (2.35)
+to new bintuils with the patch (upstream snapshot) there are a few output
+differences, but they are unrelated to this patch. An example hunk is:
+
+ 1.15 : 55:mov %rbp,%rdx
+ 0.00 : 58:add $0xfffffffffffffff8,%rdx
+ 0.00 : 5c:xor %ecx,%ecx
+- 1.03 : 5e:callq 0xffffffffe12aca3c
++ 1.03 : 5e:call 0xffffffffe12aca3c
+ 0.00 : 63:xor %eax,%eax
+- 2.18 : 65:leaveq
+- 2.82 : 66:retq
++ 2.18 : 65:leave
++ 2.82 : 66:ret
+
+Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
+Cc: Sedat Dilek <sedat.dilek@gmail.com>
+Link: http://lore.kernel.org/lkml/20220622181918.ykrs5rsnmx3og4sv@alap3.anarazel.de
+Signed-off-by: Andres Freund <andres@anarazel.de>
+---
+ tools/perf/Makefile.config | 8 ++++++++
+ tools/perf/util/annotate.c | 7 ++++---
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+--- a/tools/perf/Makefile.config
++++ b/tools/perf/Makefile.config
+@@ -298,6 +298,7 @@ FEATURE_CHECK_LDFLAGS-libpython := $(PYT
+ FEATURE_CHECK_LDFLAGS-libaio = -lrt
+
+ FEATURE_CHECK_LDFLAGS-disassembler-four-args = -lbfd -lopcodes -ldl
++FEATURE_CHECK_LDFLAGS-disassembler-init-styled = -lbfd -lopcodes -ldl
+
+ CORE_CFLAGS += -fno-omit-frame-pointer
+ CORE_CFLAGS += -ggdb3
+@@ -877,13 +878,16 @@ ifndef NO_LIBBFD
+ ifeq ($(feature-libbfd-liberty), 1)
+ EXTLIBS += -lbfd -lopcodes -liberty
+ FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -ldl
++ FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -ldl
+ else
+ ifeq ($(feature-libbfd-liberty-z), 1)
+ EXTLIBS += -lbfd -lopcodes -liberty -lz
+ FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -lz -ldl
++ FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -lz -ldl
+ endif
+ endif
+ $(call feature_check,disassembler-four-args)
++ $(call feature_check,disassembler-init-styled)
+ endif
+
+ ifeq ($(feature-libbfd-buildid), 1)
+@@ -997,6 +1001,10 @@ ifeq ($(feature-disassembler-four-args),
+ CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
+ endif
+
++ifeq ($(feature-disassembler-init-styled), 1)
++ CFLAGS += -DDISASM_INIT_STYLED
++endif
++
+ ifeq (${IS_64_BIT}, 1)
+ ifndef NO_PERF_READ_VDSO32
+ $(call feature_check,compile-32)
+--- a/tools/perf/util/annotate.c
++++ b/tools/perf/util/annotate.c
+@@ -41,6 +41,7 @@
+ #include <linux/string.h>
+ #include <subcmd/parse-options.h>
+ #include <subcmd/run-command.h>
++#include <tools/dis-asm-compat.h>
+
+ /* FIXME: For the HE_COLORSET */
+ #include "ui/browser.h"
+@@ -1762,9 +1763,9 @@ static int symbol__disassemble_bpf(struc
+ ret = errno;
+ goto out;
+ }
+- init_disassemble_info(&info, s,
+- (fprintf_ftype) fprintf);
+-
++ init_disassemble_info_compat(&info, s,
++ (fprintf_ftype) fprintf,
++ fprintf_styled);
+ info.arch = bfd_get_arch(bfdf);
+ info.mach = bfd_get_mach(bfdf);
+