On Wed, Mar 12, 2025 at 6:38 PM Benno Lossin benno.lossin@proton.me wrote:
On Wed Mar 12, 2025 at 11:24 PM CET, Tamir Duberstein wrote:
On Wed, Mar 12, 2025 at 5:30 PM Benno Lossin benno.lossin@proton.me wrote:
On Wed Mar 12, 2025 at 10:10 PM CET, Tamir Duberstein wrote:
On Wed, Mar 12, 2025 at 5:04 PM Tamir Duberstein tamird@gmail.com wrote:
On Wed, Mar 12, 2025 at 5:01 PM Benno Lossin benno.lossin@proton.me wrote:
Always enable the features, we have `allow(stable_features)` for this reason (then you don't have to do this dance with checking if it's already stable or not :)
It's not so simple. In rustc < 1.84.0 the lints *and* the strict provenance APIs are behind `feature(strict_provenance)`. In rustc >= 1.84.0 the lints are behind `feature(strict_provenance_lints)`. So you need to read the config to learn that you need to enable `feature(strict_provenance_lints)`.
I see... And `strict_provenance_lints` doesn't exist in <1.84? That's a bit of a bummer...
But I guess we could have this config option (in `init/Kconfig`):
config RUSTC_HAS_STRICT_PROVENANCE def_bool RUSTC_VERSION >= 108400
and then do this in `lib.rs`:
#![cfg_attr(CONFIG_RUSTC_HAS_STRICT_PROVENANCE, feature(strict_provenance_lints))]
Yep! That's exactly what I did, but as I mentioned up-thread, the result is that we only cover the `kernel` crate.
Ah I see, can't we just have the above line in the other crate roots?
The most difficult case is doctests. You'd have to add this to every example AFAICT.
Actually this isn't even the only problem. It seems that `-Astable_features` doesn't affect features enabled on the command line at all:
error[E0725]: the feature `strict_provenance` is not in the list of allowed features --> <crate attribute>:1:9 | 1 | feature(strict_provenance) | ^^^^^^^^^^^^^^^^^
That's because you need to append the feature to `rust_allowed_features` in `scripts/Makefile.build` (AFAIK).
Thanks, that's a helpful pointer, and it solves some problems but not all. The root Makefile contains this bit:
KBUILD_HOSTRUSTFLAGS := $(rust_common_flags) -O -Cstrip=debuginfo \ -Zallow-features= $(HOSTRUSTFLAGS)
which means we can't use the provenance lints against these host targets (including e.g. `rustdoc_test_gen`). We can't remove this -Zallow-features= either because then core fails to compile.
I'm at the point where I think I need more involved help. Want to take a look at my attempt? It's here: https://github.com/tamird/linux/tree/b4/ptr-as-ptr.
I'll take a look tomorrow, you're testing my knowledge of the build system a lot here :)
We're guaranteed to learn something :)