Skip to content

Commit 844d502

Browse files
Merge pull request #11380 from felipepiovezan/felipe/ptr_metadat_test_fixes
[lldb][swift] Fix handling of pointer metadata in swift tests
2 parents 61cfe2f + 92fb650 commit 844d502

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

lldb/source/Plugins/Language/Swift/SwiftFormatters.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -863,6 +863,8 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
863863
m_ts->GetTypeFromMangledTypename(ConstString("$sSVD"));
864864

865865
addr_t value = m_task_ptr;
866+
if (auto process_sp = m_backend.GetProcessSP())
867+
value = process_sp->FixDataAddress(value);
866868
DataExtractor data{reinterpret_cast<const void *>(&value),
867869
sizeof(value), endian::InlHostByteOrder(),
868870
sizeof(void *)};
@@ -903,7 +905,7 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
903905
parent_addr = 0;
904906
}
905907

906-
addr_t value = parent_addr;
908+
addr_t value = process_sp->FixDataAddress(parent_addr);
907909
DataExtractor data{reinterpret_cast<const void *>(&value),
908910
sizeof(value), endian::InlHostByteOrder(),
909911
sizeof(void *)};

lldb/test/API/lang/swift/async/frame/variables_multiple_frames/TestSwiftAsyncFrameVarMultipleFrames.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@ def read_ptr_from_memory(self, process, addr):
1717

1818
# Check that the CFA chain is correctly built
1919
def check_cfas(self, async_frames, process):
20-
async_cfas = list(map(lambda frame: frame.GetCFA(), async_frames))
20+
async_cfas = list(
21+
map(lambda frame: process.FixAddress(frame.GetCFA()), async_frames)
22+
)
2123
expected_cfas = [async_cfas[0]]
2224
# The CFA chain ends in nullptr.
2325
while expected_cfas[-1] != 0:
24-
expected_cfas.append(self.read_ptr_from_memory(process, expected_cfas[-1]))
26+
indirect_ctx = self.read_ptr_from_memory(process, expected_cfas[-1])
27+
expected_cfas.append(process.FixAddress(indirect_ctx))
2528

2629
self.assertEqual(async_cfas, expected_cfas[:-1])
2730

@@ -43,13 +46,10 @@ def check_async_regs_one_frame(self, frame, process):
4346

4447
cfa = frame.GetCFA()
4548
is_indirect = "await resume" in frame.GetFunctionName()
46-
async_register = frame.FindRegister(async_reg_name).GetValueAsUnsigned()
47-
49+
async_ctx = frame.FindRegister(async_reg_name).GetValueAsUnsigned()
4850
if is_indirect:
49-
deref_async_reg = self.read_ptr_from_memory(process, async_register)
50-
self.assertEqual(deref_async_reg, cfa)
51-
else:
52-
self.assertEqual(async_register, cfa)
51+
async_ctx = self.read_ptr_from_memory(process, async_ctx)
52+
self.assertEqual(process.FixAddress(async_ctx), process.FixAddress(cfa))
5353

5454
def check_async_regs(self, async_frames, process):
5555
for frame in async_frames:

0 commit comments

Comments
 (0)