From de2336247c7243be42e23ef0b343d7561f4fc886 Mon Sep 17 00:00:00 2001 From: Henry Jiang Date: Tue, 14 Apr 2026 10:48:14 -0700 Subject: [PATCH] [Darwin] Externalize debug info --- CMakeLists.txt | 4 ++++ cmake/modules/TestSuite.cmake | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c3567e7db7b..dfd6d84e8442 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -180,6 +180,10 @@ option(TEST_SUITE_PROFILE_USE "Add apropriate -fprofile-instr-use to CFLAGS/CXXFLAGS for each benchmark" OFF) +option(TEST_SUITE_EXTERNALIZE_DEBUGINFO + "Generate dSYM files for executables (Darwin only)" + OFF) + # When running the test-suite in diagnosis mode, use these flags passed by # LNT to gather data, for examples -ftime-report, or -mllvm -stats. This way # the user specified CMAKE_C_FLAGS etc. need not be changed. diff --git a/cmake/modules/TestSuite.cmake b/cmake/modules/TestSuite.cmake index a8df8b78f841..b677b8301e87 100644 --- a/cmake/modules/TestSuite.cmake +++ b/cmake/modules/TestSuite.cmake @@ -63,6 +63,22 @@ function(llvm_test_executable_no_test target) set_property(GLOBAL APPEND PROPERTY TEST_SUITE_TARGETS ${target}) test_suite_add_build_dependencies(${target}) + if(TEST_SUITE_EXTERNALIZE_DEBUGINFO AND APPLE) + if(CMAKE_C_FLAGS MATCHES "-flto" + OR CMAKE_CXX_FLAGS MATCHES "-flto" + OR CMAKE_C_FLAGS_RELEASE MATCHES "-flto" + OR CMAKE_CXX_FLAGS_RELEASE MATCHES "-flto") + set(lto_object ${CMAKE_CURRENT_BINARY_DIR}/${target}-lto.o) + set_property(TARGET ${target} APPEND_STRING PROPERTY + LINK_FLAGS " -Wl,-object_path_lto,${lto_object}") + endif() + if(NOT CMAKE_DSYMUTIL) + set(CMAKE_DSYMUTIL xcrun dsymutil) + endif() + add_custom_command(TARGET ${target} POST_BUILD + COMMAND ${CMAKE_DSYMUTIL} $) + endif() + if(TEST_SUITE_LLVM_SIZE) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${TEST_SUITE_LLVM_SIZE} --format=sysv $>