From a2055244c15af5b90449fca15ea59b0678eb18fd Mon Sep 17 00:00:00 2001 From: Levi Zim Date: Sat, 11 Apr 2026 09:04:35 +0800 Subject: [PATCH] Enable split_debuginfo=packed/unpacked for RISC-V They are implemented in LLVM 22: https://github.com/llvm/llvm-project/issues/56642#issuecomment-4223447929 --- .../src/spec/targets/riscv32gc_unknown_linux_gnu.rs | 7 +------ .../src/spec/targets/riscv32gc_unknown_linux_musl.rs | 7 +------ .../rustc_target/src/spec/targets/riscv64_linux_android.rs | 6 +----- .../src/spec/targets/riscv64a23_unknown_linux_gnu.rs | 7 +------ .../src/spec/targets/riscv64gc_unknown_linux_gnu.rs | 7 +------ .../src/spec/targets/riscv64gc_unknown_linux_musl.rs | 7 +------ tests/run-make/split-debuginfo/rmake.rs | 7 ------- .../debuginfo-emit-llvm-ir-and-split-debuginfo.rs | 1 - 8 files changed, 6 insertions(+), 43 deletions(-) diff --git a/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_gnu.rs index c11edf7c618c2..0ee84c1d4069b 100644 --- a/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_gnu.rs +++ b/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_gnu.rs @@ -1,8 +1,4 @@ -use std::borrow::Cow; - -use crate::spec::{ - Arch, CodeModel, LlvmAbi, SplitDebuginfo, Target, TargetMetadata, TargetOptions, base, -}; +use crate::spec::{Arch, CodeModel, LlvmAbi, Target, TargetMetadata, TargetOptions, base}; pub(crate) fn target() -> Target { Target { @@ -22,7 +18,6 @@ pub(crate) fn target() -> Target { features: "+m,+a,+f,+d,+c,+zicsr,+zifencei".into(), llvm_abiname: LlvmAbi::Ilp32d, max_atomic_width: Some(32), - supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]), ..base::linux_gnu::opts() }, } diff --git a/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs index e5618ea6b20da..3d4eef239c58a 100644 --- a/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs +++ b/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs @@ -1,8 +1,4 @@ -use std::borrow::Cow; - -use crate::spec::{ - Arch, CodeModel, LlvmAbi, SplitDebuginfo, Target, TargetMetadata, TargetOptions, base, -}; +use crate::spec::{Arch, CodeModel, LlvmAbi, Target, TargetMetadata, TargetOptions, base}; pub(crate) fn target() -> Target { Target { @@ -22,7 +18,6 @@ pub(crate) fn target() -> Target { features: "+m,+a,+f,+d,+c,+zicsr,+zifencei".into(), llvm_abiname: LlvmAbi::Ilp32d, max_atomic_width: Some(32), - supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]), ..base::linux_musl::opts() }, } diff --git a/compiler/rustc_target/src/spec/targets/riscv64_linux_android.rs b/compiler/rustc_target/src/spec/targets/riscv64_linux_android.rs index 9842b9f824327..20780995e3f5f 100644 --- a/compiler/rustc_target/src/spec/targets/riscv64_linux_android.rs +++ b/compiler/rustc_target/src/spec/targets/riscv64_linux_android.rs @@ -1,8 +1,5 @@ -use std::borrow::Cow; - use crate::spec::{ - Arch, CodeModel, LlvmAbi, SanitizerSet, SplitDebuginfo, Target, TargetMetadata, TargetOptions, - base, + Arch, CodeModel, LlvmAbi, SanitizerSet, Target, TargetMetadata, TargetOptions, base, }; pub(crate) fn target() -> Target { @@ -24,7 +21,6 @@ pub(crate) fn target() -> Target { llvm_abiname: LlvmAbi::Lp64d, supported_sanitizers: SanitizerSet::ADDRESS, max_atomic_width: Some(64), - supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]), ..base::android::opts() }, } diff --git a/compiler/rustc_target/src/spec/targets/riscv64a23_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/riscv64a23_unknown_linux_gnu.rs index f9a7d307c74a3..076011193ce73 100644 --- a/compiler/rustc_target/src/spec/targets/riscv64a23_unknown_linux_gnu.rs +++ b/compiler/rustc_target/src/spec/targets/riscv64a23_unknown_linux_gnu.rs @@ -1,8 +1,4 @@ -use std::borrow::Cow; - -use crate::spec::{ - Arch, CodeModel, LlvmAbi, SplitDebuginfo, Target, TargetMetadata, TargetOptions, base, -}; +use crate::spec::{Arch, CodeModel, LlvmAbi, Target, TargetMetadata, TargetOptions, base}; pub(crate) fn target() -> Target { Target { @@ -22,7 +18,6 @@ pub(crate) fn target() -> Target { features: "+rva23u64".into(), llvm_abiname: LlvmAbi::Lp64d, max_atomic_width: Some(64), - supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]), ..base::linux_gnu::opts() }, } diff --git a/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_gnu.rs index 76c9ad65700c2..378f9977fc10b 100644 --- a/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_gnu.rs +++ b/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_gnu.rs @@ -1,8 +1,4 @@ -use std::borrow::Cow; - -use crate::spec::{ - Arch, CodeModel, LlvmAbi, SplitDebuginfo, Target, TargetMetadata, TargetOptions, base, -}; +use crate::spec::{Arch, CodeModel, LlvmAbi, Target, TargetMetadata, TargetOptions, base}; pub(crate) fn target() -> Target { Target { @@ -22,7 +18,6 @@ pub(crate) fn target() -> Target { features: "+m,+a,+f,+d,+c,+zicsr,+zifencei".into(), llvm_abiname: LlvmAbi::Lp64d, max_atomic_width: Some(64), - supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]), ..base::linux_gnu::opts() }, } diff --git a/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_musl.rs index 8ed4e09adbbfe..782d094c1c4d9 100644 --- a/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_musl.rs +++ b/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_musl.rs @@ -1,8 +1,4 @@ -use std::borrow::Cow; - -use crate::spec::{ - Arch, CodeModel, LlvmAbi, SplitDebuginfo, Target, TargetMetadata, TargetOptions, base, -}; +use crate::spec::{Arch, CodeModel, LlvmAbi, Target, TargetMetadata, TargetOptions, base}; pub(crate) fn target() -> Target { Target { @@ -22,7 +18,6 @@ pub(crate) fn target() -> Target { features: "+m,+a,+f,+d,+c,+zicsr,+zifencei".into(), llvm_abiname: LlvmAbi::Lp64d, max_atomic_width: Some(64), - supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]), ..base::linux_musl::opts() }, } diff --git a/tests/run-make/split-debuginfo/rmake.rs b/tests/run-make/split-debuginfo/rmake.rs index 0d311607a11a4..92f99cb74d784 100644 --- a/tests/run-make/split-debuginfo/rmake.rs +++ b/tests/run-make/split-debuginfo/rmake.rs @@ -44,13 +44,6 @@ // NOTE: this is a host test //@ ignore-cross-compile -// NOTE: this seems to be a host test, and testing on host `riscv64-gc-unknown-linux-gnu` reveals -// that this test is failing because of [MC: "error: A dwo section may not contain relocations" when -// building with fission + RISCV64 #56642](https://github.com/llvm/llvm-project/issues/56642). This -// test is ignored for now to unblock efforts to bring riscv64 targets to be exercised in CI, cf. -// [Enable riscv64gc-gnu testing #126641](https://github.com/rust-lang/rust/pull/126641). -//@ ignore-riscv64 (https://github.com/llvm/llvm-project/issues/56642) - // FIXME(#135531): the `Makefile` version practically didn't test `-C split-debuginfo` on Windows // at all, and lumped windows-msvc and windows-gnu together at that. //@ ignore-windows-gnu diff --git a/tests/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs b/tests/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs index 3322660d1a853..8611796501643 100644 --- a/tests/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs +++ b/tests/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs @@ -1,6 +1,5 @@ //@ build-pass //@ only-linux -//@ ignore-riscv64 On this platform `-Csplit-debuginfo=unpacked` is unstable, see #120518 // //@ compile-flags: -g --emit=llvm-ir -Csplit-debuginfo=unpacked //