1
0
mirror of https://git.yoctoproject.org/meta-ti synced 2026-04-20 11:42:57 +00:00

linux-ti-staging: 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.

Inspired by a patch by Anton Antonov to fix this issue on meta-arm
kernels. [3]

[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/
[3] https://patchwork.yoctoproject.org/project/arm/patch/20220824025819.4888-1-jon.mason@arm.com/#5104

Signed-off-by: Ryan Eatmon <reatmon@ti.com>
This commit is contained in:
Ryan Eatmon
2022-11-27 19:24:17 -06:00
parent a072e9d0fb
commit d083ee992f
4 changed files with 328 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
Adaption of a patch [A] applied to meta-arm for the kernel. But since TI has it's own
kernel we have to "adjust" the patch to match our files.
[A] https://patchwork.yoctoproject.org/project/arm/patch/20220824025819.4888-1-jon.mason@arm.com/#5104
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
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 308189454788..6573d2b07548 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1685,6 +1685,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)
{
@@ -1727,7 +1739,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.17.1

View File

@@ -0,0 +1,109 @@
Adaption of a patch [A] applied to meta-arm for the kernel. But since TI has it's own
kernel we have to "adjust" the patch to match our files.
[A] https://patchwork.yoctoproject.org/project/arm/patch/20220824025819.4888-1-jon.mason@arm.com/#5104
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
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 308189454788..6573d2b07548 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1685,6 +1685,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)
{
@@ -1727,7 +1739,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.17.1

View File

@@ -0,0 +1,109 @@
Adaption of a patch [A] applied to meta-arm for the kernel. But since TI has it's own
kernel we have to "adjust" the patch to match our files.
[A] https://patchwork.yoctoproject.org/project/arm/patch/20220824025819.4888-1-jon.mason@arm.com/#5104
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
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 308189454788..6573d2b07548 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1685,6 +1685,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)
{
@@ -1727,7 +1739,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.17.1

View File

@@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
KERNEL_GIT_URI = "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
KERNEL_GIT_PROTOCOL = "https"
SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
file://init_disassemble_info-signature-changes-causes-compile-failures.patch \
file://defconfig"
FILES:${KERNEL_PACKAGE_NAME}-devicetree += "/${KERNEL_IMAGEDEST}/*.itb"