Skip TestAddressMasks API tests on 32-bit arm
TestAddressMasks failed on the lldb-arm-buntu bot with the
Code address mask test,
mask = process.GetAddressMask(lldb.eAddressMaskTypeAny)
process.SetAddressMask(lldb.eAddressMaskTypeCode, mask | 0x3)
self.assertEqual(
0x000002950001F694,
process.FixAddress(0x00265E950001F697, lldb.eAddressMaskTypeCode),
)
The API returned 0x000002950001f694 instead of the expected
0x00265e950001f696. The low bits differ because ABISysV_arm hardcodes
the Code address mask to clear the 0th bit, it doesn't use the
Process code mask. I didn't debug why some of the high bytes were
dropped. The address mask APIs are only important on 64-bit targets,
where many of the bits are not used for addressing and are used for
metadata instead, so I'm going to skip these tests on 32-bit arm
instead of debugging.
This commit is contained in:
@@ -19,6 +19,7 @@ class AddressMasksTestCase(TestBase):
|
||||
self.runCmd("settings set target.process.virtual-addressable-bits 0")
|
||||
self.runCmd("settings set target.process.highmem-virtual-addressable-bits 0")
|
||||
|
||||
@skipIf(archs=["arm"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit
|
||||
def test_address_masks(self):
|
||||
self.build()
|
||||
(target, process, t, bp) = lldbutil.run_to_source_breakpoint(
|
||||
@@ -79,6 +80,7 @@ class AddressMasksTestCase(TestBase):
|
||||
# AArch64 can have different address masks for high and low memory, when different
|
||||
# page tables are set up.
|
||||
@skipIf(archs=no_match(["arm64", "arm64e", "aarch64"]))
|
||||
@skipIf(archs=["arm"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit
|
||||
def test_address_masks_target_supports_highmem_tests(self):
|
||||
self.build()
|
||||
(target, process, t, bp) = lldbutil.run_to_source_breakpoint(
|
||||
@@ -111,6 +113,7 @@ class AddressMasksTestCase(TestBase):
|
||||
# On most targets where we have a single mask for all address range, confirm
|
||||
# that the high memory masks are ignored.
|
||||
@skipIf(archs=["arm64", "arm64e", "aarch64"])
|
||||
@skipIf(archs=["arm"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit
|
||||
def test_address_masks_target_no_highmem(self):
|
||||
self.build()
|
||||
(target, process, t, bp) = lldbutil.run_to_source_breakpoint(
|
||||
|
||||
Reference in New Issue
Block a user