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 }})

hlopko

To stay backwards compatible:

Fixes on #1812.

@highfive

warning Warning warning

@hlopko

@hlopko

Presubmits failures are (hopefully) being addressed in #1991.

@kulp

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.

@hlopko

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.

@kulp

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.

@emilio

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?

@hlopko

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 hlopko changed the titleRename whitelist -> allowlist Rename whitelist -> allowlist and blacklist -> blocklist

Feb 15, 2021

@hlopko

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?

@emilio

Can you rebase on top of master to see if that's the case? #1996 was green on CI so maybe it does :)

emilio

@hlopko

For the commandline arguments I added undocumented aliases to old flags, to stay backwards compatible.

@hlopko

Also renamed test file names.

@hlopko

emilio

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

Aug 17, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Aug 18, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Aug 23, 2023

@Shinyzenith @cthbleachbit

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

Aug 23, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Aug 27, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Aug 27, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Aug 27, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Aug 29, 2023

@Shinyzenith @chessturo

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.

$ 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
...

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 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 loops 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

Aug 31, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 2, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 2, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 7, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 7, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 13, 2023

@Shinyzenith @cthbleachbit

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

Sep 14, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 14, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 20, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 24, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Sep 29, 2023

@Shinyzenith @vtta

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

Oct 6, 2023

@Shinyzenith @ishitatsuyuki

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

Oct 6, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Oct 10, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Oct 11, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Oct 20, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Oct 20, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Nov 2, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Nov 2, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Nov 9, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Nov 14, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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

Nov 18, 2023

@Shinyzenith @herrnst

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.

$ 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
...

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 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 loops 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