[Lldb-commits] [lldb] [lldb][test] Fix D lang mangling test on Windows (PR #94196)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Mon Jun 3 02:08:32 PDT 2024
https://github.com/DavidSpickett created https://github.com/llvm/llvm-project/pull/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.
>From 5a3b6909601f742828d02357998be1c1338613ed Mon Sep 17 00:00:00 2001
From: David Spickett <david.spickett at linaro.org>
Date: Mon, 3 Jun 2024 09:04:01 +0000
Subject: [PATCH] [lldb][test] Fix D lang mangling test on Windows
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.
---
lldb/test/API/lang/c/non-mangled/TestCNonMangled.py | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
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")
More information about the lldb-commits
mailing list