Remove deprecated flags by pvdrz · Pull Request #2408 · rust-lang/rust-bindgen (original) (raw)

pvdrz

@pvdrz

@pvdrz pvdrz deleted the remove-deprecated-cli-args branch

February 9, 2023 16:16

G1gg1L3s added a commit to G1gg1L3s/themis that referenced this pull request

May 25, 2023

@G1gg1L3s

G1gg1L3s added a commit to G1gg1L3s/themis that referenced this pull request

May 25, 2023

@G1gg1L3s

G1gg1L3s added a commit to cossacklabs/themis that referenced this pull request

May 26, 2023

@G1gg1L3s @shadinua

They were removed in the 0.65.0 1.

Co-authored-by: Dmytro Shapovalov shad@ixqt.net


Co-authored-by: Dmytro Shapovalov shad@ixqt.net

intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this pull request

Jun 12, 2023

@Shinyzenith @intel-lab-lkp

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

ojeda pushed a commit to ojeda/linux that referenced this pull request

Jun 12, 2023

@Shinyzenith @ojeda

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] Reported-by: Josh Poimboeuf jpoimboe@kernel.org Closes: https://lore.kernel.org/rust-for-linux/20230606215212.r7if2gsynajugf6j@treble/ Reported-by: Aakash Sen Sharma aakashsensharma@gmail.com Closes: Rust-for-Linux#1013 [7] Signed-off-by: Aakash Sen Sharma aakashsensharma@gmail.com Link: https://lore.kernel.org/r/20230612194311.24826-1-aakashsensharma@gmail.com [ Reword, add Josh's report and update Quick Start guide. ] Signed-off-by: Miguel Ojeda ojeda@kernel.org

fbq pushed a commit to Rust-for-Linux/linux that referenced this pull request

Jun 26, 2023

@Shinyzenith @fbq

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: #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

heiher pushed a commit to heiher/linux that referenced this pull request

Jun 27, 2023

@Shinyzenith @heiher

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

heiher pushed a commit to heiher/linux that referenced this pull request

Jun 28, 2023

@Shinyzenith @heiher

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

fbq pushed a commit to Rust-for-Linux/linux that referenced this pull request

Jun 30, 2023

@Shinyzenith @fbq

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: #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

fbq pushed a commit to Rust-for-Linux/linux that referenced this pull request

Jul 24, 2023

@Shinyzenith @fbq

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: #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

heiher pushed a commit to heiher/linux that referenced this pull request

Jul 26, 2023

@Shinyzenith @heiher

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

fbq pushed a commit to Rust-for-Linux/linux that referenced this pull request

Jul 31, 2023

@Shinyzenith @fbq

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: #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

fbq pushed a commit to fbq/linux that referenced this pull request

Aug 8, 2023

@Shinyzenith @fbq

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

Aug 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

fbq pushed a commit to Rust-for-Linux/linux that referenced this pull request

Aug 10, 2023

@Shinyzenith @fbq

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: #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 12, 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 12, 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 12, 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 12, 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

ojeda pushed a commit to Rust-for-Linux/linux that referenced this pull request

Aug 14, 2023

@Shinyzenith @ojeda

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: #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 16, 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 16, 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 16, 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 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