Hi. Le mardi 12 juillet 2022, 22:47:40 CEST sdf@xxxxxxxxxx a écrit : > On 07/12, Francis Laniel wrote: > > This commit adds the following lines to file generated by dump: > > /* > > > > * File generated by bpftool using: > > * bpftool btf dump file /sys/kernel/btf/vmlinux format c > > * DO NOT EDIT. > > */ > > > > This warns users to not edit the file and documents the command used to > > generate the file. > > > > Signed-off-by: Francis Laniel <flaniel@xxxxxxxxxxxxxxxxxxx> > > --- > > > > tools/bpf/bpftool/btf.c | 16 ++++++++++++++-- > > 1 file changed, 14 insertions(+), 2 deletions(-) > > > > diff --git a/tools/bpf/bpftool/btf.c b/tools/bpf/bpftool/btf.c > > index 7e6accb9d9f7..eecfc27370c3 100644 > > --- a/tools/bpf/bpftool/btf.c > > +++ b/tools/bpf/bpftool/btf.c > > @@ -415,7 +415,8 @@ static void __printf(2, 0) btf_dump_printf(void *ctx, > > > > } > > > > static int dump_btf_c(const struct btf *btf, > > > > - __u32 *root_type_ids, int root_type_cnt) > > + __u32 *root_type_ids, int root_type_cnt, > > + int argc, char **argv) > > > > { > > > > struct btf_dump *d; > > int err = 0, i; > > > > @@ -425,6 +426,14 @@ static int dump_btf_c(const struct btf *btf, > > > > if (err) > > > > return err; > > > > + printf("/*\n"); > > + printf(" * File generated by bpftool using:\n"); > > + printf(" * bpftool btf dump"); > > [..] > > > + for (i = 0; i < argc; i++) > > + printf(" %s", argv[i]); > > Do we really need that complexity to preserve the arguments? I was also a bit sceptickal when I first wrote as I found this code a bit complex for not so much added value. But in my case, I do not use bpftool often, so having the command documented in the generated file would have been useful. I will just find another way to document (or I think now I will not forget it anymore since this series). > For skeletons we're simply doing: > > /* THIS FILE IS AUTOGENERATED BY BPFTOOL! */ > > So probably the same should be fine here? > > Also, while at it, might be worth adding SPDX license comment? So let's > align with whatever we have in gen.c ? I will send a v2 aligned on skeletons in no more than 15 minutes. > > + printf("\n"); > > + printf(" * DO NOT EDIT.\n"); > > + printf(" */\n"); > > > > printf("#ifndef __VMLINUX_H__\n"); > > printf("#define __VMLINUX_H__\n"); > > printf("\n"); > > > > @@ -507,8 +516,10 @@ static bool btf_is_kernel_module(__u32 btf_id) > > > > static int do_dump(int argc, char **argv) > > { > > > > struct btf *btf = NULL, *base = NULL; > > > > + char **orig_argv = argv; > > > > __u32 root_type_ids[2]; > > int root_type_cnt = 0; > > > > + int orig_argc = argc; > > > > bool dump_c = false; > > __u32 btf_id = -1; > > const char *src; > > > > @@ -649,7 +660,8 @@ static int do_dump(int argc, char **argv) > > > > err = -ENOTSUP; > > goto done; > > > > } > > > > - err = dump_btf_c(btf, root_type_ids, root_type_cnt); > > + err = dump_btf_c(btf, root_type_ids, root_type_cnt, > > + orig_argc, orig_argv); > > > > } else { > > > > err = dump_btf_raw(btf, root_type_ids, root_type_cnt); > > > > } > > > > -- > > 2.25.1 Best regards.