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
|
esac
|
||||||
;;
|
;;
|
||||||
|
min_core_btf)
|
||||||
|
_filedir
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
[[ $prev == $object ]] && \
|
[[ $prev == $object ]] && \
|
||||||
COMPREPLY=( $( compgen -W 'object skeleton help' -- "$cur" ) )
|
COMPREPLY=( $( compgen -W 'object skeleton help min_core_btf' -- "$cur" ) )
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
@ -1108,6 +1108,7 @@ static int do_help(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Usage: %1$s %2$s object OUTPUT_FILE INPUT_FILE [INPUT_FILE...]\n"
|
"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 skeleton FILE [name OBJECT_NAME]\n"
|
||||||
|
" %1$s %2$s min_core_btf INPUT OUTPUT OBJECT [OBJECT...]\n"
|
||||||
" %1$s %2$s help\n"
|
" %1$s %2$s help\n"
|
||||||
"\n"
|
"\n"
|
||||||
" " HELP_SPEC_OPTIONS " |\n"
|
" " HELP_SPEC_OPTIONS " |\n"
|
||||||
@ -1118,10 +1119,45 @@ static int do_help(int argc, char **argv)
|
|||||||
return 0;
|
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[] = {
|
static const struct cmd cmds[] = {
|
||||||
{ "object", do_object },
|
{ "object", do_object },
|
||||||
{ "skeleton", do_skeleton },
|
{ "skeleton", do_skeleton },
|
||||||
{ "help", do_help },
|
{ "min_core_btf", do_min_core_btf},
|
||||||
|
{ "help", do_help },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user