[libunwind] c59cc2b - [libunwind] Remove checks for -nostdlib++ (#143162)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 11 02:43:37 PDT 2025
Author: Nikolas Klauser
Date: 2025-06-11T11:43:34+02:00
New Revision: c59cc2b690b9e528a82ba214f74a8f7c8abb3cde
URL: https://github.com/llvm/llvm-project/commit/c59cc2b690b9e528a82ba214f74a8f7c8abb3cde
DIFF: https://github.com/llvm/llvm-project/commit/c59cc2b690b9e528a82ba214f74a8f7c8abb3cde.diff
LOG: [libunwind] Remove checks for -nostdlib++ (#143162)
libunwind uses a C linker, so it's never even trying to link against any
C++ libraries. This removes the code which tries to drop C++ libraries,
which makes the CMake configuration simpler and allows for upgrading
GCC.
Added:
Modified:
libunwind/cmake/config-ix.cmake
libunwind/src/CMakeLists.txt
Removed:
################################################################################
diff --git a/libunwind/cmake/config-ix.cmake b/libunwind/cmake/config-ix.cmake
index 126c872f0d489..d42ceffb1f631 100644
--- a/libunwind/cmake/config-ix.cmake
+++ b/libunwind/cmake/config-ix.cmake
@@ -26,62 +26,6 @@ if (NOT LIBUNWIND_USE_COMPILER_RT)
endif ()
endif()
-# libunwind is using -nostdlib++ at the link step when available,
-# otherwise -nodefaultlibs is used. We want all our checks to also
-# use one of these options, otherwise we may end up with an inconsistency between
-# the flags we think we require during configuration (if the checks are
-# performed without one of those options) and the flags that are actually
-# required during compilation (which has the -nostdlib++ or -nodefaultlibs). libc is
-# required for the link to go through. We remove sanitizers from the
-# configuration checks to avoid spurious link errors.
-
-llvm_check_compiler_linker_flag(CXX "-nostdlib++" CXX_SUPPORTS_NOSTDLIBXX_FLAG)
-if (CXX_SUPPORTS_NOSTDLIBXX_FLAG)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nostdlib++")
-else()
- llvm_check_compiler_linker_flag(C "-nodefaultlibs" C_SUPPORTS_NODEFAULTLIBS_FLAG)
- if (C_SUPPORTS_NODEFAULTLIBS_FLAG)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nodefaultlibs")
- endif()
-endif()
-
-# Only link against compiler-rt manually if we use -nodefaultlibs, since
-# otherwise the compiler will do the right thing on its own.
-if (NOT CXX_SUPPORTS_NOSTDLIBXX_FLAG AND C_SUPPORTS_NODEFAULTLIBS_FLAG)
- if (LIBUNWIND_HAS_C_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES c)
- endif ()
- if (LIBUNWIND_HAS_ROOT_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES root)
- endif ()
- if (LIBUNWIND_USE_COMPILER_RT)
- include(HandleCompilerRT)
- find_compiler_rt_library(builtins LIBUNWIND_BUILTINS_LIBRARY
- FLAGS ${LIBUNWIND_COMPILE_FLAGS})
- list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBUNWIND_BUILTINS_LIBRARY}")
- else ()
- if (LIBUNWIND_HAS_GCC_S_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s)
- endif ()
- if (LIBUNWIND_HAS_GCC_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES gcc)
- endif ()
- endif ()
- if (MINGW)
- # Mingw64 requires quite a few "C" runtime libraries in order for basic
- # programs to link successfully with -nodefaultlibs.
- if (LIBUNWIND_USE_COMPILER_RT)
- set(MINGW_RUNTIME ${LIBUNWIND_BUILTINS_LIBRARY})
- else ()
- set(MINGW_RUNTIME gcc_s gcc)
- endif()
- set(MINGW_LIBRARIES mingw32 ${MINGW_RUNTIME} moldname mingwex msvcrt advapi32
- shell32 user32 kernel32 mingw32 ${MINGW_RUNTIME}
- moldname mingwex msvcrt)
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${MINGW_LIBRARIES})
- endif()
-endif()
-
if (CXX_SUPPORTS_NOSTDLIBXX_FLAG OR C_SUPPORTS_NODEFAULTLIBS_FLAG)
if (CMAKE_C_FLAGS MATCHES -fsanitize OR CMAKE_CXX_FLAGS MATCHES -fsanitize)
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize=all")
diff --git a/libunwind/src/CMakeLists.txt b/libunwind/src/CMakeLists.txt
index 70bd3a017cda7..03818b1bb2512 100644
--- a/libunwind/src/CMakeLists.txt
+++ b/libunwind/src/CMakeLists.txt
@@ -71,18 +71,6 @@ set(LIBUNWIND_SOURCES
${LIBUNWIND_ASM_SOURCES})
# Generate library list.
-if (CXX_SUPPORTS_NOSTDLIBXX_FLAG)
- add_link_flags_if_supported(-nostdlib++)
-else()
- if (LIBUNWIND_USE_COMPILER_RT)
- add_library_flags("${LIBUNWIND_BUILTINS_LIBRARY}")
- else()
- add_library_flags_if(LIBUNWIND_HAS_GCC_S_LIB gcc_s)
- add_library_flags_if(LIBUNWIND_HAS_GCC_LIB gcc)
- endif()
- add_library_flags_if(LIBUNWIND_HAS_C_LIB c)
-endif()
-
if (NOT APPLE)
add_library_flags_if(LIBUNWIND_HAS_DL_LIB dl)
endif()
More information about the cfe-commits
mailing list