[Lldb-commits] [lldb] 6abf361 - [lldb][test] Fix D lang mangling test on Windows (#94196)
via lldb-commits
lldb-commits at lists.llvm.org
Mon Jun 3 02:18:43 PDT 2024
Author: David Spickett
Date: 2024-06-03T10:18:39+01:00
New Revision: 6abf361953e9c5d019a72fd83765498d269eb080
URL: https://github.com/llvm/llvm-project/commit/6abf361953e9c5d019a72fd83765498d269eb080
DIFF: https://github.com/llvm/llvm-project/commit/6abf361953e9c5d019a72fd83765498d269eb080.diff
LOG: [lldb][test] Fix D lang mangling test on Windows (#94196)
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.
Added:
Modified:
lldb/test/API/lang/c/non-mangled/TestCNonMangled.py
Removed:
################################################################################
diff --git a/lldb/test/API/lang/c/non-mangled/TestCNonMangled.py b/lldb/test/API/lang/c/non-mangled/TestCNonMangled.py
index b10a3d6da30a1..6f7ef247b063a 100644
--- a/lldb/test/API/lang/c/non-mangled/TestCNonMangled.py
+++ b/lldb/test/API/lang/c/non-mangled/TestCNonMangled.py
@@ -1,10 +1,8 @@
import lldbsuite.test.lldbutil as lldbutil
from lldbsuite.test.lldbtest import *
-from lldbsuite.test.decorators import skipIfWindows
class TestCase(TestBase):
- @skipIfWindows
def test_functions_having_dlang_mangling_prefix(self):
"""
Ensure C functions with a '_D' prefix alone are not mistakenly treated
@@ -13,5 +11,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")
More information about the lldb-commits
mailing list