mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-13 01:04:35 +08:00
selftests/bpf: Stop using bpf_object__find_program_by_title API.
bpf_object__find_program_by_title is going to be deprecated. Replace all use cases in tools/testing/selftests/bpf with bpf_object__find_program_by_name or bpf_object__for_each_program. Signed-off-by: Kui-Feng Lee <kuifeng@fb.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20211214035931.1148209-2-kuifeng@fb.com
This commit is contained in:
parent
c164b8b404
commit
a393ea80a2
@ -65,8 +65,8 @@ void serial_test_bpf_obj_id(void)
|
|||||||
if (CHECK_FAIL(err))
|
if (CHECK_FAIL(err))
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(objs[i],
|
prog = bpf_object__find_program_by_name(objs[i],
|
||||||
"raw_tp/sys_enter");
|
"test_obj_id");
|
||||||
if (CHECK_FAIL(!prog))
|
if (CHECK_FAIL(!prog))
|
||||||
goto done;
|
goto done;
|
||||||
links[i] = bpf_program__attach(prog);
|
links[i] = bpf_program__attach(prog);
|
||||||
|
@ -67,9 +67,9 @@ static int run_test(int cgroup_fd, int server_fd, int family, int type)
|
|||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
}
|
}
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, v4 ?
|
prog = bpf_object__find_program_by_name(obj, v4 ?
|
||||||
"cgroup/connect4" :
|
"connect4" :
|
||||||
"cgroup/connect6");
|
"connect6");
|
||||||
if (CHECK(!prog, "find_prog", "connect prog not found\n")) {
|
if (CHECK(!prog, "find_prog", "connect prog not found\n")) {
|
||||||
err = -EIO;
|
err = -EIO;
|
||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
@ -83,9 +83,9 @@ static int run_test(int cgroup_fd, int server_fd, int family, int type)
|
|||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
}
|
}
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, v4 ?
|
prog = bpf_object__find_program_by_name(obj, v4 ?
|
||||||
"cgroup/getpeername4" :
|
"getpeername4" :
|
||||||
"cgroup/getpeername6");
|
"getpeername6");
|
||||||
if (CHECK(!prog, "find_prog", "getpeername prog not found\n")) {
|
if (CHECK(!prog, "find_prog", "getpeername prog not found\n")) {
|
||||||
err = -EIO;
|
err = -EIO;
|
||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
@ -99,9 +99,9 @@ static int run_test(int cgroup_fd, int server_fd, int family, int type)
|
|||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
}
|
}
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, v4 ?
|
prog = bpf_object__find_program_by_name(obj, v4 ?
|
||||||
"cgroup/getsockname4" :
|
"getsockname4" :
|
||||||
"cgroup/getsockname6");
|
"getsockname6");
|
||||||
if (CHECK(!prog, "find_prog", "getsockname prog not found\n")) {
|
if (CHECK(!prog, "find_prog", "getsockname prog not found\n")) {
|
||||||
err = -EIO;
|
err = -EIO;
|
||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
|
@ -10,7 +10,7 @@ static int duration = 0;
|
|||||||
|
|
||||||
#define STRUCT_TO_CHAR_PTR(struct_name) (const char *)&(struct struct_name)
|
#define STRUCT_TO_CHAR_PTR(struct_name) (const char *)&(struct struct_name)
|
||||||
|
|
||||||
#define MODULES_CASE(name, sec_name, tp_name) { \
|
#define MODULES_CASE(name, pg_name, tp_name) { \
|
||||||
.case_name = name, \
|
.case_name = name, \
|
||||||
.bpf_obj_file = "test_core_reloc_module.o", \
|
.bpf_obj_file = "test_core_reloc_module.o", \
|
||||||
.btf_src_file = NULL, /* find in kernel module BTFs */ \
|
.btf_src_file = NULL, /* find in kernel module BTFs */ \
|
||||||
@ -28,7 +28,7 @@ static int duration = 0;
|
|||||||
.comm_len = sizeof("test_progs"), \
|
.comm_len = sizeof("test_progs"), \
|
||||||
}, \
|
}, \
|
||||||
.output_len = sizeof(struct core_reloc_module_output), \
|
.output_len = sizeof(struct core_reloc_module_output), \
|
||||||
.prog_sec_name = sec_name, \
|
.prog_name = pg_name, \
|
||||||
.raw_tp_name = tp_name, \
|
.raw_tp_name = tp_name, \
|
||||||
.trigger = __trigger_module_test_read, \
|
.trigger = __trigger_module_test_read, \
|
||||||
.needs_testmod = true, \
|
.needs_testmod = true, \
|
||||||
@ -43,7 +43,9 @@ static int duration = 0;
|
|||||||
#define FLAVORS_CASE_COMMON(name) \
|
#define FLAVORS_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_flavors.o", \
|
.bpf_obj_file = "test_core_reloc_flavors.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o" \
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_flavors" \
|
||||||
|
|
||||||
#define FLAVORS_CASE(name) { \
|
#define FLAVORS_CASE(name) { \
|
||||||
FLAVORS_CASE_COMMON(name), \
|
FLAVORS_CASE_COMMON(name), \
|
||||||
@ -66,7 +68,9 @@ static int duration = 0;
|
|||||||
#define NESTING_CASE_COMMON(name) \
|
#define NESTING_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_nesting.o", \
|
.bpf_obj_file = "test_core_reloc_nesting.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o"
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_nesting" \
|
||||||
|
|
||||||
#define NESTING_CASE(name) { \
|
#define NESTING_CASE(name) { \
|
||||||
NESTING_CASE_COMMON(name), \
|
NESTING_CASE_COMMON(name), \
|
||||||
@ -91,7 +95,9 @@ static int duration = 0;
|
|||||||
#define ARRAYS_CASE_COMMON(name) \
|
#define ARRAYS_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_arrays.o", \
|
.bpf_obj_file = "test_core_reloc_arrays.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o"
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_arrays" \
|
||||||
|
|
||||||
#define ARRAYS_CASE(name) { \
|
#define ARRAYS_CASE(name) { \
|
||||||
ARRAYS_CASE_COMMON(name), \
|
ARRAYS_CASE_COMMON(name), \
|
||||||
@ -123,7 +129,9 @@ static int duration = 0;
|
|||||||
#define PRIMITIVES_CASE_COMMON(name) \
|
#define PRIMITIVES_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_primitives.o", \
|
.bpf_obj_file = "test_core_reloc_primitives.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o"
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_primitives" \
|
||||||
|
|
||||||
#define PRIMITIVES_CASE(name) { \
|
#define PRIMITIVES_CASE(name) { \
|
||||||
PRIMITIVES_CASE_COMMON(name), \
|
PRIMITIVES_CASE_COMMON(name), \
|
||||||
@ -158,6 +166,8 @@ static int duration = 0;
|
|||||||
.e = 5, .f = 6, .g = 7, .h = 8, \
|
.e = 5, .f = 6, .g = 7, .h = 8, \
|
||||||
}, \
|
}, \
|
||||||
.output_len = sizeof(struct core_reloc_mods_output), \
|
.output_len = sizeof(struct core_reloc_mods_output), \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_mods", \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PTR_AS_ARR_CASE(name) { \
|
#define PTR_AS_ARR_CASE(name) { \
|
||||||
@ -174,6 +184,8 @@ static int duration = 0;
|
|||||||
.a = 3, \
|
.a = 3, \
|
||||||
}, \
|
}, \
|
||||||
.output_len = sizeof(struct core_reloc_ptr_as_arr), \
|
.output_len = sizeof(struct core_reloc_ptr_as_arr), \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_ptr_as_arr", \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define INTS_DATA(struct_name) STRUCT_TO_CHAR_PTR(struct_name) { \
|
#define INTS_DATA(struct_name) STRUCT_TO_CHAR_PTR(struct_name) { \
|
||||||
@ -190,7 +202,9 @@ static int duration = 0;
|
|||||||
#define INTS_CASE_COMMON(name) \
|
#define INTS_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_ints.o", \
|
.bpf_obj_file = "test_core_reloc_ints.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o"
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_ints"
|
||||||
|
|
||||||
#define INTS_CASE(name) { \
|
#define INTS_CASE(name) { \
|
||||||
INTS_CASE_COMMON(name), \
|
INTS_CASE_COMMON(name), \
|
||||||
@ -208,7 +222,9 @@ static int duration = 0;
|
|||||||
#define FIELD_EXISTS_CASE_COMMON(name) \
|
#define FIELD_EXISTS_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_existence.o", \
|
.bpf_obj_file = "test_core_reloc_existence.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o" \
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_existence"
|
||||||
|
|
||||||
#define BITFIELDS_CASE_COMMON(objfile, test_name_prefix, name) \
|
#define BITFIELDS_CASE_COMMON(objfile, test_name_prefix, name) \
|
||||||
.case_name = test_name_prefix#name, \
|
.case_name = test_name_prefix#name, \
|
||||||
@ -223,6 +239,8 @@ static int duration = 0;
|
|||||||
.output = STRUCT_TO_CHAR_PTR(core_reloc_bitfields_output) \
|
.output = STRUCT_TO_CHAR_PTR(core_reloc_bitfields_output) \
|
||||||
__VA_ARGS__, \
|
__VA_ARGS__, \
|
||||||
.output_len = sizeof(struct core_reloc_bitfields_output), \
|
.output_len = sizeof(struct core_reloc_bitfields_output), \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_bitfields", \
|
||||||
}, { \
|
}, { \
|
||||||
BITFIELDS_CASE_COMMON("test_core_reloc_bitfields_direct.o", \
|
BITFIELDS_CASE_COMMON("test_core_reloc_bitfields_direct.o", \
|
||||||
"direct:", name), \
|
"direct:", name), \
|
||||||
@ -231,7 +249,7 @@ static int duration = 0;
|
|||||||
.output = STRUCT_TO_CHAR_PTR(core_reloc_bitfields_output) \
|
.output = STRUCT_TO_CHAR_PTR(core_reloc_bitfields_output) \
|
||||||
__VA_ARGS__, \
|
__VA_ARGS__, \
|
||||||
.output_len = sizeof(struct core_reloc_bitfields_output), \
|
.output_len = sizeof(struct core_reloc_bitfields_output), \
|
||||||
.prog_sec_name = "tp_btf/sys_enter", \
|
.prog_name = "test_core_bitfields_direct", \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -239,17 +257,21 @@ static int duration = 0;
|
|||||||
BITFIELDS_CASE_COMMON("test_core_reloc_bitfields_probed.o", \
|
BITFIELDS_CASE_COMMON("test_core_reloc_bitfields_probed.o", \
|
||||||
"probed:", name), \
|
"probed:", name), \
|
||||||
.fails = true, \
|
.fails = true, \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_bitfields", \
|
||||||
}, { \
|
}, { \
|
||||||
BITFIELDS_CASE_COMMON("test_core_reloc_bitfields_direct.o", \
|
BITFIELDS_CASE_COMMON("test_core_reloc_bitfields_direct.o", \
|
||||||
"direct:", name), \
|
"direct:", name), \
|
||||||
.prog_sec_name = "tp_btf/sys_enter", \
|
|
||||||
.fails = true, \
|
.fails = true, \
|
||||||
|
.prog_name = "test_core_bitfields_direct", \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SIZE_CASE_COMMON(name) \
|
#define SIZE_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_size.o", \
|
.bpf_obj_file = "test_core_reloc_size.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o"
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_size"
|
||||||
|
|
||||||
#define SIZE_OUTPUT_DATA(type) \
|
#define SIZE_OUTPUT_DATA(type) \
|
||||||
STRUCT_TO_CHAR_PTR(core_reloc_size_output) { \
|
STRUCT_TO_CHAR_PTR(core_reloc_size_output) { \
|
||||||
@ -277,8 +299,10 @@ static int duration = 0;
|
|||||||
|
|
||||||
#define TYPE_BASED_CASE_COMMON(name) \
|
#define TYPE_BASED_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_type_based.o", \
|
.bpf_obj_file = "test_core_reloc_type_based.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o" \
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_type_based"
|
||||||
|
|
||||||
#define TYPE_BASED_CASE(name, ...) { \
|
#define TYPE_BASED_CASE(name, ...) { \
|
||||||
TYPE_BASED_CASE_COMMON(name), \
|
TYPE_BASED_CASE_COMMON(name), \
|
||||||
@ -295,7 +319,9 @@ static int duration = 0;
|
|||||||
#define TYPE_ID_CASE_COMMON(name) \
|
#define TYPE_ID_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_type_id.o", \
|
.bpf_obj_file = "test_core_reloc_type_id.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o" \
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_type_id"
|
||||||
|
|
||||||
#define TYPE_ID_CASE(name, setup_fn) { \
|
#define TYPE_ID_CASE(name, setup_fn) { \
|
||||||
TYPE_ID_CASE_COMMON(name), \
|
TYPE_ID_CASE_COMMON(name), \
|
||||||
@ -312,7 +338,9 @@ static int duration = 0;
|
|||||||
#define ENUMVAL_CASE_COMMON(name) \
|
#define ENUMVAL_CASE_COMMON(name) \
|
||||||
.case_name = #name, \
|
.case_name = #name, \
|
||||||
.bpf_obj_file = "test_core_reloc_enumval.o", \
|
.bpf_obj_file = "test_core_reloc_enumval.o", \
|
||||||
.btf_src_file = "btf__core_reloc_" #name ".o" \
|
.btf_src_file = "btf__core_reloc_" #name ".o", \
|
||||||
|
.raw_tp_name = "sys_enter", \
|
||||||
|
.prog_name = "test_core_enumval"
|
||||||
|
|
||||||
#define ENUMVAL_CASE(name, ...) { \
|
#define ENUMVAL_CASE(name, ...) { \
|
||||||
ENUMVAL_CASE_COMMON(name), \
|
ENUMVAL_CASE_COMMON(name), \
|
||||||
@ -342,7 +370,7 @@ struct core_reloc_test_case {
|
|||||||
bool fails;
|
bool fails;
|
||||||
bool needs_testmod;
|
bool needs_testmod;
|
||||||
bool relaxed_core_relocs;
|
bool relaxed_core_relocs;
|
||||||
const char *prog_sec_name;
|
const char *prog_name;
|
||||||
const char *raw_tp_name;
|
const char *raw_tp_name;
|
||||||
setup_test_fn setup;
|
setup_test_fn setup;
|
||||||
trigger_test_fn trigger;
|
trigger_test_fn trigger;
|
||||||
@ -497,11 +525,13 @@ static struct core_reloc_test_case test_cases[] = {
|
|||||||
.comm_len = sizeof("test_progs"),
|
.comm_len = sizeof("test_progs"),
|
||||||
},
|
},
|
||||||
.output_len = sizeof(struct core_reloc_kernel_output),
|
.output_len = sizeof(struct core_reloc_kernel_output),
|
||||||
|
.raw_tp_name = "sys_enter",
|
||||||
|
.prog_name = "test_core_kernel",
|
||||||
},
|
},
|
||||||
|
|
||||||
/* validate we can find kernel module BTF types for relocs/attach */
|
/* validate we can find kernel module BTF types for relocs/attach */
|
||||||
MODULES_CASE("module_probed", "raw_tp/bpf_testmod_test_read", "bpf_testmod_test_read"),
|
MODULES_CASE("module_probed", "test_core_module_probed", "bpf_testmod_test_read"),
|
||||||
MODULES_CASE("module_direct", "tp_btf/bpf_testmod_test_read", NULL),
|
MODULES_CASE("module_direct", "test_core_module_direct", NULL),
|
||||||
|
|
||||||
/* validate BPF program can use multiple flavors to match against
|
/* validate BPF program can use multiple flavors to match against
|
||||||
* single target BTF type
|
* single target BTF type
|
||||||
@ -580,6 +610,8 @@ static struct core_reloc_test_case test_cases[] = {
|
|||||||
.c = 0, /* BUG in clang, should be 3 */
|
.c = 0, /* BUG in clang, should be 3 */
|
||||||
},
|
},
|
||||||
.output_len = sizeof(struct core_reloc_misc_output),
|
.output_len = sizeof(struct core_reloc_misc_output),
|
||||||
|
.raw_tp_name = "sys_enter",
|
||||||
|
.prog_name = "test_core_misc",
|
||||||
},
|
},
|
||||||
|
|
||||||
/* validate field existence checks */
|
/* validate field existence checks */
|
||||||
@ -848,14 +880,9 @@ void test_core_reloc(void)
|
|||||||
if (!ASSERT_OK_PTR(obj, "obj_open"))
|
if (!ASSERT_OK_PTR(obj, "obj_open"))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
probe_name = "raw_tracepoint/sys_enter";
|
probe_name = test_case->prog_name;
|
||||||
tp_name = "sys_enter";
|
tp_name = test_case->raw_tp_name; /* NULL for tp_btf */
|
||||||
if (test_case->prog_sec_name) {
|
prog = bpf_object__find_program_by_name(obj, probe_name);
|
||||||
probe_name = test_case->prog_sec_name;
|
|
||||||
tp_name = test_case->raw_tp_name; /* NULL for tp_btf */
|
|
||||||
}
|
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, probe_name);
|
|
||||||
if (CHECK(!prog, "find_probe",
|
if (CHECK(!prog, "find_probe",
|
||||||
"prog '%s' not found\n", probe_name))
|
"prog '%s' not found\n", probe_name))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -101,6 +101,8 @@ static void test_fexit_bpf2bpf_common(const char *obj_file,
|
|||||||
|
|
||||||
for (i = 0; i < prog_cnt; i++) {
|
for (i = 0; i < prog_cnt; i++) {
|
||||||
struct bpf_link_info link_info;
|
struct bpf_link_info link_info;
|
||||||
|
struct bpf_program *pos;
|
||||||
|
const char *pos_sec_name;
|
||||||
char *tgt_name;
|
char *tgt_name;
|
||||||
__s32 btf_id;
|
__s32 btf_id;
|
||||||
|
|
||||||
@ -109,7 +111,14 @@ static void test_fexit_bpf2bpf_common(const char *obj_file,
|
|||||||
goto close_prog;
|
goto close_prog;
|
||||||
btf_id = btf__find_by_name_kind(btf, tgt_name + 1, BTF_KIND_FUNC);
|
btf_id = btf__find_by_name_kind(btf, tgt_name + 1, BTF_KIND_FUNC);
|
||||||
|
|
||||||
prog[i] = bpf_object__find_program_by_title(obj, prog_name[i]);
|
prog[i] = NULL;
|
||||||
|
bpf_object__for_each_program(pos, obj) {
|
||||||
|
pos_sec_name = bpf_program__section_name(pos);
|
||||||
|
if (pos_sec_name && !strcmp(pos_sec_name, prog_name[i])) {
|
||||||
|
prog[i] = pos;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!ASSERT_OK_PTR(prog[i], prog_name[i]))
|
if (!ASSERT_OK_PTR(prog[i], prog_name[i]))
|
||||||
goto close_prog;
|
goto close_prog;
|
||||||
|
|
||||||
@ -211,8 +220,8 @@ static void test_func_replace_verify(void)
|
|||||||
|
|
||||||
static int test_second_attach(struct bpf_object *obj)
|
static int test_second_attach(struct bpf_object *obj)
|
||||||
{
|
{
|
||||||
const char *prog_name = "freplace/get_constant";
|
const char *prog_name = "security_new_get_constant";
|
||||||
const char *tgt_name = prog_name + 9; /* cut off freplace/ */
|
const char *tgt_name = "get_constant";
|
||||||
const char *tgt_obj_file = "./test_pkt_access.o";
|
const char *tgt_obj_file = "./test_pkt_access.o";
|
||||||
struct bpf_program *prog = NULL;
|
struct bpf_program *prog = NULL;
|
||||||
struct bpf_object *tgt_obj;
|
struct bpf_object *tgt_obj;
|
||||||
@ -220,7 +229,7 @@ static int test_second_attach(struct bpf_object *obj)
|
|||||||
struct bpf_link *link;
|
struct bpf_link *link;
|
||||||
int err = 0, tgt_fd;
|
int err = 0, tgt_fd;
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, prog_name);
|
prog = bpf_object__find_program_by_name(obj, prog_name);
|
||||||
if (CHECK(!prog, "find_prog", "prog %s not found\n", prog_name))
|
if (CHECK(!prog, "find_prog", "prog %s not found\n", prog_name))
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ void test_get_stack_raw_tp(void)
|
|||||||
{
|
{
|
||||||
const char *file = "./test_get_stack_rawtp.o";
|
const char *file = "./test_get_stack_rawtp.o";
|
||||||
const char *file_err = "./test_get_stack_rawtp_err.o";
|
const char *file_err = "./test_get_stack_rawtp_err.o";
|
||||||
const char *prog_name = "raw_tracepoint/sys_enter";
|
const char *prog_name = "bpf_prog1";
|
||||||
int i, err, prog_fd, exp_cnt = MAX_CNT_RAWTP;
|
int i, err, prog_fd, exp_cnt = MAX_CNT_RAWTP;
|
||||||
struct perf_buffer *pb = NULL;
|
struct perf_buffer *pb = NULL;
|
||||||
struct bpf_link *link = NULL;
|
struct bpf_link *link = NULL;
|
||||||
@ -107,7 +107,7 @@ void test_get_stack_raw_tp(void)
|
|||||||
if (CHECK(err, "prog_load raw tp", "err %d errno %d\n", err, errno))
|
if (CHECK(err, "prog_load raw tp", "err %d errno %d\n", err, errno))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, prog_name);
|
prog = bpf_object__find_program_by_name(obj, prog_name);
|
||||||
if (CHECK(!prog, "find_probe", "prog '%s' not found\n", prog_name))
|
if (CHECK(!prog, "find_probe", "prog '%s' not found\n", prog_name))
|
||||||
goto close_prog;
|
goto close_prog;
|
||||||
|
|
||||||
|
@ -136,7 +136,8 @@ static int start_server(void)
|
|||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int prog_attach(struct bpf_object *obj, int cgroup_fd, const char *title)
|
static int prog_attach(struct bpf_object *obj, int cgroup_fd, const char *title,
|
||||||
|
const char *prog_name)
|
||||||
{
|
{
|
||||||
enum bpf_attach_type attach_type;
|
enum bpf_attach_type attach_type;
|
||||||
enum bpf_prog_type prog_type;
|
enum bpf_prog_type prog_type;
|
||||||
@ -145,20 +146,20 @@ static int prog_attach(struct bpf_object *obj, int cgroup_fd, const char *title)
|
|||||||
|
|
||||||
err = libbpf_prog_type_by_name(title, &prog_type, &attach_type);
|
err = libbpf_prog_type_by_name(title, &prog_type, &attach_type);
|
||||||
if (err) {
|
if (err) {
|
||||||
log_err("Failed to deduct types for %s BPF program", title);
|
log_err("Failed to deduct types for %s BPF program", prog_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, title);
|
prog = bpf_object__find_program_by_name(obj, prog_name);
|
||||||
if (!prog) {
|
if (!prog) {
|
||||||
log_err("Failed to find %s BPF program", title);
|
log_err("Failed to find %s BPF program", prog_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = bpf_prog_attach(bpf_program__fd(prog), cgroup_fd,
|
err = bpf_prog_attach(bpf_program__fd(prog), cgroup_fd,
|
||||||
attach_type, 0);
|
attach_type, 0);
|
||||||
if (err) {
|
if (err) {
|
||||||
log_err("Failed to attach %s BPF program", title);
|
log_err("Failed to attach %s BPF program", prog_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,11 +182,11 @@ static void run_test(int cgroup_fd)
|
|||||||
if (!ASSERT_OK(err, "obj_load"))
|
if (!ASSERT_OK(err, "obj_load"))
|
||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
|
|
||||||
err = prog_attach(obj, cgroup_fd, "cgroup/getsockopt");
|
err = prog_attach(obj, cgroup_fd, "cgroup/getsockopt", "_getsockopt");
|
||||||
if (CHECK_FAIL(err))
|
if (CHECK_FAIL(err))
|
||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
|
|
||||||
err = prog_attach(obj, cgroup_fd, "cgroup/setsockopt");
|
err = prog_attach(obj, cgroup_fd, "cgroup/setsockopt", "_setsockopt");
|
||||||
if (CHECK_FAIL(err))
|
if (CHECK_FAIL(err))
|
||||||
goto close_bpf_object;
|
goto close_bpf_object;
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
void test_stacktrace_map(void)
|
void test_stacktrace_map(void)
|
||||||
{
|
{
|
||||||
int control_map_fd, stackid_hmap_fd, stackmap_fd, stack_amap_fd;
|
int control_map_fd, stackid_hmap_fd, stackmap_fd, stack_amap_fd;
|
||||||
const char *prog_name = "tracepoint/sched/sched_switch";
|
const char *prog_name = "oncpu";
|
||||||
int err, prog_fd, stack_trace_len;
|
int err, prog_fd, stack_trace_len;
|
||||||
const char *file = "./test_stacktrace_map.o";
|
const char *file = "./test_stacktrace_map.o";
|
||||||
__u32 key, val, duration = 0;
|
__u32 key, val, duration = 0;
|
||||||
@ -16,7 +16,7 @@ void test_stacktrace_map(void)
|
|||||||
if (CHECK(err, "prog_load", "err %d errno %d\n", err, errno))
|
if (CHECK(err, "prog_load", "err %d errno %d\n", err, errno))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, prog_name);
|
prog = bpf_object__find_program_by_name(obj, prog_name);
|
||||||
if (CHECK(!prog, "find_prog", "prog '%s' not found\n", prog_name))
|
if (CHECK(!prog, "find_prog", "prog '%s' not found\n", prog_name))
|
||||||
goto close_prog;
|
goto close_prog;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
void test_stacktrace_map_raw_tp(void)
|
void test_stacktrace_map_raw_tp(void)
|
||||||
{
|
{
|
||||||
const char *prog_name = "tracepoint/sched/sched_switch";
|
const char *prog_name = "oncpu";
|
||||||
int control_map_fd, stackid_hmap_fd, stackmap_fd;
|
int control_map_fd, stackid_hmap_fd, stackmap_fd;
|
||||||
const char *file = "./test_stacktrace_map.o";
|
const char *file = "./test_stacktrace_map.o";
|
||||||
__u32 key, val, duration = 0;
|
__u32 key, val, duration = 0;
|
||||||
@ -16,7 +16,7 @@ void test_stacktrace_map_raw_tp(void)
|
|||||||
if (CHECK(err, "prog_load raw tp", "err %d errno %d\n", err, errno))
|
if (CHECK(err, "prog_load raw tp", "err %d errno %d\n", err, errno))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, prog_name);
|
prog = bpf_object__find_program_by_name(obj, prog_name);
|
||||||
if (CHECK(!prog, "find_prog", "prog '%s' not found\n", prog_name))
|
if (CHECK(!prog, "find_prog", "prog '%s' not found\n", prog_name))
|
||||||
goto close_prog;
|
goto close_prog;
|
||||||
|
|
||||||
|
@ -56,11 +56,11 @@ static void setaffinity(void)
|
|||||||
|
|
||||||
void test_test_overhead(void)
|
void test_test_overhead(void)
|
||||||
{
|
{
|
||||||
const char *kprobe_name = "kprobe/__set_task_comm";
|
const char *kprobe_name = "prog1";
|
||||||
const char *kretprobe_name = "kretprobe/__set_task_comm";
|
const char *kretprobe_name = "prog2";
|
||||||
const char *raw_tp_name = "raw_tp/task_rename";
|
const char *raw_tp_name = "prog3";
|
||||||
const char *fentry_name = "fentry/__set_task_comm";
|
const char *fentry_name = "prog4";
|
||||||
const char *fexit_name = "fexit/__set_task_comm";
|
const char *fexit_name = "prog5";
|
||||||
const char *kprobe_func = "__set_task_comm";
|
const char *kprobe_func = "__set_task_comm";
|
||||||
struct bpf_program *kprobe_prog, *kretprobe_prog, *raw_tp_prog;
|
struct bpf_program *kprobe_prog, *kretprobe_prog, *raw_tp_prog;
|
||||||
struct bpf_program *fentry_prog, *fexit_prog;
|
struct bpf_program *fentry_prog, *fexit_prog;
|
||||||
@ -76,23 +76,23 @@ void test_test_overhead(void)
|
|||||||
if (!ASSERT_OK_PTR(obj, "obj_open_file"))
|
if (!ASSERT_OK_PTR(obj, "obj_open_file"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
kprobe_prog = bpf_object__find_program_by_title(obj, kprobe_name);
|
kprobe_prog = bpf_object__find_program_by_name(obj, kprobe_name);
|
||||||
if (CHECK(!kprobe_prog, "find_probe",
|
if (CHECK(!kprobe_prog, "find_probe",
|
||||||
"prog '%s' not found\n", kprobe_name))
|
"prog '%s' not found\n", kprobe_name))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
kretprobe_prog = bpf_object__find_program_by_title(obj, kretprobe_name);
|
kretprobe_prog = bpf_object__find_program_by_name(obj, kretprobe_name);
|
||||||
if (CHECK(!kretprobe_prog, "find_probe",
|
if (CHECK(!kretprobe_prog, "find_probe",
|
||||||
"prog '%s' not found\n", kretprobe_name))
|
"prog '%s' not found\n", kretprobe_name))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
raw_tp_prog = bpf_object__find_program_by_title(obj, raw_tp_name);
|
raw_tp_prog = bpf_object__find_program_by_name(obj, raw_tp_name);
|
||||||
if (CHECK(!raw_tp_prog, "find_probe",
|
if (CHECK(!raw_tp_prog, "find_probe",
|
||||||
"prog '%s' not found\n", raw_tp_name))
|
"prog '%s' not found\n", raw_tp_name))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
fentry_prog = bpf_object__find_program_by_title(obj, fentry_name);
|
fentry_prog = bpf_object__find_program_by_name(obj, fentry_name);
|
||||||
if (CHECK(!fentry_prog, "find_probe",
|
if (CHECK(!fentry_prog, "find_probe",
|
||||||
"prog '%s' not found\n", fentry_name))
|
"prog '%s' not found\n", fentry_name))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
fexit_prog = bpf_object__find_program_by_title(obj, fexit_name);
|
fexit_prog = bpf_object__find_program_by_name(obj, fexit_name);
|
||||||
if (CHECK(!fexit_prog, "find_probe",
|
if (CHECK(!fexit_prog, "find_probe",
|
||||||
"prog '%s' not found\n", fexit_name))
|
"prog '%s' not found\n", fexit_name))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -35,7 +35,7 @@ static struct bpf_link *load(struct bpf_object *obj, const char *name)
|
|||||||
struct bpf_program *prog;
|
struct bpf_program *prog;
|
||||||
int duration = 0;
|
int duration = 0;
|
||||||
|
|
||||||
prog = bpf_object__find_program_by_title(obj, name);
|
prog = bpf_object__find_program_by_name(obj, name);
|
||||||
if (CHECK(!prog, "find_probe", "prog '%s' not found\n", name))
|
if (CHECK(!prog, "find_probe", "prog '%s' not found\n", name))
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
return bpf_program__attach_trace(prog);
|
return bpf_program__attach_trace(prog);
|
||||||
@ -44,8 +44,8 @@ static struct bpf_link *load(struct bpf_object *obj, const char *name)
|
|||||||
/* TODO: use different target function to run in concurrent mode */
|
/* TODO: use different target function to run in concurrent mode */
|
||||||
void serial_test_trampoline_count(void)
|
void serial_test_trampoline_count(void)
|
||||||
{
|
{
|
||||||
const char *fentry_name = "fentry/__set_task_comm";
|
const char *fentry_name = "prog1";
|
||||||
const char *fexit_name = "fexit/__set_task_comm";
|
const char *fexit_name = "prog2";
|
||||||
const char *object = "test_trampoline_count.o";
|
const char *object = "test_trampoline_count.o";
|
||||||
struct inst inst[MAX_TRAMP_PROGS] = {};
|
struct inst inst[MAX_TRAMP_PROGS] = {};
|
||||||
int err, i = 0, duration = 0;
|
int err, i = 0, duration = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user