Re: [PATCH] rust: rust_is_available: warn for `bindgen` < 0.72.1 && libclang >= 22
Miguel Ojeda <[email protected]> Mon, 3 Aug 2026 14:09:25 +0200
| Newsgroups | gmane.linux.kbuild.devel,gmane.linux.kernel.rust |
|---|---|
| Message-ID | <CANiq72mKE66OthZ7hEfxqig7+9ePmdv+xSWQ4uMSZDhW-qt8DA@mail.gmail.com> |
On Sun, Jul 19, 2026 at 2:05=E2=80=AFPM Miguel Ojeda <[email protected]> wro= te: > > Starting with LLVM 22, `clang_getTypeDeclaration()` may return a forward > declaration instead of the type definition. This made `bindgen` generate > opaque types [1][2], which in turn made us fail with e.g. > > error[E0609]: no field `__bindgen_anon_1` on type `bindings::kernel_p= aram` > --> rust/kernel/module_param.rs:78:46 > | > 78 | let container =3D unsafe { &*((*param).__bindgen_anon_1.= arg.cast::<SetOnce<T>>()) }; > | ^^^^^^^^^^^^^^^^ un= known field > | > =3D note: available field is: `_address` > > This was fixed in `bindgen` 0.72.1 [3]. > > In order to clarify what is going on and avoid confusion [4][5], add > a warning to `rust_is_available.sh` about it when the versions match, > similar to past warnings like the one removed in: > > commit ae64324ad5c1 ("rust: rust_is_available: remove warning for `bind= gen` < 0.69.5 && libclang >=3D 19.1") > > In addition, even if the versions match, check if the issue appears to > not reproduce with the given binaries, to avoid a warning in such a case. > > Finally, include tests. > > Link: https://github.com/rust-lang/rust-bindgen/issues/3264 [1] > Link: https://github.com/Rust-for-Linux/linux/issues/353 [2] # "Missing f= ields in nested class with LLVM 22." > Link: https://github.com/rust-lang/rust-bindgen/pull/3278 [3] > Reported-by: Burak Emir <[email protected]> > Link: https://github.com/Rust-for-Linux/linux/issues/1247 [4] > Link: https://lore.kernel.org/rust-for-linux/CABwQupNfMAJOGqRM9ke6tj4f53d= [email protected]/ [5] > Signed-off-by: Miguel Ojeda <[email protected]> Applied to `rust-next` -- thanks everyone! [ Nathan, in parallel, updated the instructions of the LLVM+Rust kernel.org toolchains [6] so that `--version` is not passed to `cargo` for `bindgen`, and thus the latest `bindgen` is installed by default, which should help to avoid some of these situations. Thanks! - Miguel ] Cc: [email protected] # Needed in 6.12.y and later (Rust is pinned in older LTSs). Link: https://mirrors.edge.kernel.org/pub/tools/llvm/rust/ [6] Cheers, Miguel