diff options
author | Mike Pagano <mpagano@gentoo.org> | 2024-08-10 11:42:43 -0400 |
---|---|---|
committer | Mike Pagano <mpagano@gentoo.org> | 2024-08-10 11:42:43 -0400 |
commit | 34084c0f265ddd0443e44237399584bf500ee9e4 (patch) | |
tree | d6c6f8fe1a7030ecc85c7853aceafbced266ddc5 | |
parent | Linnux patch 6.6.44, and addtional patch (diff) | |
download | linux-patches-34084c0f265ddd0443e44237399584bf500ee9e4.tar.gz linux-patches-34084c0f265ddd0443e44237399584bf500ee9e4.tar.bz2 linux-patches-34084c0f265ddd0443e44237399584bf500ee9e4.zip |
libbpf: workaround -Wmaybe-uninitialized false positive
Signed-off-by: Mike Pagano <mpagano@gentoo.org>
-rw-r--r-- | 0000_README | 4 | ||||
-rw-r--r-- | 2990_libbpf-workaround-Wmaybe-uninitialized-false-pos.patch | 67 |
2 files changed, 71 insertions, 0 deletions
diff --git a/0000_README b/0000_README index f2b8c71e..a6c696ed 100644 --- a/0000_README +++ b/0000_README @@ -275,6 +275,10 @@ Patch: 2950_jump-label-fix.patch From: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/ Desc: jump_label: Fix a regression +Patch: 2990_libbpf-workaround-Wmaybe-uninitialized-false-pos.patch +From: https://lore.kernel.org/bpf/3ebbe7a4e93a5ddc3a26e2e11d329801d7c8de6b.1723217044.git.sam@gentoo.org/ +Desc: libbpf: workaround -Wmaybe-uninitialized false positive + Patch: 3000_Support-printing-firmware-info.patch From: https://bugs.gentoo.org/732852 Desc: Print firmware info (Reqs CONFIG_GENTOO_PRINT_FIRMWARE_INFO). Thanks to Georgy Yakovlev diff --git a/2990_libbpf-workaround-Wmaybe-uninitialized-false-pos.patch b/2990_libbpf-workaround-Wmaybe-uninitialized-false-pos.patch new file mode 100644 index 00000000..86de18d7 --- /dev/null +++ b/2990_libbpf-workaround-Wmaybe-uninitialized-false-pos.patch @@ -0,0 +1,67 @@ +From git@z Thu Jan 1 00:00:00 1970 +Subject: [PATCH] libbpf: workaround -Wmaybe-uninitialized false positive +From: Sam James <sam@gentoo.org> +Date: Fri, 09 Aug 2024 16:24:04 +0100 +Message-Id: <3ebbe7a4e93a5ddc3a26e2e11d329801d7c8de6b.1723217044.git.sam@gentoo.org> +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +In `elf_close`, we get this with GCC 15 -O3 (at least): +``` +In function ‘elf_close’, + inlined from ‘elf_close’ at elf.c:53:6, + inlined from ‘elf_find_func_offset_from_file’ at elf.c:384:2: +elf.c:57:9: warning: ‘elf_fd.elf’ may be used uninitialized [-Wmaybe-uninitialized] + 57 | elf_end(elf_fd->elf); + | ^~~~~~~~~~~~~~~~~~~~ +elf.c: In function ‘elf_find_func_offset_from_file’: +elf.c:377:23: note: ‘elf_fd.elf’ was declared here + 377 | struct elf_fd elf_fd; + | ^~~~~~ +In function ‘elf_close’, + inlined from ‘elf_close’ at elf.c:53:6, + inlined from ‘elf_find_func_offset_from_file’ at elf.c:384:2: +elf.c:58:9: warning: ‘elf_fd.fd’ may be used uninitialized [-Wmaybe-uninitialized] + 58 | close(elf_fd->fd); + | ^~~~~~~~~~~~~~~~~ +elf.c: In function ‘elf_find_func_offset_from_file’: +elf.c:377:23: note: ‘elf_fd.fd’ was declared here + 377 | struct elf_fd elf_fd; + | ^~~~~~ +``` + +In reality, our use is fine, it's just that GCC doesn't model errno +here (see linked GCC bug). Suppress -Wmaybe-uninitialized accordingly. + +Link: https://gcc.gnu.org/PR114952 +Signed-off-by: Sam James <sam@gentoo.org> +--- + tools/lib/bpf/elf.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/tools/lib/bpf/elf.c b/tools/lib/bpf/elf.c +index c92e02394159e..ee226bb8e1af0 100644 +--- a/tools/lib/bpf/elf.c ++++ b/tools/lib/bpf/elf.c +@@ -369,6 +369,9 @@ long elf_find_func_offset(Elf *elf, const char *binary_path, const char *name) + return ret; + } + ++#pragma GCC diagnostic push ++/* https://gcc.gnu.org/PR114952 */ ++#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" + /* Find offset of function name in ELF object specified by path. "name" matches + * symbol name or name@@LIB for library functions. + */ +@@ -384,6 +387,7 @@ long elf_find_func_offset_from_file(const char *binary_path, const char *name) + elf_close(&elf_fd); + return ret; + } ++#pragma GCC diagnostic pop + + struct symbol { + const char *name; +-- +2.45.2 + |