mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
fb06f533b3
Backport patches from kernel 6.0 which are fixing building of perf with binutils 2.40. perf with kernel 5.10 is also not building but the backporting is more complicated and only a few targets are still using kernel 5.10. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
112 lines
4.0 KiB
Diff
112 lines
4.0 KiB
Diff
From 3bc373152a3a00742750dbbe974d541af78231e6 Mon Sep 17 00:00:00 2001
|
|
From: Andres Freund <andres@anarazel.de>
|
|
Date: Sun, 31 Jul 2022 18:38:30 -0700
|
|
Subject: [PATCH 3/5] tools perf: Fix compilation error with new binutils
|
|
|
|
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
|
|
|
|
Signed-off-by: Andres Freund <andres@anarazel.de>
|
|
Acked-by: Quentin Monnet <quentin@isovalent.com>
|
|
Cc: Alexei Starovoitov <ast@kernel.org>
|
|
Cc: Ben Hutchings <benh@debian.org>
|
|
Cc: Jiri Olsa <jolsa@kernel.org>
|
|
Cc: Sedat Dilek <sedat.dilek@gmail.com>
|
|
Cc: bpf@vger.kernel.org
|
|
Link: http://lore.kernel.org/lkml/20220622181918.ykrs5rsnmx3og4sv@alap3.anarazel.de
|
|
Link: https://lore.kernel.org/r/20220801013834.156015-5-andres@anarazel.de
|
|
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
(cherry picked from commit 83aa0120487e8bc3f231e72c460add783f71f17c)
|
|
---
|
|
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
|
|
@@ -296,6 +296,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
|
|
@@ -872,13 +873,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)
|
|
@@ -992,6 +996,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
|
|
@@ -1694,6 +1694,7 @@ fallback:
|
|
#include <bpf/btf.h>
|
|
#include <bpf/libbpf.h>
|
|
#include <linux/btf.h>
|
|
+#include <tools/dis-asm-compat.h>
|
|
|
|
static int symbol__disassemble_bpf(struct symbol *sym,
|
|
struct annotate_args *args)
|
|
@@ -1736,9 +1737,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);
|
|
|