@@ -153,6 +153,52 @@ static void test_stacktrace_kprobe_multi(bool retprobe)
153153 stacktrace_map__destroy (skel );
154154}
155155
156+ static void test_stacktrace_kprobe (bool retprobe )
157+ {
158+ LIBBPF_OPTS (bpf_kprobe_opts , opts ,
159+ .retprobe = retprobe
160+ );
161+ LIBBPF_OPTS (bpf_test_run_opts , topts );
162+ struct stacktrace_map * skel ;
163+ int prog_fd , err ;
164+
165+ skel = stacktrace_map__open_and_load ();
166+ if (!ASSERT_OK_PTR (skel , "stacktrace_map__open_and_load" ))
167+ return ;
168+
169+ skel -> links .kprobe_stack_test = bpf_program__attach_kprobe_opts (skel -> progs .kprobe_stack_test ,
170+ "bpf_testmod_stacktrace_test" , & opts );
171+ if (!ASSERT_OK_PTR (skel -> links .kprobe_stack_test , "bpf_program__attach_kprobe_opts" ))
172+ goto cleanup ;
173+
174+ prog_fd = bpf_program__fd (skel -> progs .trigger );
175+ err = bpf_prog_test_run_opts (prog_fd , & topts );
176+ ASSERT_OK (err , "test_run" );
177+ ASSERT_EQ (topts .retval , 0 , "test_run" );
178+
179+ trigger_module_test_read (1 );
180+
181+ load_kallsyms ();
182+
183+ if (retprobe ) {
184+ check_stacktrace_ips (bpf_map__fd (skel -> maps .stackmap ), skel -> bss -> stack_key , 4 ,
185+ ksym_get_addr ("bpf_testmod_stacktrace_test_4" ),
186+ ksym_get_addr ("bpf_testmod_stacktrace_test_3" ),
187+ ksym_get_addr ("bpf_testmod_stacktrace_test_2" ),
188+ ksym_get_addr ("bpf_testmod_stacktrace_test_1" ));
189+ } else {
190+ check_stacktrace_ips (bpf_map__fd (skel -> maps .stackmap ), skel -> bss -> stack_key , 5 ,
191+ ksym_get_addr ("bpf_testmod_stacktrace_test" ),
192+ ksym_get_addr ("bpf_testmod_stacktrace_test_4" ),
193+ ksym_get_addr ("bpf_testmod_stacktrace_test_3" ),
194+ ksym_get_addr ("bpf_testmod_stacktrace_test_2" ),
195+ ksym_get_addr ("bpf_testmod_stacktrace_test_1" ));
196+ }
197+
198+ cleanup :
199+ stacktrace_map__destroy (skel );
200+ }
201+
156202void test_stacktrace_map (void )
157203{
158204 if (test__start_subtest ("tp" ))
@@ -167,4 +213,8 @@ void test_stacktrace(void)
167213 test_stacktrace_kprobe_multi (false);
168214 if (test__start_subtest ("kretprobe_multi" ))
169215 test_stacktrace_kprobe_multi (true);
216+ if (test__start_subtest ("kprobe" ))
217+ test_stacktrace_kprobe (false);
218+ if (test__start_subtest ("kretprobe" ))
219+ test_stacktrace_kprobe (true);
170220}
0 commit comments