[Lldb-commits] [PATCH] D145580: [lldb] Show register fields using bitfield struct types

Alex Langford via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Mar 20 14:16:52 PDT 2023


bulbazord added a comment.

I'm supportive of this idea but I would like to find a way to do it without introducing dependencies on plugins in non-plugin code if possible.



================
Comment at: lldb/include/lldb/Core/DumpRegisterValue.h:12
 
+#include "Plugins/TypeSystem/Clang/TypeSystemClang.h"
 #include "lldb/lldb-enumerations.h"
----------------
JDevlieghere wrote:
> Core components (not just the Core libraries but basically everything that's not a plugin) shouldn't depend on plugins. There's still places in LLDB where this is the case but @bulbazord has been hard at work to clean those up. This would introduce a new one. Can we avoid this?
+1 Let's find a way to avoid this if possible. Perhaps we can use just `TypeSystem`?


================
Comment at: lldb/source/Commands/CommandObjectRegister.cpp:212-213
       } else {
+        TypeSystemClangSP type_system =
+            ScratchTypeSystemClang::GetForTarget(m_exe_ctx.GetTargetRef());
+        assert(type_system);
----------------
Instead of being specific to clang, it would be better if we could use `Target::GetScratchTypeSystemForLanguage(eLanguageTypeC)` or something to this effect.


================
Comment at: lldb/source/Core/DumpRegisterValue.cpp:136-137
+  // See if we have made this type before and can reuse it.
+  CompilerType fields_type = ast->GetTypeForIdentifier<clang::CXXRecordDecl>(
+      ConstString(register_type_name.c_str()));
+
----------------
This seems highly specific to C++... Let's try to find another way to do this, ideally with `TypeSystem` instead of `TypeSystemClang` and `clang::CXXRecordDecl`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145580/new/

https://reviews.llvm.org/D145580



More information about the lldb-commits mailing list