Re: [PATCH v4 1/2] rust: Refactor the build target to allow the use of builtin targets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

On Mon, Jan 22, 2024 at 5:17 PM Trevor Gross <tmgross@xxxxxxxxx> wrote:
>
> On Fri, Oct 20, 2023 at 10:59 AM Jamie Cunliffe <Jamie.Cunliffe@xxxxxxx> wrote:
> >
> > Eventually we want all architectures to be using the target as defined
> > by rustc. However currently some architectures can't do that and are
> > using the target.json specification. This puts in place the foundation
> > to allow the use of the builtin target definition or a target.json
> > specification.
> >
> > Signed-off-by: Jamie Cunliffe <Jamie.Cunliffe@xxxxxxx>
> > ---
> >  Makefile          | 1 -
> >  arch/x86/Makefile | 1 +
> >  rust/Makefile     | 5 ++++-
> >  scripts/Makefile  | 4 +++-
> >  4 files changed, 8 insertions(+), 3 deletions(-)
>
> Adding LoongArch maintainers - this patch will need a small update to
> arch/loongarch/Makefile similar to the change in arch/x86/Makefile
> (included below), since that support is now in-tree and uses
> generate_rust_target [1]. Also a very minor conflict in docs at patch
> 2/2.
>
> I believe this patchset is still waiting on an ack from the kbuild
> team. Series at [2] for reference.
>
> Thanks,
> Trevor
>
> [1]: https://lore.kernel.org/rust-for-linux/20240108032117.215171-1-wangrui@xxxxxxxxxxx/
> [2]: https://lore.kernel.org/rust-for-linux/20231020155056.3495121-1-Jamie.Cunliffe@xxxxxxx/

I can confirm that the fix patch [2], based on patch [1], is suitable
for LoongArch. LoongArch encounters no issues when using the built-in
`loongarch64-unknown-none-softfloat` target. Once patch [1] is merged
into the mainline, I'll send a patch to switch to using the built-in
target.

Thanks,
Rui

[1]: https://lore.kernel.org/rust-for-linux/20231020155056.3495121-1-Jamie.Cunliffe@xxxxxxx/
[2]: https://github.com/heiher/linux/commit/c504d83a6edd963e2ba58ec538e3f06da78b187e.patch

>
> > diff --git a/Makefile b/Makefile
> > index 88ebf6547964..23100f193da3 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -566,7 +566,6 @@ KBUILD_CFLAGS += -fno-strict-aliasing
> >
> >  KBUILD_CPPFLAGS := -D__KERNEL__
> >  KBUILD_RUSTFLAGS := $(rust_common_flags) \
> > -                   --target=$(objtree)/scripts/target.json \
> >                     -Cpanic=abort -Cembed-bitcode=n -Clto=n \
> >                     -Cforce-unwind-tables=n -Ccodegen-units=1 \
> >                     -Csymbol-mangling-version=v0 \
> > diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> > index 5bfe5caaa444..0f339d4abd40 100644
> > --- a/arch/x86/Makefile
> > +++ b/arch/x86/Makefile
> > @@ -68,6 +68,7 @@ export BITS
> >  #    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383
> >  #
> >  KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx
> > +KBUILD_RUSTFLAGS += --target=$(objtree)/scripts/target.json
> >  KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2
> >
> >  ifeq ($(CONFIG_X86_KERNEL_IBT),y)
> > diff --git a/rust/Makefile b/rust/Makefile
> > index 87958e864be0..8d75a6ffe951 100644
> > --- a/rust/Makefile
> > +++ b/rust/Makefile
> > @@ -428,8 +428,11 @@ $(obj)/core.o: private skip_clippy = 1
> >  $(obj)/core.o: private skip_flags = -Dunreachable_pub
> >  $(obj)/core.o: private rustc_objcopy = $(foreach sym,$(redirect-intrinsics),--redefine-sym $(sym)=__rust$(sym))
> >  $(obj)/core.o: private rustc_target_flags = $(core-cfgs)
> > -$(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs scripts/target.json FORCE
> > +$(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
> >         $(call if_changed_dep,rustc_library)
> > +ifdef CONFIG_X86_64
> > +$(obj)/core.o: scripts/target.json
> > +endif
> >
> >  $(obj)/compiler_builtins.o: private rustc_objcopy = -w -W '__*'
> >  $(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE
> > diff --git a/scripts/Makefile b/scripts/Makefile
> > index 576cf64be667..c85d130a4125 100644
> > --- a/scripts/Makefile
> > +++ b/scripts/Makefile
> > @@ -11,12 +11,14 @@ hostprogs-always-$(CONFIG_MODULE_SIG_FORMAT)                += sign-file
> >  hostprogs-always-$(CONFIG_SYSTEM_EXTRA_CERTIFICATE)    += insert-sys-cert
> >  hostprogs-always-$(CONFIG_RUST_KERNEL_DOCTESTS)                += rustdoc_test_builder
> >  hostprogs-always-$(CONFIG_RUST_KERNEL_DOCTESTS)                += rustdoc_test_gen
> > -always-$(CONFIG_RUST)                                  += target.json
> >
> > +ifdef CONFIG_X86_64
> > +always-$(CONFIG_RUST)                                  += target.json
> >  filechk_rust_target = $< < include/config/auto.conf
> >
> >  $(obj)/target.json: scripts/generate_rust_target include/config/auto.conf FORCE
> >         $(call filechk,rust_target)
> > +endif
> >
> >  hostprogs += generate_rust_target
> >  generate_rust_target-rust := y
> > --
> > 2.30.2
> >
> >
>






[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux