Repository navigation
rust: Proper bindgen sources for BTF debug builds - #835
Merged
Merged
Conversation
Member
|
What about calling it |
Member
|
Yeah, I can reproduce the bindgen issue, opening an issue... |
As Clang 14 supports the btf_type_tag attribute and building with PAHOLE_HAS_BTF_TAG defines BTF_TYPE_TAG(value) to be __attribute__((btf_type_tag(#value))). Because of this bindgen might get confused and discards constness of attributed function parameters that are indeed const pointers (like const char __user * -> char *). This patch fixes that by passing a BINDGEN_RUN definition to bindgen that causes BTF_TYPE_TAG(value) to be defined as nothing, thus generating proper definitions for functions like write in the file_operations struct. Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
YakoYakoYokuYoku
force-pushed
the
btf-attr-bindgen
branch
from
July 23, 2022 18:07
9e5cfb2 to
f6bb7cb
Compare
Author
That was an habit from working with Shiboken, but yeah, |
Member
|
Cc @yonghong-song who introduced it |
Member
|
Thanks @YakoYakoYokuYoku! |
Author
|
You are welcome and thanks for merging too. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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_tagattribute, 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
writefield infile_operationshas a const pointer, a vtable inrust/kernel/file.rsbased 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 thekernelcrate.See this Zulip thread for context.