Commit 679152d3 authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Alexei Starovoitov

libbpf: Fix printf compilation warnings on ppc64le arch

On ppc64le __u64 and __s64 are defined as long int and unsigned long int,
respectively. This causes compiler to emit warning when %lld/%llu are used to
printf 64-bit numbers. Fix this by casting to size_t/ssize_t with %zu and %zd
format specifiers, respectively.

v1->v2:
- use size_t/ssize_t instead of custom typedefs (Martin).

Fixes: 1f8e2bcb ("libbpf: Refactor relocation handling")
Fixes: abd29c93 ("libbpf: allow specifying map definitions using BTF")
Signed-off-by: default avatarAndrii Nakryiko <andriin@fb.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarMartin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20191212171918.638010-1-andriin@fb.com
parent 81c22041
...@@ -1242,15 +1242,15 @@ static int bpf_object__init_user_btf_map(struct bpf_object *obj, ...@@ -1242,15 +1242,15 @@ static int bpf_object__init_user_btf_map(struct bpf_object *obj,
} }
sz = btf__resolve_size(obj->btf, t->type); sz = btf__resolve_size(obj->btf, t->type);
if (sz < 0) { if (sz < 0) {
pr_warn("map '%s': can't determine key size for type [%u]: %lld.\n", pr_warn("map '%s': can't determine key size for type [%u]: %zd.\n",
map_name, t->type, sz); map_name, t->type, (ssize_t)sz);
return sz; return sz;
} }
pr_debug("map '%s': found key [%u], sz = %lld.\n", pr_debug("map '%s': found key [%u], sz = %zd.\n",
map_name, t->type, sz); map_name, t->type, (ssize_t)sz);
if (map->def.key_size && map->def.key_size != sz) { if (map->def.key_size && map->def.key_size != sz) {
pr_warn("map '%s': conflicting key size %u != %lld.\n", pr_warn("map '%s': conflicting key size %u != %zd.\n",
map_name, map->def.key_size, sz); map_name, map->def.key_size, (ssize_t)sz);
return -EINVAL; return -EINVAL;
} }
map->def.key_size = sz; map->def.key_size = sz;
...@@ -1285,15 +1285,15 @@ static int bpf_object__init_user_btf_map(struct bpf_object *obj, ...@@ -1285,15 +1285,15 @@ static int bpf_object__init_user_btf_map(struct bpf_object *obj,
} }
sz = btf__resolve_size(obj->btf, t->type); sz = btf__resolve_size(obj->btf, t->type);
if (sz < 0) { if (sz < 0) {
pr_warn("map '%s': can't determine value size for type [%u]: %lld.\n", pr_warn("map '%s': can't determine value size for type [%u]: %zd.\n",
map_name, t->type, sz); map_name, t->type, (ssize_t)sz);
return sz; return sz;
} }
pr_debug("map '%s': found value [%u], sz = %lld.\n", pr_debug("map '%s': found value [%u], sz = %zd.\n",
map_name, t->type, sz); map_name, t->type, (ssize_t)sz);
if (map->def.value_size && map->def.value_size != sz) { if (map->def.value_size && map->def.value_size != sz) {
pr_warn("map '%s': conflicting value size %u != %lld.\n", pr_warn("map '%s': conflicting value size %u != %zd.\n",
map_name, map->def.value_size, sz); map_name, map->def.value_size, (ssize_t)sz);
return -EINVAL; return -EINVAL;
} }
map->def.value_size = sz; map->def.value_size = sz;
...@@ -1817,7 +1817,8 @@ static int bpf_program__record_reloc(struct bpf_program *prog, ...@@ -1817,7 +1817,8 @@ static int bpf_program__record_reloc(struct bpf_program *prog,
return -LIBBPF_ERRNO__RELOC; return -LIBBPF_ERRNO__RELOC;
} }
if (sym->st_value % 8) { if (sym->st_value % 8) {
pr_warn("bad call relo offset: %llu\n", (__u64)sym->st_value); pr_warn("bad call relo offset: %zu\n",
(size_t)sym->st_value);
return -LIBBPF_ERRNO__RELOC; return -LIBBPF_ERRNO__RELOC;
} }
reloc_desc->type = RELO_CALL; reloc_desc->type = RELO_CALL;
...@@ -1859,8 +1860,8 @@ static int bpf_program__record_reloc(struct bpf_program *prog, ...@@ -1859,8 +1860,8 @@ static int bpf_program__record_reloc(struct bpf_program *prog,
break; break;
} }
if (map_idx >= nr_maps) { if (map_idx >= nr_maps) {
pr_warn("map relo failed to find map for sec %u, off %llu\n", pr_warn("map relo failed to find map for sec %u, off %zu\n",
shdr_idx, (__u64)sym->st_value); shdr_idx, (size_t)sym->st_value);
return -LIBBPF_ERRNO__RELOC; return -LIBBPF_ERRNO__RELOC;
} }
reloc_desc->type = RELO_LD64; reloc_desc->type = RELO_LD64;
...@@ -1941,9 +1942,9 @@ bpf_program__collect_reloc(struct bpf_program *prog, GElf_Shdr *shdr, ...@@ -1941,9 +1942,9 @@ bpf_program__collect_reloc(struct bpf_program *prog, GElf_Shdr *shdr,
name = elf_strptr(obj->efile.elf, obj->efile.strtabidx, name = elf_strptr(obj->efile.elf, obj->efile.strtabidx,
sym.st_name) ? : "<?>"; sym.st_name) ? : "<?>";
pr_debug("relo for shdr %u, symb %llu, value %llu, type %d, bind %d, name %d (\'%s\'), insn %u\n", pr_debug("relo for shdr %u, symb %zu, value %zu, type %d, bind %d, name %d (\'%s\'), insn %u\n",
(__u32)sym.st_shndx, (__u64)GELF_R_SYM(rel.r_info), (__u32)sym.st_shndx, (size_t)GELF_R_SYM(rel.r_info),
(__u64)sym.st_value, GELF_ST_TYPE(sym.st_info), (size_t)sym.st_value, GELF_ST_TYPE(sym.st_info),
GELF_ST_BIND(sym.st_info), sym.st_name, name, GELF_ST_BIND(sym.st_info), sym.st_name, name,
insn_idx); insn_idx);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment