summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kirth <paulkirth@google.com>2023-12-01 14:51:21 -0800
committerGitHub <noreply@github.com>2023-12-01 14:51:21 -0800
commitd22944d1cc54a3384a88d654d144ef62a693df16 (patch)
tree2b995115b2ae6bea9223ed203f494523fc56d84d
parent5fe741f08e09a2eca276fc11d39240caa3d23cb2 (diff)
[cmake] Fix relative paths in prefix map (#74132)
When building debug version of LLVM with `LLVM_USE_RELATIVE_PATHS_IN_FILES=On` would cause source paths to be incorrect, and be prefixed by the build directory. This lead to source locations like the following: `../build/llvm/...`. Such paths do not exist, and existing debuggers can't adjust their search location because of the incorrect prefix. Ultimately, this happened because the relative path creation goes in the wrong direction, from source-dir to build-dir instead of from build-dir to source-dir. This patch swaps the directionality of the relative paths so that they get a proper prefix from the build directory. Given a build dir at `/build` and a project directory at `/llvm-project`, we get source locations like: `../llvm-project/llvm/lib/Transforms/...`, which a debugger can resolve once pointed to the correct project directory.
-rw-r--r--llvm/cmake/modules/HandleLLVMOptions.cmake4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake
index 6a3c49edc912..97fd908d08f1 100644
--- a/llvm/cmake/modules/HandleLLVMOptions.cmake
+++ b/llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -1341,7 +1341,7 @@ if(LLVM_USE_RELATIVE_PATHS_IN_DEBUG_INFO)
else()
set(source_root "${LLVM_MAIN_SRC_DIR}")
endif()
- file(RELATIVE_PATH relative_root "${source_root}" "${CMAKE_BINARY_DIR}")
+ file(RELATIVE_PATH relative_root "${CMAKE_BINARY_DIR}" "${source_root}")
append_if(SUPPORTS_FDEBUG_PREFIX_MAP "-fdebug-prefix-map=${CMAKE_BINARY_DIR}=${relative_root}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
append_if(SUPPORTS_FDEBUG_PREFIX_MAP "-fdebug-prefix-map=${source_root}/=${LLVM_SOURCE_PREFIX}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
add_flag_if_supported("-no-canonical-prefixes" NO_CANONICAL_PREFIXES)
@@ -1356,7 +1356,7 @@ if(LLVM_USE_RELATIVE_PATHS_IN_FILES)
else()
set(source_root "${LLVM_MAIN_SRC_DIR}")
endif()
- file(RELATIVE_PATH relative_root "${source_root}" "${CMAKE_BINARY_DIR}")
+ file(RELATIVE_PATH relative_root "${CMAKE_BINARY_DIR}" "${source_root}")
append_if(SUPPORTS_FFILE_PREFIX_MAP "-ffile-prefix-map=${CMAKE_BINARY_DIR}=${relative_root}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
append_if(SUPPORTS_FFILE_PREFIX_MAP "-ffile-prefix-map=${source_root}/=${LLVM_SOURCE_PREFIX}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
add_flag_if_supported("-no-canonical-prefixes" NO_CANONICAL_PREFIXES)