Skip to content

Undefined Symbols While Compiling to x86_64-unknown-uefi #66320

Closed
@gurry

Description

@gurry

I'm trying to compile this crate to the x86_64-unknown-uefi target and getting errors at link time. rust-lld seems not to be able to find symbols __sync_val_compare_and_swap_16 and __sync_lock_test_and_set_16. I believe they are compiler intrinsics, so perhaps they should've come from rustc or the compiler_builtins crate.

Build commandline used: cargo xbuild --target x86_64-unknown-uefi
Nightly version: rustc 1.40.0-nightly (9e34664 2019-11-08)
Host: Windows 10 x64
Build output:

error: linking with `rust-lld` failed: exit code: 1
  |
  = note: "rust-lld" "-flavor" "link" "/NOLOGO" "/NXCOMPAT" "/nodefaultlib" "/entry:efi_main" "/subsystem:efi_application" "/LIBPATH:C:\\Projects\\personal\\uefi-practice\\target/sysroot\\lib\\rustlib\\x86_64-unknown-uefi\\lib" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.123mw28k7zdzq2hs.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.168luiprrv56txez.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.16ttvqfum6y188eu.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.1dalg2fy51wb8lah.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.1odqm0xkwcmyhq3o.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.24j9n0hj0zaekqvr.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.31oq7a7pt1mgmvjv.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.38ggyki2ov1emb8e.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.3mrbkqg5o6j3v878.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.3y9802a992jwu9sz.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.437tepsiq7p53qdq.rcgu.o" "C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.l05bl28cf0s74oy.rcgu.o" "/OUT:C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps\\uefi_practice-f7df25972b29a10d.efi" "/OPT:REF,NOICF" "/DEBUG" "/LIBPATH:C:\\Projects\\personal\\uefi-practice\\target\\x86_64-unknown-uefi\\debug\\deps" "/LIBPATH:C:\\Projects\\personal\\uefi-practice\\target\\debug\\deps" "/LIBPATH:C:\\Projects\\personal\\uefi-practice\\target/sysroot\\lib\\rustlib\\x86_64-unknown-uefi\\lib" "C:\\Projects\\personal\\uefi-practice\\target\\sysroot\\lib\\rustlib\\x86_64-unknown-uefi\\lib\\librustc_std_workspace_core-4db334855bda32b0.rlib" "C:\\Projects\\personal\\uefi-practice\\target\\sysroot\\lib\\rustlib\\x86_64-unknown-uefi\\lib\\libcore-8f5696ff045f66ab.rlib" "C:\\Projects\\personal\\uefi-practice\\target\\sysroot\\lib\\rustlib\\x86_64-unknown-uefi\\lib\\libcompiler_builtins-1bdfce1174c15c42.rlib"
  = note: rust-lld: error: undefined symbol: __sync_val_compare_and_swap_16
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memcpy_element_unordered_atomic_16)
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memmove_element_unordered_atomic_16)
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memmove_element_unordered_atomic_16)
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memmove_element_unordered_atomic_16)

          rust-lld: error: undefined symbol: __sync_lock_test_and_set_16
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memcpy_element_unordered_atomic_16)
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memmove_element_unordered_atomic_16)
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memmove_element_unordered_atomic_16)
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memmove_element_unordered_atomic_16)
          >>> referenced by libcompiler_builtins-1bdfce1174c15c42.rlib(compiler_builtins-1bdfce1174c15c42.compiler_builtins.en09gzh0-cgu.3.rcgu.o):(__llvm_memset_element_unordered_atomic_16)

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-linkageArea: linking into static, shared libraries and binariesC-bugCategory: This is a bug.O-x86_64Target: x86-64 processors (like x86_64-*) (also known as amd64 and x64)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