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.