bpftool: Add gen min_core_btf command
This command is implemented under the "gen" command in bpftool and the syntax is the following: $ bpftool gen min_core_btf INPUT OUTPUT OBJECT [OBJECT...] INPUT is the file that contains all the BTF types for a kernel and OUTPUT is the path of the minimize BTF file that will be created with only the types needed by the objects. Signed-off-by: Mauricio Vásquez <mauricio@kinvolk.io> Signed-off-by: Rafael David Tinoco <rafael.tinoco@aquasec.com> Signed-off-by: Lorenzo Fontana <lorenzo.fontana@elastic.co> Signed-off-by: Leonardo Di Donato <leonardo.didonato@elastic.co> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20220215225856.671072-4-mauricio@kinvolk.io
This commit is contained in:
parent
8de6cae40b
commit
0a9f4a20c6
@ -1003,9 +1003,13 @@ _bpftool()
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
min_core_btf)
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
[[ $prev == $object ]] && \
|
||||
COMPREPLY=( $( compgen -W 'object skeleton help' -- "$cur" ) )
|
||||
COMPREPLY=( $( compgen -W 'object skeleton help min_core_btf' -- "$cur" ) )
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
@ -1108,6 +1108,7 @@ static int do_help(int argc, char **argv)
|
||||
fprintf(stderr,
|
||||
"Usage: %1$s %2$s object OUTPUT_FILE INPUT_FILE [INPUT_FILE...]\n"
|
||||
" %1$s %2$s skeleton FILE [name OBJECT_NAME]\n"
|
||||
" %1$s %2$s min_core_btf INPUT OUTPUT OBJECT [OBJECT...]\n"
|
||||
" %1$s %2$s help\n"
|
||||
"\n"
|
||||
" " HELP_SPEC_OPTIONS " |\n"
|
||||
@ -1118,10 +1119,45 @@ static int do_help(int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Create minimized BTF file for a set of BPF objects */
|
||||
static int minimize_btf(const char *src_btf, const char *dst_btf, const char *objspaths[])
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static int do_min_core_btf(int argc, char **argv)
|
||||
{
|
||||
const char *input, *output, **objs;
|
||||
int i, err;
|
||||
|
||||
if (!REQ_ARGS(3)) {
|
||||
usage();
|
||||
return -1;
|
||||
}
|
||||
|
||||
input = GET_ARG();
|
||||
output = GET_ARG();
|
||||
|
||||
objs = (const char **) calloc(argc + 1, sizeof(*objs));
|
||||
if (!objs) {
|
||||
p_err("failed to allocate array for object names");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
while (argc)
|
||||
objs[i++] = GET_ARG();
|
||||
|
||||
err = minimize_btf(input, output, objs);
|
||||
free(objs);
|
||||
return err;
|
||||
}
|
||||
|
||||
static const struct cmd cmds[] = {
|
||||
{ "object", do_object },
|
||||
{ "skeleton", do_skeleton },
|
||||
{ "help", do_help },
|
||||
{ "object", do_object },
|
||||
{ "skeleton", do_skeleton },
|
||||
{ "min_core_btf", do_min_core_btf},
|
||||
{ "help", do_help },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user