rust-lang / rust-lang/rustc_codegen_cranelift

undefined symbol: compiler_builtins::mem when building with cranelift + lld-link.exe on windows (and lld: error on gnu)

Open
#1,480 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-bug O-windows
Dominant language
Rust
Stars
2.1k
Forks
157
Avg merge
1d 19h
Merged PRs (30d)
3

Description

Issue

When I try compiling any rust program with the combination of:

  • LLD 18.1.2
  • Cranklift from 4/5/2024 cg_clif-x86_64-pc-windows-msvc.tar.xz

I get these errors

C:\Users\donblas\Programming\cranelift-march-6\cargo-clif.exe build
   Compiling link-crane-example v0.1.0 (C:\Users\donblas\Programming\link-crane-example)
error: linking with `C:\Program Files\LLVM\bin\lld-link.exe` failed: exit code: 1
  |
  = note: "C:\\Program Files\\LLVM\\bin\\lld-link.exe" "-flavor" "link" "/DEF:C:\\Users\\donblas\\AppData\\Local\\Temp\\rustcZYRz07\\lib.def" "/NOLOGO" "C:\\Users\\donblas\\AppData\\Local\\Temp\\rustcZYRz07\\symbols.o" "C:\\Users\\donblas\\Programming\\link-crane-example\\target\\debug\\deps\\shufflelib.1efll5bx2e00ud32.rcgu.o" "C:\\Users\\donblas\\Programming\\link-crane-example\\target\\debug\\deps\\shufflelib.1m5mg95wxg41i1ui.rcgu.rmeta" "C:\\Users\\donblas\\Programming\\link-crane-example\\target\\debug\\deps\\shufflelib.allocator_shim.rcgu.o" "/LIBPATH:C:\\Users\\donblas\\Programming\\link-crane-example\\target\\debug\\deps" "/LIBPATH:C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-31276ed477bdd0d6.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_abort-af2fd9d19bb9fc21.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-73ce6d0b11677fa9.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_detect-fd98a2200ad11eae.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-35a7315e06cc80c2.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-0b437564369036c4.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-90a55d17c0fe05f2.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-e1fe54e8b5ad24c1.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-2e452438aaad9a38.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-967980aca3096147.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-e02f187c876c9b12.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-e55a56e004e0a413.rlib" "C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-b9914bbc4f629d43.rlib" "kernel32.lib" "advapi32.lib" "kernel32.lib" "ntdll.lib" "userenv.lib" "ws2_32.lib" "synchronization.lib" "kernel32.lib" "ws2_32.lib" "kernel32.lib" "msvcrt.lib" "/NXCOMPAT" "/LIBPATH:C:\\Users\\donblas\\Programming\\cranelift-march-6\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "/OUT:C:\\Users\\donblas\\Programming\\link-crane-example\\target\\debug\\deps\\shufflelib.dll" "/OPT:REF,NOICF" "/DLL" "/IMPLIB:C:\\Users\\donblas\\Programming\\link-crane-example\\target\\debug\\deps\\shufflelib.dll.lib" "/DEBUG" "/PDBALTPATH:%_PDB%"
  = note: lld-link: error: <root>: undefined symbol: compiler_builtins::mem::bcmp::hf89d8ec69417b8af
          lld-link: error: <root>: undefined symbol: compiler_builtins::mem::memcmp::h5e7dc66d5bda6f4b
          lld-link: error: <root>: undefined symbol: compiler_builtins::mem::memcpy::h7112795738f157a8
          lld-link: error: <root>: undefined symbol: compiler_builtins::mem::memset::hd5a36185bfe23a75
          lld-link: error: <root>: undefined symbol: compiler_builtins::mem::strlen::h51798b0eccb4a025
          lld-link: error: <root>: undefined symbol: compiler_builtins::mem::memmove::h85e5af0d67f5ae71
          lld-link: error: undefined symbol: compiler_builtins::mem::bcmp::hf89d8ec69417b8af
          >>> referenced by C:\Users\donblas\AppData\Local\Temp\rustcZYRz07\symbols.o
          >>> referenced by libcompiler_builtins-b9914bbc4f629d43.rlib(compiler_builtins-b9914bbc4f629d43.compiler_builtins.88e0577c9cba8cfc-cgu.002.rcgu.o)

          lld-link: error: undefined symbol: compiler_builtins::mem::memcmp::h5e7dc66d5bda6f4b
          >>> referenced by C:\Users\donblas\AppData\Local\Temp\rustcZYRz07\symbols.o
          >>> referenced by libcompiler_builtins-b9914bbc4f629d43.rlib(compiler_builtins-b9914bbc4f629d43.compiler_builtins.88e0577c9cba8cfc-cgu.002.rcgu.o):(.refptr._ZN17compiler_builtins3mem6memcmp17h5e7dc66d5bda6f4bE)

          lld-link: error: undefined symbol: compiler_builtins::mem::memcpy::h7112795738f157a8
          >>> referenced by C:\Users\donblas\AppData\Local\Temp\rustcZYRz07\symbols.o
          >>> referenced by libcompiler_builtins-b9914bbc4f629d43.rlib(compiler_builtins-b9914bbc4f629d43.compiler_builtins.88e0577c9cba8cfc-cgu.002.rcgu.o)

          lld-link: error: undefined symbol: compiler_builtins::mem::memset::hd5a36185bfe23a75
          >>> referenced by C:\Users\donblas\AppData\Local\Temp\rustcZYRz07\symbols.o
          >>> referenced by libcompiler_builtins-b9914bbc4f629d43.rlib(compiler_builtins-b9914bbc4f629d43.compiler_builtins.88e0577c9cba8cfc-cgu.002.rcgu.o)

          lld-link: error: undefined symbol: compiler_builtins::mem::strlen::h51798b0eccb4a025
          >>> referenced by C:\Users\donblas\AppData\Local\Temp\rustcZYRz07\symbols.o
          >>> referenced by libcompiler_builtins-b9914bbc4f629d43.rlib(compiler_builtins-b9914bbc4f629d43.compiler_builtins.88e0577c9cba8cfc-cgu.002.rcgu.o)

          lld-link: error: undefined symbol: compiler_builtins::mem::memmove::h85e5af0d67f5ae71
          >>> referenced by C:\Users\donblas\AppData\Local\Temp\rustcZYRz07\symbols.o
          >>> referenced by libcompiler_builtins-b9914bbc4f629d43.rlib(compiler_builtins-b9914bbc4f629d43.compiler_builtins.88e0577c9cba8cfc-cgu.002.rcgu.o)

Steps to Reproduce

  • git clone down https://github.com/chamons/link-crane-example
  • Update .cargo\config.toml to point to your lld-link.exe location (if not in Program Files\LLVM\bin)
  • C:\Users\donblas\Programming\cranelift-march-6\cargo-clif.exe build (change path to clif)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Clone downblas/link-crane-example, update .cargo\config.toml with the lld-link.exe path, and reproduce the failure with cargo-clif.exe build. Start by examining the linker command and the referenced compiler_builtins symbols; done means the example builds without the undefined-symbol errors on the reported Windows setup.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system, compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.