linux-yocto/rust/bindgen_parameters
Gary Guo 0ea8582faa rust: map __kernel_size_t and friends also to usize/isize
commit 2fd6f55c048d0c863ffbc8590b1bd2edb5ff13e5 upstream.

Currently bindgen has special logic to recognise `size_t` and `ssize_t`
and map them to Rust `usize` and `isize`. Similarly, `ptrdiff_t` is
mapped to `isize`.

However this falls short for `__kernel_size_t`, `__kernel_ssize_t` and
`__kernel_ptrdiff_t`. To ensure that they are mapped to usize/isize
rather than 32/64 integers depending on platform, blocklist them in
bindgen parameters and manually provide their definition.

Signed-off-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Trevor Gross <tmgross@umich.edu>
Link: https://lore.kernel.org/r/20240913213041.395655-3-gary@garyguo.net
[ Formatted comment. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-03-13 13:01:48 +01:00

1.3 KiB

SPDX-License-Identifier: GPL-2.0

We want to map these types to isize/usize manually, instead of

define them as int/long depending on platform bitwidth.

--blocklist-type __kernel_s?size_t --blocklist-type __kernel_ptrdiff_t

--opaque-type xregs_state --opaque-type desc_struct --opaque-type arch_lbr_state --opaque-type local_apic

Packed type cannot transitively contain a #[repr(align)] type.

--opaque-type alt_instr --opaque-type x86_msi_data --opaque-type x86_msi_addr_lo

try is a reserved keyword since Rust 2018; solved in bindgen v0.59.2,

commit 2aed6b021680 ("context: Escape the try keyword properly").

--opaque-type kunit_try_catch

If SMP is disabled, arch_spinlock_t is defined as a ZST which triggers a Rust

warning. We don't need to peek into it anyway.

--opaque-type spinlock

seccomp's comment gets understood as a doctest

--no-doc-comments

These functions use the __preserve_most calling convention, which neither bindgen

nor Rust currently understand, and which Clang currently declares to be unstable.

--blocklist-function _list.*_report

These constants are sometimes not recognized by bindgen depending on config.

We use const helpers to aid bindgen, to avoid conflicts when constants are

recognized, block generation of the non-helper constants.

--blocklist-item ARCH_SLAB_MINALIGN