rust: Proper bindgen sources for BTF debug builds by YakoYakoYokuYoku · Pull Request #835 · Rust-for-Linux/linux (original) (raw)

I was testing a BTF debug info build while using a patched pahole that supports excluding Rust. I've noticed that Clang 14 introduced support for the btf_type_tag attribute, resulting BTF_TYPE_TAG(value) to be expanded as so.
This is all cool and dandy, but watch what happens when bindgen is fed with functions that contains attributed const pointers (like const char __user *), bindgen discards its constness, causing that some sources that expect the param to be const failing in their compilation.
For example the write field in file_operations has a const pointer, a vtable in rust/kernel/file.rs based on said struct also uses a const pointer, but if bindgen fails to generate a proper binding it results in the failure of the compilation of the kernel crate.

See this Zulip thread for context.