提交 6e7e034e 编写于 作者: Q Quentin Monnet 提交者: Daniel Borkmann

tools, bpftool: Poison and replace kernel integer typedefs

Replace the use of kernel-only integer typedefs (u8, u32, etc.) by their
user space counterpart (__u8, __u32, etc.).

Similarly to what libbpf does, poison the typedefs to avoid introducing
them again in the future.
Signed-off-by: NQuentin Monnet <quentin@isovalent.com>
Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20200511161536.29853-2-quentin@isovalent.com
上级 385bbf7b
...@@ -271,8 +271,8 @@ static void btf_int128_print(json_writer_t *jw, const void *data, ...@@ -271,8 +271,8 @@ static void btf_int128_print(json_writer_t *jw, const void *data,
} }
} }
static void btf_int128_shift(__u64 *print_num, u16 left_shift_bits, static void btf_int128_shift(__u64 *print_num, __u16 left_shift_bits,
u16 right_shift_bits) __u16 right_shift_bits)
{ {
__u64 upper_num, lower_num; __u64 upper_num, lower_num;
......
...@@ -157,7 +157,7 @@ static bool cfg_partition_funcs(struct cfg *cfg, struct bpf_insn *cur, ...@@ -157,7 +157,7 @@ static bool cfg_partition_funcs(struct cfg *cfg, struct bpf_insn *cur,
return false; return false;
} }
static bool is_jmp_insn(u8 code) static bool is_jmp_insn(__u8 code)
{ {
return BPF_CLASS(code) == BPF_JMP || BPF_CLASS(code) == BPF_JMP32; return BPF_CLASS(code) == BPF_JMP || BPF_CLASS(code) == BPF_JMP32;
} }
...@@ -176,7 +176,7 @@ static bool func_partition_bb_head(struct func_node *func) ...@@ -176,7 +176,7 @@ static bool func_partition_bb_head(struct func_node *func)
for (; cur <= end; cur++) { for (; cur <= end; cur++) {
if (is_jmp_insn(cur->code)) { if (is_jmp_insn(cur->code)) {
u8 opcode = BPF_OP(cur->code); __u8 opcode = BPF_OP(cur->code);
if (opcode == BPF_EXIT || opcode == BPF_CALL) if (opcode == BPF_EXIT || opcode == BPF_CALL)
continue; continue;
......
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
#include "json_writer.h" #include "json_writer.h"
/* Make sure we do not use kernel-only integer typedefs */
#pragma GCC poison u8 u16 u32 u64 s8 s16 s32 s64
#define ptr_to_u64(ptr) ((__u64)(unsigned long)(ptr)) #define ptr_to_u64(ptr) ((__u64)(unsigned long)(ptr))
#define NEXT_ARG() ({ argc--; argv++; if (argc < 0) usage(); }) #define NEXT_ARG() ({ argc--; argv++; if (argc < 0) usage(); })
......
...@@ -39,7 +39,7 @@ struct event_ring_info { ...@@ -39,7 +39,7 @@ struct event_ring_info {
struct perf_event_sample { struct perf_event_sample {
struct perf_event_header header; struct perf_event_header header;
u64 time; __u64 time;
__u32 size; __u32 size;
unsigned char data[]; unsigned char data[];
}; };
......
...@@ -238,7 +238,7 @@ int prog_parse_fd(int *argc, char ***argv) ...@@ -238,7 +238,7 @@ int prog_parse_fd(int *argc, char ***argv)
return fd; return fd;
} }
static void show_prog_maps(int fd, u32 num_maps) static void show_prog_maps(int fd, __u32 num_maps)
{ {
struct bpf_prog_info info = {}; struct bpf_prog_info info = {};
__u32 len = sizeof(info); __u32 len = sizeof(info);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册