| """Test that AArch64 PAC bits are stripped from address expression arguments""" |
| |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestPtrauthAddressExpressions(TestBase): |
| NO_DEBUG_INFO_TESTCASE = True |
| |
| # On Darwin systems, arch arm64e means ARMv8.3 with ptrauth |
| # ABI used. |
| @skipIf(archs=no_match(["arm64e"])) |
| def test(self): |
| # Skip this test if not running on AArch64 target that supports PAC |
| if not self.isAArch64PAuth(): |
| self.skipTest("Target must support pointer authentication.") |
| self.source = "main.c" |
| self.build() |
| (self.target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint( |
| self, "break here", lldb.SBFileSpec(self.source, False) |
| ) |
| |
| self.expect("p fptr", substrs=[self.source]) |
| self.expect("ima loo -va fptr", substrs=[self.source]) |
| self.expect("break set -a fptr", substrs=[self.source]) |