Skip to content

compiler_rt duplicate symbol when statically linking #5320

@shiimizu

Description

@shiimizu

Hi.

I'm trying to cross compile a crate in Rust using Zig (0.6.0+e79d7e0de) as a C compiler but I keep getting the error below.

I'm on WSL Ubuntu 18.04 trying to cross compile to aarch64-linux-musl.

Any thoughts?

error: linking with `zigg` failed: exit code: 1
  |
  = note: "zigg" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-Wl,--eh-frame-hdr" "-nostdlib" "/home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/crt1.o" "/home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/crti.o" "-L" "/home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib" "/mnt/d/Users/mizu/project/target/aarch64-unknown-linux-musl/release/deps/project-46dfb886f8739374.project.3leaiexz-cgu.0.rcgu.o" "-o" "/mnt/d/Users/mizu/project/target/aarch64-unknown-linux-musl/release/deps/project-46dfb886f8739374" "-Wl,--gc-sections" "-no-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/mnt/d/Users/mizu/project/target/aarch64-unknown-linux-musl/release/deps" "-L" "/mnt/d/Users/mizu/project/target/release/deps" "-L" "/mnt/d/Users/mizu/project/target/aarch64-unknown-linux-musl/release/build/backtrace-sys-8ccc9707fc1f8b25/out" "-L" "/mnt/d/Users/mizu/project/target/aarch64-unknown-linux-musl/release/build/libz-sys-c6b81db4d3172bde/out/build" "-L" "/home/mizu/source/openssl/aarch64-linux-musl/lib" "-L" "/mnt/d/Users/mizu/project/target/aarch64-unknown-linux-musl/release/build/ring-31232a853800cfaa/out" "-L" "/home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib" "-Wl,-Bstatic" "/tmp/rustcERnQRF/libopenssl_sys-0d899a1ca06d34db.rlib" "/tmp/rustcERnQRF/libbacktrace_sys-c46504543db0e47d.rlib" "/tmp/rustcERnQRF/liblibz_sys-4d45f07d5a71592d.rlib" "/tmp/rustcERnQRF/libring-fb104b3759fbb556.rlib" "-Wl,--start-group" "/tmp/rustcERnQRF/libbacktrace_sys-46271f041dd5b308.rlib" "/tmp/rustcERnQRF/libunwind-476b15d30ed96b76.rlib" "/tmp/rustcERnQRF/liblibc-cf2ebd1a477362df.rlib" "-Wl,--end-group" "/home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-7a1d3fa1614309d1.rlib" "-static" "-s" "-Wl,-Bdynamic" "/home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/crtn.o"
  = note: warning: unsupported linker arg: --as-needed
          warning: unsupported linker arg: -z noexecstack
          warning: unsupported linker arg: --eh-frame-hdr
          warning: unsupported linker arg: -zrelro
          warning: unsupported linker arg: -znow
          warning: unsupported linker arg: -Bstatic
          warning: unsupported linker arg: --start-group
          warning: unsupported linker arg: --end-group
          warning: unsupported linker arg: -Bdynamic
          lld: error: duplicate symbol: __cmptf2
          >>> defined at comparetf2.c:45 (/checkout/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:45)
          >>>            comparetf2.o:(__letf2) in archive /home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-7a1d3fa1614309d1.rlib
          >>> defined at compiler_rt
          >>>            /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/compiler_rt.o:(.text.__letf2+0x0) in archive /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/libcompiler_rt.a

          lld: error: duplicate symbol: __eqtf2
          >>> defined at comparetf2.c:45 (/checkout/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:45)
          >>>            comparetf2.o:(__letf2) in archive /home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-7a1d3fa1614309d1.rlib
          >>> defined at compiler_rt
          >>>            /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/compiler_rt.o:(.text.__letf2+0x0) in archive /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/libcompiler_rt.a

          lld: error: duplicate symbol: __gttf2
          >>> defined at comparetf2.c:98 (/checkout/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:98)
          >>>            comparetf2.o:(__getf2) in archive /home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-7a1d3fa1614309d1.rlib
          >>> defined at compiler_rt
          >>>            /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/compiler_rt.o:(.text.__getf2+0x0) in archive /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/libcompiler_rt.a

          lld: error: duplicate symbol: __lttf2
          >>> defined at comparetf2.c:45 (/checkout/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:45)
          >>>            comparetf2.o:(__letf2) in archive /home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-7a1d3fa1614309d1.rlib
          >>> defined at compiler_rt
          >>>            /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/compiler_rt.o:(.text.__letf2+0x0) in archive /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/libcompiler_rt.a

          lld: error: duplicate symbol: __netf2
          >>> defined at comparetf2.c:45 (/checkout/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:45)
          >>>            comparetf2.o:(__letf2) in archive /home/mizu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-7a1d3fa1614309d1.rlib
          >>> defined at compiler_rt
          >>>            /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/compiler_rt.o:(.text.__letf2+0x0) in archive /home/mizu/.cache/zig/stage1/o/4YQazyYIi0oVIjBMqsZOnjaQFSQt0iHstjiK6fd6YYnCHJOgr7q533xflYlL1UlQ/libcompiler_rt.a

(zigg is just shell script that invokes zig cc -target aarch64-linux-musl since Rust appends the linker arguments rather than prepend)


$ rustup show
nightly-x86_64-unknown-linux-gnu (default)
rustc 1.45.0-nightly (bad3bf622 2020-05-09)
clang/llvm 10
gcc 10
cmake 3.10.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions