DavidSpickett added inline comments.

================
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()));
+
----------------
aprantl wrote:
> bulbazord wrote:
> > 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`.
> Are we saving a lot of code by going through the clang typesystem here, or 
> would walking the bits and formatting the directly be roughly the same amount 
> of code?
Funny you should mention that.

I was initially doing that, but in the RFC it was suggested I use the existing 
printers for C types 
(https://discourse.llvm.org/t/rfc-showing-register-fields-in-lldb/64676/2). 
There's also a hint that this would make assigning to specific fields more easy 
(though that is a very far off goal).

This is what the first version looked like:
```
(lldb) register read cpsr
    cpsr = 0x60001000
| N | Z | C | V | TCO | DIT | UAO | PAN | SS | IL | SSBS | BTYPE | D | A | I | 
F | nRW | EL | SP |
| 0 | 1 | 1 | 0 |  0  |  0  |  0  |  0  | 0  | 0  |  1   |   0   | 0 | 0 | 0 | 
0 |  0  | 0  | 0  |
```
Of course it would be refined based on line length and field size etc etc. A 
lot of the things the type printers already do, which is why using them looked 
like it would save some effort.

Some of that extra formatting code will get written anyway because I want to 
eventually add a register command that will show you the register layout. So 
table formatting is needed either way. That would produce something like:
```
(lldb) register info cpsr
| 31 | 30 | ...
| N  |  Z | ...
```

So overall no there's nothing preventing me from walking the bits. Assuming you 
already have code to format text tables nicely, it would be about the same 
amount of code.

I need to check if we have any generic table formatting code, or could extract 
some from somewhere.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D145580

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to