57 lines · python
1import lldb2from lldbsuite.test.decorators import *3from lldbsuite.test.lldbtest import *4from lldbsuite.test import lldbutil5 6 7class TestBitfieldIvars(TestBase):8 def test(self):9 self.build()10 lldbutil.run_to_source_breakpoint(11 self, "// break here", lldb.SBFileSpec("main.m")12 )13 14 self.expect_expr(15 "chb->hb->field1", result_type="unsigned int", result_value="0"16 )17 ## This should happen second18 self.expect_expr(19 "chb->hb->field2", result_type="unsigned int", result_value="1"20 )21 22 self.expect_expr("hb2->field1", result_type="unsigned int", result_value="10")23 self.expect_expr("hb2->field2", result_type="unsigned int", result_value="3")24 self.expect_expr("hb2->field3", result_type="unsigned int", result_value="4")25 26 self.expect(27 "frame var *hb2",28 substrs=["x =", "100", "field1 =", "10", "field2 =", "3", "field3 =", "4"],29 )30 31 self.expect_expr(32 "myField",33 result_type="UCBitFields",34 result_children=[35 ValueCheck(name="fieldOne", value="'\\0'"),36 ValueCheck(name="fieldTwo", value="'\\x01'"),37 ValueCheck(name="fieldThree", value="'\\0'"),38 ValueCheck(name="fieldFour", value="'\\0'"),39 ValueCheck(name="fieldFive", value="'\\x01'"),40 ],41 )42 43 # This test is meant to be xfailed, but running the test triggers an ASan44 # issue, so it must be skipped for now.45 @skip46 def testExprWholeObject(self):47 self.build()48 lldbutil.run_to_source_breakpoint(49 self, "// break here", lldb.SBFileSpec("main.m")50 )51 52 ## FIXME expression with individual bit-fields obtains correct values but not with the whole object53 self.expect(54 "expr *hb2",55 substrs=["x =", "100", "field1 =", "10", "field2 =", "3", "field3 =", "4"],56 )57