linux-yocto/rust/bindgen_parameters
Gary Guo 732cd686cd rust: fix ARCH_SLAB_MINALIGN multiple definition error
We use const helpers in form of

    const size_t RUST_CONST_HELPER_ARCH_SLAB_MINALIGN = ARCH_SLAB_MINALIGN;

to aid generation of constants by bindgen because it is otherwise a
macro definition of an expression and bindgen doesn't expand the
constant. The helpers are then have `RUST_CONST_HELPER` prefix stripped
and exposed to Rust code as if `ARCH_SLAB_MISALIGN` is generated
natively by bindgen.

This works well for most constants, but on RISC-V, `ARCH_SLAB_MINALIGN`
is defined directly as literal constant if `!CONFIG_MMU`, and bindgen
would generate `ARCH_SLAB_MINALIGN` directly, thus conflict with the
one generated through the helper.

To fix this, we simply need to block bindgen from generating directly
without going through helper.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202409160804.eSg9zh1e-lkp@intel.com/
Signed-off-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Christian Schrefl <chrisi.schrefl@gmail.com>
Link: https://lore.kernel.org/r/20240916003347.1744345-1-gary@garyguo.net
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2024-09-26 17:52:35 +02:00

1.1 KiB

SPDX-License-Identifier: GPL-2.0

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