================
@@ -0,0 +1,220 @@
+from abc import ABCMeta, abstractmethod
+import os
+
+import lldb
+
+
+class ScriptedSymbolLocator(metaclass=ABCMeta):
+ """
+ The base class for a scripted symbol locator.
+
+ Most of the base class methods are optional and return ``None`` to fall
+ through to LLDB's default resolution. Override only the methods you need.
+
+ Configuration::
+
+ (lldb) command script import /path/to/my_locator.py
+ (lldb) target symbols scripted register -C my_locator.MyLocator \\
+ [-k key -v value ...]
+ """
+
+ @abstractmethod
+ def __init__(self, exe_ctx, args):
+ """Construct a scripted symbol locator.
+
+ Args:
+ exe_ctx (lldb.SBExecutionContext): The execution context for
+ the scripted symbol locator.
+ args (lldb.SBStructuredData): A Dictionary holding arbitrary
+ key/value pairs used by the scripted symbol locator.
+ """
+ target = None
+ self.target = None
+ self.args = None
+ if isinstance(exe_ctx, lldb.SBExecutionContext):
+ target = exe_ctx.target
+ if isinstance(target, lldb.SBTarget) and target.IsValid():
+ self.target = target
+ self.dbg = target.GetDebugger()
+ if isinstance(args, lldb.SBStructuredData) and args.IsValid():
+ self.args = args
+
+ def locate_source_file(self, module, original_source_file):
+ """Locate the source file for a given module.
+
+ Called when LLDB resolves source file paths during stack frame
+ display, breakpoint resolution, or source listing. This is the
+ primary method for implementing source file remapping based on
+ build IDs.
+
+ The module is a fully loaded ``SBModule`` (not an ``SBModuleSpec``),
+ so you can access its UUID, file path, platform file path,
+ symbol file path, sections, and symbols.
+
+ Results are cached per (module UUID, source file) pair, so this
+ method is called at most once per unique combination.
+
+ Args:
+ module (lldb.SBModule): The loaded module containing debug
+ info. Use ``module.GetUUIDString()`` to get the build ID
+ for looking up the correct source revision.
+ original_source_file (str): The original source file path
+ as recorded in the debug info.
+
+ Returns:
+ str: The resolved file path, or None to fall through to
+ LLDB's default source resolution.
----------------
rchamala wrote:
Fixed. `locate_source_file` now returns lldb.SBFileSpec. Added
ExtractValueFromPythonObject<FileSpec> with the SWIG cast pattern, and
Dispatch<FileSpec> in the C++ interface. Updated the template, test locator,
and tutorial.
https://github.com/llvm/llvm-project/pull/181334
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits