Skip to content

Commit 04ca7e2

Browse files
authored
Merge pull request #23099 from mikeash/dont-require-taggedpointer-obfuscator-5.1
2 parents 6e6b7e4 + 304979a commit 04ca7e2

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

include/swift/Remote/MetadataReader.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2471,8 +2471,13 @@ class MetadataReader {
24712471
TaggedPointerExtendedClasses =
24722472
TaggedPointerExtendedClassesAddr.getAddressData();
24732473

2474-
tryFindAndReadSymbol(TaggedPointerObfuscator,
2475-
"objc_debug_taggedpointer_obfuscator");
2474+
// The tagged pointer obfuscator is not present on older OSes, in
2475+
// which case we can treat it as zero.
2476+
TaggedPointerObfuscator = 0;
2477+
auto TaggedPointerObfuscatorAddr = Reader->getSymbolAddress(
2478+
"objc_debug_taggedpointer_obfuscator");
2479+
if (TaggedPointerObfuscatorAddr)
2480+
tryReadSymbol(TaggedPointerObfuscatorAddr, TaggedPointerObfuscator);
24762481

24772482
# undef tryFindSymbol
24782483
# undef tryReadSymbol

stdlib/tools/swift-reflection-test/swift-reflection-test.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ static void errnoAndExit(const char *message) {
6666
abort();
6767
}
6868

69+
#if 0
70+
#include <inttypes.h>
71+
#define DEBUG_LOG(fmt, ...) fprintf(stderr, "%s: " fmt "\n",\
72+
__func__, __VA_ARGS__)
73+
#else
74+
#define DEBUG_LOG(fmt, ...) (void)0
75+
#endif
76+
6977
static const size_t ReadEnd = 0;
7078
static const size_t WriteEnd = 1;
7179

@@ -143,6 +151,8 @@ const void *PipeMemoryReader_readBytes(void *Context, swift_addr_t Address,
143151
const PipeMemoryReader *Reader = (const PipeMemoryReader *)Context;
144152
uintptr_t TargetAddress = Address;
145153
size_t TargetSize = (size_t)Size;
154+
DEBUG_LOG("Requesting read of %zu bytes from 0x%" PRIxPTR,
155+
TargetSize, TargetAddress);
146156
int WriteFD = PipeMemoryReader_getParentWriteFD(Reader);
147157
write(WriteFD, REQUEST_READ_BYTES, 2);
148158
write(WriteFD, &TargetAddress, sizeof(TargetAddress));
@@ -162,12 +172,14 @@ swift_addr_t PipeMemoryReader_getSymbolAddress(void *Context,
162172
uint64_t Length) {
163173
const PipeMemoryReader *Reader = (const PipeMemoryReader *)Context;
164174
uintptr_t Address = 0;
175+
DEBUG_LOG("Requesting address of symbol %s", SymbolName);
165176
int WriteFD = PipeMemoryReader_getParentWriteFD(Reader);
166177
write(WriteFD, REQUEST_SYMBOL_ADDRESS, 2);
167178
write(WriteFD, SymbolName, Length);
168179
write(WriteFD, "\n", 1);
169180
PipeMemoryReader_collectBytesFromPipe(Reader, (uint8_t*)&Address,
170181
sizeof(Address));
182+
DEBUG_LOG("Address of %s is 0x%" PRIxPTR, SymbolName, Address);
171183
return (uintptr_t)Address;
172184
}
173185

@@ -177,6 +189,7 @@ PipeMemoryReader_receiveInstanceKind(const PipeMemoryReader *Reader) {
177189
write(WriteFD, REQUEST_INSTANCE_KIND, 2);
178190
uint8_t KindValue = 0;
179191
PipeMemoryReader_collectBytesFromPipe(Reader, &KindValue, sizeof(KindValue));
192+
DEBUG_LOG("Requested instance kind is %u", KindValue);
180193
return KindValue;
181194
}
182195

@@ -187,6 +200,7 @@ PipeMemoryReader_receiveInstanceAddress(const PipeMemoryReader *Reader) {
187200
uintptr_t InstanceAddress = 0;
188201
PipeMemoryReader_collectBytesFromPipe(Reader, (uint8_t *)&InstanceAddress,
189202
sizeof(InstanceAddress));
203+
DEBUG_LOG("Requested instance address is 0x%" PRIxPTR, InstanceAddress);
190204
return InstanceAddress;
191205
}
192206

@@ -222,6 +236,7 @@ PipeMemoryReader_receiveImages(SwiftReflectionContextRef RC,
222236
size_t NumReflectionInfos;
223237
PipeMemoryReader_collectBytesFromPipe(Reader, &NumReflectionInfos,
224238
sizeof(NumReflectionInfos));
239+
DEBUG_LOG("Receiving %z images from child", NumReflectionInfos);
225240

226241
if (NumReflectionInfos == 0)
227242
return;
@@ -232,6 +247,7 @@ PipeMemoryReader_receiveImages(SwiftReflectionContextRef RC,
232247
NumReflectionInfos * sizeof(*Images));
233248

234249
for (size_t i = 0; i < NumReflectionInfos; ++i) {
250+
DEBUG_LOG("Adding image at 0x%" PRIxPTR, Images[i].Start);
235251
swift_reflection_addImage(RC, Images[i].Start);
236252
}
237253

0 commit comments

Comments
 (0)