#include "lldb/Utility/ArchSpec.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/StringList.h"
#include "lldb/lldb-defines.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/BinaryFormat/COFF.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/BinaryFormat/MachO.h"
#include "llvm/BinaryFormat/XCOFF.h"
#include "llvm/Support/Compiler.h"
#include "llvm/TargetParser/ARMTargetParser.h"
usingnamespacelldb;
usingnamespacelldb_private;
static bool cores_match(const ArchSpec::Core core1, const ArchSpec::Core core2,
bool try_inverse, bool enforce_exact_match);
namespace lldb_private {
struct CoreDefinition { … };
}
static const CoreDefinition g_core_definitions[] = …;
static_assert …;
struct ArchDefinitionEntry { … };
struct ArchDefinition { … };
void ArchSpec::ListSupportedArchNames(StringList &list) { … }
void ArchSpec::AutoComplete(CompletionRequest &request) { … }
#define CPU_ANY …
#define SUBTYPE_MASK …
static const ArchDefinitionEntry g_macho_arch_entries[] = …;
static const ArchDefinition g_macho_arch_def = …;
static const ArchDefinitionEntry g_elf_arch_entries[] = …;
static const ArchDefinition g_elf_arch_def = …;
static const ArchDefinitionEntry g_coff_arch_entries[] = …;
static const ArchDefinition g_coff_arch_def = …;
static const ArchDefinitionEntry g_xcoff_arch_entries[] = …;
static const ArchDefinition g_xcoff_arch_def = …;
static const ArchDefinition *g_arch_definitions[] = …;
static const ArchDefinition *FindArchDefinition(ArchitectureType arch_type) { … }
static const CoreDefinition *FindCoreDefinition(llvm::StringRef name) { … }
static inline const CoreDefinition *FindCoreDefinition(ArchSpec::Core core) { … }
static const ArchDefinitionEntry *
FindArchDefinitionEntry(const ArchDefinition *def, uint32_t cpu, uint32_t sub) { … }
static const ArchDefinitionEntry *
FindArchDefinitionEntry(const ArchDefinition *def, ArchSpec::Core core) { … }
ArchSpec::ArchSpec() = default;
ArchSpec::ArchSpec(const char *triple_cstr) { … }
ArchSpec::ArchSpec(llvm::StringRef triple_str) { … }
ArchSpec::ArchSpec(const llvm::Triple &triple) { … }
ArchSpec::ArchSpec(ArchitectureType arch_type, uint32_t cpu, uint32_t subtype) { … }
ArchSpec::~ArchSpec() = default;
void ArchSpec::Clear() { … }
const char *ArchSpec::GetArchitectureName() const { … }
bool ArchSpec::IsMIPS() const { … }
std::string ArchSpec::GetTargetABI() const { … }
void ArchSpec::SetFlags(const std::string &elf_abi) { … }
std::string ArchSpec::GetClangTargetCPU() const { … }
uint32_t ArchSpec::GetMachOCPUType() const { … }
uint32_t ArchSpec::GetMachOCPUSubType() const { … }
uint32_t ArchSpec::GetDataByteSize() const { … }
uint32_t ArchSpec::GetCodeByteSize() const { … }
llvm::Triple::ArchType ArchSpec::GetMachine() const { … }
uint32_t ArchSpec::GetAddressByteSize() const { … }
ByteOrder ArchSpec::GetDefaultEndian() const { … }
bool ArchSpec::CharIsSignedByDefault() const { … }
lldb::ByteOrder ArchSpec::GetByteOrder() const { … }
bool ArchSpec::SetTriple(const llvm::Triple &triple) { … }
bool lldb_private::ParseMachCPUDashSubtypeTriple(llvm::StringRef triple_str,
ArchSpec &arch) { … }
bool ArchSpec::SetTriple(llvm::StringRef triple) { … }
bool ArchSpec::ContainsOnlyArch(const llvm::Triple &normalized_triple) { … }
void ArchSpec::MergeFrom(const ArchSpec &other) { … }
bool ArchSpec::SetArchitecture(ArchitectureType arch_type, uint32_t cpu,
uint32_t sub, uint32_t os) { … }
uint32_t ArchSpec::GetMinimumOpcodeByteSize() const { … }
uint32_t ArchSpec::GetMaximumOpcodeByteSize() const { … }
static bool IsCompatibleEnvironment(llvm::Triple::EnvironmentType lhs,
llvm::Triple::EnvironmentType rhs) { … }
bool ArchSpec::IsMatch(const ArchSpec &rhs, MatchType match) const { … }
void ArchSpec::UpdateCore() { … }
void ArchSpec::CoreUpdated(bool update_triple) { … }
static bool cores_match(const ArchSpec::Core core1, const ArchSpec::Core core2,
bool try_inverse, bool enforce_exact_match) { … }
bool lldb_private::operator<(const ArchSpec &lhs, const ArchSpec &rhs) { … }
bool lldb_private::operator==(const ArchSpec &lhs, const ArchSpec &rhs) { … }
bool ArchSpec::IsFullySpecifiedTriple() const { … }
bool ArchSpec::IsAlwaysThumbInstructions() const { … }
void ArchSpec::DumpTriple(llvm::raw_ostream &s) const { … }