[Lldb-commits] [lldb] [lldb][test] Fix D lang mangling test on Windows (PR #94196)

via lldb-commits lldb-commits at lists.llvm.org
Mon Jun 3 02:09:12 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-lldb

Author: David Spickett (DavidSpickett)

<details>
<summary>Changes</summary>

On Windows the function does not have a symbol associated with it:
       Function: id = {0x000001c9}, name = "_Dfunction", range = [0x0000000140001000-0x0000000140001004)
      LineEntry: <...>

Whereas it does on Linux:
       Function: id = {0x00000023}, name = "_Dfunction", range = [0x0000000000000734-0x0000000000000738)
      LineEntry: <...>
         Symbol: id = {0x00000058}, range = [0x0000000000000734-0x0000000000000738), name="_Dfunction"

This means that frame.symbol is not valid on Windows.

However, frame.function is valid and it also has a "mangled" attribute.

So I've updated the test to check the symbol if we've got it, and the function always.

In both cases we check that mangled is empty (meaning it has not been treated as mangled) and that the display name matches the original symbol name.

---
Full diff: https://github.com/llvm/llvm-project/pull/94196.diff


1 Files Affected:

- (modified) lldb/test/API/lang/c/non-mangled/TestCNonMangled.py (+11-2) 


``````````diff
diff --git a/lldb/test/API/lang/c/non-mangled/TestCNonMangled.py b/lldb/test/API/lang/c/non-mangled/TestCNonMangled.py
index c35d8a9bb9163..c16a1185acb97 100644
--- a/lldb/test/API/lang/c/non-mangled/TestCNonMangled.py
+++ b/lldb/test/API/lang/c/non-mangled/TestCNonMangled.py
@@ -12,5 +12,14 @@ def test_functions_having_dlang_mangling_prefix(self):
         """
         self.build()
         _, _, thread, _ = lldbutil.run_to_name_breakpoint(self, "_Dfunction")
-        symbol = thread.frame[0].symbol
-        self.assertEqual(symbol.GetDisplayName(), "_Dfunction")
+        frame = thread.frame[0]
+
+        symbol = frame.symbol
+        # On Windows the function does not have an associated symbol.
+        if symbol.IsValid():
+            self.assertFalse(symbol.mangled)
+            self.assertEqual(symbol.GetDisplayName(), "_Dfunction")
+
+        function = frame.function
+        self.assertFalse(function.mangled)
+        self.assertEqual(function.GetDisplayName(), "_Dfunction")

``````````

</details>


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


More information about the lldb-commits mailing list