[all-commits] [llvm/llvm-project] e84751: [lldb] Add basic support to Rust enums in TypeSyst...
Vladimir Makaev via All-commits
all-commits at lists.llvm.org
Wed Aug 16 18:35:30 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: e84751a21561c5b1d5673cdff8e22ac4cf2f5dc2
https://github.com/llvm/llvm-project/commit/e84751a21561c5b1d5673cdff8e22ac4cf2f5dc2
Author: Vladimir Makaev <vmakaev at gmail.com>
Date: 2023-08-17 (Thu, 17 Aug 2023)
Changed paths:
M lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
M lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h
A lldb/test/API/lang/rust/enum-structs/RustEnumValue.py
A lldb/test/API/lang/rust/enum-structs/TestRustEnumStructs.py
A lldb/test/API/lang/rust/enum-structs/main.rs
A lldb/test/API/lang/rust/enum-structs/main.yaml
Log Message:
-----------
[lldb] Add basic support to Rust enums in TypeSystemClang
LLDB doesn't yet have a TypeSystemRust implemented however it is used to debug Rust applications. Most of the types map well enough to Clang types and there are python formatters implemented to display those types reasonably well in a debugger.
However, Rust enums are completely ignored by LLDB as Clang never emits DW_TAG_variant_part inside DW_TAG_structure_type
This diff adds a parser for DW_TAG_variant_part (Rust-only) that creates a matching valid Clang declaration to the Rust enum. As long as there is enough information and all fields have correct offsets synthetic/summary providers can be implemented to display it correctly when debugging Rust code
Differential Revision: https://reviews.llvm.org/D149213
More information about the All-commits
mailing list