forked from OSchip/llvm-project
[ARC] Basic support in gdb-remote process plugin
Differential Revision: https://reviews.llvm.org/D55718 llvm-svn: 375122
This commit is contained in:
parent
e96e2d3227
commit
faf6b2543e
|
@ -184,6 +184,8 @@ public:
|
|||
eCore_uknownMach32,
|
||||
eCore_uknownMach64,
|
||||
|
||||
eCore_arc, // little endian ARC
|
||||
|
||||
kNumCores,
|
||||
|
||||
kCore_invalid,
|
||||
|
|
|
@ -339,7 +339,7 @@ void GDBRemoteCommunicationClient::GetRemoteQSupported() {
|
|||
// not, we assume no limit
|
||||
|
||||
// build the qSupported packet
|
||||
std::vector<std::string> features = {"xmlRegisters=i386,arm,mips"};
|
||||
std::vector<std::string> features = {"xmlRegisters=i386,arm,mips,arc"};
|
||||
StreamString packet;
|
||||
packet.PutCString("qSupported");
|
||||
for (uint32_t i = 0; i < features.size(); ++i) {
|
||||
|
|
|
@ -1823,6 +1823,12 @@ size_t Platform::GetSoftwareBreakpointTrapOpcode(Target &target,
|
|||
trap_opcode_size = sizeof(g_aarch64_opcode);
|
||||
} break;
|
||||
|
||||
case llvm::Triple::arc: {
|
||||
static const uint8_t g_hex_opcode[] = { 0xff, 0x7f };
|
||||
trap_opcode = g_hex_opcode;
|
||||
trap_opcode_size = sizeof(g_hex_opcode);
|
||||
} break;
|
||||
|
||||
// TODO: support big-endian arm and thumb trap codes.
|
||||
case llvm::Triple::arm: {
|
||||
// The ARM reference recommends the use of 0xe7fddefe and 0xdefe but the
|
||||
|
|
|
@ -2061,6 +2061,7 @@ Unwind *Thread::GetUnwinder() {
|
|||
case llvm::Triple::ppc64le:
|
||||
case llvm::Triple::systemz:
|
||||
case llvm::Triple::hexagon:
|
||||
case llvm::Triple::arc:
|
||||
m_unwinder_up.reset(new UnwindLLDB(*this));
|
||||
break;
|
||||
|
||||
|
|
|
@ -216,6 +216,7 @@ static const CoreDefinition g_core_definitions[] = {
|
|||
ArchSpec::eCore_uknownMach32, "unknown-mach-32"},
|
||||
{eByteOrderLittle, 8, 4, 4, llvm::Triple::UnknownArch,
|
||||
ArchSpec::eCore_uknownMach64, "unknown-mach-64"},
|
||||
{eByteOrderLittle, 4, 2, 4, llvm::Triple::arc, ArchSpec::eCore_arc, "arc"}
|
||||
};
|
||||
|
||||
// Ensure that we have an entry in the g_core_definitions for each core. If you
|
||||
|
@ -442,6 +443,8 @@ static const ArchDefinitionEntry g_elf_arch_entries[] = {
|
|||
ArchSpec::eMIPSSubType_mips64r6el, 0xFFFFFFFFu, 0xFFFFFFFFu}, // mips64r6el
|
||||
{ArchSpec::eCore_hexagon_generic, llvm::ELF::EM_HEXAGON,
|
||||
LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu}, // HEXAGON
|
||||
{ArchSpec::eCore_arc, llvm::ELF::EM_ARC_COMPACT2, LLDB_INVALID_CPUTYPE,
|
||||
0xFFFFFFFFu, 0xFFFFFFFFu }, // ARC
|
||||
};
|
||||
|
||||
static const ArchDefinition g_elf_arch_def = {
|
||||
|
|
Loading…
Reference in New Issue