mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-31 16:38:12 +00:00
a0964f526d
Add Makefile infra to specify multi-file BPF object files (and derivative skeletons). Add first selftest validating BPF static linker can merge together successfully two independent BPF object files and resulting object and skeleton are correct and usable. Use the same F(F(F(X))) = F(F(X)) identity test on linked object files as for the case of single BPF object files. Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20210318194036.3521577-13-andrii@kernel.org
40 lines
837 B
C
40 lines
837 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/* Copyright (c) 2019 Facebook */
|
|
|
|
#include <test_progs.h>
|
|
#include "test_static_linked.skel.h"
|
|
|
|
void test_static_linked(void)
|
|
{
|
|
int err;
|
|
struct test_static_linked* skel;
|
|
|
|
skel = test_static_linked__open();
|
|
if (!ASSERT_OK_PTR(skel, "skel_open"))
|
|
return;
|
|
|
|
skel->rodata->rovar1 = 1;
|
|
skel->bss->static_var1 = 2;
|
|
skel->bss->static_var11 = 3;
|
|
|
|
skel->rodata->rovar2 = 4;
|
|
skel->bss->static_var2 = 5;
|
|
skel->bss->static_var22 = 6;
|
|
|
|
err = test_static_linked__load(skel);
|
|
if (!ASSERT_OK(err, "skel_load"))
|
|
goto cleanup;
|
|
|
|
err = test_static_linked__attach(skel);
|
|
if (!ASSERT_OK(err, "skel_attach"))
|
|
goto cleanup;
|
|
|
|
/* trigger */
|
|
usleep(1);
|
|
|
|
ASSERT_EQ(skel->bss->var1, 1 * 2 + 2 + 3, "var1");
|
|
ASSERT_EQ(skel->bss->var2, 4 * 3 + 5 + 6, "var2");
|
|
|
|
cleanup:
|
|
test_static_linked__destroy(skel);
|
|
}
|