On 9/28/19 09:48, Stephen Kitt wrote: > This switches zero-length arrays in variable-length structs to C99 > flexible array members. GCC will then ensure that the arrays are > always the last element in the struct. > > Coccinelle: > @@ > identifier S, fld; > type T; > @@ > > struct S { > ... > - T fld[0]; > + T fld[]; > ... > }; > > Signed-off-by: Stephen Kitt <steve@xxxxxxx> > --- > Documentation/bpf/btf.rst | 2 +- > tools/lib/bpf/libbpf.c | 2 +- > tools/lib/bpf/libbpf_internal.h | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/Documentation/bpf/btf.rst b/Documentation/bpf/btf.rst > index 4d565d202ce3..24ce50fc1fc1 100644 > --- a/Documentation/bpf/btf.rst > +++ b/Documentation/bpf/btf.rst > @@ -670,7 +670,7 @@ func_info for each specific ELF section.:: > __u32 sec_name_off; /* offset to section name */ > __u32 num_info; > /* Followed by num_info * record_size number of bytes */ > - __u8 data[0]; > + __u8 data[]; > }; > > Here, num_info must be greater than 0. > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index e0276520171b..c02ea0e1a588 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -5577,7 +5577,7 @@ static struct perf_buffer *__perf_buffer__new(int map_fd, size_t page_cnt, > struct perf_sample_raw { > struct perf_event_header header; > uint32_t size; > - char data[0]; > + char data[]; > }; > > struct perf_sample_lost { > diff --git a/tools/lib/bpf/libbpf_internal.h b/tools/lib/bpf/libbpf_internal.h > index 2e83a34f8c79..26eaa3f594aa 100644 > --- a/tools/lib/bpf/libbpf_internal.h > +++ b/tools/lib/bpf/libbpf_internal.h > @@ -86,7 +86,7 @@ struct btf_ext_info_sec { > __u32 sec_name_off; > __u32 num_info; > /* Followed by num_info * record_size number of bytes */ > - __u8 data[0]; > + __u8 data[]; I think you should preserve the tab here. -- Gustavo > }; > > /* The minimum bpf_func_info checked by the loader */ >