@@ -154,12 +154,62 @@ static void test_stacktrace_kprobe_multi(bool retprobe)
154154 stacktrace_map__destroy (skel );
155155}
156156
157+ static void test_stacktrace_kprobe (bool retprobe )
158+ {
159+ LIBBPF_OPTS (bpf_kprobe_opts , opts ,
160+ .retprobe = retprobe
161+ );
162+ LIBBPF_OPTS (bpf_test_run_opts , topts );
163+ struct stacktrace_map * skel ;
164+ int prog_fd , err ;
165+
166+ skel = stacktrace_map__open_and_load ();
167+ if (!ASSERT_OK_PTR (skel , "stacktrace_map__open_and_load" ))
168+ return ;
169+
170+ skel -> links .kprobe_stack_test = bpf_program__attach_kprobe_opts (skel -> progs .kprobe_stack_test ,
171+ "bpf_testmod_stacktrace_test" , & opts );
172+ if (!ASSERT_OK_PTR (skel -> links .kprobe_stack_test , "bpf_program__attach_kprobe_opts" ))
173+ goto cleanup ;
174+
175+ prog_fd = bpf_program__fd (skel -> progs .trigger );
176+ err = bpf_prog_test_run_opts (prog_fd , & topts );
177+ ASSERT_OK (err , "test_run" );
178+ ASSERT_EQ (topts .retval , 0 , "test_run" );
179+
180+ trigger_module_test_read (1 );
181+
182+ load_kallsyms ();
183+
184+ if (retprobe ) {
185+ check_stacktrace_ips (bpf_map__fd (skel -> maps .stackmap ), skel -> bss -> stack_key , 4 ,
186+ ksym_get_addr ("bpf_testmod_stacktrace_test_4" ),
187+ ksym_get_addr ("bpf_testmod_stacktrace_test_3" ),
188+ ksym_get_addr ("bpf_testmod_stacktrace_test_2" ),
189+ ksym_get_addr ("bpf_testmod_stacktrace_test_1" ));
190+ } else {
191+ check_stacktrace_ips (bpf_map__fd (skel -> maps .stackmap ), skel -> bss -> stack_key , 5 ,
192+ ksym_get_addr ("bpf_testmod_stacktrace_test" ),
193+ ksym_get_addr ("bpf_testmod_stacktrace_test_4" ),
194+ ksym_get_addr ("bpf_testmod_stacktrace_test_3" ),
195+ ksym_get_addr ("bpf_testmod_stacktrace_test_2" ),
196+ ksym_get_addr ("bpf_testmod_stacktrace_test_1" ));
197+ }
198+
199+ cleanup :
200+ stacktrace_map__destroy (skel );
201+ }
202+
157203void test_stacktrace (void )
158204{
159205 if (test__start_subtest ("kprobe_multi" ))
160206 test_stacktrace_kprobe_multi (false);
161207 if (test__start_subtest ("kretprobe_multi" ))
162208 test_stacktrace_kprobe_multi (true);
209+ if (test__start_subtest ("kprobe" ))
210+ test_stacktrace_kprobe (false);
211+ if (test__start_subtest ("kretprobe" ))
212+ test_stacktrace_kprobe (true);
163213}
164214#else
165215void test_stacktrace (void )
0 commit comments