lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK7LNAQBG0nDupXSgAAk-6nOqeqGVkr3H1RjYaqRJ1OxmLm6xA@mail.gmail.com>
Date: Sat, 10 Aug 2024 02:31:08 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: Miguel Ojeda <ojeda@...nel.org>
Cc: Alex Gaynor <alex.gaynor@...il.com>, Wedson Almeida Filho <wedsonaf@...il.com>, 
	Boqun Feng <boqun.feng@...il.com>, Gary Guo <gary@...yguo.net>, 
	Björn Roy Baron <bjorn3_gh@...tonmail.com>, 
	Benno Lossin <benno.lossin@...ton.me>, Andreas Hindborg <a.hindborg@...sung.com>, 
	Alice Ryhl <aliceryhl@...gle.com>, rust-for-linux@...r.kernel.org, 
	Nathan Chancellor <nathan@...nel.org>, Nicolas Schier <nicolas@...sle.eu>, linux-kbuild@...r.kernel.org, 
	linux-kernel@...r.kernel.org, patches@...ts.linux.dev
Subject: Re: [PATCH 5/6] kbuild: rust: replace proc macros dependency on
 `core.o` with the version text

On Fri, Aug 9, 2024 at 7:12 AM Miguel Ojeda <ojeda@...nel.org> wrote:
>
> With the `RUSTC_VERSION_TEXT` rebuild support in place, now proc macros
> can depend on that instead of `core.o`.
>
> This means that both the `core` and `macros` crates can be built in
> parallel, and that touching `core.o` does not trigger a rebuild of the
> proc macros.
>
> Signed-off-by: Miguel Ojeda <ojeda@...nel.org>
> ---
>  rust/Makefile | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/rust/Makefile b/rust/Makefile
> index 966743a9ee25..40c8d2c57024 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -329,9 +329,8 @@ quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@
>                 --crate-name $(patsubst lib%.so,%,$(notdir $@)) $<
>
>  # Procedural macros can only be used with the `rustc` that compiled it.
> -# Therefore, to get `libmacros.so` automatically recompiled when the compiler
> -# version changes, we add `core.o` as a dependency (even if it is not needed).
> -$(obj)/libmacros.so: $(src)/macros/lib.rs $(obj)/core.o FORCE
> +$(obj)/libmacros.so: $(src)/macros/lib.rs \
> +    $(wildcard $(objtree)/include/config/RUSTC_VERSION_TEXT) FORCE
>         +$(call if_changed_dep,rustc_procmacro)



The touched file, include/config/*, is an implementation detail
in Kconfig and fixdep.


Rather, I'd like to put the string "CONFIG_RUST_VERSION_TEXT"
in the comment of the source file.

This is the idea adopted in include/linux/compiler-version.h



diff --git a/rust/macros/lib.rs b/rust/macros/lib.rs
index 5be0cb9db3ee..91be2112ceee 100644
--- a/rust/macros/lib.rs
+++ b/rust/macros/lib.rs
@@ -2,6 +2,10 @@

 //! Crate for all kernel procedural macros.

+// When fixdep scans this, it will find this string "CONFIG_RUSTC_VERSION_TEXT"
+// and add dependency on include/config/RUSTC_VERSION_TEXT, which is touched
+// by Kconfig when the version string from the compiler changes.
+
 #[macro_use]
 mod quote;
 mod concat_idents;






I do not know how to do it for rust/core.o because there is no in-tree
source file.

But, can we add rust/core.rs, from which
rustlib/src/rust/library/core/src/macros/mod.rs is imported?








>
>  quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L $@
> --
> 2.46.0
>
>


-- 
Best Regards
Masahiro Yamada

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ