rust: Proper bindgen sources for BTF debug builds #835
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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, resultingBTF_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 infile_operations
has a const pointer, a vtable inrust/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 thekernel
crate.See this Zulip thread for context.