[Lldb-commits] [lldb] [lldb][Expression] Encode Module and DIE UIDs into function AsmLabels (PR #148877)

Michael Buch via lldb-commits lldb-commits at lists.llvm.org
Fri Jul 25 09:11:50 PDT 2025


================
@@ -96,6 +96,31 @@ class Expression {
                                  ///invalid.
 };
 
+/// Holds parsed information about a function call label that
+/// LLDB attaches as an AsmLabel to function AST nodes it parses
+/// from debug-info.
+///
+/// The format being:
+///
+///   <prefix>:<mangled name>:<module id>:<DIE id>
+///
+/// The label string needs to stay valid for the entire lifetime
+/// of this object.
+struct FunctionCallLabel {
+  llvm::StringRef m_lookup_name;
+  lldb::user_id_t m_module_id;
+
+  /// Mostly for debuggability.
+  lldb::user_id_t m_die_id;
+};
+
+/// LLDB attaches this prefix to mangled names of functions that it get called
+/// from JITted expressions.
+inline constexpr llvm::StringRef FunctionCallLabelPrefix = "$__lldb_func";
+
+bool consumeFunctionCallLabelPrefix(llvm::StringRef &name);
----------------
Michael137 wrote:

> That said, we might be able to use the llvm \01 mangling escape prefix to avoid this difference. Clang seems to do that automatically:

Good point. LLDB disabled the mangling prefix in:
```
commit f6bc251274f39dee5d09f668a56922c88bd027d8
Author: Vedant Kumar <vsk at apple.com>
Date:   Wed Sep 25 18:00:31 2019 +0000

    [Mangle] Add flag to asm labels to disable '\01' prefixing
    
    LLDB synthesizes decls using asm labels. These decls cannot have a mangle
    different than the one specified in the label name. I.e., the '\01' prefix
    should not be added.
    
    Fixes an expression evaluation failure in lldb's TestVirtual.py on iOS.
```

But that wouldn't apply with this patch anymore since we're doing the handling of the AsmLabel ourselves.

Didn't realize that the `\01` prevents the global mangling prefix to get added into the IR names.

I'll go with this approach. Then we don't need these APIs either

https://github.com/llvm/llvm-project/pull/148877


More information about the lldb-commits mailing list