Rename whitelist -> allowlist and blacklist -> blocklist by hlopko · Pull Request #1990 · rust-lang/rust-bindgen (original) (raw)
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation15 Commits1 Checks0 Files changed
Conversation
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
[ Show hidden characters]({{ revealButtonHref }})
To stay backwards compatible:
- For the command line arguments I added aliases to old flag spellings
- For the Builder methods I changed old methods to forward to new ones + marked them as deprecated.
Fixes on #1812.
- These commits modify unsafe code. Please review it carefully!
Presubmits failures are (hopefully) being addressed in #1991.
Was your intent to submit a separate PR for blacklist
-> blocklist
? That might be reasonable; it just did not seem explicit, and it would not be desirable to leave things half-done by merging only one such PR.
Oh yes, that was my intent. I'm happy to extend this PR to also cover the blocklist if that's preferable. I also wanted to check in with owners to see if my approach is sane and PR has a chance to be merged.
I'm happy to extend this PR to also cover the blocklist if that's preferable.
I am not personally going to express an opinion in this case -- I just wanted to make sure we captured the approach one way or another. @emilio is the one whose opinions count. Thank you for clarifying, @hlopko.
This looks great, thanks! Merging both renames at the same time seems better, at least during the same release. If you want to submit the second patch doing the blacklist rename that'd be great, either on this PR or in another.
I'm very confused about the test failures, master is green, so something is clearly off... Maybe the CI environment changed somehow?
Tests on clang 11 are passing for me on Linux... Are you on mac by any chance?
I've updated this PR to include the blacklist->blocklist change.
I'll try to investigate what is going on with tests. They also fail for me locally. I'm on linux, AFAIK on llvm-11 (but I'll double check).
Thanks for reviewing! :)
hlopko changed the title
Rename whitelist -> allowlist Rename whitelist -> allowlist and blacklist -> blocklist
With the #1996 I can run cargo test
locally and get a fully green run. I still don't know what changed on the CI. Is it possible that #1996 will fix that too?
Can you rebase on top of master to see if that's the case? #1996 was green on CI so maybe it does :)
For the commandline arguments I added undocumented aliases to old flags, to stay backwards compatible.
Also renamed test file names.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, sorry, I looked at this while CI was still running and forgot. Thanks a lot for doing this again!
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
cthbleachbit pushed a commit to AOSC-Tracking/linux that referenced this pull request
In LLVM 16, anonymous items may return names like (unnamed union at ..)
rather than empty names [1], which breaks Rust-enabled builds because
bindgen assumed an empty name instead of detecting them via
clang_Cursor_isAnonymous
[2]:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
This was fixed in bindgen 0.62.0. Therefore, upgrade bindgen to a more recent version, 0.65.1, to support LLVM 16.
Since bindgen 0.58.0 changed the --{white,black}list-*
flags to
--{allow,block}list-*
[3], update them on our side too.
In addition, bindgen 0.61.0 moved its CLI utility into a binary crate
called bindgen-cli
[4]. Thus update the installation command in the
Quick Start guide.
Moreover, bindgen 0.61.0 changed the default functionality to bind
size_t
to usize
[5] and added the --no-size_t-is-usize
flag
to not bind size_t
as usize
. Then bindgen 0.65.0 removed
the --size_t-is-usize
flag [6]. Thus stop passing the flag to bindgen.
Finally, bindgen 0.61.0 added support for the noreturn
attribute (in
its different forms) [7]. Thus remove the infinite loop in our Rust
panic handler after calling BUG()
, since bindgen now correctly
generates a BUG()
binding that returns !
instead of ()
.
Link: llvm/llvm-project@19e984e [1]
Link: rust-lang/rust-bindgen#2319 [2]
Link: rust-lang/rust-bindgen#1990 [3]
Link: rust-lang/rust-bindgen#2284 [4]
Link: rust-lang/rust-bindgen@cc78b6f [5]
Link: rust-lang/rust-bindgen#2408 [6]
Link: rust-lang/rust-bindgen#2094 [7]
Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com
Closes: Rust-for-Linux#1013
Tested-by: Ariel Miculas amiculas@cisco.com
Reviewed-by: Gary Guo gary@garyguo.net
Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com
[ Reworded commit message. Mentioned the bindgen-cli
binary crate
change, linked to it and updated the Quick Start guide. Re-added a
deleted "as" word in a code comment and reflowed comment to respect
the maximum length. ]
Signed-off-by: Miguel Ojeda ojeda@kernel.org
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
chessturo pushed a commit to chessturo/linux that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
cthbleachbit pushed a commit to AOSC-Tracking/linux that referenced this pull request
In LLVM 16, anonymous items may return names like (unnamed union at ..)
rather than empty names [1], which breaks Rust-enabled builds because
bindgen assumed an empty name instead of detecting them via
clang_Cursor_isAnonymous
[2]:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
This was fixed in bindgen 0.62.0. Therefore, upgrade bindgen to a more recent version, 0.65.1, to support LLVM 16.
Since bindgen 0.58.0 changed the --{white,black}list-*
flags to
--{allow,block}list-*
[3], update them on our side too.
In addition, bindgen 0.61.0 moved its CLI utility into a binary crate
called bindgen-cli
[4]. Thus update the installation command in the
Quick Start guide.
Moreover, bindgen 0.61.0 changed the default functionality to bind
size_t
to usize
[5] and added the --no-size_t-is-usize
flag
to not bind size_t
as usize
. Then bindgen 0.65.0 removed
the --size_t-is-usize
flag [6]. Thus stop passing the flag to bindgen.
Finally, bindgen 0.61.0 added support for the noreturn
attribute (in
its different forms) [7]. Thus remove the infinite loop in our Rust
panic handler after calling BUG()
, since bindgen now correctly
generates a BUG()
binding that returns !
instead of ()
.
Link: llvm/llvm-project@19e984e [1]
Link: rust-lang/rust-bindgen#2319 [2]
Link: rust-lang/rust-bindgen#1990 [3]
Link: rust-lang/rust-bindgen#2284 [4]
Link: rust-lang/rust-bindgen@cc78b6f [5]
Link: rust-lang/rust-bindgen#2408 [6]
Link: rust-lang/rust-bindgen#2094 [7]
Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com
Closes: Rust-for-Linux#1013
Tested-by: Ariel Miculas amiculas@cisco.com
Reviewed-by: Gary Guo gary@garyguo.net
Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com
[ Reworded commit message. Mentioned the bindgen-cli
binary crate
change, linked to it and updated the Quick Start guide. Re-added a
deleted "as" word in a code comment and reflowed comment to respect
the maximum length. ]
Signed-off-by: Miguel Ojeda ojeda@kernel.org
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
vtta pushed a commit to vtta/linux-archive that referenced this pull request
In LLVM 16, anonymous items may return names like (unnamed union at ..)
rather than empty names [1], which breaks Rust-enabled builds because
bindgen assumed an empty name instead of detecting them via
clang_Cursor_isAnonymous
[2]:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
This was fixed in bindgen 0.62.0. Therefore, upgrade bindgen to a more recent version, 0.65.1, to support LLVM 16.
Since bindgen 0.58.0 changed the --{white,black}list-*
flags to
--{allow,block}list-*
[3], update them on our side too.
In addition, bindgen 0.61.0 moved its CLI utility into a binary crate
called bindgen-cli
[4]. Thus update the installation command in the
Quick Start guide.
Moreover, bindgen 0.61.0 changed the default functionality to bind
size_t
to usize
[5] and added the --no-size_t-is-usize
flag
to not bind size_t
as usize
. Then bindgen 0.65.0 removed
the --size_t-is-usize
flag [6]. Thus stop passing the flag to bindgen.
Finally, bindgen 0.61.0 added support for the noreturn
attribute (in
its different forms) [7]. Thus remove the infinite loop in our Rust
panic handler after calling BUG()
, since bindgen now correctly
generates a BUG()
binding that returns !
instead of ()
.
Link: llvm/llvm-project@19e984e [1]
Link: rust-lang/rust-bindgen#2319 [2]
Link: rust-lang/rust-bindgen#1990 [3]
Link: rust-lang/rust-bindgen#2284 [4]
Link: rust-lang/rust-bindgen@cc78b6f [5]
Link: rust-lang/rust-bindgen#2408 [6]
Link: rust-lang/rust-bindgen#2094 [7]
Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com
Closes: Rust-for-Linux#1013
Tested-by: Ariel Miculas amiculas@cisco.com
Reviewed-by: Gary Guo gary@garyguo.net
Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com
[ Reworded commit message. Mentioned the bindgen-cli
binary crate
change, linked to it and updated the Quick Start guide. Re-added a
deleted "as" word in a code comment and reflowed comment to respect
the maximum length. ]
Signed-off-by: Miguel Ojeda ojeda@kernel.org
ishitatsuyuki pushed a commit to ishitatsuyuki/linux that referenced this pull request
In LLVM 16, anonymous items may return names like (unnamed union at ..)
rather than empty names [1], which breaks Rust-enabled builds because
bindgen assumed an empty name instead of detecting them via
clang_Cursor_isAnonymous
[2]:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
This was fixed in bindgen 0.62.0. Therefore, upgrade bindgen to a more recent version, 0.65.1, to support LLVM 16.
Since bindgen 0.58.0 changed the --{white,black}list-*
flags to
--{allow,block}list-*
[3], update them on our side too.
In addition, bindgen 0.61.0 moved its CLI utility into a binary crate
called bindgen-cli
[4]. Thus update the installation command in the
Quick Start guide.
Moreover, bindgen 0.61.0 changed the default functionality to bind
size_t
to usize
[5] and added the --no-size_t-is-usize
flag
to not bind size_t
as usize
. Then bindgen 0.65.0 removed
the --size_t-is-usize
flag [6]. Thus stop passing the flag to bindgen.
Finally, bindgen 0.61.0 added support for the noreturn
attribute (in
its different forms) [7]. Thus remove the infinite loop in our Rust
panic handler after calling BUG()
, since bindgen now correctly
generates a BUG()
binding that returns !
instead of ()
.
Link: llvm/llvm-project@19e984e [1]
Link: rust-lang/rust-bindgen#2319 [2]
Link: rust-lang/rust-bindgen#1990 [3]
Link: rust-lang/rust-bindgen#2284 [4]
Link: rust-lang/rust-bindgen@cc78b6f [5]
Link: rust-lang/rust-bindgen#2408 [6]
Link: rust-lang/rust-bindgen#2094 [7]
Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com
Closes: Rust-for-Linux#1013
Tested-by: Ariel Miculas amiculas@cisco.com
Reviewed-by: Gary Guo gary@garyguo.net
Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com
[ Reworded commit message. Mentioned the bindgen-cli
binary crate
change, linked to it and updated the Quick Start guide. Re-added a
deleted "as" word in a code comment and reflowed comment to respect
the maximum length. ]
Signed-off-by: Miguel Ojeda ojeda@kernel.org
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com
herrnst pushed a commit to herrnst/linux-asahi that referenced this pull request
- Rationale:
Upgrades bindgen to code-generation for anonymous unions, structs, and enums [7] for LLVM-16 based toolchains.
The following upgrade also incorporates noreturn
support from bindgen
allowing us to remove useless loop
calls which was placed as a
workaround.
- Truncated build logs on using bindgen
v0.56.0
prior to LLVM-16 toolchain:
$ make rustdoc LLVM=1 CLIPPY=1 -j$(nproc)
RUSTC L rust/core.o
BINDGEN rust/bindings/bindings_generated.rs
BINDGEN rust/bindings/bindings_helpers_generated.rs
BINDGEN rust/uapi/uapi_generated.rs
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
thread 'main' panicked at '"ftrace_branch_data_union_(anonymous_at__/_/include/linux/compiler_types_h_146_2)" is not a valid Ident', .../proc-macro2-1.0.24/src/fallback.rs:693:9
...
- LLVM-16 Changes:
API changes [1] were introduced such that libclang would emit names like "(unnamed union at compiler_types.h:146:2)" for unnamed unions, structs, and enums whereas it previously returned an empty string.
- Bindgen Changes:
Bindgen v0.56.0
on LLVM-16 based toolchains hence was unable to process the
anonymous union in include/linux/compiler_types
struct ftrace_branch_data
and caused subsequent panics as the new libclang
API emitted name was not
being handled. The following issue was fixed in Bindgen v0.62.0
[2].
Bindgen v0.58.0
changed the flags --whitelist-*
and --blacklist-*
to --allowlist-*
and --blocklist-*
respectively [3].
Bindgen v0.61.0
added support for _Noreturn
, [[noreturn]]
, __attribute__((noreturn))
[4],
hence the empty loop
s used to circumvent bindgen returning !
in place of ()
for noreturn attributes have been removed completely.
Bindgen v0.61.0
also changed default functionality to bind size_t
to usize
[5] and
added the --no-size_t-is-usize
[5] flag to not bind size_t
as usize
.
Bindgen v0.65.0
removed --size_t-is-usize
flag [6].
Link: llvm/llvm-project@19e984e [1] Link: rust-lang/rust-bindgen#2319 [2] Link: rust-lang/rust-bindgen#1990 [3] Link: rust-lang/rust-bindgen#2094 [4] Link: rust-lang/rust-bindgen@cc78b6f [5] Link: rust-lang/rust-bindgen#2408 [6] Closes: Rust-for-Linux/linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Reviewed-by: Gary Guo gary@garyguo.net Tested-by: Ariel Miculas amiculas@cisco.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [boqun: resolve conflicts because of Rust version bump] Signed-off-by: Boqun Feng boqun.feng@gmail.com