aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tools/lib/bpf/skel_internal.h
diff options
context:
space:
mode:
authorTony Ambardar <tony.ambardar@gmail.com>2024-09-16 01:37:46 -0700
committerAlexei Starovoitov <ast@kernel.org>2024-10-03 17:47:36 -0700
commit8ca3323dce43792b6a7bbbc3314fc2a281d3af92 (patch)
treedbe1c67a487dd3878271c215d3b3557e9dd9f00d /tools/lib/bpf/skel_internal.h
parentlibbpf: Support linking bpf objects of either endianness (diff)
downloadwireguard-linux-8ca3323dce43792b6a7bbbc3314fc2a281d3af92.tar.xz
wireguard-linux-8ca3323dce43792b6a7bbbc3314fc2a281d3af92.zip
libbpf: Support creating light skeleton of either endianness
Track target endianness in 'struct bpf_gen' and process in-memory data in native byte-order, but on finalization convert the embedded loader BPF insns to target endianness. The light skeleton also includes a target-accessed data blob which is heterogeneous and thus difficult to convert to target byte-order on finalization. Add support functions to convert data to target endianness as it is added to the blob. Also add additional debug logging for data blob structure details and skeleton loading. Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/569562e1d5bf1cce80a1f1a3882461ee2da1ffd5.1726475448.git.tony.ambardar@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to '')
-rw-r--r--tools/lib/bpf/skel_internal.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/tools/lib/bpf/skel_internal.h b/tools/lib/bpf/skel_internal.h
index 0875452521e9..4d5fa079b5d6 100644
--- a/tools/lib/bpf/skel_internal.h
+++ b/tools/lib/bpf/skel_internal.h
@@ -351,10 +351,11 @@ static inline int bpf_load_and_run(struct bpf_load_and_run_opts *opts)
attr.test.ctx_size_in = opts->ctx->sz;
err = skel_sys_bpf(BPF_PROG_RUN, &attr, test_run_attr_sz);
if (err < 0 || (int)attr.test.retval < 0) {
- opts->errstr = "failed to execute loader prog";
if (err < 0) {
+ opts->errstr = "failed to execute loader prog";
set_err;
} else {
+ opts->errstr = "error returned by loader prog";
err = (int)attr.test.retval;
#ifndef __KERNEL__
errno = -err;