"""Test __ptrauth type qualifier.""" import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil from lldbsuite.test.lldbarm64e import Arm64eTestBase class TestPtrAuth(Arm64eTestBase): NO_DEBUG_INFO_TESTCASE = True SHARED_BUILD_TESTCASE = False def test(self): self.build() _, process, _, _ = lldbutil.run_to_source_breakpoint( self, "// break in main", lldb.SBFileSpec("main.c") ) self.expect( "target var valid0", substrs=["(int *__ptrauth(2,0,0))", "valid0 =", "(actual=0x"], ) self.expect( "target var valid1", substrs=["(int *__ptrauth(2,0,0) *)", "valid1 ="], ) self.expect( "target var valid2", substrs=["(__ptrauth(2,0,0) intp)", "valid2 =", "(actual=0x"], ) self.expect( "target var valid3", substrs=["(__ptrauth(2,0,0) intp *)", "valid3 ="], ) self.expect( "target var valid4", substrs=["(__ptrauth(2,0,0) intp)", "valid4 =", "(actual=0x"], ) bkpt = self.target().BreakpointCreateBySourceRegex( "// break in test_code", lldb.SBFileSpec("main.c") ) self.assertGreater(bkpt.GetNumLocations(), 0) lldbutil.continue_to_breakpoint(process, bkpt) self.expect( "fr var pSpecial", substrs=["(__ptrauth(2,0,0) intp)", "pSpecial =", "(actual=0x"], ) self.expect("fr var *pSpecial", substrs=["5"]) self.expect( "p pSpecial", substrs=["(__ptrauth(2,0,0) intp)", "(actual=0x"], )