• Andrea Righi's avatar
    rust: fix bindgen build error with fstrict-flex-arrays · 344b6c0a
    Andrea Righi authored
    Commit df8fc4e9 ("kbuild: Enable -fstrict-flex-arrays=3") enabled
    '-fstrict-flex-arrays=3' globally, but bindgen does not recognized this
    compiler option, triggering the following build error:
    
     error: unknown argument: '-fstrict-flex-arrays=3', err: true
    
    [ Miguel: Commit df8fc4e9 ("kbuild: Enable -fstrict-flex-arrays=3")
      did it so only conditionally (i.e. only if the C compiler supports
      it). This explains what Andrea was seeing: he was  compiling with a
      modern enough GCC, which enables the option, but with an old enough
      Clang. Andrea confirmed this was the case: he was using Clang 14 with
      GCC 13; and that Clang 15 worked for him.
    
      While it is possible to construct code (see mailing list for an
      example I came up with) where this could break, it is fairly
      contrived, and anyway GCC-built kernels with Rust enabled should
      only be used for experimentation until we get support for
      `rustc_codegen_gcc` and/or GCC Rust. So let's add this for the
      time being in case it helps somebody. ]
    
    Add '-fstrict-flex-arrays' to the list of cflags that should be ignored
    by bindgen.
    
    Fixes: df8fc4e9 ("kbuild: Enable -fstrict-flex-arrays=3")
    Signed-off-by: default avatarAndrea Righi <andrea.righi@canonical.com>
    Tested-by: default avatarGary Guo <gary@garyguo.net>
    Link: https://lore.kernel.org/r/20230815065346.131387-1-andrea.righi@canonical.comSigned-off-by: default avatarMiguel Ojeda <ojeda@kernel.org>
    344b6c0a
Makefile 19.3 KB