Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /* Copyright (c) 2021 Facebook */
0003 
0004 #include <test_progs.h>
0005 #include <sys/syscall.h>
0006 #include "linked_vars.skel.h"
0007 
0008 void test_linked_vars(void)
0009 {
0010     int err;
0011     struct linked_vars *skel;
0012 
0013     skel = linked_vars__open();
0014     if (!ASSERT_OK_PTR(skel, "skel_open"))
0015         return;
0016 
0017     skel->bss->input_bss1 = 1000;
0018     skel->bss->input_bss2 = 2000;
0019     skel->bss->input_bss_weak = 3000;
0020 
0021     err = linked_vars__load(skel);
0022     if (!ASSERT_OK(err, "skel_load"))
0023         goto cleanup;
0024 
0025     err = linked_vars__attach(skel);
0026     if (!ASSERT_OK(err, "skel_attach"))
0027         goto cleanup;
0028 
0029     /* trigger */
0030     syscall(SYS_getpgid);
0031 
0032     ASSERT_EQ(skel->bss->output_bss1, 1000 + 2000 + 3000, "output_bss1");
0033     ASSERT_EQ(skel->bss->output_bss2, 1000 + 2000 + 3000, "output_bss2");
0034     /* 10 comes from "winner" input_data_weak in first obj file */
0035     ASSERT_EQ(skel->bss->output_data1, 1 + 2 + 10, "output_bss1");
0036     ASSERT_EQ(skel->bss->output_data2, 1 + 2 + 10, "output_bss2");
0037     /* 100 comes from "winner" input_rodata_weak in first obj file */
0038     ASSERT_EQ(skel->bss->output_rodata1, 11 + 22 + 100, "output_weak1");
0039     ASSERT_EQ(skel->bss->output_rodata2, 11 + 22 + 100, "output_weak2");
0040 
0041 cleanup:
0042     linked_vars__destroy(skel);
0043 }