mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Reflection] Add some (disabled by default) debug logging in swift-reflection-test.c.
This commit is contained in:
@@ -66,6 +66,14 @@ static void errnoAndExit(const char *message) {
|
|||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#include <inttypes.h>
|
||||||
|
#define DEBUG_LOG(fmt, ...) fprintf(stderr, "%s: " fmt "\n",\
|
||||||
|
__func__, __VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define DEBUG_LOG(fmt, ...) (void)0
|
||||||
|
#endif
|
||||||
|
|
||||||
static const size_t ReadEnd = 0;
|
static const size_t ReadEnd = 0;
|
||||||
static const size_t WriteEnd = 1;
|
static const size_t WriteEnd = 1;
|
||||||
|
|
||||||
@@ -143,6 +151,8 @@ const void *PipeMemoryReader_readBytes(void *Context, swift_addr_t Address,
|
|||||||
const PipeMemoryReader *Reader = (const PipeMemoryReader *)Context;
|
const PipeMemoryReader *Reader = (const PipeMemoryReader *)Context;
|
||||||
uintptr_t TargetAddress = Address;
|
uintptr_t TargetAddress = Address;
|
||||||
size_t TargetSize = (size_t)Size;
|
size_t TargetSize = (size_t)Size;
|
||||||
|
DEBUG_LOG("Requesting read of %zu bytes from 0x%" PRIxPTR,
|
||||||
|
TargetSize, TargetAddress);
|
||||||
int WriteFD = PipeMemoryReader_getParentWriteFD(Reader);
|
int WriteFD = PipeMemoryReader_getParentWriteFD(Reader);
|
||||||
write(WriteFD, REQUEST_READ_BYTES, 2);
|
write(WriteFD, REQUEST_READ_BYTES, 2);
|
||||||
write(WriteFD, &TargetAddress, sizeof(TargetAddress));
|
write(WriteFD, &TargetAddress, sizeof(TargetAddress));
|
||||||
@@ -162,12 +172,14 @@ swift_addr_t PipeMemoryReader_getSymbolAddress(void *Context,
|
|||||||
uint64_t Length) {
|
uint64_t Length) {
|
||||||
const PipeMemoryReader *Reader = (const PipeMemoryReader *)Context;
|
const PipeMemoryReader *Reader = (const PipeMemoryReader *)Context;
|
||||||
uintptr_t Address = 0;
|
uintptr_t Address = 0;
|
||||||
|
DEBUG_LOG("Requesting address of symbol %s", SymbolName);
|
||||||
int WriteFD = PipeMemoryReader_getParentWriteFD(Reader);
|
int WriteFD = PipeMemoryReader_getParentWriteFD(Reader);
|
||||||
write(WriteFD, REQUEST_SYMBOL_ADDRESS, 2);
|
write(WriteFD, REQUEST_SYMBOL_ADDRESS, 2);
|
||||||
write(WriteFD, SymbolName, Length);
|
write(WriteFD, SymbolName, Length);
|
||||||
write(WriteFD, "\n", 1);
|
write(WriteFD, "\n", 1);
|
||||||
PipeMemoryReader_collectBytesFromPipe(Reader, (uint8_t*)&Address,
|
PipeMemoryReader_collectBytesFromPipe(Reader, (uint8_t*)&Address,
|
||||||
sizeof(Address));
|
sizeof(Address));
|
||||||
|
DEBUG_LOG("Address of %s is 0x%" PRIxPTR, SymbolName, Address);
|
||||||
return (uintptr_t)Address;
|
return (uintptr_t)Address;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,6 +189,7 @@ PipeMemoryReader_receiveInstanceKind(const PipeMemoryReader *Reader) {
|
|||||||
write(WriteFD, REQUEST_INSTANCE_KIND, 2);
|
write(WriteFD, REQUEST_INSTANCE_KIND, 2);
|
||||||
uint8_t KindValue = 0;
|
uint8_t KindValue = 0;
|
||||||
PipeMemoryReader_collectBytesFromPipe(Reader, &KindValue, sizeof(KindValue));
|
PipeMemoryReader_collectBytesFromPipe(Reader, &KindValue, sizeof(KindValue));
|
||||||
|
DEBUG_LOG("Requested instance kind is %u", KindValue);
|
||||||
return KindValue;
|
return KindValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,6 +200,7 @@ PipeMemoryReader_receiveInstanceAddress(const PipeMemoryReader *Reader) {
|
|||||||
uintptr_t InstanceAddress = 0;
|
uintptr_t InstanceAddress = 0;
|
||||||
PipeMemoryReader_collectBytesFromPipe(Reader, (uint8_t *)&InstanceAddress,
|
PipeMemoryReader_collectBytesFromPipe(Reader, (uint8_t *)&InstanceAddress,
|
||||||
sizeof(InstanceAddress));
|
sizeof(InstanceAddress));
|
||||||
|
DEBUG_LOG("Requested instance address is 0x%" PRIxPTR, InstanceAddress);
|
||||||
return InstanceAddress;
|
return InstanceAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,6 +236,7 @@ PipeMemoryReader_receiveImages(SwiftReflectionContextRef RC,
|
|||||||
size_t NumReflectionInfos;
|
size_t NumReflectionInfos;
|
||||||
PipeMemoryReader_collectBytesFromPipe(Reader, &NumReflectionInfos,
|
PipeMemoryReader_collectBytesFromPipe(Reader, &NumReflectionInfos,
|
||||||
sizeof(NumReflectionInfos));
|
sizeof(NumReflectionInfos));
|
||||||
|
DEBUG_LOG("Receiving %z images from child", NumReflectionInfos);
|
||||||
|
|
||||||
if (NumReflectionInfos == 0)
|
if (NumReflectionInfos == 0)
|
||||||
return;
|
return;
|
||||||
@@ -232,6 +247,7 @@ PipeMemoryReader_receiveImages(SwiftReflectionContextRef RC,
|
|||||||
NumReflectionInfos * sizeof(*Images));
|
NumReflectionInfos * sizeof(*Images));
|
||||||
|
|
||||||
for (size_t i = 0; i < NumReflectionInfos; ++i) {
|
for (size_t i = 0; i < NumReflectionInfos; ++i) {
|
||||||
|
DEBUG_LOG("Adding image at 0x%" PRIxPTR, Images[i].Start);
|
||||||
swift_reflection_addImage(RC, Images[i].Start);
|
swift_reflection_addImage(RC, Images[i].Start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user