Re: Build: arm rustgcc unknown argument '-mno-fdpic'

From: Naresh Kamboju
Date: Tue Apr 15 2025 - 07:42:58 EST


Hey Christian, Miguel,

On Tue, 8 Apr 2025 at 00:07, Miguel Ojeda <ojeda@xxxxxxxxxx> wrote:
>
> On Mon, 07 Apr 2025 22:58:02 +0530 Naresh Kamboju <naresh.kamboju@xxxxxxxxxx> wrote:
> >
> > Regressions on arm build with config rustgcc-lkftconfig-kselftest on the
> > Linux mainline and next failed with CONFIG_RUST=y enabled.
>
> > Bad: next-20250327
> > Good: next-20250326
>
> > Unable to generate bindings: clang diagnosed error: error: unknown
> > argument: '-mno-fdpic'
>
> I assume this is the arm support, i.e. commit ccb8ce526807 ("ARM: 9441/1:
> rust: Enable Rust support for ARMv7").
>
> Clang does not seem to support `-mno-fdpic`, thus you probably need to add it to
> `bindgen_skip_c_flags` in `rust/Makefile` so that it gets skipped when the C
> compiler is GCC.
>
> If you do so, please double-check if the flag could potentially alter the ABI in
> a way that `bindgen` would generate the wrong bindings.

I tested this idea and it works but I don't know enough about
rust to double-check if the flag could potentially alter the
ABI in a way that `bindgen` would generate the wrong bindings.

diff --git a/rust/Makefile b/rust/Makefile
index 3aca903a7d08..f207ba0ed466 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -273,7 +273,7 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387
-mpreferred-stack-boundary=% \
-fzero-call-used-regs=% -fno-stack-clash-protection \
-fno-inline-functions-called-once -fsanitize=bounds-strict \
-fstrict-flex-arrays=% -fmin-function-alignment=% \
- -fzero-init-padding-bits=% \
+ -fzero-init-padding-bits=% -mno-fdpic \
--param=% --param asan-%

# Derived from `scripts/Makefile.clang`.

- Naresh

>
> I hope that helps!
>
> Cheers,
> Miguel