1*edce1a24SHengqi Chen /* SPDX-License-Identifier: GPL-2.0 */ 2*edce1a24SHengqi Chen /* Copyright (c) 2021 Hengqi Chen */ 3*edce1a24SHengqi Chen 4*edce1a24SHengqi Chen #include <test_progs.h> 5*edce1a24SHengqi Chen #include <bpf/btf.h> 6*edce1a24SHengqi Chen 7*edce1a24SHengqi Chen static const char *module_name = "bpf_testmod"; 8*edce1a24SHengqi Chen static const char *symbol_name = "bpf_testmod_test_read"; 9*edce1a24SHengqi Chen test_btf_module()10*edce1a24SHengqi Chenvoid test_btf_module() 11*edce1a24SHengqi Chen { 12*edce1a24SHengqi Chen struct btf *vmlinux_btf, *module_btf; 13*edce1a24SHengqi Chen __s32 type_id; 14*edce1a24SHengqi Chen 15*edce1a24SHengqi Chen if (!env.has_testmod) { 16*edce1a24SHengqi Chen test__skip(); 17*edce1a24SHengqi Chen return; 18*edce1a24SHengqi Chen } 19*edce1a24SHengqi Chen 20*edce1a24SHengqi Chen vmlinux_btf = btf__load_vmlinux_btf(); 21*edce1a24SHengqi Chen if (!ASSERT_OK_PTR(vmlinux_btf, "could not load vmlinux BTF")) 22*edce1a24SHengqi Chen return; 23*edce1a24SHengqi Chen 24*edce1a24SHengqi Chen module_btf = btf__load_module_btf(module_name, vmlinux_btf); 25*edce1a24SHengqi Chen if (!ASSERT_OK_PTR(module_btf, "could not load module BTF")) 26*edce1a24SHengqi Chen goto cleanup; 27*edce1a24SHengqi Chen 28*edce1a24SHengqi Chen type_id = btf__find_by_name(module_btf, symbol_name); 29*edce1a24SHengqi Chen ASSERT_GT(type_id, 0, "func not found"); 30*edce1a24SHengqi Chen 31*edce1a24SHengqi Chen cleanup: 32*edce1a24SHengqi Chen btf__free(module_btf); 33*edce1a24SHengqi Chen btf__free(vmlinux_btf); 34*edce1a24SHengqi Chen } 35