aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/utils/bpftools/patches/002-libbpf-fix-build-failure-from-uninitialized-variable.patch
diff options
context:
space:
mode:
authorTony Ambardar <itugrok@yahoo.com>2020-08-20 11:46:50 -0700
committerDaniel Golle <daniel@makrotopia.org>2020-08-31 12:23:59 +0100
commit2f0d672088c39914ab9cd59b9de3d6f705cd6d5d (patch)
treeba3810d5384e7529d19f8f318c36d804e2354f96 /package/network/utils/bpftools/patches/002-libbpf-fix-build-failure-from-uninitialized-variable.patch
parent735947229c0e89fd714b3cded1e76ea9093827ed (diff)
downloadupstream-2f0d672088c39914ab9cd59b9de3d6f705cd6d5d.tar.gz
upstream-2f0d672088c39914ab9cd59b9de3d6f705cd6d5d.tar.bz2
upstream-2f0d672088c39914ab9cd59b9de3d6f705cd6d5d.zip
bpftools: add utility and library packages supporting eBPF usage
Add support for building bpftool and libbpf from the latest 5.8.3 kernel sources, ensuring up-to-date functionality and fixes. Both are written to be backwards compatible, which simplfies build and usage across different OpenWRT image kernels. 'bpftool' is the primary userspace tool widely used for introspection and manipulation of eBPF programs and maps. Two variants are built: a 'full' version which supports object disassembly and depends on libbfd/libopcodes (total ~500KB); and a 'minimal' version without disassembly functions and dependencies. The default 'minimal' variant is otherwise fully functional, and both are compiled using LTO for further (~30KB) size reductions. 'libbpf' provides shared/static libraries and dev files needed for building userspace programs that perform eBPF interaction. Several cross-compilation and build-failure problems are addressed by new patches and ones backported from farther upstream: * 001-libbpf-ensure-no-local-symbols-counted-in-ABI-check.patch * 002-libbpf-fix-build-failure-from-uninitialized-variable.patch * 003-bpftool-allow-passing-BPFTOOL_VERSION-to-make.patch * 004-v5.9-bpftool-use-only-ftw-for-file-tree-parsing.patch Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
Diffstat (limited to 'package/network/utils/bpftools/patches/002-libbpf-fix-build-failure-from-uninitialized-variable.patch')
-rw-r--r--package/network/utils/bpftools/patches/002-libbpf-fix-build-failure-from-uninitialized-variable.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/package/network/utils/bpftools/patches/002-libbpf-fix-build-failure-from-uninitialized-variable.patch b/package/network/utils/bpftools/patches/002-libbpf-fix-build-failure-from-uninitialized-variable.patch
new file mode 100644
index 0000000000..a61d0930f8
--- /dev/null
+++ b/package/network/utils/bpftools/patches/002-libbpf-fix-build-failure-from-uninitialized-variable.patch
@@ -0,0 +1,46 @@
+From 74d0dcf7608b1bab116e297468ac51b57eb97ce0 Mon Sep 17 00:00:00 2001
+From: Tony Ambardar <Tony.Ambardar@gmail.com>
+Date: Thu, 20 Aug 2020 10:06:24 -0700
+Subject: [PATCH] libbpf: fix build failure from uninitialized variable warning
+
+While compiling libbpf, some GCC versions (at least 8.4.0) have difficulty
+determining control flow and a emit warning for potentially uninitialized
+usage of 'map', which results in a build error if using "-Werror":
+
+In file included from libbpf.c:56:
+libbpf.c: In function '__bpf_object__open':
+libbpf_internal.h:59:2: warning: 'map' may be used uninitialized in this function [-Wmaybe-uninitialized]
+ libbpf_print(level, "libbpf: " fmt, ##__VA_ARGS__); \
+ ^~~~~~~~~~~~
+libbpf.c:5032:18: note: 'map' was declared here
+ struct bpf_map *map, *targ_map;
+ ^~~
+
+The warning/error is false based on code inspection, so silence it with a
+NULL initialization.
+
+Fixes: 646f02ffdd49 ("libbpf: Add BTF-defined map-in-map support")
+Ref: 063e68813391 ("libbpf: Fix false uninitialized variable warning")
+
+Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
+---
+ tools/lib/bpf/libbpf.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
+index 11e4725b8b1c..a72296797357 100644
+--- a/tools/lib/bpf/libbpf.c
++++ b/tools/lib/bpf/libbpf.c
+@@ -5028,8 +5028,8 @@ static int bpf_object__collect_map_relos(struct bpf_object *obj,
+ int i, j, nrels, new_sz, ptr_sz = sizeof(void *);
+ const struct btf_var_secinfo *vi = NULL;
+ const struct btf_type *sec, *var, *def;
++ struct bpf_map *map = NULL, *targ_map;
+ const struct btf_member *member;
+- struct bpf_map *map, *targ_map;
+ const char *name, *mname;
+ Elf_Data *symbols;
+ unsigned int moff;
+--
+2.25.1
+