aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
diff options
context:
space:
mode:
authorJeffrey Tan <jeffreytan@fb.com>2022-09-08 11:21:08 -0700
committerJeffrey Tan <jeffreytan@fb.com>2022-09-19 13:40:22 -0700
commitdc9e6c52f3d805ab454bcf2a4502037d15fb2b8c (patch)
treede0489fc643d1c4b05b83f57ffc8218f4f835bb2 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
parent39336fc09cac61fa38a6bc2d30731fe0e38d38a2 (diff)
downloadllvm-dc9e6c52f3d805ab454bcf2a4502037d15fb2b8c.zip
llvm-dc9e6c52f3d805ab454bcf2a4502037d15fb2b8c.tar.gz
llvm-dc9e6c52f3d805ab454bcf2a4502037d15fb2b8c.tar.bz2
Add auto deduce source map setting
This patch adds a new "target.auto-source-map-relative" setting. If enabled, this setting may auto deduce a source map entry based on requested breakpoint path and the original path stored in debug info for resolved breakpoint. As an example, if debug info contains "./a/b/c/main.cpp", user sets a source breakpoint at "/root/repo/x/y/z/a/b/c/main.cpp". The breakpoint will resolve correctly now with Greg's patch https://reviews.llvm.org/D130401. However, the resolved breakpoint will use "./a/b/c/main.cpp" to locate source file during stop event which would fail most of the time. With the new "target.auto-source-map-relative" setting enabled, a auto deduced source map entry "." => "/root/repo/x/y/z" will be added. This new mapping will help lldb to map resolved breakpoint path "./a/b/c/main.cpp" back to "/root/repo/x/y/z/a/b/c/main.cpp" and locate it on disk. If an existing source map entry is used the patch also concatenates the auto deduced entry with any stripped reverse mapping prefix (see example below). As a second example, debug info contains "./a/b/c/main.cpp" and user sets breakpoint at "/root/repo/x/y/z/a/b/c/main.cpp". Let's say there is an existing source map entry "." => "/root/repo"; this mapping would strip the prefix out of "/root/repo/x/y/z/a/b/c/main.cpp" and use "x/y/z/a/b/c/main.cpp" to resolve breakpoint. "target.auto-source-map-relative" setting would auto deduce a new potential mapping of "." => "x/y/z", then it detects that there is a stripped prefix from reverse mapping and concatenates it as the new mapping: "." => "/root/repo/x/y/z" which would correct map "./a/b/c/main.cpp" path to new path in disk. This patches depends on https://reviews.llvm.org/D130401 to use new added SBDebugger::GetSetting() API for testing. Differential Revision: https://reviews.llvm.org/D133042
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp')
0 files changed, 0 insertions, 0 deletions