1*f2644fb4SAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0 2*f2644fb4SAndrii Nakryiko /* Copyright (c) 2021 Facebook */ 3*f2644fb4SAndrii Nakryiko 4*f2644fb4SAndrii Nakryiko #include <test_progs.h> 5*f2644fb4SAndrii Nakryiko #include <sys/syscall.h> 6*f2644fb4SAndrii Nakryiko #include "linked_funcs.skel.h" 7*f2644fb4SAndrii Nakryiko 8*f2644fb4SAndrii Nakryiko void test_linked_funcs(void) 9*f2644fb4SAndrii Nakryiko { 10*f2644fb4SAndrii Nakryiko int err; 11*f2644fb4SAndrii Nakryiko struct linked_funcs *skel; 12*f2644fb4SAndrii Nakryiko 13*f2644fb4SAndrii Nakryiko skel = linked_funcs__open(); 14*f2644fb4SAndrii Nakryiko if (!ASSERT_OK_PTR(skel, "skel_open")) 15*f2644fb4SAndrii Nakryiko return; 16*f2644fb4SAndrii Nakryiko 17*f2644fb4SAndrii Nakryiko skel->rodata->my_tid = syscall(SYS_gettid); 18*f2644fb4SAndrii Nakryiko skel->bss->syscall_id = SYS_getpgid; 19*f2644fb4SAndrii Nakryiko 20*f2644fb4SAndrii Nakryiko err = linked_funcs__load(skel); 21*f2644fb4SAndrii Nakryiko if (!ASSERT_OK(err, "skel_load")) 22*f2644fb4SAndrii Nakryiko goto cleanup; 23*f2644fb4SAndrii Nakryiko 24*f2644fb4SAndrii Nakryiko err = linked_funcs__attach(skel); 25*f2644fb4SAndrii Nakryiko if (!ASSERT_OK(err, "skel_attach")) 26*f2644fb4SAndrii Nakryiko goto cleanup; 27*f2644fb4SAndrii Nakryiko 28*f2644fb4SAndrii Nakryiko /* trigger */ 29*f2644fb4SAndrii Nakryiko syscall(SYS_getpgid); 30*f2644fb4SAndrii Nakryiko 31*f2644fb4SAndrii Nakryiko ASSERT_EQ(skel->bss->output_val1, 2000 + 2000, "output_val1"); 32*f2644fb4SAndrii Nakryiko ASSERT_EQ(skel->bss->output_ctx1, SYS_getpgid, "output_ctx1"); 33*f2644fb4SAndrii Nakryiko ASSERT_EQ(skel->bss->output_weak1, 42, "output_weak1"); 34*f2644fb4SAndrii Nakryiko 35*f2644fb4SAndrii Nakryiko ASSERT_EQ(skel->bss->output_val2, 2 * 1000 + 2 * (2 * 1000), "output_val2"); 36*f2644fb4SAndrii Nakryiko ASSERT_EQ(skel->bss->output_ctx2, SYS_getpgid, "output_ctx2"); 37*f2644fb4SAndrii Nakryiko /* output_weak2 should never be updated */ 38*f2644fb4SAndrii Nakryiko ASSERT_EQ(skel->bss->output_weak2, 0, "output_weak2"); 39*f2644fb4SAndrii Nakryiko 40*f2644fb4SAndrii Nakryiko cleanup: 41*f2644fb4SAndrii Nakryiko linked_funcs__destroy(skel); 42*f2644fb4SAndrii Nakryiko } 43