@@ -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