Files
llvm-project/lldb/unittests/Target/LocateModuleCallbackTest.cpp
Emre Kultursay ed749eb3c8 [lldb] Preserve TargetSP in Platform module lookup (#186323)
[lldb] Preserve TargetSP in Platform module lookup

When `Platform::GetRemoteSharedModule` resolves a module specification
by calling `GetModuleSpec` on
the process, the target context (`TargetSP`) is lost. This happens
because the underlying process plugin populates a new `ModuleSpec`
object that does not inherit the target context.

This causes failures in subsequent symbol resolution steps. For example,
when `ModuleList` relies on the `TargetSP` to query target-specific
settings like `target.exec-search-paths` and
`target.symbols-search-paths`, the lookup fails
because `TargetSP` evaluates to null. This prevents LLDB from finding
local unstripped libraries.

This commit fixes the issue by transferring the target context from the
original `module_spec` over to the `resolved_module_spec` before
proceeding with the lookup.

Additionally, this commit avoids redundant calls to the locate module
callback. Since the platform already handles the callback explicitly,
passing the target context to subsequent `ModuleList::GetSharedModule`
calls would normally trigger the callback again redundantly. This is
suppressed by passing `invoke_locate_callback=false` in
`Platform::GetSharedModule` and `ModuleCache::Get`. This also avoids
triggering the callback with incomplete module specifications (e.g.
cleared UUIDs) during cache lookups.
2026-03-13 12:34:47 -07:00

43 KiB