Aim debugserver workaround more precisely. (#83099)

This commit is contained in:
Adrian Prantl 2024-02-27 08:14:46 -08:00 committed by GitHub
parent 8b56d9ef4d
commit 8a87f763a6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 9 deletions

View File

@ -17,6 +17,7 @@
#include "lldb/Core/ModuleSpec.h"
#include "lldb/Host/HostInfo.h"
#include "lldb/Host/SafeMachO.h"
#include "lldb/Host/XML.h"
#include "lldb/Symbol/Symbol.h"
#include "lldb/Target/MemoryRegionInfo.h"
@ -2147,8 +2148,20 @@ bool GDBRemoteCommunicationClient::GetCurrentProcessInfo(bool allow_lazy) {
if (!value.getAsInteger(16, cpu))
++num_keys_decoded;
} else if (name.equals("cpusubtype")) {
if (!value.getAsInteger(16, sub))
if (!value.getAsInteger(16, sub)) {
++num_keys_decoded;
// Workaround for pre-2024 Apple debugserver, which always
// returns arm64e on arm64e-capable hardware regardless of
// what the process is. This can be deleted at some point
// in the future.
if (cpu == llvm::MachO::CPU_TYPE_ARM64 &&
sub == llvm::MachO::CPU_SUBTYPE_ARM64E) {
if (GetGDBServerVersion())
if (m_gdb_server_version >= 1000 &&
m_gdb_server_version <= 1504)
sub = 0;
}
}
} else if (name.equals("triple")) {
StringExtractor extractor(value);
extractor.GetHexByteString(triple);

View File

@ -33,7 +33,6 @@
#include "lldb/Expression/UtilityFunction.h"
#include "lldb/Host/Host.h"
#include "lldb/Host/PosixApi.h"
#include "lldb/Host/SafeMachO.h"
#include "lldb/Host/StreamFile.h"
#include "lldb/Interpreter/CommandInterpreter.h"
#include "lldb/Interpreter/CommandReturnObject.h"
@ -1572,13 +1571,6 @@ bool Target::SetArchitecture(const ArchSpec &arch_spec, bool set_platform,
if (m_arch.GetSpec().GetTriple() == other.GetTriple())
replace_local_arch = false;
// Workaround for for pre-2024 debugserver, which always
// returns arm64e on arm64e-capable hardware regardless of
// what the process is. This can be deleted at some point in
// the future.
if (!m_arch.GetSpec().GetMachOCPUSubType() &&
other.GetMachOCPUSubType() == llvm::MachO::CPU_SUBTYPE_ARM64E)
replace_local_arch = true;
}
}
}