[lldb] Only override target arch if it is compatible

It looks like the goal of this code is to provide a more precise
architecture definition for the target when attaching to a process. When
attaching to a foreign debugserver, you might get into a situation where
the active (host) platform will give you bogus information on the target
process.

This change allows the platform to override the target arch only with a
compatible architecture. This fixes TestTargetXMLArch.py on Apple
Silicon. Another alternative would be to just fail in this scenario and
update the test(s).
This commit is contained in:
Fred Riss 2020-05-05 17:49:24 -07:00 committed by Jonas Devlieghere
parent ded660495f
commit 87183b1a75
1 changed files with 3 additions and 1 deletions

View File

@ -2865,8 +2865,10 @@ void Process::CompleteAttach() {
ProcessInstanceInfo process_info;
GetProcessInfo(process_info);
const ArchSpec &process_arch = process_info.GetArchitecture();
const ArchSpec &target_arch = GetTarget().GetArchitecture();
if (process_arch.IsValid() &&
!GetTarget().GetArchitecture().IsExactMatch(process_arch)) {
target_arch.IsCompatibleMatch(process_arch) &&
!target_arch.IsExactMatch(process_arch)) {
GetTarget().SetArchitecture(process_arch);
LLDB_LOGF(log,
"Process::%s switching architecture to %s based on info "