Skip to content

rustup component add llvm-bitcode-linker should imply rustup component add llvm-tools #4267

Open
@usamoi

Description

@usamoi

rustup component add llvm-bitcode-linker should imply rustup component add llvm-tools. If llvm-bitcode-linker is installed but llvm-tools is not installed, linking with llvm-bitcode-linker causes confusing errors since it tries to use system llvm.

confusing errors
error: linking with `llvm-bitcode-linker` failed: exit status: 1
  |
  = note:  "llvm-bitcode-linker" "<1 object files omitted>" "<sysroot>/lib/rustlib/nvptx64-nvidia-cuda/lib/{librustc_std_workspace_core-*,libcore-*,libcompiler_builtins-*}.rlib" "-L" "/tmp/rustcnJ2SL2/raw-dylibs" "--target" "nvptx64-nvidia-cuda" "--target-cpu" "sm_30" "-L" "<sysroot>/lib/rustlib/nvptx64-nvidia-cuda/lib/self-contained" "-o" "/usamoi/playground/ru/target/nvptx64-nvidia-cuda/debug/deps/ru-f4c0ba032d0d0a83.ptx" "-O0" "--debug"
  = note: some arguments are omitted. use `--verbose` to show all linker arguments
  = note: Error: llvm-link failed to link files ["/usamoi/playground/ru/target/nvptx64-nvidia-cuda/debug/deps/ru-f4c0ba032d0d0a83.aiqzghoh0fmgtru173eaewpev.rcgu.o", "/home/usamoi/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/nvptx64-nvidia-cuda/lib/librustc_std_workspace_core-3fd0694f720b1c16.rlib", "/home/usamoi/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/nvptx64-nvidia-cuda/lib/libcore-4a9eff19b785368f.rlib", "/home/usamoi/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/nvptx64-nvidia-cuda/lib/libcompiler_builtins-4240302f1379e85f.rlib"]
          ␛[2m2025-03-26T11:10:55.850207Z␛[0m ␛[32m INFO␛[0m ␛[2mllvm_bitcode_linker::linker␛[0m␛[2m:␛[0m Linking 4 files using llvm-link
          ␛[2m2025-03-26T11:10:55.861321Z␛[0m ␛[31mERROR␛[0m ␛[2mllvm_bitcode_linker::linker␛[0m␛[2m:␛[0m llvm-link returned with Exit status: exit status: 1
           stdout: 
           stderr: error: Invalid record
reproduce
  1. cargo init

  2. src/main.rs

#![no_std]
#![no_main]

#[panic_handler]
fn panic_handler(_: &core::panic::PanicInfo<'_>) -> ! {
    loop {}
}
  1. rustup-toolchain
nightly
  1. rustup component remove llvm-tools

  2. rustup component add llvm-bitcode-linker

  3. RUSTFLAGS="-Clinker=llvm-bitcode-linker" cargo build --target nvptx64-nvidia-cuda

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions