import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil class TestPtrAuthObjectiveC(TestBase): NO_DEBUG_INFO_TESTCASE = True @skipUnlessArm64eSupported def test_objc_message_send(self): self.build() lldbutil.run_to_source_breakpoint( self, "// break here", lldb.SBFileSpec("main.m", False) ) self.expect_expr( "[obj doubleValue]", result_type="int", result_value="42", ) @skipUnlessArm64eSupported def test_objc_message_send_with_arg(self): self.build() lldbutil.run_to_source_breakpoint( self, "// break here", lldb.SBFileSpec("main.m", False) ) self.expect_expr( "[obj addValue:9]", result_type="int", result_value="30", ) @skipUnlessArm64eSupported def test_objc_alloc_and_message(self): self.build() lldbutil.run_to_source_breakpoint( self, "// break here", lldb.SBFileSpec("main.m", False) ) self.expect_expr( "PtrAuthTestObj *tmp = (PtrAuthTestObj *)[[PtrAuthTestObj alloc] init]; " "tmp.value = 7; [tmp doubleValue]", result_type="int", result_value="14", ) @skipUnlessArm64eSupported def test_objc_derived_class(self): self.build() lldbutil.run_to_source_breakpoint( self, "// break here", lldb.SBFileSpec("main.m", False) ) self.expect_expr( "[derived tripleValue]", result_type="int", result_value="30", ) self.expect_expr( "[derived doubleValue]", result_type="int", result_value="20", ) @skipUnlessArm64eSupported def test_objc_isa_check(self): self.build() lldbutil.run_to_source_breakpoint( self, "// break here", lldb.SBFileSpec("main.m", False) ) self.expect_expr( "(bool)[derived isKindOfClass:[PtrAuthTestObj class]]", result_type="bool", result_value="true", ) self.expect_expr( "(bool)[obj isKindOfClass:[PtrAuthDerived class]]", result_type="bool", result_value="false", )