libbpf: fix printf formatter for ptrdiff_t argument
authorAndrii Nakryiko <andriin@fb.com>
Tue, 16 Apr 2019 18:47:17 +0000 (11:47 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 17 Apr 2019 02:44:19 +0000 (19:44 -0700)
Using %ld for printing out value of ptrdiff_t type is not portable
between 32-bit and 64-bit archs. This is causing compilation errors for
libbpf on 32-bit platform (discovered as part of an effort to integrate
libbpf into systemd ([0])). Proper formatter is %td, which is used in
this patch.

v2->v1:
  - add Reported-by
  - provide more context on how this issue was discovered

[0] https://github.com/systemd/systemd/pull/12151

Reported-by: Evgeny Vereshchagin <evvers@ya.ru>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: Yonghong Song <yhs@fb.com>
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Acked-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/lib/bpf/libbpf.c

index e5b77ad..d817bf2 100644 (file)
@@ -817,7 +817,7 @@ bpf_object__init_internal_map(struct bpf_object *obj, struct bpf_map *map,
                memcpy(*data_buff, data->d_buf, data->d_size);
        }
 
-       pr_debug("map %ld is \"%s\"\n", map - obj->maps, map->name);
+       pr_debug("map %td is \"%s\"\n", map - obj->maps, map->name);
        return 0;
 }