Re: [PATCH v3] rust: Kbuild: Skip -fmin-function-alignment in bindgen flags
From: Neal Gompa
Date: Thu Aug 08 2024 - 03:38:36 EST
On Wed, Aug 7, 2024 at 3:52 AM Neal Gompa <neal@xxxxxxxxx> wrote:
>
> On Wednesday, July 31, 2024 9:43:46 AM EDT Zehui Xu wrote:
> > GCC 14 recently added -fmin-function-alignment option and the
> > root Makefile uses it to replace -falign-functions when available.
> > However, this flag can cause issues when passed to the Rust
> > Makefile and affect the bindgen process. Bindgen relies on
> > libclang to parse C code, and currently does not support the
> > -fmin-function-alignment flag, leading to compilation failures
> > when GCC 14 is used.
> >
> > This patch addresses the issue by adding -fmin-function-alignment
> > to the bindgen_skip_c_flags in rust/Makefile. This prevents the
> > flag from causing compilation issues.
> >
> > Link:
> > https://lore.kernel.org/linux-kbuild/20240222133500.16991-1-petr.pavlu@suse
> > .com/ Signed-off-by: Zehui Xu <zehuixu@xxxxxxxxxx>
> > ---
> > Since -falign-functions does not affect bindgen output, we do not
> > need logic to add it back to the flags. Thanks to the community's
> > help, especially Miguel Ojeda. Hope this patch is free of problems
> > and can be submitted smoothly : )
> >
> > v1:
> > * https://lore.kernel.org/all/20240730222053.37066-1-zehuixu@xxxxxxxxxx/
> >
> > v2:
> > * Added -falign-functions to bindgen_extra_c_flags when skipping
> > -fmin-function-alignment to maintain function alignment settings in GCC 14
> > * Used reasonable length and moved email content out of the commit message
> > * Used "Link" tag instead of "Reference:" and removed empty lines between
> > tags * Specified the base commit
> > * https://lore.kernel.org/all/20240731034112.6060-1-zehuixu@xxxxxxxxxx/
> >
> > v3:
> > * Removed logic from patch v2 which adds -falign-functions
> >
> > rust/Makefile | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/rust/Makefile b/rust/Makefile
> > index 1f10f92737f2..0c8736cce64f 100644
> > --- a/rust/Makefile
> > +++ b/rust/Makefile
> > @@ -227,7 +227,7 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387
> > -mpreferred-stack-boundary=% \ -fno-reorder-blocks
> > -fno-allow-store-data-races -fasan-shadow-offset=% \
> > -fzero-call-used-regs=% -fno-stack-clash-protection \
> > -fno-inline-functions-called-once -fsanitize=bounds-strict \
> > - -fstrict-flex-arrays=% \
> > + -fstrict-flex-arrays=% -fmin-function-alignment=% \
> > --param=% --param asan-%
> >
> > # Derived from `scripts/Makefile.clang`.
> >
> > base-commit: 8400291e289ee6b2bf9779ff1c83a291501f017b
>
> Looks good to me.
>
> Reviewed-by: Neal Gompa <neal@xxxxxxxxx>
>
To add, can we get this in as a fix for Linux 6.11? I can't build
Fedora kernels with Rust stuff enabled without it since GCC 14 is
shipped in Fedora Linux 40+.
--
真実はいつも一つ!/ Always, there's only one truth!