llvm-project/lldb
Pavel Labath 098c01c132 [lldb] Refactor Platform::ResolveExecutable
Module resolution is probably the most complex piece of lldb [citation
needed], with numerous levels of abstraction, each one implementing
various retry and fallback strategies.

It is also a very repetitive, with only small differences between
"host", "remote-and-connected" and "remote-but-not-(yet)-connected"
scenarios.

The goal of this patch (first in series) is to reduce the number of
abstractions, and deduplicate the code.

One of the reasons for this complexity is the tension between the desire
to offload the process of module resolution to the remote platform
instance (that's how most other platform methods work), and the desire
to keep it local to the outer platform class (its easier to subclass the
outer class, and it generally makes more sense).

This patch resolves that conflict in favour of doing everything in the
outer class. The gdb-remote (our only remote platform) implementation of
ResolveExecutable was not doing anything gdb-specific, and was rather
similar to the other implementations of that method (any divergence is
most likely the result of fixes not being applied everywhere rather than
intentional).

It does this by excising the remote platform out of the resolution
codepath. The gdb-remote implementation of ResolveExecutable is moved to
Platform::ResolveRemoteExecutable, and the (only) call site is
redirected to that. On its own, this does not achieve (much), but it
creates new opportunities for layer peeling and code sharing, since all
of the code now lives closer together.

Differential Revision: https://reviews.llvm.org/D113487
2021-11-16 12:52:51 +01:00
..
bindings [lldb] make it easier to find LLDB's python 2021-11-10 10:33:34 -08:00
cmake Revert "Use `GNUInstallDirs` to support custom installation dirs. -- LLVM" 2021-11-02 19:11:44 +01:00
docs [NFC] Trim trailing whitespace in *.rst 2021-11-15 09:17:08 +08:00
examples [lldb/test] Update TestScriptedProcess to use skinny corefiles 2021-11-10 17:43:29 +01:00
include/lldb [lldb] Refactor Platform::ResolveExecutable 2021-11-16 12:52:51 +01:00
packages/Python [lldb/test] Move gdb client utils into the packages tree 2021-11-16 11:35:56 +01:00
resources [lldb] Remove stale LLDB-Info.plist 2021-01-08 10:12:16 -08:00
scripts Prefer /usr/bin/env xxx over /usr/bin/xxx where xxx = perl, python, awk 2021-02-25 11:32:27 +01:00
source [lldb] Refactor Platform::ResolveExecutable 2021-11-16 12:52:51 +01:00
test [lldb/test] Move gdb client utils into the packages tree 2021-11-16 11:35:56 +01:00
third_party/Python/module [lldb][NFC] Inclusive language: replace master/slave names for ptys 2021-11-12 10:54:18 -06:00
tools [debugserver] Remove varaible `ldb_set` which is set but not used. 2021-11-10 11:56:59 -08:00
unittests [lldb] Refactor Platform::ResolveExecutable 2021-11-16 12:52:51 +01:00
utils [lldb] Match test dependencies name to other LLVM projects. 2021-05-21 00:10:27 -07:00
.clang-format
.clang-tidy [lldb] Replace default bodies of special member functions with = default; 2021-07-02 11:31:16 -07:00
.gitignore
CMakeLists.txt [lldb/lua] Supplement Lua bindings for lldb module 2021-10-12 22:10:21 +08:00
CODE_OWNERS.txt
LICENSE.TXT
use_lldb_suite_root.py