shafik added a comment. In D85376#2209638 <https://reviews.llvm.org/D85376#2209638>, @labath wrote:
> This manifested itself for variables in registers because those end up being > described as `eValueTypeScalar`, is that so? > > If that's the case, then I think this would also manifest for variables > described via `DW_OP_constu 0xdead, DW_OP_stack_value`. And if *that* is > true, then this could be tested a lot simpler by having a global variable > described by DW_OP_stack_value and "target variable"-ing it -- no makefiles, > no python, just a simple .s file. And it would run on all platforms, not just > darwin. > > `test/Shell/SymbolFile/DWARF/DW_OP_piece-struct.s` tests a very similar thing > in precisely this way. I suspect you could just take that test as a template > and replace the struct definition with one that contains bitfieds. This sounds like a great approach, I have unfortunately been struggling to get a test case that works. It looks like I am hitting another bug, I am not surprised b/c using slight variations on this code I have found other three other bugs with how we deal with `DW_OP_piece`, `DW_OP_bit_piece` and I think `DW_AT_const_value` respectively. I have been working w/ this: #include <stdio.h> typedef union { unsigned raw; struct { unsigned a : 8; unsigned b : 8; unsigned c : 6; unsigned d : 2; unsigned e : 6; unsigned f : 2; } ; } U; static U ug= (U)(unsigned)0x0; void f(U u) { printf( "%d\n", u.raw); return; } int main() { ug.raw = 0x64A40101; f(ug); printf( "%d\n", ug.raw); } and compiling as using `clang -O1 -gdwarf-4` but we obtain bad values: (lldb) target variable ug (U) ug = { raw = 3395301392 = (a = 16, b = 48, c = 32, d = 1, e = 10, f = 3) } I tried generating assembly and manually adjusting the debug info but I was not able to get very far there. FYI this was the DWARF expression it was generating: DW_AT_location (DW_OP_addr 0x100002010, DW_OP_deref_size 0x1, DW_OP_constu 0x64a40101, DW_OP_mul, DW_OP_lit0, DW_OP_plus, DW_OP_stack_value) If you can come up w/ a way to generate a test that produces correct values I am happy to use it! CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85376/new/ https://reviews.llvm.org/D85376 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits