mirror of
https://github.com/netdata/libbpf.git
synced 2026-11-08 20:00:43 +08:00
libbpf: fix -Wformat warnings from format/argument type mismatches
Building libbpf with -Wall (as happens via bpftool's bootstrap build)
surfaces ~120 -Wformat warnings where pr_warn/pr_debug format specifiers
don't match their argument types: %d for __u32/Elf64_Word, %u for signed
ints, %zd for size_t, %ld for unsigned long, and %x/%lx/%llx applied to
signed values.
Match each specifier to its argument's type where a correctly-signed
specifier exists (%d<->%u, %ld->%lu, %zd->%zu). For hex conversions,
which have no signed form, cast the argument instead (%x->(unsigned),
%lx->(unsigned long), %llx->(unsigned long long)). No functional change.
Note, the fdinfo map_flags sscanf used %i into a __u32 *, which warns.
The kernel prints map_flags as hex ("map_flags:\t%#x\n" in
bpf_map_show_fdinfo(), unchanged since the field was added to fdinfo), so
switch the conversion to %x: it parses the 0x-prefixed value and expects
unsigned int *, matching the destination, so the warning is gone with no
cast.
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20260624204946.2901178-1-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
1 parent
8dae7836fb
commit
a205255dda
9 files changed
+89
-86
No files matched your search
@@ -589,7 +589,7 @@ static int btf_parse_type_sec(struct btf *btf)
|
||||
if (type_size < 0)
|
||||
return type_size;
|
||||
if (next_type + type_size > end_type) {
|
||||
pr_warn("BTF type [%d] is malformed\n", btf->start_id + btf->nr_types);
|
||||
pr_warn("BTF type [%u] is malformed\n", btf->start_id + btf->nr_types);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -1424,7 +1424,7 @@ static int btf_find_elf_sections(Elf *elf, const char *path, struct btf_elf_secs
|
||||
continue;
|
||||
|
||||
if (sh.sh_type != SHT_PROGBITS) {
|
||||
pr_warn("unexpected section type (%d) of section(%d, %s) from %s\n",
|
||||
pr_warn("unexpected section type (%u) of section(%d, %s) from %s\n",
|
||||
sh.sh_type, idx, name, path);
|
||||
goto err;
|
||||
}
|
||||
@@ -4854,7 +4854,7 @@ recur:
|
||||
continue;
|
||||
if (!btf_dedup_identical_types(d, m1->type, m2->type, depth - 1)) {
|
||||
if (t1->name_off) {
|
||||
pr_debug("%s '%s' size=%d vlen=%d id1[%u] id2[%u] shallow-equal but not identical for field#%d '%s'\n",
|
||||
pr_debug("%s '%s' size=%u vlen=%u id1[%u] id2[%u] shallow-equal but not identical for field#%d '%s'\n",
|
||||
k1 == BTF_KIND_STRUCT ? "STRUCT" : "UNION",
|
||||
btf__name_by_offset(d->btf, t1->name_off),
|
||||
t1->size, btf_vlen(t1), id1, id2, i,
|
||||
@@ -5104,7 +5104,7 @@ static int btf_dedup_is_equiv(struct btf_dedup *d, __u32 cand_id,
|
||||
eq = btf_dedup_is_equiv(d, cand_m->type, canon_m->type);
|
||||
if (eq <= 0) {
|
||||
if (cand_type->name_off) {
|
||||
pr_debug("%s '%s' size=%d vlen=%d cand_id[%u] canon_id[%u] shallow-equal but not equiv for field#%d '%s': %d\n",
|
||||
pr_debug("%s '%s' size=%u vlen=%u cand_id[%u] canon_id[%u] shallow-equal but not equiv for field#%d '%s': %d\n",
|
||||
cand_kind == BTF_KIND_STRUCT ? "STRUCT" : "UNION",
|
||||
btf__name_by_offset(d->btf, cand_type->name_off),
|
||||
cand_type->size, vlen, cand_id, canon_id, i,
|
||||
@@ -6069,7 +6069,7 @@ static int btf_add_distilled_types(struct btf_distill *dist)
|
||||
err = btf_add_type(&dist->pipe, t);
|
||||
break;
|
||||
default:
|
||||
pr_warn("unexpected kind when adding base type '%s'[%u] of kind [%u] to distilled base BTF.\n",
|
||||
pr_warn("unexpected kind when adding base type '%s'[%d] of kind [%d] to distilled base BTF.\n",
|
||||
name, i, kind);
|
||||
return -EINVAL;
|
||||
|
||||
|
||||
Reference in new issue
Block a user