diff options
author | Adrian Prantl <aprantl@apple.com> | 2024-02-23 09:58:17 -0800 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2024-02-26 09:57:07 -0800 |
commit | f9f331652d4f0aff9ece3570abe8c686cdfefff4 (patch) | |
tree | 48004fd5b5a3f7acb26cb7d98990eb2bbdbdae1e /lldb/source | |
parent | b876596a76cdc183439b36455d26883b67f8ee51 (diff) | |
download | llvm-f9f331652d4f0aff9ece3570abe8c686cdfefff4.zip llvm-f9f331652d4f0aff9ece3570abe8c686cdfefff4.tar.gz llvm-f9f331652d4f0aff9ece3570abe8c686cdfefff4.tar.bz2 |
Replace ArchSpec::PiecewiseCompare() with Triple::operator==()
Looking ast the definition of both functions this is *almost* an NFC
change, except that Triple also looks at the SubArch (important) and
ObjectFormat (less so).
This fixes a bug that only manifests with how Xcode uses the SBAPI to
attach to a process by name: it guesses the architecture based on the
system. If the system is arm64 and the Process is arm64e Target fails
to update the triple because it deemed the two to be equivalent.
rdar://123338218
Diffstat (limited to 'lldb/source')
-rw-r--r-- | lldb/source/Target/Target.cpp | 8 | ||||
-rw-r--r-- | lldb/source/Utility/ArchSpec.cpp | 17 |
2 files changed, 1 insertions, 24 deletions
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index e17bfcb..e982a30 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -1568,14 +1568,8 @@ bool Target::SetArchitecture(const ArchSpec &arch_spec, bool set_platform, if (m_arch.GetSpec().IsCompatibleMatch(other)) { compatible_local_arch = true; - bool arch_changed, vendor_changed, os_changed, os_ver_changed, - env_changed; - m_arch.GetSpec().PiecewiseTripleCompare(other, arch_changed, - vendor_changed, os_changed, - os_ver_changed, env_changed); - - if (!arch_changed && !vendor_changed && !os_changed && !env_changed) + if (m_arch.GetSpec().GetTriple() == other.GetTriple()) replace_local_arch = false; } } diff --git a/lldb/source/Utility/ArchSpec.cpp b/lldb/source/Utility/ArchSpec.cpp index fb0e985..07ef435 100644 --- a/lldb/source/Utility/ArchSpec.cpp +++ b/lldb/source/Utility/ArchSpec.cpp @@ -1421,23 +1421,6 @@ bool ArchSpec::IsFullySpecifiedTriple() const { return true; } -void ArchSpec::PiecewiseTripleCompare( - const ArchSpec &other, bool &arch_different, bool &vendor_different, - bool &os_different, bool &os_version_different, bool &env_different) const { - const llvm::Triple &me(GetTriple()); - const llvm::Triple &them(other.GetTriple()); - - arch_different = (me.getArch() != them.getArch()); - - vendor_different = (me.getVendor() != them.getVendor()); - - os_different = (me.getOS() != them.getOS()); - - os_version_different = (me.getOSMajorVersion() != them.getOSMajorVersion()); - - env_different = (me.getEnvironment() != them.getEnvironment()); -} - bool ArchSpec::IsAlwaysThumbInstructions() const { std::string Status; if (GetTriple().getArch() == llvm::Triple::arm || |