1d9db3550SAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0
2d9db3550SAndrii Nakryiko // Copyright (c) 2019 Facebook
3d9db3550SAndrii Nakryiko 
4d9db3550SAndrii Nakryiko #include <linux/bpf.h>
5d9db3550SAndrii Nakryiko #include <stdint.h>
6d9db3550SAndrii Nakryiko #include "bpf_helpers.h"
7d9db3550SAndrii Nakryiko 
8d9db3550SAndrii Nakryiko char _license[] SEC("license") = "GPL";
9d9db3550SAndrii Nakryiko 
10d9db3550SAndrii Nakryiko static volatile struct data {
11d9db3550SAndrii Nakryiko 	char in[256];
12d9db3550SAndrii Nakryiko 	char out[256];
13d9db3550SAndrii Nakryiko } data;
14d9db3550SAndrii Nakryiko 
15d9db3550SAndrii Nakryiko enum core_reloc_primitives_enum {
16d9db3550SAndrii Nakryiko 	A = 0,
17d9db3550SAndrii Nakryiko 	B = 1,
18d9db3550SAndrii Nakryiko };
19d9db3550SAndrii Nakryiko 
20d9db3550SAndrii Nakryiko struct core_reloc_primitives {
21d9db3550SAndrii Nakryiko 	char a;
22d9db3550SAndrii Nakryiko 	int b;
23d9db3550SAndrii Nakryiko 	enum core_reloc_primitives_enum c;
24d9db3550SAndrii Nakryiko 	void *d;
25d9db3550SAndrii Nakryiko 	int (*f)(const char *);
26d9db3550SAndrii Nakryiko };
27d9db3550SAndrii Nakryiko 
28694731e8SAndrii Nakryiko #define CORE_READ(dst, src) bpf_core_read(dst, sizeof(*(dst)), src)
29694731e8SAndrii Nakryiko 
30d9db3550SAndrii Nakryiko SEC("raw_tracepoint/sys_enter")
31d9db3550SAndrii Nakryiko int test_core_primitives(void *ctx)
32d9db3550SAndrii Nakryiko {
33d9db3550SAndrii Nakryiko 	struct core_reloc_primitives *in = (void *)&data.in;
34d9db3550SAndrii Nakryiko 	struct core_reloc_primitives *out = (void *)&data.out;
35d9db3550SAndrii Nakryiko 
36694731e8SAndrii Nakryiko 	if (CORE_READ(&out->a, &in->a) ||
37694731e8SAndrii Nakryiko 	    CORE_READ(&out->b, &in->b) ||
38694731e8SAndrii Nakryiko 	    CORE_READ(&out->c, &in->c) ||
39694731e8SAndrii Nakryiko 	    CORE_READ(&out->d, &in->d) ||
40694731e8SAndrii Nakryiko 	    CORE_READ(&out->f, &in->f))
41d9db3550SAndrii Nakryiko 		return 1;
42d9db3550SAndrii Nakryiko 
43d9db3550SAndrii Nakryiko 	return 0;
44d9db3550SAndrii Nakryiko }
45d9db3550SAndrii Nakryiko 
46