BTF: build failure on 32bit on linux-next

Subsystems: bpf [general] (safe dynamic programs and tools), bpf [library] (libbpf), the rest

4 messages, 3 authors, 2021-06-04 · open the first message on its own page

BTF: build failure on 32bit on linux-next

From: Michal Suchánek <hidden>
Date: 2021-05-21 16:20:47

Hello,

looks like the TODO prints added in 67234743736a6 are not 32bit clean.

Do you plan to implement this functionality or should they be fixed?

Thanks

Michal
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 69cd1a835ebd..70a26af8d01f 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -4565,7 +4565,7 @@ static int init_map_slots(struct bpf_object *obj, struct bpf_map *map)
 		targ_map = map->init_slots[i];
 		fd = bpf_map__fd(targ_map);
 		if (obj->gen_loader) {
-			pr_warn("// TODO map_update_elem: idx %ld key %d value==map_idx %ld\n",
+			pr_warn("// TODO map_update_elem: idx %td key %d value==map_idx %td\n",
 				map - obj->maps, i, targ_map - obj->maps);
 			return -ENOTSUP;
 		} else {
@@ -6189,7 +6189,7 @@ static int bpf_core_apply_relo(struct bpf_program *prog,
 		return -EINVAL;
 
 	if (prog->obj->gen_loader) {
-		pr_warn("// TODO core_relo: prog %ld insn[%d] %s %s kind %d\n",
+		pr_warn("// TODO core_relo: prog %td insn[%d] %s %s kind %d\n",
 			prog - prog->obj->programs, relo->insn_off / 8,
 			local_name, spec_str, relo->kind);
 		return -ENOTSUP;

Re: BTF: build failure on 32bit on linux-next

From: Andrii Nakryiko <hidden>
Date: 2021-05-22 00:46:44

On Fri, May 21, 2021 at 9:20 AM Michal Suchánek [off-list ref] wrote:
Hello,

looks like the TODO prints added in 67234743736a6 are not 32bit clean.

Do you plan to implement this functionality or should they be fixed?
They should be fixed regardless. Can you please re-submit as a proper
patch to bpf@vger.kernel.org with [PATCH bpf-next] subj prefix?
quoted hunk
Thanks

Michal
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 69cd1a835ebd..70a26af8d01f 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -4565,7 +4565,7 @@ static int init_map_slots(struct bpf_object *obj, struct bpf_map *map)
                targ_map = map->init_slots[i];
                fd = bpf_map__fd(targ_map);
                if (obj->gen_loader) {
-                       pr_warn("// TODO map_update_elem: idx %ld key %d value==map_idx %ld\n",
+                       pr_warn("// TODO map_update_elem: idx %td key %d value==map_idx %td\n",
                                map - obj->maps, i, targ_map - obj->maps);
                        return -ENOTSUP;
                } else {
@@ -6189,7 +6189,7 @@ static int bpf_core_apply_relo(struct bpf_program *prog,
                return -EINVAL;

        if (prog->obj->gen_loader) {
-               pr_warn("// TODO core_relo: prog %ld insn[%d] %s %s kind %d\n",
+               pr_warn("// TODO core_relo: prog %td insn[%d] %s %s kind %d\n",
                        prog - prog->obj->programs, relo->insn_off / 8,
                        local_name, spec_str, relo->kind);
                return -ENOTSUP;

[PATCH bpf-next] libbpf: fix pr_warn type warnings on 32bit

From: Michal Suchanek <hidden>
Date: 2021-06-04 11:24:54

The printed value is ptrdiff_t and is formatted wiht %ld. This works on
64bit but produces a warning on 32bit. Fix the format specifier to %td.

Fixes: 67234743736a ("libbpf: Generate loader program out of BPF ELF file.")
Signed-off-by: Michal Suchanek <redacted>
---
 tools/lib/bpf/libbpf.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index ef6600688f10..5e13c9d8d3f5 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -4584,7 +4584,7 @@ static int init_map_slots(struct bpf_object *obj, struct bpf_map *map)
 		targ_map = map->init_slots[i];
 		fd = bpf_map__fd(targ_map);
 		if (obj->gen_loader) {
-			pr_warn("// TODO map_update_elem: idx %ld key %d value==map_idx %ld\n",
+			pr_warn("// TODO map_update_elem: idx %td key %d value==map_idx %td\n",
 				map - obj->maps, i, targ_map - obj->maps);
 			return -ENOTSUP;
 		} else {
@@ -6208,7 +6208,7 @@ static int bpf_core_apply_relo(struct bpf_program *prog,
 		return -EINVAL;
 
 	if (prog->obj->gen_loader) {
-		pr_warn("// TODO core_relo: prog %ld insn[%d] %s %s kind %d\n",
+		pr_warn("// TODO core_relo: prog %td insn[%d] %s %s kind %d\n",
 			prog - prog->obj->programs, relo->insn_off / 8,
 			local_name, spec_str, relo->kind);
 		return -ENOTSUP;
-- 
2.26.2

Re: [PATCH bpf-next] libbpf: fix pr_warn type warnings on 32bit

From: Yonghong Song <hidden>
Date: 2021-06-04 15:30:25


On 6/4/21 4:24 AM, Michal Suchanek wrote:
The printed value is ptrdiff_t and is formatted wiht %ld. This works on
64bit but produces a warning on 32bit. Fix the format specifier to %td.

Fixes: 67234743736a ("libbpf: Generate loader program out of BPF ELF file.")
Signed-off-by: Michal Suchanek <redacted>
Acked-by: Yonghong Song <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help