<div dir="ltr">Hi,<div dir="auto"><div dir="auto"><font size="2">Last year there was an effort led by Tom Tromey to add Rust language support into LLDB.  He had implemented a fairly complete language plugin, however it was not accepted into mainline because of supportability concerns.    I guess these concerns had some merit, because this change <a href="https://github.com/rust-lang/llvm-project/pull/19" target="_blank"><font size="2">did not survive even in Rust's private branch</font></a> due to the difficulty of rebasing on top of LLVM 9.</font></div><div dir="auto"><font size="2"><br></font></div><div><font size="2">I am wondering if there's a more limited version of this, that <i>can</i> be merged into mainline:</font></div><div><font size="2">In terms of its memory model, Rust is not that far off from C++, so treating Rust types is if they were C++ types basically works.  There is only one major problem: currently LLDB cannot deal with tagged unions, which Rust code uses quite heavily.   When such a type is encountered, LLDB just emits an empty struct, which makes it impossible to examine the contents.</font></div><div><font size="2"><br></font></div><div><font size="2">My tentative proposal is to modify LLDB's DWARFASTParserClang to handle DW_TAG_variant et al, and create a C++ approximation of these types, e.g. as a polymorphic class, or just an untagged union.   This would provide at least a minimal level of functionality for Rust (and possibly other languages) and be a much lesser maintenance burden on LLDB core team.  <br></font></div><div><font size="2">What would y'all say?<br></font></div><div><font size="2"><br></font></div></div></div>