tools/bpftool: Fix compilation warnings in 32-bit mode
Fix few compilation warnings in bpftool when compiling in 32-bit mode. Abstract away u64 to pointer conversion into a helper function. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200813204945.1020225-2-andriin@fb.com
This commit is contained in:
parent
a62f68c172
commit
09f44b753a
|
@ -67,7 +67,7 @@ static int dump_prog_id_as_func_ptr(const struct btf_dumper *d,
|
||||||
if (!info->btf_id || !info->nr_func_info ||
|
if (!info->btf_id || !info->nr_func_info ||
|
||||||
btf__get_from_id(info->btf_id, &prog_btf))
|
btf__get_from_id(info->btf_id, &prog_btf))
|
||||||
goto print;
|
goto print;
|
||||||
finfo = (struct bpf_func_info *)info->func_info;
|
finfo = u64_to_ptr(info->func_info);
|
||||||
func_type = btf__type_by_id(prog_btf, finfo->type_id);
|
func_type = btf__type_by_id(prog_btf, finfo->type_id);
|
||||||
if (!func_type || !btf_is_func(func_type))
|
if (!func_type || !btf_is_func(func_type))
|
||||||
goto print;
|
goto print;
|
||||||
|
|
|
@ -106,7 +106,7 @@ static int show_link_close_json(int fd, struct bpf_link_info *info)
|
||||||
switch (info->type) {
|
switch (info->type) {
|
||||||
case BPF_LINK_TYPE_RAW_TRACEPOINT:
|
case BPF_LINK_TYPE_RAW_TRACEPOINT:
|
||||||
jsonw_string_field(json_wtr, "tp_name",
|
jsonw_string_field(json_wtr, "tp_name",
|
||||||
(const char *)info->raw_tracepoint.tp_name);
|
u64_to_ptr(info->raw_tracepoint.tp_name));
|
||||||
break;
|
break;
|
||||||
case BPF_LINK_TYPE_TRACING:
|
case BPF_LINK_TYPE_TRACING:
|
||||||
err = get_prog_info(info->prog_id, &prog_info);
|
err = get_prog_info(info->prog_id, &prog_info);
|
||||||
|
@ -185,7 +185,7 @@ static int show_link_close_plain(int fd, struct bpf_link_info *info)
|
||||||
switch (info->type) {
|
switch (info->type) {
|
||||||
case BPF_LINK_TYPE_RAW_TRACEPOINT:
|
case BPF_LINK_TYPE_RAW_TRACEPOINT:
|
||||||
printf("\n\ttp '%s' ",
|
printf("\n\ttp '%s' ",
|
||||||
(const char *)info->raw_tracepoint.tp_name);
|
(const char *)u64_to_ptr(info->raw_tracepoint.tp_name));
|
||||||
break;
|
break;
|
||||||
case BPF_LINK_TYPE_TRACING:
|
case BPF_LINK_TYPE_TRACING:
|
||||||
err = get_prog_info(info->prog_id, &prog_info);
|
err = get_prog_info(info->prog_id, &prog_info);
|
||||||
|
|
|
@ -21,7 +21,15 @@
|
||||||
/* Make sure we do not use kernel-only integer typedefs */
|
/* Make sure we do not use kernel-only integer typedefs */
|
||||||
#pragma GCC poison u8 u16 u32 u64 s8 s16 s32 s64
|
#pragma GCC poison u8 u16 u32 u64 s8 s16 s32 s64
|
||||||
|
|
||||||
#define ptr_to_u64(ptr) ((__u64)(unsigned long)(ptr))
|
static inline __u64 ptr_to_u64(const void *ptr)
|
||||||
|
{
|
||||||
|
return (__u64)(unsigned long)ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *u64_to_ptr(__u64 ptr)
|
||||||
|
{
|
||||||
|
return (void *)(unsigned long)ptr;
|
||||||
|
}
|
||||||
|
|
||||||
#define NEXT_ARG() ({ argc--; argv++; if (argc < 0) usage(); })
|
#define NEXT_ARG() ({ argc--; argv++; if (argc < 0) usage(); })
|
||||||
#define NEXT_ARGP() ({ (*argc)--; (*argv)++; if (*argc < 0) usage(); })
|
#define NEXT_ARGP() ({ (*argc)--; (*argv)++; if (*argc < 0) usage(); })
|
||||||
|
|
|
@ -428,14 +428,14 @@ prog_dump(struct bpf_prog_info *info, enum dump_mode mode,
|
||||||
p_info("no instructions returned");
|
p_info("no instructions returned");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
buf = (unsigned char *)(info->jited_prog_insns);
|
buf = u64_to_ptr(info->jited_prog_insns);
|
||||||
member_len = info->jited_prog_len;
|
member_len = info->jited_prog_len;
|
||||||
} else { /* DUMP_XLATED */
|
} else { /* DUMP_XLATED */
|
||||||
if (info->xlated_prog_len == 0 || !info->xlated_prog_insns) {
|
if (info->xlated_prog_len == 0 || !info->xlated_prog_insns) {
|
||||||
p_err("error retrieving insn dump: kernel.kptr_restrict set?");
|
p_err("error retrieving insn dump: kernel.kptr_restrict set?");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
buf = (unsigned char *)info->xlated_prog_insns;
|
buf = u64_to_ptr(info->xlated_prog_insns);
|
||||||
member_len = info->xlated_prog_len;
|
member_len = info->xlated_prog_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,7 +444,7 @@ prog_dump(struct bpf_prog_info *info, enum dump_mode mode,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
func_info = (void *)info->func_info;
|
func_info = u64_to_ptr(info->func_info);
|
||||||
|
|
||||||
if (info->nr_line_info) {
|
if (info->nr_line_info) {
|
||||||
prog_linfo = bpf_prog_linfo__new(info);
|
prog_linfo = bpf_prog_linfo__new(info);
|
||||||
|
@ -462,7 +462,7 @@ prog_dump(struct bpf_prog_info *info, enum dump_mode mode,
|
||||||
|
|
||||||
n = write(fd, buf, member_len);
|
n = write(fd, buf, member_len);
|
||||||
close(fd);
|
close(fd);
|
||||||
if (n != member_len) {
|
if (n != (ssize_t)member_len) {
|
||||||
p_err("error writing output file: %s",
|
p_err("error writing output file: %s",
|
||||||
n < 0 ? strerror(errno) : "short write");
|
n < 0 ? strerror(errno) : "short write");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -492,13 +492,13 @@ prog_dump(struct bpf_prog_info *info, enum dump_mode mode,
|
||||||
__u32 i;
|
__u32 i;
|
||||||
if (info->nr_jited_ksyms) {
|
if (info->nr_jited_ksyms) {
|
||||||
kernel_syms_load(&dd);
|
kernel_syms_load(&dd);
|
||||||
ksyms = (__u64 *) info->jited_ksyms;
|
ksyms = u64_to_ptr(info->jited_ksyms);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (json_output)
|
if (json_output)
|
||||||
jsonw_start_array(json_wtr);
|
jsonw_start_array(json_wtr);
|
||||||
|
|
||||||
lens = (__u32 *) info->jited_func_lens;
|
lens = u64_to_ptr(info->jited_func_lens);
|
||||||
for (i = 0; i < info->nr_jited_func_lens; i++) {
|
for (i = 0; i < info->nr_jited_func_lens; i++) {
|
||||||
if (ksyms) {
|
if (ksyms) {
|
||||||
sym = kernel_syms_search(&dd, ksyms[i]);
|
sym = kernel_syms_search(&dd, ksyms[i]);
|
||||||
|
@ -559,7 +559,7 @@ prog_dump(struct bpf_prog_info *info, enum dump_mode mode,
|
||||||
} else {
|
} else {
|
||||||
kernel_syms_load(&dd);
|
kernel_syms_load(&dd);
|
||||||
dd.nr_jited_ksyms = info->nr_jited_ksyms;
|
dd.nr_jited_ksyms = info->nr_jited_ksyms;
|
||||||
dd.jited_ksyms = (__u64 *) info->jited_ksyms;
|
dd.jited_ksyms = u64_to_ptr(info->jited_ksyms);
|
||||||
dd.btf = btf;
|
dd.btf = btf;
|
||||||
dd.func_info = func_info;
|
dd.func_info = func_info;
|
||||||
dd.finfo_rec_size = info->func_info_rec_size;
|
dd.finfo_rec_size = info->func_info_rec_size;
|
||||||
|
@ -1681,7 +1681,7 @@ static char *profile_target_name(int tgt_fd)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
func_info = (struct bpf_func_info *)(info_linear->info.func_info);
|
func_info = u64_to_ptr(info_linear->info.func_info);
|
||||||
t = btf__type_by_id(btf, func_info[0].type_id);
|
t = btf__type_by_id(btf, func_info[0].type_id);
|
||||||
if (!t) {
|
if (!t) {
|
||||||
p_err("btf %d doesn't have type %d",
|
p_err("btf %d doesn't have type %d",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user