mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 08:21:14 +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>
97 lines
3.1 KiB
Diff
97 lines
3.1 KiB
Diff
From 08ec5766e5cf7b24fdebefb83b6f760bceeddf40 Mon Sep 17 00:00:00 2001
|
|
From: Andres Freund <andres@anarazel.de>
|
|
Date: Sun, 31 Jul 2022 18:38:29 -0700
|
|
Subject: [PATCH 2/5] tools include: add dis-asm-compat.h to handle version
|
|
differences
|
|
|
|
binutils changed the signature of init_disassemble_info(), which now causes
|
|
compilation failures for tools/{perf,bpf}, e.g. on debian unstable.
|
|
|
|
Relevant binutils commit:
|
|
|
|
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=60a3da00bd5407f07
|
|
|
|
This commit introduces a wrapper for init_disassemble_info(), to avoid
|
|
spreading #ifdef DISASM_INIT_STYLED to a bunch of places. Subsequent
|
|
commits will use it to fix the build failures.
|
|
|
|
It likely is worth adding a wrapper for disassember(), to avoid the already
|
|
existing DISASM_FOUR_ARGS_SIGNATURE ifdefery.
|
|
|
|
Signed-off-by: Andres Freund <andres@anarazel.de>
|
|
Signed-off-by: Ben Hutchings <benh@debian.org>
|
|
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: Quentin Monnet <quentin@isovalent.com>
|
|
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-4-andres@anarazel.de
|
|
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
(cherry picked from commit a45b3d6926231c3d024ea0de4f7bd967f83709ee)
|
|
---
|
|
tools/include/tools/dis-asm-compat.h | 55 ++++++++++++++++++++++++++++
|
|
1 file changed, 55 insertions(+)
|
|
create mode 100644 tools/include/tools/dis-asm-compat.h
|
|
|
|
--- /dev/null
|
|
+++ b/tools/include/tools/dis-asm-compat.h
|
|
@@ -0,0 +1,55 @@
|
|
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
|
|
+#ifndef _TOOLS_DIS_ASM_COMPAT_H
|
|
+#define _TOOLS_DIS_ASM_COMPAT_H
|
|
+
|
|
+#include <stdio.h>
|
|
+#include <dis-asm.h>
|
|
+
|
|
+/* define types for older binutils version, to centralize ifdef'ery a bit */
|
|
+#ifndef DISASM_INIT_STYLED
|
|
+enum disassembler_style {DISASSEMBLER_STYLE_NOT_EMPTY};
|
|
+typedef int (*fprintf_styled_ftype) (void *, enum disassembler_style, const char*, ...);
|
|
+#endif
|
|
+
|
|
+/*
|
|
+ * Trivial fprintf wrapper to be used as the fprintf_styled_func argument to
|
|
+ * init_disassemble_info_compat() when normal fprintf suffices.
|
|
+ */
|
|
+static inline int fprintf_styled(void *out,
|
|
+ enum disassembler_style style,
|
|
+ const char *fmt, ...)
|
|
+{
|
|
+ va_list args;
|
|
+ int r;
|
|
+
|
|
+ (void)style;
|
|
+
|
|
+ va_start(args, fmt);
|
|
+ r = vfprintf(out, fmt, args);
|
|
+ va_end(args);
|
|
+
|
|
+ return r;
|
|
+}
|
|
+
|
|
+/*
|
|
+ * Wrapper for init_disassemble_info() that hides version
|
|
+ * differences. Depending on binutils version and architecture either
|
|
+ * fprintf_func or fprintf_styled_func will be called.
|
|
+ */
|
|
+static inline void init_disassemble_info_compat(struct disassemble_info *info,
|
|
+ void *stream,
|
|
+ fprintf_ftype unstyled_func,
|
|
+ fprintf_styled_ftype styled_func)
|
|
+{
|
|
+#ifdef DISASM_INIT_STYLED
|
|
+ init_disassemble_info(info, stream,
|
|
+ unstyled_func,
|
|
+ styled_func);
|
|
+#else
|
|
+ (void)styled_func;
|
|
+ init_disassemble_info(info, stream,
|
|
+ unstyled_func);
|
|
+#endif
|
|
+}
|
|
+
|
|
+#endif /* _TOOLS_DIS_ASM_COMPAT_H */
|