diff options
author | Daniel Borkmann <daniel@iogearbox.net> | 2019-04-09 17:20:14 -0400 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2019-04-09 20:05:47 -0400 |
commit | 1713d68b3bf039d029afd74653c9325f5003ccbe (patch) | |
tree | 1a075e1e49244968145a450df10005fc73df0282 /tools/lib/bpf/libbpf.h | |
parent | d859900c4c56dc4f0f8894c92a01dad86917453e (diff) |
bpf, libbpf: add support for BTF Var and DataSec
This adds libbpf support for BTF Var and DataSec kinds. Main point
here is that libbpf needs to do some preparatory work before the
whole BTF object can be loaded into the kernel, that is, fixing up
of DataSec size taken from the ELF section size and non-static
variable offset which needs to be taken from the ELF's string section.
Upstream LLVM doesn't fix these up since at time of BTF emission
it is too early in the compilation process thus this information
isn't available yet, hence loader needs to take care of it.
Note, deduplication handling has not been in the scope of this work
and needs to be addressed in a future commit.
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://reviews.llvm.org/D59441
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/lib/bpf/libbpf.h')
-rw-r--r-- | tools/lib/bpf/libbpf.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 12db2822c8e7..c5ff00515ce7 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h | |||
@@ -75,6 +75,10 @@ struct bpf_object *__bpf_object__open_xattr(struct bpf_object_open_attr *attr, | |||
75 | LIBBPF_API struct bpf_object *bpf_object__open_buffer(void *obj_buf, | 75 | LIBBPF_API struct bpf_object *bpf_object__open_buffer(void *obj_buf, |
76 | size_t obj_buf_sz, | 76 | size_t obj_buf_sz, |
77 | const char *name); | 77 | const char *name); |
78 | int bpf_object__section_size(const struct bpf_object *obj, const char *name, | ||
79 | __u32 *size); | ||
80 | int bpf_object__variable_offset(const struct bpf_object *obj, const char *name, | ||
81 | __u32 *off); | ||
78 | LIBBPF_API int bpf_object__pin_maps(struct bpf_object *obj, const char *path); | 82 | LIBBPF_API int bpf_object__pin_maps(struct bpf_object *obj, const char *path); |
79 | LIBBPF_API int bpf_object__unpin_maps(struct bpf_object *obj, | 83 | LIBBPF_API int bpf_object__unpin_maps(struct bpf_object *obj, |
80 | const char *path); | 84 | const char *path); |