Skip to content

Commit c05fa00

Browse files
committed
cmake: add USE_PATH_STRIP=OFF to fix GDB stacktrace
1 parent 01d7e72 commit c05fa00

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

cmake/DaemonFlags.cmake

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ option(USE_RECOMMENDED_CXX_STANDARD "Use recommended C++ standard" ON)
5454
mark_as_advanced(USE_RECOMMENDED_CXX_STANDARD)
5555

5656
option(USE_CPP23 "Use C++23 standard where possible" OFF)
57+
option(USE_PATH_STRIP "Strip source paths in debug symbols" OFF)
5758

5859
# Required for <stacktrace> on Clang/GCC
5960
if(USE_CPP23)
@@ -217,23 +218,25 @@ macro(try_exe_linker_flag PROP FLAG)
217218
endif()
218219
endmacro()
219220

220-
# Stripping of absolute paths for __FILE__ / source_location
221-
# Also do without src/ to get libs/
222-
set(FILENAME_STRIP_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}")
223-
if (NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL DAEMON_DIR)
224-
set(FILENAME_STRIP_DIRS ${FILENAME_STRIP_DIRS} "${DAEMON_DIR}/src" "${DAEMON_DIR}")
221+
if (USE_PATH_STRIP)
222+
# Stripping of absolute paths for __FILE__ / source_location
223+
# Also do without src/ to get libs/
224+
set(FILENAME_STRIP_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}")
225+
if (NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL DAEMON_DIR)
226+
set(FILENAME_STRIP_DIRS ${FILENAME_STRIP_DIRS} "${DAEMON_DIR}/src" "${DAEMON_DIR}")
227+
endif()
228+
foreach(strip_dir ${FILENAME_STRIP_DIRS})
229+
if (MSVC)
230+
string(REPLACE "/" "\\" backslashed_dir ${strip_dir})
231+
# set_c_cxx_flag can't be used because macros barf if the input contains backslashes
232+
# https://gitlab.kitware.com/cmake/cmake/-/issues/19281
233+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /d1trimfile:${backslashed_dir}\\")
234+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /d1trimfile:${backslashed_dir}\\")
235+
else()
236+
try_c_cxx_flag(PREFIX_MAP "-ffile-prefix-map=${strip_dir}/=")
237+
endif()
238+
endforeach()
225239
endif()
226-
foreach(strip_dir ${FILENAME_STRIP_DIRS})
227-
if (MSVC)
228-
string(REPLACE "/" "\\" backslashed_dir ${strip_dir})
229-
# set_c_cxx_flag can't be used because macros barf if the input contains backslashes
230-
# https://gitlab.kitware.com/cmake/cmake/-/issues/19281
231-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /d1trimfile:${backslashed_dir}\\")
232-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /d1trimfile:${backslashed_dir}\\")
233-
else()
234-
try_c_cxx_flag(PREFIX_MAP "-ffile-prefix-map=${strip_dir}/=")
235-
endif()
236-
endforeach()
237240

238241
if (BE_VERBOSE)
239242
set(WARNMODE "no-error=")

0 commit comments

Comments
 (0)