summaryrefslogtreecommitdiffstats
path: root/debian/patches/bugfix
diff options
context:
space:
mode:
authorBen Hutchings <benh@debian.org>2022-07-16 13:32:46 +0200
committerBen Hutchings <benh@debian.org>2022-07-16 13:32:46 +0200
commit0efe6e5c1f30ddba91b6c6863fd102a55b2aa202 (patch)
treeb75ec5474f826e66dd29d12c5a56b6ac988707dd /debian/patches/bugfix
parentef0555f04db6ede5340e89d511811f4edcf8c0dc (diff)
parente32ca527844b2dc5e99c3c0e5b1462359fde9780 (diff)
downloadlinux-debian-0efe6e5c1f30ddba91b6c6863fd102a55b2aa202.tar.gz
Merge branch 'sid' into 'master'
- Drop RT patch changes - Keep ABI as trunk
Diffstat (limited to 'debian/patches/bugfix')
-rw-r--r--debian/patches/bugfix/all/tools-bpf_jit_disasm-fix-compilation-error-with-new-binutils.patch94
-rw-r--r--debian/patches/bugfix/all/tools-bpftool-fix-compilation-error-with-new-binutils.patch142
-rw-r--r--debian/patches/bugfix/all/tools-build-add-feature-test-for-init_disassemble_info-api-changes.patch96
-rw-r--r--debian/patches/bugfix/all/tools-include-add-dis-asm-compat.h-to-handle-version-differences.patch87
-rw-r--r--debian/patches/bugfix/all/tools-perf-fix-build-without-libbfd.patch26
-rw-r--r--debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch101
-rw-r--r--debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch13
-rw-r--r--debian/patches/bugfix/all/wireguard-ignore-config_android.patch29
8 files changed, 582 insertions, 6 deletions
diff --git a/debian/patches/bugfix/all/tools-bpf_jit_disasm-fix-compilation-error-with-new-binutils.patch b/debian/patches/bugfix/all/tools-bpf_jit_disasm-fix-compilation-error-with-new-binutils.patch
new file mode 100644
index 000000000..439b31bf0
--- /dev/null
+++ b/debian/patches/bugfix/all/tools-bpf_jit_disasm-fix-compilation-error-with-new-binutils.patch
@@ -0,0 +1,94 @@
+From: Andres Freund <andres@anarazel.de>
+Subject: [4/5] tools bpf_jit_disasm: Fix compilation error with new binutils
+Date: Sun, 3 Jul 2022 14:25:50 -0700
+Origin: https://lore.kernel.org/lkml/20220703212551.1114923-5-andres@anarazel.de/
+
+binutils changed the signature of init_disassemble_info(), which now causes
+compilation to fail for tools/bpf/bpf_jit_disasm.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 bpf_jit_disasm can still disassemble bpf programs, both
+with the old and new dis-asm.h API. 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:
+ f4: mov %r14,%rsi
+ f7: mov %r15,%rdx
+ fa: mov $0x2a,%ecx
+- ff: callq 0xffffffffea8c4988
++ ff: call 0xffffffffea8c4988
+ 104: test %rax,%rax
+ 107: jge 0x0000000000000110
+ 109: xor %eax,%eax
+- 10b: jmpq 0x0000000000000073
++ 10b: jmp 0x0000000000000073
+ 110: cmp $0x16,%rax
+
+However, I had to use an older kernel to generate the bpf_jit_enabled = 2
+output, as that has been broken since 5.18 / 1022a5498f6f:
+https://lore.kernel.org/20220703030210.pmjft7qc2eajzi6c@alap3.anarazel.de
+
+Cc: Alexei Starovoitov <ast@kernel.org>
+Cc: Daniel Borkmann <daniel@iogearbox.net>
+Cc: Sedat Dilek <sedat.dilek@gmail.com>
+Cc: Quentin Monnet <quentin@isovalent.com>
+Link: http://lore.kernel.org/lkml/20220622181918.ykrs5rsnmx3og4sv@alap3.anarazel.de
+Signed-off-by: Andres Freund <andres@anarazel.de>
+---
+ tools/bpf/Makefile | 7 +++++--
+ tools/bpf/bpf_jit_disasm.c | 5 ++++-
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/tools/bpf/Makefile b/tools/bpf/Makefile
+index b11cfc86a3d0..9c4e61c3a92b 100644
+--- a/tools/bpf/Makefile
++++ b/tools/bpf/Makefile
+@@ -34,8 +34,8 @@ else
+ endif
+
+ FEATURE_USER = .bpf
+-FEATURE_TESTS = libbfd disassembler-four-args
+-FEATURE_DISPLAY = libbfd disassembler-four-args
++FEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled
++FEATURE_DISPLAY = libbfd disassembler-four-args disassembler-init-styled
+
+ check_feat := 1
+ NON_CHECK_FEAT_TARGETS := clean bpftool_clean runqslower_clean resolve_btfids_clean
+@@ -56,6 +56,9 @@ endif
+ ifeq ($(feature-disassembler-four-args), 1)
+ CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
+ endif
++ifeq ($(feature-disassembler-init-styled), 1)
++CFLAGS += -DDISASM_INIT_STYLED
++endif
+
+ $(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y
+ $(QUIET_BISON)$(YACC) -o $@ -d $<
+diff --git a/tools/bpf/bpf_jit_disasm.c b/tools/bpf/bpf_jit_disasm.c
+index c8ae95804728..a90a5d110f92 100644
+--- a/tools/bpf/bpf_jit_disasm.c
++++ b/tools/bpf/bpf_jit_disasm.c
+@@ -28,6 +28,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <limits.h>
++#include <tools/dis-asm-compat.h>
+
+ #define CMD_ACTION_SIZE_BUFFER 10
+ #define CMD_ACTION_READ_ALL 3
+@@ -64,7 +65,9 @@ static void get_asm_insns(uint8_t *image, size_t len, int opcodes)
+ assert(bfdf);
+ assert(bfd_check_format(bfdf, bfd_object));
+
+- init_disassemble_info(&info, stdout, (fprintf_ftype) fprintf);
++ init_disassemble_info_compat(&info, stdout,
++ (fprintf_ftype) fprintf,
++ fprintf_styled);
+ info.arch = bfd_get_arch(bfdf);
+ info.mach = bfd_get_mach(bfdf);
+ info.buffer = image;
diff --git a/debian/patches/bugfix/all/tools-bpftool-fix-compilation-error-with-new-binutils.patch b/debian/patches/bugfix/all/tools-bpftool-fix-compilation-error-with-new-binutils.patch
new file mode 100644
index 000000000..2a9c043c6
--- /dev/null
+++ b/debian/patches/bugfix/all/tools-bpftool-fix-compilation-error-with-new-binutils.patch
@@ -0,0 +1,142 @@
+From: Andres Freund <andres@anarazel.de>
+Subject: [PATCH v2 5/5] tools bpftool: Fix compilation error with new binutils
+Date: Sun, 3 Jul 2022 14:25:51 -0700
+Origin: https://lore.kernel.org/lkml/20220703212551.1114923-6-andres@anarazel.de/
+
+binutils changed the signature of init_disassemble_info(), which now causes
+compilation to fail for tools/bpf/bpftool/jit_disasm.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 bpftool can still disassemble bpf programs, both with an
+old and new dis-asm.h API. There are no output changes for plain and json
+formats. 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:
+ 2f: pop %r14
+ 31: pop %r13
+ 33: pop %rbx
+- 34: leaveq
+- 35: retq
++ 34: leave
++ 35: ret
+
+Cc: Alexei Starovoitov <ast@kernel.org>
+Cc: Sedat Dilek <sedat.dilek@gmail.com>
+Cc: Quentin Monnet <quentin@isovalent.com>
+Link: http://lore.kernel.org/lkml/20220622181918.ykrs5rsnmx3og4sv@alap3.anarazel.de
+Signed-off-by: Andres Freund <andres@anarazel.de>
+---
+ tools/bpf/bpftool/Makefile | 7 ++++--
+ tools/bpf/bpftool/jit_disasm.c | 42 +++++++++++++++++++++++++++-------
+ 2 files changed, 39 insertions(+), 10 deletions(-)
+
+diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
+index c6d2c77d0252..62195118d377 100644
+--- a/tools/bpf/bpftool/Makefile
++++ b/tools/bpf/bpftool/Makefile
+@@ -93,9 +93,9 @@ INSTALL ?= install
+ RM ?= rm -f
+
+ FEATURE_USER = .bpftool
+-FEATURE_TESTS = libbfd disassembler-four-args zlib libcap \
++FEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled zlib libcap \
+ clang-bpf-co-re
+-FEATURE_DISPLAY = libbfd disassembler-four-args zlib libcap \
++FEATURE_DISPLAY = libbfd disassembler-four-args disassembler-init-styled zlib libcap \
+ clang-bpf-co-re
+
+ check_feat := 1
+@@ -117,6 +117,9 @@ endif
+ ifeq ($(feature-disassembler-four-args), 1)
+ CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
+ endif
++ifeq ($(feature-disassembler-init-styled), 1)
++ CFLAGS += -DDISASM_INIT_STYLED
++endif
+
+ LIBS = $(LIBBPF) -lelf -lz
+ LIBS_BOOTSTRAP = $(LIBBPF_BOOTSTRAP) -lelf -lz
+diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c
+index 24734f2249d6..aaf99a0168c9 100644
+--- a/tools/bpf/bpftool/jit_disasm.c
++++ b/tools/bpf/bpftool/jit_disasm.c
+@@ -24,6 +24,7 @@
+ #include <sys/stat.h>
+ #include <limits.h>
+ #include <bpf/libbpf.h>
++#include <tools/dis-asm-compat.h>
+
+ #include "json_writer.h"
+ #include "main.h"
+@@ -39,15 +40,12 @@ static void get_exec_path(char *tpath, size_t size)
+ }
+
+ static int oper_count;
+-static int fprintf_json(void *out, const char *fmt, ...)
++static int printf_json(void *out, const char *fmt, va_list ap)
+ {
+- va_list ap;
+ char *s;
+ int err;
+
+- va_start(ap, fmt);
+ err = vasprintf(&s, fmt, ap);
+- va_end(ap);
+ if (err < 0)
+ return -1;
+
+@@ -73,6 +71,32 @@ static int fprintf_json(void *out, const char *fmt, ...)
+ return 0;
+ }
+
++static int fprintf_json(void *out, const char *fmt, ...)
++{
++ va_list ap;
++ int r;
++
++ va_start(ap, fmt);
++ r = printf_json(out, fmt, ap);
++ va_end(ap);
++
++ return r;
++}
++
++static int fprintf_json_styled(void *out,
++ enum disassembler_style style __maybe_unused,
++ const char *fmt, ...)
++{
++ va_list ap;
++ int r;
++
++ va_start(ap, fmt);
++ r = printf_json(out, fmt, ap);
++ va_end(ap);
++
++ return r;
++}
++
+ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes,
+ const char *arch, const char *disassembler_options,
+ const struct btf *btf,
+@@ -99,11 +123,13 @@ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes,
+ assert(bfd_check_format(bfdf, bfd_object));
+
+ if (json_output)
+- init_disassemble_info(&info, stdout,
+- (fprintf_ftype) fprintf_json);
++ init_disassemble_info_compat(&info, stdout,
++ (fprintf_ftype) fprintf_json,
++ fprintf_json_styled);
+ else
+- init_disassemble_info(&info, stdout,
+- (fprintf_ftype) fprintf);
++ init_disassemble_info_compat(&info, stdout,
++ (fprintf_ftype) fprintf,
++ fprintf_styled);
+
+ /* Update architecture info for offload. */
+ if (arch) {
diff --git a/debian/patches/bugfix/all/tools-build-add-feature-test-for-init_disassemble_info-api-changes.patch b/debian/patches/bugfix/all/tools-build-add-feature-test-for-init_disassemble_info-api-changes.patch
new file mode 100644
index 000000000..1a0ea2aa4
--- /dev/null
+++ b/debian/patches/bugfix/all/tools-build-add-feature-test-for-init_disassemble_info-api-changes.patch
@@ -0,0 +1,96 @@
+From: Andres Freund <andres@anarazel.de>
+Subject: [1/5] tools build: add feature test for init_disassemble_info API changes
+Date: Sun, 3 Jul 2022 14:25:47 -0700
+Origin: https://lore.kernel.org/lkml/20220703212551.1114923-2-andres@anarazel.de/
+
+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 adds a feature test to detect the new signature. Subsequent
+commits will use it to fix the build failures.
+
+Cc: Alexei Starovoitov <ast@kernel.org>
+Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
+Cc: Sedat Dilek <sedat.dilek@gmail.com>
+Cc: Quentin Monnet <quentin@isovalent.com>
+Link: http://lore.kernel.org/lkml/20220622181918.ykrs5rsnmx3og4sv@alap3.anarazel.de
+Signed-off-by: Andres Freund <andres@anarazel.de>
+---
+ tools/build/Makefile.feature | 4 +++-
+ tools/build/feature/Makefile | 4 ++++
+ tools/build/feature/test-all.c | 4 ++++
+ tools/build/feature/test-disassembler-init-styled.c | 13 +++++++++++++
+ 4 files changed, 24 insertions(+), 1 deletion(-)
+ create mode 100644 tools/build/feature/test-disassembler-init-styled.c
+
+--- a/tools/build/Makefile.feature
++++ b/tools/build/Makefile.feature
+@@ -70,6 +70,7 @@ FEATURE_TESTS_BASIC :=
+ libaio \
+ libzstd \
+ disassembler-four-args \
++ disassembler-init-styled \
+ file-handle
+
+ # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
+@@ -131,7 +132,8 @@ FEATURE_DISPLAY ?= \
+ bpf \
+ libaio \
+ libzstd \
+- disassembler-four-args
++ disassembler-four-args \
++ disassembler-init-styled
+
+ # Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
+ # If in the future we need per-feature checks/flags for features not
+--- a/tools/build/feature/Makefile
++++ b/tools/build/feature/Makefile
+@@ -18,6 +18,7 @@ FILES=
+ test-libbfd.bin \
+ test-libbfd-buildid.bin \
+ test-disassembler-four-args.bin \
++ test-disassembler-init-styled.bin \
+ test-reallocarray.bin \
+ test-libbfd-liberty.bin \
+ test-libbfd-liberty-z.bin \
+@@ -243,6 +244,9 @@ $(OUTPUT)test-libbfd-buildid.bin:
+ $(OUTPUT)test-disassembler-four-args.bin:
+ $(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
+
++$(OUTPUT)test-disassembler-init-styled.bin:
++ $(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
++
+ $(OUTPUT)test-reallocarray.bin:
+ $(BUILD)
+
+--- a/tools/build/feature/test-all.c
++++ b/tools/build/feature/test-all.c
+@@ -166,6 +166,10 @@
+ # include "test-disassembler-four-args.c"
+ #undef main
+
++#define main main_test_disassembler_init_styled
++# include "test-disassembler-init-styled.c"
++#undef main
++
+ #define main main_test_libzstd
+ # include "test-libzstd.c"
+ #undef main
+--- /dev/null
++++ b/tools/build/feature/test-disassembler-init-styled.c
+@@ -0,0 +1,13 @@
++// SPDX-License-Identifier: GPL-2.0
++#include <stdio.h>
++#include <dis-asm.h>
++
++int main(void)
++{
++ struct disassemble_info info;
++
++ init_disassemble_info(&info, stdout,
++ NULL, NULL);
++
++ return 0;
++}
diff --git a/debian/patches/bugfix/all/tools-include-add-dis-asm-compat.h-to-handle-version-differences.patch b/debian/patches/bugfix/all/tools-include-add-dis-asm-compat.h-to-handle-version-differences.patch
new file mode 100644
index 000000000..026e69dc4
--- /dev/null
+++ b/debian/patches/bugfix/all/tools-include-add-dis-asm-compat.h-to-handle-version-differences.patch
@@ -0,0 +1,87 @@
+From: Andres Freund <andres@anarazel.de>
+Subject: [2/5] tools include: add dis-asm-compat.h to handle version differences
+Date: Sun, 3 Jul 2022 14:25:48 -0700
+Origin: https://lore.kernel.org/lkml/20220703212551.1114923-3-andres@anarazel.de/
+
+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.
+
+Cc: Alexei Starovoitov <ast@kernel.org>
+Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
+Cc: Sedat Dilek <sedat.dilek@gmail.com>
+Cc: Quentin Monnet <quentin@isovalent.com>
+Link: http://lore.kernel.org/lkml/20220622181918.ykrs5rsnmx3og4sv@alap3.anarazel.de
+Signed-off-by: Andres Freund <andres@anarazel.de>
+---
+ tools/include/tools/dis-asm-compat.h | 53 ++++++++++++++++++++++++++++
+ 1 file changed, 53 insertions(+)
+ create mode 100644 tools/include/tools/dis-asm-compat.h
+
+diff --git a/tools/include/tools/dis-asm-compat.h b/tools/include/tools/dis-asm-compat.h
+new file mode 100644
+index 000000000000..d1d003ee3e2f
+--- /dev/null
++++ b/tools/include/tools/dis-asm-compat.h
+@@ -0,0 +1,53 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#ifndef _TOOLS_DIS_ASM_COMPAT_H
++#define _TOOLS_DIS_ASM_COMPAT_H
++
++#include <stdio.h>
++#include <linux/compiler.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 __maybe_unused,
++ const char *fmt, ...)
++{
++ va_list args;
++ int r;
++
++ 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 __maybe_unused)
++{
++#ifdef DISASM_INIT_STYLED
++ init_disassemble_info(info, stream,
++ unstyled_func,
++ styled_func);
++#else
++ init_disassemble_info(info, stream,
++ unstyled_func);
++#endif
++}
++
++#endif /* _TOOLS_DIS_ASM_COMPAT_H */
diff --git a/debian/patches/bugfix/all/tools-perf-fix-build-without-libbfd.patch b/debian/patches/bugfix/all/tools-perf-fix-build-without-libbfd.patch
new file mode 100644
index 000000000..726bdfc47
--- /dev/null
+++ b/debian/patches/bugfix/all/tools-perf-fix-build-without-libbfd.patch
@@ -0,0 +1,26 @@
+From: Ben Hutchings <benh@debian.org>
+Date: Tue, 05 Jul 2022 18:02:28 +0200
+Subject: tools/perf: Fix build without libbfd
+
+Only include <tools/dis-asm-compat.h> if we are using libbfd.
+
+Signed-off-by: Ben Hutchings <benh@debian.org>
+---
+--- a/tools/perf/util/annotate.c
++++ b/tools/perf/util/annotate.c
+@@ -41,7 +41,6 @@
+ #include <linux/string.h>
+ #include <subcmd/parse-options.h>
+ #include <subcmd/run-command.h>
+-#include <tools/dis-asm-compat.h>
+
+ /* FIXME: For the HE_COLORSET */
+ #include "ui/browser.h"
+@@ -1721,6 +1720,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)
diff --git a/debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch b/debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch
new file mode 100644
index 000000000..e24915fe0
--- /dev/null
+++ b/debian/patches/bugfix/all/tools-perf-fix-compilation-error-with-new-binutils.patch
@@ -0,0 +1,101 @@
+From: Andres Freund <andres@anarazel.de>
+Subject: [3/5] tools perf: Fix compilation error with new binutils
+Date: Sun, 3 Jul 2022 14:25:49 -0700
+Origin: https://lore.kernel.org/lkml/20220703212551.1114923-4-andres@anarazel.de/
+
+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
+
+Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
+Cc: Sedat Dilek <sedat.dilek@gmail.com>
+Link: http://lore.kernel.org/lkml/20220622181918.ykrs5rsnmx3og4sv@alap3.anarazel.de
+Signed-off-by: Andres Freund <andres@anarazel.de>
+---
+ 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
+@@ -298,6 +298,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
+@@ -877,13 +878,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)
+@@ -997,6 +1001,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
+@@ -41,6 +41,7 @@
+ #include <linux/string.h>
+ #include <subcmd/parse-options.h>
+ #include <subcmd/run-command.h>
++#include <tools/dis-asm-compat.h>
+
+ /* FIXME: For the HE_COLORSET */
+ #include "ui/browser.h"
+@@ -1762,9 +1763,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);
+
diff --git a/debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch b/debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch
index f6deb46bf..bd1bcd490 100644
--- a/debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch
+++ b/debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch
@@ -19,7 +19,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
-@@ -50,6 +50,18 @@
+@@ -51,6 +51,18 @@
#include "json.h"
#include "pmu-events.h"
@@ -38,13 +38,14 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
int verbose;
char *prog;
-@@ -971,6 +983,78 @@ static int get_maxfds(void)
+@@ -981,6 +993,79 @@ static int get_maxfds(void)
*/
static FILE *eventsfp;
static char *mapfile;
+static struct ordered_ftw_state *ordered_ftw_state;
+
-+static int ordered_ftw_add(const char *fpath, const struct stat *sb,
++static int ordered_ftw_add(const char *fpath,
++ const struct stat *sb __maybe_unused,
+ int typeflag, struct FTW *ftwbuf)
+{
+ struct ordered_ftw_state *state = ordered_ftw_state;
@@ -117,7 +118,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
static int is_leaf_dir(const char *fpath)
{
-@@ -1023,19 +1107,19 @@ static int is_json_file(const char *name
+@@ -1033,19 +1118,19 @@ static int is_json_file(const char *name
return 0;
}
@@ -140,7 +141,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
int typeflag, struct FTW *ftwbuf)
{
char *tblname, *bname;
-@@ -1065,9 +1149,9 @@ static int process_one_file(const char *
+@@ -1075,9 +1160,9 @@ static int process_one_file(const char *
} else
bname = (char *) fpath + ftwbuf->base;
@@ -152,7 +153,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
/* base dir or too deep */
if (level == 0 || level > 4)
-@@ -1241,21 +1325,21 @@ int main(int argc, char *argv[])
+@@ -1251,21 +1336,21 @@ int main(int argc, char *argv[])
*/
maxfds = get_maxfds();
diff --git a/debian/patches/bugfix/all/wireguard-ignore-config_android.patch b/debian/patches/bugfix/all/wireguard-ignore-config_android.patch
new file mode 100644
index 000000000..4c1cb9491
--- /dev/null
+++ b/debian/patches/bugfix/all/wireguard-ignore-config_android.patch
@@ -0,0 +1,29 @@
+From: Ben Hutchings <benh@debian.org>
+Date: Thu, 07 Jul 2022 18:58:43 +0200
+Subject: wireguard: Clear keys after suspend despite CONFIG_ANDROID=y
+Forwarded: not-needed
+
+WireGuard assumes that CONFIG_ANDROID implies Android power
+management, i.e. user-space suspending the system automatically at
+short intervals, and so does not clear keys after a suspend/resume
+cycle. Debian systems don't do that kind of power management but we
+do set CONFIG_ANDROID on some architectures as a dependency of Binder.
+
+In 5.20, CONFIG_PM_USERSPACE_AUTOSLEEP will be introduced to tell the
+kernel that this kind of power management is in use, and
+CONFIG_ANDROID will be removed. For now, remove this one test that
+does the wrong thing for us.
+
+References: https://lwn.net/Articles/899743/
+---
+--- a/drivers/net/wireguard/device.c
++++ b/drivers/net/wireguard/device.c
+@@ -69,7 +69,7 @@ static int wg_pm_notification(struct not
+ * its normal operation rather than as a somewhat rare event, then we
+ * don't actually want to clear keys.
+ */
+- if (IS_ENABLED(CONFIG_PM_AUTOSLEEP) || IS_ENABLED(CONFIG_ANDROID))
++ if (IS_ENABLED(CONFIG_PM_AUTOSLEEP))
+ return 0;
+
+ if (action != PM_HIBERNATION_PREPARE && action != PM_SUSPEND_PREPARE)