Skip to content

rust-lld doesn't support libraries with zlib-compressed debug info #130063

Closed
@vadorovsky

Description

@vadorovsky

rust-lld which is shipped in rustup toolchains doesn't include zlib support. That leads to issues if it tries to link static libraries which are compressed.

In my case, I'm trying to build a crate on Alpine Linux, where /usr/lib/libc.a is compressed wit zlib.

(I also had to specify -L /lib -L /usr/lib in my RUSTFLAGS to even be able to find the library, but that's a separate issue - #130062)

77d2cb0e3483:~/aya# RUSTFLAGS="-L /lib -L /usr/lib" cargo build --target x86_64-unknown-linux-musl --config "target.x86_64-unknown-linux-musl.linker = \"rust-lld\"" --package init --profile release
   Compiling libc v0.2.158
   Compiling cfg-if v1.0.0
   Compiling bitflags v2.6.0
   Compiling anyhow v1.0.86
   Compiling nix v0.29.0
   Compiling init v0.1.0 (/root/aya/init)
error: linking with `rust-lld` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/bin:/usr/loca/aya/target/x86_64-unknown-linux-musl/release/deps/init-e28d03be64389d41.init.1ff0b768912a0f5b-cgu.5.rcgu.o" "/root/aya/target/x86_64-unknown-linux-musl/release/deps/init-e28d03be64389d41.5v5bzgpeitn8k9cw66o41lpcv.rcgu.o" "--as-needed" "-L" "/root/aya/target/x86_64-unknown-linux-musl/release/deps" "-L" "/root/aya/target/release/deps" "-L" "/lib" "-L" "/usr/lib" "-L" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib" "-Bstatic" "/root/aya/target/x86_64-unknown-linux-musl/release/deps/libnix-58a27e1bb6f49050.rlib" "/root/aya/target/x86_64-unknown-linux-musl/release/deps/libbitflags-3c134508527922bc.rlib" "/root/aya/target/x86_64-unknown-linux-musl/release/deps/libcfg_if-8d8fae249b1ab972.rlib" "/root/aya/target/x86_64-unknown-linux-musl/release/deps/liblibc-8773206ad0630d2b.rlib" "/root/aya/target/x86_64-unknown-linux-musl/release/deps/libanyhow-892885a59fdac32f.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-1b60b176e45a0318.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libpanic_abort-30b1bb7d44aa9e0e.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libobject-0123438d987de009.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libmemchr-05f3c42b49d78619.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libaddr2line-45c700404e36c3de.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libgimli-cf5f9b37b545ed6e.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_demangle-44abbf672f21a10b.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd_detect-9b6d712a985955e4.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libhashbrown-e4ec61de4b8ef447.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_alloc-c72777eb88217fe3.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libminiz_oxide-b0a8429443e0fed6.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libadler-820055e0e9cc55a4.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libunwind-2ceb129e8b1d5c77.rlib" "-lunwind" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libcfg_if-8cd2ce184499d012.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/liblibc-ada011f709b467ef.rlib" "-lc" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/liballoc-67a0423d44ab989a.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_core-15fc71c4e52ac90f.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libcore-273f69939f389095.rlib" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libcompiler_builtins-c8f82c72237d07e8.rlib" "-Bdynamic" "--eh-frame-hdr" "-z" "noexecstack" "-L" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib" "-L" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained" "-o" "/root/aya/target/x86_64-unknown-linux-musl/release/deps/init-e28d03be64389d41" "--gc-sections" "-static" "-pie" "--no-dynamic-linker" "-z" "text" "-z" "relro" "-z" "now" "-O1" "--strip-debug" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crtendS.o" "/usr/local/rustup/toolchains/1.81.0-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crtn.o"
  = note: rust-lld: error: /usr/lib/libc.a(writev.lo):(.debug_info) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(writev.lo):(.debug_abbrev) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(writev.lo):(.debug_loclists) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(writev.lo):(.debug_aranges) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(write.lo):(.debug_info) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(write.lo):(.debug_abbrev) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(unlinkat.lo):(.debug_info) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(writev.lo):(.debug_line) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(write.lo):(.debug_loclists) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(sync.lo):(.debug_info) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(unlinkat.lo):(.debug_abbrev) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(sync.lo):(.debug_abbrev) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(writev.lo):(.debug_str) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(sync.lo):(.debug_aranges) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(writev.lo):(.debug_line_str) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(write.lo):(.debug_aranges) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(symlink.lo):(.debug_info) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(setxid.lo):(.debug_info) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(setxid.lo):(.debug_abbrev) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: /usr/lib/libc.a(setgid.lo):(.debug_info) is compressed with ELFCOMPRESS_ZLIB, but lld is not built with zlib support
          rust-lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)


error: could not compile `init` (bin "init") due to 1 previous error

I think that could be fixed by enabling LLVM_ENABLE_ZLIB CMake option by default.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-linkageArea: linking into static, shared libraries and binariesC-bugCategory: This is a bug.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions