4 Commits

Author SHA1 Message Date
David Spickett
6abf361953
[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.
2024-06-03 10:18:39 +01:00
David Spickett
770b6c7924 [lldb][test] Add missing import in D lang mangling test 2024-06-03 09:16:49 +00:00
David Spickett
09c0607919 [lldb][test] Skip D lang mangling test on Windows
While the fix is reviewed.
2024-06-03 09:02:06 +00:00
Dave Lee
5a02a9a2e6
[lldb] Improve identification of Dlang mangled names (#93881)
Reduce false positive identification of C names as Dlang mangled names. This happens 
when a C function uses the prefix `_D`.

The [Dlang ABI](https://dlang.org/spec/abi.html#name_mangling) shows that mangled names 
have a length immediately following the `_D` prefix. This change checks for a digit 
after the `_D` prefix, when identifying the mangling scheme of a symbol. This doesn't 
prevent false positives entirely, but does make it less likely.
2024-05-31 11:20:23 -07:00