From e6ec0fb9ff287e089fbcbd08e1b7c480fe74c6d9 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Fri, 12 Jun 2026 15:20:41 -0700 Subject: [PATCH] Fall back to ld for private libunwind partial link When CMAKE_LINKER resolves to llvm-link, continue preferring the matching ld.lld for the NativeAOT private libunwind partial link, but fall back to binutils ld when ld.lld is unavailable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/coreclr/nativeaot/Runtime/Full/CMakeLists.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/coreclr/nativeaot/Runtime/Full/CMakeLists.txt b/src/coreclr/nativeaot/Runtime/Full/CMakeLists.txt index b55aef8e5b5af4..5e4ff7296e163c 100644 --- a/src/coreclr/nativeaot/Runtime/Full/CMakeLists.txt +++ b/src/coreclr/nativeaot/Runtime/Full/CMakeLists.txt @@ -42,10 +42,16 @@ if(NATIVEAOT_PRIVATE_LIBUNWIND_SOURCES) NAMES "ld.lld${NATIVEAOT_PRIVATE_LIBUNWIND_LINKER_VERSION}${NATIVEAOT_PRIVATE_LIBUNWIND_LINKER_EXTENSION}" ld.lld PATHS "${NATIVEAOT_PRIVATE_LIBUNWIND_TOOL_DIR}" NO_DEFAULT_PATH) - if(NOT NATIVEAOT_PRIVATE_LIBUNWIND_LD_LLD) - message(FATAL_ERROR "ld.lld is required to privatize NativeAOT libunwind symbols") + if(NATIVEAOT_PRIVATE_LIBUNWIND_LD_LLD) + set(NATIVEAOT_PRIVATE_LIBUNWIND_LINKER "${NATIVEAOT_PRIVATE_LIBUNWIND_LD_LLD}") + else() + find_program(NATIVEAOT_PRIVATE_LIBUNWIND_LD NAMES ld) + if(NATIVEAOT_PRIVATE_LIBUNWIND_LD) + set(NATIVEAOT_PRIVATE_LIBUNWIND_LINKER "${NATIVEAOT_PRIVATE_LIBUNWIND_LD}") + else() + message(FATAL_ERROR "A linker supporting relocatable linking is required to privatize NativeAOT libunwind symbols") + endif() endif() - set(NATIVEAOT_PRIVATE_LIBUNWIND_LINKER "${NATIVEAOT_PRIVATE_LIBUNWIND_LD_LLD}") endif() add_custom_command(