From 920bd8cb7803fc82c2e49cca26ebeb482fcfc9f2 Mon Sep 17 00:00:00 2001 From: LiuNeng <1398775315@qq.com> Date: Sat, 30 Nov 2024 17:29:11 +0800 Subject: [PATCH] [CH] Support separate debug symbols from so file #8083 What changes were proposed in this pull request? support separate debug symbols How was this patch tested? manual tests image (If this patch involves UI changes, please attach a screenshot; otherwise, remove this) --- cpp-ch/local-engine/CMakeLists.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cpp-ch/local-engine/CMakeLists.txt b/cpp-ch/local-engine/CMakeLists.txt index 4392b55008bf..4b1c64363646 100644 --- a/cpp-ch/local-engine/CMakeLists.txt +++ b/cpp-ch/local-engine/CMakeLists.txt @@ -174,6 +174,26 @@ else() set(LOCALENGINE_SHARED_LIB_NAME "libch.so") endif() +option(ENABLE_SEPARATE_SYMBOLS "support separate debug symbols from so" OFF) +if(ENABLE_SEPARATE_SYMBOLS) + set(SYMBOL_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/debug_symbols) + file(MAKE_DIRECTORY ${SYMBOL_OUTPUT_DIRECTORY}) + function(separate_symbols target) + add_custom_command( + TARGET ${target} + POST_BUILD + COMMAND ${CMAKE_OBJCOPY} --only-keep-debug $<TARGET_FILE:${target}> + ${SYMBOL_OUTPUT_DIRECTORY}/$<TARGET_FILE_NAME:${target}>.debug + COMMAND ${CMAKE_OBJCOPY} --strip-debug $<TARGET_FILE:${target}> + COMMAND + ${CMAKE_OBJCOPY} + --add-gnu-debuglink=${SYMBOL_OUTPUT_DIRECTORY}/$<TARGET_FILE_NAME:${target}>.debug + $<TARGET_FILE:${target}> + COMMENT "Separating debug symbols for target: ${target}") + endfunction() + separate_symbols(${LOCALENGINE_SHARED_LIB}) +endif() + add_custom_command( OUTPUT ${LOCALENGINE_SHARED_LIB_NAME} COMMAND ${CMAKE_COMMAND} -E rename $<TARGET_FILE:${LOCALENGINE_SHARED_LIB}>