From f81d6fe75ca17bd3a5153a0d7bae853b977c5ea2 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Wed, 7 Aug 2019 22:40:05 +0000 Subject: Adjust a ValueObjectChild's offset when the child is a bitfield If a bitfield doesn't fit into the child_byte_size'd window at child_byte_offset, move the window forward until it fits. The problem here is that Value has no notion of bitfields and thus the Value's DataExtractor is sized like the bitfields CompilerType; a sequence of bitfields, however, can be larger than their underlying type. This was not in the big-endian-derived DWARF 2 bitfield attributes because their offsets were counted from the end of the window, so they always fit. rdar://problem/53132189 Differential Revision: https://reviews.llvm.org/D65492 llvm-svn: 368226 --- lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c') diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c b/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c index c21cfc9a9fb..35faac3b6c3 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c +++ b/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c @@ -90,6 +90,14 @@ int main (int argc, char const *argv[]) packed.b = 10; packed.c = 0x7112233; + struct LargePackedBits { + unsigned long a: 36; + unsigned long b: 36; + } __attribute__((packed)); + + struct LargePackedBits large_packed = + (struct LargePackedBits){ 0xcbbbbaaaa, 0xdffffeeee }; + return 0; //// Set break point at this line. } -- cgit v1.2.3