From 54ecf703f21001b58d8f781c5043451de1733d9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 22 Jun 2021 15:31:18 +0200 Subject: [PATCH] [CMAKE:GCC] Produce RosSym data even when building with separate debug symbols --- boot/freeldr/freeldr/CMakeLists.txt | 13 +++++-------- sdk/cmake/gcc.cmake | 29 ++++++++++++++++++----------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/boot/freeldr/freeldr/CMakeLists.txt b/boot/freeldr/freeldr/CMakeLists.txt index 880d949a780..678c20cafff 100644 --- a/boot/freeldr/freeldr/CMakeLists.txt +++ b/boot/freeldr/freeldr/CMakeLists.txt @@ -277,14 +277,11 @@ if(MSVC) else() target_link_options(freeldr_pe PRIVATE -Wl,--exclude-all-symbols,--file-alignment,0x200,--section-alignment,0x200) add_linker_script(freeldr_pe freeldr_gcc.lds) - if (NOT SEPARATE_DBG) - target_link_options(freeldr_pe PRIVATE -Wl,--strip-all) - else() - # Strip everything (more than objcopy --strip-debug does) - add_custom_command(TARGET freeldr_pe - POST_BUILD - COMMAND ${CMAKE_STRIP} --strip-all $) - endif() + # Strip everything, including rossym data + add_custom_command(TARGET freeldr_pe + POST_BUILD + COMMAND ${CMAKE_STRIP} --remove-section=.rossym $ + COMMAND ${CMAKE_STRIP} --strip-all $) endif() set_image_base(freeldr_pe 0x10000) diff --git a/sdk/cmake/gcc.cmake b/sdk/cmake/gcc.cmake index fec53361b08..af04f616761 100644 --- a/sdk/cmake/gcc.cmake +++ b/sdk/cmake/gcc.cmake @@ -194,27 +194,34 @@ if(SEPARATE_DBG) else() set(SYMBOL_FILE ) endif() - set(OBJCOPY ${CMAKE_OBJCOPY}) + + if (NOT NO_ROSSYM) + get_target_property(RSYM native-rsym IMPORTED_LOCATION) + set(strip_debug "${RSYM} -s ${REACTOS_SOURCE_DIR} ") + else() + set(strip_debug "${CMAKE_STRIP} --strip-debug ") + endif() + set(CMAKE_C_LINK_EXECUTABLE " -o " - "${OBJCOPY} --only-keep-debug ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" - "${OBJCOPY} --strip-debug ") + "${CMAKE_STRIP} --only-keep-debug -o ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" + ${strip_debug}) set(CMAKE_CXX_LINK_EXECUTABLE " -o " - "${OBJCOPY} --only-keep-debug ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" - "${OBJCOPY} --strip-debug ") + "${CMAKE_STRIP} --only-keep-debug -o ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" + ${strip_debug}) set(CMAKE_C_CREATE_SHARED_LIBRARY " -o " - "${OBJCOPY} --only-keep-debug ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" - "${OBJCOPY} --strip-debug ") + "${CMAKE_STRIP} --only-keep-debug -o ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" + ${strip_debug}) set(CMAKE_CXX_CREATE_SHARED_LIBRARY " -o " - "${OBJCOPY} --only-keep-debug ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" - "${OBJCOPY} --strip-debug ") + "${CMAKE_STRIP} --only-keep-debug -o ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" + ${strip_debug}) set(CMAKE_RC_CREATE_SHARED_LIBRARY " -o " - "${OBJCOPY} --only-keep-debug ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" - "${OBJCOPY} --strip-debug ") + "${CMAKE_STRIP} --only-keep-debug -o ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}" + ${strip_debug}) elseif(NO_ROSSYM) # Dwarf-based build message(STATUS "Generating a dwarf-based build (no rsym)")