mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-04-20 11:29:54 +00:00
work around for too few arguments to function init_disassemble_info() error
binutils 2.39 changed the signature of init_disassemble_info(), which now causes perf and bpftool to fail to compile. Relevant binutils commit: [1] There is a proper fix in development upstream[2]. This is a work-around for older kernels. [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=60a3da00bd5407f07d64dff82a4dae98230dfaac [2] https://patchwork.kernel.org/project/netdevbpf/cover/20220801013834.156015-1-andres@anarazel.de/ Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
This commit is contained in:
@@ -179,6 +179,7 @@ SRC_URI:append:tc = " \
|
||||
file://0042-ANDROID-trusty-ffa-Add-support-for-FFA-memory-operat.patch \
|
||||
file://0043-ANDROID-trusty-ffa-Enable-FFA-transport-for-both-mem.patch \
|
||||
file://0044-ANDROID-trusty-Make-trusty-transports-configurable.patch \
|
||||
file://init_disassemble_info-signature-changes-causes-compile-failures.patch \
|
||||
"
|
||||
KERNEL_FEATURES:append:tc = " bsp/arm-platforms/tc.scc"
|
||||
KERNEL_FEATURES:append:tc1 = " bsp/arm-platforms/tc-autofdo.scc"
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
From 1b2013986271de39360cf79e62ed9b7d2cc59f9b Mon Sep 17 00:00:00 2001
|
||||
From: Andres Freund <andres@anarazel.de>
|
||||
Date: Wed, 22 Jun 2022 11:19:18 -0700
|
||||
Subject: [PATCH] init_disassemble_info() signature changes causes compile
|
||||
failures
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Hi,
|
||||
|
||||
binutils changed the signature of init_disassemble_info(), which now causes
|
||||
perf and bpftool to fail to compile (e.g. on debian unstable).
|
||||
|
||||
Relevant binutils commit: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=60a3da00bd5407f07d64dff82a4dae98230dfaac
|
||||
|
||||
util/annotate.c: In function ‘symbol__disassemble_bpf’:
|
||||
util/annotate.c:1765:9: error: too few arguments to function ‘init_disassemble_info’
|
||||
1765 | init_disassemble_info(&info, s,
|
||||
| ^~~~~~~~~~~~~~~~~~~~~
|
||||
In file included from util/annotate.c:1718:
|
||||
/usr/include/dis-asm.h:472:13: note: declared here
|
||||
472 | extern void init_disassemble_info (struct disassemble_info *dinfo, void *stream,
|
||||
| ^~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
with equivalent failures in
|
||||
|
||||
tools/bpf/bpf_jit_disasm.c
|
||||
tools/bpf/bpftool/jit_disasm.c
|
||||
|
||||
The fix is easy enough, add a wrapper around fprintf() that conforms to the
|
||||
new signature.
|
||||
|
||||
However I assume the necessary feature test and wrapper should only be added
|
||||
once? I don't know the kernel stuff well enough to choose the right structure
|
||||
here.
|
||||
|
||||
Attached is my local fix for perf. Obviously would need work to be a real
|
||||
solution.
|
||||
|
||||
Greetings,
|
||||
|
||||
Andres Freund
|
||||
---
|
||||
|
||||
binutils 2.39 changed the signature of init_disassemble_info(),
|
||||
which now causes perf and bpftool to fail to compile.
|
||||
|
||||
Relevant binutils commit: [1]
|
||||
|
||||
There is a proper fix in development upstream[2].
|
||||
This is a work-around for older kernels.
|
||||
|
||||
[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=60a3da00bd5407f07d64dff82a4dae98230dfaac
|
||||
[2] https://patchwork.kernel.org/project/netdevbpf/cover/20220801013834.156015-1-andres@anarazel.de/
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
|
||||
|
||||
|
||||
tools/perf/util/annotate.c | 15 ++++++++++++++-
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
|
||||
index 6c8575e182ed..466a3a68f5cd 100644
|
||||
--- a/tools/perf/util/annotate.c
|
||||
+++ b/tools/perf/util/annotate.c
|
||||
@@ -1677,6 +1677,18 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
|
||||
#include <bfd.h>
|
||||
#include <dis-asm.h>
|
||||
|
||||
+static int fprintf_styled(void *, enum disassembler_style, const char* fmt, ...)
|
||||
+{
|
||||
+ va_list args;
|
||||
+ int r;
|
||||
+
|
||||
+ va_start(args, fmt);
|
||||
+ r = vprintf(fmt, args);
|
||||
+ va_end(args);
|
||||
+
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
static int symbol__disassemble_bpf(struct symbol *sym,
|
||||
struct annotate_args *args)
|
||||
{
|
||||
@@ -1719,7 +1731,8 @@ static int symbol__disassemble_bpf(struct symbol *sym,
|
||||
goto out;
|
||||
}
|
||||
init_disassemble_info(&info, s,
|
||||
- (fprintf_ftype) fprintf);
|
||||
+ (fprintf_ftype) fprintf,
|
||||
+ fprintf_styled);
|
||||
|
||||
info.arch = bfd_get_arch(bfdf);
|
||||
info.mach = bfd_get_mach(bfdf);
|
||||
--
|
||||
2.30.2
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
From 4af28e8e58b6c461a3b85960b222dade8b6891ce Mon Sep 17 00:00:00 2001
|
||||
From: Andres Freund <andres@anarazel.de>
|
||||
Date: Wed, 22 Jun 2022 11:19:18 -0700
|
||||
Subject: [PATCH] init_disassemble_info() signature changes causes compile
|
||||
failures
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Hi,
|
||||
|
||||
binutils changed the signature of init_disassemble_info(), which now causes
|
||||
perf and bpftool to fail to compile (e.g. on debian unstable).
|
||||
|
||||
Relevant binutils commit: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=60a3da00bd5407f07d64dff82a4dae98230dfaac
|
||||
|
||||
util/annotate.c: In function ‘symbol__disassemble_bpf’:
|
||||
util/annotate.c:1765:9: error: too few arguments to function ‘init_disassemble_info’
|
||||
1765 | init_disassemble_info(&info, s,
|
||||
| ^~~~~~~~~~~~~~~~~~~~~
|
||||
In file included from util/annotate.c:1718:
|
||||
/usr/include/dis-asm.h:472:13: note: declared here
|
||||
472 | extern void init_disassemble_info (struct disassemble_info *dinfo, void *stream,
|
||||
| ^~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
with equivalent failures in
|
||||
|
||||
tools/bpf/bpf_jit_disasm.c
|
||||
tools/bpf/bpftool/jit_disasm.c
|
||||
|
||||
The fix is easy enough, add a wrapper around fprintf() that conforms to the
|
||||
new signature.
|
||||
|
||||
However I assume the necessary feature test and wrapper should only be added
|
||||
once? I don't know the kernel stuff well enough to choose the right structure
|
||||
here.
|
||||
|
||||
Attached is my local fix for perf. Obviously would need work to be a real
|
||||
solution.
|
||||
|
||||
Greetings,
|
||||
|
||||
Andres Freund
|
||||
---
|
||||
|
||||
binutils 2.39 changed the signature of init_disassemble_info(),
|
||||
which now causes perf and bpftool to fail to compile.
|
||||
|
||||
Relevant binutils commit: [1]
|
||||
|
||||
There is a proper fix in development upstream[2].
|
||||
This is a work-around for older kernels.
|
||||
|
||||
[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=60a3da00bd5407f07d64dff82a4dae98230dfaac
|
||||
[2] https://patchwork.kernel.org/project/netdevbpf/cover/20220801013834.156015-1-andres@anarazel.de/
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
|
||||
|
||||
|
||||
tools/perf/util/annotate.c | 15 ++++++++++++++-
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
|
||||
index 0c5e4ce390ef..1151c029f714 100644
|
||||
--- a/tools/perf/util/annotate.c
|
||||
+++ b/tools/perf/util/annotate.c
|
||||
@@ -1708,6 +1708,18 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
|
||||
#include <bfd.h>
|
||||
#include <dis-asm.h>
|
||||
|
||||
+static int fprintf_styled(void *, enum disassembler_style, const char* fmt, ...)
|
||||
+{
|
||||
+ va_list args;
|
||||
+ int r;
|
||||
+
|
||||
+ va_start(args, fmt);
|
||||
+ r = vprintf(fmt, args);
|
||||
+ va_end(args);
|
||||
+
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
static int symbol__disassemble_bpf(struct symbol *sym,
|
||||
struct annotate_args *args)
|
||||
{
|
||||
@@ -1750,7 +1762,8 @@ static int symbol__disassemble_bpf(struct symbol *sym,
|
||||
goto out;
|
||||
}
|
||||
init_disassemble_info(&info, s,
|
||||
- (fprintf_ftype) fprintf);
|
||||
+ (fprintf_ftype) fprintf,
|
||||
+ fprintf_styled);
|
||||
|
||||
info.arch = bfd_get_arch(bfdf);
|
||||
info.mach = bfd_get_mach(bfdf);
|
||||
--
|
||||
2.30.2
|
||||
|
||||
@@ -3,7 +3,8 @@ FILESEXTRAPATHS:prepend:gem5-arm64 := "${THISDIR}:${THISDIR}/files:"
|
||||
COMPATIBLE_MACHINE:gem5-arm64 = "gem5-arm64"
|
||||
KMACHINE:gem5-arm64 = "gem5-arm64"
|
||||
SRC_URI:append:gem5-arm64 = " file://gem5-kmeta;type=kmeta;name=gem5-kmeta;destsuffix=gem5-kmeta \
|
||||
file://dts/gem5-arm64;subdir=add-files"
|
||||
file://dts/gem5-arm64;subdir=add-files \
|
||||
file://init_disassemble_info-signature-changes-causes-compile-failures.patch"
|
||||
|
||||
do_patch:append:gem5-arm64() {
|
||||
tar -C ${WORKDIR}/add-files/dts -cf - gem5-arm64 | \
|
||||
|
||||
Reference in New Issue
Block a user