Skip to content

Commit

Permalink
Have GetSupportedArchitectures report all supported arches
Browse files Browse the repository at this point in the history
PlatformDarwinKernel::GetSupportedArchitectures returns a list
of architectures that are possible for this platform; it was using
a compile-time check for the debug host to decide the list of arches
that were valid.  This was copied from a codepath doing native process
debugging, and was clearly wrong for kernel debugging, but it had
not happened to cause problems so it went unnoticed for a long time.

Small NFC change to the logging messages of Target::SetArchitecture
to make them a little more explicit about how the architecture is
being modified/replaced.

Differential Revision: https://reviews.llvm.org/D137301
rdar://101690111
  • Loading branch information
jasonmolenda committed Nov 3, 2022
1 parent 7e133eb commit fd2065b
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
3 changes: 0 additions & 3 deletions lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp
Expand Up @@ -986,11 +986,8 @@ bool PlatformDarwinKernel::LoadPlatformBinaryAndSetup(Process *process,
std::vector<ArchSpec> PlatformDarwinKernel::GetSupportedArchitectures(
const ArchSpec &process_host_arch) {
std::vector<ArchSpec> result;
#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
ARMGetSupportedArchitectures(result);
#else
x86GetSupportedArchitectures(result);
#endif
return result;
}

Expand Down
17 changes: 12 additions & 5 deletions lldb/source/Target/Target.cpp
Expand Up @@ -1436,7 +1436,8 @@ void Target::SetExecutableModule(ModuleSP &executable_sp,
if (!m_arch.GetSpec().IsValid()) {
m_arch = executable_sp->GetArchitecture();
LLDB_LOG(log,
"setting architecture to {0} ({1}) based on executable file",
"Target::SetExecutableModule setting architecture to {0} ({1}) "
"based on executable file",
m_arch.GetSpec().GetArchitectureName(),
m_arch.GetSpec().GetTriple().getTriple());
}
Expand Down Expand Up @@ -1536,17 +1537,23 @@ bool Target::SetArchitecture(const ArchSpec &arch_spec, bool set_platform,
// specified
if (replace_local_arch)
m_arch = other;
LLDB_LOG(log, "set architecture to {0} ({1})",
LLDB_LOG(log,
"Target::SetArchitecture merging compatible arch; arch "
"is now {0} ({1})",
m_arch.GetSpec().GetArchitectureName(),
m_arch.GetSpec().GetTriple().getTriple());
return true;
}

// If we have an executable file, try to reset the executable to the desired
// architecture
LLDB_LOGF(log, "Target::SetArchitecture changing architecture to %s (%s)",
arch_spec.GetArchitectureName(),
arch_spec.GetTriple().getTriple().c_str());
LLDB_LOGF(
log,
"Target::SetArchitecture changing architecture to %s (%s) from %s (%s)",
arch_spec.GetArchitectureName(),
arch_spec.GetTriple().getTriple().c_str(),
m_arch.GetSpec().GetArchitectureName(),
m_arch.GetSpec().GetTriple().getTriple().c_str());
m_arch = other;
ModuleSP executable_sp = GetExecutableModule();

Expand Down

0 comments on commit fd2065b

Please sign in to comment.