Commit 7d19c00e authored by Daniel Xu's avatar Daniel Xu Committed by Martin KaFai Lau

bpf: selftests: test_loader: Support __btf_path() annotation

This commit adds support for per-prog btf_custom_path. This is necessary
for testing CO-RE relocations on non-vmlinux types using test_loader
infrastructure.
Acked-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Signed-off-by: default avatarDaniel Xu <dxu@dxuuu.xyz>
Link: https://lore.kernel.org/r/660ea7f2fdbdd5103bc1af87c9fc931f05327926.1702325874.git.dxu@dxuuu.xyzSigned-off-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
parent 2f708035
...@@ -71,6 +71,7 @@ ...@@ -71,6 +71,7 @@
#define __retval_unpriv(val) __attribute__((btf_decl_tag("comment:test_retval_unpriv="#val))) #define __retval_unpriv(val) __attribute__((btf_decl_tag("comment:test_retval_unpriv="#val)))
#define __auxiliary __attribute__((btf_decl_tag("comment:test_auxiliary"))) #define __auxiliary __attribute__((btf_decl_tag("comment:test_auxiliary")))
#define __auxiliary_unpriv __attribute__((btf_decl_tag("comment:test_auxiliary_unpriv"))) #define __auxiliary_unpriv __attribute__((btf_decl_tag("comment:test_auxiliary_unpriv")))
#define __btf_path(path) __attribute__((btf_decl_tag("comment:test_btf_path=" path)))
/* Convenience macro for use with 'asm volatile' blocks */ /* Convenience macro for use with 'asm volatile' blocks */
#define __naked __attribute__((naked)) #define __naked __attribute__((naked))
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#define TEST_TAG_RETVAL_PFX_UNPRIV "comment:test_retval_unpriv=" #define TEST_TAG_RETVAL_PFX_UNPRIV "comment:test_retval_unpriv="
#define TEST_TAG_AUXILIARY "comment:test_auxiliary" #define TEST_TAG_AUXILIARY "comment:test_auxiliary"
#define TEST_TAG_AUXILIARY_UNPRIV "comment:test_auxiliary_unpriv" #define TEST_TAG_AUXILIARY_UNPRIV "comment:test_auxiliary_unpriv"
#define TEST_BTF_PATH "comment:test_btf_path="
/* Warning: duplicated in bpf_misc.h */ /* Warning: duplicated in bpf_misc.h */
#define POINTER_VALUE 0xcafe4all #define POINTER_VALUE 0xcafe4all
...@@ -58,6 +59,7 @@ struct test_spec { ...@@ -58,6 +59,7 @@ struct test_spec {
const char *prog_name; const char *prog_name;
struct test_subspec priv; struct test_subspec priv;
struct test_subspec unpriv; struct test_subspec unpriv;
const char *btf_custom_path;
int log_level; int log_level;
int prog_flags; int prog_flags;
int mode_mask; int mode_mask;
...@@ -288,6 +290,8 @@ static int parse_test_spec(struct test_loader *tester, ...@@ -288,6 +290,8 @@ static int parse_test_spec(struct test_loader *tester,
goto cleanup; goto cleanup;
update_flags(&spec->prog_flags, flags, clear); update_flags(&spec->prog_flags, flags, clear);
} }
} else if (str_has_pfx(s, TEST_BTF_PATH)) {
spec->btf_custom_path = s + sizeof(TEST_BTF_PATH) - 1;
} }
} }
...@@ -578,6 +582,9 @@ void run_subtest(struct test_loader *tester, ...@@ -578,6 +582,9 @@ void run_subtest(struct test_loader *tester,
} }
} }
/* Implicitly reset to NULL if next test case doesn't specify */
open_opts->btf_custom_path = spec->btf_custom_path;
tobj = bpf_object__open_mem(obj_bytes, obj_byte_cnt, open_opts); tobj = bpf_object__open_mem(obj_bytes, obj_byte_cnt, open_opts);
if (!ASSERT_OK_PTR(tobj, "obj_open_mem")) /* shouldn't happen */ if (!ASSERT_OK_PTR(tobj, "obj_open_mem")) /* shouldn't happen */
goto subtest_cleanup; goto subtest_cleanup;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment