diff options
author | Tony Ambardar <itugrok@yahoo.com> | 2020-08-20 11:46:50 -0700 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2020-08-31 12:23:59 +0100 |
commit | 2f0d672088c39914ab9cd59b9de3d6f705cd6d5d (patch) | |
tree | ba3810d5384e7529d19f8f318c36d804e2354f96 /package/network/utils/bpftools/patches/002-libbpf-fix-build-failure-from-uninitialized-variable.patch | |
parent | 735947229c0e89fd714b3cded1e76ea9093827ed (diff) | |
download | upstream-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.patch | 46 |
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 + |