Skip to content

Commit 352ab19

Browse files
committed
Implement DLQ_GetPtrAuthMask using info from debugserver.
rdar://90718091
1 parent 96968bd commit 352ab19

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

lldb/source/Plugins/LanguageRuntime/Swift/LLDBMemoryReader.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,17 @@ namespace lldb_private {
1414
bool LLDBMemoryReader::queryDataLayout(DataLayoutQueryType type, void *inBuffer,
1515
void *outBuffer) {
1616
switch (type) {
17-
// FIXME: add support for case DLQ_GetPtrAuthMask rdar://70729149
18-
case DLQ_GetPtrAuthMask:
19-
return false;
17+
case DLQ_GetPtrAuthMask: {
18+
assert(m_process.GetCodeAddressMask() == m_process.GetDataAddressMask() &&
19+
"not supported");
20+
lldb::addr_t ptrauth_mask = m_process.GetCodeAddressMask();
21+
if (!ptrauth_mask)
22+
return false;
23+
// The mask returned by the process masks out the non-addressable bits.
24+
uint64_t mask_pattern = ~ptrauth_mask;
25+
memcpy(outBuffer, &mask_pattern, sizeof(uint64_t));
26+
return true;
27+
}
2028
case DLQ_GetObjCReservedLowBits: {
2129
auto *result = static_cast<uint8_t *>(outBuffer);
2230
auto &triple = m_process.GetTarget().GetArchitecture().GetTriple();

0 commit comments

Comments
 (0)