From accd1fe76c8250a4aadfa9e372f6ba9b8e2e374c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mi=C4=85sko?= Date: Fri, 24 Oct 2025 15:40:43 +0200 Subject: [PATCH] rustdoc: Use configured target modifiers when collecting doctests To support loading dependencies with target modifiers and avoid ABI mismatch errors. --- src/librustdoc/doctest.rs | 1 + .../rustdoc-target-modifiers/rmake.rs | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index 51f79047f9914..e6b7a6bfcfb6b 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -166,6 +166,7 @@ pub(crate) fn run(dcx: DiagCtxtHandle<'_>, input: Input, options: RustdocOptions remap_path_prefix: options.remap_path_prefix.clone(), unstable_opts: options.unstable_opts.clone(), error_format: options.error_format.clone(), + target_modifiers: options.target_modifiers.clone(), ..config::Options::default() }; diff --git a/tests/run-make/rustdoc-target-modifiers/rmake.rs b/tests/run-make/rustdoc-target-modifiers/rmake.rs index ee522501fd286..ffe87f3f7650e 100644 --- a/tests/run-make/rustdoc-target-modifiers/rmake.rs +++ b/tests/run-make/rustdoc-target-modifiers/rmake.rs @@ -25,4 +25,43 @@ fn main() { .target("aarch64-unknown-none-softfloat") .arg("-Zfixed-x18") .run(); + + rustdoc() + .input("c.rs") + .crate_type("rlib") + .extern_("d", "libd.rmeta") + .target("aarch64-unknown-none-softfloat") + .arg("-Zfixed-x18") + .arg("--test") + .run(); + + rustdoc() + .input("c.rs") + .edition("2024") + .crate_type("rlib") + .extern_("d", "libd.rmeta") + .target("aarch64-unknown-none-softfloat") + .arg("-Zfixed-x18") + .arg("--test") + .run(); + + // rustdoc --test detects ABI mismatch + rustdoc() + .input("c.rs") + .crate_type("rlib") + .extern_("d", "libd.rmeta") + .target("aarch64-unknown-none-softfloat") + .arg("--test") + .run_fail() + .assert_stderr_contains("mixing `-Zfixed-x18` will cause an ABI mismatch"); + + // rustdoc --test -Cunsafe-allow-abi-mismatch=... ignores the mismatch + rustdoc() + .input("c.rs") + .crate_type("rlib") + .extern_("d", "libd.rmeta") + .target("aarch64-unknown-none-softfloat") + .arg("--test") + .arg("-Cunsafe-allow-abi-mismatch=fixed-x18") + .run(); }