From: YiFei Zhu <zhuyifei@xxxxxxxxxx> The treatment of this section .metadata is exactly like .rodata, the type modifiers are stripped. The resulting skeleton looks like: struct skel_with_metadata { struct bpf_object_skeleton *skeleton; struct bpf_object *obj; struct { struct bpf_map *metadata; } maps; [...] struct skel_with_metadata__metadata { char metadata_a[4]; int metadata_b; } *metadata; }; Cc: YiFei Zhu <zhuyifei1999@xxxxxxxxx> Signed-off-by: YiFei Zhu <zhuyifei@xxxxxxxxxx> Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> --- tools/bpf/bpftool/gen.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/bpf/bpftool/gen.c b/tools/bpf/bpftool/gen.c index 4033c46d83e7..9c316ea23ca1 100644 --- a/tools/bpf/bpftool/gen.c +++ b/tools/bpf/bpftool/gen.c @@ -82,6 +82,8 @@ static const char *get_map_ident(const struct bpf_map *map) return "bss"; else if (str_has_suffix(name, ".kconfig")) return "kconfig"; + else if (str_has_suffix(name, ".metadata")) + return "metadata"; else return NULL; } @@ -113,6 +115,9 @@ static int codegen_datasec_def(struct bpf_object *obj, strip_mods = true; } else if (strcmp(sec_name, ".kconfig") == 0) { sec_ident = "kconfig"; + } else if (strcmp(sec_name, ".metadata") == 0) { + sec_ident = "metadata"; + strip_mods = true; } else { return 0; } -- 2.28.0.402.g5ffc5be6b7-goog