================
@@ -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);
----------------
labath wrote:

Add a comment to say this accounts for the target-specific mangling prefix. 
Otherwise, it's not clear why one needs this function.
That said, we might be able to use the llvm `\01` mangling escape prefix to 
avoid this difference. Clang seems to do that automatically:
```
$ clang -target arm64-apple-macosx -x c -o - -S - <<<'void f() asm("FFF"); void 
f(){}' | grep FFF
        .globl  FFF                             ; -- Begin function FFF
FFF:                                    ; @"\01FFF"
```

https://github.com/llvm/llvm-project/pull/148877
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to