[lkml]   [2022]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subjectinit_disassemble_info() signature changes causes compile failures

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:;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


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

Attached is my local fix for perf. Obviously would need work to be a real


Andres Freund
diff --git i/tools/perf/util/annotate.c w/tools/perf/util/annotate.c
index 82cc396ef516..b0e364d235b4 100644
--- i/tools/perf/util/annotate.c
+++ w/tools/perf/util/annotate.c
@@ -1721,6 +1721,18 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
#include <bpf/libbpf.h>
#include <linux/btf.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)
@@ -1763,7 +1775,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);
 \ /
  Last update: 2022-06-22 20:20    [W:0.153 / U:0.120 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site