Skip to content

Commit 6a86bf3

Browse files
Merge pull request #71692 from aschwaighofer/metadata_reader_fix_objc_sym_refs
MetadataReader: Allow for an unresolved pointer to be returned by getSymbol
2 parents e021534 + ead0260 commit 6a86bf3

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

include/swift/Remote/MetadataReader.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,13 +517,30 @@ class MetadataReader {
517517
// 'resolved' points to a struct of two relative addresses.
518518
// The second entry is a relative address to the mangled protocol
519519
// without symbolic references.
520+
521+
// lldb might return an unresolved remote absolute pointer from its
522+
// resolvePointerAsSymbol implementation -- workaround this.
523+
if (!resolved.isResolved()) {
524+
auto remoteAddr = RemoteAddress(remoteAddress);
525+
resolved =
526+
RemoteAbsolutePointer("", remoteAddr.getAddressData());
527+
}
528+
520529
auto addr =
521530
resolved.getResolvedAddress().getAddressData() + sizeof(int32_t);
522531
int32_t offset;
523532
Reader->readInteger(RemoteAddress(addr), &offset);
524533
auto addrOfTypeRef = addr + offset;
525534
resolved = Reader->getSymbol(RemoteAddress(addrOfTypeRef));
526535

536+
// lldb might return an unresolved remote absolute pointer from its
537+
// resolvePointerAsSymbol implementation -- workaround this.
538+
if (!resolved.isResolved()) {
539+
auto remoteAddr = RemoteAddress(addrOfTypeRef);
540+
resolved =
541+
RemoteAbsolutePointer("", remoteAddr.getAddressData());
542+
}
543+
527544
// Dig out the protocol from the protocol list.
528545
auto protocolList = readMangledName(resolved.getResolvedAddress(),
529546
MangledNameKind::Type, dem);

0 commit comments

Comments
 (0)